Abstract calculations Copyright © 2004-2008 DigiArea Group . All rights reserved. Introduction: This worksheet illustrates how to do "abstract" calculations using atlas package. To do this we use simple manifolds (such as Euclidean space, curves and 2-dimensional surfaces) just to illustrate the corresponding abilities. First of all some possible calculations with symbolic dimension will be considered. After that we calculate metric and second fundamental form on abstract "rotational" surface defined by parametric equations: ![PIECEWISE([``, x = rho(zeta)*cos(phi)],[``, y = rho(zeta)*cos(phi)],[``, z = eta(zeta)])](prod/atlas/examples/images/abstract1.gif)
where and are some undefined functions on . At last the same invariants will be calculated for abstract surface defined by equation:

where z is undefined function on x and y. Abstract calculations restart: First of all we load atlas package: with(atlas): Abstract calculations with symbolic dimension Domain(M); 
Declare some functions: Functions(f=f(y[k]),h=h(x[j])); 
Declare some vectors: Vectors(E[k],X,Y,Z); ![{X, Y, Z, E[k]}](prod/atlas/examples/images/abstract8.gif)
Declare some forms: Forms(e[j]=1,xi=1,theta=p); ![{xi, theta, e[j]}](prod/atlas/examples/images/abstract9.gif)
Declare coframe 1-forms: Coframe(e[k],k=1..n); ![{e[k]}[k = 1 .. n]](prod/atlas/examples/images/abstract10.gif)
Declare frame vectors: Frame(E[j]); ![{E[j]}[j = 1 .. n]](prod/atlas/examples/images/abstract11.gif)
Declare connection: Connection(omega); ![omega[i,j]](prod/atlas/examples/images/abstract12.gif)
Using d-procedure: For functions: 'd(f*h)'=d(f*h); ![d(f*h) = Sum(Diff(f,y[l[2]])*d(y[l[2]]),l[2] = 1 .. n)*h+f*Sum(Diff(h,x[l[2]])*d(x[l[2]]),l[2] = 1 .. n)](prod/atlas/examples/images/abstract13.gif)
Obviously that: 'd(h*xi)'=d(h*xi); ![d(h*xi) = -Sum(Diff(h,x[l[2]])*`&^`(xi,d(x[l[2]])),l[2] = 1 .. n)+h*d(xi)](prod/atlas/examples/images/abstract14.gif)
Using ToBasis procedure: 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)](prod/atlas/examples/images/abstract15.gif)
Using div-procedure: div(X)=div(ToBasis(X)); *Sum(iota[E[l[2]]](omega[l[2],l[1]]),l[2] = 1 .. n),l[1] = 1 .. n)+Sum(iota[E[l[1]]](d(iota[X](e[l[1]]))),l[1] = 1 .. n)](prod/atlas/examples/images/abstract16.gif)
Using Lie derivative: 'L[E[i]](e[k])'=L[E[i]](e[k]); ![L[E[i]](e[k]) = iota[E[i]](d(e[k]))](prod/atlas/examples/images/abstract17.gif)
'L[E[i]](E[j])'=L[E[i]](E[j]); ![L[E[i]](E[j]) = Sum((iota[E[i]](omega[l[1],j])-iota[E[j]](omega[l[1],i]))*E[l[1]],l[1] = 1 .. n)](prod/atlas/examples/images/abstract18.gif)
A nother domain: Domain(N); 
Declare constant : Constants(lambda); 
Declare forms: Forms(zeta[i]=1); ![{xi, theta, e[j], zeta[i]}](prod/atlas/examples/images/abstract22.gif)
Let us declare another coframe 1-forms: Coframe(zeta[j]=d(x[j])/(1+lambda*Sum(x[i]^2,i=1..n)),j=1..n); ![{zeta[j] = d(x[j])/(1+lambda*Sum(x[i]^2,i = 1 .. n))}[j = 1 .. n]](prod/atlas/examples/images/abstract23.gif)
And another frame vectors: Frame(E[k]); ![{E[k]}[k = 1 .. n]](prod/atlas/examples/images/abstract24.gif)
'd(zeta[k])'=simplify(d(zeta[k])); ![d(zeta[k]) = -2*lambda*Sum(x[i]*`&^`(zeta[i],zeta[k]),i = 1 .. n)](prod/atlas/examples/images/abstract25.gif)
'd(x[j])'=d(x[j]); ![d(x[j]) = zeta[j]+zeta[j]*lambda*Sum(x[i]^2,i = 1 .. n)](prod/atlas/examples/images/abstract26.gif)
'd(h)'=d(h); ![d(h) = Sum(Diff(h,x[l[1]])*(zeta[l[1]]+zeta[l[1]]*lambda*Sum(x[i]^2,i = 1 .. n)),l[1] = 1 .. n)](prod/atlas/examples/images/abstract27.gif)
Functions(F=F(f,h)); 
'd(F)'=d(F); ![d(F) = Diff(F,f)*Sum(Diff(f,y[l[1]])*d(y[l[1]]),l[1] = 1 .. n)+Diff(F,h)*Sum(Diff(h,x[l[1]])*(zeta[l[1]]+zeta[l[1]]*lambda*Sum(x[i]^2,i = 1 .. n)),l[1] = 1 .. n)](prod/atlas/examples/images/abstract29.gif)
Abstract calculations with numeric dimension restart: Now we reload the atlas package: with(atlas): We redefine `atlas/simp` procedure just for right simplification (this is not necessary but it leads to more compact results): `atlas/simp`:=proc(a) simplify(a) 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/examples/images/abstract32.gif)
Declare vector fields to use them as a frame: Vectors(E[i]); ![{E[i]}](prod/atlas/examples/images/abstract33.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/examples/images/abstract34.gif)
Declare frame vectors: Frame(E[j]); ![[E[1] = Diff(``,x), E[2] = Diff(``,y), E[3] = Diff(``,z)]](prod/atlas/examples/images/abstract35.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/examples/images/abstract36.gif)
Connection calculation: Connection(Gamma); ![Gamma[i,j]](prod/atlas/examples/images/abstract37.gif)
"Rotational" surface Now we on a surface. Domain(S[1]); ![S[1]](prod/atlas/examples/images/abstract38.gif)
Functions(rho=rho(zeta),eta=eta(zeta)); 
Declare 1-forms for coframe: Forms(u[k]=1); ![{u[k], e[j]}](prod/atlas/examples/images/abstract40.gif)
Declare vector fields for frame: Vectors(U[j]); ![{U[j]}](prod/atlas/examples/images/abstract41.gif)
Coframe declaration for the surface: Coframe(u[1]=d(zeta),u[2]=d(phi)); ![[u[1] = d(zeta), u[2] = d(phi)]](prod/atlas/examples/images/abstract42.gif)
Frame declaration for the surface: Frame(U[k]); ![[U[1] = Diff(``,zeta), U[2] = Diff(``,phi)]](prod/atlas/examples/images/abstract43.gif)
Now we declare mapping of the surface into the Euclidean space : Mapping(pi,S[1],R^3, x=rho*cos(phi), y=rho*sin(phi), z=eta); 
![S[1].`--->`.(R^3)](prod/atlas/examples/images/abstract46.gif)
Let us see the attributes of the mapping Who(pi);
pi: mapping
![TABLE([manifolds = [S[1], R^3], coframe = {e[3] = Diff(eta,zeta)*u[1], e[1] = Diff(rho,zeta)*u[1]*cos(phi)-rho*sin(phi)*u[2], e[2] = Diff(rho,zeta)*u[1]*sin(phi)+rho*cos(phi)*u[2]}, equations = [x = rh...](prod/atlas/examples/images/abstract53.gif)
After that we can calculate metric induced on the surface by the mapping: Metric(G = g &/ pi); ![G = (Diff(rho,zeta)^2+Diff(eta,zeta)^2)*`&.`(u[1],u[1])+rho^2*`&.`(u[2],u[2])](prod/atlas/examples/images/abstract54.gif)
Calculation of the corresponding connection and curvature: Connection(omega); ![omega[i,j]](prod/atlas/examples/images/abstract55.gif)
Let us see the result: eval(omega); ![TABLE([(2, 2) = 1/rho*Diff(rho,zeta)*u[1], (2, 1) = 1/rho*Diff(rho,zeta)*u[2], (1, 1) = (Diff(rho,zeta)*Diff(rho,`$`(zeta,2))+Diff(eta,zeta)*Diff(eta,`$`(zeta,2)))/(Diff(rho,zeta)^2+Diff(eta,zeta)^2)*u...](prod/atlas/examples/images/abstract58.gif)
Now we can calculate the corresponding curvature: Curvature(Omega); ![Omega[i,j]](prod/atlas/examples/images/abstract59.gif)
The result is: eval(Omega); ![TABLE([(2, 2) = 0, (2, 1) = Diff(eta,zeta)*(Diff(rho,`$`(zeta,2))*Diff(eta,zeta)-Diff(rho,zeta)*Diff(eta,`$`(zeta,2)))/rho/(Diff(rho,zeta)^2+Diff(eta,zeta)^2)*`&^`(u[1],u[2]), (1, 1) = 0, (1, 2) = -rho...](prod/atlas/examples/images/abstract62.gif)
Calculation of riemannian and ricci tensors of the embedded surface: Riemann(Riem); ![Riem = -rho*Diff(eta,zeta)*(Diff(rho,`$`(zeta,2))*Diff(eta,zeta)-Diff(rho,zeta)*Diff(eta,`$`(zeta,2)))/(Diff(rho,zeta)^2+Diff(eta,zeta)^2)*`&.`(`&^`(u[1],u[2]),`&^`(u[1],u[2]))](prod/atlas/examples/images/abstract63.gif)
Ricci(ric); ![ric = -Diff(eta,zeta)*(Diff(rho,`$`(zeta,2))*Diff(eta,zeta)-Diff(rho,zeta)*Diff(eta,`$`(zeta,2)))/rho/(Diff(rho,zeta)^2+Diff(eta,zeta)^2)*`&.`(u[1],u[1])-rho*Diff(eta,zeta)*(Diff(rho,`$`(zeta,2))*Diff(...](prod/atlas/examples/images/abstract65.gif)
Calculation of ricci scalar of the embedded surface: RicciScalar(s); 
We can also calculate the invariants (the second fundamental form and mean curvature vector) of the embedding: Inv:=Invariants(pi); ![Inv := TABLE([secondForm = TABLE(zero,[(2, 2) = [-rho*cos(phi)*Diff(eta,zeta)^2/(Diff(rho,zeta)^2+Diff(eta,zeta)^2)*E[1]-rho*sin(phi)*Diff(eta,zeta)^2/(Diff(rho,zeta)^2+Diff(eta,zeta)^2)*E[2]+rho*Diff(...](prod/atlas/examples/images/abstract77.gif)
Let us extract the second fundamental form: B:=eval(Inv[secondForm]); ![B := TABLE(zero,[(2, 2) = [-rho*cos(phi)*Diff(eta,zeta)^2/(Diff(rho,zeta)^2+Diff(eta,zeta)^2)*E[1]-rho*sin(phi)*Diff(eta,zeta)^2/(Diff(rho,zeta)^2+Diff(eta,zeta)^2)*E[2]+rho*Diff(rho,zeta)*Diff(eta,zet...](prod/atlas/examples/images/abstract82.gif)
Now we can calculate the corresponding tensor: 'B'=add(add(`&.`(e[i],e[j],eval(B)[i,j]), i=1..2), j=1..2); ![B = cos(phi)*Diff(eta,zeta)*(Diff(rho,`$`(zeta,2))*Diff(eta,zeta)-Diff(rho,zeta)*Diff(eta,`$`(zeta,2)))/(Diff(rho,zeta)^2+Diff(eta,zeta)^2)*`&.`(e[1],e[1],E[1])+sin(phi)*Diff(eta,zeta)*(Diff(rho,`$`(ze...](prod/atlas/examples/images/abstract86.gif)
One can also calculate the corresponding projectors: Projectors(pi); ![TABLE([tangent = -(-Diff(rho,zeta)^2-Diff(eta,zeta)^2+Diff(eta,zeta)^2*cos(phi)^2)/(Diff(rho,zeta)^2+Diff(eta,zeta)^2)*`&.`(e[1],E[1])+1/(Diff(rho,zeta)^2+Diff(eta,zeta)^2)*Diff(eta,zeta)*Diff(rho,zeta...](prod/atlas/examples/images/abstract96.gif)
An abstract surface Now current manifold is a surface. Domain(S[2]); ![S[2]](prod/atlas/examples/images/abstract97.gif)
Declare functions: Functions(f=f(alpha,beta)); 
Declare 1-forms for the surface coframe: Forms(xi[k]=1); ![{u[k], xi[k], e[j]}](prod/atlas/examples/images/abstract99.gif)
Declare vector fields for the surface frame: Vectors(Xi[j]); ![{Xi[j]}](prod/atlas/examples/images/abstract100.gif)
Coframe declaration for the surface: Coframe(xi[1]=d(alpha),xi[2]=d(beta)); ![[xi[1] = d(alpha), xi[2] = d(beta)]](prod/atlas/examples/images/abstract101.gif)
Frame declaration for the surface: Frame(Xi[k]); ![[Xi[1] = Diff(``,alpha), Xi[2] = Diff(``,beta)]](prod/atlas/examples/images/abstract102.gif)
Now we declare embedding of the surface into : Mapping(psi,S[2],R^3, x=alpha, y=beta, z=f); 
![S[2].`--->`.(R^3)](prod/atlas/examples/images/abstract105.gif)
Let us see the mapping attributes: Who(psi);
psi: mapping
![TABLE([manifolds = [S[2], R^3], coframe = {e[1] = xi[1], e[2] = xi[2], e[3] = Diff(f,alpha)*xi[1]+Diff(f,beta)*xi[2]}, equations = [x = alpha, y = beta, z = f], frame = {Xi[1] = E[1]+Diff(f,alpha)*E[3]...](prod/atlas/examples/images/abstract109.gif)
After that we can calculate metric induced on the surface by the embedding: Metric(gK = g &/ psi); ![gK = (Diff(f,alpha)^2+1)*`&.`(xi[1],xi[1])+(1+Diff(f,beta)^2)*`&.`(xi[2],xi[2])+Diff(f,alpha)*Diff(f,beta)*`&.`(xi[2],xi[1])+Diff(f,alpha)*Diff(f,beta)*`&.`(xi[1],xi[2])](prod/atlas/examples/images/abstract111.gif)
Let us calculate the invariants of the embedding: Invariants(psi); ![TABLE([secondForm = TABLE(zero,[(2, 2) = [-Diff(f,`$`(beta,2))*Diff(f,alpha)/(Diff(f,alpha)^2+1+Diff(f,beta)^2)*E[1]-Diff(f,`$`(beta,2))*Diff(f,beta)/(Diff(f,alpha)^2+1+Diff(f,beta)^2)*E[2]+Diff(f,`$`(...](prod/atlas/examples/images/abstract124.gif)
One can also calculate the corresponding projectors: Projectors(psi); ![TABLE([tangent = Diff(f,alpha)/(Diff(f,alpha)^2+1+Diff(f,beta)^2)*`&.`(e[3],E[1])+(Diff(f,alpha)^2+Diff(f,beta)^2)/(Diff(f,alpha)^2+1+Diff(f,beta)^2)*`&.`(e[3],E[3])+Diff(f,alpha)/(Diff(f,alpha)^2+1+Di...](prod/atlas/examples/images/abstract131.gif)
|