Surface geometry Copyright © 2004-2008 DigiArea Group . All rights reserved. Description: This worksheet illustrates how to use atlas package to solve problems in elementary differential geometry. As an example we find geometry of the following surfaces:
![[Maple Plot]](prod/atlas/examples/images/surfaces1.gif)
|
![[Maple Plot]](prod/atlas/examples/images/surfaces2.gif)
|
![[Maple Plot]](prod/atlas/examples/images/surfaces3.gif)
|
Torus | Helicoid | Revolutionary surface | We assume that the geometry is induced by the corresponding embedding of a surface into the flat Euclidian 3-dimensional space. Thus we construct corresponding embedding and calculate the following quantities: first fundamental form ( metric tensor field), second fundamental form and field of mean curvature vectors . Besides that we calculate connection 1-forms , curvature 2-forms , curvature tensor field ( Riemann tensor field), Ricci tensor field and Ricci scalar function which is proportional to scalar curvature . Solution: Load atlas package: restart: with(atlas): Just for right simplification: `atlas/simp`:=proc(a) factor(simplify(a,trig)) end: Description of the total space First of all we have to describe the space we are working in. The space is 3-dimensional Euclidean (flat) space. To define the space we declare domain , forms , vectors , coframe , frame , flat metric and calculate connection (it equals to zero of cause). Define Euclidean space as a manifold : Domain(R^3); 
Declare 1-forms for the space coframe: Forms(e[k]=1); ![{e[k]}](prod/atlas/examples/images/surfaces6.gif)
Declare vectors for the space frame: Vectors(E[j]); ![{E[j]}](prod/atlas/examples/images/surfaces7.gif)
Declare coframe on the space: 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/surfaces8.gif)
Declare frame on the space: Frame(E[k]); ![[E[1] = Diff(``,x), E[2] = Diff(``,y), E[3] = Diff(``,z)]](prod/atlas/examples/images/surfaces9.gif)
Declare flat metric on the space: Metric(g[R]=d(x)&.d(x)+d(y)&.d(y)+d(z)&.d(z)); ![g[R] = `&.`(e[1],e[1])+`&.`(e[2],e[2])+`&.`(e[3],e[3])](prod/atlas/examples/images/surfaces10.gif)
Calculate connection of the metric: Connection(Gamma);
Torus
Define the torus as a manifold : Domain(T); 
Declare constants a, b: Constants(a,b); 
Declare 1-forms for torus coframe Forms(w[i]=1); ![{e[k], w[i]}](prod/atlas/examples/images/surfaces14.gif)
Declare vectors for torus frame: Vectors(W[k]); ![{W[k]}](prod/atlas/examples/images/surfaces15.gif)
Declare coframe on the torus: Coframe(w[1]=d(alpha),w[2]=d(beta)); ![[w[1] = d(alpha), w[2] = d(beta)]](prod/atlas/examples/images/surfaces16.gif)
Declare frame of the surface: Frame(W[l]); ![[W[1] = Diff(``,alpha), W[2] = Diff(``,beta)]](prod/atlas/examples/images/surfaces17.gif)
Declare mapping of the torus into : Mapping(pi,T,R^3,x=(a+b*cos(beta))*cos(alpha), y=(a+b*cos(beta))*sin(alpha), z=b*sin(beta)); 

Calculate metric on the torus using `&/` operator: Metric(g[T] = g[R] &/ pi); ![g[T] = b^2*`&.`(w[2],w[2])+(a+b*cos(beta))^2*`&.`(w[1],w[1])](prod/atlas/examples/images/surfaces21.gif)
Calculate invariants of the mapping: Inv[T]:=Invariants(pi); ![Inv[T] := TABLE([meanCurvature = -cos(alpha)*cos(beta)*(2*b*cos(beta)+a)/(a+b*cos(beta))/b*E[1]-sin(alpha)*cos(beta)*(2*b*cos(beta)+a)/(a+b*cos(beta))/b*E[2]-sin(beta)*(2*b*cos(beta)+a)/(a+b*cos(beta))...](prod/atlas/examples/images/surfaces28.gif)
Extract second fundamental form as a table: sF:=eval(Inv[T][secondForm]); ![sF := TABLE(zero,[(1, 1) = [-cos(alpha)*cos(beta)^2*(a+b*cos(beta))*E[1]-cos(beta)^2*(a+b*cos(beta))*sin(alpha)*E[2]-sin(beta)*cos(beta)*(a+b*cos(beta))*E[3]], (2, 2) = [-cos(alpha)*b*cos(beta)*E[1]-si...](prod/atlas/examples/images/surfaces32.gif)
Construct second fundamental form as corresponding tensor field ( `&.` - is tensor product operator): B:=add(add(`&.`(e[i],e[j],sF[i,j]),i=1..3),j=1..3); ![B := -cos(alpha)*cos(beta)^2*(a+b*cos(beta))*`&.`(e[1],e[1],E[1])-cos(beta)^2*(a+b*cos(beta))*sin(alpha)*`&.`(e[1],e[1],E[2])-sin(beta)*cos(beta)*(a+b*cos(beta))*`&.`(e[1],e[1],E[3])-cos(alpha)*b*cos(b...](prod/atlas/examples/images/surfaces35.gif)
Extract mean curvature vector : mu:=Inv[T][meanCurvature]; ![mu := -cos(alpha)*cos(beta)*(2*b*cos(beta)+a)/(a+b*cos(beta))/b*E[1]-sin(alpha)*cos(beta)*(2*b*cos(beta)+a)/(a+b*cos(beta))/b*E[2]-sin(beta)*(2*b*cos(beta)+a)/(a+b*cos(beta))/b*E[3]](prod/atlas/examples/images/surfaces37.gif)
Calculate mean curvature : chi:=simplify(g[R](mu,mu)); 
Use differential operator `&D` to express tangent vectors on the torus by total space frame vectors : W1:=W[1] &D pi; W2:=W[2] &D pi; ![W1 := (-sin(alpha)*E[1]+cos(alpha)*E[2])*(a+b*cos(beta))](prod/atlas/examples/images/surfaces41.gif)
![W2 := b*(-sin(beta)*cos(alpha)*E[1]-sin(beta)*sin(alpha)*E[2]+cos(beta)*E[3])](prod/atlas/examples/images/surfaces42.gif)
Verify that mean curvature vector field is normal to the tangent space of the torus: 'g[R](mu,W1)'=simplify(g[R](mu,W1)); 'g[R](mu,W2)'=simplify(g[R](mu,W2));  = 0](prod/atlas/examples/images/surfaces43.gif)
 = 0](prod/atlas/examples/images/surfaces44.gif)
Calculate connection of the embedding: Connection(omega[T]); ![omega[T][i,j]](prod/atlas/examples/images/surfaces45.gif)
Calculate curvature of the embedding: Curvature(Omega[T]); ![Omega[T][i,j]](prod/atlas/examples/images/surfaces46.gif)
Calculate Riemann tensor field: Riemann(R[T]); ![R[T] = b*(a+b*cos(beta))*cos(beta)*`&.`(`&^`(w[1],w[2]),`&^`(w[1],w[2]))](prod/atlas/examples/images/surfaces47.gif)
Calculate Ricci tensor field: Ricci(ric[T]); ![ric[T] = (a+b*cos(beta))/b*cos(beta)*`&.`(w[1],w[1])+1/(a+b*cos(beta))*b*cos(beta)*`&.`(w[2],w[2])](prod/atlas/examples/images/surfaces48.gif)
Calculate Ricci scalar curvature: RicciScalar(scal[T]);
Helicoid
Define the surface as a manifold: Domain(H); 
Declare 1-form for surface coframe Forms(s[i]=1); ![{s[i], e[k], w[i]}](prod/atlas/examples/images/surfaces51.gif)
Declare vectors for surface frame: Vectors(S[k]); ![{S[k]}](prod/atlas/examples/images/surfaces52.gif)
Declare coframe on the surface: Coframe(s[1]=d(u[h]),s[2]=d(v[h])); ![[s[1] = d(u[h]), s[2] = d(v[h])]](prod/atlas/examples/images/surfaces53.gif)
Declare frame of the surface: Frame(S[k]); ![[S[1] = Diff(``,u[h]), S[2] = Diff(``,v[h])]](prod/atlas/examples/images/surfaces54.gif)
Declare mapping of the surface into : Mapping(psi,H,R^3,x=u[h]*cos(v[h]), y=u[h]*sin(v[h]), z=b*v[h]); 

One can also calculate metric induced on the surface by the mapping. Metric(g[H] = g[R] &/ psi); ![g[H] = `&.`(s[1],s[1])+(b^2+u[h]^2)*`&.`(s[2],s[2])](prod/atlas/examples/images/surfaces58.gif)
Calculate invariants of the mapping: Inv[H]:=Invariants(psi); ![Inv[H] := TABLE([meanCurvature = 0, secondForm = TABLE(zero,[(2, 1) = [-sin(v[h])*b^2/(b^2+u[h]^2)*E[1]+cos(v[h])*b^2/(b^2+u[h]^2)*E[2]-u[h]*b/(b^2+u[h]^2)*E[3]], (1, 2) = [-sin(v[h])*b^2/(b^2+u[h]^2)*...](prod/atlas/examples/images/surfaces63.gif)
It is well known that helicoid is a minimal surface . Thus nothing surprising about zero mean curvature vector field . Calculate connection of the embedding: Connection(omega[H]); ![omega[H][i,j]](prod/atlas/examples/images/surfaces64.gif)
Calculate curvature of the embedding: Curvature(Omega[H]); ![Omega[H][i,j]](prod/atlas/examples/images/surfaces65.gif)
Calculate Riemann tensor field: Riemann(R[H]); ![R[H] = -1/(b^2+u[h]^2)*b^2*`&.`(`&^`(s[1],s[2]),`&^`(s[1],s[2]))](prod/atlas/examples/images/surfaces66.gif)
Calculate Ricci tensor field: Ricci(ric[H]); ![ric[H] = -b^2/(b^2+u[h]^2)^2*`&.`(s[1],s[1])-1/(b^2+u[h]^2)*b^2*`&.`(s[2],s[2])](prod/atlas/examples/images/surfaces67.gif)
Calculate Ricci scalar curvature: RicciScalar(scal[H]); ![scal[H] = -2*b^2/(b^2+u[h]^2)^2](prod/atlas/examples/images/surfaces68.gif)
Abstract revolution surface
Define the surface as a manifold: Domain(A); 
Declare functions: Functions(rho=rho(u),zeta=zeta(u)); 
Declare 1-form for surface coframe Forms(p[i]=1); ![{s[i], p[i], e[k], w[i]}](prod/atlas/examples/images/surfaces71.gif)
Declare vectors for surface frame: Vectors(P[k]); ![{P[k]}](prod/atlas/examples/images/surfaces72.gif)
Declare coframe on the surface: Coframe(p[1]=d(u),p[2]=d(v)); ![[p[1] = d(u), p[2] = d(v)]](prod/atlas/examples/images/surfaces73.gif)
Declare frame of the surface: Frame(P[l]); ![[P[1] = Diff(``,u), P[2] = Diff(``,v)]](prod/atlas/examples/images/surfaces74.gif)
Declare mapping of the surface into : Mapping(f,A,R^3,x=rho*cos(v), y=rho*sin(v), z=zeta); 

One can also calculate metric induced on the surface by the mapping. Metric(g[A] = g[R] &/ f); ![g[A] = (Diff(rho,u)^2+Diff(zeta,u)^2)*`&.`(p[1],p[1])+rho^2*`&.`(p[2],p[2])](prod/atlas/examples/images/surfaces78.gif)
Calculate invariants of the mapping: Inv[A]:=Invariants(f); ![Inv[A] := TABLE([meanCurvature = cos(v)*Diff(zeta,u)*(rho*Diff(rho,`$`(u,2))*Diff(zeta,u)-rho*Diff(zeta,`$`(u,2))*Diff(rho,u)-Diff(zeta,u)*Diff(rho,u)^2-Diff(zeta,u)^3)/(Diff(rho,u)^2+Diff(zeta,u)^2)^2...](prod/atlas/examples/images/surfaces88.gif)
Calculate connection of the embedding: Connection(omega[A]); ![omega[A][i,j]](prod/atlas/examples/images/surfaces89.gif)
Calculate curvature of the embedding: Curvature(Omega[A]); ![Omega[A][i,j]](prod/atlas/examples/images/surfaces90.gif)
Calculate Riemann tensor field: Riemann(R[A]); ![R[A] = -rho*Diff(zeta,u)*(Diff(rho,`$`(u,2))*Diff(zeta,u)-Diff(zeta,`$`(u,2))*Diff(rho,u))/(Diff(rho,u)^2+Diff(zeta,u)^2)*`&.`(`&^`(p[1],p[2]),`&^`(p[1],p[2]))](prod/atlas/examples/images/surfaces91.gif)
Calculate Ricci tensor field: Ricci(ric[A]); ![ric[A] = -Diff(zeta,u)*(Diff(rho,`$`(u,2))*Diff(zeta,u)-Diff(zeta,`$`(u,2))*Diff(rho,u))/rho/(Diff(rho,u)^2+Diff(zeta,u)^2)*`&.`(p[1],p[1])-rho*Diff(zeta,u)*(Diff(rho,`$`(u,2))*Diff(zeta,u)-Diff(zeta,`...](prod/atlas/examples/images/surfaces93.gif)
Calculate Ricci scalar curvature: RicciScalar(scal[A]); ![scal[A] = -2*Diff(zeta,u)*(Diff(rho,`$`(u,2))*Diff(zeta,u)-Diff(zeta,`$`(u,2))*Diff(rho,u))/rho/(Diff(rho,u)^2+Diff(zeta,u)^2)^2](prod/atlas/examples/images/surfaces94.gif)
|