atlas 2 for Maple

atlas package Overview

Declaration operators

Calculation operators

Standard DG operators

Utility operators

Features List & Examples

atlasWizard - Maplet™

Template Worksheets

Licenses & Pricing

atlas[ToBasis] - To basis decomposition 

Calling Sequence: 

    ToBasis(T) 

Parameters: 

    T - variable or expression of tensor type 

Description: 

The ToBasis procedure allows one to decompose a tensor into its basis. If the coframe and frame have not been previously defined, then no decomposition is available.  

Examples: 

> restart:
with(atlas):
 

Declare forms: 

> Forms(e[j]=1,xi=1,phi=1);
 

{phi, xi, e[j]}(2.1)
 

Declare vectors: 

> Vectors(X,Y,Z,E[j]);
 

{X, Y, Z, E[j]}(2.2)
 

One can not make the decomposition before coframe declaration:
ToBasis(X); 

X(2.3)
 

Declare coframe:
Coframe(e[j],j=1..n); 

{e[j]}[j = 1 .. n](2.4)
 

Declare frame:
Frame(E[k]); 

{E[k]}[k = 1 .. n](2.5)
 

"To basis" decomposition 

> X=ToBasis(X);
 

X = Sum(`*`(iota[X](e[l[1]]), `*`(E[l[1]])), l[1] = 1 .. n)(2.6)
 

> xi=ToBasis(xi);
 

xi = Sum(`*`(iota[E[l[1]]](xi), `*`(e[l[1]])), l[1] = 1 .. n)(2.7)
 

> X&.xi=ToBasis(X&.xi);
 

`&.`(X, xi) = Sum(`*`(iota[E[l[2]]](xi), `*`(Sum(`*`(iota[X](e[l[1]]), `*`(`&.`(E[l[1]], e[l[2]]))), l[1] = 1 .. n))), l[2] = 1 .. n)(2.8)
 

Functions declaration xi[i] = xi[i](x[k]): 

> Functions(xi[i]=xi[i](x[k]));
 

{xi[i]}(2.9)
 

New cofame declaration: 

> Coframe(e[j]=xi[j]*d(x[j]),j=1..3);
 

Warning, You have to restart the Coframe procedure and then Frame procedure!
 

> Coframe(e[j]=xi[j]*d(x[j]),j=1..3);
 

[e[1] = `*`(xi[1], `*`(d(x[1]))), e[2] = `*`(xi[2], `*`(d(x[2]))), e[3] = `*`(xi[3], `*`(d(x[3])))](2.10)
 

> 'd(xi[i])'=d(xi[i]);
 

d(xi[i]) = `*`(Diff(xi[i], x[k]), `*`(`+`(`/`(`*`(delta[1, k], `*`(e[1])), `*`(xi[1])), `/`(`*`(delta[2, k], `*`(e[2])), `*`(xi[2])), `/`(`*`(delta[3, k], `*`(e[3])), `*`(xi[3])))))(2.11)
 

> 'd(x[k])'=d(x[k]);
 

d(x[k]) = `+`(`/`(`*`(delta[1, k], `*`(e[1])), `*`(xi[1])), `/`(`*`(delta[2, k], `*`(e[2])), `*`(xi[2])), `/`(`*`(delta[3, k], `*`(e[3])), `*`(xi[3])))(2.12)
 

> 'd(e[3])'=d(e[3]);
 

d(e[3]) = `+`(`-`(`/`(`*`(Diff(xi[3], x[k]), `*`(`&^`(e[3], d(x[k])))), `*`(xi[3]))))(2.13)
 

Declare frame:
Frame(E[k]); 

[E[1] = `/`(`*`(Diff(``, x[1])), `*`(xi[1])), E[2] = `/`(`*`(Diff(``, x[2])), `*`(xi[2])), E[3] = `/`(`*`(Diff(``, x[3])), `*`(xi[3]))](2.14)
 

"To basis" decomposition 

> X=ToBasis(X);
 

X = `+`(`*`(iota[X](e[1]), `*`(E[1])), `*`(iota[X](e[2]), `*`(E[2])), `*`(iota[X](e[3]), `*`(E[3])))(2.15)
 

Note that  xi[i] = xi[i](x[k]) are functions but xi is 1-form: 

> xi=ToBasis(xi);
 

xi = `+`(`*`(iota[E[1]](xi), `*`(e[1])), `*`(iota[E[2]](xi), `*`(e[2])), `*`(iota[E[3]](xi), `*`(e[3])))(2.16)
 

> X&.xi=ToBasis(X&.xi);
 

`&.`(X, xi) = `+`(`*`(iota[X](e[1]), `*`(iota[E[1]](xi), `*`(`&.`(E[1], e[1])))), `*`(iota[X](e[1]), `*`(iota[E[2]](xi), `*`(`&.`(E[1], e[2])))), `*`(iota[X](e[1]), `*`(iota[E[3]](xi), `*`(`&.`(E[1], ...
`&.`(X, xi) = `+`(`*`(iota[X](e[1]), `*`(iota[E[1]](xi), `*`(`&.`(E[1], e[1])))), `*`(iota[X](e[1]), `*`(iota[E[2]](xi), `*`(`&.`(E[1], e[2])))), `*`(iota[X](e[1]), `*`(iota[E[3]](xi), `*`(`&.`(E[1], ...
`&.`(X, xi) = `+`(`*`(iota[X](e[1]), `*`(iota[E[1]](xi), `*`(`&.`(E[1], e[1])))), `*`(iota[X](e[1]), `*`(iota[E[2]](xi), `*`(`&.`(E[1], e[2])))), `*`(iota[X](e[1]), `*`(iota[E[3]](xi), `*`(`&.`(E[1], ...
`&.`(X, xi) = `+`(`*`(iota[X](e[1]), `*`(iota[E[1]](xi), `*`(`&.`(E[1], e[1])))), `*`(iota[X](e[1]), `*`(iota[E[2]](xi), `*`(`&.`(E[1], e[2])))), `*`(iota[X](e[1]), `*`(iota[E[3]](xi), `*`(`&.`(E[1], ...
`&.`(X, xi) = `+`(`*`(iota[X](e[1]), `*`(iota[E[1]](xi), `*`(`&.`(E[1], e[1])))), `*`(iota[X](e[1]), `*`(iota[E[2]](xi), `*`(`&.`(E[1], e[2])))), `*`(iota[X](e[1]), `*`(iota[E[3]](xi), `*`(`&.`(E[1], ...
(2.17)
 

> xi&.xi=ToBasis(xi&.xi);
 

`&.`(xi, xi) = `+`(`*`(`^`(iota[E[1]](xi), 2), `*`(`&.`(e[1], e[1]))), `*`(iota[E[1]](xi), `*`(iota[E[2]](xi), `*`(`&.`(e[1], e[2])))), `*`(iota[E[1]](xi), `*`(iota[E[3]](xi), `*`(`&.`(e[1], e[3])))),...
`&.`(xi, xi) = `+`(`*`(`^`(iota[E[1]](xi), 2), `*`(`&.`(e[1], e[1]))), `*`(iota[E[1]](xi), `*`(iota[E[2]](xi), `*`(`&.`(e[1], e[2])))), `*`(iota[E[1]](xi), `*`(iota[E[3]](xi), `*`(`&.`(e[1], e[3])))),...
`&.`(xi, xi) = `+`(`*`(`^`(iota[E[1]](xi), 2), `*`(`&.`(e[1], e[1]))), `*`(iota[E[1]](xi), `*`(iota[E[2]](xi), `*`(`&.`(e[1], e[2])))), `*`(iota[E[1]](xi), `*`(iota[E[3]](xi), `*`(`&.`(e[1], e[3])))),...
`&.`(xi, xi) = `+`(`*`(`^`(iota[E[1]](xi), 2), `*`(`&.`(e[1], e[1]))), `*`(iota[E[1]](xi), `*`(iota[E[2]](xi), `*`(`&.`(e[1], e[2])))), `*`(iota[E[1]](xi), `*`(iota[E[3]](xi), `*`(`&.`(e[1], e[3])))),...
`&.`(xi, xi) = `+`(`*`(`^`(iota[E[1]](xi), 2), `*`(`&.`(e[1], e[1]))), `*`(iota[E[1]](xi), `*`(iota[E[2]](xi), `*`(`&.`(e[1], e[2])))), `*`(iota[E[1]](xi), `*`(iota[E[3]](xi), `*`(`&.`(e[1], e[3])))),...
(2.18)
 

> &@(x)=ToBasis(&@(x));
 

Diff(``, x) = `+`(`*`(iota[Diff(``, x)](e[1]), `*`(E[1])), `*`(iota[Diff(``, x)](e[2]), `*`(E[2])), `*`(iota[Diff(``, x)](e[3]), `*`(E[3])))(2.19)
 

> &@(x[1])=ToBasis(&@(x[1]));
 

Diff(``, x[1]) = `*`(E[1], `*`(xi[1]))(2.20)
 

>
 

See Also:  

atlas, atlas[Coframe], atlas[Frame].