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[`&D`] - Pushforward (differential of a mapping) 

Calling Sequence: 

    Expr &D MapId 

Parameters: 

    MapId - variable - the mapping identifier i.e. MapId : dom1 ---> dom2
    Expr - expression - a tensor expression 

Description: 

  • The &D procedure allows one to calculate the pushforward - mapping differential of a tensor field. The mapping differential is a linearly defined operation on [k,0] tensors at a point 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).
 

  • The differential of  F is the mapping F[`*`] of corresponding tangent spaces F[`*`] : proc (TM) options operator, arrow; TN end proc  at a point.
 

  • For any [1,0] tensor field T on M  F[`*`](T) is tensor field Omega = `&D`(T, F) on N with components `^`(Omega, j) = Sum(`*`(`^`(T, i), `*`(Diff(y[j], x[i]))), i = 1 .. n) in local coordinates.
 

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

  • The formulas considered above completely define the linear restriction operator &D.
 

Examples: 

The following example shows how the 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:proc (S) options operator, arrow; `*`(`^`(R, 3)) end proc: 

> 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 &/ operator:
Metric(G = g &/ F); 

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

One can calculate restriction of any [k,0] tensor field on `*`(`^`(S, 2)) under the mapping:  

For of frame vectors:
'U[1] &D F'=U[1] &D F;
'U[2] &D F'=U[2] &D F;
 

 

`&D`(U[1], F) = `+`(`*`(cos(theta), `*`(cos(phi), `*`(E[1]))), `*`(cos(theta), `*`(sin(phi), `*`(E[2]))), `-`(`*`(sin(theta), `*`(E[3]))))
`&D`(U[2], F) = `*`(sin(theta), `*`(`+`(`-`(`*`(sin(phi), `*`(E[1]))), `*`(cos(phi), `*`(E[2])))))(2.15)
 

Restriction of tensor product d(x)&.d(z):
'(U[1]&.U[2]) &D F'=(U[1]&.U[2]) &D F;  

`&D`(`&.`(U[1], U[2]), F) = `+`(`-`(`*`(cos(theta), `*`(cos(phi), `*`(sin(theta), `*`(sin(phi), `*`(`&.`(E[1], E[1]))))))), `-`(`*`(cos(theta), `*`(`+`(sin(phi), `-`(1)), `*`(`+`(sin(phi), 1), `*`(sin...
`&D`(`&.`(U[1], U[2]), F) = `+`(`-`(`*`(cos(theta), `*`(cos(phi), `*`(sin(theta), `*`(sin(phi), `*`(`&.`(E[1], E[1]))))))), `-`(`*`(cos(theta), `*`(`+`(sin(phi), `-`(1)), `*`(`+`(sin(phi), 1), `*`(sin...
`&D`(`&.`(U[1], U[2]), F) = `+`(`-`(`*`(cos(theta), `*`(cos(phi), `*`(sin(theta), `*`(sin(phi), `*`(`&.`(E[1], E[1]))))))), `-`(`*`(cos(theta), `*`(`+`(sin(phi), `-`(1)), `*`(`+`(sin(phi), 1), `*`(sin...
`&D`(`&.`(U[1], U[2]), F) = `+`(`-`(`*`(cos(theta), `*`(cos(phi), `*`(sin(theta), `*`(sin(phi), `*`(`&.`(E[1], E[1]))))))), `-`(`*`(cos(theta), `*`(`+`(sin(phi), `-`(1)), `*`(`+`(sin(phi), 1), `*`(sin...
`&D`(`&.`(U[1], U[2]), F) = `+`(`-`(`*`(cos(theta), `*`(cos(phi), `*`(sin(theta), `*`(sin(phi), `*`(`&.`(E[1], E[1]))))))), `-`(`*`(cos(theta), `*`(`+`(sin(phi), `-`(1)), `*`(`+`(sin(phi), 1), `*`(sin...
(2.16)
 

For metric tensor:
dual(G);
(% &D F);
 

 

`+`(`&.`(U[1], U[1]), `/`(`*`(`&.`(U[2], U[2])), `*`(`^`(sin(theta), 2))))
`+`(`*`(`+`(1, `-`(`*`(`^`(sin(theta), 2))), `*`(`^`(sin(theta), 2), `*`(`^`(sin(phi), 2)))), `*`(`&.`(E[1], E[1]))), `-`(`*`(`^`(sin(theta), 2), `*`(sin(phi), `*`(cos(phi), `*`(`&.`(E[1], E[2])))))),...
`+`(`*`(`+`(1, `-`(`*`(`^`(sin(theta), 2))), `*`(`^`(sin(theta), 2), `*`(`^`(sin(phi), 2)))), `*`(`&.`(E[1], E[1]))), `-`(`*`(`^`(sin(theta), 2), `*`(sin(phi), `*`(cos(phi), `*`(`&.`(E[1], E[2])))))),...
`+`(`*`(`+`(1, `-`(`*`(`^`(sin(theta), 2))), `*`(`^`(sin(theta), 2), `*`(`^`(sin(phi), 2)))), `*`(`&.`(E[1], E[1]))), `-`(`*`(`^`(sin(theta), 2), `*`(sin(phi), `*`(cos(phi), `*`(`&.`(E[1], E[2])))))),...
`+`(`*`(`+`(1, `-`(`*`(`^`(sin(theta), 2))), `*`(`^`(sin(theta), 2), `*`(`^`(sin(phi), 2)))), `*`(`&.`(E[1], E[1]))), `-`(`*`(`^`(sin(theta), 2), `*`(sin(phi), `*`(cos(phi), `*`(`&.`(E[1], E[2])))))),...
`+`(`*`(`+`(1, `-`(`*`(`^`(sin(theta), 2))), `*`(`^`(sin(theta), 2), `*`(`^`(sin(phi), 2)))), `*`(`&.`(E[1], E[1]))), `-`(`*`(`^`(sin(theta), 2), `*`(sin(phi), `*`(cos(phi), `*`(`&.`(E[1], E[2])))))),...
`+`(`*`(`+`(1, `-`(`*`(`^`(sin(theta), 2))), `*`(`^`(sin(theta), 2), `*`(`^`(sin(phi), 2)))), `*`(`&.`(E[1], E[1]))), `-`(`*`(`^`(sin(theta), 2), `*`(sin(phi), `*`(cos(phi), `*`(`&.`(E[1], E[2])))))),...
`+`(`*`(`+`(1, `-`(`*`(`^`(sin(theta), 2))), `*`(`^`(sin(theta), 2), `*`(`^`(sin(phi), 2)))), `*`(`&.`(E[1], E[1]))), `-`(`*`(`^`(sin(theta), 2), `*`(sin(phi), `*`(cos(phi), `*`(`&.`(E[1], E[2])))))),...
`+`(`*`(`+`(1, `-`(`*`(`^`(sin(theta), 2))), `*`(`^`(sin(theta), 2), `*`(`^`(sin(phi), 2)))), `*`(`&.`(E[1], E[1]))), `-`(`*`(`^`(sin(theta), 2), `*`(sin(phi), `*`(cos(phi), `*`(`&.`(E[1], E[2])))))),...
(2.17)
 

>
 

Some more examples 

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

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

 

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

For abstract mapping Phi:
'(U[1] &. U[2]) &D Phi'=(U[1] &. U[2]) &D Phi;
 

`&D`(`&.`(U[1], U[2]), Phi) = `+`(`*`(Diff(x, theta), `*`(Diff(x, phi), `*`(`&.`(E[1], E[1])))), `*`(Diff(x, theta), `*`(Diff(y, phi), `*`(`&.`(E[1], E[2])))), `*`(Diff(x, theta), `*`(Diff(z, phi), `*...
`&D`(`&.`(U[1], U[2]), Phi) = `+`(`*`(Diff(x, theta), `*`(Diff(x, phi), `*`(`&.`(E[1], E[1])))), `*`(Diff(x, theta), `*`(Diff(y, phi), `*`(`&.`(E[1], E[2])))), `*`(Diff(x, theta), `*`(Diff(z, phi), `*...
`&D`(`&.`(U[1], U[2]), Phi) = `+`(`*`(Diff(x, theta), `*`(Diff(x, phi), `*`(`&.`(E[1], E[1])))), `*`(Diff(x, theta), `*`(Diff(y, phi), `*`(`&.`(E[1], E[2])))), `*`(Diff(x, theta), `*`(Diff(z, phi), `*...
`&D`(`&.`(U[1], U[2]), Phi) = `+`(`*`(Diff(x, theta), `*`(Diff(x, phi), `*`(`&.`(E[1], E[1])))), `*`(Diff(x, theta), `*`(Diff(y, phi), `*`(`&.`(E[1], E[2])))), `*`(Diff(x, theta), `*`(Diff(z, phi), `*...
`&D`(`&.`(U[1], U[2]), Phi) = `+`(`*`(Diff(x, theta), `*`(Diff(x, phi), `*`(`&.`(E[1], E[1])))), `*`(Diff(x, theta), `*`(Diff(y, phi), `*`(`&.`(E[1], E[2])))), `*`(Diff(x, theta), `*`(Diff(z, phi), `*...
(2.19)
 

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.20)
 

>
 

See Also:  

atlas, atlas[Mapping], atlas[Domain], atlas[`&/`].