| atlas[Tensors] - declaration of tensors Calling Sequence: Tensors(T1=[n1,p1], T2=[n2,p2], ..., Ti=[ni,pi]) Parameters: Ti=[ni,pi] - equations where Ti - tensor identifier and [ni,pi] is a list of variables or integers - the kind of the tensor. Description: - In the atlas package any identifier is treated as 0-form i.e. as non-constant scalar (if it not declared as constant, p-form, tensor etc. (see atlas[types] )).
- The Tensors procedure declares tensors of any kind but it normally used to declare tensors which are not vectors or forms. For vectors and forms it is more convenient to use atlas[Vectors] and atlas[Forms] procedures.
- The atlas package deals with tensors themselves not their components. Thus indexed quantities such as
or are treated as sets of tensors or . To get components of a tensor use atlas[iota] procedures.
Examples: restart: with(atlas): Declare tensors T, Omega vectors X, Z[k] and 1-forms e[j]: Tensors(T=[n,k],X=[1,0],e[j]=[0,1],Z[l]=[1,0],Omega=[1,3]); ![{T, Omega, e[j], Z[l], X}](prod/atlas/help/images/Tensors5.gif)
Verify that e[i] is 1-form using kind (see atlas[kind] ) and type procedures: kind(e[i]); ![[0, 1]](prod/atlas/help/images/Tensors6.gif)
type(e[i],form); 
Verify that X is a vector using kind and type procedures: kind(X); ![[1, 0]](prod/atlas/help/images/Tensors8.gif)
type(X,vect); 
Calculation of interior product (see atlas[iota] ): iota[X](e[j]); ](prod/atlas/help/images/Tensors10.gif)
What kind is the result? kind(iota[X](e[j])); ![[0, 0]](prod/atlas/help/images/Tensors11.gif)
Construct [1,1] tensor using tensor product operator (see atlas[`&.`] ): Z[i]&.e[k]; kind(%); ![`&.`(Z[i],e[k])](prod/atlas/help/images/Tensors12.gif)
![[1, 1]](prod/atlas/help/images/Tensors13.gif)
And another one add(alpha[i]*Z[i]&.e[i],i=1..3); kind(%); ![alpha[1]*`&.`(Z[1],e[1])+alpha[2]*`&.`(Z[2],e[2])+alpha[3]*`&.`(Z[3],e[3])](prod/atlas/help/images/Tensors14.gif)
![[1, 1]](prod/atlas/help/images/Tensors15.gif)
And for tensor T: iota[X](T); ](prod/atlas/help/images/Tensors16.gif)
What kind? kind(iota[X](T)); ![[n, -1+k]](prod/atlas/help/images/Tensors17.gif)
Calculate Lie derivative of e[j] along vector field X (see atlas[L] ): 'L[X]'(e[j])=L[X](e[j]);  = iota[X](d(e[j]))+d(iota[X](e[j]))](prod/atlas/help/images/Tensors18.gif)
Construct new tensor from Omega and T (see atlas[`&.`] ): Omega &. T; 
What kind? kind(Omega &. T); ![[n+1, k+3]](prod/atlas/help/images/Tensors20.gif)
Let's see "who is who" Who([T,X,Omega,e[k],Omega &. T]);
T: [n, k] - tensor
X: vector
Omega: [1, 3] - tensor
e[k]: 1 - form
`&.`(Omega,T): [n+1, k+3] - tensor
Who(); ![PIECEWISE([{}, Domains],[{}, Mappings],[{T, Omega, e[j], Z[l], X}, Tensors],[{e[j]}, Forms],[{_Z, I, -I, Catalan, Pi}, Constants],[{}, Functions])](prod/atlas/help/images/Tensors21.gif)
See Also: atlas , atlas[Constants] , atlas[Functions] , atlas[Vectors] , atlas[Forms] , atlas[iota] , atlas[`&.`] , atlas[Who] . |