{VERSION 2 3 "DEC ALPHA UNIX" "2.3" } {USTYLETAB {CSTYLE "Maple Input" -1 0 "Courier" 0 1 255 0 0 1 0 1 0 0 1 0 0 0 0 }{CSTYLE "2D Math" -1 2 "Times" 0 1 0 0 0 0 0 0 2 0 0 0 0 0 0 }{CSTYLE "Hyperlink" -1 17 "" 0 1 0 128 128 1 0 0 1 0 0 0 0 0 0 } {CSTYLE "2D Output" 2 20 "" 0 1 0 0 255 1 0 0 0 0 0 0 0 0 0 }{CSTYLE " " -1 256 "" 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 }{PSTYLE "Normal" -1 0 1 {CSTYLE "" -1 -1 "Helvetica" 1 14 0 0 0 0 2 2 2 0 0 0 0 0 0 }0 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "Text Output" -1 2 1 {CSTYLE "" -1 -1 "Courier" 1 10 0 0 255 1 0 0 0 0 0 1 3 0 0 }1 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "" 2 6 1 {CSTYLE "" -1 -1 "" 0 1 0 0 0 0 0 0 0 0 0 0 2 0 0 }0 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "Maple Output" 0 11 1 {CSTYLE "" -1 -1 "" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 }3 3 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "" 11 12 1 {CSTYLE "" -1 -1 "" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 }1 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "R3 Font 0" -1 256 1 {CSTYLE "" -1 -1 "Helvetica" 1 14 0 0 0 0 2 2 2 0 0 0 0 0 0 } 0 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "R3 Font 2" -1 257 1 {CSTYLE "" -1 -1 "Courier" 1 14 0 0 0 0 2 1 2 0 0 0 0 0 0 }0 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "R3 Font 3" -1 258 1 {CSTYLE "" -1 -1 "Courier" 1 12 0 0 0 0 2 2 2 0 0 0 0 0 0 }0 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 } {PSTYLE "" 0 261 1 {CSTYLE "" -1 -1 "" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 } 3 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "" 0 262 1 {CSTYLE "" -1 -1 " " 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 }3 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 } {PSTYLE "" 0 263 1 {CSTYLE "" -1 -1 "" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 } 3 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "" 0 264 1 {CSTYLE "" -1 -1 " " 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 }3 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 } {PSTYLE "" 0 265 1 {CSTYLE "" -1 -1 "" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 } 3 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "" 0 266 1 {CSTYLE "" -1 -1 " " 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 }3 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 } {PSTYLE "" 0 267 1 {CSTYLE "" -1 -1 "" 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 } 3 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }{PSTYLE "" 0 268 1 {CSTYLE "" -1 -1 " " 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 }3 0 0 -1 -1 -1 0 0 0 0 0 0 -1 0 }} {SECT 0 {EXCHG {PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 261 "" 0 "" {TEXT 256 17 "RIEMANN PACKAGE " }}{PARA 262 "" 0 "" {TEXT -1 39 "Tool s to manipulate tensor components, " }}{PARA 263 "" 0 "" {TEXT -1 42 " Applications to General Relativity Theory," }}{PARA 264 "" 0 "" {TEXT -1 33 "Some symbolic manipulation tools." }}{PARA 266 "" 0 "" {TEXT -1 0 "" }}{PARA 265 "" 0 "" {TEXT -1 43 "Renato Portugal/CBPF - portug al@cat.cbpf.br" }}{PARA 267 "" 0 "" {TEXT -1 46 "Sandra L. Sautu/CBPF - sautu@lca1.drp.cbpf.br" }}{PARA 268 "" 0 "" {TEXT -1 24 "version 2 \+ - Aug 18, 1997" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 208 " To load the Riemann package one must first give the path of the directory where the package has been saved. For example, \+ if it is in c:/riemann directory of a microcomputer running DOS or Wi ndows, then:" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 35 "# libname := libnam e, `c:/riemann`:" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 133 "This command can be put in the file maple.ini in the directory c:\\mapleV4\\lib. I n this case it will be processed automatically.\000\000\000\000\000 \000" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 86 "I f it has been saved in the directory /local/Riemann of a computer runn ing UNIX, then:" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 39 "# libname := lib name, `/local/Riemann`:" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 99 "This c ommand can be put in the file .mapleinit in the home directory to be p rocessed automatically." }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 25 " To load the package:" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 64 "with(Riemann); # if not succeeded try: read `/local /Riemann`; " }}{PARA 12 "" 1 "" {XPPMATH 20 "6#7O%&acompG%%amapG%/anti symmetrizeG%&applyG%*bintnamesG%%calcG%&clearG%*clearbintG%*clearcompG %,cleartensorG%'codiffG%%compG%)complistG%,coordinatesG%-dalembertianG %-definetensorG%,entertensorG%&evaltG%%initG%+invariantsG%*ivierbeinG% )lptensorG%(ltensorG%'metricG%(metricVG%$offG%#onG%%pathG%'petrovG%,pr inttensorG%+readmetricG%+readtensorG%-readvierbeinG%+savemetricG%+save tensorG%-savevierbeinG%%showG%(simpfcnG%%sumtG%)switchesG%+symmetrizeG %&tdiffG%%tmapG%)vierbeinG%,viertocoordG" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 125 " In the following ex amples we have chosen, without lost of generality,a space of dimension 2 to perform the calculations." }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 15 " Dimension := 2;" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%*DimensionG\"\"# " }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 112 " Let us begin by the tensor algebra. The tensors can be added , multiplied or contracted by function evalt.\000\000" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 9 "Addition:" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 37 "evalt( T[i,-j] = U[i,-j] + V[i,-j] );" }} {PARA 11 "" 1 "" {XPPMATH 20 "6#/*(%\"TG\"\"\")%!G%\"1GF&&F(6#F)F&,&*( %\"UGF&)F(F)F&&F(F+F&F&*(%\"VGF&)F(F)F&&F(F+F&F&" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#/*(%\"TG\"\"\")%!G%\"1GF&&F(6#\"\"#F&,&*(%\"UGF&)F(F)F& &F(F+F&F&*(%\"VGF&)F(F)F&&F(F+F&F&" }}{PARA 11 "" 1 "" {XPPMATH 20 "6# /*(%\"TG\"\"\"%!G\"\"#&F'6#%\"1GF&,&*(%\"UGF&F'F(&F'F*F&F&*(%\"VGF&F'F (&F'F*F&F&" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#/*(%\"TG\"\"\"%!G\"\"#&F '6#F(F&,&*(%\"UGF&F'F(&F'F*F&F&*(%\"VGF&F'F(&F'F*F&F&" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 15 "Multiplication:" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 30 "evalt( T[i,-j] = U[i]*V[-j] );" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#/*(%\"TG\"\"\")%!G%\"1GF&&F(6#F)F&**%\"UGF&)F(F)F&%\"VG F&&F(F+F&" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#/*(%\"TG\"\"\")%!G%\"1GF& &F(6#\"\"#F&**%\"UGF&)F(F)F&%\"VGF&&F(F+F&" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#/*(%\"TG\"\"\"%!G\"\"#&F'6#%\"1GF&**%\"UGF&F'F(%\"VGF&& F'F*F&" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#/*(%\"TG\"\"\"%!G\"\"#&F'6#F (F&**%\"UGF&F'F(%\"VGF&&F'F*F&" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 12 "Contraction:" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 22 "evalt( T[i,j]*V[-j ] );" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#/*&%*componentG\"\"\")%!G%\"1G F&,&*,%\"TGF&)F(F)F&)F(F)F&%\"VGF&&F(6#F)F&F&*,F,F&)F(F)F&F(\"\"#F/F&& F(6#F4F&F&" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#/*&%*componentG\"\"\"%!G \"\"#,&*,%\"TGF&F'F()F'%\"1GF&%\"VGF&&F'6#F-F&F&*,F+F&F'F(F'F(F.F&&F'6 #F(F&F&" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 212 "The contravariant indices are indicated by positive nam es and the covariant ones by negative names. Repeated indices, one pos itive and the other negative, are summed according to Einstein's summa tion convention." }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 24 " Symmetries\000\000\000\000\000\000\000\000\000" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 218 " The symmetr ies play an important role in tensor calculus. The symmetry of a tenso r must be declared through the function definetensor. Let us suppose t hat T[i,j,k] is antisymmetric in the first and second indices:" }} {PARA 0 "> " 0 "" {MPLTEXT 1 0 40 "definetensor( T[i,j,k], antisymm[1, 2] );" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#**%\"TG\"\"\")%!G%\"iGF%)F'% \"jGF%)F'%\"kGF%" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 " " 0 "" {TEXT -1 223 "The function efinetensor\} creates an internal an tisymmetric table of three indices. This means that internally all ca lculations will use the symmetry of the tensor T[i,j,k] and only the i ndependent components will be used:" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 20 "show( T[-i,-j,-k] );" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#/**%\"TG\" \"\"&%!G6#%\"1GF&&F(6#\"\"#F&&F(F)F&F$" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#/**%\"TG\"\"\"&%!G6#%\"1GF&&F(6#\"\"#F&&F(F,F&F$" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 185 "We can n ote that only the independent components have been printed. We also s tress that the symmetry acts on the covariant indices, even having bee n defined for the contravariant ones." }}{PARA 0 "" 0 "" {TEXT -1 0 " " }}{PARA 0 "" 0 "" {TEXT -1 584 " The allowed symmetries in Rieman n package are: symmetric and antisymmetric in all indices, symmetric o r antisymmetric in any two indices and the symmetry of a symmetric biv ector-tensor. One can also declare a tensor sparse, in this case the c omponents will be initialized to zero. In the present version, the Rie mann package does not allow more than one symmetry. The symmetry in tw o indices is indicated by symm[i,j] where i and j are the positions of the relevant indices. The antisymmetry is indicated by antisymm[i,j] \+ and the symmetry of a bivector-tensor by the name Riemann." }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 93 "The function defi netensor accepts a tensor equation as a definition of a tensor. For ex ample:" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 50 "definetensor( T[i,j] = rh o*V[i]*V[j], symm[1,2] );" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#/*(%\"TG \"\"\")%!G%\"iGF&)F(%\"jGF&*,%$rhoGF&%\"VGF&)F(F)F&F.F&)F(F+F&" }}} {EXCHG {PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 149 "I n this case, when one lowers or raises any index of the tensor T[i,j], the same index will be lowered or raised on the right hand side. For \+ example:" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 16 "show( T[i,-j] );" }} {PARA 11 "" 1 "" {XPPMATH 20 "6#/*(%\"TG\"\"\")%!G%\"1GF&&F(6#F)F&*,%$ rhoGF&%\"VGF&)F(F)F&F.F&&F(F+F&" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#/*( %\"TG\"\"\")%!G%\"1GF&&F(6#\"\"#F&*,%$rhoGF&%\"VGF&)F(F)F&F/F&&F(F+F& " }}{PARA 11 "" 1 "" {XPPMATH 20 "6#/*(%\"TG\"\"\"%!G\"\"#&F'6#%\"1GF& *,%$rhoGF&%\"VGF&F'F(F.F&&F'F*F&" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#/* (%\"TG\"\"\"%!G\"\"#&F'6#F(F&*,%$rhoGF&%\"VGF&F'F(F-F&&F'F*F&" }}} {EXCHG {PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 677 "F or everything to work out well, one must have just tensors in the righ t hand side for the indices be raised or lowered correctly. The Rieman n package allows one to use functions of the indices in the right hand side, but much care should be taken mainly when the indices are runni ng from zero to the dimension minus one. Riemann gives an error messag e if the indices of a tensor equation do not match. The free indices o f the left hand side must be equal and of the same type as the free in dices of the right hand side. It is possible through the option noiv ( no index verification) to override this rule. This option can be used \+ in the functions definetensor, evalt and calc." }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 272 "When one uses a tensor e quation inside the function definetensor, it is not necessary to calcu late the components. To print a component is enough for Riemann to cal culate and store the result in the internal table. A new definition wi ll clear all the previous assignments." }}{PARA 0 "" 0 "" {TEXT -1 0 " " }}{PARA 0 "" 0 "" {TEXT -1 108 "It is possible to calculate the comp onents of a tensor or to give values to them after defining the tensor : " }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 44 "definetensor( epsilon[i,j], a ntisymmetric );" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#*(%(epsilonG\"\"\") %!G%\"iGF%)F'%\"jGF%" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 20 "cal c( _ = 1, noiv );" }}{PARA 6 "" 1 "" {TEXT -1 26 "Calculated epsilo n[i,j]" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 10 "show( _ );" }} {PARA 11 "" 1 "" {XPPMATH 20 "6#/*(%(epsilonG\"\"\")%!G%\"1GF&F(\"\"#F &" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 441 "The underscore refers to the last tensor used. The option noiv te lls to the function calc not to verify the matching of the indices in \+ a tensor equation. Note that in the above example, epsilon[i,j] has be en defined with no formula. In the present case, just the contravarian t components have been calculated. The mixed and the covariant ones h ave been let unassigned. One must define the tensor before assigning v alues to their components." }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 91 " To assign a value to only one component one can \+ use the function acomp (assign component):" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 23 "acomp(epsilon[1,2]=-1);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 19 "show(epsilon[i,j]);" }}{PARA 11 "" 1 "" {XPPMATH 20 " 6#/*(%(epsilonG\"\"\")%!G%\"1GF&F(\"\"#!\"\"" }}}{EXCHG {PARA 0 "" 0 " " {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 67 "To define more than one tensor one must put each of them in a list:" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 28 "definetensor([v[i]],[u[i]]);" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 48 "Now we show examples o f an interactive entering:" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 18 "enter tensor(v[i]);" }}}{EXCHG {PARA 0 "enter component v[1] :" 0 "" {MPLTEXT 1 0 2 "a;" }}}{EXCHG {PARA 0 "enter component v[2] :" 0 "" {MPLTEXT 1 0 2 "b;" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#/*&%\"vG\"\"\")% !G%\"1GF&%\"aG" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#/*&%\"vG\"\"\"%!G\" \"#%\"bG" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 19 "entertensor(u[- i]);" }}}{EXCHG {PARA 0 "enter component u[-1] :" 0 "" {MPLTEXT 1 0 2 "m;" }}}{EXCHG {PARA 0 "enter component u[-2] :" 0 "" {MPLTEXT 1 0 2 " n;" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#/*&%\"uG\"\"\"&%!G6#%\"1GF&%\"mG " }}{PARA 11 "" 1 "" {XPPMATH 20 "6#/*&%\"uG\"\"\"&%!G6#\"\"#F&%\"nG" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 19 "evalt( v[i]+u[i] );" }} {PARA 11 "" 1 "" {XPPMATH 20 "6#/*&%*componentG\"\"\")%!G%\"1GF&,&%\"a GF&*&%\"uGF&)F(F)F&F&" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#/*&%*componen tG\"\"\"%!G\"\"#,&%\"bGF&*&%\"uGF&F'F(F&" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 19 "evalt( v[i]*u[j] );" }}{PARA 11 "" 1 "" {XPPMATH 20 " 6#/*(%*componentG\"\"\")%!G%\"1GF&)F(F)F&*(%\"aGF&%\"uGF&)F(F)F&" }} {PARA 11 "" 1 "" {XPPMATH 20 "6#/*(%*componentG\"\"\")%!G%\"1GF&F(\"\" #*(%\"aGF&%\"uGF&F(F*" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#/*(%*componen tG\"\"\"%!G\"\"#)F'%\"1GF&*(%\"bGF&%\"uGF&)F'F*F&" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#/*(%*componentG\"\"\"%!G\"\"#F'F(*(%\"bGF&%\"uGF&F'F(" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 18 "evalt(v[i]*u[-i]);" }} {PARA 11 "" 1 "" {XPPMATH 20 "6#,&*&%\"aG\"\"\"%\"mGF&F&*&%\"bGF&%\"nG F&F&" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 0 " " }}{PARA 0 "" 0 "" {TEXT -1 54 " Applying a Function to all Compo nents of a Tensor" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 1023 " To apply a function to all components of a tensor, \+ one can use the functions tmap (tensor map) or amap (assign map). The first one performs the calculations without assigning the results. It is useful for the user when he is making tries until an interesting r esult is obtained. Then, he can assign the result using the function a map. This function does the same of tmap with the difference of assign ing the results. The function tmap is also useful to apply functions t hat returns values that cannot be assigned to a variable, such as late xtensor. The syntax of tmap and amap is the same as Maple map function . The first argument is a function to be applied to the components of \+ the tensor that comes in the second argument. If the function has extr a arguments, they come as the third and following arguments. There is a difference from Maple map function and the functions tmap or amap. When one uses a tensor equation, tmap will apply the function just in the right hand side of the equation. Let us see examples:" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 34 "tmap( expand, U[i]=(a+b)^2*V[i] );" }} {PARA 11 "" 1 "" {XPPMATH 20 "6#/*&%\"UG\"\"\")%!G%\"1GF&,(*(%\"VGF&)F (F)F&%\"aG\"\"#F&**F,F&F-F&F.F&%\"bGF&F/*(F,F&F-F&F1F/F&" }}{PARA 11 " " 1 "" {XPPMATH 20 "6#/*&%\"UG\"\"\"%!G\"\"#,(*(%\"VGF&F'F(%\"aGF(F&** F+F&F'F(F,F&%\"bGF&F(*(F+F&F'F(F.F(F&" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 13 "show( U[i] );" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#/*&% \"UG\"\"\")%!G%\"1GF&F$" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#/*&%\"UG\" \"\"%!G\"\"#F$" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 33 "defineten sor( P[i]=exp(x)*V[i] );" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#/*&%\"PG\" \"\")%!G%\"iGF&*(-%$expG6#%\"xGF&%\"VGF&)F(F)F&" }}}{EXCHG {PARA 0 "> \+ " 0 "" {MPLTEXT 1 0 23 "tmap( taylor, P[i], x);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#/*&%*componentG\"\"\")%!G%\"1GF&+1%\"xG&%\"VG6#F&\"\"!F ,\"\"\",$F,#F&\"\"#\"\"#,$F,#F&\"\"'\"\"$,$F,#F&\"#C\"\"%,$F,#F&\"$?\" \"\"&-%\"OGF.\"\"'" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#/*&%*componentG \"\"\"%!G\"\"#+1%\"xG&%\"VG6#F(\"\"!F+\"\"\",$F+#F&F(\"\"#,$F+#F&\"\"' \"\"$,$F+#F&\"#C\"\"%,$F+#F&\"$?\"\"\"&-%\"OG6#F&\"\"'" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 111 "Note tha t the components of U[i] have not been changed since the function tmap does not assign the results.\000\000\000\000" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 43 "tmap( normal, U[i]=V[i]/(a+b)^2, expanded);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#/*&%\"UG\"\"\")%!G%\"1GF&*(%\"VGF&)F(F)F&,(* $%\"aG\"\"#F&*&F/F&%\"bGF&F0*$F2F0F&!\"\"" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#/*&%\"UG\"\"\"%!G\"\"#*(%\"VGF&F'F(,(*$%\"aGF(F&*&F-F&% \"bGF&F(*$F/F(F&!\"\"" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 28 "Next com mand gives an error:" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 34 "amap( expan d, U[i]=(a+b)^2*V[i] );" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#/*&%\"UG\" \"\")%!G%\"1GF&,(*(%\"VGF&)F(F)F&%\"aG\"\"#F&**F,F&F-F&F.F&%\"bGF&F/*( F,F&F-F&F1F/F&" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#/*&%\"UG\"\"\"%!G\" \"#,(*(%\"VGF&F'F(%\"aGF(F&**F+F&F'F(F,F&%\"bGF&F(*(F+F&F'F(F.F(F&" }} }{EXCHG {PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 31 "W e need to define the tensor U:" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 19 "d efinetensor(U[i]);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#*&%\"UG\"\"\")%! G%\"iGF%" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 34 "amap( expand, U [i]=(a+b)^2*V[i] );" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#/*&%\"UG\"\"\") %!G%\"1GF&,(*(%\"VGF&)F(F)F&%\"aG\"\"#F&**F,F&F-F&F.F&%\"bGF&F/*(F,F&F -F&F1F/F&" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#/*&%\"UG\"\"\"%!G\"\"#,(* (%\"VGF&F'F(%\"aGF(F&**F+F&F'F(F,F&%\"bGF&F(*(F+F&F'F(F.F(F&" }}} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 11 "show(U[i]);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#/*&%\"UG\"\"\")%!G%\"1GF&,(*(%\"VGF&)F(F)F&%\"aG\" \"#F&**F,F&F-F&F.F&%\"bGF&F/*(F,F&F-F&F1F/F&" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#/*&%\"UG\"\"\"%!G\"\"#,(*(%\"VGF&F'F(%\"aGF(F&**F+F&F'F (F,F&%\"bGF&F(*(F+F&F'F(F.F(F&" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 0 " " }}{PARA 0 "" 0 "" {TEXT -1 89 "Now the components U[i] has been chan ged. To clear the components use the function clear:" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 12 "clear(U[i]);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 11 "show(U[i]);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#/*&%\" UG\"\"\")%!G%\"1GF&F$" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#/*&%\"UG\"\" \"%!G\"\"#F$" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 " " {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 18 " The Interface" }} {PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 172 " The interface of Riemann package is controlled mainly by the function pri nttensor. This function raises the positive indices and lowers the neg ative ones. For example:" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 23 "printte nsor( T[i,-j] );" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#*(%\"TG\"\"\")%!G% \"iGF%&F'6#%\"jGF%" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 159 "There are many types of output allowed in Rieman n. They can be controlled by switches that can be turned on or off by \+ the commands on or off. The switches are:" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 49 "printtensor - normal printing of t he tensor\000\000\000\000\000\000" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }} {PARA 0 "" 0 "" {TEXT -1 54 "ltensor - printing the tensor as indexed \+ variables\000\000\000\000" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 " " 0 "" {TEXT -1 61 "lptensor - printing the tensor in Maple lprint for mat\000\000\000\000\000\000\000\000" }}{PARA 0 "" 0 "" {TEXT -1 0 "" } }{PARA 0 "" 0 "" {TEXT -1 55 "latextensor - printing the tensor in lat ex format\000\000\000\000\000\000" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }} {PARA 0 "" 0 "" {TEXT -1 64 "CoordIndices - printing the indices by th e coordinate name\000\000\000\000\000\000" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 72 "ZeroIndex - printing the indices r unning from 0 to Dimension-1\000\000\000\000\000\000\000\000\000\000" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 79 "Display Tensor - inhibits the printing of the results if it is in off mode\000 \000\000\000\000\000" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 " " {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 113 "For example, when the \+ switch ZeroIndex is on, the indices are printed in the range zero to D imension minus one:\000\000" }}{PARA 2 "" 0 "" {TEXT -1 1 "\n" }} {PARA 0 "> " 0 "" {MPLTEXT 1 0 14 "on(ZeroIndex);" }}}{EXCHG {PARA 0 " > " 0 "" {MPLTEXT 1 0 31 "evalt( T[i] = g[i,j] * T[-j] );" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#/*&%\"TG\"\"\")%!G%\"0GF&,&*,%\"gGF&)F(F)F&)F(F )F&F%F&&F(6#F)F&F&*,F,F&)F(F)F&)F(%\"1GF&F%F&&F(6#F4F&F&" }}{PARA 11 " " 1 "" {XPPMATH 20 "6#/*&%\"TG\"\"\")%!G%\"1GF&,&*,%\"gGF&)F(F)F&)F(% \"0GF&F%F&&F(6#F/F&F&*,F,F&)F(F)F&)F(F)F&F%F&&F(6#F)F&F&" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 15 "off(ZeroIndex);" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 212 "\nThe zero index is a special case, since it can not be used as a covariant index. When ZeroIndex is on, the capital le tter O must be used instead of zero. If the number zero is used, a mes sage of error is printed." }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 " " 0 "" {TEXT -1 237 "The switches ltensor, lptensor and latextensor ca n be used as commands to print the desired form just one time, like pr inttensor command. To apply these procedure to all components of a ten sor, the tmap command must be used. For example:" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 45 "tmap( lptensor, T[-i,-j] = rho*v[-i]*v[-j] );" }} {PARA 6 "" 1 "" {TEXT -1 22 "T[-1,-1] = rho*v[-1]^2" }}{PARA 6 "" 1 " " {TEXT -1 26 "T[-1,-2] = rho*v[-1]*v[-2]" }}{PARA 6 "" 1 "" {TEXT -1 22 "T[-2,-2] = rho*v[-2]^2" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 164 "Th e switch DiffAlias change the output of Maple diff function. The deriv ative of a function with respect a name is printed as the function col lon name, for example:" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 14 "on(DiffAl ias);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 27 "diff(f(r,theta), r , theta);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#&%\"fG6$%$,~rG%&thetaG" } }}{EXCHG {PARA 0 "" 0 "" {TEXT -1 57 "The switch affect all derivative s based on diff command. " }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 " " 0 "" {TEXT -1 59 "The function switches furnishes the status of all \+ switches:" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 11 "switches();" }}{PARA 6 "" 1 "" {TEXT -1 175 "CoordIndices - off\nDiffAlias - on\nDispl ayTensor - on\niv - on\nlatex - off\nlptensor \+ - off\nltensor - off\nprinttensor - on\nZeroIndex - off" } }}{EXCHG {PARA 0 "" 0 "" {TEXT -1 69 "Note the change on the switch Di ffAlias due to the following command:" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 15 "off(DiffAlias);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 11 "sw itches();" }}{PARA 6 "" 1 "" {TEXT -1 176 "CoordIndices - off\nDiffAl ias - off\nDisplayTensor - on\niv - on\nlatex - off\nlptensor - off\nltensor - off\nprinttensor - on\nZe roIndex - off" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 " " 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 41 " Expressions w ith Free Indices\000\000\000\000\000\000\000" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 174 " Although the present vers ion of Riemann package deals with tensors through their components, th ere are some commands that returns tensors with free indices. For exam ple:" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 15 "Dimension := 4:" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 36 "sumt( g[-mu,-sigma] * T[sigma,nu] ) ;" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#,**.%\"gG\"\"\"&%!G6#%#muGF&&F(6# %\"1GF&%\"TGF&)F(F-F&)F(%#nuGF&F&*.F%F&&F(F)F&&F(6#\"\"#F&F.F&F(F6)F(F 1F&F&*.F%F&&F(F)F&&F(6#\"\"$F&F.F&F(F<)F(F1F&F&*.F%F&&F(F)F&&F(6#\"\"% F&F.F&F(FB)F(F1F&F&" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 140 "Note that the \+ result has two free indices: mu and nu. This expression can be used in other functions of the package for future calculations." }}{PARA 0 " " 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 " " {TEXT -1 344 "The function codiff returns the covariant derivative u sing a connection which name is Gamma by default. This name can be cha nged by assigning another one to the variable ChristoffelName. The coo rdinates has the name x by default. The coordinates has no values at t he beginning, but one can give values to them through the function coo rdinates. " }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 26 "codiff( T[i,j,-k], X[ l] );" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#,*-&%&tdiffG6#%\"lG6#**%\"TG \"\"\")%!G%\"iGF,)F.%\"jGF,&F.6#%\"kGF,F,*2%&GammaGF,)F.F/F,&F.6#%#_xG F,&F.F'F,F+F,)F.F:F,)F.F1F,&F.F3F,F,*2F6F,)F.F1F,&F.F9F,&F.F'F,F+F,)F. F/F,)F.F:F,&F.F3F,F,*2F6F,)F.F:F,&F.F3F,&F.F'F,F+F,)F.F/F,)F.F1F,&F.F9 F,!\"\"" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 289 "The function tdiff (tens or differentiation) applies the Maple diff function to all components \+ of a tensor. This operator is a kind of inert differentiation operato r. It will be substituted by Maple diff function during the calculatio ns. The same happens with all functions beginning by t." }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 45 " The coordinates and the metric\000\000\000\000\000\000\000 \000\000\000" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 133 " It is possible to work with coordinates in Riemann packag e. The names for the coordinates are given by the function coordinates :" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 13 "Dimension:=3;" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#>%*DimensionG\"\"$" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 25 "coordinates(r,theta,phi);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#%5The~coordinates~are:G" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#/*&%\"XG\"\"\")%!G%\"1GF&%\"rG" }}{PARA 11 "" 1 "" {XPPMATH 20 " 6#/*&%\"XG\"\"\"%!G\"\"#%&thetaG" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#/* &%\"XG\"\"\"%!G\"\"$%$phiG" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 0 "" }} {PARA 0 "" 0 "" {TEXT -1 53 "Now the indices are indicated by the coor dinate name:" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 27 "evalt( V[i] = alpha *R[i] );" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#/*&%\"VG\"\"\")%!G%\"rGF&* (%&alphaGF&%\"RGF&)F(F)F&" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#/*&%\"VG \"\"\")%!G%&thetaGF&*(%&alphaGF&%\"RGF&)F(F)F&" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#/*&%\"VG\"\"\")%!G%$phiGF&*(%&alphaGF&%\"RGF&)F(F)F&" } }}{EXCHG {PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 150 "One can define a symmetric metric tensor in the space. The component \+ of the metric must be given by the function metric. It can be done int eractively:" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 9 "metric();" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#% " 0 "" {MPLTEXT 1 0 33 "metric ( 1, r^2, r^2*sin(theta) );" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#%BThe~c omponents~of~the~metric~are:G" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#/*(% \"gG\"\"\"&%!G6#%\"rGF&&F(F)F&F&" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#/* (%\"gG\"\"\"&%!G6#%&thetaGF&&F(F)F&*$%\"rG\"\"#" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#/*(%\"gG\"\"\"&%!G6#%$phiGF&&F(F)F&*&%\"rG\"\"#-%$sinG6 #%&thetaGF&" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 39 "Let us define the \+ vector V = [0, 0, 1]:" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 19 "definetens or(V[i]);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#*&%\"VG\"\"\")%!G%\"iGF% " }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 14 "acomp(V[1]=0);" }}} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 14 "acomp(V[2]=0);" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 14 "acomp(V[3]=1);" }}}{EXCHG {PARA 0 " > " 0 "" {MPLTEXT 1 0 11 "show(V[i]);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#/*&%\"VG\"\"\")%!G%$phiGF&F&" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 64 "Now the covariant component will be \+ calculated using the metric:" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 12 "sho w(V[-i]);" }}{PARA 11 "" 1 "" {XPPMATH 20 "6#/*&%\"VG\"\"\"&%!G6#%$phi GF&*&%\"rG\"\"#-%$sinG6#%&thetaGF&" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 29 "This result is equivalent to:" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 27 "evalt(V[-i]=g[-i,-j]*V[j]);" }} {PARA 11 "" 1 "" {XPPMATH 20 "6#/*&%\"VG\"\"\"&%!G6#%$phiGF&*&%\"rG\" \"#-%$sinG6#%&thetaGF&" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 18 "o ff(CoordIndices);" }}}{EXCHG {PARA 0 "" 0 "" {TEXT -1 18 "\n\n\n \+ SUMMARY" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 47 "- To give values to the components of a tensor:" }}{PARA 0 "" 0 " " {TEXT -1 39 "\nacomp - assign a value to a component " }}{PARA 0 "" 0 "" {TEXT -1 48 "calc - calculate components through an equation " }} {PARA 0 "" 0 "" {TEXT -1 53 "definetensor - define a tensor through a n equation " }}{PARA 0 "" 0 "" {TEXT -1 41 "entertensor - assign valu es interactively" }}{PARA 0 "" 0 "" {TEXT -1 47 "coordinates - assign \+ values to the coordinates " }}{PARA 0 "" 0 "" {TEXT -1 37 "metric - as sign values to the metric " }}{PARA 0 "" 0 "" {TEXT -1 50 "metricV - a ssign values to the metric in vierbein " }}{PARA 0 "" 0 "" {TEXT -1 58 "vierbein - assign values to the components of the vierbein" }} {PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 40 "- To apply a function to the components:" }} {PARA 0 "" 0 "" {TEXT -1 55 "\ntmap - apply a function without assigni ng the results " }}{PARA 0 "" 0 "" {TEXT -1 46 "amap - apply a functio n assigning the results " }}{PARA 0 "" 0 "" {TEXT -1 21 "\n\n- To clea r tensors:" }}{PARA 0 "" 0 "" {TEXT -1 1 "`" }}{PARA 0 "" 0 "" {TEXT -1 62 "clear - clear all components of a tensor without undefining it " }}{PARA 0 "" 0 "" {TEXT -1 74 "clearcomp - clear one component or th e components specified by the indices" }}{PARA 0 "" 0 "" {TEXT -1 58 " cleartensor - undefine the tensor and clear all components" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 " " {TEXT -1 27 "- To differentiate tensors:" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 31 "tdiff - partial differentiation " }}{PARA 0 "" 0 "" {TEXT -1 34 "codiff - covariant differentiation" } }{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }} {PARA 0 "" 0 "" {TEXT -1 30 "- To save and to read tensors:" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 39 "savemetric - wr ite a metric into a file" }}{PARA 0 "" 0 "" {TEXT -1 51 "readmetric - \+ read a metric into the current session" }}{PARA 0 "" 0 "" {TEXT -1 0 " " }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 27 "- To \+ obtain the components:" }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 27 "comp - return one component" }}{PARA 0 "" 0 "" {TEXT -1 44 "complist - return the list of all components" }}{PARA 0 " " 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 17 " FINAL NOTES " }}{PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 82 "1. Fo r more details about any function, use the help on line: ?function_nam e and ?" }{HYPERLNK 17 "Riemann" 2 "riemann" "" }{TEXT -1 1 "." }} {PARA 0 "" 0 "" {TEXT -1 0 "" }}{PARA 0 "" 0 "" {TEXT -1 127 "2. For m ore details about the applications to General Theory of Relativity, s ee the worksheets Riemann2.mws and Riemann3.mws. " }}}}{MARK "0 1 0" 16 }{VIEWOPTS 1 1 0 1 1 1803 }