| atlas[Projectors] - calculation of a mapping projectors (tangent and normal or horizontal and vertical) Calling Sequence: Projectors(F) Parameters: F - mapping identifier Description: The Projectors procedure calculates projectors of a mapping between manifolds (see atlas[Mapping] ). If mapping F is an embedding or immersion then normal and tangent projectors are calculated. If mapping F is a submersion then horizontal and vertical projectors are calculated. The corresponding rules are as follows: - Let mapping F:
be declared by functions (see atlas[Mapping] ): where ; are local coordinates on M and are local coordinates on N. - If
then the mapping is treated as an embedding or immersion thus normal and tangent projectors are calculated. - If
then the mapping is treated as a submersion thus horizontal and vertical projectors are calculated. - The procedure returns a table with corresponding indexes ( normal, tangential, horizontal, vertical ) and entries. The entries are corresponding tensors of type [1,1] (see examples below).
- It should be pointed out that the calculation is only available if actual metric are declared in both manifolds. To get more information see examples : Ricci-flat warped product
Examples: restart: with(atlas): Just for right simplification: `atlas/simp`:=proc(a) subs({cos(phi)^2=1-sin(phi)^2},a); normal(%); end: Domain This domain is just 3-dimensional Euclidean space: Domain(R^3); 
Declare 1-forms for to use them as a coframe: Forms(e[j]=1); ![{e[j]}](prod/atlas/help/images/Projectors10.gif)
Declare vector fields to use them as a frame: Vectors(E[i]); ![{E[i]}](prod/atlas/help/images/Projectors11.gif)
Declare coframe 1-forms: 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)]](prod/atlas/help/images/Projectors12.gif)
Declare frame vectors: Frame(E[j]); ![[E[1] = Diff(``,x), E[2] = Diff(``,y), E[3] = Diff(``,z)]](prod/atlas/help/images/Projectors13.gif)
Declare 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])](prod/atlas/help/images/Projectors14.gif)
Domain This domain is 1-sphere (a circle). Domain(S); 
Declare 1-forms for coframe: Forms(u[k]=1); ![{e[j], u[k]}](prod/atlas/help/images/Projectors17.gif)
Declare vector fields for frame: Vectors(U[j]); ![{U[j]}](prod/atlas/help/images/Projectors18.gif)
Coframe declaration for the sphere: Coframe(u[1]=d(phi)); ![[u[1] = d(phi)]](prod/atlas/help/images/Projectors19.gif)
Frame declaration for the sphere: Frame(U[k]); ![[U[1] = Diff(``,phi)]](prod/atlas/help/images/Projectors20.gif)
Mappings Mapping of the sphere into the Euclidean space : Mapping(psi,S,R^3, x=cos(phi), y=sin(phi), z=0); 

Mapping of the Euclidean space / Z (Z axis is excluded) into the sphere: Mapping(pi,R^3,S, phi=arctan(y/x)); 

Metric on the sphere After that we can calculate metric induced on the sphere by embedding: Metric(G = g &/ psi); ![G = `&.`(u[1],u[1])](prod/atlas/help/images/Projectors28.gif)
projectors Calculation of the projection: P[psi]:=Projectors(psi); ![P[psi] := TABLE([tangent = -sin(phi)*cos(phi)*`&.`(e[1],E[2])+sin(phi)^2*`&.`(e[1],E[1])+(1-sin(phi)^2)*`&.`(e[2],E[2])-cos(phi)*sin(phi)*`&.`(e[2],E[1]), normal = sin(phi)*cos(phi)*`&.`(e[1],E[2])+(1-...](prod/atlas/help/images/Projectors34.gif)
Normal projector extraction N[psi]:=P[psi][normal]; ![N[psi] := sin(phi)*cos(phi)*`&.`(e[1],E[2])+(1-sin(phi)^2)*`&.`(e[1],E[1])+sin(phi)^2*`&.`(e[2],E[2])+cos(phi)*sin(phi)*`&.`(e[2],E[1])+`&.`(e[3],E[3])](prod/atlas/help/images/Projectors36.gif)
Tangent projection extraction: T[psi]:=P[psi][tangent]; ![T[psi] := -sin(phi)*cos(phi)*`&.`(e[1],E[2])+sin(phi)^2*`&.`(e[1],E[1])+(1-sin(phi)^2)*`&.`(e[2],E[2])-cos(phi)*sin(phi)*`&.`(e[2],E[1])](prod/atlas/help/images/Projectors38.gif)
Jump into the previous domain: Domain(R^3); 
Verify that there are no tangent or normal vectors among frame ones: 'iota[E[i]](T[psi])'=iota[E[i]](T[psi]); ![iota[E[i]](T[psi]) = -sin(phi)*cos(phi)*delta[1,i]*E[2]+sin(phi)^2*delta[1,i]*E[1]+(1-sin(phi)^2)*delta[2,i]*E[2]-sin(phi)*cos(phi)*delta[2,i]*E[1]](prod/atlas/help/images/Projectors41.gif) 'iota[E[i]](N[psi])'=iota[E[i]](N[psi]);
![iota[E[i]](N[psi]) = sin(phi)*cos(phi)*delta[1,i]*E[2]+(1-sin(phi)^2)*delta[1,i]*E[1]+sin(phi)^2*delta[2,i]*E[2]+sin(phi)*cos(phi)*delta[2,i]*E[1]+delta[3,i]*E[3]](prod/atlas/help/images/Projectors43.gif)
Verify that "rotation" vector is tangent one: Z:=cos(phi)*E[2]-sin(phi)*E[1]; 'iota[Z](T[psi])'=simplify(iota[Z](T[psi])); 'iota[Z](N[psi])'=simplify(iota[Z](N[psi])); ![Z := -sin(phi)*E[1]+cos(phi)*E[2]](prod/atlas/help/images/Projectors45.gif)
 = -sin(phi)*E[1]+cos(phi)*E[2]](prod/atlas/help/images/Projectors46.gif)
 = 0](prod/atlas/help/images/Projectors47.gif)
projectors Calculation of the projectors: P[pi]:=Projectors(pi); ![P[pi] := TABLE([horizontal = -1/(x^2+y^2)*y*x*`&.`(e[1],E[2])+1/(x^2+y^2)*y^2*`&.`(e[1],E[1])+x^2/(x^2+y^2)*`&.`(e[2],E[2])-1/(x^2+y^2)*y*x*`&.`(e[2],E[1]), vertical = 1/(x^2+y^2)*y*x*`&.`(e[1],E[2])+x...](prod/atlas/help/images/Projectors51.gif)
Vertical projector extraction: V[pi]:=P[pi][vertical]; ![V[pi] := 1/(x^2+y^2)*y*x*`&.`(e[1],E[2])+x^2/(x^2+y^2)*`&.`(e[1],E[1])+y^2/(x^2+y^2)*`&.`(e[2],E[2])+`&.`(e[3],E[3])+1/(x^2+y^2)*y*x*`&.`(e[2],E[1])](prod/atlas/help/images/Projectors52.gif)
Horizontal projector extraction: H[pi]:=P[pi][horizontal]; ![H[pi] := -1/(x^2+y^2)*y*x*`&.`(e[1],E[2])+1/(x^2+y^2)*y^2*`&.`(e[1],E[1])+x^2/(x^2+y^2)*`&.`(e[2],E[2])-1/(x^2+y^2)*y*x*`&.`(e[2],E[1])](prod/atlas/help/images/Projectors53.gif)
Jump into : Domain(R^3); 
Verify that there are no tangent or normal vectors among frame ones: 'iota[E[i]](V[pi])'=iota[E[i]](V[pi]); ![iota[E[i]](V[pi]) = 1/(x^2+y^2)*y*x*delta[1,i]*E[2]+x^2/(x^2+y^2)*delta[1,i]*E[1]+y^2/(x^2+y^2)*delta[2,i]*E[2]+delta[3,i]*E[3]+1/(x^2+y^2)*y*x*delta[2,i]*E[1]](prod/atlas/help/images/Projectors56.gif)
'iota[E[i]](H[pi])'=iota[E[i]](H[pi]); ![iota[E[i]](H[pi]) = -1/(x^2+y^2)*y*x*delta[1,i]*E[2]+y^2/(x^2+y^2)*delta[1,i]*E[1]+x^2/(x^2+y^2)*delta[2,i]*E[2]-1/(x^2+y^2)*y*x*delta[2,i]*E[1]](prod/atlas/help/images/Projectors57.gif)
Verify that "rotation" vector is horizontal one: X:=x*E[2]-y*E[1]; 'iota[X](V[pi])'=simplify(iota[X](V[pi])); 'iota[X](H[pi])'=simplify(iota[X](H[pi])); ![X := E[2]*x-y*E[1]](prod/atlas/help/images/Projectors59.gif)
 = 0](prod/atlas/help/images/Projectors60.gif)
 = E[2]*x-y*E[1]](prod/atlas/help/images/Projectors61.gif)
See Also: atlas , atlas[Domain] , atlas[`&/`] , atlas[Invariants] . |