CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutSign UpSign In
sagemanifolds

CoCalc provides the best real-time collaborative environment for Jupyter Notebooks, LaTeX documents, and SageMath, scalable from individual users to large groups and classes!

GitHub Repository: sagemanifolds/IntroToManifolds
Path: blob/main/24Manifold_RiemannCurvature.ipynb
Views: 235
Kernel: SageMath 9.6

24. Riemannian curvature tensor of type (0,4)

This notebook is part of the Introduction to manifolds in SageMath by Andrzej Chrzeszczyk (Jan Kochanowski University of Kielce, Poland).

version()
'SageMath version 9.6, Release Date: 2022-05-15'

Assume now that MM is a Riemannian manifold with metric gg and \nabla is the corresponding Levi-Civita connection. We define Riemannian curvature tensor of type (0,4)(0,4) by

R(X,Y,Z,W)=g(R(X,Y)Z,W),for X,Y,Z,WX(M).\begin{equation} R(X, Y, Z , W ) = g(R(X, Y )Z , W ),\quad \text{for } X,Y,Z,W\in \mathfrak{X}(M). \tag{24.1} \end{equation}

Since gg is non-singular (cf. notebook 22) the curvature (0,4)-type tensor contains the same information as the corresponding (1,3)-type tensor from the previous notebook.

In a local coordinate system (x1,,xn)(x^1,\ldots,x^n) we have

Rijkl=gimRjklm.\begin{equation} R_{ijkl}=g_{im}R^m_{jkl}. \tag{24.1'} \end{equation}

Symmetries of Riemannian curvature tensor


If X,Y,Z,WX, Y, Z , W are vector fields in MM and is the Levi–Civita connection, then

R(X,Y,Z,W)+R(Y,Z,X,W)+R(Z,X,Y,W)=0,R(X,Y,Z,W)=R(Y,X,Z,W),R(X,Y,Z,W)=R(X,Y,W,Z),R(X,Y,Z,W)=R(Z,W,X,Y).\begin{equation} \begin{matrix} R(X, Y, Z , W ) + R(Y, Z , X, W ) + R(Z , X, Y, W ) = 0,\\ R(X, Y, Z , W ) = −R(Y, X, Z , W ),\\ R(X, Y, Z , W ) = −R(X, Y, W, Z ),\\ R(X, Y, Z , W ) = R(Z , W, X, Y ). \end{matrix} \tag{24.2} \end{equation}

Since the Levi-Civita connections are torsion-free, the first Bianchi identity (23.4) reduces to R(X,Y)Z+R(Z,X)Y+R(Y,Z)X=0R(X, Y)Z + R(Z, X)Y + R(Y, Z)X=0 and implies the first relation.

The antisymmetry R(X,Y)=R(Y,X)R(X, Y) = −R(Y, X) implies the second equality.

The third equality is equivalent to R(X,Y,Z,Z)=0.R(X, Y, Z , Z ) = 0. Indeed, if it holds then clearly R(X,Y,Z,Z)=0.R(X, Y, Z , Z ) = 0. Conversely, if R(X,Y,Z,Z)=0R(X, Y, Z , Z ) = 0, we have

R(X,Y,Z+W,Z+W)=0R(X,Y,Z,Z)+R(X,Y,Z,W)+R(X,Y,W,Z)+R(X,Y,W,W)=0R(X,Y,Z,W)+R(X,Y,W,Z)=0.R(X, Y, Z + W, Z + W ) = 0\\ ⇔R(X, Y, Z , Z ) + R(X, Y, Z, W ) +R(X, Y, W, Z ) + R(X, Y, W, W )=0\\ ⇔ R(X, Y, Z , W ) + R(X, Y, W, Z ) = 0.

To prove R(X,Y,Z,Z)=0R(X, Y, Z , Z ) = 0, let us note that since the Levi-Civita connection is compatible with the metric, we have

g(XYZ,Z))=X(g(YZ,Z))g(YZ,XZ),g(YXZ,Z))=Y(g(XZ,Z))g(XZ,YZ).g(∇_X ∇_Y Z , Z ))=X ( g(∇_Y Z , Z ))-g( ∇_Y Z , ∇_X Z),\\ g(∇_Y ∇_X Z , Z ))=Y ( g(∇_X Z , Z ))-g( ∇_X Z , ∇_Y Z).

It is also clear, that for connections compatible with the metric, taking V=[X,Y]V=[X,Y] we obtain

V(g(Z,Z))=2g(VZ,Z)[X,Y](g(Z,Z))=2g([X,Y]Z,Z).V(g(Z,Z))=2g(\nabla_V Z,Z) \Longrightarrow [X,Y](g(Z , Z))=2 g(∇_{[X,Y ]} Z , Z).

Therefore R(X,Y,Z,Z)=g(XYZ,Z)g(YXZ,Z)g([X,Y]Z,Z)=X(g(YZ,Z))g(YZ,XZ)Y(g(XZ,Z))+g(XZ,YZ)12[X,Y](g(Z,Z)) R(X, Y, Z , Z ) = g(∇_X ∇_Y Z , Z) − g(∇_Y ∇_X Z , Z) − g(∇_{[X,Y ]} Z , Z)\\ = X(g( ∇_Y Z , Z)) − g(∇_Y Z , ∇_X Z)\\ − Y(g( ∇_X Z , Z))+ g(∇_X Z , ∇_Y Z)\\ − \frac{1}{2}[X, Y ](g( Z , Z)) But we have also g(YZ,Z)=Y(g(Z,Z))g(Z,YZ),g(XZ,Z)=X(g(Z,Z))g(Z,XZ), g(\nabla_YZ,Z)=Y(g(Z,Z))-g(Z,\nabla_YZ),\\ g(\nabla_XZ,Z)=X(g(Z,Z))-g(Z,\nabla_XZ),

and consequently g(YZ,Z)=12Y(g(Z,Z)),g(XZ,Z)=12X(g(Z,Z)), g(\nabla_YZ,Z)=\frac{1}{2}Y(g(Z,Z)),\\ g(\nabla_XZ,Z)=\frac{1}{2}X(g(Z,Z)),

therefore

R(X,Y,Z,Z)=12X(Y(g(Z,Z))12Y(X(g(Z,Z))12[X,Y](g(Z,Z))=12[X,Y](g(Z,Z))12[X,Y](g(Z,Z))=0.R(X, Y, Z , Z )\\ =\frac{1}{2}X(Y( g(Z , Z ))-\frac{1}{2}Y(X( g(Z , Z ))-\frac{1}{2}[X,Y]( g(Z , Z ))\\ =\frac{1}{2}[X,Y]( g(Z , Z ))-\frac{1}{2}[X,Y]( g(Z , Z ))=0.

In the proof of the fourth relation we use the first one to obtain

R(X,Y,Z,W)+R(Y,Z,X,W)+R(Z,X,Y,W)=0,R(Y,Z,W,X)+R(Z,W,Y,X)+R(W,Y,Z,X)=0,R(Z,W,X,Y)+R(W,X,Z,Y)+R(X,Z,W,Y)=0,R(W,X,Y,Z)+R(X,Y,W,Z)+R(Y,W,X,Z)=0.R(X, Y, Z , W )+R(Y, Z , X, W )+R(Z , X, Y, W )=0,\\ R(Y, Z, W, X) +R(Z , W, Y, X )+R(W, Y, Z , X )=0,\\ R(Z , W, X, Y )+R(W, X, Z , Y )+R(X, Z , W, Y )=0,\\ R(W, X, Y, Z )+R(X, Y, W, Z )+R(Y, W, X, Z )=0.

Adding side by side and using the third equality we obtain

R(Z,X,Y,W)+R(W,Y,Z,X)+R(X,Z,W,Y)+R(Y,W,X,Z)=0.R(Z , X, Y, W ) + R(W, Y, Z , X ) + R(X, Z , W, Y ) + R(Y, W, X, Z ) = 0.

Using the second and third relation, we have

2R(Z,X,Y,W)2R(Y,W,Z,X)=0.2R(Z , X, Y, W ) − 2R(Y, W, Z , X ) = 0.

The component-wise version of (24.2) reads as follows:

Rijkl+Riklj+Riljk=0,Rijkl=Rjikl,Rijkl=Rijlk,Rijkl=Rklij.\begin{equation} \begin{matrix} R_{i jkl} + R_{ikl j} + R_{il jk} = 0,\\ R_{ijkl} = −R_{jikl},\\ R_{ijkl} = −R_{ijlk},\\ R_{ijkl} = R_{klij}. \end{matrix} \tag{24.2'} \end{equation}

The case of of 2-dimensional manifolds in R3R^3


If n=2n=2, then the indices take values 1 or 2 (or 0,1 if Python is used). The antisymmetry in i,ji,j and k,lk,l means that for nonzero components of of the tensor RijklR_{ijkl}, we have iji\not=j and klk\not=l. Furthermore changing the order of i,ji,j or k,lk,l we only change the sign of the corresponding components RijklR_{ijkl}. Thus, for manifolds of dimension n=2,n = 2, there is only one independent component of the Riemannian curvature tensor, namely, R1212R_{1212}. The remaining ones vanish or can be obtained by permutations of indices (i,j)=(1,2), (k,l)=(1,2)(i,j)=(1,2), \ (k,l)=(1,2) and an appropriate change of signs.

Suppose we are given a surface in Euclidean 3-space

x=x(u,v),  y=y(u,v),  z=z(u,v),  (u,v)VR2,x=x(u,v),\ \ y=y(u,v),\ \ z=z(u,v),\ \ (u,v)\in V\subset R^2,

and a non-singular point P=(x0,y0,z0)=(x(u0,v0),y(u0,v0),z(u0,v0))P=(x_0 , y_0 , z_0 )=(x(u_0,v_0),y(u_0,v_0),z(u_0,v_0)) on it. i.e.,

rank(xuyuzuxvyvzv)(u0,v0)=2.\text{rank}\left. \left( \begin{matrix} x_u & y_u & z_u\\ x_v & y_v & z_v \end{matrix} \right) \right|_{(u_0,v_0)}=2.

We shall assume that the zz-axis is perpendicular to the tangent plane to the surface at the point P,P, in which case the xx-axis and yy-axis will be parallel to it. The surface may then be given locally about (i.e. in a neighborhood of) the point PP by an equation of the form z=f(x,y)z = f(x, y), where z0=f(x0,y0)z_0 = f(x_0 , y_0 ) and

fxx=x0y=y0=fyx=x0y=y0=0,i.e.gradfx=x0y=y0=0.\frac{\partial f}{\partial x}\Big|_{\substack{x=x_0\\y=y_0}} =\frac{\partial f}{\partial y}\Big|_{\substack{x=x_0\\y=y_0}}=0, \quad \text{i.e.}\quad \text{grad}\, f\,\Big|_{\substack{x=x_0\\y=y_0}}=0.

Given a surface z=f(x,y)z = f(x, y), and a point P=(x0,y0,z0)P=(x_0 , y_0 , z_0 ) on it at which grad f=0f = 0, we can define the Gaussian curvature KK of the surface at (x0,y0,z0)(x_0,y_0,z_0) to be the determinant of the matrix

K=det(fxixj)x=x0y=y0=det(fxxfxyfyxfyy)x=x0y=y0.K=\det (f_{x^ix^j})\Big|_{\substack{x=x_0\\y=y_0}}= \det \left( \begin{matrix} f_{xx} & f_{xy}\\ f_{yx} & f_{yy} \end{matrix} \right)\Big|_{\substack{x=x_0\\y=y_0}}.

The metric on such surface is defined by

g11=1+fx2,g12=fxfy,g22=1+fy2.g_{11}=1+f^2_x,\quad g_{12}=f_xf_y,\quad g_{22}=1+f_y^2.

By the assumption gradfx=x0y=y0=0\text{grad}\, f\,\Big|_{\substack{x=x_0\\y=y_0}}=0 at point PP, the derivatives of gijg_{ij} with respect to xx and yy vanish, so all Levi-Civita connection coefficients Γijm=0\Gamma^m_{ij}=0 at PP.

Recall the formulas defining the Riemannian curvature tensor at PP ( here, as usual (gij)(g_{ij}) is the matrix of metric components and (gij)(g^{ij}) its inverse).

$$\displaystyle\Gamma_{rs}^q=\frac{1}{2}g^{tq}\Big(\frac{\partial g_{rt}}{\partial x^s} +\frac{\partial g_{ts}}{\partial x^r}- \frac{\partial g_{sr}}{\partial x^t}\Big),\\ R^m_{kij}=\frac{\partial \Gamma^m_{kj}}{\partial x^i} -\frac{\partial \Gamma^m_{ki}}{\partial x^j} +\Gamma^m_{li}\Gamma^l_{kj} -\Gamma^m_{lj}\Gamma^l_{ki},\\ R_{ijkl}=g_{im}R^m_{jkl} =g_{im} \Big(\frac{\partial \Gamma^m_{jl}}{\partial x^k} -\frac{\partial \Gamma^m_{jk}}{\partial x^l}\Big),\\$$

(in the last formula we used the fact that Γkim=0\Gamma^m_{ki}=0 at P=(x0,y0,z0)P=(x_0,y_0,z_0)). To obtain the derivatives of Christoffel symbols we need their values in a neighborhood of PP

Γjlm=12gpm(gjpxl+gplxjgljxp),\Gamma^m_{jl}=\frac{1}{2}g^{pm}\Big(\frac{\partial g_{jp}}{\partial x^l} +\frac{\partial g_{pl}}{\partial x^j}- \frac{\partial g_{lj}}{\partial x^p}\Big),

so using the fact that derivatives of gijg_{ij} vanish at PP we obtain

Γjlmxk=12gpm(2gjpxkxl+2gplxkxj2gljxkxp).\frac{\partial \Gamma^m_{jl}}{\partial x^k} =\frac{1}{2}g^{pm}\big(\frac{\partial^2 g_{jp}}{\partial x^k\partial x^l} +\frac{\partial^2 g_{pl}}{\partial x^k\partial x^j}- \frac{\partial^2 g_{lj}}{\partial x^k\partial x^p}\Big).

Similarly

Γjkm=12gpm(gjpxk+gpkxjgkjxp),\Gamma^m_{jk}=\frac{1}{2}g^{pm}\Big(\frac{\partial g_{jp}}{\partial x^k} +\frac{\partial g_{pk}}{\partial x^j}- \frac{\partial g_{kj}}{\partial x^p}\Big),

so Γjkmxl=12gpm(2gjpxlxk+2gpkxlxj2gkjxlxp). \frac{\partial \Gamma^m_{jk}}{\partial x^l} =\frac{1}{2}g^{pm}\big(\frac{\partial^2 g_{jp}}{\partial x^l\partial x^k} +\frac{\partial^2 g_{pk}}{\partial x^l\partial x^j}- \frac{\partial^2 g_{kj}}{\partial x^l\partial x^p}\Big).

Since gimgpm=δipg_{im}g^{pm}=\delta_i^p, then RijklR_{ijkl} is a difference of two expressions:

12δip(2gjpxkxl+2gplxkxj2gljxkxp)=12(2gjixkxl+2gilxkxj2gljxkxi)\frac{1}{2}\delta_i^p\big(\frac{\partial^2 g_{jp}}{\partial x^k\partial x^l} +\frac{\partial^2 g_{pl}}{\partial x^k\partial x^j}- \frac{\partial^2 g_{lj}}{\partial x^k\partial x^p}\big) = \frac{1}{2}\big(\frac{\partial^2 g_{ji}}{\partial x^k\partial x^l} +\frac{\partial^2 g_{il}}{\partial x^k\partial x^j}- \frac{\partial^2 g_{lj}}{\partial x^k\partial x^i}\big)

and

12δip(2gjpxlxk+2gpkxlxj2gkjxlxp)=12(2gjixlxk+2gikxlxj2gkjxlxi).\frac{1}{2}\delta_i^p\big(\frac{\partial^2 g_{jp}}{\partial x^l\partial x^k} +\frac{\partial^2 g_{pk}}{\partial x^l\partial x^j}- \frac{\partial^2 g_{kj}}{\partial x^l\partial x^p}\big) = \frac{1}{2}\big(\frac{\partial^2 g_{ji}}{\partial x^l\partial x^k} +\frac{\partial^2 g_{ik}}{\partial x^l\partial x^j}- \frac{\partial^2 g_{kj}}{\partial x^l\partial x^i}\big).

Thus

Rijkl=12(2gilxkxj+2gkjxlxi2gljxkxi2gikxlxj).R_{ijkl}=\frac{1}{2}\Big( \frac{\partial^2 g_{il}}{\partial x^k\partial x^j}+ \frac{\partial^2 g_{kj}}{\partial x^l\partial x^i}- \frac{\partial^2 g_{lj}}{\partial x^k\partial x^i}- \frac{\partial^2 g_{ik}}{\partial x^l\partial x^j}\Big).

For (i,j,k,l)=(1,2,1,2)(i,j,k,l)=(1,2,1,2) we obtain R1212=12(2g12x1x2+2g12x2x12g22x1x12g11x2x2)=12(2g12xy+2g12yx2g22x22g11y2).R_{1212}=\frac{1}{2}\Big( \frac{\partial^2 g_{12}}{\partial x^1\partial x^2}+ \frac{\partial^2 g_{12}}{\partial x^2\partial x^1}- \frac{\partial^2 g_{22}}{\partial x^1\partial x^1}- \frac{\partial^2 g_{11}}{\partial x^2\partial x^2}\Big)\\ =\frac{1}{2}\Big(\frac{\partial^2 g_{12}}{\partial x\partial y}+ \frac{\partial^2 g_{12}}{\partial y\partial x}- \frac{\partial^2 g_{22}}{\partial x^2}- \frac{\partial^2 g_{11}}{\partial y^2}\Big) .

Since at PP (g11)yy=2(fxy)2,(g22)xx=2(fxy)2,(g12)xy=fxxfyy+(fxy)2,(g_{11})_{yy}=2(f_{xy})^2,\quad (g_{22})_{xx}=2(f_{xy})^2,\quad (g_{12})_{xy}=f_{xx}f_{yy}+(f_{xy})^2, we have at PP R1212=12(2(fxxfyy+(fxy)2)2(fxy)22(fxy)2)=fxxfyy(fxy)2=det(fxxfxyfyxfyy)=K.R_{1212}=\frac{1}{2}\big(2(f_{xx}f_{yy}+(f_{xy})^2) -2(f_{xy})^2 -2(f_{xy})^2\big)=f_{xx}f_{yy}-(f_{xy})^2=\det \left( \begin{matrix} f_{xx} & f_{xy}\\ f_{yx} & f_{yy} \end{matrix} \right)=K.


Ricci tensor and scalar curvature


Ricci tensor can be defined by

Ric(u,v)=R(ei,u,ei,v),\begin{equation} Ric(u,v)=R(e^i,u,e_i,v), \tag{24.3} \end{equation}

for any vector fields u,vu,v, where eie_i is any vector frame and eie^i the corresponding coframe.

In a Riemannian manifold with the metric gg the components of Ricci tensor are defined by

Ricij=Rikjk=gklRlikj=glkRkjli,Ric_{ij}=R^k_{ikj}=g^{kl}R_{likj}=g^{lk}R_{kjli},

and the scalar curvature by

R=gijRicij.\begin{equation} R=g^{ij}Ric_{ij}. \tag{24.4} \end{equation}

In the case of two-dimensional manifold we have R=2KR=2K. In fact

R=gijRicij=gijglkRkjli.R=g^{ij}Ric_{ij}=g^{ij}g^{lk}R_{kjli}.

From the symmetry properties of RijklR_{ijkl} it follows that in the obtained sum of 242^4 elements only 4 are non-zero:

R=g22g11R1212+g12g21R1221+g21g12R2112+g11g22R2121=g22g11R1212g12g21R1212g21g12R1212+g11g22R1212=2(g11g22(g12)2)R1212=2det(gij)R1212=2det(gij)R1212.R=g^{22}g^{11}R_{1212}+g^{12}g^{21}R_{1221}+ g^{21}g^{12}R_{2112}+g^{11}g^{22}R_{2121}\\ =g^{22}g^{11}R_{1212}-g^{12}g^{21}R_{1212}-g^{21}g^{12}R_{1212}+g^{11}g^{22}R_{1212}\\ =2(g^{11}g^{22}-(g^{12})^2)R_{1212}=2\det (g^{ij})R_{1212}=\frac{2}{\det (g_{ij})}R_{1212}.

Remark in the last calculations the condition gradfx=x0y=y0=0,\text{grad}\, f\,\Big|_{\substack{x=x_0\\y=y_0}}=0, was not used.

If as previously, the coordinates at PP are such that gradfx=x0y=y0=0,\text{grad}\, f\,\Big|_{\substack{x=x_0\\y=y_0}}=0, we have det(gij)x=x0y=y0=1 \det (g_{ij})\Big|_{\substack{x=x_0\\y=y_0}}=1 and R=2KR=2K. Since RR and KK are scalars, and consequently, are coordinate-independent, we conclude that

R=2K\begin{equation} R = 2K \tag{24.5} \end{equation}

at every (non-singular) point of the surface.


Remark. For non-singular surfaces represented locally in the form z=f(x,y)z=f(x,y) (without the condition gradfx=x0y=y0=0\text{grad}\, f\,\Big|_{\substack{x=x_0\\y=y_0}}=0) the Gauss curvature is defined by K=fxxfyy(fxy)2(1+(fx)2+(fy)2)2.K=\frac{f_{xx}f_{yy}-(f_{xy})^2}{(1+(f_x)^2+(f_y)^2)^2}.

Remark. The calculations above give us the formula R1212=R2det(gij).R_{1212}=\frac{R}{2}\det(g_{ij}).

It can be generalized to all components of the tensor RijklR_{ijkl} as follows:

Rijkl=R2(gikgjlgilgjk).R_{ijkl}=\frac{R}{2}(g_{ik}g_{jl}-g_{il}g_{jk}).

In fact, an explicit calculations using the symmetry properties of RijklR_{ijkl} show that

(i,j,k,l)=(1,2,1,2)R2(g11g22g12g21)=R2det(gij)=R1212,(i,j,k,l)=(2,1,1,2)R2(g21g12g22g11)=R2det(gij)=R2112,(i,j,k,l)=(1,2,2,1)R2(g12g21g11g22)=R2det(gij)=R1221,(i,j,k,l)=(2,1,2,1)R2(g22g11g21g12)=R2det(gij)=R2121,\begin{darray}{rcl} (i,j,k,l)=(1,2,1,2)\quad \Rightarrow & \quad \frac{R}{2}(g_{11}g_{22}-g_{12}g_{21})=\frac{R}{2}\det(g_{ij})=R_{1212},\\ (i,j,k,l)=(2,1,1,2)\quad \Rightarrow & \quad \frac{R}{2}(g_{21}g_{12}-g_{22}g_{11})=-\frac{R}{2}\det(g_{ij})=R_{2112},\\ (i,j,k,l)=(1,2,2,1)\quad \Rightarrow & \quad \frac{R}{2}(g_{12}g_{21}-g_{11}g_{22})=-\frac{R}{2}\det(g_{ij})=R_{1221},\\ (i,j,k,l)=(2,1,2,1)\quad \Rightarrow & \quad \frac{R}{2}(g_{22}g_{11}-g_{21}g_{12})=\frac{R}{2}\det(g_{ij})=R_{2121},\\ \end{darray}

and for the remaining sequences of indices, both sides are zero.


Example 24.1

In R2R^2 with g=dxdx+dydyg=dx\otimes dx+dy\otimes dy, we have Rmkli=0R^i_{mkl}=0 and K=R2=0.K=\frac{R}{2}=0.

E.<x,y>=EuclideanSpace() # Euclidean space E^2 print(E.metric().riemann()) # curvature tensor of (1,3)-type E.metric().riemann().disp() # show the curvature tensor
Tensor field Riem(g) of type (1,3) on the Euclidean plane E^2
Riem(g) = 0

The method ricci gives the Ricci tensor:

print(E.metric().ricci()) # Ricci curvature tensor E.metric().ricci().disp() # show the result
Field of symmetric bilinear forms Ric(g) on the Euclidean plane E^2
Ric(g) = 0

The Ricci scalar curvature can be obtained using ricci_scalar method:

E.metric().ricci_scalar().expr() # Ricci scalar curvature
0

Example 24.2

The same can be done without EuclideanSpace command.

%display latex M=Manifold(2,name='R^2',start_index=1) # manifold R2 c_xy.<x,y>=M.chart() # chart on R^2 g = M.metric('g'); # metric on R^2 g[:]=[[1,0],[0,1]] # nonzero components Riem=g.riemann() # curvature (1,3)-type tensor print(Riem) # show information on curv. tensor Riem.disp() # show the curvature tensor
Tensor field Riem(g) of type (1,3) on the 2-dimensional differentiable manifold R^2

Riem(g)=0\displaystyle \mathrm{Riem}\left(g\right) = 0

print(g.ricci()) # Ricci curvature tensor information g.ricci().disp() # show Ricci tensor
Field of symmetric bilinear forms Ric(g) on the 2-dimensional differentiable manifold R^2

Ric(g)=0\displaystyle \mathrm{Ric}\left(g\right) = 0

The Ricci scalar curvature:

g.ricci_scalar().expr() # Ricci scalar curvature

0\displaystyle 0


Example 24.3

For the metric on the sphere S2R3S^2\subset R^3, we have 𝑔=d𝜃d𝜃+sin(𝜃)2d𝜙d𝜙𝑔=d𝜃⊗d𝜃+sin(𝜃)^2d𝜙⊗d𝜙, K=R/2=1.K=R/2=1.

%display latex M = Manifold(3, 'R^3') # R^3 ambient space for S^2 c_xyz.<x,y,z> = M.chart() # chart on R^3 N = Manifold(2, 'N',start_index=1) # sphere S^2 c_sph.<theta,phi>=N.chart() # chart on S^2 psi = N.diff_map(M, (sin(theta)*cos(phi), sin(theta)*sin(phi), cos(theta)), name='psi',latex_name=r'\psi') # embedding S^2 -> R^3 g0=M.metric('g0') # metric g0 on R^3 g0[0,0],g0[1,1],g0[2,2]=1,1,1 # components of g0 g=N.metric('g') # metric on S^2 g.set( psi.pullback(g0) ) # g is the pullback of g0 g.disp() # show g

g=dθdθ+sin(θ)2dϕdϕ\displaystyle g = \mathrm{d} \theta\otimes \mathrm{d} \theta + \sin\left(\theta\right)^{2} \mathrm{d} \phi\otimes \mathrm{d} \phi

Riem=g.riemann() # curvature (1,3)-tensor Riem.display_comp(coordinate_labels=False) # show components

Riem(g)12121212=sin(θ)2Riem(g)12211221=sin(θ)2Riem(g)21122112=1Riem(g)21212121=1\displaystyle \begin{array}{lcl} \mathrm{Riem}\left(g\right)_{\phantom{\, 1}\,2\,1\,2}^{\,1\phantom{\, 2}\phantom{\, 1}\phantom{\, 2}} & = & \sin\left(\theta\right)^{2} \\ \mathrm{Riem}\left(g\right)_{\phantom{\, 1}\,2\,2\,1}^{\,1\phantom{\, 2}\phantom{\, 2}\phantom{\, 1}} & = & -\sin\left(\theta\right)^{2} \\ \mathrm{Riem}\left(g\right)_{\phantom{\, 2}\,1\,1\,2}^{\,2\phantom{\, 1}\phantom{\, 1}\phantom{\, 2}} & = & -1 \\ \mathrm{Riem}\left(g\right)_{\phantom{\, 2}\,1\,2\,1}^{\,2\phantom{\, 1}\phantom{\, 2}\phantom{\, 1}} & = & 1 \end{array}

print(g.ricci()) # Ricci curvature tensor g.ricci().disp() # show Ricci tensor
Field of symmetric bilinear forms Ric(g) on the 2-dimensional differentiable manifold N

Ric(g)=dθdθ+sin(θ)2dϕdϕ\displaystyle \mathrm{Ric}\left(g\right) = \mathrm{d} \theta\otimes \mathrm{d} \theta + \sin\left(\theta\right)^{2} \mathrm{d} \phi\otimes \mathrm{d} \phi

Let us show how to apply (24.3).

First we have to define the frame and coframe fields:

fr=c_sph.frame()[:] # frame cfr=c_sph.coframe()[:] # coframe

next we define the matrix of coefficient of the Ricci tensor field according to (24.3).

Ric_coeff=[[sum([Riem(cfr[i],fr[k],fr[i],fr[l]).expr() for i in range(2)]) for k in range(2)] for l in range(2)] # cf. (24.3) Ric_coeff[:] # Ricci ten. components

[[1,0],[0,sin(θ)2]]\displaystyle \left[\left[1, 0\right], \left[0, \sin\left(\theta\right)^{2}\right]\right]

Finally we define the Ricci tensor:

Ric=N.tensor_field(0,2,'Ric') # Ricci curvature tensor Ric[:]=Ric_coeff # define all components Ric.disp() # show Ricci tensor

Ric=dθdθ+sin(θ)2dϕdϕ\displaystyle Ric = \mathrm{d} \theta\otimes \mathrm{d} \theta + \sin\left(\theta\right)^{2} \mathrm{d} \phi\otimes \mathrm{d} \phi

Ricci scalar curvature:

g.ricci_scalar().expr() # Ricci scalar curvature

2\displaystyle 2

Formula (24.4) can be used as follows:

g.inverse().contract(Ric).trace().expr()

2\displaystyle 2

According to (24.5), the Gaussian curvature is 1.


Example 24.4

Consider the Poincare half-plane y>0y>0 with the metric defined by g11=1y2,  g22=1y2, g_{11}=\frac{1}{y^2},\ \ g_{22}=\frac{1}{y^2}, \ and remaining components equal to zero.

M = Manifold(2, 'M', start_index=1) # Poincare half-plane X.<x,y> = M.chart(coord_restrictions=lambda x,y: y>0) g = M.metric('g') # metric on M g[1,1], g[2,2] = 1/y^2, 1/y^2 # nonzero components of g

Compute (1,3) type curvature tensor:

Riem=g.riemann() # (1,3) type curvature tensor Riem.display_comp(coordinate_labels=False) # show nonzero comp.

Riem(g)12121212=1y2Riem(g)12211221=1y2Riem(g)21122112=1y2Riem(g)21212121=1y2\displaystyle \begin{array}{lcl} \mathrm{Riem}\left(g\right)_{\phantom{\, 1}\,2\,1\,2}^{\,1\phantom{\, 2}\phantom{\, 1}\phantom{\, 2}} & = & -\frac{1}{y^{2}} \\ \mathrm{Riem}\left(g\right)_{\phantom{\, 1}\,2\,2\,1}^{\,1\phantom{\, 2}\phantom{\, 2}\phantom{\, 1}} & = & \frac{1}{y^{2}} \\ \mathrm{Riem}\left(g\right)_{\phantom{\, 2}\,1\,1\,2}^{\,2\phantom{\, 1}\phantom{\, 1}\phantom{\, 2}} & = & \frac{1}{y^{2}} \\ \mathrm{Riem}\left(g\right)_{\phantom{\, 2}\,1\,2\,1}^{\,2\phantom{\, 1}\phantom{\, 2}\phantom{\, 1}} & = & -\frac{1}{y^{2}} \end{array}

and next the Riemannian curvature tensor of type (0,4), using (24.1):

R=M.tensor_field(0,4,'R') # R is (0,4)-type tensor field R[:]=g.contract(Riem)[:] # apply (24.1) R.display_comp(coordinate_labels=False) # show (0,4) type ten. R

R12121212=1y4R12211221=1y4R21122112=1y4R21212121=1y4\displaystyle \begin{array}{lcl} R_{\,1\,2\,1\,2}^{\phantom{\, 1}\phantom{\, 2}\phantom{\, 1}\phantom{\, 2}} & = & -\frac{1}{y^{4}} \\ R_{\,1\,2\,2\,1}^{\phantom{\, 1}\phantom{\, 2}\phantom{\, 2}\phantom{\, 1}} & = & \frac{1}{y^{4}} \\ R_{\,2\,1\,1\,2}^{\phantom{\, 2}\phantom{\, 1}\phantom{\, 1}\phantom{\, 2}} & = & \frac{1}{y^{4}} \\ R_{\,2\,1\,2\,1}^{\phantom{\, 2}\phantom{\, 1}\phantom{\, 2}\phantom{\, 1}} & = & -\frac{1}{y^{4}} \end{array}

Now compute the Ricci curvature tensor:

g.ricci().disp() # Ricci curv. tensor

Ric(g)=1y2dxdx1y2dydy\displaystyle \mathrm{Ric}\left(g\right) = -\frac{1}{y^{2}} \mathrm{d} x\otimes \mathrm{d} x -\frac{1}{y^{2}} \mathrm{d} y\otimes \mathrm{d} y

and Ricci curvature scalar:

g.ricci_scalar().expr() # Ricci scalar curv.

2\displaystyle -2


Example 24.5

Poincare disk is the set   {(x,y)R2:x2+y2<1}  \ \ \{(x,y)\in R^2:x^2+y^2<1\}\ \ with the metric defined by g11=4(1x2y2)2,  g22=4(1x2y2)2  g_{11}=\frac{4}{(1-x^2-y^2)^2},\ \ g_{22}=\frac{4}{(1-x^2-y^2)^2}\ \ and remaining components equal to zero.

M = Manifold(2, 'M', start_index=1) # Poincare disc # Cartesian coordinates on the Poincaré disk: X.<x,y> = M.chart('x:(-1,1) y:(-1,1)', coord_restrictions=lambda x,y: x^2+y^2<1) g = M.metric('g') # metric on M # components of g g[1,1], g[2,2] = 4/(1-x^2-y^2)^2,4/(1-x^2-y^2)^2

Compute (1,3)-type curvature tensor. Since g.riemann() gives an unsimplified result, we simplify the components one by one.

Riem = g.riemann(); # curvature (1,3) type tensor # factor components Riem2=[[[[Riem[a,b,c,d].factor() for a in [1,2]] for b in [1,2]] for c in [1,2]] for d in[1,2]]; R=M.tensor_field(1,3,'R') # tensor field of type (1,3) R[X.frame(),:]=Riem2 # simplified components R.display_comp(coordinate_labels=False) # show R

R12121212=4(x2+y21)2R12211221=4(x2+y21)2R21122112=4(x2+y21)2R21212121=4(x2+y21)2\displaystyle \begin{array}{lcl} R_{\phantom{\, 1}\,2\,1\,2}^{\,1\phantom{\, 2}\phantom{\, 1}\phantom{\, 2}} & = & -\frac{4}{{\left(x^{2} + y^{2} - 1\right)}^{2}} \\ R_{\phantom{\, 1}\,2\,2\,1}^{\,1\phantom{\, 2}\phantom{\, 2}\phantom{\, 1}} & = & \frac{4}{{\left(x^{2} + y^{2} - 1\right)}^{2}} \\ R_{\phantom{\, 2}\,1\,1\,2}^{\,2\phantom{\, 1}\phantom{\, 1}\phantom{\, 2}} & = & \frac{4}{{\left(x^{2} + y^{2} - 1\right)}^{2}} \\ R_{\phantom{\, 2}\,1\,2\,1}^{\,2\phantom{\, 1}\phantom{\, 2}\phantom{\, 1}} & = & -\frac{4}{{\left(x^{2} + y^{2} - 1\right)}^{2}} \end{array}

Ricci curvature tensor:

Ric=g.ricci() # Ricci curvature tensor Ric.apply_map(factor) # factor components Ric.disp() # show Ricci curv.tensor

Ric(g)=4(x2+y21)2dxdx4(x2+y21)2dydy\displaystyle \mathrm{Ric}\left(g\right) = -\frac{4}{{\left(x^{2} + y^{2} - 1\right)}^{2}} \mathrm{d} x\otimes \mathrm{d} x -\frac{4}{{\left(x^{2} + y^{2} - 1\right)}^{2}} \mathrm{d} y\otimes \mathrm{d} y

Ricci curvature scalar:

g.ricci_scalar().expr() # Ricci scalar curvature

2\displaystyle -2


Example 24.6

Consider R2R^2 with the matrix of metric components:

matrix([[1+4*x^2,4*x*y],[4*x*y,1+4*y^2]])

(4x2+14xy4xy4y2+1)\displaystyle \left(\begin{array}{rr} 4 \, x^{2} + 1 & 4 \, x y \\ 4 \, x y & 4 \, y^{2} + 1 \end{array}\right)

N=Manifold(2,name='R^2',start_index=1) # Manifold R^2 X.<x,y>=N.chart() # chart on R^2 g = N.metric('g'); # metric g on R^2 g[:]=[[1+4*x^2,4*x*y],[4*x*y,1+4*y^2]] # components of g Riem = g.riemann(); # (1,3) type curv. tens. R=N.tensor_field(0,4,'R') # (0,4) type curv. tens.

Compute Riemannian (0,4)-type tensor.

R[:]=g.contract(Riem)[:] # use (24.1) R.display_comp(coordinate_labels=False) # show (0,4) t. R

R12121212=44x2+4y2+1R12211221=44x2+4y2+1R21122112=44x2+4y2+1R21212121=44x2+4y2+1\displaystyle \begin{array}{lcl} R_{\,1\,2\,1\,2}^{\phantom{\, 1}\phantom{\, 2}\phantom{\, 1}\phantom{\, 2}} & = & \frac{4}{4 \, x^{2} + 4 \, y^{2} + 1} \\ R_{\,1\,2\,2\,1}^{\phantom{\, 1}\phantom{\, 2}\phantom{\, 2}\phantom{\, 1}} & = & -\frac{4}{4 \, x^{2} + 4 \, y^{2} + 1} \\ R_{\,2\,1\,1\,2}^{\phantom{\, 2}\phantom{\, 1}\phantom{\, 1}\phantom{\, 2}} & = & -\frac{4}{4 \, x^{2} + 4 \, y^{2} + 1} \\ R_{\,2\,1\,2\,1}^{\phantom{\, 2}\phantom{\, 1}\phantom{\, 2}\phantom{\, 1}} & = & \frac{4}{4 \, x^{2} + 4 \, y^{2} + 1} \end{array}

Ricci curvature tensor:

Ric=g.ricci() # Ricci curvature tensor Ric.apply_map(factor) # factor components Ric.disp() # show the result

Ric(g)=4(4x2+1)(4x2+4y2+1)2dxdx+16xy(4x2+4y2+1)2dxdy+16xy(4x2+4y2+1)2dydx+4(4y2+1)(4x2+4y2+1)2dydy\displaystyle \mathrm{Ric}\left(g\right) = \frac{4 \, {\left(4 \, x^{2} + 1\right)}}{{\left(4 \, x^{2} + 4 \, y^{2} + 1\right)}^{2}} \mathrm{d} x\otimes \mathrm{d} x + \frac{16 \, x y}{{\left(4 \, x^{2} + 4 \, y^{2} + 1\right)}^{2}} \mathrm{d} x\otimes \mathrm{d} y + \frac{16 \, x y}{{\left(4 \, x^{2} + 4 \, y^{2} + 1\right)}^{2}} \mathrm{d} y\otimes \mathrm{d} x + \frac{4 \, {\left(4 \, y^{2} + 1\right)}}{{\left(4 \, x^{2} + 4 \, y^{2} + 1\right)}^{2}} \mathrm{d} y\otimes \mathrm{d} y

and Ricci scalar curvature:

factor(g.ricci_scalar().expr()/2) # Ricci curvature scalar

4(4x2+4y2+1)2\displaystyle \frac{4}{{\left(4 \, x^{2} + 4 \, y^{2} + 1\right)}^{2}}


Example 24.7

Consider the embedding of the hyperboloid into R3R^3 defined by   ψ(u,v)=(u,v,u2v2)\ \ \psi(u,v)= (u, v,u^2-v^2). The metric on the hyperboloid can be defined as the pullback ψg0  \psi^*g_0\ \ under ψ\psi where g0g_0 is the standard metric on R3R^3.

%display latex M = Manifold(3, 'R3') # manifold R^3 c_xyz.<x,y,z> = M.chart() # Cart. coord. on R^3 N=Manifold(2,name='R2',start_index=1) # hyperboloid N c_uv.<u,v>=N.chart() # coordinates on N g0 = M.metric('g0'); # standard metr, of R^3 g0[:]=[[1,0,0],[0,1,0],[0,0,1]]; # components of g0 psi = N.diff_map(M, (u, v,u^2-v^2) ,name='psi') # embedding g=N.metric('g') # metric on N g.set(psi.pullback(g0)) # g is pullback of g0 g.disp() # show g

g=(4u2+1)dudu4uvdudv4uvdvdu+(4v2+1)dvdv\displaystyle g = \left( 4 \, u^{2} + 1 \right) \mathrm{d} u\otimes \mathrm{d} u -4 \, u v \mathrm{d} u\otimes \mathrm{d} v -4 \, u v \mathrm{d} v\otimes \mathrm{d} u + \left( 4 \, v^{2} + 1 \right) \mathrm{d} v\otimes \mathrm{d} v

Compute the Riemannian curvature tensor of type (0,4).

Riem = g.riemann(); # curv. (1,3) tensor R=N.tensor_field(0,4,'R') # tensor field (0,4)-type R[:]=g.contract(Riem)[:] # use (24.1) R.display_comp(coordinate_labels=False) # show (0,4) type ten. R

R12121212=44u2+4v2+1R12211221=44u2+4v2+1R21122112=44u2+4v2+1R21212121=44u2+4v2+1\displaystyle \begin{array}{lcl} R_{\,1\,2\,1\,2}^{\phantom{\, 1}\phantom{\, 2}\phantom{\, 1}\phantom{\, 2}} & = & -\frac{4}{4 \, u^{2} + 4 \, v^{2} + 1} \\ R_{\,1\,2\,2\,1}^{\phantom{\, 1}\phantom{\, 2}\phantom{\, 2}\phantom{\, 1}} & = & \frac{4}{4 \, u^{2} + 4 \, v^{2} + 1} \\ R_{\,2\,1\,1\,2}^{\phantom{\, 2}\phantom{\, 1}\phantom{\, 1}\phantom{\, 2}} & = & \frac{4}{4 \, u^{2} + 4 \, v^{2} + 1} \\ R_{\,2\,1\,2\,1}^{\phantom{\, 2}\phantom{\, 1}\phantom{\, 2}\phantom{\, 1}} & = & -\frac{4}{4 \, u^{2} + 4 \, v^{2} + 1} \end{array}