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[`&/`] - Pullback of a [0, k] tensor field under a mapping 

Calling Sequence: 

    Expr &/ MapId 

Parameters: 

    MapId - variable - the mapping identifier i.e. MapId : dom1 ---> dom2
    Expr - expression - a tensor expression which has to be restricted 

Description: 

  • The &/ procedure allows one to calculate pullback of a covariant tensor field under a mapping. The pullback is linear operation defined on [0,k] tensors only. The definition is as follows.
 

  • Let M and N be manifolds of dimensions m = dim(M), n = dim(N). Let F be mapping between the manifolds: F: proc (M) options operator, arrow; N end proc defined by functions:



    where {x[1], x[2], () .. x[m]} are local coordinates on M and {y[1], y[2], () .. y[n]} are local coordinates on N (in some domains).
 

  • For any [0,1] tensor field T on N the pullback of  T  under F is tensor field Omega = `&/`(T, F) on M with components Omega[j] = Sum(`*`(T[i](y[k](x[1], x[2], () .. x[m])), `*`(Diff(y[i], x[j]))), i = 1 .. n) in local coordinates.
 

  • For tensor product of any [0, k] tensor fields T[1], T[2]  on N the following formula takes place: `&/`(`*`(T[1], `*`(`⊗`(T[2]))), F) = `*`(`&/`(T[1], F), `*`(`⊗`(`&/`(T[2], F))))
 

  • The formulas considered above completely define the linear pullback operator &/.
 

  • According to the definition it is necessary to calculate the pullbacks on the domain M. Use atlas[Domain] procedure to jump on M manifold if needed.
 

Examples: 

The following example shows how the pullback operator can be used.
Let M be 2-dimentional sphere `*`(`^`(S, 2)) and N be 3-dimensional Euclidean space `*`(`^`(R, 3)). Let F
:proc (M) options operator, arrow; N end proc  be standard embedding of sphere `*`(`^`(S, 2)) into `*`(`^`(R, 3)). 

> restart:
with(atlas):
 

This procedure is presented just for appropriate simplification (see atlas[simp]).
`atlas/simp`:=proc(a) normal(a);subs({cos(theta)^2=1-sin(theta)^2,cos(phi)^2=1-sin(phi)^2},%);normal(%); factor(%) end; 

proc (a) normal(a); subs({`*`(`^`(cos(phi), 2)) = `+`(1, `-`(`*`(`^`(sin(phi), 2)))), `*`(`^`(cos(theta), 2)) = `+`(1, `-`(`*`(`^`(sin(theta), 2))))}, %); normal(%); factor(%) end proc
proc (a) normal(a); subs({`*`(`^`(cos(phi), 2)) = `+`(1, `-`(`*`(`^`(sin(phi), 2)))), `*`(`^`(cos(theta), 2)) = `+`(1, `-`(`*`(`^`(sin(theta), 2))))}, %); normal(%); factor(%) end proc
proc (a) normal(a); subs({`*`(`^`(cos(phi), 2)) = `+`(1, `-`(`*`(`^`(sin(phi), 2)))), `*`(`^`(cos(theta), 2)) = `+`(1, `-`(`*`(`^`(sin(theta), 2))))}, %); normal(%); factor(%) end proc
proc (a) normal(a); subs({`*`(`^`(cos(phi), 2)) = `+`(1, `-`(`*`(`^`(sin(phi), 2)))), `*`(`^`(cos(theta), 2)) = `+`(1, `-`(`*`(`^`(sin(theta), 2))))}, %); normal(%); factor(%) end proc
proc (a) normal(a); subs({`*`(`^`(cos(phi), 2)) = `+`(1, `-`(`*`(`^`(sin(phi), 2)))), `*`(`^`(cos(theta), 2)) = `+`(1, `-`(`*`(`^`(sin(theta), 2))))}, %); normal(%); factor(%) end proc
proc (a) normal(a); subs({`*`(`^`(cos(phi), 2)) = `+`(1, `-`(`*`(`^`(sin(phi), 2)))), `*`(`^`(cos(theta), 2)) = `+`(1, `-`(`*`(`^`(sin(theta), 2))))}, %); normal(%); factor(%) end proc
(2.1)
 

Declare 1-forms e[j] and u[k] for corresponding coframes: 

> Forms(e[j]=1,u[k]=1);
 

{e[j], u[k]}(2.2)
 

Declare vectors for corresponding frames: 

> Vectors(E[j],U[k]);
 

{E[j], U[k]}(2.3)
 

Declare Euclidean space - `*`(`^`(R, 3)):  

> Domain(R^3);
 

`*`(`^`(R, 3))(2.4)
 

Declare coframe on `*`(`^`(R, 3)):  

> Coframe(e[1]=d(x),e[2]=d(y),e[3]=d(z));
 

[e[1] = d(x), e[2] = d(y), e[3] = d(z)](2.5)
 

Declare frame on `*`(`^`(R, 3)):
Frame(E[j]); 

[E[1] = Diff(``, x), E[2] = Diff(``, y), E[3] = Diff(``, z)](2.6)
 

Declare metric on `*`(`^`(R, 3)) (standard flat metric):
Metric(g=d(x)&.d(x)+d(y)&.d(y)+d(z)&.d(z)); 

g = `+`(`&.`(e[1], e[1]), `&.`(e[2], e[2]), `&.`(e[3], e[3]))(2.7)
 

Declare sphere - `*`(`^`(S, 2)): 

> Domain(S^2);
 

`*`(`^`(S, 2))(2.8)
 

Declare coframe on `*`(`^`(S, 2)):  

> Coframe(u[1]=d(theta),u[2]=d(phi));
 

[u[1] = d(theta), u[2] = d(phi)](2.9)
 

Declare frame on `*`(`^`(S, 2)):
Frame(U[j]); 

[U[1] = Diff(``, theta), U[2] = Diff(``, phi)](2.10)
 

Declare definite mapping F:: 

> Mapping(F,S^2,R^3,
       x=sin(theta)*cos(phi),
       y=sin(theta)*sin(phi),
       z=cos(theta));
 

 

F
`.`(`*`(`^`(S, 2)), `--->`, `*`(`^`(R, 3)))(2.11)
 

> Who(F);
 

 

F: mapping
table( [( equations ) = [x = `*`(sin(theta), `*`(cos(phi))), y = `*`(sin(theta), `*`(sin(phi))), z = cos(theta)], ( manifolds ) = [`*`(`^`(S, 2)), `*`(`^`(R, 3))], ( natural ) = {Diff(``, phi) = `+`(`...
table( [( equations ) = [x = `*`(sin(theta), `*`(cos(phi))), y = `*`(sin(theta), `*`(sin(phi))), z = cos(theta)], ( manifolds ) = [`*`(`^`(S, 2)), `*`(`^`(R, 3))], ( natural ) = {Diff(``, phi) = `+`(`...
table( [( equations ) = [x = `*`(sin(theta), `*`(cos(phi))), y = `*`(sin(theta), `*`(sin(phi))), z = cos(theta)], ( manifolds ) = [`*`(`^`(S, 2)), `*`(`^`(R, 3))], ( natural ) = {Diff(``, phi) = `+`(`...
table( [( equations ) = [x = `*`(sin(theta), `*`(cos(phi))), y = `*`(sin(theta), `*`(sin(phi))), z = cos(theta)], ( manifolds ) = [`*`(`^`(S, 2)), `*`(`^`(R, 3))], ( natural ) = {Diff(``, phi) = `+`(`...
table( [( equations ) = [x = `*`(sin(theta), `*`(cos(phi))), y = `*`(sin(theta), `*`(sin(phi))), z = cos(theta)], ( manifolds ) = [`*`(`^`(S, 2)), `*`(`^`(R, 3))], ( natural ) = {Diff(``, phi) = `+`(`...
table( [( equations ) = [x = `*`(sin(theta), `*`(cos(phi))), y = `*`(sin(theta), `*`(sin(phi))), z = cos(theta)], ( manifolds ) = [`*`(`^`(S, 2)), `*`(`^`(R, 3))], ( natural ) = {Diff(``, phi) = `+`(`...
table( [( equations ) = [x = `*`(sin(theta), `*`(cos(phi))), y = `*`(sin(theta), `*`(sin(phi))), z = cos(theta)], ( manifolds ) = [`*`(`^`(S, 2)), `*`(`^`(R, 3))], ( natural ) = {Diff(``, phi) = `+`(`...
table( [( equations ) = [x = `*`(sin(theta), `*`(cos(phi))), y = `*`(sin(theta), `*`(sin(phi))), z = cos(theta)], ( manifolds ) = [`*`(`^`(S, 2)), `*`(`^`(R, 3))], ( natural ) = {Diff(``, phi) = `+`(`...
(2.12)
 

Verify that we are on the sphere:
Domain(); 

`*`(`^`(S, 2))(2.13)
 

Calculate metric induced on the sphere using pullback operator &/:
Metric(G = g &/ F); 

G = `+`(`&.`(u[1], u[1]), `*`(`^`(sin(theta), 2), `*`(`&.`(u[2], u[2]))))(2.14)
 

One can calculate pullback of any [0,k] tensor field on `*`(`^`(R, 3)) under the mapping:  

pullback of coframe 1-forms:
'e[1]&/F'=e[1]&/F;
'e[2]&/F'=e[2]&/F;
 

 

`&/`(e[1], F) = `+`(`*`(cos(theta), `*`(u[1], `*`(cos(phi)))), `-`(`*`(sin(theta), `*`(sin(phi), `*`(u[2])))))
`&/`(e[2], F) = `+`(`*`(cos(theta), `*`(u[1], `*`(sin(phi)))), `*`(sin(theta), `*`(cos(phi), `*`(u[2]))))(2.15)
 

pullback of 0-forms (scalars):
'(x^2+y^2)&/F'=(x^2+y^2)&/F;
'(y/x)&/F'=(y/x)&/F;
 

 

`&/`(`+`(`*`(`^`(x, 2)), `*`(`^`(y, 2))), F) = `*`(`^`(sin(theta), 2))
`&/`(`/`(`*`(y), `*`(x)), F) = `/`(`*`(sin(phi)), `*`(cos(phi)))(2.16)
 

pullback of "rotation" 1-form:
'(x*d(y)-y*d(x))&/F'=(x*d(y)-y*d(x))&/F; 

`&/`(`+`(`*`(x, `*`(d(y))), `-`(`*`(y, `*`(d(x))))), F) = `*`(`^`(sin(theta), 2), `*`(u[2]))(2.17)
 

pullback of tensor product d(x)&.d(z):
'(d(x)&.d(z))&/F'=(d(x)&.d(z))&/F;  

`&/`(`&.`(d(x), d(z)), F) = `+`(`-`(`*`(sin(theta), `*`(cos(theta), `*`(cos(phi), `*`(`&.`(u[1], u[1])))))), `*`(`^`(sin(theta), 2), `*`(sin(phi), `*`(`&.`(u[2], u[1])))))
`&/`(`&.`(d(x), d(z)), F) = `+`(`-`(`*`(sin(theta), `*`(cos(theta), `*`(cos(phi), `*`(`&.`(u[1], u[1])))))), `*`(`^`(sin(theta), 2), `*`(sin(phi), `*`(`&.`(u[2], u[1])))))
(2.18)
 

pullback of exterior product d(x)&^d(y):
'(d(x)&^d(y))&/F'=(d(x)&^d(y))&/F;
 

`&/`(`&^`(d(x), d(y)), F) = `*`(cos(theta), `*`(sin(theta), `*`(`&^`(u[1], u[2]))))(2.19)
 

Some more examples 

Declare abstract mapping between `*`(`^`(S, 2)) and `*`(`^`(R, 3)): 

> Mapping(Phi,S^2,R^3);
 

 

Phi
`.`(`*`(`^`(S, 2)), `--->`, `*`(`^`(R, 3)))(2.20)
 

pullback of exterior product d(x)&^d(y) under abstract mapping Phi:
'(d(x)&^d(y))&/Phi'=(d(x)&^d(y))&/Phi;
 

`&/`(`&^`(d(x), d(y)), Phi) = `*`(`+`(`-`(`*`(Diff(x, phi), `*`(Diff(y, theta)))), `*`(Diff(x, theta), `*`(Diff(y, phi)))), `*`(`&^`(u[1], u[2])))
`&/`(`&^`(d(x), d(y)), Phi) = `*`(`+`(`-`(`*`(Diff(x, phi), `*`(Diff(y, theta)))), `*`(Diff(x, theta), `*`(Diff(y, phi)))), `*`(`&^`(u[1], u[2])))
(2.21)
 

pullback of coframe 1-forms
'e[1]&/Phi'=e[1]&/Phi;
'e[2]&/Phi'=e[2]&/Phi;
 

 

`&/`(e[1], Phi) = `+`(`*`(Diff(x, phi), `*`(u[2])), `*`(Diff(x, theta), `*`(u[1])))
`&/`(e[2], Phi) = `+`(`*`(Diff(y, phi), `*`(u[2])), `*`(Diff(y, theta), `*`(u[1])))(2.22)
 

Who is who?
Who(); 

piecewise(Domains, {`*`(`^`(R, 3)), `*`(`^`(S, 2))}, Mappings, {F, Phi}, Tensors, {G, g, E[j], U[k], e[j], u[k]}, Forms, {e[j], u[k]}, Constants, {`+`(`-`(I)), I, Pi, _Z, Catalan}, Functions, {})(2.23)
 

>
 

See Also:  

atlas, atlas[Mapping], atlas[Domain], atlas[Metric].