Conformally flat metric on 2-dimentional sphere 

Description: 

This worksheet illustrates how to use atlas  package to solve problems in elementary differential geometry. As an example we discuss conformally flat metric on 2-dimensional sphere 

Plot_2d 

We construct the metric on sphere and calculate connection 1-forms , curvature 2-forms , curvature tensor field (Riemann   tensor  field), Ricci tensor field and Ricci scalar expression which is proportional to scalar curvature . We also calculate some additional quantities: Lie derivatives, exterior derivatives, interior products etc. 

 

Shpere - `*`(`^`(S, 2)): 

> restart:
with(atlas):
 

Conformally flat metric on sphere `*`(`^`(S, 2)): 

Declare constant lambda:
Constants(lambda); 

{`+`(`-`(I)), I, Pi, _Z, dim, Catalan, lambda}(2.1)
 

Declare functions:
Functions(f=f(x,y),h=h(f)); 

{f, h}(2.2)
 

Declear forms:
Forms(e[i]=1,xi=1,theta=p); 

{xi, theta, e[i]}(2.3)
 

Declare vectors:
Vectors(E[j],X,Y,Z); 

{X, Y, Z, E[j]}(2.4)
 

Declare coframe 1-forms:
Coframe(e[1]=d(x),e[2]=d(y)); 

[e[1] = d(x), e[2] = d(y)](2.5)
 

Now coframe 1-forms are e[1] = d(x), e[2] = d(y). 

Declare frame vectors:
Frame(E[j]); 

[E[1] = Diff(``, x), E[2] = Diff(``, y)](2.6)
 

Now frame vectors are . 

Metric declaration:
Metric(g=4*(d(x)&.d(x)+d(y)&.d(y))/(1+lambda*(x^2+y^2))^2);
 

g = `+`(`/`(`*`(4, `*`(`+`(`&.`(e[1], e[1]), `&.`(e[2], e[2])))), `*`(`^`(`+`(1, `*`(lambda, `*`(`+`(`*`(`^`(x, 2)), `*`(`^`(y, 2)))))), 2))))(2.7)
 

Calculate connection 1-forms:
Connection(omega); 

omega[i, j](2.8)
 

Calculate curvature 2-forms:
Curvature(Omega); 

Omega[i, j](2.9)
 

Riemann tensor:
Riemann(R); 

R = `+`(`/`(`*`(16, `*`(lambda, `*`(`&.`(`&^`(e[1], e[2]), `&^`(e[1], e[2]))))), `*`(`^`(`+`(1, `*`(lambda, `*`(`^`(x, 2))), `*`(lambda, `*`(`^`(y, 2)))), 4))))(2.10)
 

Ricci tensor:
Ricci(r); 

r = `+`(`/`(`*`(4, `*`(lambda, `*`(`&.`(e[1], e[1])))), `*`(`^`(`+`(1, `*`(lambda, `*`(`^`(x, 2))), `*`(lambda, `*`(`^`(y, 2)))), 2))), `/`(`*`(4, `*`(lambda, `*`(`&.`(e[2], e[2])))), `*`(`^`(`+`(1, `...(2.11)
 

Ricci scalar:
RicciScalar(s); 

s = `+`(`*`(2, `*`(lambda)))(2.12)
 

Show 1-form omega[2, 1]:
'omega[2,1]'=factor(omega[2,1]); 

omega[2, 1] = `+`(`-`(`/`(`*`(2, `*`(lambda, `*`(`+`(`-`(`*`(y, `*`(e[1]))), `*`(x, `*`(e[2])))))), `*`(`+`(1, `*`(lambda, `*`(`^`(x, 2))), `*`(lambda, `*`(`^`(y, 2))))))))(2.13)
 

Verify that there is no Killing vector field among frame vector fields:
'L[E[j]](g)'=L[E[j]](g); 

L[E[j]](g) = `+`(`-`(`/`(`*`(8, `*`(`+`(`&.`(e[1], e[1]), `&.`(e[2], e[2])), `*`(lambda, `*`(`+`(`*`(2, `*`(x, `*`(delta[1, j]))), `*`(2, `*`(y, `*`(delta[2, j])))))))), `*`(`^`(`+`(1, `*`(lambda, `*`...(2.14)
 

Verify that "rotation" vector field  is a Killing one:
Z:=x*E[2]-y*E[1];
'L[Z]'(g)=L[Z](g);
 

 

`+`(`*`(x, `*`(E[2])), `-`(`*`(y, `*`(E[1]))))
L[Z](g) = 0(2.15)
 

Calculation of volume form using Hodge operator &** :
'&**(1)'=radsimp(&**(1)); 

`&**`(1) = `+`(`/`(`*`(4, `*`(`&^`(e[1], e[2]))), `*`(`^`(abs(`+`(1, `*`(lambda, `*`(`^`(x, 2))), `*`(lambda, `*`(`^`(y, 2))))), 2))))(2.16)
 

Some more calculations: 

Using interior product operator - iota:
'iota[E[j]](&**(1))'=iota[E[j]](radsimp(&**(1))); 

iota[E[j]](`&**`(1)) = `+`(`/`(`*`(4, `*`(`+`(`*`(delta[1, j], `*`(e[2])), `-`(`*`(delta[2, j], `*`(e[1])))))), `*`(`^`(abs(`+`(1, `*`(lambda, `*`(`^`(x, 2))), `*`(lambda, `*`(`^`(y, 2))))), 2))))(2.17)
 

The same with metric tensor g:
'iota[E[k]](g)'=iota[E[k]](g); 

iota[E[k]](g) = `+`(`/`(`*`(4, `*`(`+`(`*`(delta[1, k], `*`(e[1])), `*`(delta[2, k], `*`(e[2]))))), `*`(`^`(`+`(1, `*`(lambda, `*`(`^`(x, 2))), `*`(lambda, `*`(`^`(y, 2)))), 2))))(2.18)
 

Using exterior derivative operator - d:
'd(f)'=d(f); 

d(f) = `+`(`*`(Diff(f, x), `*`(e[1])), `*`(Diff(f, y), `*`(e[2])))(2.19)
 

> 'd(h)'=d(h);
 

d(h) = `*`(Diff(h, f), `*`(`+`(`*`(Diff(f, x), `*`(e[1])), `*`(Diff(f, y), `*`(e[2])))))(2.20)
 

> 'd(f*xi)'=d(f*xi);
 

d(`*`(f, `*`(xi))) = `+`(`-`(`*`(Diff(f, x), `*`(`&^`(xi, e[1])))), `-`(`*`(Diff(f, y), `*`(`&^`(xi, e[2])))), `*`(f, `*`(d(xi))))(2.21)
 

> '&**(d(f))'=radsimp(&**(d(f)));
 

`&**`(d(f)) = `/`(`*`(`^`(`+`(1, `*`(lambda, `*`(`^`(x, 2))), `*`(lambda, `*`(`^`(y, 2)))), 2), `*`(`+`(`*`(Diff(f, x), `*`(e[2])), `-`(`*`(Diff(f, y), `*`(e[1])))))), `*`(`^`(abs(`+`(1, `*`(lambda, `...(2.22)
 

As e[k] are coframe 1-forms and E[i] are frame vectors then:
'iota[E[i]](e[k])'=iota[E[i]](e[k]); 

iota[E[i]](e[k]) = delta[i, k](2.23)
 

"ToBasis" decomposition:
X=ToBasis(X);
xi=ToBasis(xi);
 

 

X = `+`(`*`(iota[X](e[1]), `*`(E[1])), `*`(iota[X](e[2]), `*`(E[2])))
xi = `+`(`*`(iota[E[1]](xi), `*`(e[1])), `*`(iota[E[2]](xi), `*`(e[2])))(2.24)
 

>