PushPullTensor - Maple Help
For the best experience, we recommend viewing online help using Google Chrome or Microsoft Edge.

Online Help

All Products    Maple    MapleSim

Tensor[PushPullTensor] - transform a tensor from one manifold or coordinate system to another

Calling Sequences

     PushPullTensor(Phi, Psi, T)

     PushPullTensor(Phi, S)


   Phi      - a transformation from a manifold M to another manifold N

   Psi      - the inverse of the transformation Phi, a transformation from the manifold N to the manifold M

   T        - a vector, differential form, tensor, or a connection defined on the manifold M

   S        - a differential form or a covariant tensor field defined on the manifold N






PushPullTensor(Phi, Psi, M) will apply the transformation Phi to the vector, form or tensor T on  M and return an object of the same type on N.


Applied to tensors on M, PushPullTensor acts as a ring homomorphism, that is, if T1 and T2 are tensors on M, then PushPullTensor(Phi, Psi, T1 &tensor T2) = PushPullTensor(Phi, Psi, T1) &tensor PushPullTensor(Phi, Psi, T2).  Therefore to completely describe the action of PushPullTensor on a tensor T, it suffices to note that [i] if T is a vector field on M, then PushPullTensor(Phi , Psi, T) = Pushforward(Phi, Psi, T) and [ii], if T is a 1-form on M, then PushPullTensor(Phi, Psi, T) = Pullback(Psi, T).


Let A be a connection on M and let B = PushPullTensor(Phi, Psi, A).  Let X, Y be vector fields on M and let Z = DirectionalCovariantDerivative(X, Y, A).  Let U, V, W be the vector fields on N which are the pushforwards of X, Y and Z using Phi and Psi.  The defining property of the connection B is the identity W = DirectionalCovariantDerivative(U, V, B).


Let A be a connection on M and let B = PushPullTensor(Phi, Psi, A).  Let R be the curvature tensor for A and let S be the curvature tensor for B.  We remark that PushPullTensor(Phi, Psi, R) = S.


Let S be a differential form or a covariant tensor field defined on the manifold N.  Then the command PushPullTensor(Phi, S) will Pullback S to a differential form or tensor on M.  With this calling sequence, the transformation Phi from M to N need not be invertible.  For example, suppose M is a submanifold of N and Phi : M -> N is the inclusion mapping.  Then, if g is a Riemannian metric on N, PushPullTensor(Phi, g) computes the induced metric on M.  


The PushPullTensor command works with arbitrary frames and can therefore be used to re-express any tensor in the coordinate frame in terms of the user defined frame.


The PushPullTensor command may also be applied to tensor fields associated  with a vector bundle E -> M.


This command is part of the DifferentialGeometry:-Tensor package, and so can be used in the form PushPullTensor(...) only after executing the command with(DifferentialGeometry) and with(Tensor) in that order.  It can always be used in the long form DifferentialGeometry:-Tensor:-PushPullTensor.




Example 1.

First create two manifolds M, N and define a diffeomorphism phi : M -> N.


M > 



Define a transformation from M to N and calculate its inverse.

N > 



M > 





CASE 1.  Acting on vectors on M, PushPullTensor is the same as the DifferentialGeometry command PushForward.

N > 


N > 



CASE 2.  Acting on 1-forms on M, PushPullTensor is the same as the DifferentialGeometry command Pullback, using the inverse of Phi1, that is, the transformation Psi1.

N > 


N > 



CASE 3.  The action of PushPullTensor on tensors on M is determined by Case1 and Case2 and the fact that PushPullTensor is a homomorphism.

N > 

W1PushPullTensorΦ1,Ψ1,D_x &t dx


N > 

W2PushPullTensorΦ1,Ψ1,D_x &tensor PushPullTensorΦ1,Ψ1,dx


N > 

W1 &minus W2




CASE 4.  The command PushPullTensor will pushforward a connection on M to a connection on N. Define a connection A on M and push it forward to get a connection B on N.

N > 

AConnectionyD_y &t dy &t dx


M > 





We check the defining property of the pushforward connection B.  Pick two vectors X and Y on M and calculate the directional covariant derivative with respect to A.  Call it Z.

N > 





Push the vectors X, Y, Z over to N and get vector fields U, V, W.

M > 



N > 



N > 





Check that W is the directional covariant derivative of V in the direction of U with respect to the connection B.

N > 





We can also calculate the curvature tensor R of A, the curvature tensor S of B and check that the PushPullTensor applied to R gives S.

N > 



M > 



N > 

PushPullTensorΦ1,Ψ1,R &minus S




CASE 5.  If S is a covariant tensor on N, then the second calling sequence to PushPullTensor will generate a covariant tensor field on M.

N > 

SevalDGdu &t dw


N > 





Example 2.

In this example, we define a mapping from R^3 to R^4 whose image is the unit sphere S^3 in R^4.  The Pullback of the standard metric on R^4 by this map gives the metric on S^3 in conformal coordinates.

M > 


R3 > 


R4 > 





We check that the image of Phi2 is the unit sphere in R4.

R3 > 



R3 > 





We Pullback the standard Euclidean metric on R4 to R3.

R3 > 

gevalDGdx1 &t dx1+dx2 &t dx2+dx3 &t dx3+dx4 &t dx4


R4 > 





Example 3.

In this example we return to the manifold M defined in Example 1 and introduce on M a local frame E1, E2, E3 with dual 1-forms Theta1, Theta2, Theta3.

R3 > 



M > 


M > 



Define the identity transformation from M to M1 and its inverse.

M1 > 



M > 





Write a type (1, 1) tensor given in the coordinate frame in terms of the frame FR and its dual.

M1 > 

PushPullTensorΦ3,Ψ3,D_x &t dy




Write a type (3, 0) tensor given in the frame FR in the coordinate frame.

M1 > 

PushPullTensorΨ3,Φ3,E3 &t E2 &t E1



Example 4.

Create a pair of rank 2 vector bundles over a common 3 dimension base and define a bundle automorphism.

M > 


E > 


F > 



E > 



F > 





To pushover a one form on the fibers of E to F, first convert it to a tensor.

F > 



F > 



Transform a connection on E to one on F.

E > 

ConEConnectionD_u &t du &t dx


E > 



F >