(*********************************************************************** Mathematica-Compatible Notebook This notebook can be used on any computer system with Mathematica 3.0, MathReader 3.0, or any compatible application. The data for the notebook starts with the line of stars above. To get the notebook into a Mathematica-compatible application, do one of the following: * Save the data starting with the line of stars above into a file with a name ending in .nb, then open the file inside the application; * Copy the data starting with the line of stars above to the clipboard, then use the Paste menu command inside the application. Data for notebooks contains only printable 7-bit ASCII and can be sent directly in email or through ftp in text mode. Newlines can be CR, LF or CRLF (Unix, Macintosh or MS-DOS style). NOTE: If you modify the data for this notebook not in a Mathematica- compatible application, you must delete the line below containing the word CacheID, otherwise Mathematica-compatible applications may try to use invalid cache data. For more information on notebooks and Mathematica-compatible applications, contact Wolfram Research: web: http://www.wolfram.com email: info@wolfram.com phone: +1-217-398-0700 (U.S.) Notebook reader applications are available free of charge from Wolfram Research. ***********************************************************************) (*CacheID: 232*) (*NotebookFileLineBreakTest NotebookFileLineBreakTest*) (*NotebookOptionsPosition[ 576159, 18384]*) (*NotebookOutlinePosition[ 577707, 18435]*) (* CellTagsIndexPosition[ 577603, 18428]*) (*WindowFrame->Normal*) Notebook[{ Cell[CellGroupData[{ Cell[TextData[{ StyleBox["\n", FontSize->12], "\t\t\n", StyleBox["RIEMANNIAN GEOMETRY & TENSOR CALCULUS\n", FontSize->24, FontWeight->"Bold"], StyleBox[ "A set of functions for tensor calculations in Riemannian Geometry and \ General Relativity\n", FontSize->16] }], "Text", ShowGroupOpenCloseIcon->True, TextAlignment->Center, TextJustification->0, FontColor->RGBColor[0, 0, 1]], Cell["version 3.5.1 - June 2007", "Text", TextAlignment->Center, TextJustification->0, FontFamily->"Times", FontSize->14, FontSlant->"Italic"], Cell[TextData[{ StyleBox["\n", FontWeight->"Bold", FontSlant->"Italic"], ButtonBox["S. Bonanos", ButtonData:>{ URL[ "http://www.inp.demokritos.gr/~sbonano/SB.html"], None}, ButtonStyle->"Hyperlink"], StyleBox["\n", FontWeight->"Bold", FontSlant->"Italic"], StyleBox["\n", FontWeight->"Bold"], StyleBox[ButtonBox["Institute of Nuclear Physics", ButtonData:>{ URL[ "http://www.inp.demokritos.gr/"], None}, ButtonStyle->"Hyperlink"], FontWeight->"Bold", FontSlant->"Italic"], StyleBox[", ", FontWeight->"Bold", FontSlant->"Italic"], StyleBox[ButtonBox["NCSR \"Demokritos\"", ButtonData:>{ URL[ "http://www.demokritos.gr/index_muk.asp"], None}, ButtonStyle->"Hyperlink"], FontSlant->"Italic"], StyleBox[", \nAghia Paraskevi 15310, Greece. ", FontWeight->"Bold", FontSlant->"Italic"], StyleBox["\n", FontSize->14, FontWeight->"Bold", FontSlant->"Italic"], StyleBox["\n", FontWeight->"Bold"], "Please send comments, suggestions, bug reports to: ", ButtonBox["sbonano@inp.demokritos.gr", ButtonData:>{ URL[ "mailto:sbonano@inp.demokritos.gr"], None}, ButtonStyle->"Hyperlink"], StyleBox[" \t", FontWeight->"Bold"] }], "Text", TextAlignment->Center, TextJustification->0, FontFamily->"Times", FontSize->16] }, Closed]], Cell[TextData["\[CapitalDelta]\[Omega]\[Rho]\[Epsilon]", Cell[BoxData[ StyleBox[\(\[Alpha]\&`\), FontFamily->"Times"]]], "\[Nu] \[Epsilon]\[Lambda]", Cell[BoxData[ StyleBox[\(\[Alpha]\&'\), FontFamily->"Times"]]], "\[Beta]\[Epsilon]\[Tau]\[Epsilon], \[Delta]\[Omega]\[Rho]\[Epsilon]", Cell[BoxData[ StyleBox[\(\[Alpha]\&`\), FontFamily->"Times"]]], "\[Nu] \[Delta]", Cell[BoxData[ StyleBox[\(o\&'\), FontFamily->"Times"]]], "\[Tau]\[Epsilon]."], "Text", TextAlignment->Center, TextJustification->0, FontFamily->"Helvetica", FontSize->24, FontColor->GrayLevel[1]], Cell[CellGroupData[{ Cell[TextData[StyleBox[" 1 Instructions", FontWeight->"Bold"]], "Section", ShowGroupOpenCloseIcon->True, FontSize->24, FontColor->RGBColor[0, 0, 1]], Cell[CellGroupData[{ Cell[" 1.0 Introduction", "Subsection", ShowGroupOpenCloseIcon->True, FontSize->16], Cell[TextData[{ StyleBox["\t", FontWeight->"Bold"], "This package allows calculations in Riemannian Geometry by defining all \ basic tensors and tensor operations. Tensors are represented as nested lists \ of their components in a particular frame (default = coordinate frame). \ Functions are defined for Raising/Lowering indices, Contracting (multiple) \ indices on one (or between two) tensors and for Covariant Differentiation. \ One can also use standard ", StyleBox["Mathematica", FontSlant->"Italic"], " functions like ", StyleBox["Dot", FontFamily->"Courier"], " or ", StyleBox["Outer", FontFamily->"Courier"], " (giving tensor products), and ", StyleBox["Transpose", FontFamily->"Courier"], " (index rearrangement) to create new (lists representing) tensors. " }], "Text", FontSize->16], Cell[TextData[{ "\tGiven a metric and a set of coordinates, the main routine in the package \ computes explicit expressions for all common Riemannian Geometry tensors \ (Riemann, Ricci, Einstein, Weyl) and tests if the space belongs to any of the \ following categories: ", StyleBox["Flat", FontSlant->"Italic"], ", ", StyleBox["Conformally Flat", FontSlant->"Italic"], ", ", StyleBox["Ricci Flat", FontSlant->"Italic"], ", ", StyleBox["Einstein Space", FontSlant->"Italic"], " or ", StyleBox["Space of Constant Curvature", FontSlant->"Italic"], ". Each tensor is stored as a nested list under an appropriate global name. \ One can optionally specify a frame (if different from the coordinate frame) \ with respect to which tensor components are to be computed. " }], "Text", FontSize->16] }, Open ]], Cell[CellGroupData[{ Cell[" 1.1 Basic Input /Output & Notation", "Subsection", ShowGroupOpenCloseIcon->True, FontSize->16], Cell[TextData[{ StyleBox["\t", FontWeight->"Bold"], "To define the geometry, begin by computing all basic Riemannian Geometry \ tensors for a particular metric. To do this:\n", StyleBox["\t", FontWeight->"Bold"], "(0) Evaluate section ", StyleBox["2 RG&TC-Code", FontWeight->"Bold"], "\nOpen a new notebook and\n\t(1) Define a list symbols (coordinate names) \ and give it a name -- say ", StyleBox["xIN", FontFamily->"Courier", FontSize->18, FontWeight->"Bold"], StyleBox["=", FontFamily->"Courier", FontSize->18], StyleBox["{t,r,\[Theta],\[Phi]};", FontFamily->"Courier"], "\n\t(2) Define a symmetric matrix (list of lists) of functions of the \ coordinates (the metric) and give it a name -- say \n", StyleBox["gIN", FontFamily->"Courier", FontWeight->"Bold"], StyleBox[ "={{1-2M/r,0,0,0},{0,-1/(1-2M/r),0,0},{0,0,-r^2,0},{0,0,0,-(r^2 \ Sin[\[Theta]]^2)}};", FontFamily->"Courier"], "\n\t(3) Assign appropriate simplification rules to the global list ", StyleBox["simpRules", FontFamily->"Courier", FontSize->18, FontWeight->"Bold"], " as needed (see Examples and Usage Tips). For example: ", StyleBox["simpRules={", FontFamily->"Courier"], Cell[BoxData[ StyleBox[\(Cos[\[Theta]]^2 + Sin[\[Theta]]^2 -> 1\), FontFamily->"Courier"]]], StyleBox["};", FontFamily->"Courier"], "\n\t(4) Evaluate ", StyleBox["RGtensors[gIN,xIN]", FontFamily->"Courier", FontSize->18, FontWeight->"Bold"] }], "Text", FontSize->16], Cell[CellGroupData[{ Cell[TextData[{ "\t", StyleBox["RGtensors", FontWeight->"Bold"], " computes all common Riemannian Geometry tensors, printing messages along \ the way. It also tests if the space is ", StyleBox["Flat,", FontSlant->"Italic"], " ", StyleBox["Conformally Flat", FontSlant->"Italic"], ", ", StyleBox["Ricci Flat", FontSlant->"Italic"], ", ", StyleBox["Einstein Space", FontSlant->"Italic"], " or ", StyleBox["Space of Constant Curvature", FontSlant->"Italic"], " and, if yes, prints corresponding messages. When it is finished, the \ following \"tensors\" - nested lists - are stored in memory and can be used \ in further calculations (the letters U, d in the tensor names serve as \ mnemonic devices for the position - ", StyleBox["Up", FontSlant->"Italic"], " or ", StyleBox["down", FontSlant->"Italic"], " - of the relevant indices) :" }], "Text", ShowGroupOpenCloseIcon->True, FontSize->16], Cell[TextData[{ "\t", StyleBox["gdd", FontFamily->"Courier"], " (covariant form of the metric tensor), with components gdd[[a,b]] = ", Cell[BoxData[ \(g\_ab\)]] }], "Text", FontSize->16], Cell[TextData[{ "\t", StyleBox["gUU", FontFamily->"Courier"], " (contravariant form of the metric tensor), with components gUU[[a,b]] = ", Cell[BoxData[ \(g\^ab\)]] }], "Text", FontSize->16], Cell[TextData[{ "\t", StyleBox["GUdd", FontFamily->"Courier"], " (Christoffel symbols of the 2nd kind), with components GUdd[[a,b,c]] = ", Cell[BoxData[ TagBox[\(\[CapitalGamma]\_bc\%a\), DisplayForm]]] }], "Text", FontSize->16], Cell[TextData[{ "\t", StyleBox["Rdddd", FontFamily->"Courier"], " (covariant form of the Riemann tensor), with components Rdddd[[a,b,c,d]] \ = ", Cell[BoxData[ TagBox[\(R\_abcd\), DisplayForm]]] }], "Text", FontSize->16], Cell[TextData[{ "\t", StyleBox["RUddd", FontFamily->"Courier"], " (mixed form of the Riemann tensor), with components RUddd[[a,b,c,d]] = ", Cell[BoxData[ TagBox[\(\(R\^a\)\_bcd\), DisplayForm]]] }], "Text", FontSize->16], Cell[TextData[{ Cell[BoxData[ TagBox["", DisplayForm]]], "\t", StyleBox["Rdd", FontFamily->"Courier"], " (covariant form of the Ricci tensor), with components Rdd[[a,b]] = ", Cell[BoxData[ \(R\_ab\)]], " \[Congruent] ", Cell[BoxData[ TagBox[\(\(R\^s\)\_asb\), DisplayForm]]] }], "Text", FontSize->16], Cell[TextData[{ "\t", StyleBox["EUd", FontFamily->"Courier"], " (mixed form of the Einstein tensor), with components EUd[[a,b]] = ", Cell[BoxData[ TagBox[\(\(E\^a\)\_b\), DisplayForm]]], " \[Congruent] ", Cell[BoxData[ TagBox[\(\(R\^a\)\_b\), DisplayForm]]], "- ", StyleBox["R/2", FontFamily->"Courier"], " ", Cell[BoxData[ \(\(\[Delta]\^a\)\_b\)]] }], "Text", FontSize->16], Cell[TextData[{ Cell[BoxData[ TagBox["", DisplayForm]]], Cell[BoxData[ TagBox["", DisplayForm]]], "\t", StyleBox["R", FontFamily->"Courier"], " is the curvature scalar \t (", StyleBox["Important: Do not use the symbol R in coordinates or metric!", FontWeight->"Bold", FontSlant->"Italic"], ")" }], "Text", FontSize->16], Cell[TextData[{ "\t", StyleBox["Wdddd", FontFamily->"Courier"], " (covariant form of the Weyl tensor), with components Wdddd[[a,b,c,d]] = ", Cell[BoxData[ \(W\_abcd\)]] }], "Text", FontSize->16] }, Closed]], Cell[TextData[{ Cell[BoxData[ TagBox["", DisplayForm]]], Cell[BoxData[ TagBox["", DisplayForm]]], "\tFinally, ", StyleBox["RGtensors", FontWeight->"Bold"], " defines the following global variables: (i) ", StyleBox["coordList", FontFamily->"Courier"], " contains the coordinates defined in (1) above, (ii) ", StyleBox["detg", FontFamily->"Courier"], " is the determinant of the metric, (iii) ", StyleBox["Dim", FontFamily->"Courier"], " stores the dimension of the space and (iv) ", StyleBox["LineElement", FontFamily->"Courier"], " stores, of course, the line element! Tensor components refer to the \ coordinate frame and are numbered ", StyleBox["1,...,Dim", FontFamily->"Courier"], ", rather than ", StyleBox["0,...,Dim-1", FontFamily->"Courier"], ". See section 5, \"", StyleBox["Calculating Tensor Components in an Arbitrary Frame", FontSlant->"Italic"], "\", on how to do calculations in an arbitrary frame. " }], "Text", FontSize->16], Cell[TextData[{ Cell[BoxData[ TagBox["", DisplayForm]]], Cell[BoxData[ TagBox["", DisplayForm]]], "\t", StyleBox["Note", FontSlant->"Italic"], ": One can choose to skip the most time consuming computations: RUddd \ and/or Wdddd. This can be achieved by calling ", StyleBox["RGtensors", FontFamily->"Courier"], " with an optional extra argument -- a list of two numbers ", StyleBox["{i,j}", FontFamily->"Courier"], ". When the first number is 0, RUddd is not computed and when the second \ number is 0 Wdddd is not computed. Thus ", StyleBox["RGtensors[gIN,xIN,{1,0}]", FontFamily->"Courier"], " will compute RUddd but not Wdddd. (See Examples 7 and 8)" }], "Text", FontSize->16], Cell[CellGroupData[{ Cell["\t1.1.1 Totally antisymmetric symbol / tensor", "Subsubsection", ShowGroupOpenCloseIcon->True, FontSize->16], Cell[TextData[{ Cell[BoxData[ TagBox["", DisplayForm]]], Cell[BoxData[ TagBox["", DisplayForm]]], "\t Definitions for the totally antisymmetric symbol ", Cell[BoxData[ \(\[CurlyEpsilon]\_\(\(a1...\) an\)\)]], " and tensor ", Cell[BoxData[ \(\[Eta]\_\(\(a1...\) an\)\)]], " are provided, but the tensor is not evaluated unless called by the user. \ As the number of indices on these objects equals the dimension of the \ mannifold, the U/d notation cannot be used. Instead, the following global \ names are used:" }], "Text", FontSize->16], Cell[TextData[{ Cell[BoxData[ TagBox["", DisplayForm]]], Cell[BoxData[ TagBox["", DisplayForm]]], "\t ", StyleBox["epsilon", FontFamily->"Courier", FontWeight->"Bold"], " is a ", StyleBox["function", FontSlant->"Italic"], " that takes ", StyleBox["Dim", FontFamily->"Courier"], " integers as arguments and returns one of { 0, 1, -1} - the sign of the \ permutation of the arguments. For example, in 5 dimensions," }], "Text", FontSize->16], Cell[TextData[{ "\t", StyleBox["epsilon[1,2,3,4,5]", FontFamily->"Courier", FontWeight->"Bold"], StyleBox[" ", FontWeight->"Bold"], "returns 1, ", StyleBox["epsilon[1,3,2,4,5]", FontFamily->"Courier", FontWeight->"Bold"], StyleBox[" ", FontWeight->"Bold"], "returns -1, and ", StyleBox["epsilon[1,2,2,4,5]", FontFamily->"Courier", FontWeight->"Bold"], StyleBox[" ", FontWeight->"Bold"], "returns 0." }], "Text", FontSize->16], Cell[TextData[{ Cell[BoxData[ TagBox["", DisplayForm]]], Cell[BoxData[ TagBox["", DisplayForm]]], "\t", StyleBox["eta[]", FontFamily->"Courier", FontWeight->"Bold"], " can take 0 to ", StyleBox["Dim", FontFamily->"Courier"], " arguments and returns the ", StyleBox["Dim", FontFamily->"Courier"], "-rank antisymmetric tensor with raised indices at the position(s) \ indicated by the argument(s). Thus ", StyleBox["eta[]", FontFamily->"Courier"], " is the totally covariant antisymmetric tensor, with components" }], "Text", FontSize->16], Cell[TextData[{ Cell[BoxData[ TagBox["", DisplayForm]]], Cell[BoxData[ TagBox["", DisplayForm]]], "\t", StyleBox["eta[][[a1,a2,...,an]]=", FontFamily->"Courier"], Cell[BoxData[ \(\((\[LeftBracketingBar]detg\[RightBracketingBar])\)\^\(1/2\)\)]], StyleBox["epsilon[a1,a2,...,an]", FontFamily->"Courier"], ", " }], "Text", FontSize->16], Cell[TextData[{ Cell[BoxData[ TagBox["", DisplayForm]]], Cell[BoxData[ TagBox["", DisplayForm]]], "while" }], "Text", FontSize->16], Cell[TextData[{ Cell[BoxData[ TagBox["", DisplayForm]]], Cell[BoxData[ TagBox["", DisplayForm]]], "\t", StyleBox["eta[2,3][[a1,a2,...,an]]=", FontFamily->"Courier"], Cell[BoxData[ \(\(\((\[LeftBracketingBar]detg\[RightBracketingBar])\)\^\(1/2\)\) g\^\(a2\ b2\)\)]], Cell[BoxData[ \(g\^\(a3\ b3\)\)]], StyleBox["epsilon[a1,b2,b3,..,an]", FontFamily->"Courier"], "." }], "Text", FontSize->16], Cell[TextData[{ Cell[BoxData[ TagBox["", DisplayForm]]], Cell[BoxData[ TagBox["", DisplayForm]]], "\t", StyleBox["Warning", FontWeight->"Bold", FontSlant->"Italic"], ": The evaluation of ", StyleBox["eta[]", FontFamily->"Courier"], " tensors (", StyleBox["Dim", FontFamily->"Courier"], "-fold nested lists) is ", StyleBox["very", FontSlant->"Italic"], " time consuming in high dimensions as the number of components grows as ", Cell[BoxData[ \(Dim\^Dim\)]], ". It also requires large amounts of memory. For example, for the simple \ case of a conformally flat metric, the {Time, Storage} requirements for \ computing ", StyleBox["each", FontSlant->"Italic"], " ", StyleBox["eta[]", FontFamily->"Courier"], " grow as follows: ", Cell[BoxData[ TagBox["", DisplayForm]]], Cell[BoxData[ TagBox["", DisplayForm]]], "{~1 sec, <1 MB} for ", StyleBox["Dim", FontFamily->"Courier"], "=6, {~20 sec, ~7 MB} for ", StyleBox["Dim", FontFamily->"Courier"], "=7, and {> 10 min, >120 MB} for ", StyleBox["Dim", FontFamily->"Courier"], "=8! Thus, calculations with ", StyleBox["eta[]", FontFamily->"Courier"], " should not be attempted if ", StyleBox["Dim", FontFamily->"Courier"], ">7. Fortunately, for ", StyleBox["Dim", FontFamily->"Courier"], "=4 the requirements are quite modest, even for complicated metrics." }], "Text", FontSize->16] }, Closed]], Cell[TextData[{ "\n", Cell[BoxData[ TagBox["", DisplayForm]]], Cell[BoxData[ TagBox["", DisplayForm]]], "\tNow that the basic tensors have been computed, one can use the functions \ defined in the following sections to perform further calculations." }], "Text", FontSize->16] }, Closed]], Cell[CellGroupData[{ Cell[" 1.2 Manipulation of tensor indices & tensor products", "Subsection", ShowGroupOpenCloseIcon->True, FontSize->16], Cell[TextData[{ "\tThe ", StyleBox["first", FontSlant->"Italic"], " or ", StyleBox["last", FontSlant->"Italic"], " index of a tensor can be raised / lowered by inner (", StyleBox["Dot", FontWeight->"Bold"], ") multiplication with gUU / gdd:" }], "Text", FontSize->16], Cell[TextData[{ "\t ", StyleBox["Edd=gdd.EUd", FontFamily->"Courier"], " has components Edd[[a,b]] = ", Cell[BoxData[ \(E\_ab\)]] }], "Text", FontSize->16], Cell[TextData[{ "\t ", StyleBox["WdddU=Wdddd.gUU", FontFamily->"Courier"], " has components WdddU[[a,b,c,d]] = ", Cell[BoxData[ TagBox[\(W\_abc\^d\), DisplayForm]]], ".", Cell[BoxData[ TagBox["", DisplayForm]]] }], "Text", FontSize->16], Cell[TextData[{ Cell[BoxData[ TagBox["", DisplayForm]]], Cell[BoxData[ TagBox["", DisplayForm]]], "\tTo manipulate other indices the following functions have been defined:" }], "Text", FontSize->16], Cell[TextData[{ Cell[BoxData[ TagBox["", DisplayForm]]], Cell[BoxData[ TagBox["", DisplayForm]]], "\t ", StyleBox["Lower[x_,ni__]", FontFamily->"Courier", FontWeight->"Bold"], ":: lowers the index(indices) at position(s) ", StyleBox["ni", FontFamily->"Courier", FontWeight->"Bold"], " (assumed U) of the nested list ", StyleBox["x", FontFamily->"Courier", FontWeight->"Bold"], " using the matrix gdd." }], "Text", FontSize->16], Cell[TextData[{ Cell[BoxData[ TagBox["", DisplayForm]]], Cell[BoxData[ TagBox["", DisplayForm]]], "\t ", StyleBox["Raise[x_,ni__]", FontFamily->"Courier", FontWeight->"Bold"], ":: raises the index(indices) at position(s) ", StyleBox["ni", FontFamily->"Courier", FontWeight->"Bold"], " (assumed d) of the nested list ", StyleBox["x", FontFamily->"Courier", FontWeight->"Bold"], " using the matrix gUU." }], "Text", FontSize->16], Cell[TextData[{ Cell[BoxData[ TagBox["", DisplayForm]]], Cell[BoxData[ TagBox["", DisplayForm]]], "\tFor example, the mixed Riemann tensor with components ", Cell[BoxData[ \(\(\(R\^a\)\_b\^c\)\_d\)]], " is ", StyleBox["RUdUd=Raise[RUddd,3]", FontFamily->"Courier"], ", ", Cell[BoxData[ TagBox["", DisplayForm]]], Cell[BoxData[ TagBox["", DisplayForm]]], "while RUUUd", StyleBox["=Raise[RUddd,2,3]", FontFamily->"Courier"], " has components ", Cell[BoxData[ \(\(R\^abc\)\_d\)]], "." }], "Text", FontSize->16], Cell[TextData[{ Cell[BoxData[ TagBox["", DisplayForm]]], Cell[BoxData[ TagBox["", DisplayForm]]], "\t", StyleBox["Note", FontSlant->"Italic"], ": The functions ", StyleBox["Raise", FontWeight->"Bold"], " / ", StyleBox["Lower", FontWeight->"Bold"], " apply the rules in ", StyleBox["simpRules", FontWeight->"Bold"], " and factor the expressions obtained. Thus ", StyleBox["Raise[RUddd,4]", FontFamily->"Courier"], " is equivalent but not identical to ", StyleBox["RUddd.gUU", FontFamily->"Courier"], ". " }], "Text", FontSize->16], Cell[TextData[{ Cell[BoxData[ TagBox["", DisplayForm]]], Cell[BoxData[ TagBox["", DisplayForm]]], "\tTensor products are obtained by using the ", StyleBox["Mathematica", FontSlant->"Italic"], " function ", StyleBox["Outer", FontWeight->"Bold"], ". For example," }], "Text", FontSize->16], Cell[TextData[{ Cell[BoxData[ TagBox["", DisplayForm]]], Cell[BoxData[ TagBox["", DisplayForm]]], "\t ", StyleBox["gg=Outer[Times,gdd,gdd];", FontFamily->"Courier", FontWeight->"Bold"], " is a 4th rank (d-type) tensor with components ", StyleBox["gg[[a,b,c,d]]=", FontFamily->"Courier", FontWeight->"Bold"], Cell[BoxData[ \(\(\ g\_ab\)\)], FontWeight->"Bold"], Cell[BoxData[ \(g\_cd\)], FontWeight->"Bold"], "." }], "Text", FontSize->16], Cell[TextData[{ Cell[BoxData[ TagBox["", DisplayForm]]], Cell[BoxData[ TagBox["", DisplayForm]]], "\tUsing the ", StyleBox["Mathematica", FontSlant->"Italic"], " function ", StyleBox["Transpose", FontWeight->"Bold"], ", one can then define the tensor: ", StyleBox["gxg", FontFamily->"Courier", FontWeight->"Bold"], "=", StyleBox["gg-Transpose[gg,{1,3,2,4}]", FontFamily->"Courier", FontWeight->"Bold"], StyleBox[",", FontVariations->{"CompatibilityType"->0}], " ", Cell[BoxData[ TagBox["", DisplayForm]]], Cell[BoxData[ TagBox["", DisplayForm]]], "which has components ", StyleBox["gxg[[a,b,c,d]]", FontFamily->"Courier", FontWeight->"Bold"], StyleBox[" = ", FontWeight->"Bold"], Cell[BoxData[ \(g\_ab\)], FontWeight->"Bold"], Cell[BoxData[ \(\(g\_cd\ \)\)], FontWeight->"Bold"], StyleBox["-", FontWeight->"Bold"], Cell[BoxData[ \(\(\ g\_ac\)\)], FontWeight->"Bold"], Cell[BoxData[ \(g\_bd\)], FontWeight->"Bold"], ".\n" }], "Text", FontSize->16] }, Closed]], Cell[CellGroupData[{ Cell[" 1.3 Contraction of tensor indices", "Subsection", ShowGroupOpenCloseIcon->True, FontSize->16], Cell[TextData[{ "\tThe function ", StyleBox["Contract[x_,{i1_,j1_},{i2_,j2_},..]", FontFamily->"Courier", FontWeight->"Bold"], " takes as arguments an nth rank tensor ", StyleBox["x", FontWeight->"Bold"], ", and one or more lists of pairs of numbers, indicating the positions of \ the indices to be contracted. It returns a tensor of rank ", StyleBox["n-2k", FontSlant->"Italic"], ", where ", StyleBox["k", FontSlant->"Italic"], " is the number of lists. It is assumed that the two numbers in each list \ refer to one U and one d type index, in any order. Examples (the Einstein \ summation convention holds):" }], "Text", FontSize->16], Cell[TextData[{ Cell[BoxData[ TagBox["", DisplayForm]]], Cell[BoxData[ TagBox["", DisplayForm]]], "\t(a) ", StyleBox["Contract[GUdd,{1,3}]", FontFamily->"Courier", FontWeight->"Bold"], " gives a d-type vector with components ", Cell[BoxData[ TagBox[\(\[CapitalGamma]\_ba\%a\), DisplayForm]]], "." }], "Text", FontSize->16], Cell[TextData[{ Cell[BoxData[ TagBox["", DisplayForm]]], Cell[BoxData[ TagBox["", DisplayForm]]], "\t(b) ", StyleBox["Contract[RUddd,{1,3}]", FontFamily->"Courier", FontWeight->"Bold"], " gives Rdd." }], "Text", FontSize->16], Cell[TextData[{ Cell[BoxData[ TagBox["", DisplayForm]]], Cell[BoxData[ TagBox["", DisplayForm]]], "\t(c) ", StyleBox["Contract[Outer[Times,RUddd,RUddd],{1,7},{4,5}]", FontFamily->"Courier", FontWeight->"Bold"], " produces a dddd tensor with components ", Cell[BoxData[ \(\(R\^s\)\_abt\)]], Cell[BoxData[ \(\(R\^t\)\_csd\)]], "." }], "Text", FontSize->16], Cell[TextData[{ "\t", StyleBox["Note1", FontSlant->"Italic"], ": Even though the last result can be obtained by calling ", StyleBox["Contract", FontFamily->"Courier"], " twice, each time with a single pair of indices, it is ", StyleBox["much", FontSlant->"Italic"], " more efficient to perform multiple contractions simultaneously, as \ above.", Cell[BoxData[ TagBox["", DisplayForm]]] }], "Text", FontSize->16], Cell[TextData[{ "\t", StyleBox["Note2", FontSlant->"Italic"], ": The result of (c) can also be obtained as ", StyleBox["Contract[RUddd.RUddd,{1,5}]", FontFamily->"Courier", FontWeight->"Bold"], ", since the ", StyleBox["Mathematica", FontSlant->"Italic"], " function ", StyleBox["Dot", FontFamily->"Courier", FontWeight->"Bold"], " performs the ", StyleBox["{4,5}", FontFamily->"Courier"], " contraction of the outer product (last index of first tensor with first \ index of second tensor) giving a 6th rank tensor.", Cell[BoxData[ TagBox["", DisplayForm]]] }], "Text", FontSize->16], Cell[TextData[{ "\tThe function ", StyleBox["multiDot[x_,y_,{i1_,j1_},{i2_,j2_},..]", FontFamily->"Courier", FontWeight->"Bold"], " is similar to ", StyleBox["Contract", FontFamily->"Courier"], ", and generalizes the built-in function ", StyleBox["Dot", FontFamily->"Courier"], ". It takes as arguments ", StyleBox["two", FontSlant->"Italic"], " tensors - ", StyleBox["x", FontFamily->"Courier", FontWeight->"Bold"], ", ", StyleBox["y", FontFamily->"Courier", FontWeight->"Bold"], " - and one or more lists of pairs of numbers. For each pair of numbers ", StyleBox["{i,j}", FontFamily->"Courier"], ", it contracts the ", StyleBox["i", FontWeight->"Bold"], "th index of the ", StyleBox["first", FontSlant->"Italic"], " tensor (", StyleBox["x", FontFamily->"Courier", FontWeight->"Bold"], ") with the ", StyleBox["j", FontWeight->"Bold"], "th index of the ", StyleBox["second", FontSlant->"Italic"], " tensor (", StyleBox["y", FontFamily->"Courier", FontWeight->"Bold"], "), returning a tensor of rank ", StyleBox["m+n-2k", FontSlant->"Italic"], ", where ", StyleBox["m", FontSlant->"Italic"], ", ", StyleBox["n", FontSlant->"Italic"], " are the ranks of ", StyleBox["x", FontFamily->"Courier", FontWeight->"Bold"], ", ", StyleBox["y", FontFamily->"Courier", FontWeight->"Bold"], ", respectively, and ", StyleBox["k", FontSlant->"Italic"], " is the number of index pairs. Again, it is assumed that the indices at ", StyleBox["{i,j}", FontFamily->"Courier"], " are of opposite (U/d) types. Using ", StyleBox["multiDot", FontFamily->"Courier"], ", the result of example (c) above can also be obtained as ", StyleBox["multiDot[RUddd,RUddd,{1,3},{4,1}]", FontFamily->"Courier", FontWeight->"Bold"], ".", Cell[BoxData[ FormBox["", TextForm]], ""], Cell[BoxData[ FormBox["", TextForm]], ""] }], "Text", FontSize->16], Cell[TextData[{ StyleBox["\tNote:", FontSlant->"Italic"], " When contracting a product of two tensors, as in example (c), one should \ always use ", StyleBox["multiDot", FontFamily->"Courier"], " to perform the contractions, thus avoiding the outer product calculation, \ which is very time / memory consuming. See also Example 1a in section 3 and \ Example 4b in Section 5.1", Cell[BoxData[ FormBox["", TextForm]], "\.02\[YAcute]\t\[OSlash]\.03\.08\[CapitalCCedilla]`\.03\.08\ \[CapitalCCedilla]`"] }], "Text", FontSize->16] }, Closed]], Cell[CellGroupData[{ Cell[" 1.4 Covariant differentiation of tensors", "Subsection", ShowGroupOpenCloseIcon->True, FontSize->16], Cell["\<\ \tThe following functions, involving differentiations of tensors, \ are defined by RGTC: \ \>", "Text", FontSize->16], Cell[CellGroupData[{ Cell[TextData[{ "\t (i) The function ", StyleBox["covD[x_,{i___}]", FontFamily->"Courier", FontWeight->"Bold"], " takes two arguments -- an nth rank tensor, ", StyleBox["x", FontFamily->"Courier", FontWeight->"Bold"], ", and a list of numbers indicating the positions of the ", StyleBox["contravariant", FontSlant->"Italic"], " (U) components of ", StyleBox["x", FontFamily->"Courier", FontWeight->"Bold"], " -- and produces an ", StyleBox["n+1", FontFamily->"Courier", FontSlant->"Italic"], " rank tensor: the covariant derivative of ", StyleBox["x", FontWeight->"Bold"], ". ", StyleBox["The last index is the differentiation index (d type)", FontSlant->"Italic"], ". If ", StyleBox["x", FontFamily->"Courier", FontWeight->"Bold"], " has only d-type components, the second argument (empty list) can be \ omitted. Examples:" }], "Text", ShowGroupOpenCloseIcon->True, FontSize->16], Cell[TextData[{ Cell[BoxData[ TagBox["", DisplayForm]]], Cell[BoxData[ TagBox["", DisplayForm]]], "\t ", StyleBox["covD[Rdd]", FontFamily->"Courier", FontWeight->"Bold"], " is a 3rd rank (ddd type) tensor with components ", Cell[BoxData[ TagBox[ TagBox[\(R\_\(ab; c\)\), DisplayForm], DisplayForm]]], "." }], "Text", FontSize->16], Cell[TextData[{ Cell[BoxData[ TagBox["", DisplayForm]]], Cell[BoxData[ TagBox["", DisplayForm]]], "\t ", StyleBox["covD[RUddd,{1}]", FontFamily->"Courier", FontWeight->"Bold"], " is a 5th rank (Udddd type) tensor with components ", Cell[BoxData[ TagBox[ TagBox[\(\(R\^a\)\_\(bcd; e\)\), DisplayForm], DisplayForm]]], "." }], "Text", FontSize->16] }, Closed]], Cell[CellGroupData[{ Cell[TextData[{ Cell[BoxData[ TagBox["", DisplayForm]]], Cell[BoxData[ TagBox["", DisplayForm]]], "\t(ii) The function ", StyleBox["covDiv[x_,{i___,{s_}}]", FontFamily->"Courier", FontWeight->"Bold"], " acting on an nth rank tensor ", StyleBox["x", FontFamily->"Courier", FontWeight->"Bold"], " with contravariant indices at positions {i..., s} returns an ", StyleBox["n-1", FontFamily->"Courier", FontSlant->"Italic"], " rank tensor: the covariant ", StyleBox["divergence", FontSlant->"Italic"], " of ", StyleBox["x", FontFamily->"Courier", FontWeight->"Bold"], " with respect to the contravariant index at position ", StyleBox["s", FontSlant->"Italic"], ". If there is only one contravariant index, the second argument can be \ written simply {s} rather than {{s}}. Examples (the Einstein summation \ convention holds):" }], "Text", ShowGroupOpenCloseIcon->True, FontSize->16], Cell[TextData[{ Cell[BoxData[ TagBox["", DisplayForm]]], Cell[BoxData[ TagBox["", DisplayForm]]], "\t ", StyleBox["covDiv[RUddd,{1}]", FontFamily->"Courier", FontWeight->"Bold"], " is a 3rd rank (ddd type) tensor with components ", Cell[BoxData[ TagBox[ TagBox[\(\(R\^s\)\_\(abc; s\)\), DisplayForm], DisplayForm]]], "." }], "Text", FontSize->16], Cell[TextData[{ Cell[BoxData[ TagBox["", DisplayForm]]], Cell[BoxData[ TagBox["", DisplayForm]]], "\t ", StyleBox["covDiv[RUdUd,{1,{3}}]", FontFamily->"Courier", FontWeight->"Bold"], " is a 3rd rank (Udd type) tensor with components ", Cell[BoxData[ TagBox[ TagBox[\(\(\(R\^a\)\_b\^s\)\_\(c; s\)\), DisplayForm], DisplayForm]]], "." }], "Text", FontSize->16], Cell[TextData[{ Cell[BoxData[ TagBox["", DisplayForm]]], Cell[BoxData[ TagBox["", DisplayForm]]], "\t", StyleBox["Note1", FontSlant->"Italic"], ": It is ", StyleBox["much", FontSlant->"Italic"], " more efficient to use ", StyleBox["covDiv", FontFamily->"Courier"], " than to use ", StyleBox["covD", FontFamily->"Courier"], " followed by ", StyleBox["Contract", FontFamily->"Courier"], "." }], "Text", FontSize->16], Cell[TextData[{ Cell[BoxData[ TagBox["", DisplayForm]]], Cell[BoxData[ TagBox["", DisplayForm]]], "\t", StyleBox["Note2", FontSlant->"Italic"], ": The functions ", StyleBox["covD", FontFamily->"Courier"], " and ", StyleBox["covDiv", FontFamily->"Courier"], " can be very slow on high-rank tensors in high dimensions. However, they \ remember their values, so calling them again with the same arguments takes no \ time. " }], "Text", FontSize->16] }, Closed]], Cell[CellGroupData[{ Cell[TextData[{ "\t(iii) The function ", StyleBox["LieD[h_,x_,{i___}]", FontFamily->"Courier", FontWeight->"Bold"], " computes the Lie derivative of the tensor ", StyleBox["x", FontWeight->"Bold"], ", having contravariant indices at index positions ", StyleBox["i__", FontWeight->"Bold"], ", with respect to the contravariant (U type) vector ", StyleBox["h", FontWeight->"Bold"], ". For totally covariant tensors ", StyleBox["x ", FontWeight->"Bold"], "(or scalars), the last argument (empty list) can be omitted. The result of \ ", StyleBox["LieD", FontWeight->"Bold"], " is a tensor of the same rank (and type) as ", StyleBox["x", FontWeight->"Bold"], ". As with ", StyleBox["covD", FontFamily->"Courier"], " and ", StyleBox["covDiv", FontFamily->"Courier"], ", ", StyleBox["LieD", FontFamily->"Courier"], " remembers its values. Examples:" }], "Text", ShowGroupOpenCloseIcon->True, FontSize->16], Cell[TextData[{ Cell[BoxData[ TagBox["", DisplayForm]]], Cell[BoxData[ TagBox["", DisplayForm]]], "\t ", StyleBox["LieD[{h1,h2,..,hn},gdd]", FontFamily->"Courier", FontWeight->"Bold"], " is a 2nd rank (dd type) tensor with components ", Cell[BoxData[ RowBox[{ RowBox[{ TagBox["", DisplayForm], \(h\^s\), \(g\_\(ab, s\)\)}], "+", RowBox[{ TagBox[ TagBox[\(\(h\^s\)\_\(, a\)\), DisplayForm], DisplayForm], \(g\_sb\)}], "+", RowBox[{ TagBox[ TagBox[\(\(h\^s\)\_\(, b\)\), DisplayForm], DisplayForm], \(g\_as\)}]}]]], "." }], "Text", FontSize->16], Cell[TextData[{ Cell[BoxData[ TagBox["", DisplayForm]]], Cell[BoxData[ TagBox["", DisplayForm]]], "\t ", StyleBox["LieD[{h1,h2,..,hn},RUddd,{1}]", FontFamily->"Courier", FontWeight->"Bold"], " is a 4th rank (Uddd type) tensor with components ", Cell[BoxData[ TagBox[ TagBox[\(\(h\^s\) \(R\^a\)\_\(bcd, s\)\), DisplayForm], DisplayForm]]], "+", Cell[BoxData[ TagBox[ TagBox[\(\(h\^s\)\_\(, b\)\), DisplayForm], DisplayForm]]], Cell[BoxData[ \(\(R\^a\)\_scd\)]], "+", Cell[BoxData[ RowBox[{ TagBox[ TagBox[\(\(h\^s\)\_\(, c\)\), DisplayForm], DisplayForm], \(\(R\^a\)\_bsd\)}]]], "+", Cell[BoxData[ TagBox[ TagBox[\(\(h\^s\)\_\(, d\)\), DisplayForm], DisplayForm]]], Cell[BoxData[ \(\(R\^a\)\_bcs\)]], StyleBox["- ", FontFamily->"Geneva"], Cell[BoxData[ TagBox[ TagBox[\(\(\(h\^a\)\_\(, s\)\) \(R\^s\)\_bcd\), DisplayForm], DisplayForm]]], "." }], "Text", FontSize->16] }, Closed]], Cell[TextData[{ "\t(iv) The function ", StyleBox["Laplacian[x_,{i___}]", FontFamily->"Courier", FontWeight->"Bold"], " computes the Laplacian (", Cell[BoxData[ \(\( = x\^\(; s\)\)\_\(; s\)\)]], ") of the tensor ", StyleBox["x", FontWeight->"Bold"], ", having contravariant indices at index positions ", StyleBox["i__", FontWeight->"Bold"], ". Again, for totally covariant tensors ", StyleBox["x", FontWeight->"Bold"], ", the last argument (empty list) can be omitted. The result of ", StyleBox["Laplacian", FontFamily->"Courier", FontWeight->"Bold"], " is a tensor of the same rank (and type) as ", StyleBox["x", FontWeight->"Bold"], ". " }], "Text", FontSize->16], Cell[TextData[{ "\t(v) The function ", StyleBox["Grad2Norm[x__]", FontFamily->"Courier", FontWeight->"Bold"], " takes either 1 or 2 ", StyleBox["scalar", FontSlant->"Italic"], " functions as arguments and computes the square norm of the gradient of ", StyleBox["x", FontFamily->"Courier"], " (inner product): ", StyleBox["Grad2Norm[x]", FontFamily->"Courier", FontWeight->"Bold"], "= ", Cell[BoxData[ \(\(g\^ab\) \(x\_\(, a\)\) x\_\(, b\)\)]], StyleBox[" ", FontFamily->"Courier", FontWeight->"Bold"], "and ", StyleBox["Grad2Norm[x,y]", FontFamily->"Courier", FontWeight->"Bold"], "= ", Cell[BoxData[ \(\(g\^ab\) \(x\_\(, a\)\) y\_\(, b\)\)]], "." }], "Text", FontSize->16], Cell[CellGroupData[{ Cell[TextData[{ Cell[BoxData[ TagBox["", DisplayForm]]], Cell[BoxData[ TagBox["", DisplayForm]]], "\t(vi) Using ", StyleBox["covD", FontFamily->"Courier"], " and ", StyleBox["covDiv", FontFamily->"Courier"], ", the function ", StyleBox["Bianchi[n_]", FontFamily->"Courier", FontWeight->"Bold"], ", for n = 0, 1, 2, computes the full, once, twice contracted Bianchi \ identities and returns a list containing any non-vanishing terms. This list \ is normally the empty list, except when the simplification rules used imply \ relations among the 3rd derivatives of the metric functions (see Example 5). \ " }], "Text", ShowGroupOpenCloseIcon->True, FontSize->16], Cell[TextData[{ "\tEvaluation of the Bianchi Identities takes long: for the metrics in the \ examples, the time needed to evaluate ", StyleBox["Bianchi[1]", FontFamily->"Courier"], " is ~ 1 - 15 times the time taken by ", StyleBox["RGtensors", FontFamily->"Courier"], " to compute all basic tensors. ", StyleBox["Bianchi[0]", FontFamily->"Courier"], " takes considerably longer. (For the Bondi metric the times are ~ 12 min, \ 6 min, 7 sec). " }], "Text", FontSize->16] }, Closed]] }, Closed]], Cell[CellGroupData[{ Cell[" 1.5 Index of global names / variables", "Subsection", ShowGroupOpenCloseIcon->True, FontSize->16], Cell[TextData[{ "\t", StyleBox[ "It is essential that, in choosing coordinates and metric functions, one \ avoids using the symbols listed in this subsection, as they are defined by \ (or have special meanings in) RGTC. In particular, the single-letter symbols \ R, d, e must be avoided-- see subsection 4.0.", FontSize->16] }], "Text", FontColor->RGBColor[0, 0, 1]], Cell[CellGroupData[{ Cell[TextData[{ Cell[BoxData[ TagBox["", DisplayForm]]], Cell[BoxData[ TagBox["", DisplayForm]]], "\t(i) ", StyleBox["Riemannian Geometry tensors / scalars", FontSlant->"Italic"], " " }], "Subsubsection", ShowGroupOpenCloseIcon->True, FontSize->16], Cell[TextData[{ "\t", StyleBox["gdd, gUU, GUdd, Rdddd, RUddd, Rdd, EUd, R, Wdddd, detg", FontWeight->"Bold"], " \t(section 1.1)\n\t", StyleBox["epsilon, eta\t\t\t\t\t\t\t\t", FontWeight->"Bold"], "(section 1.1.1)\n\t", StyleBox["\[Omega]Ud \t\t\t\t\t\t\t\t\t", FontWeight->"Bold"], "(section 5.1)\n\t", StyleBox["\[Alpha],\[Beta],", FontFamily->"Courier", FontWeight->"Bold"], StyleBox["..., ", FontWeight->"Bold"], StyleBox["\[GothicCapitalD][_],\[CapitalDelta][_]", FontFamily->"Courier", FontWeight->"Bold"], StyleBox["..., \[CapitalPsi][i], \[CapitalPhi][i, j],", FontWeight->"Bold"], " ", StyleBox["\[CapitalLambda]\t\t\t\t", FontWeight->"Bold"], "(section 5.1.3)" }], "Text", FontSize->16] }, Closed]], Cell[CellGroupData[{ Cell[TextData[{ Cell[BoxData[ TagBox["", DisplayForm]]], Cell[BoxData[ TagBox["", DisplayForm]]], "\t(ii) ", StyleBox["Tensor operations / functions", FontSlant->"Italic"] }], "Subsubsection", ShowGroupOpenCloseIcon->True, FontSize->16], Cell[TextData[{ " \t", StyleBox["RGtensors\t\t\t\t\t\t\t\t", FontWeight->"Bold"], "(section 1.1, 5.1, 5.2)\n\t", StyleBox["Raise, Lower, Outer, Transpose", FontWeight->"Bold"], "\t\t\t\t\t(section 1.2) \n\t", StyleBox["Contract, Dot, multiDot", FontWeight->"Bold"], "\t\t\t\t\t\t(section 1.3) \n\t", StyleBox["covD, covDiv, LieD, Laplacian, Grad2Norm, Bianchi", FontWeight->"Bold"], "\t\t(section 1.4)\n\t", StyleBox["HStar", FontWeight->"Bold"], "\t\t\t\t\t\t\t\t\t(section 5.1.2)" }], "Text", FontSize->16] }, Closed]], Cell[CellGroupData[{ Cell[TextData[{ Cell[BoxData[ TagBox["", DisplayForm]]], Cell[BoxData[ TagBox["", DisplayForm]]], "\t(iii) ", StyleBox["Other global variables", FontSlant->"Italic"] }], "Subsubsection", ShowGroupOpenCloseIcon->True, FontSize->16], Cell[TextData[{ "\t", StyleBox["simpRules, Dim, coordList, LineElement, varList", FontWeight->"Bold"], "\t\t\t(section 1.1, 4.3)\n\t", StyleBox["e[], d[]", FontWeight->"Bold"], "\t\t\t\t\t\t\t\t\t(section 5.1)\n\t", StyleBox["deList, dxRuleList", FontWeight->"Bold"], "\t\t\t\t\t\t\t(section 5.2)" }], "Text", FontSize->16] }, Closed]], Cell[CellGroupData[{ Cell[TextData[{ Cell[BoxData[ TagBox["", DisplayForm]]], Cell[BoxData[ TagBox["", DisplayForm]]], "\t(iv) ", StyleBox["Auxiliary functions", FontSlant->"Italic"] }], "Subsubsection", ShowGroupOpenCloseIcon->True, FontSize->16], Cell[TextData[{ "\t", StyleBox["zeroQ, nonZeroN, nonZeroL, indepTerms, FacSimp", FontWeight->"Bold"], "\t\t(section 4.2)\n\t", StyleBox["FuncRepRules\t\t\t\t\t\t\t", FontWeight->"Bold"], "(section 4.4)\n\t", StyleBox["eTO$dx, Clear$dx", FontWeight->"Bold"], "\t\t\t\t\t\t\t(section 5.1.1)\n\t", StyleBox["GenCoef", FontWeight->"Bold"], "\t\t\t\t\t\t\t\t(section 6 - Examples 11, 12)" }], "Text", FontSize->16] }, Closed]], Cell[CellGroupData[{ Cell[TextData[{ Cell[BoxData[ TagBox["", DisplayForm]]], Cell[BoxData[ TagBox["", DisplayForm]]], "\t(v) ", StyleBox["Functions / variables in ", FontSlant->"Italic"], StyleBox["matrixEDCcode.nb", FontWeight->"Bold", FontSlant->"Italic"] }], "Subsubsection", ShowGroupOpenCloseIcon->True, FontSize->16], Cell[TextData[{ " \te.g., ", StyleBox["Wedge", FontWeight->"Bold"], ", ", StyleBox["d[]", FontWeight->"Bold"], ", ", StyleBox["DeclareForms", FontWeight->"Bold"], ", ", StyleBox["Bar[]", FontWeight->"Bold"], " etc.\t\t\t\t\t see ", ButtonBox["EDC_Manual.nb", ButtonData:>{ URL[ "http://www.inp.demokritos.gr/~sbonano/EDC/"], None}, ButtonStyle->"Hyperlink"] }], "Text", FontSize->16] }, Closed]], Cell[TextData[{ Cell[BoxData[ TagBox["", DisplayForm]]], Cell[BoxData[ TagBox["", DisplayForm]]], "\t", StyleBox["Important Note:", FontWeight->"Bold", FontSlant->"Italic"], StyleBox[" ", FontWeight->"Bold"], "As the behavior of ", StyleBox["RGtensors", FontWeight->"Bold"], " depends on the values of global variables like ", StyleBox["simpRules, deList, dxRuleList,", FontWeight->"Bold"], " one should normally restart the kernel to do calculations with a new \ metric." }], "Text", FontSize->16] }, Closed]], Cell[CellGroupData[{ Cell[" 1.6 Input Palettes", "Subsection", ShowGroupOpenCloseIcon->True, FontSize->16], Cell[TextData[{ "\tThe notebooks ", StyleBox["OperatorPLT.nb", FontWeight->"Bold"], " and ", StyleBox["NPsymbolPLT.nb", FontWeight->"Bold"], " are input palettes. The first contains the more common \ functions/variables used in calculations, so they can be entered easily \ without misspellings, while the second contains the symbols for the \ Newman-Penrose variables (see section 5.1.3). " }], "Text", FontSize->16], Cell[TextData[{ "\tIt is assumed that the user has a working knowledge of the basic ", StyleBox["Mathematica", FontSlant->"Italic"], " structures used in symbolic calculations -- in particular the material in \ the following sections of the ", StyleBox["Mathematica", FontSlant->"Italic"], " Book: 2.1.1-4, 2.2.3-6, 2.3.3-5, 2.4.1-2, 2.4.6-8, 3.3.1, 3.4.4, 3.5.1. \ (Sections 2.4... have become 2.5... in versions 5 and 6). Although not \ necessary for elementary evaluations, familiarity with these sections is \ needed to make full use of all features of RG&TC." }], "Text", FontSize->16] }, Closed]], Cell[TextData[{ StyleBox["\t", FontSize->14], StyleBox["The executable cells in this notebook must be evaluated ", FontSize->16, FontWeight->"Bold"], StyleBox["in the order they appear", FontSize->16, FontWeight->"Bold", FontSlant->"Italic"], StyleBox[ ". However, read the instructions in section 5 before evaluating sections 5 \ or 6. Also read subsection 4.0 before doing calculations with a new metric.", FontSize->16, FontWeight->"Bold"] }], "Text", FontSize->18, FontColor->RGBColor[0, 0, 1]] }, Open ]], Cell["", "Text", FontSize->10, FontColor->RGBColor[0, 0, 1]], Cell[CellGroupData[{ Cell[TextData[StyleBox[" 2 RG&TC-Code", FontWeight->"Bold"]], "Section", ShowGroupOpenCloseIcon->True, FontSize->24, FontColor->RGBColor[0, 0, 1]], Cell["\tversion 3.5.1 - June 2007 ", "Text", FontSize->14, FontColor->RGBColor[0, 0, 1]], Cell[BoxData[ \(\(Off[General::"\", General::"\", UpSet::"\"]; \)\)], "Input"], Cell[BoxData[ \(\(If[d[0] =!= 0, Unprotect["\"]; ClearAll["\"]; Remove["\"]; Unprotect[In, Out]; Clear[In, Out]; Protect[In, Out]; $Line = 0; $RecursionLimit = 256; $IterationLimit = 4096; Unprotect[SeriesData]; If[$VersionNumber < 5, Times[x_SeriesData, 0] ^= 0]; SeriesData[x1_, x2_, x3_, x4_, x5_, x6_] := \ Plus@@If[x2 === Infinity, Map[First[#]/x1^\((\((x4 + Last[#] - 1)\)/x6)\)&, Transpose[{x3, Range[Length[x3]]}]] + SeriesData[x1, x2, {}, x4, x5, x6], \ \ \ Map[First[#]*\((x1 - x2)\)^\((\((x4 + Last[#] - 1)\)/x6)\)&, Transpose[{x3, Range[Length[x3]]}]] + SeriesData[x1, x2, {}, x4, x5, x6]] /; \(! FreeQ[x3, x1]\); Protect[SeriesData]; ]; \)\)], "Input"], Cell[BoxData[ \(TrigRules = {Cos[\[Theta]_]^2*\((x_.)\) + \((x_.)\)*Sin[\[Theta]_]^2\ -> x, Cot[\[Theta]_]^2*\((x_.)\) + Csc[\[Theta]_]^2*\((y_.)\) :> y /; x + y === 0}; $RGTCversion = 351; FreeALLQ[x_, y_List] := And@@\(\((FreeQ[x, #1]&)\)/@y\); varList = {}; simpRules = {}; \)], "Input"], Cell[BoxData[ \(SetAttributes[FaSi, {Listable}]; FaSi[0] = 0; FaSi[x_SeriesData] := \((x /. x[\([3]\)] -> FaSi[x[\([3]\)]])\); FaSi[x_] := \((#1 /. simpRules&)\)/@ If[varList === {} || FreeALLQ[x, varList], Factor[x /. \[InvisibleSpace]simpRules] /. \[InvisibleSpace]simpRules, Collect[x /. simpRules, varList, Factor] /. simpRules]; \)], "Input"], Cell[BoxData[ \(SetAttributes[FacSimp, {Listable}]; FacSimp[0] = 0; FacSimp[x_Equal] := Equal[FacSimp[First[x] - x[\([2]\)]], 0]; FacSimp[x_Rule] := Rule[First[x], FacSimp[x[\([2]\)]]]; FacSimp[x_SeriesData] := \((x /. x[\([3]\)] -> FacSimp[x[\([3]\)]])\); FacSimp[x_] := \((\(ReplaceAll[#, simpRules]&\)/@ Collect[x /. simpRules, FormVars, FacSimp])\) /; FormDegree[x] > 0; FacSimp[x_] := \((#1 /. \[InvisibleSpace]simpRules&)\)/@ If[varList === {} || FreeALLQ[x, varList], Factor[x /. \[InvisibleSpace]simpRules] /. \[InvisibleSpace]simpRules, Collect[x /. \[InvisibleSpace]simpRules, varList, Factor] /. \[InvisibleSpace]simpRules]; \)], "Input"], Cell[BoxData[ \(zeroQ[0] = True; zeroQ[x_List] := And@@\((zeroQ/@Union[Flatten[x]])\); zeroQ[x_SeriesData] := If[x[\([3]\)] === {}, True, False]; zeroQ[x_] := False; \)], "Input"], Cell[BoxData[ \(nonZeroL[x_] := Select[Union[Flatten[{x}]], \(! zeroQ[#]\)&]\)], "Input"], Cell[BoxData[ \(nonZeroN[x_] := Length[Select[Flatten[{x}], \(! zeroQ[#]\)&]]\)], "Input"], Cell[CellGroupData[{ Cell[BoxData[ \(\(indepTerms[x_, opt_: {}] := redPlus[redTimes[nonZeroL[x], opt]]; \)\)], "Input"], Cell[BoxData[ \(redTimes[x_, opt_: {}] := Block[{tmp$ = Select[x, Head[#1] === Times\ &], rst$}, rst$ = Complement[x, tmp$]; \ Union[rst$, Map[numb2[#, opt]&, tmp$]]] \)], "Input"], Cell[BoxData[ \(numb1[x_, opt_: {}] := 1 /; NumericQ[x]; numb1[x_^y_., opt_: {}] := 1 /; MemberQ[opt, x]; numb1[x_, opt_: {}] := x; numb2[x_, opt_: {}] := Times@@Map[numb1[#, opt]&, Level[x, 1]]\)], "Input"], Cell[BoxData[ \(\(redPlus[x_] := Block[{tmp$ = Select[x, Head[#] === Plus&], rst$, i$, negi$}, rst$ = Complement[x, tmp$]; i$ = 1; While[i$ < Length[tmp$], negi$ = Select[tmp$, # === \(-tmp$[\([i$]\)]\)&]; If[negi$ =!= {}, tmp$ = Complement[tmp$, negi$]]; i$ = i$ + 1]; Union[tmp$, rst$]]; \)\)], "Input"] }, Closed]], Cell[BoxData[ \(\(RiemSym[h_] := \((h[a_, a_, c_, d_] = 0; h[a_, b_, c_, c_] = 0; h[a_, b_, c_, d_] := \(-h[b, a, c, d]\) /; a > b; h[a_, b_, c_, d_] := \(-h[a, b, d, c]\) /; c > d; h[a_, b_, c_, d_] := h[c, d, a, b] /; a > c || \((a === c && b > d)\)) \); \)\)], "Input"], Cell[BoxData[ \(\(epsilon[a__] := Signature[{a}]; \)\)], "Input"], Cell[BoxData[ \(\(zeroTensor[rnk_] := Fold[Table, 0, List/@Table[Dim, {rnk}]]; \)\)], "Input"], Cell[CellGroupData[{ Cell[BoxData[ \(\(FuncRepRules[f_[y__], g_, ord_: 2] := \(FuncRepRules[f[y], g, ord] = Block[{tmp$ = {f[y] -> g}, indL = indexList[Length[{y}], ord]}, Do[tmp$ = {tmp$, \(\(Derivative[Sequence@@indL[\([i]\)]]\)[f]\)[y]\ -> Expand[FaSi[ D[g, Sequence@@Transpose[{{y}, indL[\([i]\)]}]]]]}, {i, Length[indL]}]; Flatten[tmp$]]\); \)\)], "Input"], Cell[BoxData[ \(indexList[varNo_, ord_] := Block[{tmp$, indL}, tmp$ = NestList[RotateRight, Join[{1}, Table[0, {varNo - 1}]], varNo - 1]; If[ord > 1, Do[indL = tmp$; Do[tmp$ = Join[tmp$, Map[Plus[indL[\([i]\)], #]&, indL]], {i, varNo}], {ord - 1}]]; Union[tmp$]]\)], "Input"] }, Closed]], Cell[BoxData[ \(MF[x_] := \ Which[ByteCount[x] < 40000/Dim, MatrixForm[x], ByteCount[x] < 60000, x, True, Map[Short[#, 30/Dim]&, x, 2]]; DeclareForms[1, e[_]]; \)], "Input"], Cell[BoxData[ \(If[$VersionNumber < 6., st$pr6$[x__] := StylePrint[x], st$pr6$[x__] := Print[Style[x]]]\)], "Input"], Cell[BoxData[ \(\(stPrint[x_, y_: Null] := If[y === Null, st$pr6$[x, \ FontSize -> 16, FontSlant -> "\", FontColor -> RGBColor[1, \ 0, \ 1]], st$pr6$[x, \ FontSize -> 20, FontWeight -> "\", FontColor -> RGBColor[1, \ 0, \ 1]]]; \)\)], "Input"], Cell[BoxData[ \(\(timePrint[x_, sT_] := Print[x<>"\< computed in \>", TimeUsed[] - sT, "\< sec\>"]; \)\)], "Input"], Cell[BoxData[ \(\(testSER[x_, y_String, z_: "\<\>"] := Block[{tmp, k}, If[FreeQ[x, SeriesData] || \((Dim === 2 && TensRnk[x] < 4)\), y<>z, \[IndentingNewLine]tmp = Sort[Union[ Select[Flatten[ Which[TensRnk[x] === 4, Raise[x, 1, 2], TensRnk[x] > 1, Raise[x, 1], True, x]], Head[#] === SeriesData&]], #1[\([\(-2\)]\)]/#1[\([\(-1\)]\)] < #2[\([\(-2\)]\)]/#2[\([\(-1\)]\)]&]; k = "\< to order \>"<> ToString[\((tmp[\([1, \(-2\)]\)] - 1)\)/tmp[\([1, \(-1\)]\)]]; y<>If[Length[tmp] > 1, k = k<>"\< or higher\>", k]]]; \)\)], "Input"], Cell[BoxData[ \(SetAttributes[GenCoef, {Listable}]; GenCoef[x_SeriesData, y__] := x /. \((x[\([3]\)] -> Map[Coefficient[#, y]&, x[\([3]\)]])\); GenCoef[x_, y__] := Coefficient[x, y]; \)], "Input"], Cell[BoxData[ \(RGtensors[gIN_, xIN_, opt___] := \ \(Module[{frameOpt = 0, eIN, Ropt = True, Wopt = True, idMat, eFrame, dxRul, Bmat, Amat, NP$ = False, de, a, b, c, id, k, StrCon, \[Gamma]Udd, \[Gamma]ddd, gddd, Gamddd, rmn, tmp, RUd, Rg, gg, sT, Cflat, EinSp}, Clear[GUdd, covD, covDiv, LieD, \[Omega]Ud, RUddd, Rdd, EUd, R, Wdddd, detg, rtAbsdetg, eta, HStar, \[Tau], \[Kappa], \[Rho], \[Sigma], \[Gamma], \[Epsilon], \[Alpha], \[Beta], \[Nu], \[Lambda], \[Mu], \[CapitalLambda], \[CapitalPsi], \[CapitalPhi]]; \n\t\tDEF$covD; DEF$covDiv; DEF$LieD; \t\t \[IndentingNewLine]\[IndentingNewLine]Which[Head[xIN] =!= List, tmp = "\", Head[gIN] =!= List, tmp = "\"]; If[Head[tmp] === String, stPrint[tmp<>"\"]; Return[]]; Dim = Length[xIN]; If[Dim\ =!= Length[gIN], stPrint["\"]; Print["\", Dimensions[gIN], "\< \>", xIN]; Return[]]; If[Transpose[gIN] =!= gIN, Print[Map[Short[#, 30/Dim]&, gIN, 2], "\< is not a symmetric matrix\>"]; Return[]]; \[IndentingNewLine]If[ gIN === {{0, 1, 0, 0}, {1, 0, 0, 0}, {0, 0, 0, \(-1\)}, {0, 0, \(-1\), 0}}, NP$ = True]; eFrame = e/@Range[Dim]; (*\ frameOpt = \(0\ = \( > \ coordFrame\)\), \ frameOpt = \(1\ = \( > \ explicitFrame\)\), \ frameOpt = \(2\ = \( > \ implicitFrame\)\)\ *) \[IndentingNewLine]\[IndentingNewLine]If[Length[{opt}] > 0, If[Head[\(Flatten[{opt}]\)[\([1]\)]] === e\ , If[Head[dxRuleList] === List && Head[deList] === List, frameOpt = 2; eIN = eFrame, stPrint[ "\"]; Return[]]]; \[IndentingNewLine]\[IndentingNewLine]Which[ \(! IntegerQ[{opt}[\([1, 1]\)]]\) && d[0] =!= 0, stPrint[ "\"]; Return[], Length[{opt}] === 2 && FormDegree[{opt}[\([1]\)]] === 1, If[frameOpt =!= 2, eIN = {opt}[\([1]\)]; frameOpt = 1]; If[{opt}[\([2, 1]\)] === 0, Ropt = False]; If[{opt}[\([2, 2]\)] === 0, Wopt = False], Length[{opt}] === 1 && IntegerQ[opt[\([1]\)]], If[opt[\([1]\)] === 0, Ropt = False]; If[opt[\([2]\)] === 0, Wopt = False], Length[{opt}] === 1 && FormDegree[opt[\([1]\)]] === 1, If[frameOpt =!= 2, eIN = opt; frameOpt = 1], True, stPrint["\"]; Return[]]]; If[frameOpt === 0, eIN = d/@xIN]; If[NP$ && \(! FreeALLQ[ Union[Flatten[{eIN, xIN, {deList, dxRuleList}}]], { \[Tau], \[Kappa], \[Rho], \[Sigma], \[Gamma], \[Epsilon], \[Alpha], \[Beta], \[Nu], \[Lambda], \[Mu], \[CapitalLambda], \[CapitalPsi], \[CapitalPhi]}]\), stPrint["\"]; NP$ = False]; \[IndentingNewLine]\[IndentingNewLine]If[ \(! FreeQ[{gIN, eIN, {deList}}, SeriesData]\), tmp = \(Select[Flatten[{gIN, eIN, {deList}}], Head[#1] === SeriesData\ &]\)[\([1, 1]\)]; If[MemberQ[xIN, tmp], de[1] = ToExpression["\"<>\ ToString[tmp]]; de[2] = ToExpression["\<\[ScriptD]\>"<>\ ToString[tmp]]; DeclareForms[1, \[ScriptD][_], de[1], de[2]]; d[tmp] = de[1]; \[ScriptD][tmp] = de[2]; d[de[1]] = 0; If[frameOpt > 0 && \(! FreeQ[{eIN, {deList, dxRuleList}}, \(d\^\[Prime]\)[0]] \), stPrint[ "\"<>ToString[tmp]<>"\<] not set equal to \>"<> ToString[de[1]]<> "\<. Evaluate RGtensors[...] again!\>"]; Return[]], d[tmp] = 0]]; \[IndentingNewLine]If[frameOpt === 1, DeclareForms[1, \[ScriptD][_]]; eTO$dx = MapThread[ Rule, {eFrame, FacSimp[ eIN /. MapThread[Rule, {d/@xIN, \[ScriptD]/@xIN}]]}]]; \[IndentingNewLine]\[IndentingNewLine]If[ frameOpt > 0 && \((Union[FormDegree/@eIN] =!= {1} || Length[eIN] =!= Dim\ || \ \ \(! zeroQ[eIN /. {d[k_]\ -> \ 0, e[_]\ -> \ 0, \((y_)\) | Bar[y_]\ :> \ 0 /; MemberQ[DifFormSymbols, y]}]\))\), stPrint["\"]; Return[]]; If[Head[varList] =!= List, varList = {}]; \t\t If[Head[simpRules] === Rule || Head[simpRules] === RuleDelayed, simpRules = {simpRules}]; If[Head[simpRules] =!= List, simpRules = {}]; idMat = IdentityMatrix[Dim]; \t\t\n\t\t\t\n\tgdd = gIN; coordList = xIN; Print["\", MF[gdd]]; tmp = eIN.gIN.eIN; k = If[frameOpt === 2, eFrame, d/@coordList]; k = Union[Flatten[Outer[Times, k, k]]]; LineElement = If[Head[tmp] === SeriesData, \n\ \ \ \ \ \ tmp /. tmp[\([3]\)] -> Collect[tmp[\([3]\)], k, FaSi], Collect[tmp, k, FaSi]]; k = {\((\(-1\) + x_Symbol)\)^b_.*\((1 + x_Symbol)\)^b_. :> \((\(-1\) + x^2)\)^b, \((1 - x_Symbol)\)^b_.*\((1 + x_Symbol)\)^b_. :> \((1 - x^2)\)^b, \((x_Symbol - y_Symbol)\)^b_.* \((x_Symbol + y_Symbol)\)^b_. :> \((x^2 - y^2)\)^b}; LineElement = LineElement //. k; Print["\", Short[LineElement, 8\ Dim]]; sT = TimeUsed[]; gUU = FixedPoint[FaSi, Inverse[gIN]] //. k; detg = FixedPoint[FaSi, Det[gIN]] //. k; Print["\", MF[gUU]]; Clear[k]; timePrint["\", sT]; \ \n\t\t\n\t Which[frameOpt === 0, Amat = idMat; Bmat = idMat; dxRul = {}, frameOpt === 1 && zeroQ[eIN /. {d[k_]\ -> \ 0, \((y_)\) | Bar[y_]\ :> \ 0 /; MemberQ[DifFormSymbols, y]}], Bmat = \ Array[ GenCoef[eIN[\([#1]\)], d[xIN[\([#2]\)]]]&, {Dim, Dim}]; If[\(! zeroQ[FaSi[Det[Bmat]]]\), sT = TimeUsed[]; If[ByteCount[eIN] > 1500*Dim, stPrint["\"]]; Amat = FaSi[Inverse[Bmat]]; dxRul = MapThread[Rule, {d[xIN], Amat\ .\ eFrame}]; tmp = indepTerms[Flatten[Outer[Wedge, d[xIN], d[xIN]]]]; tmp = MapThread[Rule, {tmp, FacSimp[tmp /. dxRul]}]; de = FacSimp[d[eIN]]; de = FacSimp[de /. tmp]; timePrint["\", sT]; tmp = d[xIN] /. dxRul; MapThread[Set, {d[xIN], tmp}], stPrint["\"]; Return[]], frameOpt === 2, de = deList; dxRul = dxRuleList; tmp = d[xIN] /. dxRul; MapThread[Set, {d[xIN], tmp}]; Amat = Array[ GenCoef[tmp[\([#1]\)], eIN[\([#2]\)]]&, {Dim, Dim}]]; \[IndentingNewLine]\[IndentingNewLine]If[ frameOpt === 2 && \((Length[ Union[\(FreeQ[#, SeriesData]&\)/@{deList, dxRuleList}]] > 1 || \(! FreeQ[gIN, SeriesData]\) && \((FreeQ[deList, SeriesData] || FreeQ[dxRuleList, SeriesData])\))\), stPrint["\"]]; \[IndentingNewLine]\[IndentingNewLine]rtAbsdetg = PowerExpand[Factor[detg^2]^\((1/4)\)]; SetAttributes[HStar, {Listable}]; HStar[0] = 0; If[NP$, rtAbsdetg = I]; HStar[x_SeriesData] := x /. x[\([3]\)]\ -> \ HStar/@x[\([3]\)]; HStar[x_Plus] := FacSimp[Plus\ @@\ \(HStar/@\(List@@x\)\)]; HStar[\((x_)\)*\((y_)\)] := x*HStar[y] /; FormDegree[x] === 0; HStar[x_] := x*rtAbsdetg*Wedge\ @@\ eFrame /; FormDegree[x] === 0; HStar[x_Wedge] := rtAbsdetg/detg /; Length[x] === Dim; HStar[\((x_Wedge)\) | \((x_e)\)] := \(HStar[x] = rtAbsdetg*FacSimp[inn[x, Wedge@@eFrame]]\); \t\t eta[] := \ \(eta[] = rtAbsdetg*Array[epsilon, Table[Dim, {Dim}]]\); \[IndentingNewLine]eta[a__] := \ \(eta[a] = Raise[eta[], a]\); sT = TimeUsed[]; \t\t \[IndentingNewLine]\[IndentingNewLine]If[frameOpt > 0, d[e[a_]] := de[\([a]\)]; StrCon[c_, a_, a_] = 0; StrCon[c_, a_, b_] := \(-StrCon[c, b, a]\) /; a > b; StrCon[c_, a_, b_] := \(-GenCoef[de[\([c]\)], e[a]\[Wedge]e[b]]\); \[Gamma]Udd = Array[StrCon, {Dim, Dim, Dim}]; \[Gamma]ddd = gdd\ .\ \[Gamma]Udd; \(If[NP$, d$f$[0] = de[\([3]\)]\[Wedge]e[1] - e[3]\[Wedge]de[\([1]\)]; d$f$[2] = de[\([2]\)]\[Wedge]e[4] - e[2]\[Wedge]de[\([4]\)]; d$f$[1] = FacSimp[ \((de[\([3]\)]\[Wedge]e[4] - e[3]\[Wedge]de[\([4]\)] + de[\([2]\)]\[Wedge]e[1] - e[2]\[Wedge]de[\([1]\)]) \)/2]]; \)\ , \[Gamma]Udd = zeroTensor[3]; \[Gamma]ddd = \[Gamma]Udd]; \[IndentingNewLine]\[IndentingNewLine] (**\ Tests\ **) If[ frameOpt > 0, tmp = \((d[Union[Flatten[gdd]]] /. dxRul)\) /. e[_] -> 0; If[\(! zeroQ[tmp]\), stPrint["\"]; Print[indepTerms[FacSimp[tmp]]]]; If[frameOpt === 2, If[\((ByteCount[deList] + ByteCount[dxRuleList])\)/Dim < 3000, tmp = FacSimp[FacSimp[d[deList]]]; If[zeroQ[tmp], Print["\"], stPrint["\"]; Print[tmp]; If[\(! zeroQ[tmp /. d[_]\ -> \ 0]\), Return[]]], stPrint["\"]]]]; \[IndentingNewLine]\[IndentingNewLine]Clear[p$D]; p$D[x_, y_] := \(p$D[x, y] = If[Amat === idMat, D[x, coordList[\([y]\)]], Sum[Amat[\([k, y]\)]*D[x, coordList[\([k]\)]], {k, Dim}]] \); \[IndentingNewLine]\[IndentingNewLine]gddd[a_, b_, c_] := gddd[b, a, c] /; a > b; gddd[a_, b_, c_] := \(gddd[a, b, c] = p$D[gdd[\([a, b]\)], c]\); \ k = Array[gddd, {Dim, Dim, Dim}]; \ Clear[gddd]; gddd[c_, a_, b_] := gddd[c, b, a] /; a > b; \[IndentingNewLine]gddd[c_, a_, b_] := \(gddd[c, a, b] = FaSi[\(( k[\([a, c, b]\)] + k[\([b, c, a]\)] - k[\([a, b, c]\)]) \)/2]\); If[frameOpt === 0, Gamddd = Array[gddd, {Dim, Dim, Dim}]; \ Clear[tmp]; \ k = gUU.Gamddd; tmp[c_, a_, b_] := tmp[c, b, a] /; a > b; \ tmp[c_, a_, b_] := \(tmp[c, a, b] = FaSi[k[\([c, a, b]\)]]\); \ GUdd = Array[tmp, {Dim, Dim, Dim}], Gamddd = FaSi[Array[gddd, {Dim, Dim, Dim}] + \((\[Gamma]ddd + Transpose[\[Gamma]ddd] - Transpose[\[Gamma]ddd, {3, 2, 1}])\)/2]; \ GUdd = If[ Union[NumericQ/@Flatten[gUU]] === {True} && nonZeroN[gUU] === Dim, gUU.Gamddd, FaSi[gUU.Gamddd]]]; \ timePrint["\", sT]; \ If[frameOpt > 0, \[Omega]Ud = Array[Sum[GUdd[\([#1, k, #2]\)]*e[k], {k, Dim}]&, {Dim, Dim}]]; If[NP$, NPdefs1]; \[IndentingNewLine]\[IndentingNewLine]sT = TimeUsed[]; RiemSym[rmn]; rmn[a_, b_, c_, id_] := \(rmn[a, b, c, id] = FaSi[p$D[Gamddd[\([a, id, b]\)], c] - p$D[Gamddd[\([a, c, b]\)], id] + Sum[GUdd[\([k, c, b]\)]*Gamddd[\([k, id, a]\)] - GUdd[\([k, id, b]\)]*Gamddd[\([k, c, a]\)] - Gamddd[\([a, k, b]\)]*\[Gamma]Udd[\([k, c, id]\)], { k, Dim}]]\); Rdddd = Array[rmn, {Dim, Dim, Dim, Dim}]; timePrint["\", sT]; sT = TimeUsed[]; If[zeroQ[Rdddd], stPrint[testSER[Rdddd, "\", "\"], 1]; Return[]]; Rg = gUU\ .\ Rdddd; If[Ropt, Clear[rmn]; rmn[a_, b_, c_, c_] = 0; rmn[a_, b_, c_, id_] := \(-rmn[a, b, id, c]\) /; c > id; rmn[a_, b_, c_, id_] := \(rmn[a, b, c, id] = FaSi[Rg[\([a, b, c, id]\)]]\); RUddd = Array[rmn, {Dim, Dim, Dim, Dim}]; timePrint["\", sT]; \ \ Rg = RUddd, stPrint["\"]]; \[IndentingNewLine]\[IndentingNewLine]sT = TimeUsed[]; Rg = Plus@@Transpose[Rg, {1, 2, 1, 3}]; Clear[tmp]; tmp[a_, b_] := tmp[b, a] /; a > b; tmp[a_, b_] := \(tmp[a, b] = FaSi[Rg[\([a, b]\)]]\); Rdd = Array[tmp, {Dim, Dim}]; RUd = gUU\ .\ Rdd; R = FaSi[Plus@@Transpose[RUd, {1, 1}]]; timePrint["\", sT]; sT = TimeUsed[]; \[IndentingNewLine]\t\t \[IndentingNewLine]If[Wopt || Dim < 4, If[Dim > 3, If[zeroQ[Rdd], Wdddd = Rdddd, gg = Transpose[Outer[Times, gdd, gdd], {1, 3, 2, 4}]; gg = gg - Transpose[gg]; Rg = Transpose[Outer[Times, Rdd, gdd], {1, 3, 2, 4}]; Rg = Rg - Transpose[Rg]; Rg = Rg - Transpose[Rg, {1, 2, 4, 3}]; Clear[rmn]; RiemSym[rmn]; rmn[a_, b_, c_, id_] := \(rmn[a, b, c, id] = FaSi[Rdddd[\([a, b, c, id]\)] - Rg[\([a, b, c, id]\)]/\((Dim - 2)\) + R*gg[\([a, b, c, id]\)]/ \((\((Dim - 1)\)*\((Dim - 2)\))\)]\); Wdddd = Array[rmn, {Dim, Dim, Dim, Dim}]], Wdddd = zeroTensor[4]]; timePrint["\", sT]; If[zeroQ[Wdddd], Cflat = True; If[Dim =!= 3, stPrint[testSER[Wdddd, "\"], 1], tmp = CF3d[Wopt]; If[zeroQ[tmp], stPrint[testSER[tmp, "\"], 1]]]], stPrint["\"]]; If[NP$, NPdefs2]; \[IndentingNewLine]\[IndentingNewLine]sT = TimeUsed[]; EUd = FaSi[RUd - 1/2*R*idMat]; If[zeroQ[Rdd], stPrint[testSER[Rdd, "\"], 1], timePrint["\", sT]; If[zeroQ[EUd + \((1/2 - 1/Dim)\)*R*idMat], stPrint[testSER[Rdd - 1/Dim*R*gdd, "\"], 1]; EinSp = True]]; \t\t \[IndentingNewLine]If[ Dim > 2 && Cflat && EinSp || Dim === 2 && zeroQ[FaSi[covD[R]]], stPrint[testSER[Rdd - 1/Dim*R*gdd, "\", "\"], 1]]; "\"] // Timing\) // Apply[#2<>ToString[#1]&, If[#[\([2]\)] === Return[] || #[\([2]\)] === Null, # /. #[\([2]\)] -> "\", #] /. Second\ \[Rule] \ "\"]&\)], "Input"], Cell[BoxData[ \(\(CF3d[x_] := If[x, stPrint["\"]; Block[{tmp$ = covD[Rdd] - Outer[Times, gdd, \(covD[R]/2\)/\((Dim - 1)\)]}, FaSi[tmp$ - Transpose[tmp$, {1, 3, 2}]]], stPrint["\<3-dim conformal flatness not tested\>"]; Return[1]]; \)\)], "Input"], Cell[BoxData[ \(NPdefs1 := \(($\[Pi] = GenCoef[d$f$[1], e[1]\[Wedge]e[2]\[Wedge]e[3]]; \[Mu] = GenCoef[d$f$[1], e[1]\[Wedge]e[3]\[Wedge]e[4]]; \[Tau] = \(-GenCoef[d$f$[1], e[1]\[Wedge]e[2]\[Wedge]e[4]]\); \[Rho] = \(-GenCoef[d$f$[1], e[2]\[Wedge]e[3]\[Wedge]e[4]]\); tmp$ = FacSimp[ d$f$[0] + \[Tau]\ e[1]\[Wedge]e[3]\[Wedge]e[4] + \[Rho]\ e[1]\[Wedge]e[2]\[Wedge]e[3]]; \[Epsilon] = GenCoef[tmp$, e[1]\[Wedge]e[2]\[Wedge]e[3]]/2; \[Beta] = GenCoef[tmp$, e[1]\[Wedge]e[3]\[Wedge]e[4]]/2; \[Sigma] = \(-GenCoef[tmp$, e[1]\[Wedge]e[2]\[Wedge]e[4]]\); \[Kappa] = \(-GenCoef[tmp$, e[2]\[Wedge]e[3]\[Wedge]e[4]]\); tmp$ = FacSimp[ d$f$[2] - $\[Pi]\ e[2]\[Wedge]e[3]\[Wedge]e[4] - \[Mu]\ e[1]\[Wedge]e[2]\[Wedge]e[4]]; \[Gamma] = \(-GenCoef[tmp$, e[1]\[Wedge]e[2]\[Wedge]e[4]]\)/2; \[Alpha] = \(-GenCoef[tmp$, e[2]\[Wedge]e[3]\[Wedge]e[4]]\)/2; \[Lambda] = GenCoef[tmp$, e[1]\[Wedge]e[2]\[Wedge]e[3]]; \[Nu] = GenCoef[tmp$, e[1]\[Wedge]e[3]\[Wedge]e[4]]; Print["\"]; Bar[e[1]] = e[1]; Bar[e[2]] = e[2]; Bar[e[4]] = e[3]; Bar[e[3]] = e[4]; Bar[x_] := x; \[CapitalDelta][x_] := FacSimp[p$D[x, 1]]; \[GothicCapitalD][x_] := FacSimp[p$D[x, 2]]; \[Delta][x_] := FacSimp[\(-p$D[x, 4]\)]; \[Delta]B[x_] := FacSimp[\(-p$D[x, 3]\)]; Print["\"]; )\)\)], "Input"], Cell[BoxData[ \(\(NPdefs2 := \((\[CapitalPhi][0, \ 0] = Rdd[\([2, 2]\)]/2; \[CapitalPhi][0, \ 1] = \(-Rdd[\([2, 4]\)]\)/2; \[CapitalPhi][1, \ 0] = \(-Rdd[\([2, 3]\)]\)/2; \[CapitalPhi][2, \ 2] = Rdd[\([1, 1]\)]/2; \ \[CapitalPhi][2, \ 1] = \(-Rdd[\([3, 1]\)]\)/2; \[CapitalPhi][1, \ 2] = \(-Rdd[\([4, 1]\)]\)/2; \[CapitalPhi][0, \ 2] = Rdd[\([4, 4]\)]/2; \[CapitalPhi][2, \ 0] = Rdd[\([3, 3]\)]/2; \ \[CapitalPhi][1, \ 1] = FaSi[\((Rdd[\([1, 2]\)] + Rdd[\([3, 4]\)])\)/4]; \[CapitalLambda] = \(-R\)/24; tmp$ = "\"; If[Head[Wdddd] =!= Symbol, \[CapitalPsi][0] = \(-Wdddd[\([2, 4, 2, 4]\)]\); \[CapitalPsi][1] = Wdddd[\([2, 4, 2, 1]\)]; \[CapitalPsi][2] = \(-Wdddd[\([2, 4, 3, 1]\)]\); \ \[CapitalPsi][3] = Wdddd[\([2, 1, 3, 1]\)]; \[CapitalPsi][4] = \(-Wdddd[\([3, 1, 3, 1]\)]\); tmp$ = tmp$<>"\"]; \ Print[tmp$<>"\"]; )\); \)\)], "Input"], Cell[BoxData[ \(inn[y_Wedge, x_] := inn[Rest[y], inn[First[y], x]]; inn[e[a_], x_ + y_] := inn[e[a], x] + inn[e[a], y]; inn[e[a_], x_*y_] := x*inn[e[a], y] /; FormDegree[x] === 0; inn[e[a_], x_] := 0 /; FormDegree[x] === 0; inn[e[a_], x_Wedge] := inn[e[a], First[x]]*Rest[x] + \((\(-1\))\)^FormDegree[First[x]]*First[x]\[Wedge]inn[e[a], Rest[x]]; inn[e[a_], e[b_]] := gUU[\([a, b]\)]; \)], "Input"], Cell[BoxData[ \(TensRnk[x_] := If[Head[x] === List, Length[Dimensions[x]], 0]\)], "Input"], Cell[BoxData[ \(\(MoveIndex[x_, i_, g_] := Block[{rnk1 = TensRnk[x], indL}, Which[i === 1, g.x, i === rnk1, x.g, True, indL = Range[rnk1] /. {i -> 1, 1 -> i}; Transpose[g.Transpose[x, indL], indL]]]; \)\)], "Input"], Cell[BoxData[ \(\(Lower[x_, i__] := FacSimp[\(FoldList[MoveIndex[#1, #2, gdd]&, x, Flatten[{i}]]\)[ \([\(-1\)]\)]]; \)\)], "Input"], Cell[BoxData[ \(\(Raise[x_, i__] := FacSimp[\(FoldList[MoveIndex[#1, #2, gUU]&, x, Flatten[{i}]]\)[ \([\(-1\)]\)]]; \)\)], "Input"], Cell[CellGroupData[{ Cell[BoxData[ \(\(multiDot[x_, y_, indPr__] := Block[{rnk1 = TensRnk[x], rnk2 = TensRnk[y], indL = Sort/@Transpose[{indPr}], ordPr = Sort[{indPr}]}, If[Union[First[indL]] =!= First[indL] || indL[\([1, \(-1\)]\)] > rnk1 || Union[indL[\([2]\)]] =!= indL[\([2]\)] || Last[indL[\([2]\)]] > rnk2, errWarn; Return[]]; Which[Length[ordPr] === 1, FacSimp[dotOne[x, y, indPr]], rnk1 === rnk2 && rnk1 === Length[ordPr], FacSimp[dotAll[x, y, ordPr]], True, OKindCon[dotOne[x, y, First[ordPr]], newPrList[ \(ReplaceAll[#, {a_, b_} \[RuleDelayed] {a, b + rnk1}]&\)/@ ordPr]]]]; \)\)], "Input"], Cell[BoxData[ \(\(dotOne[x_, y_, {i_, j_}] := Block[{rnk1 = TensRnk[x], rnk2 = TensRnk[y], tmp$ = FormDegree[0]}, If[tmp$ === 0 && FormDegree[x] > 0 && FormDegree[y] > 0, tmp$ = Wedge, tmp$ = Dot]; tmp$[Transpose[x, Join[Range[i - 1], RotateRight[Range[i, rnk1]]]], Transpose[y, Join[RotateLeft[Range[j]], Range[j + 1, rnk2]]]]]; \)\)], "Input"], Cell[BoxData[ \(\(dotAll[x_, y_, indPr_] := Block[{s$, allInd, sumInd, tmp$ = FormDegree[0]}, allInd = Map[s$, Transpose[indPr], {2}]; sumInd = Transpose[{First[allInd], Table[Dim, {Length[First[allInd]]}]}]; If[tmp$ === 0 && FormDegree[x] > 0 && FormDegree[y] > 0, tmp$ = Wedge, tmp$ = Times]; Sum@@{Unevaluated[ tmp$[x[\([Sequence@@First[allInd]]\)], y[\([Sequence@@allInd[\([2]\)]]\)]]], Sequence@@sumInd}]; \)\)], "Input"] }, Closed]], Cell[CellGroupData[{ Cell[BoxData[ \(\(Contract[x_, indPr__] := Block[{rnk1 = TensRnk[x], indL = Flatten[{indPr}]}, If[Length[Union[indL]] < Length[indL] || Length[indL] > rnk1 || \(Sort[indL]\)[\([\(-1\)]\)] > rnk1, errWarn; Return[], OKindCon[x, Sort[Sort/@{indPr}]]]]; \)\)], "Input"], Cell[BoxData[ \(\(newPrList[x_] := Rest[x] - 1 /. k_ :> k - 1 /; k > x[\([1, 2]\)] - 1; \)\)], "Input"], Cell[BoxData[ \(OKindCon[x_, indPr_] := FacSimp[ConOne[x, First[indPr]]] /; Length[indPr] === 1; OKindCon[x_, indPr_] := OKindCon[ConOne[x, First[indPr]], newPrList[indPr]]; \)], "Input"], Cell[BoxData[ \(\(ConOne[x_, {i_, j_}] := Block[{rnk1 = TensRnk[x], tr1List, tr2List}, tr1List = \((Range[rnk1] /. {j -> i})\) /. k_ :> k - 1 /; k > j; tr2List = Join[Range[i - 1], RotateRight[Range[i, rnk1 - 1]]]; Apply[Plus, Transpose[Transpose[x, tr1List], tr2List], {rnk1 - 2}]]; \)\)], "Input"] }, Closed]], Cell[BoxData[ \(\(errWarn := stPrint["\"]; \)\)], "Input"], Cell[CellGroupData[{ Cell[BoxData[ \(DEF$covD := \((covD[x_List, y_List] := \(covD[x, y] = c$D[x, y]\); covD[x_, y_List] := If[Length[y] > 0, errWarn, covD[x]]; covD[x_] := \(covD[x] = c$D[x]\); )\)\)], "Input"], Cell[BoxData[ \(\(c$D[x_, UpList_: {}] := Module[{k = TensRnk[x]}, If[Length[UpList] > 0 && \((Length[Flatten[UpList]] > k || \(Sort[Flatten[UpList]]\)\[LeftDoubleBracket]\(-1 \)\[RightDoubleBracket] > k)\), errWarn; Return[]]; If[Head[x] === List, Array[cDcomp[x, k, UpList], Table[Dim, {k + 1}]], FaSi[Array[p$D[x, #]&, {Dim}]]]]; \)\)], "Input"], Cell[BoxData[ \(\(\(cDcomp[x_, rnk_, UpList_: {}]\)[y__] := Block[{y$ = Drop[{y}, \(-1\)], z$ = Last[{y}]}, FaSi[p$D[x[\([Sequence@@y$]\)], z$] + Sum[If[MemberQ[UpList, i], GUdd[\([y$[\([i]\)], z$, j]\)] x[\([Sequence@@ReplacePart[y$, j, i]]\)], \(-GUdd[\([j, z$, y$[\([i]\)]]\)]\) x[\([Sequence@@ReplacePart[y$, j, i]]\)]], {j, Dim}, {i, rnk}]]]; \)\)], "Input"] }, Closed]], Cell[BoxData[ \(DEF$covDiv := \((covDiv[x_, UpList_] := \(covDiv[x, UpList] = Module[{k = TensRnk[x], divInd, allInd, freeInd, hhD, s, lt, aInd, FlUpL = Flatten[UpList]}, If[Length[FlUpL] > k || \(Sort[FlUpL]\)[\([\(-1\)]\)] > k || Head[x] =!= List, errWarn; Return[]]; \ If[Length[UpList] > 1, divInd = \(Flatten[Select[UpList, Head[#] === List&]]\)[\([1]\)], divInd = \(Flatten[{UpList}]\)[\([1]\)]]; allInd = \((aInd/@Range[k])\) /. aInd[divInd] -> s; freeInd = Select[allInd, # =!= s&]; \[IndentingNewLine]If[k === 1, Return[FaSi[ Sum[p$D[x[\([s$]\)], s$], {s$, Dim}] + Sum[GUdd[\([s$, s$, j]\)] x[\([j]\)], {j, Dim}, {s$, Dim}]]]]; \[IndentingNewLine]Off[Part::"\"]; lt = Table@@ If[$VersionNumber < 3.5, { Sum[hhD[x[\([Sequence@@allInd]\)], s], {s, Dim}] + Sum[If[MemberQ[Flatten[UpList], i], GUdd[\([allInd[\([i]\)], s, j]\)] x[\([Sequence@@ReplacePart[allInd, j, i]]\)], \(-GUdd[\([j, s, allInd[\([i]\)]]\)]\) x[\([Sequence@@ReplacePart[allInd, j, i]]\)]], { j, Dim}, {i, k}, {s, Dim}], Sequence@@\((Map[List[#, Dim]&, freeInd])\)}, { Unevaluated[ Sum[hhD[x[\([Sequence@@allInd]\)], s] + Sum[If[MemberQ[Flatten[UpList], i], Sum[GUdd[\([allInd[\([i]\)], s, j]\)] x[\([Sequence@@ReplacePart[allInd, j, i]] \)], {j, Dim}], \(-Sum[ GUdd[\([j, s, allInd[\([i]\)]]\)] x[\([Sequence@@ ReplacePart[allInd, j, i]]\)], {j, Dim}]\)], {i, k}], {s, Dim}]], Sequence@@\((Map[List[#, Dim]&, freeInd])\)}]; \[IndentingNewLine]On[Part::"\"]; Return[FaSi[lt /. hhD -> p$D]]]\); )\)\)], "Input"], Cell[BoxData[ \(DEF$LieD := \((LieD[x_List, y_List, z_List] := \(LieD[x, y, z] = LieDerv[x, y, z]\); LieD[x_List, y_] := \(LieD[x, y] = LieDerv[x, y]\); )\)\)], "Input"], Cell[CellGroupData[{ Cell[BoxData[ \(LieDerv[h_List, x_, UpList_: {}] := Module[{k = TensRnk[x], hjdU, hUjd, tmp}, \[IndentingNewLine]If[Length[Dimensions[h]] =!= 1, stPrint["\"]; Return[]]; \[IndentingNewLine]If[ Length[UpList] > 0 && \((Length[Flatten[UpList]] > k || \(Sort[Flatten[UpList]]\)\[LeftDoubleBracket]\(-1 \)\[RightDoubleBracket] > k)\), errWarn; Return[]]; \[IndentingNewLine]hjdU = Array[p$D[h, #]&, {Dim}]; hUjd = Transpose[hjdU]; tmp = h.Array[p$D[x, #]&, {Dim}]; \[IndentingNewLine]FaSi[ If[Head[x] === List, tmp + Sum[ Which[i === 1, If[MemberQ[UpList, i], \(-hUjd.x\), hjdU.x], \[IndentingNewLine]i === k, If[MemberQ[UpList, i], \(-x.hjdU\), x.hUjd], \[IndentingNewLine]True, Transpose[ Inner[Times, x, If[MemberQ[UpList, i], \(-hjdU\), hUjd], Plus, i], OrdN[Join[Range[i - 1], RotateRight[Range[i, k]]]]]], {i, k}], tmp]]]\)], "Input"], Cell[BoxData[ \(OrdN[x_List] := Flatten[\(Position[x, #]&\)/@Sort[x]]\)], "Input"] }, Closed]], Cell[BoxData[ \(Laplacian[x_, UpList_: {}] := covDiv[covD[x, UpList].gUU, Join[UpList, {{TensRnk[x] + 1}}]]\)], "Input"], Cell[BoxData[ \(\(Grad2Norm[x_, y_: Null] := FaSi[If[y === Null, gUU.covD[x].covD[x], gUU.covD[x].covD[y]]] /; Head[x] =!= List && Head[y] =!= List; \)\)], "Input"], Cell[BoxData[ \(\(Bianchi[0] := Block[{tmp$ = covD[Rdddd]}, indepTerms[ FaSi[indepTerms[ tmp$ + Transpose[tmp$, {1, 2, 4, 5, 3}] + Transpose[tmp$, {1, 2, 5, 3, 4}]]]]]; \)\)], "Input"], Cell[BoxData[ \(\(Bianchi[1] := Block[{tmp$ = covD[Rdd]}, If[Head[RUddd] === Symbol, RUddd = Raise[Rdddd, 1]]; indepTerms[ FaSi[indepTerms[ covDiv[RUddd, {1}] + tmp$ - Transpose[tmp$, {1, 3, 2}]]]]]; \)\)], "Input"], Cell[BoxData[ \(\(Bianchi[2] := indepTerms[covDiv[EUd, {1}]]; \)\)], "Input"], Cell[BoxData[ \(Clear$dx\ := \ Which[Head[coordList]\ === \ Symbol, \ Return[], \ Union[Head\ /@\ \(d\ /@\ coordList\), \ {d, \ Symbol}]\ === \ {d, \ Symbol}, \ Return[], \ True, \ Block[{var$, \ dv$, \ i\ = \ 1}, \ While[i\ <= \ Dim, \ var$\ = \ coordList[\([i]\)]; \ dv$\ = \ StringJoin["\", \ ToString[var$]]; \ If[Head[d[var$]]\ =!= \ d, \ d[var$]\ =. \ ]; \ If[FormDegree[ToExpression[dv$]]\ === \ 1, \ ToExpression[StringJoin[dv$, \ "\<=.\>"]]; \ d[var$]\ = ToExpression[dv$]]; \ i\ = \ i\ + \ 1]]; \ If[Length[varList]\ > \ 0, \ stPrint["\"]]; \ If[Head[dxRuleList]\ === \ List\ && \ Head[deList]\ === \ List, \ stPrint["\"]]; \ Clear[eTO$dx, \ dxRuleList, \ deList]; \ varList\ = \ {}; \ If[Union[Head\ /@\ \(d\ /@\ \(e\ /@\ Range[Dim]\)\)]\ =!= \ {d}, \ d[e[a_]]\ =. \ ]]\)], "Input"], Cell[BoxData[ \(\($PrePrint = If[ByteCount[#] > 200000, Short[#, 100], #]&; \)\)], "Input"], Cell[BoxData[ \(\(Protect[cDcomp, CF3d, ConOne, c$D, LieDerv, dotAll, dotOne, epsilon, errWarn, FacSimp, FaSi, indexList, inn, MF, MoveIndex, newPrList, numb1, numb2, OKindCon, redPlus, redTimes, RiemSym, zeroTensor, testSER, OrdN]; \)\)], "Input"], Cell[BoxData[ \(\(On[General::"\", General::"\", UpSet::"\"]; \)\)], "Input"] }, Closed]], Cell["", "Text", FontSize->10, FontColor->RGBColor[0, 0, 1]], Cell[CellGroupData[{ Cell[TextData[{ " 3 Examples (~ 1.5 min) \n", StyleBox["(All timings refer to an Apple iBook G3/900 computer running ", FontSize->14, FontWeight->"Plain"], StyleBox["Mathematica", FontSize->14, FontWeight->"Plain", FontSlant->"Italic"], StyleBox[" 3.0 under Mac OS 9.2.2)", FontSize->14, FontWeight->"Plain"] }], "Section", ShowGroupOpenCloseIcon->True, FontSize->24, FontColor->RGBColor[0, 0, 1]], Cell[TextData[{ "\n\t", StyleBox["In each case, after ", FontSize->16], StyleBox["RGtensors", FontFamily->"Courier", FontSize->16], StyleBox[ " is finished, examples of further calculations, using the other functions \ defined in the package, are given.", FontSize->16] }], "Text"], Cell[BoxData[ \(\(stTim = AbsoluteTime[]; \)\)], "Input"], Cell[CellGroupData[{ Cell["\<\ Example 0: Flat spacetime in rotating prolate spheroidal \ coordinates\ \>", "Subsection", ShowGroupOpenCloseIcon->True, FontSize->16], Cell[TextData[{ StyleBox["\t", FontWeight->"Bold"], "Transform cylindrical coordinates (\[Rho], z, phi) to (\[Lambda], \[Mu], \ \[Phi]), where ", Cell[BoxData[ \(\[Rho]\^2 = \((\[Lambda]\^2 - 1)\)\ \((1 - \[Mu]\^2)\), \ z = \[Lambda]\ \[Mu], \ phi = \[Phi] + \[CapitalOmega]\ t\)]], ":" }], "Text", FontSize->16, FontColor->RGBColor[0, 0, 1]], Cell[BoxData[ \(\(xCoord = {t, \[CurlyPhi], \[Lambda], \[Mu]}; \)\)], "Input"], Cell[BoxData[ \(\(gFLAT = {{1 - \[CapitalOmega]^2\ \((\[Lambda]^2 - 1)\) \((1 - \[Mu]^2)\), \(-\[CapitalOmega]\)\ \((\[Lambda]^2 - 1)\) \((1 - \[Mu]^2)\), 0, 0}, {\(-\[CapitalOmega]\)\ \((\[Lambda]^2 - 1)\) \((1 - \[Mu]^2)\), \(-\((\[Lambda]^2 - 1)\)\) \((1 - \[Mu]^2)\), 0, 0}, {0, 0, \(-\((\[Lambda]^2 - \[Mu]^2)\)\)/\((\[Lambda]^2 - 1)\), 0}, {0, 0, 0, \(-\((\[Lambda]^2 - \[Mu]^2)\)\)/\((1 - \[Mu]^2)\)}}; \)\)], "Input"], Cell[CellGroupData[{ Cell[BoxData[ \(RGtensors[gFLAT, xCoord]\)], "Input"], Cell[BoxData[ InterpretationBox[ RowBox[{\("gdd = "\), "\[InvisibleSpace]", TagBox[ RowBox[{"(", GridBox[{ {\(1 - \((\(-1\) + \[Lambda]\^2)\)\ \((1 - \[Mu]\^2)\)\ \[CapitalOmega]\^2\), \(\(-\((\(-1\) + \[Lambda]\^2)\)\)\ \((1 - \[Mu]\^2)\)\ \[CapitalOmega]\), "0", "0"}, {\(\(-\((\(-1\) + \[Lambda]\^2)\)\)\ \((1 - \[Mu]\^2)\)\ \[CapitalOmega]\), \(\((1 - \[Lambda]\^2)\)\ \((1 - \[Mu]\^2)\)\), "0", "0"}, {"0", "0", \(\(\(-\[Lambda]\^2\) + \[Mu]\^2\)\/\(\(-1\) + \[Lambda]\^2\)\), "0"}, {"0", "0", "0", \(\(\(-\[Lambda]\^2\) + \[Mu]\^2\)\/\(1 - \[Mu]\^2\)\)} }], ")"}], (MatrixForm[ #]&)]}], SequenceForm[ "gdd = ", MatrixForm[ {{ Plus[ 1, Times[ -1, Plus[ -1, Power[ \[Lambda], 2]], Plus[ 1, Times[ -1, Power[ \[Mu], 2]]], Power[ \[CapitalOmega], 2]]], Times[ -1, Plus[ -1, Power[ \[Lambda], 2]], Plus[ 1, Times[ -1, Power[ \[Mu], 2]]], \[CapitalOmega]], 0, 0}, { Times[ -1, Plus[ -1, Power[ \[Lambda], 2]], Plus[ 1, Times[ -1, Power[ \[Mu], 2]]], \[CapitalOmega]], Times[ Plus[ 1, Times[ -1, Power[ \[Lambda], 2]]], Plus[ 1, Times[ -1, Power[ \[Mu], 2]]]], 0, 0}, {0, 0, Times[ Power[ Plus[ -1, Power[ \[Lambda], 2]], -1], Plus[ Times[ -1, Power[ \[Lambda], 2]], Power[ \[Mu], 2]]], 0}, {0, 0, 0, Times[ Power[ Plus[ 1, Times[ -1, Power[ \[Mu], 2]]], -1], Plus[ Times[ -1, Power[ \[Lambda], 2]], Power[ \[Mu], 2]]]}}]], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ RowBox[{\("LineElement = "\), "\[InvisibleSpace]", TagBox[ \(\((1 + \[CapitalOmega]\^2 - \[Lambda]\^2\ \[CapitalOmega]\^2 - \[Mu]\^2\ \[CapitalOmega]\^2 + \[Lambda]\^2\ \[Mu]\^2\ \[CapitalOmega]\^2)\)\ d[t]\^2 - \(\((\[Lambda]\^2 - \[Mu]\^2)\)\ d[\[Lambda]]\^2\)\/\(\(-1\) + \[Lambda]\^2\) - \(\((\(-\[Lambda]\^2\) + \[Mu]\^2)\)\ d[\[Mu]]\^2\)\/\(\(-1\) + \[Mu]\^2\) + 2\ \((\(-1\) + \[Lambda]\^2)\)\ \((\(-1\) + \[Mu]\^2)\)\ \[CapitalOmega]\ d[t]\ d[\[CurlyPhi]] + \((\(-1\) + \[Lambda]\^2)\)\ \((\(-1\) + \[Mu]\^2)\)\ d[\[CurlyPhi]]\^2\), (Short[ #, 32]&)]}], SequenceForm[ "LineElement = ", Short[ Plus[ Times[ Plus[ 1, Power[ \[CapitalOmega], 2], Times[ -1, Power[ \[Lambda], 2], Power[ \[CapitalOmega], 2]], Times[ -1, Power[ \[Mu], 2], Power[ \[CapitalOmega], 2]], Times[ Power[ \[Lambda], 2], Power[ \[Mu], 2], Power[ \[CapitalOmega], 2]]], Power[ d[ t], 2]], Times[ -1, Power[ Plus[ -1, Power[ \[Lambda], 2]], -1], Plus[ Power[ \[Lambda], 2], Times[ -1, Power[ \[Mu], 2]]], Power[ d[ \[Lambda]], 2]], Times[ -1, Power[ Plus[ -1, Power[ \[Mu], 2]], -1], Plus[ Times[ -1, Power[ \[Lambda], 2]], Power[ \[Mu], 2]], Power[ d[ \[Mu]], 2]], Times[ 2, Plus[ -1, Power[ \[Lambda], 2]], Plus[ -1, Power[ \[Mu], 2]], \[CapitalOmega], d[ t], d[ \[CurlyPhi]]], Times[ Plus[ -1, Power[ \[Lambda], 2]], Plus[ -1, Power[ \[Mu], 2]], Power[ d[ \[CurlyPhi]], 2]]], 32]], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ RowBox[{\("gUU = "\), "\[InvisibleSpace]", TagBox[ RowBox[{"(", GridBox[{ {"1", \(-\[CapitalOmega]\), "0", "0"}, {\(-\[CapitalOmega]\), \(\(1 + \[CapitalOmega]\^2 - \[Lambda]\^2\ \[CapitalOmega]\^2 - \[Mu]\^2\ \[CapitalOmega]\^2 + \[Lambda]\^2\ \[Mu]\^2\ \[CapitalOmega]\^2\)\/\(\(( \(-1\) + \[Lambda]\^2)\)\ \((\(-1\) + \[Mu]\^2)\)\)\), "0", "0"}, {"0", "0", \(-\(\(\(-1\) + \[Lambda]\^2\)\/\(\[Lambda]\^2 - \[Mu]\^2\)\)\), "0"}, {"0", "0", "0", \(\(\(-1\) + \[Mu]\^2\)\/\(\[Lambda]\^2 - \[Mu]\^2\)\)} }], ")"}], (MatrixForm[ #]&)]}], SequenceForm[ "gUU = ", MatrixForm[ {{1, Times[ -1, \[CapitalOmega]], 0, 0}, { Times[ -1, \[CapitalOmega]], Times[ Power[ Plus[ -1, Power[ \[Lambda], 2]], -1], Power[ Plus[ -1, Power[ \[Mu], 2]], -1], Plus[ 1, Power[ \[CapitalOmega], 2], Times[ -1, Power[ \[Lambda], 2], Power[ \[CapitalOmega], 2]], Times[ -1, Power[ \[Mu], 2], Power[ \[CapitalOmega], 2]], Times[ Power[ \[Lambda], 2], Power[ \[Mu], 2], Power[ \[CapitalOmega], 2]]]], 0, 0}, {0, 0, Times[ -1, Plus[ -1, Power[ \[Lambda], 2]], Power[ Plus[ Power[ \[Lambda], 2], Times[ -1, Power[ \[Mu], 2]]], -1]], 0}, {0, 0, 0, Times[ Power[ Plus[ Power[ \[Lambda], 2], Times[ -1, Power[ \[Mu], 2]]], -1], Plus[ -1, Power[ \[Mu], 2]]]}}]], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ \("gUU computed in "\[InvisibleSpace]0.0499999999999989341` \[InvisibleSpace]" sec"\), SequenceForm[ "gUU computed in ", 0.049999999999998934, " sec"], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ \("Gamma computed in "\[InvisibleSpace]0.0666666666666664298` \[InvisibleSpace]" sec"\), SequenceForm[ "Gamma computed in ", 0.06666666666666643, " sec"], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ \("Riemann(dddd) computed in "\[InvisibleSpace]0.0666666666666664298` \[InvisibleSpace]" sec"\), SequenceForm[ "Riemann(dddd) computed in ", 0.06666666666666643, " sec"], Editable->False]], "Print"], Cell[BoxData[ \("Flat Space!"\)], "Output", FontSize->20, FontWeight->"Bold", FontColor->RGBColor[1, 0, 1]], Cell[BoxData[ \("Aborted after 0.333333 seconds"\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(GUdd[\([3, 1, 2]\)]\)], "Input"], Cell[BoxData[ \(\(\((\(-1\) + \[Lambda])\)\ \[Lambda]\ \((1 + \[Lambda])\)\ \((\(-1\) + \[Mu])\)\ \((1 + \[Mu])\)\ \[CapitalOmega]\)\/\(\((\[Lambda] - \[Mu])\)\ \((\[Lambda] + \[Mu])\)\)\)], "Output"] }, Open ]], Cell[TextData[{ "\t", StyleBox["Check covariant derivatives of metric tensor:", FontSize->16] }], "Text", FontColor->RGBColor[0, 0, 1]], Cell[CellGroupData[{ Cell[BoxData[ \(covD[gdd]\)], "Input"], Cell[BoxData[ \({{{0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}}, {{0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}}, {{0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}}, {{0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}}}\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(covD[gUU, {1, 2}]\)], "Input"], Cell[BoxData[ \({{{0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}}, {{0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}}, {{0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}}, {{0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}}}\)], "Output"] }, Open ]] }, Closed]], Cell[CellGroupData[{ Cell[" Example 1: Schwarzschild", "Subsection", ShowGroupOpenCloseIcon->True, FontSize->16], Cell[BoxData[ \(\(xCoord = {t, r, \[Theta], \[CurlyPhi]}; \)\)], "Input"], Cell[BoxData[ \(\(g = DiagonalMatrix[{1 - 2 M/r, \(-1\)/\((1 - 2 M/r)\), \(-r^2\), \(-r^2\) Sin[\[Theta]]^2}]; \)\)], "Input"], Cell[BoxData[ \(\(simpRules = TrigRules; \)\)], "Input"], Cell[TextData[{ "\t", StyleBox["TrigRules are predefined rules to implement the identities ", FontSize->16], Cell[BoxData[ StyleBox[\(Cos[\[Theta]]\^2\), FontSize->14]]], " ", StyleBox["+", FontSize->16], Cell[BoxData[ RowBox[{" ", StyleBox[\(Sin[\[Theta]]\^2\), FontSize->14]}]]], StyleBox["=1 and ", FontSize->16], Cell[BoxData[ RowBox[{ StyleBox[\(Csc[\[Theta]]\^2\), FontSize->14], " "}]]], StyleBox["- ", FontSize->16], Cell[BoxData[ \(Cot[\[Theta]]\^2\)], FontSize->14], StyleBox["=1.", FontSize->16] }], "Text", FontColor->RGBColor[0, 0, 1]], Cell[CellGroupData[{ Cell[BoxData[ \(RGtensors[g, xCoord]\)], "Input"], Cell[BoxData[ InterpretationBox[ RowBox[{\("gdd = "\), "\[InvisibleSpace]", TagBox[ RowBox[{"(", GridBox[{ {\(1 - \(2\ M\)\/r\), "0", "0", "0"}, {"0", \(-\(1\/\(1 - \(2\ M\)\/r\)\)\), "0", "0"}, {"0", "0", \(-r\^2\), "0"}, {"0", "0", "0", \(\(-r\^2\)\ Sin[\[Theta]]\^2\)} }], ")"}], (MatrixForm[ #]&)]}], SequenceForm[ "gdd = ", MatrixForm[ {{ Plus[ 1, Times[ -2, M, Power[ r, -1]]], 0, 0, 0}, {0, Times[ -1, Power[ Plus[ 1, Times[ -2, M, Power[ r, -1]]], -1]], 0, 0}, {0, 0, Times[ -1, Power[ r, 2]], 0}, {0, 0, 0, Times[ -1, Power[ r, 2], Power[ Sin[ \[Theta]], 2]]}}]], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ RowBox[{\("LineElement = "\), "\[InvisibleSpace]", TagBox[ \(\(r\ d[r]\^2\)\/\(2\ M - r\) - \(\((2\ M - r)\)\ d[t]\^2\)\/r - r\^2\ d[\[Theta]]\^2 - r\^2\ d[\[CurlyPhi]]\^2\ Sin[\[Theta]]\^2\), (Short[ #, 32]&)]}], SequenceForm[ "LineElement = ", Short[ Plus[ Times[ Power[ Plus[ Times[ 2, M], Times[ -1, r]], -1], r, Power[ d[ r], 2]], Times[ -1, Plus[ Times[ 2, M], Times[ -1, r]], Power[ r, -1], Power[ d[ t], 2]], Times[ -1, Power[ r, 2], Power[ d[ \[Theta]], 2]], Times[ -1, Power[ r, 2], Power[ d[ \[CurlyPhi]], 2], Power[ Sin[ \[Theta]], 2]]], 32]], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ RowBox[{\("gUU = "\), "\[InvisibleSpace]", TagBox[ RowBox[{"(", GridBox[{ {\(-\(r\/\(2\ M - r\)\)\), "0", "0", "0"}, {"0", \(-\(\(\(-2\)\ M + r\)\/r\)\), "0", "0"}, {"0", "0", \(-\(1\/r\^2\)\), "0"}, {"0", "0", "0", \(-\(Csc[\[Theta]]\^2\/r\^2\)\)} }], ")"}], (MatrixForm[ #]&)]}], SequenceForm[ "gUU = ", MatrixForm[ {{ Times[ -1, Power[ Plus[ Times[ 2, M], Times[ -1, r]], -1], r], 0, 0, 0}, {0, Times[ -1, Power[ r, -1], Plus[ Times[ -2, M], r]], 0, 0}, {0, 0, Times[ -1, Power[ r, -2]], 0}, {0, 0, 0, Times[ -1, Power[ r, -2], Power[ Csc[ \[Theta]], 2]]}}]], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ \("gUU computed in "\[InvisibleSpace]0.0333333333333332149` \[InvisibleSpace]" sec"\), SequenceForm[ "gUU computed in ", 0.033333333333333215, " sec"], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ \("Gamma computed in "\[InvisibleSpace]0.0333333333333349912` \[InvisibleSpace]" sec"\), SequenceForm[ "Gamma computed in ", 0.033333333333334991, " sec"], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ \("Riemann(dddd) computed in "\[InvisibleSpace]0.0166666666666657192` \[InvisibleSpace]" sec"\), SequenceForm[ "Riemann(dddd) computed in ", 0.016666666666665719, " sec"], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ \("Riemann(Uddd) computed in "\[InvisibleSpace]0.0333333333333332149` \[InvisibleSpace]" sec"\), SequenceForm[ "Riemann(Uddd) computed in ", 0.033333333333333215, " sec"], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ \("Ricci computed in "\[InvisibleSpace]0.`\[InvisibleSpace]" sec"\), SequenceForm[ "Ricci computed in ", 0.0, " sec"], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ \("Weyl computed in "\[InvisibleSpace]0.`\[InvisibleSpace]" sec"\), SequenceForm[ "Weyl computed in ", 0.0, " sec"], Editable->False]], "Print"], Cell[BoxData[ \("Ricci Flat"\)], "Output", FontSize->20, FontWeight->"Bold", FontColor->RGBColor[1, 0, 1]], Cell[BoxData[ \("All tasks completed in 0.183333 seconds"\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(RUddd[\([1, 2, 1, 2]\)]\)], "Input"], Cell[BoxData[ \(\(-\(\(2\ M\)\/\(\((2\ M - r)\)\ r\^2\)\)\)\)], "Output"] }, Open ]], Cell[TextData[{ "\t", StyleBox["Check the full Bianchi identities:", FontSize->16] }], "Text", FontSize->16, FontColor->RGBColor[0, 0, 1]], Cell[CellGroupData[{ Cell[BoxData[ \(zeroQ[Bianchi[0]] // Timing\)], "Input"], Cell[BoxData[ \({1.36666666666666714`\ Second, True}\)], "Output"] }, Open ]] }, Closed]], Cell[CellGroupData[{ Cell[" Example 1a: Schwarzschild with Cosmological Constant", "Subsection", ShowGroupOpenCloseIcon->True, FontSize->16], Cell[BoxData[ \(\(xCoord = {t, r, \[Theta], \[CurlyPhi]}; \)\)], "Input"], Cell[BoxData[ \(\(g = DiagonalMatrix[{1 - 2 M/r - \[CapitalLambda]\ r^2/3, \(-1\)/\((1 - 2 M/r - \[CapitalLambda]\ r^2/3)\), \(-r^2\), \(-r^2\) Sin[\[Theta]]^2}]; \)\)], "Input"], Cell[BoxData[ \(\(simpRules = TrigRules; \)\)], "Input"], Cell[CellGroupData[{ Cell[BoxData[ \(RGtensors[g, xCoord]\)], "Input"], Cell[BoxData[ InterpretationBox[ RowBox[{\("gdd = "\), "\[InvisibleSpace]", TagBox[ RowBox[{"(", GridBox[{ {\(1 - \(2\ M\)\/r - \(r\^2\ \[CapitalLambda]\)\/3\), "0", "0", "0"}, {"0", \(- \(1\/\(1 - \(2\ M\)\/r - \(r\^2\ \[CapitalLambda]\)\/3\)\)\), "0", "0"}, {"0", "0", \(-r\^2\), "0"}, {"0", "0", "0", \(\(-r\^2\)\ Sin[\[Theta]]\^2\)} }], ")"}], (MatrixForm[ #]&)]}], SequenceForm[ "gdd = ", MatrixForm[ {{ Plus[ 1, Times[ -2, M, Power[ r, -1]], Times[ Rational[ -1, 3], Power[ r, 2], \[CapitalLambda]]], 0, 0, 0}, {0, Times[ -1, Power[ Plus[ 1, Times[ -2, M, Power[ r, -1]], Times[ Rational[ -1, 3], Power[ r, 2], \[CapitalLambda]]], -1]], 0, 0}, {0, 0, Times[ -1, Power[ r, 2]], 0}, {0, 0, 0, Times[ -1, Power[ r, 2], Power[ Sin[ \[Theta]], 2]]}}]], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ RowBox[{\("LineElement = "\), "\[InvisibleSpace]", TagBox[ \(\(3\ r\ d[r]\^2\)\/\(6\ M - 3\ r + r\^3\ \[CapitalLambda]\) - \(\((6\ M - 3\ r + r\^3\ \[CapitalLambda])\)\ d[t]\^2\)\/\(3\ r \) - r\^2\ d[\[Theta]]\^2 - r\^2\ d[\[CurlyPhi]]\^2\ Sin[\[Theta]]\^2\), (Short[ #, 32]&)]}], SequenceForm[ "LineElement = ", Short[ Plus[ Times[ 3, r, Power[ Plus[ Times[ 6, M], Times[ -3, r], Times[ Power[ r, 3], \[CapitalLambda]]], -1], Power[ d[ r], 2]], Times[ Rational[ -1, 3], Power[ r, -1], Plus[ Times[ 6, M], Times[ -3, r], Times[ Power[ r, 3], \[CapitalLambda]]], Power[ d[ t], 2]], Times[ -1, Power[ r, 2], Power[ d[ \[Theta]], 2]], Times[ -1, Power[ r, 2], Power[ d[ \[CurlyPhi]], 2], Power[ Sin[ \[Theta]], 2]]], 32]], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ RowBox[{\("gUU = "\), "\[InvisibleSpace]", TagBox[ RowBox[{"(", GridBox[{ {\(-\(\(3\ r\)\/\(6\ M - 3\ r + r\^3\ \[CapitalLambda]\)\)\), "0", "0", "0"}, {"0", \(\(6\ M - 3\ r + r\^3\ \[CapitalLambda]\)\/\(3\ r\)\), "0", "0"}, {"0", "0", \(-\(1\/r\^2\)\), "0"}, {"0", "0", "0", \(-\(Csc[\[Theta]]\^2\/r\^2\)\)} }], ")"}], (MatrixForm[ #]&)]}], SequenceForm[ "gUU = ", MatrixForm[ {{ Times[ -3, r, Power[ Plus[ Times[ 6, M], Times[ -3, r], Times[ Power[ r, 3], \[CapitalLambda]]], -1]], 0, 0, 0}, {0, Times[ Rational[ 1, 3], Power[ r, -1], Plus[ Times[ 6, M], Times[ -3, r], Times[ Power[ r, 3], \[CapitalLambda]]]], 0, 0}, {0, 0, Times[ -1, Power[ r, -2]], 0}, {0, 0, 0, Times[ -1, Power[ r, -2], Power[ Csc[ \[Theta]], 2]]}}]], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ \("gUU computed in "\[InvisibleSpace]0.0166666666666674956` \[InvisibleSpace]" sec"\), SequenceForm[ "gUU computed in ", 0.016666666666667496, " sec"], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ \("Gamma computed in "\[InvisibleSpace]0.0333333333333332149` \[InvisibleSpace]" sec"\), SequenceForm[ "Gamma computed in ", 0.033333333333333215, " sec"], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ \("Riemann(dddd) computed in "\[InvisibleSpace]0.0333333333333332149` \[InvisibleSpace]" sec"\), SequenceForm[ "Riemann(dddd) computed in ", 0.033333333333333215, " sec"], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ \("Riemann(Uddd) computed in "\[InvisibleSpace]0.0333333333333332149` \[InvisibleSpace]" sec"\), SequenceForm[ "Riemann(Uddd) computed in ", 0.033333333333333215, " sec"], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ \("Ricci computed in "\[InvisibleSpace]0.`\[InvisibleSpace]" sec"\), SequenceForm[ "Ricci computed in ", 0.0, " sec"], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ \("Weyl computed in "\[InvisibleSpace]0.0500000000000007105` \[InvisibleSpace]" sec"\), SequenceForm[ "Weyl computed in ", 0.050000000000000711, " sec"], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ \("Einstein computed in "\[InvisibleSpace]0.`\[InvisibleSpace]" sec"\), SequenceForm[ "Einstein computed in ", 0.0, " sec"], Editable->False]], "Print"], Cell[BoxData[ \("Einstein Space"\)], "Output", FontSize->20, FontWeight->"Bold", FontColor->RGBColor[1, 0, 1]], Cell[BoxData[ \("All tasks completed in 0.3 seconds"\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(Rdd[\([3, 3]\)]\)], "Input"], Cell[BoxData[ \(r\^2\ \[CapitalLambda]\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(R\)], "Input"], Cell[BoxData[ \(\(-4\)\ \[CapitalLambda]\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(Factor[Rdd - R/Dim\ gdd]\)], "Input"], Cell[BoxData[ \({{0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}}\)], "Output"] }, Open ]], Cell[TextData[{ "\t", StyleBox["Check the once-contracted Bianchi identities:", FontSize->16] }], "Text", FontColor->RGBColor[0, 0, 1]], Cell[CellGroupData[{ Cell[BoxData[ \(zeroQ[Bianchi[1]]\)], "Input"], Cell[BoxData[ \(True\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[TextData[{ "\t", StyleBox["Use ", FontSize->16], StyleBox["multiDot", FontSize->16, FontWeight->"Bold"], StyleBox[" and ", FontSize->16], StyleBox["Contract", FontSize->16, FontWeight->"Bold"], StyleBox[ " to compute the quadratic and cubic Weyl tensors and invariants:", FontSize->16] }], "Subsubsection", CellFrame->True, ShowGroupOpenCloseIcon->True, FontColor->RGBColor[0, 0, 1]], Cell[BoxData[ \(\(Off[General::"\", General::"\"]; \)\)], "Input", FontColor->GrayLevel[0.333333]], Cell[BoxData[ \(\(WUUdd = Raise[Wdddd, 1, 2]; \)\)], "Input", FontColor->GrayLevel[0.333333]], Cell[BoxData[ RowBox[{ RowBox[{"(*", RowBox[{ RowBox[{"*", " ", StyleBox["W2", FontColor->RGBColor[0, 0, 1]]}], StyleBox["=", FontColor->RGBColor[0, 0, 1]], StyleBox[\(Weyl\ squared\), FontColor->RGBColor[0, 0, 1]]}], " ", "**)"}], RowBox[{ RowBox[{"W2UUdd", "=", StyleBox[\(multiDot[WUUdd, WUUdd, {3, 1}, {4, 2}]\), ShowStringCharacters->True, NumberMarks->True]}], StyleBox[";", ShowStringCharacters->True, NumberMarks->True], "\n", RowBox[{"(*", RowBox[{ RowBox[{"*", " ", StyleBox["W3", FontColor->RGBColor[0, 0, 1]]}], StyleBox["=", FontColor->RGBColor[0, 0, 1]], StyleBox[\(Weyl\ cubed\), FontColor->RGBColor[0, 0, 1]]}], " ", "**)"}], RowBox[{"W3UUdd", "=", StyleBox[\(multiDot[W2UUdd, WUUdd, {3, 1}, {4, 2}]\), ShowStringCharacters->True, NumberMarks->True]}], StyleBox[";", ShowStringCharacters->True, NumberMarks->True]}]}]], "Input", FontColor->GrayLevel[0.333333]], Cell[BoxData[ RowBox[{ RowBox[{"quadraticInv", "=", RowBox[{ StyleBox["Contract", ShowStringCharacters->True, NumberMarks->True], StyleBox["[", ShowStringCharacters->True, NumberMarks->True], \(W2UUdd, {1, 3}, {2, 4}\), "]"}]}], ";", "\n", RowBox[{"cubicInv", "=", RowBox[{ StyleBox["Contract", ShowStringCharacters->True, NumberMarks->True], StyleBox["[", ShowStringCharacters->True, NumberMarks->True], \(W3UUdd, {1, 3}, {2, 4}\), "]"}]}], ";"}]], "Input", FontColor->GrayLevel[0.333333]], Cell[CellGroupData[{ Cell[BoxData[ \({quadraticInv, cubicInv, quadraticInv^3/cubicInv^2}\)], "Input", FontColor->GrayLevel[0.333333]], Cell[BoxData[ \({\(48\ M\^2\)\/r\^6, \(-\(\(96\ M\^3\)\/r\^9\)\), 12}\)], "Output"] }, Open ]], Cell[TextData[{ "\t", StyleBox["The invariants can be computed directly using ", FontSize->16], StyleBox["multiDot", FontSize->16, FontWeight->"Bold"], StyleBox[":", FontSize->16] }], "Text", FontColor->RGBColor[0, 0, 1]], Cell[CellGroupData[{ Cell[BoxData[ RowBox[{"{", StyleBox[\(multiDot[WUUdd, WUUdd, {1, 3}, {2, 4}, {3, 1}, {4, 2}], multiDot[W2UUdd, WUUdd, {1, 3}, {2, 4}, {3, 1}, {4, 2}]\), ShowStringCharacters->True, NumberMarks->True], StyleBox["}", ShowStringCharacters->True, NumberMarks->True]}]], "Input", FontColor->GrayLevel[0.333333]], Cell[BoxData[ \({\(48\ M\^2\)\/r\^6, \(-\(\(96\ M\^3\)\/r\^9\)\)}\)], "Output"] }, Open ]], Cell[BoxData[ \(\(On[General::"\", General::"\"]; \)\)], "Input", FontColor->GrayLevel[0.333333]] }, Closed]] }, Closed]], Cell[CellGroupData[{ Cell[" Example 2: Robertson-Walker", "Subsection", ShowGroupOpenCloseIcon->True, FontSize->16], Cell[BoxData[ \(\(xCoord = {t, r, \[Theta], \[CurlyPhi]}; \)\)], "Input"], Cell[BoxData[ \(\(g = {{1, 0, 0, 0}, {0, \(-a[t]^2\)/\((1 - k\ r^2)\), 0, 0}, {0, 0, \(-a[t]^2\) r^2, 0}, {0, 0, 0, \(-r^2\) a[t]^2 Sin[\[Theta]]^2}}; \)\)], "Input"], Cell[BoxData[ \(\(simpRules = TrigRules; \)\)], "Input"], Cell[CellGroupData[{ Cell[BoxData[ \(RGtensors[g, xCoord]\)], "Input"], Cell[BoxData[ InterpretationBox[ RowBox[{\("gdd = "\), "\[InvisibleSpace]", TagBox[ RowBox[{"(", GridBox[{ {"1", "0", "0", "0"}, {"0", \(-\(a[t]\^2\/\(1 - k\ r\^2\)\)\), "0", "0"}, {"0", "0", \(\(-r\^2\)\ a[t]\^2\), "0"}, {"0", "0", "0", \(\(-r\^2\)\ a[t]\^2\ Sin[\[Theta]]\^2\)} }], ")"}], (MatrixForm[ #]&)]}], SequenceForm[ "gdd = ", MatrixForm[ {{1, 0, 0, 0}, {0, Times[ -1, Power[ Plus[ 1, Times[ -1, k, Power[ r, 2]]], -1], Power[ a[ t], 2]], 0, 0}, {0, 0, Times[ -1, Power[ r, 2], Power[ a[ t], 2]], 0}, {0, 0, 0, Times[ -1, Power[ r, 2], Power[ a[ t], 2], Power[ Sin[ \[Theta]], 2]]}}]], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ RowBox[{\("LineElement = "\), "\[InvisibleSpace]", TagBox[ \(\(a[t]\^2\ d[r]\^2\)\/\(\(-1\) + k\ r\^2\) + d[t]\^2 - r\^2\ a[t]\^2\ d[\[Theta]]\^2 - r\^2\ a[t]\^2\ d[\[CurlyPhi]]\^2\ Sin[\[Theta]]\^2\), (Short[ #, 32]&)]}], SequenceForm[ "LineElement = ", Short[ Plus[ Times[ Power[ Plus[ -1, Times[ k, Power[ r, 2]]], -1], Power[ a[ t], 2], Power[ d[ r], 2]], Power[ d[ t], 2], Times[ -1, Power[ r, 2], Power[ a[ t], 2], Power[ d[ \[Theta]], 2]], Times[ -1, Power[ r, 2], Power[ a[ t], 2], Power[ d[ \[CurlyPhi]], 2], Power[ Sin[ \[Theta]], 2]]], 32]], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ RowBox[{\("gUU = "\), "\[InvisibleSpace]", TagBox[ RowBox[{"(", GridBox[{ {"1", "0", "0", "0"}, {"0", \(\(\(-1\) + k\ r\^2\)\/a[t]\^2\), "0", "0"}, {"0", "0", \(-\(1\/\(r\^2\ a[t]\^2\)\)\), "0"}, {"0", "0", "0", \(-\(Csc[\[Theta]]\^2\/\(r\^2\ a[t]\^2\)\)\)} }], ")"}], (MatrixForm[ #]&)]}], SequenceForm[ "gUU = ", MatrixForm[ {{1, 0, 0, 0}, {0, Times[ Plus[ -1, Times[ k, Power[ r, 2]]], Power[ a[ t], -2]], 0, 0}, {0, 0, Times[ -1, Power[ r, -2], Power[ a[ t], -2]], 0}, {0, 0, 0, Times[ -1, Power[ r, -2], Power[ a[ t], -2], Power[ Csc[ \[Theta]], 2]]}}]], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ \("gUU computed in "\[InvisibleSpace]0.0333333333333332149` \[InvisibleSpace]" sec"\), SequenceForm[ "gUU computed in ", 0.033333333333333215, " sec"], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ \("Gamma computed in "\[InvisibleSpace]0.0166666666666674956` \[InvisibleSpace]" sec"\), SequenceForm[ "Gamma computed in ", 0.016666666666667496, " sec"], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ \("Riemann(dddd) computed in "\[InvisibleSpace]0.0333333333333332149` \[InvisibleSpace]" sec"\), SequenceForm[ "Riemann(dddd) computed in ", 0.033333333333333215, " sec"], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ \("Riemann(Uddd) computed in "\[InvisibleSpace]0.0333333333333349912` \[InvisibleSpace]" sec"\), SequenceForm[ "Riemann(Uddd) computed in ", 0.033333333333334991, " sec"], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ \("Ricci computed in "\[InvisibleSpace]0.`\[InvisibleSpace]" sec"\), SequenceForm[ "Ricci computed in ", 0.0, " sec"], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ \("Weyl computed in "\[InvisibleSpace]0.0500000000000007105` \[InvisibleSpace]" sec"\), SequenceForm[ "Weyl computed in ", 0.050000000000000711, " sec"], Editable->False]], "Print"], Cell[BoxData[ \("Conformally Flat"\)], "Output", FontSize->20, FontWeight->"Bold", FontColor->RGBColor[1, 0, 1]], Cell[BoxData[ InterpretationBox[ \("Einstein computed in "\[InvisibleSpace]0.`\[InvisibleSpace]" sec"\), SequenceForm[ "Einstein computed in ", 0.0, " sec"], Editable->False]], "Print"], Cell[BoxData[ \("All tasks completed in 0.266667 seconds"\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(Rdd[\([1, 1]\)]\)], "Input"], Cell[BoxData[ RowBox[{"-", FractionBox[ RowBox[{"3", " ", RowBox[{ SuperscriptBox["a", "\[DoublePrime]", MultilineFunction->None], "[", "t", "]"}]}], \(a[t]\)]}]], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(EUd[\([1, 1]\)]\)], "Input"], Cell[BoxData[ FractionBox[ RowBox[{"3", " ", RowBox[{"(", RowBox[{"k", "+", SuperscriptBox[ RowBox[{ SuperscriptBox["a", "\[Prime]", MultilineFunction->None], "[", "t", "]"}], "2"]}], ")"}]}], \(a[t]\^2\)]], "Output"] }, Open ]], Cell[TextData[{ "\t", StyleBox["Check the twice-contracted Bianchi identities:", FontSize->16] }], "Text", FontColor->RGBColor[0, 0, 1]], Cell[CellGroupData[{ Cell[BoxData[ \(zeroQ[Bianchi[2]]\)], "Input"], Cell[BoxData[ \(True\)], "Output"] }, Open ]] }, Closed]], Cell[CellGroupData[{ Cell[" Example 3: Conformally Flat 5-dim metrics", "Subsection", ShowGroupOpenCloseIcon->True, FontSize->16], Cell[BoxData[ \(\(xCoord = {x1, x2, x3, x4, x5}; \)\)], "Input"], Cell[BoxData[ \(\(g = \[CapitalOmega][x1, x2, x3, x4, x5]^2 IdentityMatrix[5]; \)\)], "Input"], Cell[BoxData[ \(\(simpRules = {}; \)\)], "Input"], Cell[CellGroupData[{ Cell[TextData[{ "\t", StyleBox["(1) General Case:", FontSize->16] }], "Subsubsection", ShowGroupOpenCloseIcon->True, FontSize->14, FontColor->RGBColor[0, 0, 1]], Cell[CellGroupData[{ Cell[BoxData[ \(RGtensors[g, xCoord]\)], "Input"], Cell[BoxData[ InterpretationBox[ RowBox[{\("gdd = "\), "\[InvisibleSpace]", TagBox[ RowBox[{"(", GridBox[{ {\(\[CapitalOmega][x1, x2, x3, x4, x5]\^2\), "0", "0", "0", "0"}, {"0", \(\[CapitalOmega][x1, x2, x3, x4, x5]\^2\), "0", "0", "0"}, {"0", "0", \(\[CapitalOmega][x1, x2, x3, x4, x5]\^2\), "0", "0"}, {"0", "0", "0", \(\[CapitalOmega][x1, x2, x3, x4, x5]\^2\), "0"}, {"0", "0", "0", "0", \(\[CapitalOmega][x1, x2, x3, x4, x5]\^2\)} }], ")"}], (MatrixForm[ #]&)]}], SequenceForm[ "gdd = ", MatrixForm[ {{ Power[ \[CapitalOmega][ x1, x2, x3, x4, x5], 2], 0, 0, 0, 0}, {0, Power[ \[CapitalOmega][ x1, x2, x3, x4, x5], 2], 0, 0, 0}, {0, 0, Power[ \[CapitalOmega][ x1, x2, x3, x4, x5], 2], 0, 0}, {0, 0, 0, Power[ \[CapitalOmega][ x1, x2, x3, x4, x5], 2], 0}, {0, 0, 0, 0, Power[ \[CapitalOmega][ x1, x2, x3, x4, x5], 2]}}]], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ RowBox[{\("LineElement = "\), "\[InvisibleSpace]", TagBox[ \(d[x1]\^2\ \[CapitalOmega][x1, x2, x3, x4, x5]\^2 + d[x2]\^2\ \[CapitalOmega][x1, x2, x3, x4, x5]\^2 + d[x3]\^2\ \[CapitalOmega][x1, x2, x3, x4, x5]\^2 + d[x4]\^2\ \[CapitalOmega][x1, x2, x3, x4, x5]\^2 + d[x5]\^2\ \[CapitalOmega][x1, x2, x3, x4, x5]\^2\), (Short[ #, 40]&)]}], SequenceForm[ "LineElement = ", Short[ Plus[ Times[ Power[ d[ x1], 2], Power[ \[CapitalOmega][ x1, x2, x3, x4, x5], 2]], Times[ Power[ d[ x2], 2], Power[ \[CapitalOmega][ x1, x2, x3, x4, x5], 2]], Times[ Power[ d[ x3], 2], Power[ \[CapitalOmega][ x1, x2, x3, x4, x5], 2]], Times[ Power[ d[ x4], 2], Power[ \[CapitalOmega][ x1, x2, x3, x4, x5], 2]], Times[ Power[ d[ x5], 2], Power[ \[CapitalOmega][ x1, x2, x3, x4, x5], 2]]], 40]], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ RowBox[{\("gUU = "\), "\[InvisibleSpace]", TagBox[ RowBox[{"(", GridBox[{ {\(1\/\[CapitalOmega][x1, x2, x3, x4, x5]\^2\), "0", "0", "0", "0"}, {"0", \(1\/\[CapitalOmega][x1, x2, x3, x4, x5]\^2\), "0", "0", "0"}, {"0", "0", \(1\/\[CapitalOmega][x1, x2, x3, x4, x5]\^2\), "0", "0"}, {"0", "0", "0", \(1\/\[CapitalOmega][x1, x2, x3, x4, x5]\^2\), "0"}, {"0", "0", "0", "0", \(1\/\[CapitalOmega][x1, x2, x3, x4, x5]\^2\)} }], ")"}], (MatrixForm[ #]&)]}], SequenceForm[ "gUU = ", MatrixForm[ {{ Power[ \[CapitalOmega][ x1, x2, x3, x4, x5], -2], 0, 0, 0, 0}, {0, Power[ \[CapitalOmega][ x1, x2, x3, x4, x5], -2], 0, 0, 0}, {0, 0, Power[ \[CapitalOmega][ x1, x2, x3, x4, x5], -2], 0, 0}, {0, 0, 0, Power[ \[CapitalOmega][ x1, x2, x3, x4, x5], -2], 0}, {0, 0, 0, 0, Power[ \[CapitalOmega][ x1, x2, x3, x4, x5], -2]}}]], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ \("gUU computed in "\[InvisibleSpace]0.0166666666666657192` \[InvisibleSpace]" sec"\), SequenceForm[ "gUU computed in ", 0.016666666666665719, " sec"], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ \("Gamma computed in "\[InvisibleSpace]0.0333333333333332149` \[InvisibleSpace]" sec"\), SequenceForm[ "Gamma computed in ", 0.033333333333333215, " sec"], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ \("Riemann(dddd) computed in "\[InvisibleSpace]0.133333333333332859` \[InvisibleSpace]" sec"\), SequenceForm[ "Riemann(dddd) computed in ", 0.13333333333333286, " sec"], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ \("Riemann(Uddd) computed in "\[InvisibleSpace]0.283333333333333214` \[InvisibleSpace]" sec"\), SequenceForm[ "Riemann(Uddd) computed in ", 0.28333333333333321, " sec"], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ \("Ricci computed in "\[InvisibleSpace]0.0500000000000007105` \[InvisibleSpace]" sec"\), SequenceForm[ "Ricci computed in ", 0.050000000000000711, " sec"], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ \("Weyl computed in "\[InvisibleSpace]0.11666666666666714` \[InvisibleSpace]" sec"\), SequenceForm[ "Weyl computed in ", 0.11666666666666714, " sec"], Editable->False]], "Print"], Cell[BoxData[ \("Conformally Flat"\)], "Output", FontSize->20, FontWeight->"Bold", FontColor->RGBColor[1, 0, 1]], Cell[BoxData[ InterpretationBox[ \("Einstein computed in "\[InvisibleSpace]0.0333333333333332149` \[InvisibleSpace]" sec"\), SequenceForm[ "Einstein computed in ", 0.033333333333333215, " sec"], Editable->False]], "Print"], Cell[BoxData[ \("All tasks completed in 0.716667 seconds"\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(GUdd[\([2, 2, 2]\)]\)], "Input"], Cell[BoxData[ FractionBox[ RowBox[{ SuperscriptBox["\[CapitalOmega]", TagBox[\((0, 1, 0, 0, 0)\), Derivative], MultilineFunction->None], "[", \(x1, x2, x3, x4, x5\), "]"}], \(\[CapitalOmega][x1, x2, x3, x4, x5]\)]], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(EUd[\([1, 1]\)]\)], "Input"], Cell[BoxData[ RowBox[{\(1\/\[CapitalOmega][x1, x2, x3, x4, x5]\^4\), RowBox[{"(", RowBox[{"3", " ", RowBox[{"(", RowBox[{ RowBox[{\(\[CapitalOmega][x1, x2, x3, x4, x5]\), " ", RowBox[{ SuperscriptBox["\[CapitalOmega]", TagBox[\((0, 0, 0, 0, 2)\), Derivative], MultilineFunction->None], "[", \(x1, x2, x3, x4, x5\), "]"}]}], "+", RowBox[{\(\[CapitalOmega][x1, x2, x3, x4, x5]\), " ", RowBox[{ SuperscriptBox["\[CapitalOmega]", TagBox[\((0, 0, 0, 2, 0)\), Derivative], MultilineFunction->None], "[", \(x1, x2, x3, x4, x5\), "]"}]}], "+", RowBox[{\(\[CapitalOmega][x1, x2, x3, x4, x5]\), " ", RowBox[{ SuperscriptBox["\[CapitalOmega]", TagBox[\((0, 0, 2, 0, 0)\), Derivative], MultilineFunction->None], "[", \(x1, x2, x3, x4, x5\), "]"}]}], "+", RowBox[{\(\[CapitalOmega][x1, x2, x3, x4, x5]\), " ", RowBox[{ SuperscriptBox["\[CapitalOmega]", TagBox[\((0, 2, 0, 0, 0)\), Derivative], MultilineFunction->None], "[", \(x1, x2, x3, x4, x5\), "]"}]}], "+", RowBox[{"2", " ", SuperscriptBox[ RowBox[{ SuperscriptBox["\[CapitalOmega]", TagBox[\((1, 0, 0, 0, 0)\), Derivative], MultilineFunction->None], "[", \(x1, x2, x3, x4, x5\), "]"}], "2"]}]}], ")"}]}], ")"}]}]], "Output"] }, Open ]], Cell[TextData[{ "\t", StyleBox["Of the 5^4 components in Rdddd", FontSize->16] }], "Text", FontColor->RGBColor[0, 0, 1]], Cell[CellGroupData[{ Cell[BoxData[ \(nonZeroN[Rdddd]\)], "Input"], Cell[BoxData[ \(280\)], "Output"] }, Open ]], Cell[TextData[{ "\t", StyleBox["are non-zero, of which ", FontSize->16] }], "Text", FontColor->RGBColor[0, 0, 1]], Cell[CellGroupData[{ Cell[BoxData[ \(Length[nonZeroL[Rdddd]]\)], "Input"], Cell[BoxData[ \(40\)], "Output"] }, Open ]], Cell[TextData[{ "\t", StyleBox["are different. Of these ", FontSize->16] }], "Text", FontColor->RGBColor[0, 0, 1]], Cell[CellGroupData[{ Cell[BoxData[ \(Length[indepTerms[Rdddd]]\)], "Input"], Cell[BoxData[ \(20\)], "Output"] }, Open ]], Cell[TextData[{ "\t", StyleBox["are independent (modulo numerical factors).", FontSize->16] }], "Text", FontColor->RGBColor[0, 0, 1]], Cell[TextData[{ "\t", StyleBox["Useful Hint: To find which components of ", FontSize->16], StyleBox["Rdddd", FontFamily->"Courier", FontSize->16], StyleBox[" equal a particular expression in ", FontSize->16], StyleBox["nonZeroL", FontFamily->"Courier", FontSize->16], StyleBox[", use the ", FontSize->16], StyleBox["Mathematica", FontSize->16, FontSlant->"Italic"], StyleBox[" function ", FontSize->16], StyleBox["Position", FontFamily->"Courier", FontSize->16, FontWeight->"Bold"], StyleBox[":", FontSize->16] }], "Text", FontColor->RGBColor[0, 0, 1]], Cell[CellGroupData[{ Cell[BoxData[ \(Position[Rdddd, \(nonZeroL[Rdddd]\)[\([1]\)]]\)], "Input"], Cell[BoxData[ \({{1, 4, 1, 5}, {1, 5, 1, 4}, {2, 4, 2, 5}, {2, 5, 2, 4}, {3, 4, 3, 5}, { 3, 5, 3, 4}, {4, 1, 5, 1}, {4, 2, 5, 2}, {4, 3, 5, 3}, {5, 1, 4, 1}, { 5, 2, 4, 2}, {5, 3, 4, 3}}\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(Rdddd[\([1, 4, 1, 5]\)] === \(nonZeroL[Rdddd]\)[\([1]\)]\)], "Input"], Cell[BoxData[ \(True\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(Rdddd[\([2, 4, 2, 5]\)] === \(nonZeroL[Rdddd]\)[\([1]\)]\)], "Input"], Cell[BoxData[ \(True\)], "Output"] }, Open ]] }, Closed]], Cell[CellGroupData[{ Cell[TextData[{ "\t", StyleBox["(2) Constant Curvature Case:", FontSize->16] }], "Subsubsection", ShowGroupOpenCloseIcon->True, FontSize->14, FontColor->RGBColor[0, 0, 1]], Cell[CellGroupData[{ Cell[BoxData[ \(RGtensors[ g /. {\[CapitalOmega][x1, x2, x3, x4, x5] -> 1/\((1 + K/4 \((x1^2 + x2^2 + x3^2 + x4^2 + x5^2)\))\)}, xCoord] \)], "Input"], Cell[BoxData[ InterpretationBox[ RowBox[{\("gdd = "\), "\[InvisibleSpace]", TagBox[ RowBox[{"(", GridBox[{ {\(1\/\((1 + 1\/4\ K\ \((x1\^2 + x2\^2 + x3\^2 + x4\^2 + x5\^2) \))\)\^2\), "0", "0", "0", "0"}, {"0", \(1 \/\((1 + 1\/4\ K\ \((x1\^2 + x2\^2 + x3\^2 + x4\^2 + x5\^2) \))\)\^2\), "0", "0", "0"}, {"0", "0", \(1\/\((1 + 1\/4\ K\ \((x1\^2 + x2\^2 + x3\^2 + x4\^2 + x5\^2) \))\)\^2\), "0", "0"}, {"0", "0", "0", \(1\/\((1 + 1\/4\ K\ \((x1\^2 + x2\^2 + x3\^2 + x4\^2 + x5\^2) \))\)\^2\), "0"}, {"0", "0", "0", "0", \(1\/\((1 + 1\/4\ K\ \((x1\^2 + x2\^2 + x3\^2 + x4\^2 + x5\^2) \))\)\^2\)} }], ")"}], (MatrixForm[ #]&)]}], SequenceForm[ "gdd = ", MatrixForm[ {{ Power[ Plus[ 1, Times[ Rational[ 1, 4], K, Plus[ Power[ x1, 2], Power[ x2, 2], Power[ x3, 2], Power[ x4, 2], Power[ x5, 2]]]], -2], 0, 0, 0, 0}, {0, Power[ Plus[ 1, Times[ Rational[ 1, 4], K, Plus[ Power[ x1, 2], Power[ x2, 2], Power[ x3, 2], Power[ x4, 2], Power[ x5, 2]]]], -2], 0, 0, 0}, {0, 0, Power[ Plus[ 1, Times[ Rational[ 1, 4], K, Plus[ Power[ x1, 2], Power[ x2, 2], Power[ x3, 2], Power[ x4, 2], Power[ x5, 2]]]], -2], 0, 0}, {0, 0, 0, Power[ Plus[ 1, Times[ Rational[ 1, 4], K, Plus[ Power[ x1, 2], Power[ x2, 2], Power[ x3, 2], Power[ x4, 2], Power[ x5, 2]]]], -2], 0}, {0, 0, 0, 0, Power[ Plus[ 1, Times[ Rational[ 1, 4], K, Plus[ Power[ x1, 2], Power[ x2, 2], Power[ x3, 2], Power[ x4, 2], Power[ x5, 2]]]], -2]}}]], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ RowBox[{\("LineElement = "\), "\[InvisibleSpace]", TagBox[ \(\(16\ d[x1]\^2\)\/\(( 4 + K\ x1\^2 + K\ x2\^2 + K\ x3\^2 + K\ x4\^2 + K\ x5\^2) \)\^2 + \(16\ d[x2]\^2\)\/\(( 4 + K\ x1\^2 + K\ x2\^2 + K\ x3\^2 + K\ x4\^2 + K\ x5\^2) \)\^2 + \(16\ d[x3]\^2\)\/\(( 4 + K\ x1\^2 + K\ x2\^2 + K\ x3\^2 + K\ x4\^2 + K\ x5\^2) \)\^2 + \(16\ d[x4]\^2\)\/\(( 4 + K\ x1\^2 + K\ x2\^2 + K\ x3\^2 + K\ x4\^2 + K\ x5\^2) \)\^2 + \(16\ d[x5]\^2\)\/\(( 4 + K\ x1\^2 + K\ x2\^2 + K\ x3\^2 + K\ x4\^2 + K\ x5\^2) \)\^2\), (Short[ #, 40]&)]}], SequenceForm[ "LineElement = ", Short[ Plus[ Times[ 16, Power[ Plus[ 4, Times[ K, Power[ x1, 2]], Times[ K, Power[ x2, 2]], Times[ K, Power[ x3, 2]], Times[ K, Power[ x4, 2]], Times[ K, Power[ x5, 2]]], -2], Power[ d[ x1], 2]], Times[ 16, Power[ Plus[ 4, Times[ K, Power[ x1, 2]], Times[ K, Power[ x2, 2]], Times[ K, Power[ x3, 2]], Times[ K, Power[ x4, 2]], Times[ K, Power[ x5, 2]]], -2], Power[ d[ x2], 2]], Times[ 16, Power[ Plus[ 4, Times[ K, Power[ x1, 2]], Times[ K, Power[ x2, 2]], Times[ K, Power[ x3, 2]], Times[ K, Power[ x4, 2]], Times[ K, Power[ x5, 2]]], -2], Power[ d[ x3], 2]], Times[ 16, Power[ Plus[ 4, Times[ K, Power[ x1, 2]], Times[ K, Power[ x2, 2]], Times[ K, Power[ x3, 2]], Times[ K, Power[ x4, 2]], Times[ K, Power[ x5, 2]]], -2], Power[ d[ x4], 2]], Times[ 16, Power[ Plus[ 4, Times[ K, Power[ x1, 2]], Times[ K, Power[ x2, 2]], Times[ K, Power[ x3, 2]], Times[ K, Power[ x4, 2]], Times[ K, Power[ x5, 2]]], -2], Power[ d[ x5], 2]]], 40]], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ RowBox[{\("gUU = "\), "\[InvisibleSpace]", TagBox[ RowBox[{"(", GridBox[{ {\(1\/16\ \((4 + K\ x1\^2 + K\ x2\^2 + K\ x3\^2 + K\ x4\^2 + K\ x5\^2)\)\^2\), "0", "0", "0", "0"}, {"0", \(1\/16\ \((4 + K\ x1\^2 + K\ x2\^2 + K\ x3\^2 + K\ x4\^2 + K\ x5\^2)\)\^2\), "0", "0", "0"}, {"0", "0", \(1\/16\ \((4 + K\ x1\^2 + K\ x2\^2 + K\ x3\^2 + K\ x4\^2 + K\ x5\^2)\)\^2\), "0", "0"}, {"0", "0", "0", \(1\/16\ \((4 + K\ x1\^2 + K\ x2\^2 + K\ x3\^2 + K\ x4\^2 + K\ x5\^2)\)\^2\), "0"}, {"0", "0", "0", "0", \(1\/16\ \((4 + K\ x1\^2 + K\ x2\^2 + K\ x3\^2 + K\ x4\^2 + K\ x5\^2)\)\^2\)} }], ")"}], (MatrixForm[ #]&)]}], SequenceForm[ "gUU = ", MatrixForm[ {{ Times[ Rational[ 1, 16], Power[ Plus[ 4, Times[ K, Power[ x1, 2]], Times[ K, Power[ x2, 2]], Times[ K, Power[ x3, 2]], Times[ K, Power[ x4, 2]], Times[ K, Power[ x5, 2]]], 2]], 0, 0, 0, 0}, {0, Times[ Rational[ 1, 16], Power[ Plus[ 4, Times[ K, Power[ x1, 2]], Times[ K, Power[ x2, 2]], Times[ K, Power[ x3, 2]], Times[ K, Power[ x4, 2]], Times[ K, Power[ x5, 2]]], 2]], 0, 0, 0}, {0, 0, Times[ Rational[ 1, 16], Power[ Plus[ 4, Times[ K, Power[ x1, 2]], Times[ K, Power[ x2, 2]], Times[ K, Power[ x3, 2]], Times[ K, Power[ x4, 2]], Times[ K, Power[ x5, 2]]], 2]], 0, 0}, {0, 0, 0, Times[ Rational[ 1, 16], Power[ Plus[ 4, Times[ K, Power[ x1, 2]], Times[ K, Power[ x2, 2]], Times[ K, Power[ x3, 2]], Times[ K, Power[ x4, 2]], Times[ K, Power[ x5, 2]]], 2]], 0}, {0, 0, 0, 0, Times[ Rational[ 1, 16], Power[ Plus[ 4, Times[ K, Power[ x1, 2]], Times[ K, Power[ x2, 2]], Times[ K, Power[ x3, 2]], Times[ K, Power[ x4, 2]], Times[ K, Power[ x5, 2]]], 2]]}}]], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ \("gUU computed in "\[InvisibleSpace]0.0333333333333332149` \[InvisibleSpace]" sec"\), SequenceForm[ "gUU computed in ", 0.033333333333333215, " sec"], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ \("Gamma computed in "\[InvisibleSpace]0.18333333333333357` \[InvisibleSpace]" sec"\), SequenceForm[ "Gamma computed in ", 0.18333333333333357, " sec"], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ \("Riemann(dddd) computed in "\[InvisibleSpace]0.133333333333332859` \[InvisibleSpace]" sec"\), SequenceForm[ "Riemann(dddd) computed in ", 0.13333333333333286, " sec"], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ \("Riemann(Uddd) computed in "\[InvisibleSpace]0.0833333333333339254` \[InvisibleSpace]" sec"\), SequenceForm[ "Riemann(Uddd) computed in ", 0.083333333333333925, " sec"], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ \("Ricci computed in "\[InvisibleSpace]0.`\[InvisibleSpace]" sec"\), SequenceForm[ "Ricci computed in ", 0.0, " sec"], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ \("Weyl computed in "\[InvisibleSpace]0.0999999999999996447` \[InvisibleSpace]" sec"\), SequenceForm[ "Weyl computed in ", 0.099999999999999645, " sec"], Editable->False]], "Print"], Cell[BoxData[ \("Conformally Flat"\)], "Output", FontSize->20, FontWeight->"Bold", FontColor->RGBColor[1, 0, 1]], Cell[BoxData[ InterpretationBox[ \("Einstein computed in "\[InvisibleSpace]0.`\[InvisibleSpace]" sec"\), SequenceForm[ "Einstein computed in ", 0.0, " sec"], Editable->False]], "Print"], Cell[BoxData[ \("Einstein Space"\)], "Output", FontSize->20, FontWeight->"Bold", FontColor->RGBColor[1, 0, 1]], Cell[BoxData[ \("Space of Constant Curvature!"\)], "Output", FontSize->20, FontWeight->"Bold", FontColor->RGBColor[1, 0, 1]], Cell[BoxData[ \("All tasks completed in 0.633333 seconds"\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(RUddd[\([1, 2, 1, 2]\)]\)], "Input"], Cell[BoxData[ \(\(16\ K \)\/\((4 + K\ x1\^2 + K\ x2\^2 + K\ x3\^2 + K\ x4\^2 + K\ x5\^2)\)\^2 \)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(R\)], "Input"], Cell[BoxData[ \(20\ K\)], "Output"] }, Open ]], Cell[TextData[{ "\t", StyleBox["Of the 5^4 components in RUddd", FontSize->16] }], "Text", FontColor->RGBColor[0, 0, 1]], Cell[CellGroupData[{ Cell[BoxData[ \(nonZeroN[RUddd]\)], "Input"], Cell[BoxData[ \(40\)], "Output"] }, Open ]], Cell[TextData[{ "\t", StyleBox[ "are non-zero, of which the following are independent (modulo numerical \ factors):", FontSize->16] }], "Text", FontColor->RGBColor[0, 0, 1]], Cell[CellGroupData[{ Cell[BoxData[ \(indepTerms[RUddd]\)], "Input"], Cell[BoxData[ \({K\/\((4 + K\ x1\^2 + K\ x2\^2 + K\ x3\^2 + K\ x4\^2 + K\ x5\^2)\)\^2} \)], "Output"] }, Open ]] }, Closed]] }, Closed]], Cell[CellGroupData[{ Cell[TextData[ " Example 4: Kerr in Boyer-Lindquist coordinates (Cos[\[Theta]] -> x): \ Finding Killing Vectors"], "Subsection", ShowGroupOpenCloseIcon->True, FontSize->16], Cell[TextData[{ "\t", StyleBox["Examples 4a, 4b, 4c are in section 5.1", FontSize->16] }], "Text", FontWeight->"Bold", FontColor->RGBColor[0, 0, 1]], Cell[BoxData[ \(Clear[x]; xCoord = {t, r, x, \[CurlyPhi]}; \)], "Input"], Cell[BoxData[ \(Sigma = r^2 + a^2 x^2; Delta = r^2 + a^2 - 2 M\ r; \)], "Input"], Cell[BoxData[ \(\(g = {{1 - 2 M\ r/Sigma, 0, 0, 2 a\ M\ r \((1 - x^2)\)/Sigma}, {0, \(-Sigma\)/Delta, 0, 0}, {0, 0, \(-Sigma\)/\((1 - x^2)\), 0}, { 2 a\ M\ r \((1 - x^2)\)/Sigma, 0, 0, \(-\((1 - x^2)\)\) \((r^2 + a^2 + 2 a^2 M\ r \((1 - x^2)\)/Sigma)\)}}; \)\)], "Input"], Cell[BoxData[ \(\(simpRules = {}; \)\)], "Input"], Cell[CellGroupData[{ Cell[BoxData[ \(RGtensors[g, xCoord]\)], "Input"], Cell[BoxData[ InterpretationBox[ RowBox[{\("gdd = "\), "\[InvisibleSpace]", TagBox[ RowBox[{"(", GridBox[{ {\(1 - \(2\ M\ r\)\/\(r\^2 + a\^2\ x\^2\)\), "0", "0", \(\(2\ a\ M\ r\ \((1 - x\^2)\)\)\/\(r\^2 + a\^2\ x\^2\)\)}, {"0", \(\(\(-r\^2\) - a\^2\ x\^2\)\/\(a\^2 - 2\ M\ r + r\^2\)\), "0", "0"}, {"0", "0", \(\(\(-r\^2\) - a\^2\ x\^2\)\/\(1 - x\^2\)\), "0"}, {\(\(2\ a\ M\ r\ \((1 - x\^2)\)\)\/\(r\^2 + a\^2\ x\^2\)\), "0", "0", \(\((\(-1\) + x\^2)\)\ \((a\^2 + r\^2 + \(2\ a\^2\ M\ r\ \((1 - x\^2)\)\)\/\(r\^2 + a\^2\ x\^2\))\)\)} }], ")"}], (MatrixForm[ #]&)]}], SequenceForm[ "gdd = ", MatrixForm[ {{ Plus[ 1, Times[ -2, M, r, Power[ Plus[ Power[ r, 2], Times[ Power[ a, 2], Power[ x, 2]]], -1]]], 0, 0, Times[ 2, a, M, r, Plus[ 1, Times[ -1, Power[ x, 2]]], Power[ Plus[ Power[ r, 2], Times[ Power[ a, 2], Power[ x, 2]]], -1]]}, {0, Times[ Power[ Plus[ Power[ a, 2], Times[ -2, M, r], Power[ r, 2]], -1], Plus[ Times[ -1, Power[ r, 2]], Times[ -1, Power[ a, 2], Power[ x, 2]]]], 0, 0}, {0, 0, Times[ Power[ Plus[ 1, Times[ -1, Power[ x, 2]]], -1], Plus[ Times[ -1, Power[ r, 2]], Times[ -1, Power[ a, 2], Power[ x, 2]]]], 0}, { Times[ 2, a, M, r, Plus[ 1, Times[ -1, Power[ x, 2]]], Power[ Plus[ Power[ r, 2], Times[ Power[ a, 2], Power[ x, 2]]], -1]], 0, 0, Times[ Plus[ -1, Power[ x, 2]], Plus[ Power[ a, 2], Power[ r, 2], Times[ 2, Power[ a, 2], M, r, Plus[ 1, Times[ -1, Power[ x, 2]]], Power[ Plus[ Power[ r, 2], Times[ Power[ a, 2], Power[ x, 2]]], -1]]]]}}]], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ RowBox[{\("LineElement = "\), "\[InvisibleSpace]", TagBox[ \(\( - \(\((r\^2 + a\^2\ x\^2)\)\ d[r]\^2\)\/\(a\^2 - 2\ M\ r + r\^2\)\) - \(\((2\ M\ r - r\^2 - a\^2\ x\^2)\)\ d[t]\^2\)\/\(r\^2 + a\^2\ x\^2\) + \(\((r\^2 + a\^2\ x\^2)\)\ d[x]\^2\)\/\(\(-1\) + x\^2\) - \(4\ a\ M\ r\ \((\(-1\) + x\^2)\)\ d[t]\ d[\[CurlyPhi]]\)\/\(r\^2 + a\^2\ x\^2\) + \(\((\(-1\) + x\^2)\)\ \((2\ a\^2\ M\ r + a\^2\ r\^2 + r\^4 + a\^4\ x\^2 - 2\ a\^2\ M\ r\ x\^2 + a\^2\ r\^2\ x\^2)\)\ d[\[CurlyPhi]]\^2\)\/\(r\^2 + a\^2\ x\^2\)\), (Short[ #, 32]&)]}], SequenceForm[ "LineElement = ", Short[ Plus[ Times[ -1, Power[ Plus[ Power[ a, 2], Times[ -2, M, r], Power[ r, 2]], -1], Plus[ Power[ r, 2], Times[ Power[ a, 2], Power[ x, 2]]], Power[ d[ r], 2]], Times[ -1, Plus[ Times[ 2, M, r], Times[ -1, Power[ r, 2]], Times[ -1, Power[ a, 2], Power[ x, 2]]], Power[ Plus[ Power[ r, 2], Times[ Power[ a, 2], Power[ x, 2]]], -1], Power[ d[ t], 2]], Times[ Power[ Plus[ -1, Power[ x, 2]], -1], Plus[ Power[ r, 2], Times[ Power[ a, 2], Power[ x, 2]]], Power[ d[ x], 2]], Times[ -4, a, M, r, Plus[ -1, Power[ x, 2]], Power[ Plus[ Power[ r, 2], Times[ Power[ a, 2], Power[ x, 2]]], -1], d[ t], d[ \[CurlyPhi]]], Times[ Plus[ -1, Power[ x, 2]], Power[ Plus[ Power[ r, 2], Times[ Power[ a, 2], Power[ x, 2]]], -1], Plus[ Times[ 2, Power[ a, 2], M, r], Times[ Power[ a, 2], Power[ r, 2]], Power[ r, 4], Times[ Power[ a, 4], Power[ x, 2]], Times[ -2, Power[ a, 2], M, r, Power[ x, 2]], Times[ Power[ a, 2], Power[ r, 2], Power[ x, 2]]], Power[ d[ \[CurlyPhi]], 2]]], 32]], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ RowBox[{\("gUU = "\), "\[InvisibleSpace]", TagBox[ RowBox[{"(", GridBox[{ {\(\(2\ a\^2\ M\ r + a\^2\ r\^2 + r\^4 + a\^4\ x\^2 - 2\ a\^2\ M\ r\ x\^2 + a\^2\ r\^2\ x\^2\)\/\(\((a\^2 - 2\ M\ r + r\^2)\)\ \((r\^2 + a\^2\ x\^2)\)\)\), "0", "0", \(\(2\ a\ M\ r\)\/\(\((a\^2 - 2\ M\ r + r\^2)\)\ \((r\^2 + a\^2\ x\^2)\)\)\)}, {"0", \(- \(\(a\^2 - 2\ M\ r + r\^2\)\/\(r\^2 + a\^2\ x\^2\)\)\), "0", "0"}, {"0", "0", \(\(\(-1\) + x\^2\)\/\(r\^2 + a\^2\ x\^2\)\), "0"}, {\(\(2\ a\ M\ r\)\/\(\((a\^2 - 2\ M\ r + r\^2)\)\ \((r\^2 + a\^2\ x\^2)\)\)\), "0", "0", \(\(\(-2\)\ M\ r + r\^2 + a\^2\ x\^2\)\/\(\((a\^2 - 2\ M\ r + r\^2)\)\ \((\(-1\) + x\^2)\)\ \((r\^2 + a\^2\ x\^2)\)\)\)} }], ")"}], (MatrixForm[ #]&)]}], SequenceForm[ "gUU = ", MatrixForm[ {{ Times[ Power[ Plus[ Power[ a, 2], Times[ -2, M, r], Power[ r, 2]], -1], Power[ Plus[ Power[ r, 2], Times[ Power[ a, 2], Power[ x, 2]]], -1], Plus[ Times[ 2, Power[ a, 2], M, r], Times[ Power[ a, 2], Power[ r, 2]], Power[ r, 4], Times[ Power[ a, 4], Power[ x, 2]], Times[ -2, Power[ a, 2], M, r, Power[ x, 2]], Times[ Power[ a, 2], Power[ r, 2], Power[ x, 2]]]], 0, 0, Times[ 2, a, M, r, Power[ Plus[ Power[ a, 2], Times[ -2, M, r], Power[ r, 2]], -1], Power[ Plus[ Power[ r, 2], Times[ Power[ a, 2], Power[ x, 2]]], -1]]}, {0, Times[ -1, Plus[ Power[ a, 2], Times[ -2, M, r], Power[ r, 2]], Power[ Plus[ Power[ r, 2], Times[ Power[ a, 2], Power[ x, 2]]], -1]], 0, 0}, {0, 0, Times[ Plus[ -1, Power[ x, 2]], Power[ Plus[ Power[ r, 2], Times[ Power[ a, 2], Power[ x, 2]]], -1]], 0}, { Times[ 2, a, M, r, Power[ Plus[ Power[ a, 2], Times[ -2, M, r], Power[ r, 2]], -1], Power[ Plus[ Power[ r, 2], Times[ Power[ a, 2], Power[ x, 2]]], -1]], 0, 0, Times[ Power[ Plus[ Power[ a, 2], Times[ -2, M, r], Power[ r, 2]], -1], Power[ Plus[ -1, Power[ x, 2]], -1], Power[ Plus[ Power[ r, 2], Times[ Power[ a, 2], Power[ x, 2]]], -1], Plus[ Times[ -2, M, r], Power[ r, 2], Times[ Power[ a, 2], Power[ x, 2]]]]}}]], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ \("gUU computed in "\[InvisibleSpace]0.16666666666666785` \[InvisibleSpace]" sec"\), SequenceForm[ "gUU computed in ", 0.16666666666666785, " sec"], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ \("Gamma computed in "\[InvisibleSpace]0.25`\[InvisibleSpace]" sec"\), SequenceForm[ "Gamma computed in ", 0.25, " sec"], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ \("Riemann(dddd) computed in "\[InvisibleSpace]0.266666666666665719` \[InvisibleSpace]" sec"\), SequenceForm[ "Riemann(dddd) computed in ", 0.26666666666666572, " sec"], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ \("Riemann(Uddd) computed in "\[InvisibleSpace]0.48333333333333428` \[InvisibleSpace]" sec"\), SequenceForm[ "Riemann(Uddd) computed in ", 0.48333333333333428, " sec"], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ \("Ricci computed in "\[InvisibleSpace]0.0166666666666657192` \[InvisibleSpace]" sec"\), SequenceForm[ "Ricci computed in ", 0.016666666666665719, " sec"], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ \("Weyl computed in "\[InvisibleSpace]0.`\[InvisibleSpace]" sec"\), SequenceForm[ "Weyl computed in ", 0.0, " sec"], Editable->False]], "Print"], Cell[BoxData[ \("Ricci Flat"\)], "Output", FontSize->20, FontWeight->"Bold", FontColor->RGBColor[1, 0, 1]], Cell[BoxData[ \("All tasks completed in 1.25 seconds"\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(GUdd[\([2, 2, 3]\)]\)], "Input"], Cell[BoxData[ \(\(a\^2\ x\)\/\(r\^2 + a\^2\ x\^2\)\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(RUddd[\([1, 2, 1, 3]\)]\)], "Input"], Cell[BoxData[ \(\(-\(\(a\^2\ M\ \((3\ a\^2 - 2\ M\ r + 3\ r\^2)\)\ x\ \(( \(-3\)\ r\^2 + a\^2\ x\^2)\)\)\/\(\((a\^2 - 2\ M\ r + r\^2)\)\ \((r\^2 + a\^2\ x\^2)\)\^3\)\)\)\)], "Output"] }, Open ]], Cell[TextData[{ "\t", StyleBox["Check the once-contracted Bianchi identities:", FontSize->16] }], "Text", FontColor->RGBColor[0, 0, 1]], Cell[CellGroupData[{ Cell[BoxData[ \(zeroQ[Bianchi[1]] // Timing\)], "Input"], Cell[BoxData[ \({1.33333333333333392`\ Second, True}\)], "Output"] }, Open ]], Cell[TextData[{ "\t", StyleBox["Bianchi[1]", FontFamily->"Courier", FontSize->16], StyleBox[" calls ", FontSize->16], StyleBox["covD", FontFamily->"Courier", FontSize->16], StyleBox[" and ", FontSize->16], StyleBox["covDiv", FontFamily->"Courier", FontSize->16], StyleBox[ " which remember their values; therefore, calling it again takes no time:", FontSize->16] }], "Text", FontColor->RGBColor[0, 0, 1]], Cell[CellGroupData[{ Cell[BoxData[ \(zeroQ[Bianchi[1]] // Timing\)], "Input"], Cell[BoxData[ \({0.`\ Second, True}\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell["Finding Killing Vectors", "Subsection", CellFrame->True, ShowGroupOpenCloseIcon->True, FontSize->16, FontColor->RGBColor[0, 0, 1]], Cell[TextData[{ "\t", StyleBox["Assume (", FontSize->16], StyleBox["r, x", FontFamily->"Courier", FontSize->16], StyleBox[") dependence for the contravariant components of ", FontSize->16], StyleBox["\[Xi]", FontFamily->"Courier", FontSize->16], StyleBox[":", FontSize->16] }], "Text", FontSize->16, FontColor->GrayLevel[0.333333]], Cell[BoxData[ \(\(\[Xi]U = {\(\[Xi][1]\)[r, x], \(\[Xi][2]\)[r, x], \(\[Xi][3]\)[r, x], \(\[Xi][4]\)[r, x]}; \)\)], "Input", FontColor->GrayLevel[0.333333]], Cell[CellGroupData[{ Cell[BoxData[ \(\(covD\[Xi]dd = covD[gdd.\[Xi]U]; \) // Timing\)], "Input", FontColor->GrayLevel[0.333333]], Cell[BoxData[ \({0.566666666666668206`\ Second, Null}\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ RowBox[{"KillingEquations", "=", RowBox[{"Collect", "[", RowBox[{ \(indepTerms[Flatten[FacSimp[covD\[Xi]dd + Transpose[covD\[Xi]dd]]]] \), ",", RowBox[{"{", RowBox[{ RowBox[{ SuperscriptBox[\(\[Xi][_]\), TagBox[\((__)\), Derivative], MultilineFunction->None], "[", \(r, x\), "]"}], ",", \(\(\[Xi][_]\)[r, x]\)}], "}"}], ",", "Factor"}], "]"}]}]], "Input", FontColor->GrayLevel[0.333333]], Cell[BoxData[ RowBox[{"{", RowBox[{ \(\(M\ \((r - a\ x)\)\ \((r + a\ x)\)\ \(\[Xi][2]\)[r, x]\)\/\((r\^2 + a\^2\ x\^2)\)\^2 + \(2\ a\^2\ M\ r\ x\ \(\[Xi][3]\)[r, x]\)\/\((r\^2 + a\^2\ x\^2)\)\^2 \), ",", \(\(a\ M\ \((\(-1\) + x)\)\ \((1 + x)\)\ \((\(-r\) + a\ x)\)\ \((r + a\ x)\)\ \(\[Xi][2]\)[r, x]\)\/\((r\^2 + a\^2\ x\^2)\)\^2 + \(2\ a\ M\ r\ \((a\^2 + r\^2)\)\ x\ \(\[Xi][3]\)[r, x]\)\/\((r\^2 + a\^2\ x\^2)\)\^2\), ",", \(\(-\(\(\((\(-1\) + x)\)\ \((1 + x)\)\ \((a\^2\ M\ r\^2 - r\^5 - a\^4\ M\ x\^2 - a\^2\ M\ r\^2\ x\^2 - 2\ a\^2\ r\^3\ x\^2 + a\^4\ M\ x\^4 - a\^4\ r\ x\^4)\)\ \(\[Xi][2]\)[r, x]\)\/\((r\^2 + a\^2\ x\^2)\)\^2\)\) + \(1\/\((r\^2 + a\^2\ x\^2)\)\^2\(( x\ \((2\ a\^4\ M\ r + 4\ a\^2\ M\ r\^3 + a\^2\ r\^4 + r\^6 + 2\ a\^4\ r\^2\ x\^2 - 4\ a\^2\ M\ r\^3\ x\^2 + 2\ a\^2\ r\^4\ x\^2 + a\^6\ x\^4 - 2\ a\^4\ M\ r\ x\^4 + a\^4\ r\^2\ x\^4)\)\ \(\[Xi][3]\)[r, x])\)\)\), ",", RowBox[{ \(\(r\ \(\[Xi][2]\)[r, x]\)\/\(\((\(-1\) + x)\)\ \((1 + x)\)\)\), "-", \(\(\((a\^2 + r\^2)\)\ x\ \(\[Xi][3]\)[r, x]\)\/\(\((\(-1\) + x)\)\^2\ \((1 + x)\)\^2\)\), "+", FractionBox[ RowBox[{\((r\^2 + a\^2\ x\^2)\), " ", RowBox[{ SuperscriptBox[\(\[Xi][3]\), TagBox[\((0, 1)\), Derivative], MultilineFunction->None], "[", \(r, x\), "]"}]}], \(\((\(-1\) + x)\)\ \((1 + x)\)\)]}], ",", RowBox[{ RowBox[{"-", FractionBox[ RowBox[{\((2\ M\ r - r\^2 - a\^2\ x\^2)\), " ", RowBox[{ SuperscriptBox[\(\[Xi][1]\), TagBox[\((0, 1)\), Derivative], MultilineFunction->None], "[", \(r, x\), "]"}]}], \(r\^2 + a\^2\ x\^2\)]}], "-", FractionBox[ RowBox[{ "2", " ", "a", " ", "M", " ", "r", " ", \((\(-1\) + x)\), " ", \((1 + x)\), " ", RowBox[{ SuperscriptBox[\(\[Xi][4]\), TagBox[\((0, 1)\), Derivative], MultilineFunction->None], "[", \(r, x\), "]"}]}], \(r\^2 + a\^2\ x\^2\)]}], ",", RowBox[{ RowBox[{"-", FractionBox[ RowBox[{ "2", " ", "a", " ", "M", " ", "r", " ", \((\(-1\) + x)\), " ", \((1 + x)\), " ", RowBox[{ SuperscriptBox[\(\[Xi][1]\), TagBox[\((0, 1)\), Derivative], MultilineFunction->None], "[", \(r, x\), "]"}]}], \(r\^2 + a\^2\ x\^2\)]}], "+", FractionBox[ RowBox[{ \((\(-1\) + x)\), " ", \((1 + x)\), " ", \((2\ a\^2\ M\ r + a\^2\ r\^2 + r\^4 + a\^4\ x\^2 - 2\ a\^2\ M\ r\ x\^2 + a\^2\ r\^2\ x\^2)\), " ", RowBox[{ SuperscriptBox[\(\[Xi][4]\), TagBox[\((0, 1)\), Derivative], MultilineFunction->None], "[", \(r, x\), "]"}]}], \(r\^2 + a\^2\ x\^2\)]}], ",", RowBox[{ \(-\(\(\((\(-a\^2\)\ r + M\ r\^2 - a\^2\ M\ x\^2 + a\^2\ r\ x\^2)\)\ \(\[Xi][2]\)[r, x]\)\/\((a\^2 - 2\ M\ r + r\^2)\)\^2\)\), "+", \(\(a\^2\ x\ \(\[Xi][3]\)[r, x]\)\/\(a\^2 - 2\ M\ r + r\^2\)\), "+", FractionBox[ RowBox[{\((r\^2 + a\^2\ x\^2)\), " ", RowBox[{ SuperscriptBox[\(\[Xi][2]\), TagBox[\((1, 0)\), Derivative], MultilineFunction->None], "[", \(r, x\), "]"}]}], \(a\^2 - 2\ M\ r + r\^2\)]}], ",", RowBox[{ RowBox[{"-", FractionBox[ RowBox[{\((r\^2 + a\^2\ x\^2)\), " ", RowBox[{ SuperscriptBox[\(\[Xi][2]\), TagBox[\((0, 1)\), Derivative], MultilineFunction->None], "[", \(r, x\), "]"}]}], \(a\^2 - 2\ M\ r + r\^2\)]}], "+", FractionBox[ RowBox[{\((r\^2 + a\^2\ x\^2)\), " ", RowBox[{ SuperscriptBox[\(\[Xi][3]\), TagBox[\((1, 0)\), Derivative], MultilineFunction->None], "[", \(r, x\), "]"}]}], \(\((\(-1\) + x)\)\ \((1 + x)\)\)]}], ",", RowBox[{ FractionBox[ RowBox[{\((2\ M\ r - r\^2 - a\^2\ x\^2)\), " ", RowBox[{ SuperscriptBox[\(\[Xi][1]\), TagBox[\((1, 0)\), Derivative], MultilineFunction->None], "[", \(r, x\), "]"}]}], \(r\^2 + a\^2\ x\^2\)], "+", FractionBox[ RowBox[{ "2", " ", "a", " ", "M", " ", "r", " ", \((\(-1\) + x)\), " ", \((1 + x)\), " ", RowBox[{ SuperscriptBox[\(\[Xi][4]\), TagBox[\((1, 0)\), Derivative], MultilineFunction->None], "[", \(r, x\), "]"}]}], \(r\^2 + a\^2\ x\^2\)]}], ",", RowBox[{ RowBox[{"-", FractionBox[ RowBox[{ "2", " ", "a", " ", "M", " ", "r", " ", \((\(-1\) + x)\), " ", \((1 + x)\), " ", RowBox[{ SuperscriptBox[\(\[Xi][1]\), TagBox[\((1, 0)\), Derivative], MultilineFunction->None], "[", \(r, x\), "]"}]}], \(r\^2 + a\^2\ x\^2\)]}], "+", FractionBox[ RowBox[{ \((\(-1\) + x)\), " ", \((1 + x)\), " ", \((2\ a\^2\ M\ r + a\^2\ r\^2 + r\^4 + a\^4\ x\^2 - 2\ a\^2\ M\ r\ x\^2 + a\^2\ r\^2\ x\^2)\), " ", RowBox[{ SuperscriptBox[\(\[Xi][4]\), TagBox[\((1, 0)\), Derivative], MultilineFunction->None], "[", \(r, x\), "]"}]}], \(r\^2 + a\^2\ x\^2\)]}]}], "}"}]], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(Length[%]\)], "Input", FontColor->GrayLevel[0.333333]], Cell[BoxData[ \(10\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(Solve[ Take[KillingEquations, 2] == 0, {\(\[Xi][2]\)[r, x], \(\[Xi][3]\)[r, x]}]\)], "Input", FontColor->GrayLevel[0.333333]], Cell[BoxData[ \({{\(\[Xi][2]\)[r, x] \[Rule] 0, \(\[Xi][3]\)[r, x] \[Rule] 0}}\)], "Output"] }, Open ]], Cell[TextData[{ "\t", StyleBox["The function ", FontSize->16], StyleBox["FuncRepRules", FontFamily->"Courier", FontSize->16], StyleBox[ " generates replacement rules for replacing a function (and its \ derivatives) by its values; see section 4.4.", FontSize->16] }], "Text", FontColor->RGBColor[0, 0, 1]], Cell[CellGroupData[{ Cell[BoxData[ RowBox[{"Collect", "[", RowBox[{ \(indepTerms[ FacSimp[\(KillingEquations /. FuncRepRules[\(\[Xi][2]\)[r, x], 0]\) /. FuncRepRules[\(\[Xi][3]\)[r, x], 0]]]\), ",", RowBox[{"{", RowBox[{ RowBox[{ SuperscriptBox[\(\[Xi][_]\), TagBox[\((__)\), Derivative], MultilineFunction->None], "[", \(r, x\), "]"}], ",", \(\(\[Xi][_]\)[r, x]\)}], "}"}], ",", "Factor"}], "]"}]], "Input",\ FontColor->GrayLevel[0.333333]], Cell[BoxData[ RowBox[{"{", RowBox[{ RowBox[{ FractionBox[ RowBox[{\((2\ M\ r - r\^2 - a\^2\ x\^2)\), " ", RowBox[{ SuperscriptBox[\(\[Xi][1]\), TagBox[\((0, 1)\), Derivative], MultilineFunction->None], "[", \(r, x\), "]"}]}], \(r\^2 + a\^2\ x\^2\)], "+", FractionBox[ RowBox[{ "2", " ", "a", " ", "M", " ", "r", " ", \((\(-1\) + x)\), " ", \((1 + x)\), " ", RowBox[{ SuperscriptBox[\(\[Xi][4]\), TagBox[\((0, 1)\), Derivative], MultilineFunction->None], "[", \(r, x\), "]"}]}], \(r\^2 + a\^2\ x\^2\)]}], ",", RowBox[{ RowBox[{"-", FractionBox[ RowBox[{ "2", " ", "a", " ", "M", " ", "r", " ", \((\(-1\) + x)\), " ", \((1 + x)\), " ", RowBox[{ SuperscriptBox[\(\[Xi][1]\), TagBox[\((0, 1)\), Derivative], MultilineFunction->None], "[", \(r, x\), "]"}]}], \(r\^2 + a\^2\ x\^2\)]}], "+", FractionBox[ RowBox[{ \((\(-1\) + x)\), " ", \((1 + x)\), " ", \((2\ a\^2\ M\ r + a\^2\ r\^2 + r\^4 + a\^4\ x\^2 - 2\ a\^2\ M\ r\ x\^2 + a\^2\ r\^2\ x\^2)\), " ", RowBox[{ SuperscriptBox[\(\[Xi][4]\), TagBox[\((0, 1)\), Derivative], MultilineFunction->None], "[", \(r, x\), "]"}]}], \(r\^2 + a\^2\ x\^2\)]}], ",", RowBox[{ FractionBox[ RowBox[{\((2\ M\ r - r\^2 - a\^2\ x\^2)\), " ", RowBox[{ SuperscriptBox[\(\[Xi][1]\), TagBox[\((1, 0)\), Derivative], MultilineFunction->None], "[", \(r, x\), "]"}]}], \(r\^2 + a\^2\ x\^2\)], "+", FractionBox[ RowBox[{ "2", " ", "a", " ", "M", " ", "r", " ", \((\(-1\) + x)\), " ", \((1 + x)\), " ", RowBox[{ SuperscriptBox[\(\[Xi][4]\), TagBox[\((1, 0)\), Derivative], MultilineFunction->None], "[", \(r, x\), "]"}]}], \(r\^2 + a\^2\ x\^2\)]}], ",", RowBox[{ RowBox[{"-", FractionBox[ RowBox[{ "2", " ", "a", " ", "M", " ", "r", " ", \((\(-1\) + x)\), " ", \((1 + x)\), " ", RowBox[{ SuperscriptBox[\(\[Xi][1]\), TagBox[\((1, 0)\), Derivative], MultilineFunction->None], "[", \(r, x\), "]"}]}], \(r\^2 + a\^2\ x\^2\)]}], "+", FractionBox[ RowBox[{ \((\(-1\) + x)\), " ", \((1 + x)\), " ", \((2\ a\^2\ M\ r + a\^2\ r\^2 + r\^4 + a\^4\ x\^2 - 2\ a\^2\ M\ r\ x\^2 + a\^2\ r\^2\ x\^2)\), " ", RowBox[{ SuperscriptBox[\(\[Xi][4]\), TagBox[\((1, 0)\), Derivative], MultilineFunction->None], "[", \(r, x\), "]"}]}], \(r\^2 + a\^2\ x\^2\)]}]}], "}"}]], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ RowBox[{"Solve", "[", RowBox[{\(% == 0\), ",", RowBox[{"{", RowBox[{ RowBox[{ SuperscriptBox[\(\[Xi][1]\), TagBox[\((1, 0)\), Derivative], MultilineFunction->None], "[", \(r, x\), "]"}], ",", RowBox[{ SuperscriptBox[\(\[Xi][4]\), TagBox[\((1, 0)\), Derivative], MultilineFunction->None], "[", \(r, x\), "]"}], ",", RowBox[{ SuperscriptBox[\(\[Xi][1]\), TagBox[\((0, 1)\), Derivative], MultilineFunction->None], "[", \(r, x\), "]"}], ",", RowBox[{ SuperscriptBox[\(\[Xi][4]\), TagBox[\((0, 1)\), Derivative], MultilineFunction->None], "[", \(r, x\), "]"}]}], "}"}]}], "]"}]], "Input", FontColor->GrayLevel[0.333333]], Cell[BoxData[ RowBox[{"{", RowBox[{"{", RowBox[{ RowBox[{ RowBox[{ SuperscriptBox[\(\[Xi][1]\), TagBox[\((1, 0)\), Derivative], MultilineFunction->None], "[", \(r, x\), "]"}], "\[Rule]", "0"}], ",", RowBox[{ RowBox[{ SuperscriptBox[\(\[Xi][4]\), TagBox[\((1, 0)\), Derivative], MultilineFunction->None], "[", \(r, x\), "]"}], "\[Rule]", "0"}], ",", RowBox[{ RowBox[{ SuperscriptBox[\(\[Xi][1]\), TagBox[\((0, 1)\), Derivative], MultilineFunction->None], "[", \(r, x\), "]"}], "\[Rule]", "0"}], ",", RowBox[{ RowBox[{ SuperscriptBox[\(\[Xi][4]\), TagBox[\((0, 1)\), Derivative], MultilineFunction->None], "[", \(r, x\), "]"}], "\[Rule]", "0"}]}], "}"}], "}"}]], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(FacSimp[ \(\(\(KillingEquations /. FuncRepRules[\(\[Xi][1]\)[r, x], C1]\) /. FuncRepRules[\(\[Xi][2]\)[r, x], 0]\) /. FuncRepRules[\(\[Xi][3]\)[r, x], 0]\) /. FuncRepRules[\(\[Xi][4]\)[r, x], C4]]\)], "Input", FontColor->GrayLevel[0.333333]], Cell[BoxData[ \({0, 0, 0, 0, 0, 0, 0, 0, 0, 0}\)], "Output"] }, Open ]] }, Closed]], Cell[CellGroupData[{ Cell["Lie Derivatives", "Subsection", CellFrame->True, ShowGroupOpenCloseIcon->True, FontSize->16, FontColor->RGBColor[0, 0, 1]], Cell[TextData[{ "\t", StyleBox["LieD[h_,x__]", FontFamily->"Courier", FontSize->16], StyleBox[ " ccomputes the Lie derivative of the tensor x with respect to the ", FontSize->16], StyleBox["contravariant", FontSize->16, FontSlant->"Italic"], StyleBox[" vector h:", FontSize->16] }], "Text", FontColor->RGBColor[0, 0, 1]], Cell[CellGroupData[{ Cell[BoxData[ \(TimeLikeKV = {1, 0, 0, 0}\)], "Input", FontColor->GrayLevel[0.333333]], Cell[BoxData[ \({1, 0, 0, 0}\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(AxialKV = {0, 0, 0, 1}\)], "Input", FontColor->GrayLevel[0.333333]], Cell[BoxData[ \({0, 0, 0, 1}\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(GeneralKV = C1\ TimeLikeKV + C2\ AxialKV\)], "Input", FontColor->GrayLevel[0.333333]], Cell[BoxData[ \({C1, 0, 0, C2}\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(LieD[TimeLikeKV, gdd]\)], "Input", FontColor->GrayLevel[0.333333]], Cell[BoxData[ \({{0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}}\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(LieD[AxialKV, RUddd, {1}]\)], "Input", FontColor->GrayLevel[0.333333]], Cell[BoxData[ \({{{{0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}}, {{0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}}, {{0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}}, {{0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}}}, {{{0, 0, 0, 0}, {0, 0, 0, 0}, { 0, 0, 0, 0}, {0, 0, 0, 0}}, {{0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}}, {{0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}, { 0, 0, 0, 0}}, {{0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}}}, {{{0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}}, {{0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}}, {{ 0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}}, {{0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}}}, {{{0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}}, {{0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}}, {{0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}}, {{0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}}}}\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(LieD[GeneralKV, gUU, {1, 2}]\)], "Input", FontColor->GrayLevel[0.333333]], Cell[BoxData[ \({{0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}}\)], "Output"] }, Open ]] }, Closed]] }, Closed]], Cell[CellGroupData[{ Cell[TextData[{ " Example 5: Floratos-Kehagias 8-dim Ricci-flat metric (", ButtonBox["hep_th/9802107", ButtonData:>{ URL[ "http://arxiv.org/abs/hep-th/9802107"], None}, ButtonStyle->"Hyperlink"], ")" }], "Subsection", ShowGroupOpenCloseIcon->True, FontSize->16], Cell[BoxData[ \(\(Clear[u, g, h, a, b, c]; \)\)], "Input"], Cell[BoxData[ \(\(xCoord = {x1, x2, x3, x4, x5, x6, x7, x8}; \)\)], "Input"], Cell[BoxData[ \(\(gFloKeh = {{u^2\ g^2\ h^2, 0, 0, 0, 0, 0, 0, 0}, {0, u^2\ g^2\ h^2, 0, 0, 0, 0, 0, 0}, {0, 0, 1/u^2, 0, 0, 0, 0, 2 a/u^2}, {0, 0, 0, 1/g^2, 2 b/g^2, 0, 0, 0}, {0, 0, 0, 2 b/g^2, g^2 + 4 b^2/g^2, 0, 0, 0}, {0, 0, 0, 0, 0, h^2 + 4 c^2/h^2, 2 c/h^2, 0}, {0, 0, 0, 0, 0, 2 c/h^2, 1/h^2, 0}, {0, 0, 2 a/u^2, 0, 0, 0, 0, 4 a^2/u^2 + u^2}}; \)\)], "Input"], Cell["\tThe symbols u, g, h, a, b, c are functions of x1, x2 :", "Text", FontSize->16, FontColor->RGBColor[0, 0, 1]], Cell[BoxData[ \(u = U[x1, x2]; g = G[x1, x2]; h = H[x1, x2]; a = A[x1, x2]; b = B[x1, x2]; c = C[x1, x2]; \)], "Input"], Cell["\<\ \tThe complex functions u^2 +2 i a, g^2 +2 i b, h^2 +2 i c are \ assumed to be analytic functions of x1+i x2. Therefore, use simpRules to \ implement the Cauchy-Riemann & harmonic function conditions:\ \>", "Text", FontSize->16, FontColor->RGBColor[0, 0, 1]], Cell[CellGroupData[{ Cell[BoxData[ RowBox[{"simpRules", "=", RowBox[{"{", RowBox[{ \(D[a, x1] -> \(-u\)\ D[u, x2]\), ",", \(D[a, x2] -> u\ D[u, x1]\), ",", \(D[b, x1] -> \(-g\)\ D[g, x2]\), ",", \(D[b, x2] -> g\ D[g, x1]\), ",", \(D[c, x1] -> \(-h\)\ D[h, x2]\), ",", \(D[c, x2] -> h\ D[h, x1]\), ",", RowBox[{ RowBox[{ RowBox[{"Z_.", TagBox[ StyleBox[\(\(\(Derivative[0, 2]\)[G_]\)[x1, x2]\), ShowSpecialCharacters->False, ShowStringCharacters->True], FullForm]}], "+", RowBox[{"Z_.", TagBox[ StyleBox[\(\(\(Derivative[2, 0]\)[G_]\)[x1, x2]\), ShowSpecialCharacters->False, ShowStringCharacters->True], FullForm]}]}], ":>", RowBox[{\(-Z\), RowBox[{ RowBox[{"(", RowBox[{ RowBox[{ TagBox[ StyleBox[\(\(\(Derivative[1, 0]\)[G]\)[x1, x2]\), ShowSpecialCharacters->False, ShowStringCharacters->True], FullForm], "^", "2"}], "+", RowBox[{ TagBox[ StyleBox[\(\(\(Derivative[0, 1]\)[G]\)[x1, x2]\), ShowSpecialCharacters->False, ShowStringCharacters->True], FullForm], "^", "2"}]}], ")"}], "/", \(G[x1, x2]\)}]}]}]}], "}"}]}]], "Input"], Cell[BoxData[ RowBox[{"{", RowBox[{ RowBox[{ RowBox[{ SuperscriptBox["A", TagBox[\((1, 0)\), Derivative], MultilineFunction->None], "[", \(x1, x2\), "]"}], "\[Rule]", RowBox[{\(-U[x1, x2]\), " ", RowBox[{ SuperscriptBox["U", TagBox[\((0, 1)\), Derivative], MultilineFunction->None], "[", \(x1, x2\), "]"}]}]}], ",", RowBox[{ RowBox[{ SuperscriptBox["A", TagBox[\((0, 1)\), Derivative], MultilineFunction->None], "[", \(x1, x2\), "]"}], "\[Rule]", RowBox[{\(U[x1, x2]\), " ", RowBox[{ SuperscriptBox["U", TagBox[\((1, 0)\), Derivative], MultilineFunction->None], "[", \(x1, x2\), "]"}]}]}], ",", RowBox[{ RowBox[{ SuperscriptBox["B", TagBox[\((1, 0)\), Derivative], MultilineFunction->None], "[", \(x1, x2\), "]"}], "\[Rule]", RowBox[{\(-G[x1, x2]\), " ", RowBox[{ SuperscriptBox["G", TagBox[\((0, 1)\), Derivative], MultilineFunction->None], "[", \(x1, x2\), "]"}]}]}], ",", RowBox[{ RowBox[{ SuperscriptBox["B", TagBox[\((0, 1)\), Derivative], MultilineFunction->None], "[", \(x1, x2\), "]"}], "\[Rule]", RowBox[{\(G[x1, x2]\), " ", RowBox[{ SuperscriptBox["G", TagBox[\((1, 0)\), Derivative], MultilineFunction->None], "[", \(x1, x2\), "]"}]}]}], ",", RowBox[{ RowBox[{ SuperscriptBox["C", TagBox[\((1, 0)\), Derivative], MultilineFunction->None], "[", \(x1, x2\), "]"}], "\[Rule]", RowBox[{\(-H[x1, x2]\), " ", RowBox[{ SuperscriptBox["H", TagBox[\((0, 1)\), Derivative], MultilineFunction->None], "[", \(x1, x2\), "]"}]}]}], ",", RowBox[{ RowBox[{ SuperscriptBox["C", TagBox[\((0, 1)\), Derivative], MultilineFunction->None], "[", \(x1, x2\), "]"}], "\[Rule]", RowBox[{\(H[x1, x2]\), " ", RowBox[{ SuperscriptBox["H", TagBox[\((1, 0)\), Derivative], MultilineFunction->None], "[", \(x1, x2\), "]"}]}]}], ",", RowBox[{ RowBox[{ RowBox[{"Z_.", " ", RowBox[{ SuperscriptBox["G_", TagBox[\((0, 2)\), Derivative], MultilineFunction->None], "[", \(x1, x2\), "]"}]}], "+", RowBox[{"Z_.", " ", RowBox[{ SuperscriptBox["G_", TagBox[\((2, 0)\), Derivative], MultilineFunction->None], "[", \(x1, x2\), "]"}]}]}], "\[RuleDelayed]", RowBox[{"-", FractionBox[ RowBox[{"Z", " ", RowBox[{"(", RowBox[{ SuperscriptBox[ RowBox[{ SuperscriptBox["G", TagBox[\((1, 0)\), Derivative], MultilineFunction->None], "[", \(x1, x2\), "]"}], "2"], "+", SuperscriptBox[ RowBox[{ SuperscriptBox["G", TagBox[\((0, 1)\), Derivative], MultilineFunction->None], "[", \(x1, x2\), "]"}], "2"]}], ")"}]}], \(G[x1, x2]\)]}]}]}], "}"}]], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(RGtensors[gFloKeh, xCoord]\)], "Input"], Cell[BoxData[ InterpretationBox[ RowBox[{\("gdd = "\), "\[InvisibleSpace]", TagBox[ RowBox[{"(", GridBox[{ {\(G[x1, x2]\^2\ H[x1, x2]\^2\ U[x1, x2]\^2\), "0", "0", "0", "0", "0", "0", "0"}, {"0", \(G[x1, x2]\^2\ H[x1, x2]\^2\ U[x1, x2]\^2\), "0", "0", "0", "0", "0", "0"}, {"0", "0", \(1\/U[x1, x2]\^2\), "0", "0", "0", "0", \(\(2\ A[x1, x2]\)\/U[x1, x2]\^2\)}, {"0", "0", "0", \(1\/G[x1, x2]\^2\), \(\(2\ B[x1, x2]\)\/G[x1, x2]\^2\), "0", "0", "0"}, {"0", "0", "0", \(\(2\ B[x1, x2]\)\/G[x1, x2]\^2\), \(\(4\ B[x1, x2]\^2\)\/G[x1, x2]\^2 + G[x1, x2]\^2\), "0", "0", "0"}, {"0", "0", "0", "0", "0", \(\(4\ C[x1, x2]\^2\)\/H[x1, x2]\^2 + H[x1, x2]\^2\), \(\(2\ C[x1, x2]\)\/H[x1, x2]\^2\), "0"}, {"0", "0", "0", "0", "0", \(\(2\ C[x1, x2]\)\/H[x1, x2]\^2\), \(1\/H[x1, x2]\^2\), "0"}, {"0", "0", \(\(2\ A[x1, x2]\)\/U[x1, x2]\^2\), "0", "0", "0", "0", \(\(4\ A[x1, x2]\^2\)\/U[x1, x2]\^2 + U[x1, x2]\^2\)} }], ")"}], (MatrixForm[ #]&)]}], SequenceForm[ "gdd = ", MatrixForm[ {{ Times[ Power[ G[ x1, x2], 2], Power[ H[ x1, x2], 2], Power[ U[ x1, x2], 2]], 0, 0, 0, 0, 0, 0, 0}, {0, Times[ Power[ G[ x1, x2], 2], Power[ H[ x1, x2], 2], Power[ U[ x1, x2], 2]], 0, 0, 0, 0, 0, 0}, {0, 0, Power[ U[ x1, x2], -2], 0, 0, 0, 0, Times[ 2, A[ x1, x2], Power[ U[ x1, x2], -2]]}, {0, 0, 0, Power[ G[ x1, x2], -2], Times[ 2, B[ x1, x2], Power[ G[ x1, x2], -2]], 0, 0, 0}, {0, 0, 0, Times[ 2, B[ x1, x2], Power[ G[ x1, x2], -2]], Plus[ Times[ 4, Power[ B[ x1, x2], 2], Power[ G[ x1, x2], -2]], Power[ G[ x1, x2], 2]], 0, 0, 0}, {0, 0, 0, 0, 0, Plus[ Times[ 4, Power[ C[ x1, x2], 2], Power[ H[ x1, x2], -2]], Power[ H[ x1, x2], 2]], Times[ 2, C[ x1, x2], Power[ H[ x1, x2], -2]], 0}, {0, 0, 0, 0, 0, Times[ 2, C[ x1, x2], Power[ H[ x1, x2], -2]], Power[ H[ x1, x2], -2], 0}, {0, 0, Times[ 2, A[ x1, x2], Power[ U[ x1, x2], -2]], 0, 0, 0, 0, Plus[ Times[ 4, Power[ A[ x1, x2], 2], Power[ U[ x1, x2], -2]], Power[ U[ x1, x2], 2]]}}]], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ RowBox[{\("LineElement = "\), "\[InvisibleSpace]", TagBox[ \(d[x4]\^2\/G[x1, x2]\^2 + \(4\ B[x1, x2]\ d[x4]\ d[x5]\)\/G[x1, x2]\^2 + \(d[x5]\^2\ \((4\ B[x1, x2]\^2 + G[x1, x2]\^4)\)\)\/G[x1, x2]\^2 + \(4\ C[x1, x2]\ d[x6]\ d[x7]\)\/H[x1, x2]\^2 + d[x7]\^2\/H[x1, x2]\^2 + \(d[x6]\^2\ \((4\ C[x1, x2]\^2 + H[x1, x2]\^4)\)\)\/H[x1, x2]\^2 + d[x3]\^2\/U[x1, x2]\^2 + \(4\ A[x1, x2]\ d[x3]\ d[x8]\)\/U[x1, x2]\^2 + d[x1]\^2\ G[x1, x2]\^2\ H[x1, x2]\^2\ U[x1, x2]\^2 + d[x2]\^2\ G[x1, x2]\^2\ H[x1, x2]\^2\ U[x1, x2]\^2 + \(d[x8]\^2\ \((4\ A[x1, x2]\^2 + U[x1, x2]\^4)\)\)\/U[x1, x2]\^2 \), (Short[ #, 64]&)]}], SequenceForm[ "LineElement = ", Short[ Plus[ Times[ Power[ d[ x4], 2], Power[ G[ x1, x2], -2]], Times[ 4, B[ x1, x2], d[ x4], d[ x5], Power[ G[ x1, x2], -2]], Times[ Power[ d[ x5], 2], Power[ G[ x1, x2], -2], Plus[ Times[ 4, Power[ B[ x1, x2], 2]], Power[ G[ x1, x2], 4]]], Times[ 4, C[ x1, x2], d[ x6], d[ x7], Power[ H[ x1, x2], -2]], Times[ Power[ d[ x7], 2], Power[ H[ x1, x2], -2]], Times[ Power[ d[ x6], 2], Power[ H[ x1, x2], -2], Plus[ Times[ 4, Power[ C[ x1, x2], 2]], Power[ H[ x1, x2], 4]]], Times[ Power[ d[ x3], 2], Power[ U[ x1, x2], -2]], Times[ 4, A[ x1, x2], d[ x3], d[ x8], Power[ U[ x1, x2], -2]], Times[ Power[ d[ x1], 2], Power[ G[ x1, x2], 2], Power[ H[ x1, x2], 2], Power[ U[ x1, x2], 2]], Times[ Power[ d[ x2], 2], Power[ G[ x1, x2], 2], Power[ H[ x1, x2], 2], Power[ U[ x1, x2], 2]], Times[ Power[ d[ x8], 2], Power[ U[ x1, x2], -2], Plus[ Times[ 4, Power[ A[ x1, x2], 2]], Power[ U[ x1, x2], 4]]]], 64]], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ RowBox[{\("gUU = "\), "\[InvisibleSpace]", TagBox[ RowBox[{"(", GridBox[{ {\(1\/\(G[x1, x2]\^2\ H[x1, x2]\^2\ U[x1, x2]\^2\)\), "0", "0", "0", "0", "0", "0", "0"}, {"0", \(1\/\(G[x1, x2]\^2\ H[x1, x2]\^2\ U[x1, x2]\^2\)\), "0", "0", "0", "0", "0", "0"}, {"0", "0", \(\(4\ A[x1, x2]\^2 + U[x1, x2]\^4\)\/U[x1, x2]\^2\), "0", "0", "0", "0", \(-\(\(2\ A[x1, x2]\)\/U[x1, x2]\^2\)\)}, {"0", "0", "0", \(\(4\ B[x1, x2]\^2 + G[x1, x2]\^4\)\/G[x1, x2]\^2\), \(-\(\(2\ B[x1, x2]\)\/G[x1, x2]\^2\)\), "0", "0", "0"}, {"0", "0", "0", \(-\(\(2\ B[x1, x2]\)\/G[x1, x2]\^2\)\), \(1\/G[x1, x2]\^2\), "0", "0", "0"}, {"0", "0", "0", "0", "0", \(1\/H[x1, x2]\^2\), \(-\(\(2\ C[x1, x2]\)\/H[x1, x2]\^2\)\), "0"}, {"0", "0", "0", "0", "0", \(-\(\(2\ C[x1, x2]\)\/H[x1, x2]\^2\)\), \(\(4\ C[x1, x2]\^2 + H[x1, x2]\^4\)\/H[x1, x2]\^2\), "0"}, {"0", "0", \(-\(\(2\ A[x1, x2]\)\/U[x1, x2]\^2\)\), "0", "0", "0", "0", \(1\/U[x1, x2]\^2\)} }], ")"}], (MatrixForm[ #]&)]}], SequenceForm[ "gUU = ", MatrixForm[ {{ Times[ Power[ G[ x1, x2], -2], Power[ H[ x1, x2], -2], Power[ U[ x1, x2], -2]], 0, 0, 0, 0, 0, 0, 0}, {0, Times[ Power[ G[ x1, x2], -2], Power[ H[ x1, x2], -2], Power[ U[ x1, x2], -2]], 0, 0, 0, 0, 0, 0}, {0, 0, Times[ Power[ U[ x1, x2], -2], Plus[ Times[ 4, Power[ A[ x1, x2], 2]], Power[ U[ x1, x2], 4]]], 0, 0, 0, 0, Times[ -2, A[ x1, x2], Power[ U[ x1, x2], -2]]}, {0, 0, 0, Times[ Power[ G[ x1, x2], -2], Plus[ Times[ 4, Power[ B[ x1, x2], 2]], Power[ G[ x1, x2], 4]]], Times[ -2, B[ x1, x2], Power[ G[ x1, x2], -2]], 0, 0, 0}, {0, 0, 0, Times[ -2, B[ x1, x2], Power[ G[ x1, x2], -2]], Power[ G[ x1, x2], -2], 0, 0, 0}, {0, 0, 0, 0, 0, Power[ H[ x1, x2], -2], Times[ -2, C[ x1, x2], Power[ H[ x1, x2], -2]], 0}, {0, 0, 0, 0, 0, Times[ -2, C[ x1, x2], Power[ H[ x1, x2], -2]], Times[ Power[ H[ x1, x2], -2], Plus[ Times[ 4, Power[ C[ x1, x2], 2]], Power[ H[ x1, x2], 4]]], 0}, {0, 0, Times[ -2, A[ x1, x2], Power[ U[ x1, x2], -2]], 0, 0, 0, 0, Power[ U[ x1, x2], -2]}}]], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ \("gUU computed in "\[InvisibleSpace]0.0166666666666657192` \[InvisibleSpace]" sec"\), SequenceForm[ "gUU computed in ", 0.016666666666665719, " sec"], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ \("Gamma computed in "\[InvisibleSpace]0.283333333333334991` \[InvisibleSpace]" sec"\), SequenceForm[ "Gamma computed in ", 0.28333333333333499, " sec"], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ \("Riemann(dddd) computed in "\[InvisibleSpace]1.64999999999999857` \[InvisibleSpace]" sec"\), SequenceForm[ "Riemann(dddd) computed in ", 1.6499999999999986, " sec"], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ \("Riemann(Uddd) computed in "\[InvisibleSpace]8.41666666666666785` \[InvisibleSpace]" sec"\), SequenceForm[ "Riemann(Uddd) computed in ", 8.4166666666666679, " sec"], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ \("Ricci computed in "\[InvisibleSpace]0.25`\[InvisibleSpace]" sec"\), SequenceForm[ "Ricci computed in ", 0.25, " sec"], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ \("Weyl computed in "\[InvisibleSpace]0.0166666666666657192` \[InvisibleSpace]" sec"\), SequenceForm[ "Weyl computed in ", 0.016666666666665719, " sec"], Editable->False]], "Print"], Cell[BoxData[ \("Ricci Flat"\)], "Output", FontSize->20, FontWeight->"Bold", FontColor->RGBColor[1, 0, 1]], Cell[BoxData[ \("All tasks completed in 10.75 seconds"\)], "Output"] }, Open ]], Cell[TextData[{ "\t", StyleBox["zeroQ[Bianchi[1]]", FontFamily->"Courier"], " in this case gives ", StyleBox["False", FontFamily->"Courier"], " (after ~30 sec)! The reason is that the ", StyleBox["simpRules", FontFamily->"Courier"], " used imply relations among the 3rd derivatives of the functions ", StyleBox["U[x1,x2],", FontFamily->"Courier"], " ", StyleBox["G[x1,x2],", FontFamily->"Courier"], " ", StyleBox["H[x1,x2]", FontFamily->"Courier"], "." }], "Text", FontSize->16, FontColor->RGBColor[0, 0, 1]], Cell[CellGroupData[{ Cell[TextData[{ "\t", StyleBox["Exercise", FontSlant->"Italic"], ": Find the additional two rules needed to satisfy the Bianchi identities." }], "Text", CellFrame->True, ShowGroupOpenCloseIcon->True, FontSize->16], Cell[TextData[{ "\t", StyleBox["Solution", FontSlant->"Italic"], ": See ", ButtonBox["AdditionalExamples.html", ButtonData:>{ URL[ "http://www.inp.demokritos.gr/~sbonano/RGTC/AdditionalExamples.html"], None}, ButtonStyle->"Hyperlink"] }], "Text", ShowGroupOpenCloseIcon->True, FontSize->16] }, Closed]], Cell[BoxData[ \(Clear[u, g, h, a, b, c, U, G, H]\)], "Input"] }, Closed]], Cell[CellGroupData[{ Cell[" Example 6: Harrison metric II-A-7 (Phys. Rev. 116, 1285)", "Subsection", ShowGroupOpenCloseIcon->True, FontSize->16], Cell["\<\ \tSee the \"Exact Solutions...\" book: section 15.4 (1st Edition) \ or section 17.3 (2nd Edition)\ \>", "Text", FontSize->14, FontColor->RGBColor[0, 0, 1]], Cell[BoxData[ \(Clear[x]; xCoord = {t, x, y, z}; \)], "Input"], Cell[BoxData[ RowBox[{\(rt3 = Sqrt[3]\), ";", \(F1 = x/rt3 - t^2/12\), " ", ";", RowBox[{ RowBox[{ SuperscriptBox["F2", "\[Prime]", MultilineFunction->None], "[", "z", "]"}], "=", \(F2[z] v[z]/z\)}], ";", RowBox[{ RowBox[{ SuperscriptBox["v", "\[Prime]", MultilineFunction->None], "[", "z", "]"}], "=", \(\((v[z]^2 - 1)\)/\((4 z)\) \((2\ \ v[z]/\((z - 1)\) + 4/rt3)\)\)}], ";"}]], "Input"], Cell[BoxData[ \(n1[t] = 2 + rt3; n1[x] = 1 + rt3; n1[y] = \(-rt3\); n1[z] = 3 + rt3; \)], "Input"], Cell[BoxData[ \(n2[t] = 1 + 2/rt3; n2[x] = 1 + 2/rt3; n2[y] = \(-1\); n2[z] = 1 + 2/rt3; \)], "Input"], Cell[BoxData[ \(n3[t] = 1/rt3; n3[x] = \((1 + 1/rt3)\); n3[y] = \(-1\)/rt3; n3[z] = \((2 + 1/rt3)\); \)], "Input"], Cell[BoxData[ \(\(g = DiagonalMatrix[{F1^n1[t] F2[z]^n2[t] \((\(-1\)/z)\)^n3[t], \(-F1^n1[x]\) F2[z]^n2[x] \((\(-1\)/z)\)^n3[x], \(-F1^n1[y]\) F2[z]^n2[y] \((\(-1\)/z)\)^n3[y], \(-F1^n1[z]\) F2[z]^n2[z] \((\(-1\)/z)\)^n3[z] \((v[z]^2 - 1)\)/\((z - 1)\)}]; \)\)], "Input"], Cell[BoxData[ \(\(simpRules = {}; \)\)], "Input"], Cell[CellGroupData[{ Cell[BoxData[ \(RGtensors[g, xCoord]\)], "Input"], Cell[BoxData[ InterpretationBox[ RowBox[{\("gdd = "\), "\[InvisibleSpace]", TagBox[ RowBox[{"(", GridBox[{ {\(\((\(-\(t\^2\/12\)\) + x\/\@3)\)\^\(2 + \@3\)\ \((\(-\(1\/z\)\))\)\^\(1\/\@3\)\ F2[z]\^\(1 + 2\/\@3\)\), "0", "0", "0"}, {"0", \(\(-\((\(-\(t\^2\/12\)\) + x\/\@3)\)\^\(1 + \@3\)\)\ \((\(-\(1\/z\)\))\)\^\(1 + 1\/\@3\)\ F2[z]\^\(1 + 2\/\@3\)\), "0", "0"}, {"0", "0", \(-\(\(\((\(-\(t\^2\/12\)\) + x\/\@3)\)\^\(-\@3\)\ \((\(-\(1\/z\)\))\)\^\(-\(1\/\@3\)\)\)\/F2[z]\)\), "0"}, {"0", "0", "0", \(-\(\(\((\(-\(t\^2\/12\)\) + x\/\@3)\)\^\(3 + \@3\)\ \((\(-\(1\/z\)\))\)\^\(2 + 1\/\@3\)\ F2[z]\^\(1 + 2\/\@3\)\ \((\(-1\) + v[z]\^2)\)\)\/\(\(-1\) + z\)\)\)} }], ")"}], (MatrixForm[ #]&)]}], SequenceForm[ "gdd = ", MatrixForm[ {{ Times[ Power[ Plus[ Times[ Rational[ -1, 12], Power[ t, 2]], Times[ Power[ 3, Rational[ -1, 2]], x]], Plus[ 2, Power[ 3, Rational[ 1, 2]]]], Power[ Times[ -1, Power[ z, -1]], Power[ 3, Rational[ -1, 2]]], Power[ F2[ z], Plus[ 1, Times[ 2, Power[ 3, Rational[ -1, 2]]]]]], 0, 0, 0}, {0, Times[ -1, Power[ Plus[ Times[ Rational[ -1, 12], Power[ t, 2]], Times[ Power[ 3, Rational[ -1, 2]], x]], Plus[ 1, Power[ 3, Rational[ 1, 2]]]], Power[ Times[ -1, Power[ z, -1]], Plus[ 1, Power[ 3, Rational[ -1, 2]]]], Power[ F2[ z], Plus[ 1, Times[ 2, Power[ 3, Rational[ -1, 2]]]]]], 0, 0}, {0, 0, Times[ -1, Power[ Plus[ Times[ Rational[ -1, 12], Power[ t, 2]], Times[ Power[ 3, Rational[ -1, 2]], x]], Times[ -1, Power[ 3, Rational[ 1, 2]]]], Power[ Times[ -1, Power[ z, -1]], Times[ -1, Power[ 3, Rational[ -1, 2]]]], Power[ F2[ z], -1]], 0}, {0, 0, 0, Times[ -1, Power[ Plus[ Times[ Rational[ -1, 12], Power[ t, 2]], Times[ Power[ 3, Rational[ -1, 2]], x]], Plus[ 3, Power[ 3, Rational[ 1, 2]]]], Power[ Plus[ -1, z], -1], Power[ Times[ -1, Power[ z, -1]], Plus[ 2, Power[ 3, Rational[ -1, 2]]]], Power[ F2[ z], Plus[ 1, Times[ 2, Power[ 3, Rational[ -1, 2]]]]], Plus[ -1, Power[ v[ z], 2]]]}}]], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ RowBox[{\("LineElement = "\), "\[InvisibleSpace]", TagBox[ \(\( - \(\((\(-\(t\^2\/12\)\) + x\/\@3)\)\^\(-\@3\)\ \((\(-\(1\/z\)\))\)\^\(-\(1\/\@3\)\)\ d[y]\^2\)\/F2[z]\) + 1\/144\ \((\(-\(t\^2\/12\)\) + x\/\@3)\)\^\(\@3\)\ \((t\^2 - 4\ \@3\ x)\)\^2\ \((\(-\(1\/z\)\))\)\^\(1\/\@3\)\ d[t]\^2\ F2[z]\^\(1 + 2\/\@3\) - \(\((\(-\(t\^2\/12\)\) + x\/\@3)\)\^\(\@3\)\ \((t\^2 - 4\ \@3\ x)\)\ \((\(-\(1\/z\)\))\)\^\(1\/\@3\)\ d[x]\^2\ F2[z]\^\(1 + 2\/\@3\)\)\/\(12\ z\) + \(\((\(-\(t\^2\/12\)\) + x\/\@3)\)\^\(\@3\)\ \((t\^2 - 4\ \@3\ x)\)\^3\ \((\(-\(1\/z\)\))\)\^\(1\/\@3\)\ d[z]\^2\ F2[z]\^\(1 + 2\/\@3\)\ \((\(-1\) + v[z])\)\ \((1 + v[z])\)\)\/\(1728\ \((\(-1\) + z)\)\ z\^2\)\), (Short[ #, 32]&)]}], SequenceForm[ "LineElement = ", Short[ Plus[ Times[ -1, Power[ Plus[ Times[ Rational[ -1, 12], Power[ t, 2]], Times[ Power[ 3, Rational[ -1, 2]], x]], Times[ -1, Power[ 3, Rational[ 1, 2]]]], Power[ Times[ -1, Power[ z, -1]], Times[ -1, Power[ 3, Rational[ -1, 2]]]], Power[ d[ y], 2], Power[ F2[ z], -1]], Times[ Rational[ 1, 144], Power[ Plus[ Times[ Rational[ -1, 12], Power[ t, 2]], Times[ Power[ 3, Rational[ -1, 2]], x]], Power[ 3, Rational[ 1, 2]]], Power[ Plus[ Power[ t, 2], Times[ -4, Power[ 3, Rational[ 1, 2]], x]], 2], Power[ Times[ -1, Power[ z, -1]], Power[ 3, Rational[ -1, 2]]], Power[ d[ t], 2], Power[ F2[ z], Plus[ 1, Times[ 2, Power[ 3, Rational[ -1, 2]]]]]], Times[ Rational[ -1, 12], Power[ Plus[ Times[ Rational[ -1, 12], Power[ t, 2]], Times[ Power[ 3, Rational[ -1, 2]], x]], Power[ 3, Rational[ 1, 2]]], Plus[ Power[ t, 2], Times[ -4, Power[ 3, Rational[ 1, 2]], x]], Power[ Times[ -1, Power[ z, -1]], Power[ 3, Rational[ -1, 2]]], Power[ z, -1], Power[ d[ x], 2], Power[ F2[ z], Plus[ 1, Times[ 2, Power[ 3, Rational[ -1, 2]]]]]], Times[ Rational[ 1, 1728], Power[ Plus[ Times[ Rational[ -1, 12], Power[ t, 2]], Times[ Power[ 3, Rational[ -1, 2]], x]], Power[ 3, Rational[ 1, 2]]], Power[ Plus[ Power[ t, 2], Times[ -4, Power[ 3, Rational[ 1, 2]], x]], 3], Power[ Plus[ -1, z], -1], Power[ Times[ -1, Power[ z, -1]], Power[ 3, Rational[ -1, 2]]], Power[ z, -2], Power[ d[ z], 2], Power[ F2[ z], Plus[ 1, Times[ 2, Power[ 3, Rational[ -1, 2]]]]], Plus[ -1, v[ z]], Plus[ 1, v[ z]]]], 32]], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ RowBox[{\("gUU = "\), "\[InvisibleSpace]", TagBox[ RowBox[{"(", GridBox[{ {\(\(144\ \((\(-\(t\^2\/12\)\) + x\/\@3)\)\^\(-\@3\)\ \((t\^8 - 16\ \@3\ t\^6\ x + 288\ t\^4\ x\^2 - 768\ \@3\ t\^2\ x\^3 + 2304\ x\^4)\)\ \((\(-\(1\/z\)\))\)\^\(-\(1\/\@3\)\)\ F2[z]\^\(\(-1\) - 2\/\@3\)\)\/\(t\^12 - 24\ \@3\ t\^10\ x + 720\ t\^8\ x\^2 - 3840\ \@3\ t\^6\ x\^3 + 34560\ t\^4\ x\^4 - 55296\ \@3\ t\^2\ x\^5 + 110592\ x\^6\)\), "0", "0", "0"}, {"0", \(- \(\(12\ \((\(-\(t\^2\/12\)\) + x\/\@3)\)\^\(-\@3\)\ \((t\^10 - 20\ \@3\ t\^8\ x + 480\ t\^6\ x\^2 - 1920\ \@3\ t\^4\ x\^3 + 11520\ t\^2\ x\^4 - 9216\ \@3\ x\^5)\)\ \((\(-\(1\/z\)\))\)\^\(-\(1\/\@3\)\)\ z\ F2[z]\^\(\(-1\) - 2\/\@3\)\)\/\(t\^12 - 24\ \@3\ t\^10\ x + 720\ t\^8\ x\^2 - 3840\ \@3\ t\^6\ x\^3 + 34560\ t\^4\ x\^4 - 55296\ \@3\ t\^2\ x\^5 + 110592\ x\^6\)\)\), "0", "0"}, {"0", "0", \(\(-\((\(-\(t\^2\/12\)\) + x\/\@3)\)\^\(\@3\)\)\ \((\(-\(1\/z\)\))\)\^\(1\/\@3\)\ F2[z]\), "0"}, {"0", "0", "0", \(\(1728\ \((\(-\(t\^2\/12\)\) + x\/\@3)\)\^\(-\@3\)\ \((t\^6 - 12\ \@3\ t\^4\ x + 144\ t\^2\ x\^2 - 192\ \@3\ x\^3)\)\ \((\(-1\) + z)\)\ \((\(-\(1\/z\)\))\)\^\(-\(1\/\@3\)\)\ z\^2\ F2[z]\^\(\(-1\) - 2\/\@3\)\)\/\(\(( t\^12 - 24\ \@3\ t\^10\ x + 720\ t\^8\ x\^2 - 3840\ \@3\ t\^6\ x\^3 + 34560\ t\^4\ x\^4 - 55296\ \@3\ t\^2\ x\^5 + 110592\ x\^6)\)\ \((\(-1\) + v[z])\)\ \((1 + v[z])\)\)\)} }], ")"}], (MatrixForm[ #]&)]}], SequenceForm[ "gUU = ", MatrixForm[ {{ Times[ 144, Power[ Plus[ Times[ Rational[ -1, 12], Power[ t, 2]], Times[ Power[ 3, Rational[ -1, 2]], x]], Times[ -1, Power[ 3, Rational[ 1, 2]]]], Plus[ Power[ t, 8], Times[ -16, Power[ 3, Rational[ 1, 2]], Power[ t, 6], x], Times[ 288, Power[ t, 4], Power[ x, 2]], Times[ -768, Power[ 3, Rational[ 1, 2]], Power[ t, 2], Power[ x, 3]], Times[ 2304, Power[ x, 4]]], Power[ Plus[ Power[ t, 12], Times[ -24, Power[ 3, Rational[ 1, 2]], Power[ t, 10], x], Times[ 720, Power[ t, 8], Power[ x, 2]], Times[ -3840, Power[ 3, Rational[ 1, 2]], Power[ t, 6], Power[ x, 3]], Times[ 34560, Power[ t, 4], Power[ x, 4]], Times[ -55296, Power[ 3, Rational[ 1, 2]], Power[ t, 2], Power[ x, 5]], Times[ 110592, Power[ x, 6]]], -1], Power[ Times[ -1, Power[ z, -1]], Times[ -1, Power[ 3, Rational[ -1, 2]]]], Power[ F2[ z], Plus[ -1, Times[ -2, Power[ 3, Rational[ -1, 2]]]]]], 0, 0, 0}, {0, Times[ -12, Power[ Plus[ Times[ Rational[ -1, 12], Power[ t, 2]], Times[ Power[ 3, Rational[ -1, 2]], x]], Times[ -1, Power[ 3, Rational[ 1, 2]]]], Plus[ Power[ t, 10], Times[ -20, Power[ 3, Rational[ 1, 2]], Power[ t, 8], x], Times[ 480, Power[ t, 6], Power[ x, 2]], Times[ -1920, Power[ 3, Rational[ 1, 2]], Power[ t, 4], Power[ x, 3]], Times[ 11520, Power[ t, 2], Power[ x, 4]], Times[ -9216, Power[ 3, Rational[ 1, 2]], Power[ x, 5]]], Power[ Plus[ Power[ t, 12], Times[ -24, Power[ 3, Rational[ 1, 2]], Power[ t, 10], x], Times[ 720, Power[ t, 8], Power[ x, 2]], Times[ -3840, Power[ 3, Rational[ 1, 2]], Power[ t, 6], Power[ x, 3]], Times[ 34560, Power[ t, 4], Power[ x, 4]], Times[ -55296, Power[ 3, Rational[ 1, 2]], Power[ t, 2], Power[ x, 5]], Times[ 110592, Power[ x, 6]]], -1], Power[ Times[ -1, Power[ z, -1]], Times[ -1, Power[ 3, Rational[ -1, 2]]]], z, Power[ F2[ z], Plus[ -1, Times[ -2, Power[ 3, Rational[ -1, 2]]]]]], 0, 0}, {0, 0, Times[ -1, Power[ Plus[ Times[ Rational[ -1, 12], Power[ t, 2]], Times[ Power[ 3, Rational[ -1, 2]], x]], Power[ 3, Rational[ 1, 2]]], Power[ Times[ -1, Power[ z, -1]], Power[ 3, Rational[ -1, 2]]], F2[ z]], 0}, {0, 0, 0, Times[ 1728, Power[ Plus[ Times[ Rational[ -1, 12], Power[ t, 2]], Times[ Power[ 3, Rational[ -1, 2]], x]], Times[ -1, Power[ 3, Rational[ 1, 2]]]], Plus[ Power[ t, 6], Times[ -12, Power[ 3, Rational[ 1, 2]], Power[ t, 4], x], Times[ 144, Power[ t, 2], Power[ x, 2]], Times[ -192, Power[ 3, Rational[ 1, 2]], Power[ x, 3]]], Power[ Plus[ Power[ t, 12], Times[ -24, Power[ 3, Rational[ 1, 2]], Power[ t, 10], x], Times[ 720, Power[ t, 8], Power[ x, 2]], Times[ -3840, Power[ 3, Rational[ 1, 2]], Power[ t, 6], Power[ x, 3]], Times[ 34560, Power[ t, 4], Power[ x, 4]], Times[ -55296, Power[ 3, Rational[ 1, 2]], Power[ t, 2], Power[ x, 5]], Times[ 110592, Power[ x, 6]]], -1], Plus[ -1, z], Power[ Times[ -1, Power[ z, -1]], Times[ -1, Power[ 3, Rational[ -1, 2]]]], Power[ z, 2], Power[ F2[ z], Plus[ -1, Times[ -2, Power[ 3, Rational[ -1, 2]]]]], Power[ Plus[ -1, v[ z]], -1], Power[ Plus[ 1, v[ z]], -1]]}}]], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ \("gUU computed in "\[InvisibleSpace]0.43333333333333357` \[InvisibleSpace]" sec"\), SequenceForm[ "gUU computed in ", 0.43333333333333357, " sec"], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ \("Gamma computed in "\[InvisibleSpace]0.633333333333332859` \[InvisibleSpace]" sec"\), SequenceForm[ "Gamma computed in ", 0.63333333333333286, " sec"], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ \("Riemann(dddd) computed in "\[InvisibleSpace]2.98333333333333428` \[InvisibleSpace]" sec"\), SequenceForm[ "Riemann(dddd) computed in ", 2.9833333333333343, " sec"], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ \("Riemann(Uddd) computed in "\[InvisibleSpace]2.09999999999999786` \[InvisibleSpace]" sec"\), SequenceForm[ "Riemann(Uddd) computed in ", 2.0999999999999979, " sec"], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ \("Ricci computed in "\[InvisibleSpace]1.9166666666666714` \[InvisibleSpace]" sec"\), SequenceForm[ "Ricci computed in ", 1.9166666666666714, " sec"], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ \("Weyl computed in "\[InvisibleSpace]0.`\[InvisibleSpace]" sec"\), SequenceForm[ "Weyl computed in ", 0.0, " sec"], Editable->False]], "Print"], Cell[BoxData[ \("Ricci Flat"\)], "Output", FontSize->20, FontWeight->"Bold", FontColor->RGBColor[1, 0, 1]], Cell[BoxData[ \("All tasks completed in 8.18333 seconds"\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(detg\)], "Input"], Cell[BoxData[ \(\(1\/\(2985984\ \((\(-1\) + z)\)\ z\^3\)\(( \((\(-\(t\^2\/12\)\) + x\/\@3)\)\^\(2\ \@3\)\ \((t\^12 - 24\ \@3\ t\^10\ x + 720\ t\^8\ x\^2 - 3840\ \@3\ t\^6\ x\^3 + 34560\ t\^4\ x\^4 - 55296\ \@3\ t\^2\ x\^5 + 110592\ x\^6)\)\ \((\(-\(1\/z\)\))\)\^\(2\/\@3\)\ F2[z]\^\(2 + 2\ \@3\)\ \((\(-1\) + v[z])\)\ \((1 + v[z])\))\)\)\)], "Output"] }, Open ]], Cell[TextData[{ StyleBox["\tMathematica", FontSlant->"Italic"], " 4 (or higher) is able to factor the long polynomial (", Cell[BoxData[ RowBox[{ SuperscriptBox[ StyleBox["t", FontWeight->"Plain", FontSlant->"Plain", FontTracking->"Plain", FontVariations->{"Underline"->False, "Outline"->False, "Shadow"->False}], "12"], "..."}]], "Input"], ") appearing in ", StyleBox["detg", FontFamily->"Courier"], " as ", Cell[BoxData[ \(\((t\^2 - 4\ \@3\ x)\)\^6\)]], " (and also the other polynomials in gUU). As a result the calculation is \ completed in 1/3 the time!" }], "Text", FontSize->16, FontColor->RGBColor[0, 0, 1]] }, Closed]], Cell[CellGroupData[{ Cell[" Example 7: Bondi metric (Proc. Roy. Soc. A269, 21) ", "Subsection", ShowGroupOpenCloseIcon->True, FontSize->16], Cell[BoxData[ \(\(xCoord = {u, r, \[Theta], \[CurlyPhi]}; \)\)], "Input"], Cell[BoxData[ \(\(g = {{ Exp[2\ \[Beta][u, r, \[Theta]]] V[u, r, \[Theta]]/r - r^2 Exp[2 \[Gamma][u, r, \[Theta]]] U[u, r, \[Theta]]^2, Exp[2\ \[Beta][u, r, \[Theta]]], r^2 Exp[2 \[Gamma][u, r, \[Theta]]] U[u, r, \[Theta]], 0}, { Exp[2\ \[Beta][u, r, \[Theta]]], 0, 0, 0}, { r^2 Exp[2 \[Gamma][u, r, \[Theta]]] U[u, r, \[Theta]], 0, \(-r^2\) Exp[2 \[Gamma][u, r, \[Theta]]], 0}, {0, 0, 0, \(-r^2\) Exp[\(-2\) \[Gamma][u, r, \[Theta]]] Sin[\[Theta]]^2}}; \)\)], "Input"], Cell[BoxData[ \(\(simpRules = TrigRules; \)\)], "Input"], Cell[CellGroupData[{ Cell[BoxData[ \(RGtensors[g, xCoord]\)], "Input"], Cell[BoxData[ InterpretationBox[ RowBox[{\("gdd = "\), "\[InvisibleSpace]", TagBox[ RowBox[{"(", GridBox[{ {\(\(-E\^\(2\ \[Gamma][u, r, \[Theta]]\)\)\ r\^2\ U[u, r, \[Theta]]\^2 + \(E\^\(2\ \[Beta][u, r, \[Theta]]\)\ V[u, r, \[Theta]]\)\/r\), \(E\^\(2\ \[Beta][u, r, \[Theta]]\)\), \(E\^\(2\ \[Gamma][u, r, \[Theta]]\)\ r\^2\ U[u, r, \[Theta]]\), "0"}, {\(E\^\(2\ \[Beta][u, r, \[Theta]]\)\), "0", "0", "0"}, {\(E\^\(2\ \[Gamma][u, r, \[Theta]]\)\ r\^2\ U[u, r, \[Theta]]\), "0", \(\(-E\^\(2\ \[Gamma][u, r, \[Theta]]\)\)\ r\^2\), "0"}, {"0", "0", "0", \(\(-E\^\(\(-2\)\ \[Gamma][u, r, \[Theta]]\)\)\ r\^2\ Sin[\[Theta]]\^2\)} }], ")"}], (MatrixForm[ #]&)]}], SequenceForm[ "gdd = ", MatrixForm[ {{ Plus[ Times[ -1, Power[ E, Times[ 2, \[Gamma][ u, r, \[Theta]]]], Power[ r, 2], Power[ U[ u, r, \[Theta]], 2]], Times[ Power[ E, Times[ 2, \[Beta][ u, r, \[Theta]]]], Power[ r, -1], V[ u, r, \[Theta]]]], Power[ E, Times[ 2, \[Beta][ u, r, \[Theta]]]], Times[ Power[ E, Times[ 2, \[Gamma][ u, r, \[Theta]]]], Power[ r, 2], U[ u, r, \[Theta]]], 0}, { Power[ E, Times[ 2, \[Beta][ u, r, \[Theta]]]], 0, 0, 0}, { Times[ Power[ E, Times[ 2, \[Gamma][ u, r, \[Theta]]]], Power[ r, 2], U[ u, r, \[Theta]]], 0, Times[ -1, Power[ E, Times[ 2, \[Gamma][ u, r, \[Theta]]]], Power[ r, 2]], 0}, {0, 0, 0, Times[ -1, Power[ E, Times[ -2, \[Gamma][ u, r, \[Theta]]]], Power[ r, 2], Power[ Sin[ \[Theta]], 2]]}}]], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ RowBox[{\("LineElement = "\), "\[InvisibleSpace]", TagBox[ \(2\ E\^\(2\ \[Beta][u, r, \[Theta]]\)\ d[r]\ d[u] - E\^\(2\ \[Gamma][u, r, \[Theta]]\)\ r\^2\ d[\[Theta]]\^2 - E\^\(\(-2\)\ \[Gamma][u, r, \[Theta]]\)\ r\^2\ d[\[CurlyPhi]]\^2\ Sin[\[Theta]]\^2 + 2\ E\^\(2\ \[Gamma][u, r, \[Theta]]\)\ r\^2\ d[u]\ d[\[Theta]]\ U[u, r, \[Theta]] - \(d[u]\^2\ \((E\^\(2\ \[Gamma][u, r, \[Theta]]\)\ r\^3\ U[u, r, \[Theta]]\^2 - E\^\(2\ \[Beta][u, r, \[Theta]]\)\ V[u, r, \[Theta]]) \)\)\/r\), (Short[ #, 32]&)]}], SequenceForm[ "LineElement = ", Short[ Plus[ Times[ 2, Power[ E, Times[ 2, \[Beta][ u, r, \[Theta]]]], d[ r], d[ u]], Times[ -1, Power[ E, Times[ 2, \[Gamma][ u, r, \[Theta]]]], Power[ r, 2], Power[ d[ \[Theta]], 2]], Times[ -1, Power[ E, Times[ -2, \[Gamma][ u, r, \[Theta]]]], Power[ r, 2], Power[ d[ \[CurlyPhi]], 2], Power[ Sin[ \[Theta]], 2]], Times[ 2, Power[ E, Times[ 2, \[Gamma][ u, r, \[Theta]]]], Power[ r, 2], d[ u], d[ \[Theta]], U[ u, r, \[Theta]]], Times[ -1, Power[ r, -1], Power[ d[ u], 2], Plus[ Times[ Power[ E, Times[ 2, \[Gamma][ u, r, \[Theta]]]], Power[ r, 3], Power[ U[ u, r, \[Theta]], 2]], Times[ -1, Power[ E, Times[ 2, \[Beta][ u, r, \[Theta]]]], V[ u, r, \[Theta]]]]]], 32]], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ RowBox[{\("gUU = "\), "\[InvisibleSpace]", TagBox[ RowBox[{"(", GridBox[{ {"0", \(E\^\(\(-2\)\ \[Beta][u, r, \[Theta]]\)\), "0", "0"}, {\(E\^\(\(-2\)\ \[Beta][u, r, \[Theta]]\)\), \(-\(\(E\^\(\(-2\)\ \[Beta][u, r, \[Theta]]\)\ V[u, r, \[Theta]]\)\/r\)\), \(E\^\(\(-2\)\ \[Beta][u, r, \[Theta]]\)\ U[u, r, \[Theta]]\), "0"}, {"0", \(E\^\(\(-2\)\ \[Beta][u, r, \[Theta]]\)\ U[u, r, \[Theta]]\), \(-\(E\^\(\(-2\)\ \[Gamma][u, r, \[Theta]]\)\/r\^2\)\), "0"}, {"0", "0", "0", \(-\(\(E\^\(2\ \[Gamma][u, r, \[Theta]]\)\ Csc[\[Theta]]\^2\)\/r\^2\)\)} }], ")"}], (MatrixForm[ #]&)]}], SequenceForm[ "gUU = ", MatrixForm[ {{0, Power[ E, Times[ -2, \[Beta][ u, r, \[Theta]]]], 0, 0}, { Power[ E, Times[ -2, \[Beta][ u, r, \[Theta]]]], Times[ -1, Power[ E, Times[ -2, \[Beta][ u, r, \[Theta]]]], Power[ r, -1], V[ u, r, \[Theta]]], Times[ Power[ E, Times[ -2, \[Beta][ u, r, \[Theta]]]], U[ u, r, \[Theta]]], 0}, {0, Times[ Power[ E, Times[ -2, \[Beta][ u, r, \[Theta]]]], U[ u, r, \[Theta]]], Times[ -1, Power[ E, Times[ -2, \[Gamma][ u, r, \[Theta]]]], Power[ r, -2]], 0}, {0, 0, 0, Times[ -1, Power[ E, Times[ 2, \[Gamma][ u, r, \[Theta]]]], Power[ r, -2], Power[ Csc[ \[Theta]], 2]]}}]], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ \("gUU computed in "\[InvisibleSpace]0.0166666666666728247` \[InvisibleSpace]" sec"\), SequenceForm[ "gUU computed in ", 0.016666666666672825, " sec"], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ \("Gamma computed in "\[InvisibleSpace]0.36666666666666714` \[InvisibleSpace]" sec"\), SequenceForm[ "Gamma computed in ", 0.36666666666666714, " sec"], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ \("Riemann(dddd) computed in "\[InvisibleSpace]1.64999999999999857` \[InvisibleSpace]" sec"\), SequenceForm[ "Riemann(dddd) computed in ", 1.6499999999999986, " sec"], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ \("Riemann(Uddd) computed in "\[InvisibleSpace]6.26666666666666571` \[InvisibleSpace]" sec"\), SequenceForm[ "Riemann(Uddd) computed in ", 6.2666666666666657, " sec"], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ \("Ricci computed in "\[InvisibleSpace]2.54999999999999715` \[InvisibleSpace]" sec"\), SequenceForm[ "Ricci computed in ", 2.5499999999999972, " sec"], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ \("Weyl computed in "\[InvisibleSpace]5.51666666666666571` \[InvisibleSpace]" sec"\), SequenceForm[ "Weyl computed in ", 5.5166666666666657, " sec"], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ \("Einstein computed in "\[InvisibleSpace]1.89999999999999857` \[InvisibleSpace]" sec"\), SequenceForm[ "Einstein computed in ", 1.8999999999999986, " sec"], Editable->False]], "Print"], Cell[BoxData[ \("All tasks completed in 18.3333 seconds"\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(GUdd[\([2, 2, 3]\)]\)], "Input"], Cell[BoxData[ RowBox[{\(1\/2\), " ", \(E\^\(\(-2\)\ \[Beta][u, r, \[Theta]]\)\), " ", RowBox[{"(", RowBox[{ RowBox[{"2", " ", \(E\^\(2\ \[Beta][u, r, \[Theta]]\)\), " ", RowBox[{ SuperscriptBox["\[Beta]", TagBox[\((0, 0, 1)\), Derivative], MultilineFunction->None], "[", \(u, r, \[Theta]\), "]"}]}], "+", RowBox[{ \(E\^\(2\ \[Gamma][u, r, \[Theta]]\)\), " ", \(r\^2\), " ", RowBox[{ SuperscriptBox["U", TagBox[\((0, 1, 0)\), Derivative], MultilineFunction->None], "[", \(u, r, \[Theta]\), "]"}]}]}], ")"}]}]], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(Rdd[\([2, 2]\)]\)], "Input"], Cell[BoxData[ RowBox[{"-", FractionBox[ RowBox[{"2", " ", RowBox[{"(", RowBox[{ RowBox[{\(-2\), " ", RowBox[{ SuperscriptBox["\[Beta]", TagBox[\((0, 1, 0)\), Derivative], MultilineFunction->None], "[", \(u, r, \[Theta]\), "]"}]}], "+", RowBox[{"r", " ", SuperscriptBox[ RowBox[{ SuperscriptBox["\[Gamma]", TagBox[\((0, 1, 0)\), Derivative], MultilineFunction->None], "[", \(u, r, \[Theta]\), "]"}], "2"]}]}], ")"}]}], "r"]}]], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(EUd[\([2, 3]\)]\)], "Input"], Cell[BoxData[ RowBox[{\(1\/\(2\ r\^2\)\), RowBox[{"(", RowBox[{\(E\^\(\(-4\)\ \[Beta][u, r, \[Theta]]\)\), " ", RowBox[{"(", RowBox[{ \(2\ E\^\(2\ \[Beta][u, r, \[Theta]]\)\ r\^2\ U[u, r, \[Theta]]\), "-", RowBox[{\(E\^\(2\ \[Beta][u, r, \[Theta]]\)\), " ", RowBox[{ SuperscriptBox["V", TagBox[\((0, 0, 1)\), Derivative], MultilineFunction->None], "[", \(u, r, \[Theta]\), "]"}]}], "+", RowBox[{ "2", " ", \(E\^\(2\ \[Beta][u, r, \[Theta]]\)\), " ", \(r\^2\), " ", \(Cot[\[Theta]]\), " ", \(U[u, r, \[Theta]]\), " ", RowBox[{ SuperscriptBox["\[Beta]", TagBox[\((0, 0, 1)\), Derivative], MultilineFunction->None], "[", \(u, r, \[Theta]\), "]"}]}], "-", RowBox[{ "4", " ", \(E\^\(2\ \[Beta][u, r, \[Theta]]\)\), " ", \(V[u, r, \[Theta]]\), " ", RowBox[{ SuperscriptBox["\[Beta]", TagBox[\((0, 0, 1)\), Derivative], MultilineFunction->None], "[", \(u, r, \[Theta]\), "]"}]}], "+", RowBox[{ "6", " ", \(E\^\(2\ \[Beta][u, r, \[Theta]]\)\), " ", \(r\^2\), " ", \(Cot[\[Theta]]\), " ", \(U[u, r, \[Theta]]\), " ", RowBox[{ SuperscriptBox["\[Gamma]", TagBox[\((0, 0, 1)\), Derivative], MultilineFunction->None], "[", \(u, r, \[Theta]\), "]"}]}], "-", RowBox[{ "4", " ", \(E\^\(2\ \[Beta][u, r, \[Theta]]\)\), " ", \(r\^2\), " ", \(U[u, r, \[Theta]]\), " ", SuperscriptBox[ RowBox[{ SuperscriptBox["\[Gamma]", TagBox[\((0, 0, 1)\), Derivative], MultilineFunction->None], "[", \(u, r, \[Theta]\), "]"}], "2"]}], "-", RowBox[{ "2", " ", \(E\^\(2\ \[Beta][u, r, \[Theta]]\)\), " ", \(r\^2\), " ", \(U[u, r, \[Theta]]\), " ", RowBox[{ SuperscriptBox["\[Beta]", TagBox[\((0, 0, 2)\), Derivative], MultilineFunction->None], "[", \(u, r, \[Theta]\), "]"}]}], "+", RowBox[{ "2", " ", \(E\^\(2\ \[Beta][u, r, \[Theta]]\)\), " ", \(r\^2\), " ", \(U[u, r, \[Theta]]\), " ", RowBox[{ SuperscriptBox["\[Gamma]", TagBox[\((0, 0, 2)\), Derivative], MultilineFunction->None], "[", \(u, r, \[Theta]\), "]"}]}], "-", RowBox[{ \(E\^\(2\ \[Gamma][u, r, \[Theta]]\)\), " ", \(r\^4\), " ", \(Cot[\[Theta]]\), " ", \(U[u, r, \[Theta]]\), " ", RowBox[{ SuperscriptBox["U", TagBox[\((0, 1, 0)\), Derivative], MultilineFunction->None], "[", \(u, r, \[Theta]\), "]"}]}], "-", RowBox[{ "2", " ", \(E\^\(2\ \[Gamma][u, r, \[Theta]]\)\), " ", \(r\^4\), " ", RowBox[{ SuperscriptBox["U", TagBox[\((0, 0, 1)\), Derivative], MultilineFunction->None], "[", \(u, r, \[Theta]\), "]"}], " ", RowBox[{ SuperscriptBox["U", TagBox[\((0, 1, 0)\), Derivative], MultilineFunction->None], "[", \(u, r, \[Theta]\), "]"}]}], "+", RowBox[{ "2", " ", \(E\^\(2\ \[Gamma][u, r, \[Theta]]\)\), " ", \(r\^4\), " ", \(U[u, r, \[Theta]]\), " ", RowBox[{ SuperscriptBox["\[Beta]", TagBox[\((0, 0, 1)\), Derivative], MultilineFunction->None], "[", \(u, r, \[Theta]\), "]"}], " ", RowBox[{ SuperscriptBox["U", TagBox[\((0, 1, 0)\), Derivative], MultilineFunction->None], "[", \(u, r, \[Theta]\), "]"}]}], "-", RowBox[{ "2", " ", \(E\^\(2\ \[Gamma][u, r, \[Theta]]\)\), " ", \(r\^4\), " ", \(U[u, r, \[Theta]]\), " ", RowBox[{ SuperscriptBox["\[Gamma]", TagBox[\((0, 0, 1)\), Derivative], MultilineFunction->None], "[", \(u, r, \[Theta]\), "]"}], " ", RowBox[{ SuperscriptBox["U", TagBox[\((0, 1, 0)\), Derivative], MultilineFunction->None], "[", \(u, r, \[Theta]\), "]"}]}], "+", RowBox[{ "2", " ", \(E\^\(2\ \[Beta][u, r, \[Theta]]\)\), " ", "r", " ", RowBox[{ SuperscriptBox["V", TagBox[\((0, 0, 1)\), Derivative], MultilineFunction->None], "[", \(u, r, \[Theta]\), "]"}], " ", RowBox[{ SuperscriptBox["\[Beta]", TagBox[\((0, 1, 0)\), Derivative], MultilineFunction->None], "[", \(u, r, \[Theta]\), "]"}]}], "-", RowBox[{ "4", " ", \(E\^\(2\ \[Beta][u, r, \[Theta]]\)\), " ", "r", " ", \(Cot[\[Theta]]\), " ", \(V[u, r, \[Theta]]\), " ", RowBox[{ SuperscriptBox["\[Gamma]", TagBox[\((0, 1, 0)\), Derivative], MultilineFunction->None], "[", \(u, r, \[Theta]\), "]"}]}], "-", RowBox[{ "2", " ", \(E\^\(2\ \[Beta][u, r, \[Theta]]\)\), " ", "r", " ", RowBox[{ SuperscriptBox["V", TagBox[\((0, 0, 1)\), Derivative], MultilineFunction->None], "[", \(u, r, \[Theta]\), "]"}], " ", RowBox[{ SuperscriptBox["\[Gamma]", TagBox[\((0, 1, 0)\), Derivative], MultilineFunction->None], "[", \(u, r, \[Theta]\), "]"}]}], "+", RowBox[{ "4", " ", \(E\^\(2\ \[Beta][u, r, \[Theta]]\)\), " ", "r", " ", \(V[u, r, \[Theta]]\), " ", RowBox[{ SuperscriptBox["\[Gamma]", TagBox[\((0, 0, 1)\), Derivative], MultilineFunction->None], "[", \(u, r, \[Theta]\), "]"}], " ", RowBox[{ SuperscriptBox["\[Gamma]", TagBox[\((0, 1, 0)\), Derivative], MultilineFunction->None], "[", \(u, r, \[Theta]\), "]"}]}], "-", RowBox[{ \(E\^\(2\ \[Gamma][u, r, \[Theta]]\)\), " ", \(r\^4\), " ", \(U[u, r, \[Theta]]\), " ", RowBox[{ SuperscriptBox["U", TagBox[\((0, 1, 1)\), Derivative], MultilineFunction->None], "[", \(u, r, \[Theta]\), "]"}]}], "+", RowBox[{\(E\^\(2\ \[Beta][u, r, \[Theta]]\)\), " ", "r", " ", RowBox[{ SuperscriptBox["V", TagBox[\((0, 1, 1)\), Derivative], MultilineFunction->None], "[", \(u, r, \[Theta]\), "]"}]}], "+", RowBox[{ "2", " ", \(E\^\(2\ \[Beta][u, r, \[Theta]]\)\), " ", "r", " ", \(V[u, r, \[Theta]]\), " ", RowBox[{ SuperscriptBox["\[Beta]", TagBox[\((0, 1, 1)\), Derivative], MultilineFunction->None], "[", \(u, r, \[Theta]\), "]"}]}], "-", RowBox[{ "2", " ", \(E\^\(2\ \[Beta][u, r, \[Theta]]\)\), " ", "r", " ", \(V[u, r, \[Theta]]\), " ", RowBox[{ SuperscriptBox["\[Gamma]", TagBox[\((0, 1, 1)\), Derivative], MultilineFunction->None], "[", \(u, r, \[Theta]\), "]"}]}], "+", RowBox[{ "2", " ", \(E\^\(2\ \[Gamma][u, r, \[Theta]]\)\), " ", \(r\^4\), " ", RowBox[{ SuperscriptBox["U", TagBox[\((0, 1, 0)\), Derivative], MultilineFunction->None], "[", \(u, r, \[Theta]\), "]"}], " ", RowBox[{ SuperscriptBox["\[Beta]", TagBox[\((1, 0, 0)\), Derivative], MultilineFunction->None], "[", \(u, r, \[Theta]\), "]"}]}], "+", RowBox[{ "4", " ", \(E\^\(2\ \[Beta][u, r, \[Theta]]\)\), " ", \(r\^2\), " ", \(Cot[\[Theta]]\), " ", RowBox[{ SuperscriptBox["\[Gamma]", TagBox[\((1, 0, 0)\), Derivative], MultilineFunction->None], "[", \(u, r, \[Theta]\), "]"}]}], "-", RowBox[{ "4", " ", \(E\^\(2\ \[Beta][u, r, \[Theta]]\)\), " ", \(r\^2\), " ", RowBox[{ SuperscriptBox["\[Gamma]", TagBox[\((0, 0, 1)\), Derivative], MultilineFunction->None], "[", \(u, r, \[Theta]\), "]"}], " ", RowBox[{ SuperscriptBox["\[Gamma]", TagBox[\((1, 0, 0)\), Derivative], MultilineFunction->None], "[", \(u, r, \[Theta]\), "]"}]}], "-", RowBox[{ "2", " ", \(E\^\(2\ \[Gamma][u, r, \[Theta]]\)\), " ", \(r\^4\), " ", RowBox[{ SuperscriptBox["U", TagBox[\((0, 1, 0)\), Derivative], MultilineFunction->None], "[", \(u, r, \[Theta]\), "]"}], " ", RowBox[{ SuperscriptBox["\[Gamma]", TagBox[\((1, 0, 0)\), Derivative], MultilineFunction->None], "[", \(u, r, \[Theta]\), "]"}]}], "-", RowBox[{ "2", " ", \(E\^\(2\ \[Beta][u, r, \[Theta]]\)\), " ", \(r\^2\), " ", RowBox[{ SuperscriptBox["\[Beta]", TagBox[\((1, 0, 1)\), Derivative], MultilineFunction->None], "[", \(u, r, \[Theta]\), "]"}]}], "+", RowBox[{ "2", " ", \(E\^\(2\ \[Beta][u, r, \[Theta]]\)\), " ", \(r\^2\), " ", RowBox[{ SuperscriptBox["\[Gamma]", TagBox[\((1, 0, 1)\), Derivative], MultilineFunction->None], "[", \(u, r, \[Theta]\), "]"}]}], "-", RowBox[{ \(E\^\(2\ \[Gamma][u, r, \[Theta]]\)\), " ", \(r\^4\), " ", RowBox[{ SuperscriptBox["U", TagBox[\((1, 1, 0)\), Derivative], MultilineFunction->None], "[", \(u, r, \[Theta]\), "]"}]}]}], ")"}]}], ")"}]}]], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(covD[gdd]\)], "Input"], Cell[BoxData[ \({{{0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}}, {{0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}}, {{0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}}, {{0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}}}\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(LieD[{0, 0, 0, 1}, Rdd]\)], "Input"], Cell[BoxData[ \({{0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0}}\)], "Output"] }, Open ]], Cell[TextData[{ "\t", StyleBox[ "Verification of the Bianchi identities for this metric takes ~ 19 min \ (12.5 min + 6 min + 7 sec).", FontSize->16] }], "Text", FontColor->RGBColor[0, 0, 1]], Cell[TextData[{ "\n\t", StyleBox[ "One can choose to skip the time consuming RUddd and/or Wdddd computations \ by calling ", FontSize->16], StyleBox["RGtensors", FontSize->16, FontWeight->"Bold"], StyleBox[" wirh a 3rd argument:", FontSize->16] }], "Text", FontColor->RGBColor[0, 0, 1]], Cell[CellGroupData[{ Cell[BoxData[ \(RGtensors[g, xCoord, {0, 0}]\)], "Input"], Cell[BoxData[ InterpretationBox[ RowBox[{\("gdd = "\), "\[InvisibleSpace]", TagBox[ RowBox[{"(", GridBox[{ {\(\(-E\^\(2\ \[Gamma][u, r, \[Theta]]\)\)\ r\^2\ U[u, r, \[Theta]]\^2 + \(E\^\(2\ \[Beta][u, r, \[Theta]]\)\ V[u, r, \[Theta]]\)\/r\), \(E\^\(2\ \[Beta][u, r, \[Theta]]\)\), \(E\^\(2\ \[Gamma][u, r, \[Theta]]\)\ r\^2\ U[u, r, \[Theta]]\), "0"}, {\(E\^\(2\ \[Beta][u, r, \[Theta]]\)\), "0", "0", "0"}, {\(E\^\(2\ \[Gamma][u, r, \[Theta]]\)\ r\^2\ U[u, r, \[Theta]]\), "0", \(\(-E\^\(2\ \[Gamma][u, r, \[Theta]]\)\)\ r\^2\), "0"}, {"0", "0", "0", \(\(-E\^\(\(-2\)\ \[Gamma][u, r, \[Theta]]\)\)\ r\^2\ Sin[\[Theta]]\^2\)} }], ")"}], (MatrixForm[ #]&)]}], SequenceForm[ "gdd = ", MatrixForm[ {{ Plus[ Times[ -1, Power[ E, Times[ 2, \[Gamma][ u, r, \[Theta]]]], Power[ r, 2], Power[ U[ u, r, \[Theta]], 2]], Times[ Power[ E, Times[ 2, \[Beta][ u, r, \[Theta]]]], Power[ r, -1], V[ u, r, \[Theta]]]], Power[ E, Times[ 2, \[Beta][ u, r, \[Theta]]]], Times[ Power[ E, Times[ 2, \[Gamma][ u, r, \[Theta]]]], Power[ r, 2], U[ u, r, \[Theta]]], 0}, { Power[ E, Times[ 2, \[Beta][ u, r, \[Theta]]]], 0, 0, 0}, { Times[ Power[ E, Times[ 2, \[Gamma][ u, r, \[Theta]]]], Power[ r, 2], U[ u, r, \[Theta]]], 0, Times[ -1, Power[ E, Times[ 2, \[Gamma][ u, r, \[Theta]]]], Power[ r, 2]], 0}, {0, 0, 0, Times[ -1, Power[ E, Times[ -2, \[Gamma][ u, r, \[Theta]]]], Power[ r, 2], Power[ Sin[ \[Theta]], 2]]}}]], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ RowBox[{\("LineElement = "\), "\[InvisibleSpace]", TagBox[ \(2\ E\^\(2\ \[Beta][u, r, \[Theta]]\)\ d[r]\ d[u] - E\^\(2\ \[Gamma][u, r, \[Theta]]\)\ r\^2\ d[\[Theta]]\^2 - E\^\(\(-2\)\ \[Gamma][u, r, \[Theta]]\)\ r\^2\ d[\[CurlyPhi]]\^2\ Sin[\[Theta]]\^2 + 2\ E\^\(2\ \[Gamma][u, r, \[Theta]]\)\ r\^2\ d[u]\ d[\[Theta]]\ U[u, r, \[Theta]] - \(d[u]\^2\ \((E\^\(2\ \[Gamma][u, r, \[Theta]]\)\ r\^3\ U[u, r, \[Theta]]\^2 - E\^\(2\ \[Beta][u, r, \[Theta]]\)\ V[u, r, \[Theta]]) \)\)\/r\), (Short[ #, 32]&)]}], SequenceForm[ "LineElement = ", Short[ Plus[ Times[ 2, Power[ E, Times[ 2, \[Beta][ u, r, \[Theta]]]], d[ r], d[ u]], Times[ -1, Power[ E, Times[ 2, \[Gamma][ u, r, \[Theta]]]], Power[ r, 2], Power[ d[ \[Theta]], 2]], Times[ -1, Power[ E, Times[ -2, \[Gamma][ u, r, \[Theta]]]], Power[ r, 2], Power[ d[ \[CurlyPhi]], 2], Power[ Sin[ \[Theta]], 2]], Times[ 2, Power[ E, Times[ 2, \[Gamma][ u, r, \[Theta]]]], Power[ r, 2], d[ u], d[ \[Theta]], U[ u, r, \[Theta]]], Times[ -1, Power[ r, -1], Power[ d[ u], 2], Plus[ Times[ Power[ E, Times[ 2, \[Gamma][ u, r, \[Theta]]]], Power[ r, 3], Power[ U[ u, r, \[Theta]], 2]], Times[ -1, Power[ E, Times[ 2, \[Beta][ u, r, \[Theta]]]], V[ u, r, \[Theta]]]]]], 32]], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ RowBox[{\("gUU = "\), "\[InvisibleSpace]", TagBox[ RowBox[{"(", GridBox[{ {"0", \(E\^\(\(-2\)\ \[Beta][u, r, \[Theta]]\)\), "0", "0"}, {\(E\^\(\(-2\)\ \[Beta][u, r, \[Theta]]\)\), \(-\(\(E\^\(\(-2\)\ \[Beta][u, r, \[Theta]]\)\ V[u, r, \[Theta]]\)\/r\)\), \(E\^\(\(-2\)\ \[Beta][u, r, \[Theta]]\)\ U[u, r, \[Theta]]\), "0"}, {"0", \(E\^\(\(-2\)\ \[Beta][u, r, \[Theta]]\)\ U[u, r, \[Theta]]\), \(-\(E\^\(\(-2\)\ \[Gamma][u, r, \[Theta]]\)\/r\^2\)\), "0"}, {"0", "0", "0", \(-\(\(E\^\(2\ \[Gamma][u, r, \[Theta]]\)\ Csc[\[Theta]]\^2\)\/r\^2\)\)} }], ")"}], (MatrixForm[ #]&)]}], SequenceForm[ "gUU = ", MatrixForm[ {{0, Power[ E, Times[ -2, \[Beta][ u, r, \[Theta]]]], 0, 0}, { Power[ E, Times[ -2, \[Beta][ u, r, \[Theta]]]], Times[ -1, Power[ E, Times[ -2, \[Beta][ u, r, \[Theta]]]], Power[ r, -1], V[ u, r, \[Theta]]], Times[ Power[ E, Times[ -2, \[Beta][ u, r, \[Theta]]]], U[ u, r, \[Theta]]], 0}, {0, Times[ Power[ E, Times[ -2, \[Beta][ u, r, \[Theta]]]], U[ u, r, \[Theta]]], Times[ -1, Power[ E, Times[ -2, \[Gamma][ u, r, \[Theta]]]], Power[ r, -2]], 0}, {0, 0, 0, Times[ -1, Power[ E, Times[ 2, \[Gamma][ u, r, \[Theta]]]], Power[ r, -2], Power[ Csc[ \[Theta]], 2]]}}]], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ \("gUU computed in "\[InvisibleSpace]0.0166666666666657192` \[InvisibleSpace]" sec"\), SequenceForm[ "gUU computed in ", 0.016666666666665719, " sec"], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ \("Gamma computed in "\[InvisibleSpace]0.383333333333332859` \[InvisibleSpace]" sec"\), SequenceForm[ "Gamma computed in ", 0.38333333333333286, " sec"], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ \("Riemann(dddd) computed in "\[InvisibleSpace]1.64999999999999857` \[InvisibleSpace]" sec"\), SequenceForm[ "Riemann(dddd) computed in ", 1.6499999999999986, " sec"], Editable->False]], "Print"], Cell[BoxData[ \("RUddd not computed"\)], "Output", FontSize->16, FontSlant->"Italic", FontColor->RGBColor[1, 0, 1]], Cell[BoxData[ InterpretationBox[ \("Ricci computed in "\[InvisibleSpace]2.51666666666666571` \[InvisibleSpace]" sec"\), SequenceForm[ "Ricci computed in ", 2.5166666666666657, " sec"], Editable->False]], "Print"], Cell[BoxData[ \("Weyl tensor not computed"\)], "Output", FontSize->16, FontSlant->"Italic", FontColor->RGBColor[1, 0, 1]], Cell[BoxData[ InterpretationBox[ \("Einstein computed in "\[InvisibleSpace]1.95000000000000284` \[InvisibleSpace]" sec"\), SequenceForm[ "Einstein computed in ", 1.9500000000000028, " sec"], Editable->False]], "Print"], Cell[BoxData[ \("All tasks completed in 6.6 seconds"\)], "Output"] }, Open ]] }, Closed]], Cell[CellGroupData[{ Cell[TextData[ " Example 8: Kerr with Cos[\[Theta]], Sin[\[Theta]]"], "Subsection", ShowGroupOpenCloseIcon->True, FontSize->16], Cell[TextData[{ "\tTransform Boyer-Lindquist t, \[CurlyPhi]BL coordinates: ", StyleBox[ " d[t]->d[u]+(r^2+a^2) d[r]/(r^2-2M*r+a^2), \ d[\[CurlyPhi]BL]->d[\[CurlyPhi]]+a d[r]/(r^2-2M*r+a^2)", FontFamily->"Courier", FontSize->14], StyleBox[";", FontSize->14] }], "Text", FontSize->16, FontColor->RGBColor[0, 0, 1]], Cell[BoxData[ \(\(xCoord = {u, r, \[Theta], \[CurlyPhi]}; \)\)], "Input"], Cell[BoxData[ \(\(g = {{1 - \(2\ M\ r\)\/\(r\^2 + a\^2\ Cos[\[Theta]]\^2\), 1, 0, \(2 a\ \ M\ r\ Sin[\[Theta]]^2\)\/\(r\^2 + a\^2\ Cos[\[Theta]]\^2\)}, {1, 0, 0, \(-a\)\ \ Sin[\[Theta]]^2}, {0, 0, \(-\((r^2 + a^2 Cos[\[Theta]]^2)\)\), 0}, { \(2 a\ \ M\ r\ Sin[\[Theta]]^2\)\/\(r\^2 + a\^2\ Cos[\[Theta]]\^2\), \(-a\)\ \ Sin[\[Theta]]^2, 0, \(-Sin[\[Theta]]^2\) \((2\ a\^2\ M\ r + a\^2\ r\^2 + r\^4 + a\^2\ \((a\^2 - 2\ M\ r + r\^2)\)\ Cos[\[Theta]]\^2)\)/ \((r\^2 + a\^2\ Cos[\[Theta]]\^2)\)}}; \)\)], "Input"], Cell[TextData[{ "\n\n\t", StyleBox[ "(1) Use TrigRules in simpRules and do not compute theWeyl tensor:", FontSize->16] }], "Text", FontColor->RGBColor[0, 0, 1]], Cell[BoxData[ \(\(simpRules = TrigRules; \)\)], "Input"], Cell[CellGroupData[{ Cell[BoxData[ \(RGtensors[g, xCoord, {1, 0}]\)], "Input"], Cell[BoxData[ InterpretationBox[ RowBox[{\("gdd = "\), "\[InvisibleSpace]", TagBox[ RowBox[{"(", GridBox[{ {\(1 - \(2\ M\ r\)\/\(r\^2 + a\^2\ Cos[\[Theta]]\^2\)\), "1", "0", \(\(2\ a\ M\ r\ Sin[\[Theta]]\^2\)\/\(r\^2 + a\^2\ Cos[\[Theta]]\^2\)\)}, {"1", "0", "0", \(\(-a\)\ Sin[\[Theta]]\^2\)}, {"0", "0", \(\(-r\^2\) - a\^2\ Cos[\[Theta]]\^2\), "0"}, {\(\(2\ a\ M\ r\ Sin[\[Theta]]\^2\)\/\(r\^2 + a\^2\ Cos[\[Theta]]\^2\)\), \(\(-a\)\ Sin[\[Theta]]\^2\), "0", \(-\(\(\((2\ a\^2\ M\ r + a\^2\ r\^2 + r\^4 + a\^2\ \((a\^2 - 2\ M\ r + r\^2)\)\ Cos[\[Theta]]\^2)\)\ Sin[\[Theta]]\^2\)\/\(r\^2 + a\^2\ Cos[\[Theta]]\^2\)\)\)} }], ")"}], (MatrixForm[ #]&)]}], SequenceForm[ "gdd = ", MatrixForm[ {{ Plus[ 1, Times[ -2, M, r, Power[ Plus[ Power[ r, 2], Times[ Power[ a, 2], Power[ Cos[ \[Theta]], 2]]], -1]]], 1, 0, Times[ 2, a, M, r, Power[ Plus[ Power[ r, 2], Times[ Power[ a, 2], Power[ Cos[ \[Theta]], 2]]], -1], Power[ Sin[ \[Theta]], 2]]}, {1, 0, 0, Times[ -1, a, Power[ Sin[ \[Theta]], 2]]}, {0, 0, Plus[ Times[ -1, Power[ r, 2]], Times[ -1, Power[ a, 2], Power[ Cos[ \[Theta]], 2]]], 0}, { Times[ 2, a, M, r, Power[ Plus[ Power[ r, 2], Times[ Power[ a, 2], Power[ Cos[ \[Theta]], 2]]], -1], Power[ Sin[ \[Theta]], 2]], Times[ -1, a, Power[ Sin[ \[Theta]], 2]], 0, Times[ -1, Power[ Plus[ Power[ r, 2], Times[ Power[ a, 2], Power[ Cos[ \[Theta]], 2]]], -1], Plus[ Times[ 2, Power[ a, 2], M, r], Times[ Power[ a, 2], Power[ r, 2]], Power[ r, 4], Times[ Power[ a, 2], Plus[ Power[ a, 2], Times[ -2, M, r], Power[ r, 2]], Power[ Cos[ \[Theta]], 2]]], Power[ Sin[ \[Theta]], 2]]}}]], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ RowBox[{\("LineElement = "\), "\[InvisibleSpace]", TagBox[ \(\( - \(\((2\ M\ r - r\^2 - a\^2\ Cos[\[Theta]]\^2)\)\ d[u]\^2\)\/\(r\^2 + a\^2\ Cos[\[Theta]]\^2\)\) + \((\(-r\^2\) - a\^2\ Cos[\[Theta]]\^2)\)\ d[\[Theta]]\^2 + \(4\ a\ M\ r\ d[u]\ d[\[CurlyPhi]]\ Sin[\[Theta]]\^2\)\/\(r\^2 + a\^2\ Cos[\[Theta]]\^2\) - \(\((2\ a\^2\ M\ r + a\^2\ r\^2 + r\^4 + a\^4\ Cos[\[Theta]]\^2 - 2\ a\^2\ M\ r\ Cos[\[Theta]]\^2 + a\^2\ r\^2\ Cos[\[Theta]]\^2)\)\ d[\[CurlyPhi]]\^2\ Sin[\[Theta]]\^2\)\/\(r\^2 + a\^2\ Cos[\[Theta]]\^2\) + d[r]\ \((2\ d[u] - 2\ a\ d[\[CurlyPhi]]\ Sin[\[Theta]]\^2)\)\), (Short[ #, 32]&)]}], SequenceForm[ "LineElement = ", Short[ Plus[ Times[ -1, Plus[ Times[ 2, M, r], Times[ -1, Power[ r, 2]], Times[ -1, Power[ a, 2], Power[ Cos[ \[Theta]], 2]]], Power[ Plus[ Power[ r, 2], Times[ Power[ a, 2], Power[ Cos[ \[Theta]], 2]]], -1], Power[ d[ u], 2]], Times[ Plus[ Times[ -1, Power[ r, 2]], Times[ -1, Power[ a, 2], Power[ Cos[ \[Theta]], 2]]], Power[ d[ \[Theta]], 2]], Times[ 4, a, M, r, Power[ Plus[ Power[ r, 2], Times[ Power[ a, 2], Power[ Cos[ \[Theta]], 2]]], -1], d[ u], d[ \[CurlyPhi]], Power[ Sin[ \[Theta]], 2]], Times[ -1, Power[ Plus[ Power[ r, 2], Times[ Power[ a, 2], Power[ Cos[ \[Theta]], 2]]], -1], Plus[ Times[ 2, Power[ a, 2], M, r], Times[ Power[ a, 2], Power[ r, 2]], Power[ r, 4], Times[ Power[ a, 4], Power[ Cos[ \[Theta]], 2]], Times[ -2, Power[ a, 2], M, r, Power[ Cos[ \[Theta]], 2]], Times[ Power[ a, 2], Power[ r, 2], Power[ Cos[ \[Theta]], 2]]], Power[ d[ \[CurlyPhi]], 2], Power[ Sin[ \[Theta]], 2]], Times[ d[ r], Plus[ Times[ 2, d[ u]], Times[ -2, a, d[ \[CurlyPhi]], Power[ Sin[ \[Theta]], 2]]]]], 32]], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ RowBox[{\("gUU = "\), "\[InvisibleSpace]", TagBox[ RowBox[{"(", GridBox[{ {\(\(a\^2\ Sin[\[Theta]]\^2\)\/\(\(-a\^2\) - r\^2 + a\^2\ Sin[\[Theta]]\^2\)\), \(-\(\(a\^2 + r\^2\)\/\(\(-a\^2\) - r\^2 + a\^2\ Sin[\[Theta]]\^2\)\)\), "0", \(a\/\(\(-a\^2\) - r\^2 + a\^2\ Sin[\[Theta]]\^2\)\)}, {\(-\(\(a\^2 + r\^2\)\/\(\(-a\^2\) - r\^2 + a\^2\ Sin[\[Theta]]\^2\)\)\), \(\(a\^2 - 2\ M\ r + r\^2\)\/\(\(-a\^2\) - r\^2 + a\^2\ Sin[\[Theta]]\^2\)\), "0", \(-\(a\/\(\(-a\^2\) - r\^2 + a\^2\ Sin[\[Theta]]\^2\)\)\)}, {"0", "0", \(-\(1\/\(r\^2 + a\^2\ Cos[\[Theta]]\^2\)\)\), "0"}, {\(a\/\(\(-a\^2\) - r\^2 + a\^2\ Sin[\[Theta]]\^2\)\), \(-\(a\/\(\(-a\^2\) - r\^2 + a\^2\ Sin[\[Theta]]\^2\)\)\), "0", \(Csc[\[Theta]]\^2\/\(\(-a\^2\) - r\^2 + a\^2\ Sin[\[Theta]]\^2\)\)} }], ")"}], (MatrixForm[ #]&)]}], SequenceForm[ "gUU = ", MatrixForm[ {{ Times[ Power[ a, 2], Power[ Sin[ \[Theta]], 2], Power[ Plus[ Times[ -1, Power[ a, 2]], Times[ -1, Power[ r, 2]], Times[ Power[ a, 2], Power[ Sin[ \[Theta]], 2]]], -1]], Times[ -1, Plus[ Power[ a, 2], Power[ r, 2]], Power[ Plus[ Times[ -1, Power[ a, 2]], Times[ -1, Power[ r, 2]], Times[ Power[ a, 2], Power[ Sin[ \[Theta]], 2]]], -1]], 0, Times[ a, Power[ Plus[ Times[ -1, Power[ a, 2]], Times[ -1, Power[ r, 2]], Times[ Power[ a, 2], Power[ Sin[ \[Theta]], 2]]], -1]]}, { Times[ -1, Plus[ Power[ a, 2], Power[ r, 2]], Power[ Plus[ Times[ -1, Power[ a, 2]], Times[ -1, Power[ r, 2]], Times[ Power[ a, 2], Power[ Sin[ \[Theta]], 2]]], -1]], Times[ Plus[ Power[ a, 2], Times[ -2, M, r], Power[ r, 2]], Power[ Plus[ Times[ -1, Power[ a, 2]], Times[ -1, Power[ r, 2]], Times[ Power[ a, 2], Power[ Sin[ \[Theta]], 2]]], -1]], 0, Times[ -1, a, Power[ Plus[ Times[ -1, Power[ a, 2]], Times[ -1, Power[ r, 2]], Times[ Power[ a, 2], Power[ Sin[ \[Theta]], 2]]], -1]]}, {0, 0, Times[ -1, Power[ Plus[ Power[ r, 2], Times[ Power[ a, 2], Power[ Cos[ \[Theta]], 2]]], -1]], 0}, { Times[ a, Power[ Plus[ Times[ -1, Power[ a, 2]], Times[ -1, Power[ r, 2]], Times[ Power[ a, 2], Power[ Sin[ \[Theta]], 2]]], -1]], Times[ -1, a, Power[ Plus[ Times[ -1, Power[ a, 2]], Times[ -1, Power[ r, 2]], Times[ Power[ a, 2], Power[ Sin[ \[Theta]], 2]]], -1]], 0, Times[ Power[ Csc[ \[Theta]], 2], Power[ Plus[ Times[ -1, Power[ a, 2]], Times[ -1, Power[ r, 2]], Times[ Power[ a, 2], Power[ Sin[ \[Theta]], 2]]], -1]]}}]], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ \("gUU computed in "\[InvisibleSpace]0.466666666666661456` \[InvisibleSpace]" sec"\), SequenceForm[ "gUU computed in ", 0.46666666666666146, " sec"], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ \("Gamma computed in "\[InvisibleSpace]0.48333333333333428` \[InvisibleSpace]" sec"\), SequenceForm[ "Gamma computed in ", 0.48333333333333428, " sec"], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ \("Riemann(dddd) computed in "\[InvisibleSpace]1.81666666666666998` \[InvisibleSpace]" sec"\), SequenceForm[ "Riemann(dddd) computed in ", 1.81666666666667, " sec"], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ \("Riemann(Uddd) computed in "\[InvisibleSpace]10.9500000000000019` \[InvisibleSpace]" sec"\), SequenceForm[ "Riemann(Uddd) computed in ", 10.950000000000003, " sec"], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ \("Ricci computed in "\[InvisibleSpace]4.70000000000000284` \[InvisibleSpace]" sec"\), SequenceForm[ "Ricci computed in ", 4.7000000000000028, " sec"], Editable->False]], "Print"], Cell[BoxData[ \("Weyl tensor not computed"\)], "Output", FontSize->16, FontSlant->"Italic", FontColor->RGBColor[1, 0, 1]], Cell[BoxData[ InterpretationBox[ \("Einstein computed in "\[InvisibleSpace]6.58333333333332859` \[InvisibleSpace]" sec"\), SequenceForm[ "Einstein computed in ", 6.5833333333333286, " sec"], Editable->False]], "Print"], Cell[BoxData[ \("All tasks completed in 25.1 seconds"\)], "Output"] }, Open ]], Cell[TextData[{ "\t", StyleBox["Note that, using TrigRules, ", FontSize->16], StyleBox["RGtensors", FontSize->16, FontWeight->"Bold"], StyleBox[" is unable to verify that the metric is Ricci-Flat. ", FontSize->16], StyleBox["Rdd", FontSize->16, FontWeight->"Bold"], StyleBox[" has two independent non-vanishing components:", FontSize->16] }], "Text", FontColor->RGBColor[0, 0, 1]], Cell[CellGroupData[{ Cell[BoxData[ \(indepTerms[Rdd]\)], "Input"], Cell[BoxData[ \({\(( a\^2\ Cos[\[Theta]]\ \((2\ a\^6\ M\^2\ r\ Cos[\[Theta]]\ Cot[\[Theta]] + 2\ a\^6\ M\ r\^2\ Cos[\[Theta]]\ Cot[\[Theta]] + 4\ a\^4\ M\^2\ r\^3\ Cos[\[Theta]]\ Cot[\[Theta]] + 9\ a\^4\ M\ r\^4\ Cos[\[Theta]]\ Cot[\[Theta]] + 3\ a\^4\ r\^5\ Cos[\[Theta]]\ Cot[\[Theta]] + 4\ a\^2\ M\^2\ r\^5\ Cos[\[Theta]]\ Cot[\[Theta]] + 4\ a\^2\ M\ r\^6\ Cos[\[Theta]]\ Cot[\[Theta]] + 2\ a\^2\ r\^7\ Cos[\[Theta]]\ Cot[\[Theta]] - 5\ M\ r\^8\ Cos[\[Theta]]\ Cot[\[Theta]] - r\^9\ Cos[\[Theta]]\ Cot[\[Theta]] - 2\ a\^6\ M\^2\ r\ Cos[\[Theta]]\^3\ Cot[\[Theta]] + a\^6\ M\ r\^2\ Cos[\[Theta]]\^3\ Cot[\[Theta]] + 3\ a\^6\ r\^3\ Cos[\[Theta]]\^3\ Cot[\[Theta]] - 2\ a\^4\ M\^2\ r\^3\ Cos[\[Theta]]\^3\ Cot[\[Theta]] - 4\ a\^4\ M\ r\^4\ Cos[\[Theta]]\^3\ Cot[\[Theta]] - 2\ a\^2\ M\^2\ r\^5\ Cos[\[Theta]]\^3\ Cot[\[Theta]] - 11\ a\^2\ M\ r\^6\ Cos[\[Theta]]\^3\ Cot[\[Theta]] - 3\ a\^2\ r\^7\ Cos[\[Theta]]\^3\ Cot[\[Theta]] - a\^8\ M\ Cos[\[Theta]]\^5\ Cot[\[Theta]] + a\^8\ r\ Cos[\[Theta]]\^5\ Cot[\[Theta]] - 2\ a\^6\ M\^2\ r\ Cos[\[Theta]]\^5\ Cot[\[Theta]] - 2\ a\^6\ M\ r\^2\ Cos[\[Theta]]\^5\ Cot[\[Theta]] - 2\ a\^6\ r\^3\ Cos[\[Theta]]\^5\ Cot[\[Theta]] - 7\ a\^4\ M\ r\^4\ Cos[\[Theta]]\^5\ Cot[\[Theta]] - 3\ a\^4\ r\^5\ Cos[\[Theta]]\^5\ Cot[\[Theta]] + a\^8\ M\ Cos[\[Theta]]\^7\ Cot[\[Theta]] - a\^8\ r\ Cos[\[Theta]]\^7\ Cot[\[Theta]] + 2\ a\^6\ M\^2\ r\ Cos[\[Theta]]\^7\ Cot[\[Theta]] - a\^6\ M\ r\^2\ Cos[\[Theta]]\^7\ Cot[\[Theta]] - a\^6\ r\^3\ Cos[\[Theta]]\^7\ Cot[\[Theta]] - 2\ a\^4\ M\^2\ r\^3\ Csc[\[Theta]] + 2\ a\^4\ M\ r\^4\ Csc[\[Theta]] - 2\ a\^2\ M\^2\ r\^5\ Csc[\[Theta]] + 7\ a\^2\ M\ r\^6\ Csc[\[Theta]] + a\^2\ r\^7\ Csc[\[Theta]] + 5\ M\ r\^8\ Csc[\[Theta]] + r\^9\ Csc[\[Theta]] + 4\ a\^4\ M\^2\ r\^3\ Sin[\[Theta]] - 6\ a\^4\ M\ r\^4\ Sin[\[Theta]] + 2\ a\^2\ M\^2\ r\^5\ Sin[\[Theta]] - 13\ a\^2\ M\ r\^6\ Sin[\[Theta]] - a\^2\ r\^7\ Sin[\[Theta]] - 5\ M\ r\^8\ Sin[\[Theta]] - r\^9\ Sin[\[Theta]] - 6\ a\^6\ M\^2\ r\ Cos[\[Theta]]\^2\ Sin[\[Theta]] - 6\ a\^6\ M\ r\^2\ Cos[\[Theta]]\^2\ Sin[\[Theta]] - 6\ a\^4\ M\^2\ r\^3\ Cos[\[Theta]]\^2\ Sin[\[Theta]] - 17\ a\^4\ M\ r\^4\ Cos[\[Theta]]\^2\ Sin[\[Theta]] - 3\ a\^4\ r\^5\ Cos[\[Theta]]\^2\ Sin[\[Theta]] - 2\ a\^2\ M\^2\ r\^5\ Cos[\[Theta]]\^2\ Sin[\[Theta]] - 5\ a\^2\ M\ r\^6\ Cos[\[Theta]]\^2\ Sin[\[Theta]] - 3\ a\^2\ r\^7\ Cos[\[Theta]]\^2\ Sin[\[Theta]] + 4\ a\^6\ M\^2\ r\ Cos[\[Theta]]\^4\ Sin[\[Theta]] - 3\ a\^6\ M\ r\^2\ Cos[\[Theta]]\^4\ Sin[\[Theta]] - 3\ a\^6\ r\^3\ Cos[\[Theta]]\^4\ Sin[\[Theta]] + 2\ a\^4\ M\^2\ r\^3\ Cos[\[Theta]]\^4\ Sin[\[Theta]] + 3\ a\^4\ M\ r\^4\ Cos[\[Theta]]\^4\ Sin[\[Theta]] - 3\ a\^4\ r\^5\ Cos[\[Theta]]\^4\ Sin[\[Theta]] + a\^8\ M\ Cos[\[Theta]]\^6\ Sin[\[Theta]] - a\^8\ r\ Cos[\[Theta]]\^6\ Sin[\[Theta]] + 2\ a\^6\ M\^2\ r\ Cos[\[Theta]]\^6\ Sin[\[Theta]] + 3\ a\^6\ M\ r\^2\ Cos[\[Theta]]\^6\ Sin[\[Theta]] - a\^6\ r\^3\ Cos[\[Theta]]\^6\ Sin[\[Theta]] - 2\ a\^4\ M\^2\ r\^3\ Sin[\[Theta]]\^3 + 6\ a\^4\ M\ r\^4\ Sin[\[Theta]]\^3 + 6\ a\^2\ M\ r\^6\ Sin[\[Theta]]\^3 + 6\ a\^6\ M\^2\ r\ Cos[\[Theta]]\^2\ Sin[\[Theta]]\^3 + 6\ a\^6\ M\ r\^2\ Cos[\[Theta]]\^2\ Sin[\[Theta]]\^3 + 2\ a\^4\ M\^2\ r\^3\ Cos[\[Theta]]\^2\ Sin[\[Theta]]\^3 + 8\ a\^4\ M\ r\^4\ Cos[\[Theta]]\^2\ Sin[\[Theta]]\^3 - 2\ a\^6\ M\^2\ r\ Cos[\[Theta]]\^4\ Sin[\[Theta]]\^3 + 2\ a\^6\ M\ r\^2\ Cos[\[Theta]]\^4\ Sin[\[Theta]]\^3 - 2\ a\^4\ M\ r\^4\ Sin[\[Theta]]\^5 - 2\ a\^6\ M\^2\ r\ Cos[\[Theta]]\^2\ Sin[\[Theta]]\^5 - 2\ a\^6\ M\ r\^2\ Cos[\[Theta]]\^2\ Sin[\[Theta]]\^5)\))\)/ \((\((r\^2 + a\^2\ Cos[\[Theta]]\^2)\)\^4\ \((\(-a\^2\) - r\^2 + a\^2\ Sin[\[Theta]]\^2)\)\^2)\), \((a\^2\ r\ \(( \(-3\)\ a\^2\ M\ r\^6 - a\^2\ r\^7 + M\ r\^8 + 16\ a\^6\ M\^2\ r\ Cos[\[Theta]]\^2 + 6\ a\^6\ M\ r\^2\ Cos[\[Theta]]\^2 + 24\ a\^4\ M\^2\ r\^3\ Cos[\[Theta]]\^2 + 15\ a\^4\ M\ r\^4\ Cos[\[Theta]]\^2 - 3\ a\^4\ r\^5\ Cos[\[Theta]]\^2 + 10\ a\^2\ M\^2\ r\^5\ Cos[\[Theta]]\^2 + 18\ a\^2\ M\ r\^6\ Cos[\[Theta]]\^2 - 2\ a\^2\ r\^7\ Cos[\[Theta]]\^2 + M\ r\^8\ Cos[\[Theta]]\^2 + 8\ a\^8\ M\ Cos[\[Theta]]\^4 + 19\ a\^6\ M\ r\^2\ Cos[\[Theta]]\^4 - 3\ a\^6\ r\^3\ Cos[\[Theta]]\^4 - 18\ a\^4\ M\^2\ r\^3\ Cos[\[Theta]]\^4 + 22\ a\^4\ M\ r\^4\ Cos[\[Theta]]\^4 - 10\ a\^2\ M\^2\ r\^5\ Cos[\[Theta]]\^4 - 5\ a\^2\ M\ r\^6\ Cos[\[Theta]]\^4 + 3\ a\^2\ r\^7\ Cos[\[Theta]]\^4 + a\^8\ M\ Cos[\[Theta]]\^6 - a\^8\ r\ Cos[\[Theta]]\^6 - 18\ a\^6\ M\^2\ r\ Cos[\[Theta]]\^6 + 4\ a\^6\ M\ r\^2\ Cos[\[Theta]]\^6 + 2\ a\^6\ r\^3\ Cos[\[Theta]]\^6 - 6\ a\^4\ M\^2\ r\^3\ Cos[\[Theta]]\^6 - 17\ a\^4\ M\ r\^4\ Cos[\[Theta]]\^6 + 3\ a\^4\ r\^5\ Cos[\[Theta]]\^6 - a\^8\ M\ Cos[\[Theta]]\^8 + a\^8\ r\ Cos[\[Theta]]\^8 + 2\ a\^6\ M\^2\ r\ Cos[\[Theta]]\^8 - 15\ a\^6\ M\ r\^2\ Cos[\[Theta]]\^8 + a\^6\ r\^3\ Cos[\[Theta]]\^8 - 4\ a\^8\ M\ Cos[\[Theta]]\^10 - 4\ a\^6\ M\^2\ r\ Cot[\[Theta]]\^2 - 8\ a\^4\ M\^2\ r\^3\ Cot[\[Theta]]\^2 - 4\ a\^2\ M\^2\ r\^5\ Cot[\[Theta]]\^2 - 4\ a\^2\ M\ r\^6\ Cot[\[Theta]]\^2 - 2\ M\ r\^8\ Cot[\[Theta]]\^2 - 4\ a\^6\ M\ r\^2\ Cos[\[Theta]]\^2\ Cot[\[Theta]]\^2 + 8\ a\^4\ M\^2\ r\^3\ Cos[\[Theta]]\^2\ Cot[\[Theta]]\^2 - 8\ a\^4\ M\ r\^4\ Cos[\[Theta]]\^2\ Cot[\[Theta]]\^2 + 8\ a\^2\ M\^2\ r\^5\ Cos[\[Theta]]\^2\ Cot[\[Theta]]\^2 - 2\ a\^2\ M\ r\^6\ Cos[\[Theta]]\^2\ Cot[\[Theta]]\^2 + 2\ M\ r\^8\ Cos[\[Theta]]\^2\ Cot[\[Theta]]\^2 - 2\ a\^8\ M\ Cos[\[Theta]]\^4\ Cot[\[Theta]]\^2 + 8\ a\^6\ M\^2\ r\ Cos[\[Theta]]\^4\ Cot[\[Theta]]\^2 - 4\ a\^6\ M\ r\^2\ Cos[\[Theta]]\^4\ Cot[\[Theta]]\^2 + 8\ a\^4\ M\^2\ r\^3\ Cos[\[Theta]]\^4\ Cot[\[Theta]]\^2 + 4\ a\^4\ M\ r\^4\ Cos[\[Theta]]\^4\ Cot[\[Theta]]\^2 - 4\ a\^2\ M\^2\ r\^5\ Cos[\[Theta]]\^4\ Cot[\[Theta]]\^2 + 6\ a\^2\ M\ r\^6\ Cos[\[Theta]]\^4\ Cot[\[Theta]]\^2 + 6\ a\^6\ M\ r\^2\ Cos[\[Theta]]\^6\ Cot[\[Theta]]\^2 - 8\ a\^4\ M\^2\ r\^3\ Cos[\[Theta]]\^6\ Cot[\[Theta]]\^2 + 6\ a\^4\ M\ r\^4\ Cos[\[Theta]]\^6\ Cot[\[Theta]]\^2 + 2\ a\^8\ M\ Cos[\[Theta]]\^8\ Cot[\[Theta]]\^2 - 4\ a\^6\ M\^2\ r\ Cos[\[Theta]]\^8\ Cot[\[Theta]]\^2 + 2\ a\^6\ M\ r\^2\ Cos[\[Theta]]\^8\ Cot[\[Theta]]\^2 - 2\ a\^4\ M\ r\^4\ Csc[\[Theta]]\^2 + 6\ a\^4\ M\ r\^4\ Sin[\[Theta]]\^2 + 7\ a\^2\ M\ r\^6\ Sin[\[Theta]]\^2 + 3\ a\^2\ r\^7\ Sin[\[Theta]]\^2 - M\ r\^8\ Sin[\[Theta]]\^2 - 24\ a\^6\ M\^2\ r\ Cos[\[Theta]]\^2\ Sin[\[Theta]]\^2 - 18\ a\^6\ M\ r\^2\ Cos[\[Theta]]\^2\ Sin[\[Theta]]\^2 - 24\ a\^4\ M\^2\ r\^3\ Cos[\[Theta]]\^2\ Sin[\[Theta]]\^2 - 23\ a\^4\ M\ r\^4\ Cos[\[Theta]]\^2\ Sin[\[Theta]]\^2 + 9\ a\^4\ r\^5\ Cos[\[Theta]]\^2\ Sin[\[Theta]]\^2 - 6\ a\^2\ M\^2\ r\^5\ Cos[\[Theta]]\^2\ Sin[\[Theta]]\^2 - 15\ a\^2\ M\ r\^6\ Cos[\[Theta]]\^2\ Sin[\[Theta]]\^2 + a\^2\ r\^7\ Cos[\[Theta]]\^2\ Sin[\[Theta]]\^2 - 24\ a\^8\ M\ Cos[\[Theta]]\^4\ Sin[\[Theta]]\^2 - 27\ a\^6\ M\ r\^2\ Cos[\[Theta]]\^4\ Sin[\[Theta]]\^2 + 9\ a\^6\ r\^3\ Cos[\[Theta]]\^4\ Sin[\[Theta]]\^2 + 10\ a\^4\ M\^2\ r\^3\ Cos[\[Theta]]\^4\ Sin[\[Theta]]\^2 - 15\ a\^4\ M\ r\^4\ Cos[\[Theta]]\^4\ Sin[\[Theta]]\^2 - 3\ a\^4\ r\^5\ Cos[\[Theta]]\^4\ Sin[\[Theta]]\^2 + 3\ a\^8\ M\ Cos[\[Theta]]\^6\ Sin[\[Theta]]\^2 + 3\ a\^8\ r\ Cos[\[Theta]]\^6\ Sin[\[Theta]]\^2 + 10\ a\^6\ M\^2\ r\ Cos[\[Theta]]\^6\ Sin[\[Theta]]\^2 + a\^6\ M\ r\^2\ Cos[\[Theta]]\^6\ Sin[\[Theta]]\^2 - 5\ a\^6\ r\^3\ Cos[\[Theta]]\^6\ Sin[\[Theta]]\^2 + 2\ a\^8\ M\ Cos[\[Theta]]\^8\ Sin[\[Theta]]\^2 - 2\ a\^8\ r\ Cos[\[Theta]]\^8\ Sin[\[Theta]]\^2 - 6\ a\^4\ M\ r\^4\ Sin[\[Theta]]\^4 - 4\ a\^2\ M\ r\^6\ Sin[\[Theta]]\^4 - 2\ a\^2\ r\^7\ Sin[\[Theta]]\^4 + 16\ a\^6\ M\^2\ r\ Cos[\[Theta]]\^2\ Sin[\[Theta]]\^4 + 18\ a\^6\ M\ r\^2\ Cos[\[Theta]]\^2\ Sin[\[Theta]]\^4 + 8\ a\^4\ M\^2\ r\^3\ Cos[\[Theta]]\^2\ Sin[\[Theta]]\^4 + 10\ a\^4\ M\ r\^4\ Cos[\[Theta]]\^2\ Sin[\[Theta]]\^4 - 6\ a\^4\ r\^5\ Cos[\[Theta]]\^2\ Sin[\[Theta]]\^4 + 24\ a\^8\ M\ Cos[\[Theta]]\^4\ Sin[\[Theta]]\^4 + 12\ a\^6\ M\ r\^2\ Cos[\[Theta]]\^4\ Sin[\[Theta]]\^4 - 6\ a\^6\ r\^3\ Cos[\[Theta]]\^4\ Sin[\[Theta]]\^4 - 2\ a\^8\ M\ Cos[\[Theta]]\^6\ Sin[\[Theta]]\^4 - 2\ a\^8\ r\ Cos[\[Theta]]\^6\ Sin[\[Theta]]\^4 + 2\ a\^4\ M\ r\^4\ Sin[\[Theta]]\^6 - 4\ a\^6\ M\^2\ r\ Cos[\[Theta]]\^2\ Sin[\[Theta]]\^6 - 6\ a\^6\ M\ r\^2\ Cos[\[Theta]]\^2\ Sin[\[Theta]]\^6 - 8\ a\^8\ M\ Cos[\[Theta]]\^4\ Sin[\[Theta]]\^6)\))\)/ \((\((r\^2 + a\^2\ Cos[\[Theta]]\^2)\)\^4\ \((a\^2 + r\^2 - a\^2\ Sin[\[Theta]]\^2)\)\^2)\)}\)], "Output"] }, Closed]], Cell[CellGroupData[{ Cell[BoxData[ \(Simplify[%]\)], "Input"], Cell[BoxData[ \({0, 0}\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(RUddd[\([1, 2, 1, 3]\)]\)], "Input"], Cell[BoxData[ \(\((a\^2\ M\ Cos[\[Theta]]\ Sin[\[Theta]]\ \((8\ a\^2\ r\^2 + 3\ r\^4 - 2\ a\^4\ Cos[\[Theta]]\^2 - 6\ a\^2\ r\^2\ Cos[\[Theta]]\^2 + a\^4\ Cos[\[Theta]]\^4 - 8\ a\^2\ r\^2\ Sin[\[Theta]]\^2 + 2\ a\^4\ Cos[\[Theta]]\^2\ Sin[\[Theta]]\^2)\))\)/ \((\((r\^2 + a\^2\ Cos[\[Theta]]\^2)\)\^3\ \((\(-a\^2\) - r\^2 + a\^2\ Sin[\[Theta]]\^2)\))\)\)], "Output"] }, Open ]], Cell["", "Text"], Cell[CellGroupData[{ Cell[TextData[{ "\t", StyleBox[ "(2) To simplify denominators in gUU and elsewhere, use extra rule in \ simpRules:", FontSize->16] }], "Text", CellFrame->True, ShowGroupOpenCloseIcon->True, FontColor->RGBColor[0, 0, 1]], Cell[CellGroupData[{ Cell[BoxData[ \(simpRules = Join[TrigRules, { Sin[\[Theta]]\^n_ :> \(Sin[\[Theta]]\^\(n - 2\)\) \((1 - Cos[\[Theta]]\^2)\) /; n > 1}] \)], "Input", FontColor->GrayLevel[0.333333]], Cell[BoxData[ \({Cos[\[Theta]_]\^2\ x_. + x_.\ Sin[\[Theta]_]\^2 \[Rule] x, Cot[\[Theta]_]\^2\ x_. + Csc[\[Theta]_]\^2\ y_. \[RuleDelayed] y /; x + y === 0, Sin[\[Theta]]\^n_ \[RuleDelayed] Sin[\[Theta]]\^\(n - 2\)\ \((1 - Cos[\[Theta]]\^2)\) /; n > 1}\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(RGtensors[g, xCoord]\)], "Input", FontColor->GrayLevel[0.333333]], Cell[BoxData[ InterpretationBox[ RowBox[{\("gdd = "\), "\[InvisibleSpace]", TagBox[ RowBox[{"(", GridBox[{ {\(1 - \(2\ M\ r\)\/\(r\^2 + a\^2\ Cos[\[Theta]]\^2\)\), "1", "0", \(\(2\ a\ M\ r\ Sin[\[Theta]]\^2\)\/\(r\^2 + a\^2\ Cos[\[Theta]]\^2\)\)}, {"1", "0", "0", \(\(-a\)\ Sin[\[Theta]]\^2\)}, {"0", "0", \(\(-r\^2\) - a\^2\ Cos[\[Theta]]\^2\), "0"}, {\(\(2\ a\ M\ r\ Sin[\[Theta]]\^2\)\/\(r\^2 + a\^2\ Cos[\[Theta]]\^2\)\), \(\(-a\)\ Sin[\[Theta]]\^2\), "0", \(-\(\(\((2\ a\^2\ M\ r + a\^2\ r\^2 + r\^4 + a\^2\ \((a\^2 - 2\ M\ r + r\^2)\)\ Cos[\[Theta]]\^2)\)\ Sin[\[Theta]]\^2\)\/\(r\^2 + a\^2\ Cos[\[Theta]]\^2\)\)\)} }], ")"}], (MatrixForm[ #]&)]}], SequenceForm[ "gdd = ", MatrixForm[ {{ Plus[ 1, Times[ -2, M, r, Power[ Plus[ Power[ r, 2], Times[ Power[ a, 2], Power[ Cos[ \[Theta]], 2]]], -1]]], 1, 0, Times[ 2, a, M, r, Power[ Plus[ Power[ r, 2], Times[ Power[ a, 2], Power[ Cos[ \[Theta]], 2]]], -1], Power[ Sin[ \[Theta]], 2]]}, {1, 0, 0, Times[ -1, a, Power[ Sin[ \[Theta]], 2]]}, {0, 0, Plus[ Times[ -1, Power[ r, 2]], Times[ -1, Power[ a, 2], Power[ Cos[ \[Theta]], 2]]], 0}, { Times[ 2, a, M, r, Power[ Plus[ Power[ r, 2], Times[ Power[ a, 2], Power[ Cos[ \[Theta]], 2]]], -1], Power[ Sin[ \[Theta]], 2]], Times[ -1, a, Power[ Sin[ \[Theta]], 2]], 0, Times[ -1, Power[ Plus[ Power[ r, 2], Times[ Power[ a, 2], Power[ Cos[ \[Theta]], 2]]], -1], Plus[ Times[ 2, Power[ a, 2], M, r], Times[ Power[ a, 2], Power[ r, 2]], Power[ r, 4], Times[ Power[ a, 2], Plus[ Power[ a, 2], Times[ -2, M, r], Power[ r, 2]], Power[ Cos[ \[Theta]], 2]]], Power[ Sin[ \[Theta]], 2]]}}]], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ RowBox[{\("LineElement = "\), "\[InvisibleSpace]", TagBox[ \(\( - \(\((2\ M\ r - r\^2 - a\^2\ Cos[\[Theta]]\^2)\)\ d[u]\^2\)\/\(r\^2 + a\^2\ Cos[\[Theta]]\^2\)\) + \((\(-r\^2\) - a\^2\ Cos[\[Theta]]\^2)\)\ d[\[Theta]]\^2 - \(4\ a\ M\ r\ \((\(-1\) + Cos[\[Theta]])\)\ \((1 + Cos[\[Theta]])\)\ d[u]\ d[\[CurlyPhi]]\)\/\(r\^2 + a\^2\ Cos[\[Theta]]\^2\) + \(\((\(-1\) + Cos[\[Theta]])\)\ \((1 + Cos[\[Theta]])\)\ \((2\ a\^2\ M\ r + a\^2\ r\^2 + r\^4 + a\^4\ Cos[\[Theta]]\^2 - 2\ a\^2\ M\ r\ Cos[\[Theta]]\^2 + a\^2\ r\^2\ Cos[\[Theta]]\^2)\)\ d[\[CurlyPhi]]\^2\)\/\(r\^2 + a\^2\ Cos[\[Theta]]\^2\) + d[r]\ \(( 2\ d[u] + 2\ a\ \((\(-1\) + Cos[\[Theta]])\)\ \((1 + Cos[\[Theta]])\)\ d[\[CurlyPhi]])\)\), (Short[ #, 32]&)]}], SequenceForm[ "LineElement = ", Short[ Plus[ Times[ -1, Plus[ Times[ 2, M, r], Times[ -1, Power[ r, 2]], Times[ -1, Power[ a, 2], Power[ Cos[ \[Theta]], 2]]], Power[ Plus[ Power[ r, 2], Times[ Power[ a, 2], Power[ Cos[ \[Theta]], 2]]], -1], Power[ d[ u], 2]], Times[ Plus[ Times[ -1, Power[ r, 2]], Times[ -1, Power[ a, 2], Power[ Cos[ \[Theta]], 2]]], Power[ d[ \[Theta]], 2]], Times[ -4, a, M, r, Plus[ -1, Cos[ \[Theta]]], Plus[ 1, Cos[ \[Theta]]], Power[ Plus[ Power[ r, 2], Times[ Power[ a, 2], Power[ Cos[ \[Theta]], 2]]], -1], d[ u], d[ \[CurlyPhi]]], Times[ Plus[ -1, Cos[ \[Theta]]], Plus[ 1, Cos[ \[Theta]]], Power[ Plus[ Power[ r, 2], Times[ Power[ a, 2], Power[ Cos[ \[Theta]], 2]]], -1], Plus[ Times[ 2, Power[ a, 2], M, r], Times[ Power[ a, 2], Power[ r, 2]], Power[ r, 4], Times[ Power[ a, 4], Power[ Cos[ \[Theta]], 2]], Times[ -2, Power[ a, 2], M, r, Power[ Cos[ \[Theta]], 2]], Times[ Power[ a, 2], Power[ r, 2], Power[ Cos[ \[Theta]], 2]]], Power[ d[ \[CurlyPhi]], 2]], Times[ d[ r], Plus[ Times[ 2, d[ u]], Times[ 2, a, Plus[ -1, Cos[ \[Theta]]], Plus[ 1, Cos[ \[Theta]]], d[ \[CurlyPhi]]]]]], 32]], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ RowBox[{\("gUU = "\), "\[InvisibleSpace]", TagBox[ RowBox[{"(", GridBox[{ {\(\(a\^2\ \((\(-1\) + Cos[\[Theta]])\)\ \((1 + Cos[\[Theta]])\)\)\/\(r\^2 + a\^2\ Cos[\[Theta]]\^2\)\), \(\(a\^2 + r\^2\)\/\(r\^2 + a\^2\ Cos[\[Theta]]\^2\)\), "0", \(-\(a\/\(r\^2 + a\^2\ Cos[\[Theta]]\^2\)\)\)}, {\(\(a\^2 + r\^2\)\/\(r\^2 + a\^2\ Cos[\[Theta]]\^2\)\), \(-\(\(a\^2 - 2\ M\ r + r\^2\)\/\(r\^2 + a\^2\ Cos[\[Theta]]\^2\)\)\), "0", \(a\/\(r\^2 + a\^2\ Cos[\[Theta]]\^2\)\)}, {"0", "0", \(-\(1\/\(r\^2 + a\^2\ Cos[\[Theta]]\^2\)\)\), "0"}, {\(-\(a\/\(r\^2 + a\^2\ Cos[\[Theta]]\^2\)\)\), \(a\/\(r\^2 + a\^2\ Cos[\[Theta]]\^2\)\), "0", \(1\/\(\((\(-1\) + Cos[\[Theta]])\)\ \((1 + Cos[\[Theta]])\)\ \((r\^2 + a\^2\ Cos[\[Theta]]\^2)\)\)\)} }], ")"}], (MatrixForm[ #]&)]}], SequenceForm[ "gUU = ", MatrixForm[ {{ Times[ Power[ a, 2], Plus[ -1, Cos[ \[Theta]]], Plus[ 1, Cos[ \[Theta]]], Power[ Plus[ Power[ r, 2], Times[ Power[ a, 2], Power[ Cos[ \[Theta]], 2]]], -1]], Times[ Plus[ Power[ a, 2], Power[ r, 2]], Power[ Plus[ Power[ r, 2], Times[ Power[ a, 2], Power[ Cos[ \[Theta]], 2]]], -1]], 0, Times[ -1, a, Power[ Plus[ Power[ r, 2], Times[ Power[ a, 2], Power[ Cos[ \[Theta]], 2]]], -1]]}, { Times[ Plus[ Power[ a, 2], Power[ r, 2]], Power[ Plus[ Power[ r, 2], Times[ Power[ a, 2], Power[ Cos[ \[Theta]], 2]]], -1]], Times[ -1, Plus[ Power[ a, 2], Times[ -2, M, r], Power[ r, 2]], Power[ Plus[ Power[ r, 2], Times[ Power[ a, 2], Power[ Cos[ \[Theta]], 2]]], -1]], 0, Times[ a, Power[ Plus[ Power[ r, 2], Times[ Power[ a, 2], Power[ Cos[ \[Theta]], 2]]], -1]]}, {0, 0, Times[ -1, Power[ Plus[ Power[ r, 2], Times[ Power[ a, 2], Power[ Cos[ \[Theta]], 2]]], -1]], 0}, { Times[ -1, a, Power[ Plus[ Power[ r, 2], Times[ Power[ a, 2], Power[ Cos[ \[Theta]], 2]]], -1]], Times[ a, Power[ Plus[ Power[ r, 2], Times[ Power[ a, 2], Power[ Cos[ \[Theta]], 2]]], -1]], 0, Times[ Power[ Plus[ -1, Cos[ \[Theta]]], -1], Power[ Plus[ 1, Cos[ \[Theta]]], -1], Power[ Plus[ Power[ r, 2], Times[ Power[ a, 2], Power[ Cos[ \[Theta]], 2]]], -1]]}}]], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ \("gUU computed in "\[InvisibleSpace]0.516666666666665719` \[InvisibleSpace]" sec"\), SequenceForm[ "gUU computed in ", 0.51666666666666572, " sec"], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ \("Gamma computed in "\[InvisibleSpace]0.366666666666674245` \[InvisibleSpace]" sec"\), SequenceForm[ "Gamma computed in ", 0.36666666666667425, " sec"], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ \("Riemann(dddd) computed in "\[InvisibleSpace]0.5` \[InvisibleSpace]" sec"\), SequenceForm[ "Riemann(dddd) computed in ", 0.5, " sec"], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ \("Riemann(Uddd) computed in "\[InvisibleSpace]0.899999999999991473` \[InvisibleSpace]" sec"\), SequenceForm[ "Riemann(Uddd) computed in ", 0.89999999999999147, " sec"], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ \("Ricci computed in "\[InvisibleSpace]0.0499999999999971578` \[InvisibleSpace]" sec"\), SequenceForm[ "Ricci computed in ", 0.049999999999997158, " sec"], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ \("Weyl computed in "\[InvisibleSpace]0.`\[InvisibleSpace]" sec"\), SequenceForm[ "Weyl computed in ", 0.0, " sec"], Editable->False]], "Print"], Cell[BoxData[ \("Ricci Flat"\)], "Output", FontSize->20, FontWeight->"Bold", FontColor->RGBColor[1, 0, 1]], Cell[BoxData[ \("All tasks completed in 2.43333 seconds"\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(GUdd[\([2, 2, 3]\)]\)], "Input", FontColor->GrayLevel[0.333333]], Cell[BoxData[ \(\(-\(\(a\^2\ Cos[\[Theta]]\ Sin[\[Theta]]\)\/\(r\^2 + a\^2\ Cos[\[Theta]]\^2\)\)\)\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(RUddd[\([1, 2, 1, 3]\)]\)], "Input", FontColor->GrayLevel[0.333333]], Cell[BoxData[ \(\(a\^2\ M\ Cos[\[Theta]]\ \((\(-3\)\ r\^2 + a\^2\ Cos[\[Theta]]\^2)\)\ Sin[\[Theta]]\)\/\((r\^2 + a\^2\ Cos[\[Theta]]\^2)\)\^3\)], "Output"] }, Open ]], Cell[TextData[{ "\t", StyleBox["Note the speed improvement with the extra simplification rule!", FontSize->16] }], "Text", FontColor->RGBColor[0, 0, 1]] }, Closed]] }, Closed]], Cell[BoxData[""], "Input"], Cell[CellGroupData[{ Cell[BoxData[ \(Print["\", Round[AbsoluteTime[] - stTim], "\< sec\>"] \)], "Input"], Cell[BoxData[ InterpretationBox[ \("Total time = "\[InvisibleSpace]85\[InvisibleSpace]" sec"\), SequenceForm[ "Total time = ", 85, " sec"], Editable->False]], "Print"] }, Open ]], Cell[TextData[{ "\n\t", StyleBox[ "Sections 5 and 6 contain examples illustrating more advanced features of \ RG&TC. The examples in each subsection must be evaluated in sequence as some \ definitions given in the first one are also used later. Read the instructions \ at the beginning of section 5 before evaluating that section. \n\t\n\tMore \ complicated examples can be found in ", FontSize->16], StyleBox[ButtonBox["AdditionalExamples.html", ButtonData:>{ URL[ "http://www.inp.demokritos.gr/~sbonano/RGTC/AdditionalExamples.html"], None}, ButtonStyle->"Hyperlink"], FontSize->16], StyleBox[".", FontSize->16] }], "Text"] }, Closed]], Cell["", "Text", FontSize->10, FontColor->RGBColor[0, 0, 1]], Cell[CellGroupData[{ Cell[TextData[StyleBox[" 4 Usage Tips & Auxiliary Functions", FontWeight->"Bold"]], "Section", ShowGroupOpenCloseIcon->True, FontSize->24, FontColor->RGBColor[0, 0, 1]], Cell[CellGroupData[{ Cell[TextData[{ Cell[BoxData[ TagBox["", DisplayForm]]], Cell[BoxData[ TagBox["", DisplayForm]]], " 4.0 Do not use symbols defined in RGtensors " }], "Subsection", ShowGroupOpenCloseIcon->True, FontSize->16], Cell[TextData[{ Cell[BoxData[ TagBox["", DisplayForm]]], Cell[BoxData[ TagBox["", DisplayForm]]], "\tThe most common cause of unexpected behavior or meaningless results is \ the inappropriate use, in the coordinates or the metric, of a symbol that is \ defined by ", StyleBox["RGtensors", FontFamily->"Courier"], ". For example, if one's metric contains the function ", StyleBox["R[x,y...]", FontFamily->"Courier"], ", ", StyleBox["RGtensors", FontFamily->"Courier"], " will go in an infinite loop trying to define the scalar curvature, \ denoted by R, in terms of the metric function ", StyleBox["R[x,y...]", FontFamily->"Courier"], "! The same will happen if the symbol ", StyleBox["R", FontFamily->"Courier"], " is used as a coordinate. The situation is worse when an NP frame is used, \ where several more single-letter symbols are defined by ", StyleBox["RGtensors", FontFamily->"Courier"], " (the spin coefficients and ", StyleBox["\[CapitalLambda]", FontFamily->"Courier"], ", \[CapitalPhi] and ", StyleBox["\[CapitalPsi]", FontFamily->"Courier"], ") or have special meanings (d, e). ", StyleBox[ "One must, therefore, make sure that the symbols used in one's coordinates, \ metric or frame are distinct from (or are consistent with) the global \ variables listed in section 1.5", FontSlant->"Italic"], "." }], "Text", FontSize->16] }, Closed]], Cell[CellGroupData[{ Cell[TextData[{ Cell[BoxData[ TagBox["", DisplayForm]]], Cell[BoxData[ TagBox["", DisplayForm]]], " 4.1 Avoid displaying long expressions & keep intermediate results" }], "Subsection", ShowGroupOpenCloseIcon->True, FontSize->16], Cell[TextData[{ Cell[BoxData[ TagBox["", DisplayForm]]], Cell[BoxData[ TagBox["", DisplayForm]]], "\tThe most important thing to keep in mind when working with nested lists \ is that one can easily generate huge outputs that can tax the graphics \ capabilities of any system and may even cause ", StyleBox["Mathematica", FontSlant->"Italic"], " to crash. Besides, not much is gained by viewing on screen deeply nested \ lists containing mostly zeros! Thus, as a general rule, ", StyleBox["never evaluate an input line that does not end in a semi-colon", FontSlant->"Italic"], "(", StyleBox[";", FontFamily->"Courier"], "). As a safeguard, the printed form of any expression that exceeds 200 KB \ is shortened, occasionally resulting in the output <<1>> (which means \"too \ big to be displayed\"). One can still use this quantity in calculations, \ however, and display parts of it." }], "Text", FontSize->16], Cell["\<\ \tOne must, therefore, get used to working with symbols \ representing tensors and only occasionally view individual components or \ subparts. Also, because operations on lists are time-consuming, one must save \ intermediate results in case they are needed later on. For these reasons, a \ consistent system of naming tensors is necessary to keep track of what has \ been calculated.\ \>", "Text", FontSize->16], Cell[TextData[{ Cell[BoxData[ TagBox["", DisplayForm]]], Cell[BoxData[ TagBox["", DisplayForm]]], "\tThe U/d naming convention used here is reasonably short and visually \ conveys the properties (rank, index type) of the tensor represented. For \ contractions, the convention can be extended by using the same letter in \ upper/lower case (S, s) for pairs of contracted indices. Finally, for \ covariant derivatives, one can use the letter j (resembling ", StyleBox[";", FontFamily->"Courier"], ") to separate covariant differentiation indices. For example, the symbol \ RUdddjd is an obvious candidate for ", StyleBox["covD[RUddd,{1}]", FontFamily->"Courier"], ", while RSdddjs can be used for ", StyleBox["covDiv[RUddd,{1}]", FontFamily->"Courier"], "." }], "Text", FontSize->16], Cell[TextData[{ "\tAnother notation, similar to the one used for ", StyleBox["eta", FontFamily->"Courier"], " (Section 1.1.1), is to define an appropriately named ", StyleBox["function", FontSlant->"Italic"], " for each tensor, with arguments the positions of the contravariant \ indices. For example, for the Riemann tensor, the definition" }], "Text", FontSize->16], Cell[BoxData[ \(Riem[] = Rdddd; Riem[a__] := \(Riem[a] = Raise[Rdddd, a]\); \)], "Input"], Cell[TextData[{ "would enable one to use the notation ", StyleBox["Riem[1]", FontFamily->"Courier"], " for the tensor ", StyleBox["RUddd", FontFamily->"Courier"], ", ", StyleBox["Riem[3,4]", FontFamily->"Courier"], " for the tensor ", StyleBox["RddUU", FontFamily->"Courier"], ", etc. Of course, all these are just ", StyleBox["names", FontSlant->"Italic"], " for referring to nested lists stored in memory; any name that is \ meaningful to the user can be used!" }], "Text", FontSize->16] }, Closed]], Cell[CellGroupData[{ Cell[TextData[{ Cell[BoxData[ TagBox["", DisplayForm]]], Cell[BoxData[ TagBox["", DisplayForm]]], " 4.2 Auxiliary functions for examining and simplifying lists" }], "Subsection", ShowGroupOpenCloseIcon->True, FontSize->16], Cell[TextData[{ Cell[BoxData[ TagBox["", DisplayForm]]], Cell[BoxData[ TagBox["", DisplayForm]]], "\tThe following auxiliary functions have been defined and are useful in \ examining high rank tensors:" }], "Text", FontSize->16], Cell[TextData[{ Cell[BoxData[ TagBox["", DisplayForm]]], Cell[BoxData[ TagBox["", DisplayForm]]], "\t(1) ", StyleBox["zeroQ[x_]", FontFamily->"Courier", FontWeight->"Bold"], " tests if the tensor ", StyleBox["x", FontFamily->"Courier", FontWeight->"Bold"], " is the zero tensor, returning ", StyleBox["True", FontFamily->"Courier"], " or ", StyleBox["False", FontFamily->"Courier"], "." }], "Text", FontSize->16], Cell[TextData[{ Cell[BoxData[ TagBox["", DisplayForm]]], Cell[BoxData[ TagBox["", DisplayForm]]], "\t(2) ", StyleBox["nonZeroN[x_]", FontFamily->"Courier", FontWeight->"Bold"], " returns the ", StyleBox["Number", FontSlant->"Italic"], " of non-zero components of the tensor ", StyleBox["x", FontFamily->"Courier", FontWeight->"Bold"], "." }], "Text", FontSize->16], Cell[TextData[{ Cell[BoxData[ TagBox["", DisplayForm]]], Cell[BoxData[ TagBox["", DisplayForm]]], "\t(3) ", StyleBox["nonZeroL[x_]", FontFamily->"Courier", FontWeight->"Bold"], " returns a ", StyleBox["List", FontSlant->"Italic"], " containing the ", StyleBox["distinct ", FontSlant->"Italic"], "non-zero components of the tensor ", StyleBox["x", FontFamily->"Courier", FontWeight->"Bold"], " (if ", StyleBox["Z", FontFamily->"Courier"], " is any expression, ", StyleBox["Z,-Z,2Z", FontFamily->"Courier"], " are considered distinct). ", StyleBox["To find which components of ", FontSize->16], StyleBox["x", FontFamily->"Courier", FontSize->16], StyleBox[" equal a particular element of ", FontSize->16], StyleBox["nonZeroL[x]", FontFamily->"Courier", FontSize->16], StyleBox[", use the ", FontSize->16], StyleBox["Mathematica", FontSize->16, FontSlant->"Italic"], StyleBox[" function ", FontSize->16], StyleBox["Position", FontFamily->"Courier", FontSize->16, FontWeight->"Bold"], StyleBox[". Thus, ", FontSize->16], StyleBox["Position[Rdddd,nonZeroL[Rdddd][[1]]]", FontFamily->"Courier"], " will produce a list of the indices -- components of ", StyleBox["Rdddd", FontFamily->"Courier"], " which are equal to the second argument of ", StyleBox["Position", FontFamily->"Courier", FontSize->16, FontWeight->"Bold"], ". ", StyleBox["See Example 3 (1).", FontSize->16] }], "Text", FontSize->16], Cell[TextData[{ Cell[BoxData[ TagBox["", DisplayForm]]], Cell[BoxData[ TagBox["", DisplayForm]]], "\t(4) ", StyleBox["indepTerms[x_]", FontFamily->"Courier", FontWeight->"Bold"], " returns a list of the \"independent\" components of the tensor ", StyleBox["x", FontWeight->"Bold"], ". Independent here means not equal to \[PlusMinus] a numerical multiple \ of another component. " }], "Text", FontSize->16], Cell[CellGroupData[{ Cell[TextData[{ Cell[BoxData[ TagBox["", DisplayForm]]], Cell[BoxData[ TagBox["", DisplayForm]]], "\t", StyleBox["indepTerms", FontFamily->"Courier"], " can take an optional second argument - a list of symbols or expressions \ which, when appearing as overall factors, can be ignored in testing \ equivalence. Consider, for example, the following list ", StyleBox["S", FontFamily->"Courier"], " (Z can be any expression):" }], "Text", ShowGroupOpenCloseIcon->True, FontSize->16], Cell[CellGroupData[{ Cell[BoxData[ RowBox[{ StyleBox["S", FontFamily->"Courier"], StyleBox["=", FontFamily->"Courier"], RowBox[{ StyleBox["{", FontFamily->"Courier"], RowBox[{ StyleBox["Z", FontFamily->"Courier"], StyleBox[",", FontFamily->"Courier"], RowBox[{\(a\^2\), StyleBox["Z", FontFamily->"Courier"]}], StyleBox[",", FontFamily->"Courier"], StyleBox[\(2 a*M*Z\), FontFamily->"Courier"], StyleBox[",", FontFamily->"Courier"], StyleBox[\(\(-2\) Sin[th] Cos[th] Z\), FontFamily->"Courier"], StyleBox[",", FontFamily->"Courier"], RowBox[{\(Sin[th]\^2\), StyleBox["Z", FontFamily->"Courier"]}]}], StyleBox["}", FontFamily->"Courier"]}]}]], "Input"], Cell[BoxData[ \({Z, a\^2\ Z, 2\ a\ M\ Z, \(-2\)\ Z\ Cos[th]\ Sin[th], Z\ Sin[th]\^2}\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ StyleBox[\(indepTerms[S]\), FontFamily->"Courier"]], "Input"], Cell[BoxData[ \({Z, a\^2\ Z, a\ M\ Z, Z\ Cos[th]\ Sin[th], Z\ Sin[th]\^2}\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ StyleBox[\(indepTerms[S, {a, Sin[th]}]\), FontFamily->"Courier"]], "Input"], Cell[BoxData[ \({Z, M\ Z, Z\ Cos[th]}\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ StyleBox[\(indepTerms[S, {a, M, Sin[th], Cos[th]}]\), FontFamily->"Courier"]], "Input"], Cell[BoxData[ \({Z}\)], "Output"] }, Open ]], Cell["\<\ This option can be useful in reducing the number of independent \ components of a tensor.\ \>", "Text", FontSize->16] }, Closed]], Cell[TextData[{ Cell[BoxData[ TagBox["", DisplayForm]]], Cell[BoxData[ TagBox["", DisplayForm]]], "\t", StyleBox["Note", FontSlant->"Italic"], ": The functions ", StyleBox["zeroQ,", FontFamily->"Courier"], " ", StyleBox["nonZeroL", FontFamily->"Courier"], " and ", StyleBox["indepTerms", FontFamily->"Courier"], " do not perform any reductions: if ", StyleBox["s=(a+b)^2,", FontFamily->"Courier"], " then ", StyleBox["zeroQ[s-Expand[s]]", FontFamily->"Courier"], " returns ", StyleBox["False", FontFamily->"Courier"], ", while ", StyleBox["indepTerms[{s,Expand[s]}]", FontFamily->"Courier"], " returns ", StyleBox["{", FontFamily->"Courier"], Cell[BoxData[ \(\((a + b)\)\^2\)]], StyleBox[",", FontFamily->"Courier"], Cell[BoxData[ \(a\^2 + 2\ a\ b + b\^2\)]], StyleBox["}", FontFamily->"Courier"], ". " }], "Text", FontSize->16], Cell[TextData[{ Cell[BoxData[ TagBox["", DisplayForm]]], Cell[BoxData[ TagBox["", DisplayForm]]], "\t(5) ", StyleBox["FacSimp[x_]", FontFamily->"Courier", FontWeight->"Bold"], " applies the simplification rules defined in ", StyleBox["simpRules", FontFamily->"Courier"], " and factors each component of the tensor ", StyleBox["x", FontFamily->"Courier", FontWeight->"Bold"], ". All basic tensors calculated initially by ", StyleBox["RGtensors", FontFamily->"Courier"], " as well as those returned by the functions ", StyleBox["Raise", FontFamily->"Courier"], ", ", StyleBox["Lower", FontFamily->"Courier"], ", ", StyleBox["Contract", FontFamily->"Courier"], ", ", StyleBox["multiDot", FontFamily->"Courier"], ", ", StyleBox["covD", FontFamily->"Courier"], ", ", StyleBox["covDiv", FontFamily->"Courier"], " , ", StyleBox["LieD", FontFamily->"Courier"], ", ", StyleBox["Laplacian", FontFamily->"Courier"], " , ", StyleBox["Grad2Norm", FontFamily->"Courier"], " and ", StyleBox["Bianchi", FontFamily->"Courier"], " have been simplified using ", StyleBox["FacSimp", FontFamily->"Courier"], ". Even though it can be very slow on high-rank tensors and /or when ", StyleBox["simpRules", FontFamily->"Courier"], " contains many rules, ", StyleBox["FacSimp", FontFamily->"Courier"], " should ", StyleBox["always", FontSlant->"Italic"], " be used to simplify sums and products (", StyleBox["Dot", FontFamily->"Courier"], " or ", StyleBox["Outer", FontFamily->"Courier"], ") of these tensors. (see section 4.5 \"Taking advantage of symmetries\")" }], "Text", FontSize->16], Cell[TextData[{ Cell[BoxData[ TagBox["", DisplayForm]]], Cell[BoxData[ TagBox["", DisplayForm]]], "\tIf ", StyleBox["zeroQ[expr]", FontFamily->"Courier"], " on an expression that is expected to vanish gives ", StyleBox["False", FontFamily->"Courier"], ", try ", StyleBox["zeroQ[FacSimp[expr]]", FontFamily->"Courier"], " or, for high-rank tensors with symmetries, ", StyleBox["zeroQ[FacSimp[indepTerms[expr]]]", FontFamily->"Courier"], "." }], "Text", FontSize->16] }, Closed]], Cell[CellGroupData[{ Cell[TextData[{ Cell[BoxData[ TagBox["", DisplayForm]]], Cell[BoxData[ TagBox["", DisplayForm]]], " 4.3 Choosing simpRules and using varList" }], "Subsection", ShowGroupOpenCloseIcon->True, FontSize->16], Cell[TextData[{ Cell[BoxData[ TagBox["", DisplayForm]]], Cell[BoxData[ TagBox["", DisplayForm]]], "\tIt is impossible to overemphasize the importance of choosing appropriate \ simplification rules to be applied by ", StyleBox["FacSimp", FontFamily->"Courier"], ". As ", StyleBox["FacSimp", FontFamily->"Courier"], " is used repeatedly by all functions, minor changes in ", StyleBox["simpRules", FontFamily->"Courier"], " can have dramatic effects. " }], "Text", FontSize->16], Cell[TextData[{ Cell[BoxData[ TagBox["", DisplayForm]]], Cell[BoxData[ TagBox["", DisplayForm]]], "\tWhen applying ", StyleBox["RGtensors", FontFamily->"Courier"], " to a new metric, it may not be clear what, if any, ", StyleBox["simpRules", FontFamily->"Courier"], " should be used. In such cases, start with no rules and abort ", StyleBox["RGtensors", FontFamily->"Courier"], " after Gamma has been computed. Look at the expressions for gUU and GUdd: \ apart from being factored, are they as simple as they can be? Could a simple \ substitution rule further simplify these expressions? If yes, include it in ", StyleBox["simpRules", FontFamily->"Courier"], ". As gUU and GUdd are used repeatedly by other functions, even minor \ improvements can have significant effects (see Example 8, and Example 4b in \ section 5.1)." }], "Text", FontSize->16], Cell[CellGroupData[{ Cell[TextData[{ "\t", StyleBox["Exercise", FontSlant->"Italic"], ": Find the ", StyleBox["simpRules", FontFamily->"Courier"], " that must be used in order that ", StyleBox["RGtensors", FontFamily->"Courier"], " prints ", StyleBox["Ricci Flat", FontSlant->"Italic"], " when applied to the Kruskal form of the Schwarzschild metric:" }], "Text", CellFrame->True, ShowGroupOpenCloseIcon->True, FontSize->16], Cell[BoxData[ StyleBox[ \(gKRUSKAL = {{0, \(-8\) M^2 \((1 - 2 M/r[u, v])\)/\((u*v)\), 0, 0}, { \(-8\) M^2 \((1 - 2 M/r[u, v])\)/\((u*v)\), 0, 0, 0}, {0, 0, \(-r[u, v]^2\), 0}, {0, 0, 0, \(-r[u, v]^2\) Sin[\[Theta]]^2}}; \), FontFamily->"Courier"]], "Input", FontColor->GrayLevel[0.333333]], Cell[BoxData[ StyleBox[\(xCoord = {u, v, \[Theta], \[CurlyPhi]}; \), FontFamily->"Courier"]], "Input", FontColor->GrayLevel[0.333333]], Cell[TextData[{ "\tWhere ", StyleBox["r[u,v]", FontFamily->"Courier"], " is related to the coordinates ", StyleBox["u,v", FontFamily->"Courier"], " by the equation ", StyleBox["(2M-r[u,v])Exp[r[u,v]/(2M)]-2M*u*v=0", FontFamily->"Courier"], "." }], "Text", FontSize->16], Cell[TextData[{ "\t", StyleBox["Solution", FontSlant->"Italic"], ": See ", ButtonBox["AdditionalExamples.html", ButtonData:>{ URL[ "http://www.inp.demokritos.gr/~sbonano/RGTC/AdditionalExamples.html"], None}, ButtonStyle->"Hyperlink"] }], "Text", FontSize->16] }, Closed]], Cell[TextData[{ Cell[BoxData[ TagBox["", DisplayForm]]], Cell[BoxData[ TagBox["", DisplayForm]]], "\tIn formulating substitution rules it is better to use many specific \ rules rather than few general ones. The reason is that a general pattern will \ match more instances (even if it fails) and thus slow down the computation. \ For rules and patterns see the ", StyleBox["Mathematica", FontSlant->"Italic"], " Book, chapters 2.3 and 2.4 (=2.5 in version 5)." }], "Text", FontSize->16], Cell[CellGroupData[{ Cell[TextData[{ "\tThe global variable ", StyleBox["varList", FontFamily->"Courier"], " is a list of variables/patterns that, when non-empty, is used by ", StyleBox["FacSimp", FontFamily->"Courier"], " to group terms. It can be useful in cases like (see also Example 4c after \ section 5.1.3):" }], "Text", CellFrame->True, ShowGroupOpenCloseIcon->True, FontSize->16], Cell[CellGroupData[{ Cell[BoxData[ \(varList\)], "Input", FontColor->GrayLevel[0.333333]], Cell[BoxData[ \({}\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(expr = FacSimp[\((1 + x\ y)\)^2 \((x - y)\)^3 + Sqrt[\((1 - x^2)\)] Sum[y^n, {n, 5}]]\)], "Input", FontColor->GrayLevel[0.333333]], Cell[BoxData[ \(x\^3 - 3\ x\^2\ y + 2\ x\^4\ y + \@\(1 - x\^2\)\ y + 3\ x\ y\^2 - 6\ x\^3\ y\^2 + x\^5\ y\^2 + \@\(1 - x\^2\)\ y\^2 - y\^3 + 6\ x\^2\ y\^3 - 3\ x\^4\ y\^3 + \@\(1 - x\^2\)\ y\^3 - 2\ x\ y\^4 + 3\ x\^3\ y\^4 + \@\(1 - x\^2\)\ y\^4 - x\^2\ y\^5 + \@\(1 - x\^2\)\ y\^5\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(Simplify[expr] // Timing\)], "Input", FontColor->GrayLevel[0.333333]], Cell[BoxData[ \({0.0666666666666628771`\ Second, x\^5\ y\^2 + x\^4\ \((2\ y - 3\ y\^3)\) + x\ \((3\ y\^2 - 2\ y\^4)\) - x\^2\ y\ \((3 - 6\ y\^2 + y\^4)\) + x\^3\ \((1 - 6\ y\^2 + 3\ y\^4)\) + y\ \((\@\(1 - x\^2\) + \@\(1 - x\^2\)\ y + \((\(-1\) + \@\(1 - x\^2\))\)\ y\^2 + \@\(1 - x\^2\)\ y\^3 + \@\(1 - x\^2\)\ y\^4)\)}\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(FullSimplify[expr] // Timing\)], "Input", FontColor->GrayLevel[0.333333]], Cell[BoxData[ \({1.36666666666664582`\ Second, x\^3 + x\^2\ \((\(-3\) + 2\ x\^2)\)\ y + x\ \((3 - 6\ x\^2 + x\^4)\)\ y\^2 - \((1 - 6\ x\^2 + 3\ x\^4)\)\ y\^3 + x\ \((\(-2\) + 3\ x\^2)\)\ y\^4 - x\^2\ y\^5 + \@\(1 - x\^2\)\ y\ \((1 + y + y\^2 + y\^3 + y\^4)\)}\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ RowBox[{ StyleBox[\(varList = {\@\(1 - x\^2\)}\), FontColor->RGBColor[1, 0, 0]], StyleBox[";", FontColor->RGBColor[1, 0, 0]], \(FacSimp[expr] // Timing\)}]], "Input"], Cell[BoxData[ \({0.`\ Second, \((x - y)\)\^3\ \((1 + x\ y)\)\^2 + \@\(1 - x\^2\)\ y\ \((1 + y + y\^2 + y\^3 + y\^4)\)}\)], "Output"] }, Open ]], Cell[BoxData[ \(\(varList = {}; \)\)], "Input", FontColor->GrayLevel[0.333333]], Cell[CellGroupData[{ Cell[BoxData[ \(FacSimp[expr]\)], "Input", FontColor->GrayLevel[0.333333]], Cell[BoxData[ \(x\^3 - 3\ x\^2\ y + 2\ x\^4\ y + \@\(1 - x\^2\)\ y + 3\ x\ y\^2 - 6\ x\^3\ y\^2 + x\^5\ y\^2 + \@\(1 - x\^2\)\ y\^2 - y\^3 + 6\ x\^2\ y\^3 - 3\ x\^4\ y\^3 + \@\(1 - x\^2\)\ y\^3 - 2\ x\ y\^4 + 3\ x\^3\ y\^4 + \@\(1 - x\^2\)\ y\^4 - x\^2\ y\^5 + \@\(1 - x\^2\)\ y\^5\)], "Output"] }, Open ]], Cell[TextData[{ Cell[BoxData[ TagBox["", DisplayForm]]], Cell[BoxData[ TagBox["", DisplayForm]]], "\t", StyleBox["Warning:", FontWeight->"Bold"], " Inappropriate choice of ", StyleBox["varList", FontFamily->"Courier"], " variables can prevent cancellations and slow down ", StyleBox["RGtensors", FontFamily->"Courier"], ". It should be used with caution. A good check, before calling ", StyleBox["RGtensors", FontFamily->"Courier"], ", is to see the effect of particular ", StyleBox["varList", FontFamily->"Courier"], " variable(s) on the expression for the inverse metric ", StyleBox["FacSimp[Inverse[gIN]]", FontFamily->"Courier"], "." }], "Text", FontSize->16] }, Closed]] }, Closed]], Cell[CellGroupData[{ Cell[TextData[{ Cell[BoxData[ TagBox["", DisplayForm]]], Cell[BoxData[ TagBox["", DisplayForm]]], " 4.4 Substituting new functions" }], "Subsection", ShowGroupOpenCloseIcon->True, FontSize->16], Cell[TextData[{ Cell[BoxData[ TagBox["", DisplayForm]]], Cell[BoxData[ TagBox["", DisplayForm]]], "\tThe function ", StyleBox["FuncRepRules[f[x__],g_,n_]", FontFamily->"Courier", FontWeight->"Bold"], " (\"Function Replacement Rules\") generates a list of rules for replacing \ the function ", StyleBox["f[x]", FontFamily->"Courier"], " ", StyleBox["and all its derivatives up to order n", FontSlant->"Italic"], " by ", StyleBox["g", FontFamily->"Courier"], " and the corresponding derivatives of ", StyleBox["g", FontFamily->"Courier"], ", where ", StyleBox["g", FontFamily->"Courier"], " can be any expression. The third argument (", StyleBox["n", FontFamily->"Courier"], ") is optional. When it is omitted, rules up to the second derivatives are \ generated. For example:" }], "Text", FontSize->16], Cell[CellGroupData[{ Cell[BoxData[ StyleBox[\(FuncRepRules[f[x], u[x]/x]\), FontFamily->"Courier", FontWeight->"Bold"]], "Input"], Cell[BoxData[ RowBox[{"{", RowBox[{\(f[x] \[Rule] u[x]\/x\), ",", RowBox[{ RowBox[{ SuperscriptBox["f", "\[Prime]", MultilineFunction->None], "[", "x", "]"}], "\[Rule]", RowBox[{\(-\(u[x]\/x\^2\)\), "+", FractionBox[ RowBox[{ SuperscriptBox["u", "\[Prime]", MultilineFunction->None], "[", "x", "]"}], "x"]}]}], ",", RowBox[{ RowBox[{ SuperscriptBox["f", "\[DoublePrime]", MultilineFunction->None], "[", "x", "]"}], "\[Rule]", RowBox[{\(\(2\ u[x]\)\/x\^3\), "-", FractionBox[ RowBox[{"2", " ", RowBox[{ SuperscriptBox["u", "\[Prime]", MultilineFunction->None], "[", "x", "]"}]}], \(x\^2\)], "+", FractionBox[ RowBox[{ SuperscriptBox["u", "\[DoublePrime]", MultilineFunction->None], "[", "x", "]"}], "x"]}]}]}], "}"}]], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ StyleBox[\(FuncRepRules[f[x], u[x]/x, 3]\), FontFamily->"Courier", FontWeight->"Bold"]], "Input"], Cell[BoxData[ RowBox[{"{", RowBox[{\(f[x] \[Rule] u[x]\/x\), ",", RowBox[{ RowBox[{ SuperscriptBox["f", "\[Prime]", MultilineFunction->None], "[", "x", "]"}], "\[Rule]", RowBox[{\(-\(u[x]\/x\^2\)\), "+", FractionBox[ RowBox[{ SuperscriptBox["u", "\[Prime]", MultilineFunction->None], "[", "x", "]"}], "x"]}]}], ",", RowBox[{ RowBox[{ SuperscriptBox["f", "\[DoublePrime]", MultilineFunction->None], "[", "x", "]"}], "\[Rule]", RowBox[{\(\(2\ u[x]\)\/x\^3\), "-", FractionBox[ RowBox[{"2", " ", RowBox[{ SuperscriptBox["u", "\[Prime]", MultilineFunction->None], "[", "x", "]"}]}], \(x\^2\)], "+", FractionBox[ RowBox[{ SuperscriptBox["u", "\[DoublePrime]", MultilineFunction->None], "[", "x", "]"}], "x"]}]}], ",", RowBox[{ RowBox[{ SuperscriptBox["f", TagBox[\((3)\), Derivative], MultilineFunction->None], "[", "x", "]"}], "\[Rule]", RowBox[{\(-\(\(6\ u[x]\)\/x\^4\)\), "+", FractionBox[ RowBox[{"6", " ", RowBox[{ SuperscriptBox["u", "\[Prime]", MultilineFunction->None], "[", "x", "]"}]}], \(x\^3\)], "-", FractionBox[ RowBox[{"3", " ", RowBox[{ SuperscriptBox["u", "\[DoublePrime]", MultilineFunction->None], "[", "x", "]"}]}], \(x\^2\)], "+", FractionBox[ RowBox[{ SuperscriptBox["u", TagBox[\((3)\), Derivative], MultilineFunction->None], "[", "x", "]"}], "x"]}]}]}], "}"}]], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ StyleBox[\(FuncRepRules[U[t, r], \((f1[r - t] + f2[r + t])\)/r]\), FontFamily->"Courier", FontWeight->"Bold"]], "Input"], Cell[BoxData[ RowBox[{"{", RowBox[{\(U[t, r] \[Rule] \(f1[r - t] + f2[r + t]\)\/r\), ",", RowBox[{ RowBox[{ SuperscriptBox["U", TagBox[\((0, 1)\), Derivative], MultilineFunction->None], "[", \(t, r\), "]"}], "\[Rule]", RowBox[{\(-\(f1[r - t]\/r\^2\)\), "-", \(f2[r + t]\/r\^2\), "+", FractionBox[ RowBox[{ SuperscriptBox["f1", "\[Prime]", MultilineFunction->None], "[", \(r - t\), "]"}], "r"], "+", FractionBox[ RowBox[{ SuperscriptBox["f2", "\[Prime]", MultilineFunction->None], "[", \(r + t\), "]"}], "r"]}]}], ",", RowBox[{ RowBox[{ SuperscriptBox["U", TagBox[\((0, 2)\), Derivative], MultilineFunction->None], "[", \(t, r\), "]"}], "\[Rule]", RowBox[{ \(\(2\ f1[r - t]\)\/r\^3\), "+", \(\(2\ f2[r + t]\)\/r\^3\), "-", FractionBox[ RowBox[{"2", " ", RowBox[{ SuperscriptBox["f1", "\[Prime]", MultilineFunction->None], "[", \(r - t\), "]"}]}], \(r\^2\)], "-", FractionBox[ RowBox[{"2", " ", RowBox[{ SuperscriptBox["f2", "\[Prime]", MultilineFunction->None], "[", \(r + t\), "]"}]}], \(r\^2\)], "+", FractionBox[ RowBox[{ SuperscriptBox["f1", "\[DoublePrime]", MultilineFunction->None], "[", \(r - t\), "]"}], "r"], "+", FractionBox[ RowBox[{ SuperscriptBox["f2", "\[DoublePrime]", MultilineFunction->None], "[", \(r + t\), "]"}], "r"]}]}], ",", RowBox[{ RowBox[{ SuperscriptBox["U", TagBox[\((1, 0)\), Derivative], MultilineFunction->None], "[", \(t, r\), "]"}], "\[Rule]", RowBox[{ RowBox[{"-", FractionBox[ RowBox[{ SuperscriptBox["f1", "\[Prime]", MultilineFunction->None], "[", \(r - t\), "]"}], "r"]}], "+", FractionBox[ RowBox[{ SuperscriptBox["f2", "\[Prime]", MultilineFunction->None], "[", \(r + t\), "]"}], "r"]}]}], ",", RowBox[{ RowBox[{ SuperscriptBox["U", TagBox[\((1, 1)\), Derivative], MultilineFunction->None], "[", \(t, r\), "]"}], "\[Rule]", RowBox[{ FractionBox[ RowBox[{ SuperscriptBox["f1", "\[Prime]", MultilineFunction->None], "[", \(r - t\), "]"}], \(r\^2\)], "-", FractionBox[ RowBox[{ SuperscriptBox["f2", "\[Prime]", MultilineFunction->None], "[", \(r + t\), "]"}], \(r\^2\)], "-", FractionBox[ RowBox[{ SuperscriptBox["f1", "\[DoublePrime]", MultilineFunction->None], "[", \(r - t\), "]"}], "r"], "+", FractionBox[ RowBox[{ SuperscriptBox["f2", "\[DoublePrime]", MultilineFunction->None], "[", \(r + t\), "]"}], "r"]}]}], ",", RowBox[{ RowBox[{ SuperscriptBox["U", TagBox[\((2, 0)\), Derivative], MultilineFunction->None], "[", \(t, r\), "]"}], "\[Rule]", RowBox[{ FractionBox[ RowBox[{ SuperscriptBox["f1", "\[DoublePrime]", MultilineFunction->None], "[", \(r - t\), "]"}], "r"], "+", FractionBox[ RowBox[{ SuperscriptBox["f2", "\[DoublePrime]", MultilineFunction->None], "[", \(r + t\), "]"}], "r"]}]}]}], "}"}]], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ StyleBox[\(FuncRepRules[H[u, x, y], a[u] \((x^2 - y^2)\) + 2 b[u] x\ y]\), FontFamily->"Courier", FontWeight->"Bold"]], "Input"], Cell[BoxData[ RowBox[{"{", RowBox[{ \(H[u, x, y] \[Rule] \((x\^2 - y\^2)\)\ a[u] + 2\ x\ y\ b[u]\), ",", RowBox[{ RowBox[{ SuperscriptBox["H", TagBox[\((0, 0, 1)\), Derivative], MultilineFunction->None], "[", \(u, x, y\), "]"}], "\[Rule]", \(\(-2\)\ y\ a[u] + 2\ x\ b[u]\)}], ",", RowBox[{ RowBox[{ SuperscriptBox["H", TagBox[\((0, 0, 2)\), Derivative], MultilineFunction->None], "[", \(u, x, y\), "]"}], "\[Rule]", \(\(-2\)\ a[u]\)}], ",", RowBox[{ RowBox[{ SuperscriptBox["H", TagBox[\((0, 1, 0)\), Derivative], MultilineFunction->None], "[", \(u, x, y\), "]"}], "\[Rule]", \(2\ x\ a[u] + 2\ y\ b[u]\)}], ",", RowBox[{ RowBox[{ SuperscriptBox["H", TagBox[\((0, 1, 1)\), Derivative], MultilineFunction->None], "[", \(u, x, y\), "]"}], "\[Rule]", \(2\ b[u]\)}], ",", RowBox[{ RowBox[{ SuperscriptBox["H", TagBox[\((0, 2, 0)\), Derivative], MultilineFunction->None], "[", \(u, x, y\), "]"}], "\[Rule]", \(2\ a[u]\)}], ",", RowBox[{ RowBox[{ SuperscriptBox["H", TagBox[\((1, 0, 0)\), Derivative], MultilineFunction->None], "[", \(u, x, y\), "]"}], "\[Rule]", RowBox[{ RowBox[{\(x\^2\), " ", RowBox[{ SuperscriptBox["a", "\[Prime]", MultilineFunction->None], "[", "u", "]"}]}], "-", RowBox[{\(y\^2\), " ", RowBox[{ SuperscriptBox["a", "\[Prime]", MultilineFunction->None], "[", "u", "]"}]}], "+", RowBox[{"2", " ", "x", " ", "y", " ", RowBox[{ SuperscriptBox["b", "\[Prime]", MultilineFunction->None], "[", "u", "]"}]}]}]}], ",", RowBox[{ RowBox[{ SuperscriptBox["H", TagBox[\((1, 0, 1)\), Derivative], MultilineFunction->None], "[", \(u, x, y\), "]"}], "\[Rule]", RowBox[{ RowBox[{\(-2\), " ", "y", " ", RowBox[{ SuperscriptBox["a", "\[Prime]", MultilineFunction->None], "[", "u", "]"}]}], "+", RowBox[{"2", " ", "x", " ", RowBox[{ SuperscriptBox["b", "\[Prime]", MultilineFunction->None], "[", "u", "]"}]}]}]}], ",", RowBox[{ RowBox[{ SuperscriptBox["H", TagBox[\((1, 1, 0)\), Derivative], MultilineFunction->None], "[", \(u, x, y\), "]"}], "\[Rule]", RowBox[{ RowBox[{"2", " ", "x", " ", RowBox[{ SuperscriptBox["a", "\[Prime]", MultilineFunction->None], "[", "u", "]"}]}], "+", RowBox[{"2", " ", "y", " ", RowBox[{ SuperscriptBox["b", "\[Prime]", MultilineFunction->None], "[", "u", "]"}]}]}]}], ",", RowBox[{ RowBox[{ SuperscriptBox["H", TagBox[\((2, 0, 0)\), Derivative], MultilineFunction->None], "[", \(u, x, y\), "]"}], "\[Rule]", RowBox[{ RowBox[{\(x\^2\), " ", RowBox[{ SuperscriptBox["a", "\[DoublePrime]", MultilineFunction->None], "[", "u", "]"}]}], "-", RowBox[{\(y\^2\), " ", RowBox[{ SuperscriptBox["a", "\[DoublePrime]", MultilineFunction->None], "[", "u", "]"}]}], "+", RowBox[{"2", " ", "x", " ", "y", " ", RowBox[{ SuperscriptBox["b", "\[DoublePrime]", MultilineFunction->None], "[", "u", "]"}]}]}]}]}], "}"}]], "Output"] }, Open ]], Cell[TextData[{ Cell[BoxData[ TagBox["", DisplayForm]]], Cell[BoxData[ TagBox["", DisplayForm]]], "\tOne can thus compute the Ricci tensor for a metric that depends on \ arbitrary functions of the coordinates and then use ", StyleBox["FuncRepRules", FontFamily->"Courier"], " to substitute specific functions / functional forms to search for \ solutions. " }], "Text", FontSize->16] }, Closed]], Cell[CellGroupData[{ Cell[TextData[{ Cell[BoxData[ TagBox["", DisplayForm]]], Cell[BoxData[ TagBox["", DisplayForm]]], " 4.5 Taking advantage of symmetries" }], "Subsection", ShowGroupOpenCloseIcon->True, FontSize->16], Cell[TextData[{ Cell[BoxData[ TagBox["", DisplayForm]]], Cell[BoxData[ TagBox["", DisplayForm]]], "\tThe greatest drawback of the functions defined in this package is that \ they do not take advantage of the symmetry properties of tensors to reduce \ the amount (and time) of a computation. (This is not true of the main \ procedure - ", StyleBox["RGtensors", FontFamily->"Courier"], " - but this is called only once!). Thus, ", StyleBox["FacSimp[Rdddd]", FontFamily->"Courier"], " factors ", StyleBox["every component", FontSlant->"Italic"], " of the Riemann tensor! As a result, high rank tensor calculations tend to \ be very slow, especially in high dimensions. " }], "Text", FontSize->16], Cell[TextData[{ "\tIn such cases one should define a temporary function for the components \ of the tensor to be computed, having the correct symmetries, and then use ", StyleBox["Array", FontFamily->"Courier"], " to construct the tensor (see how Rdddd, RUddd, Rdd, Wdddd are computed by \ ", StyleBox["RGtensors", FontFamily->"Courier"], "). ", StyleBox["FacSimp", FontFamily->"Courier"], " should always be applied to the independent components only!" }], "Text", FontSize->16] }, Closed]], Cell[CellGroupData[{ Cell[TextData[{ Cell[BoxData[ TagBox["", DisplayForm]]], Cell[BoxData[ TagBox["", DisplayForm]]], " 4.6 When the results appear wrong: Can I trust the results of RGTC?" }], "Subsection", ShowGroupOpenCloseIcon->True, FontSize->16], Cell[TextData[{ Cell[BoxData[ TagBox["", DisplayForm]]], Cell[BoxData[ TagBox["", DisplayForm]]], "\tThe basic functions defined in RGTC have been tested on a large number \ of metrics using different frames and always give correct results. Successive \ versions have improved the performance and have corrected even some very rare \ bugs (like the one affecting ", StyleBox["HStar", FontFamily->"Courier"], " when acting on some ", StyleBox["SeriesData", FontFamily->"Courier"], " objects). Of course, one can never claim that a piece of software is \ completely bug-free. However, if one encounters unexpected results, there are \ several checks one can make before concluding that there is a bug involved." }], "Text", FontSize->16], Cell[TextData[{ Cell[BoxData[ TagBox["", DisplayForm]]], Cell[BoxData[ TagBox["", DisplayForm]]], "\t(i) Make sure no symbols defined by ", StyleBox["RGtensors", FontFamily->"Courier"], " are used in the coordinates or metric -- see section 4.0 above. Repeat \ the calculation using different notation and a fresh Kernel. " }], "Text", FontSize->16], Cell[TextData[{ Cell[BoxData[ TagBox["", DisplayForm]]], Cell[BoxData[ TagBox["", DisplayForm]]], "\t(ii) Common mistakes that can lead to erroneous results are: (a) in ", StyleBox["covD", FontFamily->"Courier"], ", ", StyleBox["covDiv", FontFamily->"Courier"], ", ", StyleBox["LieD", FontFamily->"Courier"], ", ", StyleBox["Laplacian", FontFamily->"Courier"], ", etc. -- not giving the correct positions of contravariant indices as \ second arguments, and (b) in ", StyleBox["multiDot", FontFamily->"Courier"], " or ", StyleBox["Contract", FontFamily->"Courier"], " -- giving wrong index positions or index pairs of the same type {U,U} or \ {d,d}. Double check such inputs." }], "Text", FontSize->16], Cell[TextData[{ Cell[BoxData[ TagBox["", DisplayForm]]], Cell[BoxData[ TagBox["", DisplayForm]]], "\t(iii) It is possible that ", StyleBox["RGtensors", FontFamily->"Courier"], " does ", StyleBox["not", FontWeight->"Bold"], " print ", StyleBox["Ricci Flat", FontSlant->"Italic"], " (or ", StyleBox["Conformally Flat", FontSlant->"Italic"], ") for a metric that is known to have this property. This can happen when ", StyleBox["simpRules", FontFamily->"Courier"], " are used to simplify calculations in complicated metrics. Sometimes the \ expressions for, say, ", StyleBox["Rdd", FontFamily->"Courier"], " or ", StyleBox["Wdddd", FontFamily->"Courier"], " do not get simplified sufficiently to give a zero tensor. This is \ illustrated with the metrics on n-dimensional spheres, where ", StyleBox["RGtensors", FontFamily->"Courier"], " fails to print ", StyleBox["Conformally Flat", FontSlant->"Italic"], ", ", StyleBox["Einstein Space", FontSlant->"Italic"], ", and ", StyleBox["Space of Constant Curvature", FontSlant->"Italic"], " for ", StyleBox["n>4", FontFamily->"Courier"], " -- see the notebook ", StyleBox["nDimSpheres.nb", FontWeight->"Bold"], " ", StyleBox[" in ", FontSize->16], StyleBox[ButtonBox["AdditionalExamples.html", ButtonData:>{ URL[ "http://www.inp.demokritos.gr/~sbonano/RGTC/AdditionalExamples.html"], None}, ButtonStyle->"Hyperlink"], FontSize->16], StyleBox[".", FontSize->16], " In such cases one should check, using ", StyleBox["FacSimp", FontFamily->"Courier"], " or ", StyleBox["Simplify", FontFamily->"Courier"], ", whether the expressions returned by ", StyleBox["RGtensors", FontFamily->"Courier"], " that are supposed to vanish actually do vanish, before concluding that \ the given metric does or does not have the required property. " }], "Text", FontSize->16], Cell[TextData[{ Cell[BoxData[ TagBox["", DisplayForm]]], Cell[BoxData[ TagBox["", DisplayForm]]], "\t(iv) Differential Geometry provides a number of identities one can use \ to check the validity of the results returned by ", StyleBox["RGtensors", FontFamily->"Courier"], " and the other functions defined in RGTC (", StyleBox["covD", FontFamily->"Courier"], ", ", StyleBox["Contract", FontFamily->"Courier"], ", etc.). Such identities follow from (1) the vanishing of the covariant \ derivatives of the metric tensor and the Bianchi identities, (2) properties \ of special vector fields (geodesics, Killing vectors) that may be present in \ particular metrics, and (3) agreement of the results obtained using different \ coordinate systems or frames or different ways of computing the same tensors \ / invariants. For an example of the latter see the notebook ", StyleBox["KerrInvariants.nb", FontWeight->"Bold"], " ", StyleBox[" in ", FontSize->16], StyleBox[ButtonBox["AdditionalExamples.html", ButtonData:>{ URL[ "http://www.inp.demokritos.gr/~sbonano/RGTC/AdditionalExamples.html"], None}, ButtonStyle->"Hyperlink"], FontSize->16], StyleBox[".", FontSize->16] }], "Text", FontSize->16] }, Closed]] }, Closed]], Cell["", "Text", FontSize->10, FontColor->RGBColor[0, 0, 1], CellTags->"blank 4"], Cell[CellGroupData[{ Cell[TextData[StyleBox[" 5 Tensor Components in an Arbitrary Frame", FontWeight->"Bold"]], "Section", ShowGroupOpenCloseIcon->True, FontSize->24, FontColor->RGBColor[0, 0, 1]], Cell[TextData[{ "\t", StyleBox["Warning", FontWeight->"Bold", FontSlant->"Italic"], ": It is best to study the Examples in Section 3 and become familiar with \ calculations in the default coordinate-frame ", StyleBox["before reading this section", FontSlant->"Italic"], ". Otherwise, it may appear very confusing!" }], "Text", FontSize->16, FontWeight->"Bold", FontColor->RGBColor[0, 0, 1]], Cell[BoxData[ RowBox[{" ", RowBox[{ RowBox[{ StyleBox["If", FontColor->GrayLevel[1]], "[", RowBox[{ RowBox[{ RowBox[{ RowBox[{ StyleBox["d", FontColor->GrayLevel[1]], "[", "0", "]"}], "=!=", "0"}], "||", RowBox[{ RowBox[{ StyleBox["FaSi", FontColor->GrayLevel[1]], "[", "0", "]"}], "=!=", "0"}]}], ",", RowBox[{ RowBox[{ StyleBox["NotebookWrite", FontColor->GrayLevel[1]], "[", RowBox[{ RowBox[{ StyleBox["SelectedNotebook", FontColor->GrayLevel[1]], "[", "]"}], ",", "\t\t", RowBox[{"{", RowBox[{ RowBox[{ StyleBox["Cell", FontColor->GrayLevel[1]], "[", RowBox[{ \("\< You must evaluate matrixEDCcode.nb first -- \ Choose Kernel > Abort evaluation, and read instructions in section 5!\>"\), ",", " \t\t\t", \("\"\), ",", RowBox[{ StyleBox["FontSize", FontColor->GrayLevel[1]], "->", "24"}], ",", RowBox[{ StyleBox["FontWeight", FontColor->GrayLevel[1]], "->", \("\"\)}], ",", RowBox[{ StyleBox["FontSlant", FontColor->GrayLevel[1]], "->", \("\"\)}], ",", RowBox[{ StyleBox["FontColor", FontColor->GrayLevel[1]], "->", RowBox[{ StyleBox["RGBColor", FontColor->GrayLevel[1]], "[", \(1, \ 0, \ 1 \), "]"}]}], ",", RowBox[{ StyleBox["CellTags", FontColor->GrayLevel[1]], "->", \({"\"}\)}]}], "]"}], ",", RowBox[{ StyleBox["NotebookLocate", FontColor->GrayLevel[1]], "[", \("\"\), "]"}]}], "}"}]}], "]"}], ";", RowBox[{ StyleBox["Pause", FontColor->GrayLevel[1]], "[", "60", "]"}], ";"}]}], "]"}], ";"}]}]], "Input", FontSize->1, FontColor->GrayLevel[1]], Cell[TextData[{ Cell[BoxData[ TagBox["", DisplayForm]]], Cell[BoxData[ TagBox["", DisplayForm]]], "\tThe computation of tensor components in an arbitrary frame involves some \ elementary operations of exterior differential calculus. We use the notation \ and conventions of the package ", ButtonBox["Exterior Differential Calculus", ButtonData:>{ URL[ "http://www.inp.demokritos.gr/~sbonano/EDC/"], None}, ButtonStyle->"Hyperlink"], ". Familiarity with that package is not required, unless one wants to do \ further calculations with the connection 1-form tensor \[Omega]Ud which is \ computed by ", StyleBox["RGtensors", FontFamily->"Courier"], ". " }], "Text", FontSize->16], Cell[TextData[{ "\tThus, to do calculations in an arbitrary frame, one must \nFIRST \ evaluate the notebook ", StyleBox["matrixEDCcode.nb", FontWeight->"Bold"], " (in ", ButtonBox["Exterior Differential Calculus", ButtonData:>{ URL[ "http://www.inp.demokritos.gr/~sbonano/EDC/"], None}, ButtonStyle->"Hyperlink"], ", also available ", ButtonBox["here", ButtonData:>{ URL[ "http://library.wolfram.com/infocenter/MathSource/683"], None}, ButtonStyle->"Hyperlink"], ").\nTHEN evaluate section ", StyleBox["2 RG&TC-Code ", FontWeight->"Bold"], "of this notebook.\n(Alternatively, and more conveniently, evaluate the \ notebook ", ButtonBox["EDC&RGTCcode.nb", ButtonData:>{ URL[ "http://www.inp.demokritos.gr/~sbonano/RGTC/EDC&RGTCcode.nb"], None}, ButtonStyle->"Hyperlink"], " containing the combined code!)" }], "Text", FontSize->16], Cell[CellGroupData[{ Cell[TextData[StyleBox[" 5.1 Explicit Frame Calculations", FontWeight->"Bold"]], "Subsection", ShowGroupOpenCloseIcon->True, FontSize->18, FontWeight->"Plain"], Cell[TextData[{ Cell[BoxData[ TagBox["", DisplayForm]]], Cell[BoxData[ TagBox["", DisplayForm]]], "\tIn this case, one must" }], "Text", FontSize->16], Cell[TextData[{ "(i) Define, in addition to the coordinates (", StyleBox["xIN", FontWeight->"Bold"], ") and the metric (", StyleBox["gIN", FontWeight->"Bold"], "), a list of 1-forms (", StyleBox["eIN", FontWeight->"Bold"], ") -- the coframe -- written as linear combinations of the coordinate \ differentials d[x", Cell[BoxData[ \(\^a\)]], "]. The components of ", StyleBox["gIN", FontWeight->"Bold"], " must, of course, be given with respect to the coframe ", StyleBox["eIN", FontWeight->"Bold"], ". " }], "Text", FontSize->16], Cell[TextData[{ "(ii) Evaluate ", StyleBox["RGtensors", FontWeight->"Bold"], " with the coframe as a third argument: ", StyleBox["RGtensors[gIN,xIN,eIN]", FontFamily->"Courier", FontWeight->"Bold"], "." }], "Text", FontSize->16], Cell[TextData[{ Cell[BoxData[ TagBox["", DisplayForm]]], Cell[BoxData[ TagBox["", DisplayForm]]], "\t", StyleBox["RGtensors", FontFamily->"Courier"], " now computes all tensor components with respect to the given frame. (The \ same holds true, of course, for all other tensor functions - ", StyleBox["covD", FontFamily->"Courier"], ", ", StyleBox["covDiv", FontFamily->"Courier"], ", etc.). When it is finished, in addition to the other global tensors \ (Rdddd, Rdd, etc.), the connection 1-form tensor \[Omega]Ud with components \ \[Omega]Ud[[a,b]] =", Cell[BoxData[ \(\(\ \(\[Omega]\^a\)\_b\)\)]], " is now stored in memory. \[Omega]Ud satisfies the equation d[eIN]+\ \[Omega]Ud\[Wedge]eIN= 0, or, in components, d[e", Cell[BoxData[ \(\^a\)]], "]+", Cell[BoxData[ \(\(\[Omega]\^a\)\_b\)]], "\[Wedge]e", Cell[BoxData[ \(\^b\)]], "= 0, where e", Cell[BoxData[ \(\^a\)]], "=eIN[[a]]. (Wedge multiplication of lists acts like ", StyleBox["Dot", FontFamily->"Courier"], " - it sums the last index of the first list with the first index of the \ second list). The notation ", StyleBox["e[a]", FontFamily->"Courier"], " is used for e", Cell[BoxData[ \(\^a\)]], " and all differential forms are written as linear combinations of the \ bases ", StyleBox["e[a]", FontFamily->"Courier"], ", ", StyleBox["e[a]\[Wedge]e[b]", FontFamily->"Courier"], ", etc. " }], "Text", FontSize->16], Cell[TextData[{ Cell[BoxData[ TagBox["", DisplayForm]]], Cell[BoxData[ TagBox["", DisplayForm]]], "\t", StyleBox["Note", FontSlant->"Italic"], ": The exterior derivative operator ", StyleBox["d[]", FontFamily->"Courier"], " treats all symbols as variables. Therefore, constants must be explicitly \ defined to have zero exterior derivative, e.g., ", StyleBox["d[a]=0", FontFamily->"Courier"], " and ", StyleBox["d[M]=0", FontFamily->"Courier"], " for the Kerr metric. Otherwise, warning messages are generated and \ calculations take longer." }], "Text", FontSize->16], Cell[CellGroupData[{ Cell[TextData[StyleBox[ " \[FilledSmallSquare] Example 4a: Kerr (Example 4) @ \"rotating \ coordinate frame\"", FontWeight->"Bold"]], "Text", CellFrame->True, ShowGroupOpenCloseIcon->True, FontSize->16, FontColor->RGBColor[0, 0, 1]], Cell[BoxData[ \(\(xCoord = {t, r, x, \[CurlyPhi]}; \)\)], "Input", FontColor->GrayLevel[0.333333]], Cell[BoxData[ \(\(coFrame = {d[t] + 2 a\ M\ r \((1 - x^2)\)/\((Sigma - 2 M\ r)\) d[\[CurlyPhi]], d[r], d[x], d[\[CurlyPhi]]}; \)\)], "Input", FontColor->GrayLevel[0.333333]], Cell[BoxData[ \(Sigma = r^2 + a^2 x^2; Delta = r^2 + a^2 - 2 M\ r; \)], "Input", FontColor->GrayLevel[0.333333]], Cell[BoxData[ \(\(g = DiagonalMatrix[{1 - 2 M\ r/Sigma, \(-Sigma\)/Delta, \(-Sigma\)/\((1 - x^2)\), \(-Delta\)\ Sigma \((1 - x^2)\)/\((Sigma - 2 M\ r)\)}]; \)\)], "Input", FontColor->GrayLevel[0.333333]], Cell[BoxData[ \(d[a] = 0; d[M] = 0; \)], "Input", FontColor->GrayLevel[0.333333]], Cell[BoxData[ \(\(simpRules = {}; \)\)], "Input", FontColor->GrayLevel[0.333333]], Cell[CellGroupData[{ Cell[BoxData[ \(RGtensors[g, xCoord, coFrame]\)], "Input", FontColor->GrayLevel[0.333333]], Cell[BoxData[ InterpretationBox[ RowBox[{\("gdd = "\), "\[InvisibleSpace]", TagBox[ RowBox[{"(", GridBox[{ {\(1 - \(2\ M\ r\)\/\(r\^2 + a\^2\ x\^2\)\), "0", "0", "0"}, {"0", \(\(\(-r\^2\) - a\^2\ x\^2\)\/\(a\^2 - 2\ M\ r + r\^2\)\), "0", "0"}, {"0", "0", \(\(\(-r\^2\) - a\^2\ x\^2\)\/\(1 - x\^2\)\), "0"}, {"0", "0", "0", \(\(\((\(-a\^2\) + 2\ M\ r - r\^2)\)\ \((1 - x\^2)\)\ \((r\^2 + a\^2\ x\^2)\)\)\/\(\(-2\)\ M\ r + r\^2 + a\^2\ x\^2\)\)} }], ")"}], (MatrixForm[ #]&)]}], SequenceForm[ "gdd = ", MatrixForm[ {{ Plus[ 1, Times[ -2, M, r, Power[ Plus[ Power[ r, 2], Times[ Power[ a, 2], Power[ x, 2]]], -1]]], 0, 0, 0}, {0, Times[ Power[ Plus[ Power[ a, 2], Times[ -2, M, r], Power[ r, 2]], -1], Plus[ Times[ -1, Power[ r, 2]], Times[ -1, Power[ a, 2], Power[ x, 2]]]], 0, 0}, {0, 0, Times[ Power[ Plus[ 1, Times[ -1, Power[ x, 2]]], -1], Plus[ Times[ -1, Power[ r, 2]], Times[ -1, Power[ a, 2], Power[ x, 2]]]], 0}, {0, 0, 0, Times[ Plus[ Times[ -1, Power[ a, 2]], Times[ 2, M, r], Times[ -1, Power[ r, 2]]], Plus[ 1, Times[ -1, Power[ x, 2]]], Plus[ Power[ r, 2], Times[ Power[ a, 2], Power[ x, 2]]], Power[ Plus[ Times[ -2, M, r], Power[ r, 2], Times[ Power[ a, 2], Power[ x, 2]]], -1]]}}]], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ RowBox[{\("LineElement = "\), "\[InvisibleSpace]", TagBox[ \(\( - \(\((r\^2 + a\^2\ x\^2)\)\ d[r]\^2\)\/\(a\^2 - 2\ M\ r + r\^2\)\) - \(\((2\ M\ r - r\^2 - a\^2\ x\^2)\)\ d[t]\^2\)\/\(r\^2 + a\^2\ x\^2\) + \(\((r\^2 + a\^2\ x\^2)\)\ d[x]\^2\)\/\(\(-1\) + x\^2\) - \(4\ a\ M\ r\ \((\(-1\) + x\^2)\)\ d[t]\ d[\[CurlyPhi]]\)\/\(r\^2 + a\^2\ x\^2\) + \(\((\(-1\) + x\^2)\)\ \((2\ a\^2\ M\ r + a\^2\ r\^2 + r\^4 + a\^4\ x\^2 - 2\ a\^2\ M\ r\ x\^2 + a\^2\ r\^2\ x\^2)\)\ d[\[CurlyPhi]]\^2\)\/\(r\^2 + a\^2\ x\^2\)\), (Short[ #, 32]&)]}], SequenceForm[ "LineElement = ", Short[ Plus[ Times[ -1, Power[ Plus[ Power[ a, 2], Times[ -2, M, r], Power[ r, 2]], -1], Plus[ Power[ r, 2], Times[ Power[ a, 2], Power[ x, 2]]], Power[ d[ r], 2]], Times[ -1, Plus[ Times[ 2, M, r], Times[ -1, Power[ r, 2]], Times[ -1, Power[ a, 2], Power[ x, 2]]], Power[ Plus[ Power[ r, 2], Times[ Power[ a, 2], Power[ x, 2]]], -1], Power[ d[ t], 2]], Times[ Power[ Plus[ -1, Power[ x, 2]], -1], Plus[ Power[ r, 2], Times[ Power[ a, 2], Power[ x, 2]]], Power[ d[ x], 2]], Times[ -4, a, M, r, Plus[ -1, Power[ x, 2]], Power[ Plus[ Power[ r, 2], Times[ Power[ a, 2], Power[ x, 2]]], -1], d[ t], d[ \[CurlyPhi]]], Times[ Plus[ -1, Power[ x, 2]], Power[ Plus[ Power[ r, 2], Times[ Power[ a, 2], Power[ x, 2]]], -1], Plus[ Times[ 2, Power[ a, 2], M, r], Times[ Power[ a, 2], Power[ r, 2]], Power[ r, 4], Times[ Power[ a, 4], Power[ x, 2]], Times[ -2, Power[ a, 2], M, r, Power[ x, 2]], Times[ Power[ a, 2], Power[ r, 2], Power[ x, 2]]], Power[ d[ \[CurlyPhi]], 2]]], 32]], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ RowBox[{\("gUU = "\), "\[InvisibleSpace]", TagBox[ RowBox[{"(", GridBox[{ {\(\(r\^2 + a\^2\ x\^2\)\/\(\(-2\)\ M\ r + r\^2 + a\^2\ x\^2\)\), "0", "0", "0"}, {"0", \(- \(\(a\^2 - 2\ M\ r + r\^2\)\/\(r\^2 + a\^2\ x\^2\)\)\), "0", "0"}, {"0", "0", \(\(\(-1\) + x\^2\)\/\(r\^2 + a\^2\ x\^2\)\), "0"}, {"0", "0", "0", \(\(\(-2\)\ M\ r + r\^2 + a\^2\ x\^2\)\/\(\((a\^2 - 2\ M\ r + r\^2)\)\ \((\(-1\) + x\^2)\)\ \((r\^2 + a\^2\ x\^2)\)\)\)} }], ")"}], (MatrixForm[ #]&)]}], SequenceForm[ "gUU = ", MatrixForm[ {{ Times[ Plus[ Power[ r, 2], Times[ Power[ a, 2], Power[ x, 2]]], Power[ Plus[ Times[ -2, M, r], Power[ r, 2], Times[ Power[ a, 2], Power[ x, 2]]], -1]], 0, 0, 0}, {0, Times[ -1, Plus[ Power[ a, 2], Times[ -2, M, r], Power[ r, 2]], Power[ Plus[ Power[ r, 2], Times[ Power[ a, 2], Power[ x, 2]]], -1]], 0, 0}, {0, 0, Times[ Plus[ -1, Power[ x, 2]], Power[ Plus[ Power[ r, 2], Times[ Power[ a, 2], Power[ x, 2]]], -1]], 0}, {0, 0, 0, Times[ Power[ Plus[ Power[ a, 2], Times[ -2, M, r], Power[ r, 2]], -1], Power[ Plus[ -1, Power[ x, 2]], -1], Power[ Plus[ Power[ r, 2], Times[ Power[ a, 2], Power[ x, 2]]], -1], Plus[ Times[ -2, M, r], Power[ r, 2], Times[ Power[ a, 2], Power[ x, 2]]]]}}]], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ \("gUU computed in "\[InvisibleSpace]0.183333333333332682` \[InvisibleSpace]" sec"\), SequenceForm[ "gUU computed in ", 0.18333333333333268, " sec"], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ \("d[coframe] computed in "\[InvisibleSpace]0.100000000000000532` \[InvisibleSpace]" sec"\), SequenceForm[ "d[coframe] computed in ", 0.10000000000000053, " sec"], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ \("Gamma computed in "\[InvisibleSpace]0.5`\[InvisibleSpace]" sec"\), SequenceForm[ "Gamma computed in ", 0.5, " sec"], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ \("Riemann(dddd) computed in "\[InvisibleSpace]0.5` \[InvisibleSpace]" sec"\), SequenceForm[ "Riemann(dddd) computed in ", 0.5, " sec"], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ \("Riemann(Uddd) computed in "\[InvisibleSpace]0.316666666666665541` \[InvisibleSpace]" sec"\), SequenceForm[ "Riemann(Uddd) computed in ", 0.31666666666666554, " sec"], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ \("Ricci computed in "\[InvisibleSpace]0.0166666666666674956` \[InvisibleSpace]" sec"\), SequenceForm[ "Ricci computed in ", 0.016666666666667496, " sec"], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ \("Weyl computed in "\[InvisibleSpace]0.`\[InvisibleSpace]" sec"\), SequenceForm[ "Weyl computed in ", 0.0, " sec"], Editable->False]], "Print"], Cell[BoxData[ \("Ricci Flat"\)], "Output", FontSize->20, FontWeight->"Bold", FontColor->RGBColor[1, 0, 1]], Cell[BoxData[ \("All tasks completed in 1.78333 seconds"\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(detg\)], "Input", FontColor->GrayLevel[0.333333]], Cell[BoxData[ \(\(-\((r\^2 + a\^2\ x\^2)\)\^2\)\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(RUddd[\([1, 2, 1, 2]\)]\)], "Input", FontColor->GrayLevel[0.333333]], Cell[BoxData[ \(\(-\(\(M\ r\ \((r\^2 - 3\ a\^2\ x\^2)\)\ \((\(-3\)\ a\^2 + 4\ M\ r - 2\ r\^2 + a\^2\ x\^2)\)\)\/\(\(( \(-a\^2\) + 2\ M\ r - r\^2)\)\ \((2\ M\ r - r\^2 - a\^2\ x\^2)\)\ \((r\^2 + a\^2\ x\^2)\)\^2\)\)\)\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(\[Omega]Ud[\([1, 2]\)]\)], "Input", FontColor->GrayLevel[0.333333]], Cell[BoxData[ \(\(-\(\(M\ \((r - a\ x)\)\ \((r + a\ x)\)\ e[1]\)\/\(\((2\ M\ r - r\^2 - a\^2\ x\^2)\)\ \((r\^2 + a\^2\ x\^2)\)\)\)\) - \(a\ M\ \((\(-1\) + x)\)\ \((1 + x)\)\ \((\(-r\) + a\ x)\)\ \((r + a\ x)\)\ e[4]\)\/\((\(-2\)\ M\ r + r\^2 + a\^2\ x\^2)\)\^2 \)], "Output"] }, Open ]] }, Closed]], Cell[TextData[{ Cell[BoxData[ TagBox["", DisplayForm]]], Cell[BoxData[ TagBox["", DisplayForm]]], "\tIt is still possible to skip computation of RUddd and/or Wdddd by \ calling ", StyleBox["RGtensors", FontFamily->"Courier"], " with an extra (fourth!) argument of the form ", StyleBox["{i,j}", FontFamily->"Courier"], " (see note at the end of section 1.1). Thus ", StyleBox["RGtensors", FontFamily->"Courier"], " can be called with 2, 3 or 4 arguments, in the following order:" }], "Text", FontSize->16], Cell[TextData[{ Cell[BoxData[ TagBox["", DisplayForm]]], Cell[BoxData[ TagBox["", DisplayForm]]], "\t ", StyleBox["RGtensors[gIN,xIN]", FontFamily->"Courier", FontWeight->"Bold"], " - computes all tensors in the coordinate frame" }], "Text", FontSize->16], Cell[TextData[{ Cell[BoxData[ TagBox["", DisplayForm]]], Cell[BoxData[ TagBox["", DisplayForm]]], "\t ", StyleBox["RGtensors[gIN,xIN,{1,0}]", FontFamily->"Courier", FontWeight->"Bold"], " - computes all tensors except Wdddd in the coordinate frame" }], "Text", FontSize->16], Cell[TextData[{ Cell[BoxData[ TagBox["", DisplayForm]]], Cell[BoxData[ TagBox["", DisplayForm]]], "\t ", StyleBox["RGtensors[gIN,xIN,eIN]", FontFamily->"Courier", FontWeight->"Bold"], " - computes all tensors in the frame specified by eIN" }], "Text", FontSize->16], Cell[TextData[{ Cell[BoxData[ TagBox["", DisplayForm]]], Cell[BoxData[ TagBox["", DisplayForm]]], "\t ", StyleBox["RGtensors[gIN,xIN,eIN,{0,0}]", FontFamily->"Courier", FontWeight->"Bold"], " - computes all tensors except RUddd and Wdddd in the frame specified by \ eIN" }], "Text", FontSize->16], Cell[CellGroupData[{ Cell[TextData[{ " 5.1.1 ", StyleBox["Important note on repeated frame calculations:", FontWeight->"Bold", FontSlant->"Italic"], " eTO$dx and Clear$dx" }], "Subsubsection", ShowGroupOpenCloseIcon->True, FontSize->16, FontWeight->"Bold", CellTags->"sec 5"], Cell[TextData[{ Cell[BoxData[ TagBox["", DisplayForm]]], Cell[BoxData[ TagBox["", DisplayForm]]], "\tAfter a calculation in a particular frame, the coordinate differentials \ are stored as linear combinations of the coframe basis e[a]. Thus, after \ Example 4a:" }], "Text", FontSize->16, CellTags->"sec 5"], Cell[CellGroupData[{ Cell[BoxData[ \({d[t], d[t]\[Wedge]d[r]}\)], "Input", CellTags->"sec 5"], Cell[BoxData[ \({e[1] + \(2\ a\ M\ r\ \((\(-1\) + x)\)\ \((1 + x)\)\ e[4]\)\/\(\(-2\)\ M\ r + r\^2 + a\^2\ x\^2\), e[1]\[Wedge]e[2] - \(2\ a\ M\ r\ \((\(-1\) + x)\)\ \((1 + x)\)\ e[2]\[Wedge]e[4]\)\/\(\(-2\)\ M\ r + r\^2 + a\^2\ x\^2\)}\)], "Output"] }, Open ]], Cell[TextData[{ " The global variable ", StyleBox["eTO$dx", FontFamily->"Courier"], " is a list of substitution rules, defined by ", StyleBox["RGtensors", FontFamily->"Courier"], ", that remembers the original frame definitions in terms of the coordinate \ differentials -- with \[ScriptD] used in place of d. It is useful in \ converting differential forms from the e[i]\[Wedge]e[j] basis to the d[xi]\ \[Wedge]d[xj] basis. For example " }], "Text", FontSize->16, CellTags->"sec 5"], Cell[CellGroupData[{ Cell[BoxData[ \(FacSimp[% /. eTO$dx]\)], "Input"], Cell[BoxData[ \({\[ScriptD][t], \(-\((\[ScriptD][r]\[Wedge]\[ScriptD][t])\)\)}\)], "Output"] }, Open ]], Cell["\<\ Having the d[x] set equal to their expressions in terms of the e[a] \ makes calculations involving differentiations in this frame more efficient. \ However, if a subsequent calculation in a different frame is to be carried \ out, these values must be cleared. This can be done by evaluating:\ \>", "Text", FontSize->16, CellTags->"sec 5"], Cell[BoxData[ \(Clear$dx\)], "Input"], Cell[TextData[{ " \tThis procedure clears the coordinate differentials and ", StyleBox["eTO$dx", FontFamily->"Courier"], ". Now" }], "Text", FontSize->16, CellTags->"sec 5"], Cell[CellGroupData[{ Cell[BoxData[ \({d[t], d[r]}\)], "Input"], Cell[BoxData[ \({d[t], d[r]}\)], "Output"] }, Open ]], Cell[TextData[{ " \tIt is always safer, however, to reevaluate ", StyleBox["matrixEDCcode.nb", FontWeight->"Bold"], " and ", StyleBox["RG&TC-Code", FontWeight->"Bold"], " - which clears ALL variables - before starting a calculation with a new \ frame (or metric)." }], "Text", FontSize->16, CellTags->"sec 5"] }, Closed]], Cell[CellGroupData[{ Cell[" 5.1.2 Hodge Duality", "Subsubsection", ShowGroupOpenCloseIcon->True, FontSize->16], Cell[TextData[{ "\tA new function that can be used now is ", StyleBox["HStar[x_]", FontFamily->"Courier", FontWeight->"Bold"], ":: applied to any ", StyleBox["p", FontSlant->"Italic"], "-form scalar or tensor expression ", StyleBox["x", FontFamily->"Courier"], ", it gives the \"Hodge Dual\" of ", StyleBox["x", FontFamily->"Courier"], ", i.e., the result of replacing each ", StyleBox["p", FontSlant->"Italic"], "-form basis ", StyleBox["e[a1]\[Wedge]e[a2]\[Wedge]...\[Wedge]e[ap] ", FontFamily->"Courier"], "by (the Einstein summation convention holds)" }], "Text", FontSize->16], Cell[TextData[Cell[BoxData[ RowBox[{ RowBox[{ RowBox[{ \(\(\((\[LeftBracketingBar]detg\[RightBracketingBar])\)\^\(1/2\)\) \(g\^\(a1\ b1\)\) g\^\(a2\ b2\)..\), \(g\^\(ap\ bp\)\), StyleBox[\(epsilon[b1, b2, \(.. bp\), bp + 1, .., Dim]\), FontFamily->"Courier"], StyleBox[\(e[bp + 1]\[Wedge]\), FontFamily->"Courier"]}], StyleBox["..", FontFamily->"Courier"]}], StyleBox["\[Wedge]", FontFamily->"Courier"], StyleBox[\(e[Dim]/\(\((Dim - p)\)!\)\), FontFamily->"Courier"]}]]]], "Text", FontSize->16], Cell[TextData[{ Cell[BoxData[ TagBox["", DisplayForm]]], Cell[BoxData[ TagBox["", DisplayForm]]], "\t", StyleBox["Note", FontSlant->"Italic"], ": The default volume ", StyleBox["Dim", FontSlant->"Italic"], "-form used as the ", StyleBox["definition", FontSlant->"Italic"], " of ", StyleBox["HStar[1]", FontFamily->"Courier"], " is ", Cell[BoxData[ RowBox[{ RowBox[{ RowBox[{ \(\((\[LeftBracketingBar]detg\[RightBracketingBar])\)\^\(1/2\)\), StyleBox[\(e[1]\[Wedge]e[2]\[Wedge]\), FontFamily->"Courier"]}], StyleBox["...", FontFamily->"Courier"]}], StyleBox["\[Wedge]", FontFamily->"Courier"], StyleBox[\(e[Dim]\), FontFamily->"Courier"]}]]], ", except in the case of a Newman-Penrose null frame (see section 5.1.3) \ where the (real) volume 4-form ", StyleBox["I", FontFamily->"Courier"], " ", StyleBox["e[1]\[Wedge]e[2]\[Wedge]e[3]\[Wedge]e[4]", FontFamily->"Courier"], " is used. If in a particular case a different volume form must be used as \ the definition of ", StyleBox["HStar[1]", FontFamily->"Courier"], ", one must define a new ", StyleBox["Mathematica", FontSlant->"Italic"], " function for Hodge-Dual, as a simple multiple of ", StyleBox["HStar", FontFamily->"Courier"], ": ", StyleBox["newHstar[x_]:= \[Alpha]", FontFamily->"Courier", FontWeight->"Bold"], StyleBox[" ", FontWeight->"Bold"], StyleBox["HStar[x]", FontFamily->"Courier", FontWeight->"Bold"], ", where ", StyleBox["\[Alpha]", FontWeight->"Bold"], " is the ratio newVolumeForm / defaultVolumeForm." }], "Text", FontSize->16] }, Closed]], Cell[CellGroupData[{ Cell[TextData[StyleBox[ " \[FilledSmallSquare] Example 4b: Kerr (Example 4) @ orthonormal frame", FontWeight->"Bold"]], "Text", CellFrame->True, ShowGroupOpenCloseIcon->True, FontSize->16, FontColor->RGBColor[0, 0, 1]], Cell[BoxData[ \(Clear$dx\)], "Input", FontColor->GrayLevel[0.333333]], Cell[CellGroupData[{ Cell[BoxData[ RowBox[{"ONframe", "=", RowBox[{"FacSimp", "[", RowBox[{ RowBox[{"DiagonalMatrix", "[", RowBox[{"PowerExpand", "[", RowBox[{"{", RowBox[{ \(Sqrt[\((Sigma - 2 M\ r)\)/Sigma]\), ",", \(Sqrt[Sigma/Delta]\), ",", RowBox[{"Sqrt", "[", RowBox[{"Sigma", "/", RowBox[{"(", StyleBox[\(1 - x^2\), FontFamily->"Courier"], ")"}]}], "]"}], ",", RowBox[{"Sqrt", "[", RowBox[{"Delta", " ", "Sigma", RowBox[{ StyleBox[\((1 - x^2)\), FontFamily->"Courier"], "/", \((Sigma - 2 M\ r)\)}]}], "]"}]}], "}"}], "]"}], "]"}], ".", "coFrame"}], "]"}]}]], "Input", FontColor->GrayLevel[0.333333]], Cell[BoxData[ \({\(\@\(\(-2\)\ M\ r + r\^2 + a\^2\ x\^2\)\ d[t]\)\/\@\(r\^2 + a\^2\ x\^2\) - \(2\ a\ M\ r\ \((\(-1\) + x)\)\ \((1 + x)\)\ d[\[CurlyPhi]]\)\/\(\@\(r\^2 + a\^2\ x\^2\)\ \@\(\( - 2\)\ M\ r + r\^2 + a\^2\ x\^2\)\), \(\@\(r\^2 + a\^2\ x\^2\)\ d[r]\)\/\@\(a\^2 - 2\ M\ r + r\^2\), \(\@\(r\^2 + a\^2\ x\^2\)\ d[x]\)\/\@\(1 - x\^2\), \(\@\(a\^2 - 2\ M\ r + r\^2\)\ \@\(1 - x\^2\)\ \@\(r\^2 + a\^2\ x\^2\)\ d[\[CurlyPhi]]\)\/\@\(\(-2\)\ M\ r + r\^2 + a\^2\ x\^2\)}\)], "Output"] }, Open ]], Cell[TextData[{ "\t", StyleBox["Note", FontWeight->"Bold", FontSlant->"Italic"], ": ", StyleBox["PowerExpand", FontFamily->"Courier"], " must always be used when the argument of ", StyleBox["Sqrt", FontFamily->"Courier"], " is a product of factors. Otherwise simplifications cannot be carried \ out. " }], "Text", FontSize->16, FontColor->RGBColor[0, 0, 1]], Cell[BoxData[ \(\(gON = DiagonalMatrix[{1, \(-1\), \(-1\), \(-1\)}]; \)\)], "Input", FontColor->GrayLevel[0.333333]], Cell[BoxData[ \(\(simpRules = {\((\(-1\) + x)\) \((1 + x)\)/\@\(1 - x\^2\) -> \(-\@\(1 - x\^2\)\), \((\@\(r\^2 + a\^2\ x\^2\) - \@\(\(-2\)\ M\ r + r\^2 + a\^2\ x\^2\)) \) \((\@\(r\^2 + a\^2\ x\^2\) + \@\(\(-2\)\ M\ r + r\^2 + a\^2\ x\^2\))\) -> 2\ M\ r}; \)\)], "Input", FontColor->GrayLevel[0.333333]], Cell["\<\ \tThis example illustrates the use of particular simpRules, chosen \ by looking at inadequately simplified expressions in GUdd when evaluated with \ no simpRules, as suggested in section 4.3. \ \>", "Text", FontSize->16, FontColor->RGBColor[0, 0, 1]], Cell[CellGroupData[{ Cell[BoxData[ \(RGtensors[gON, xCoord, ONframe, {0, 0}]\)], "Input", FontColor->GrayLevel[0.333333]], Cell[BoxData[ InterpretationBox[ RowBox[{\("gdd = "\), "\[InvisibleSpace]", TagBox[ RowBox[{"(", GridBox[{ {"1", "0", "0", "0"}, {"0", \(-1\), "0", "0"}, {"0", "0", \(-1\), "0"}, {"0", "0", "0", \(-1\)} }], ")"}], (MatrixForm[ #]&)]}], SequenceForm[ "gdd = ", MatrixForm[ {{1, 0, 0, 0}, {0, -1, 0, 0}, {0, 0, -1, 0}, {0, 0, 0, -1}}]], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ RowBox[{\("LineElement = "\), "\[InvisibleSpace]", TagBox[ \(\( - \(\((r\^2 + a\^2\ x\^2)\)\ d[r]\^2\)\/\(a\^2 - 2\ M\ r + r\^2\)\) + \(\((\(-2\)\ M\ r + r\^2 + a\^2\ x\^2)\)\ d[t]\^2\)\/\(r\^2 + a\^2\ x\^2\) + \(\((r\^2 + a\^2\ x\^2)\)\ d[x]\^2\)\/\(\(-1\) + x\^2\) - \(4\ a\ M\ r\ \((\(-1\) + x\^2)\)\ d[t]\ d[\[CurlyPhi]]\)\/\(r\^2 + a\^2\ x\^2\) + \(\((\(-1\) + x\^2)\)\ \((2\ a\^2\ M\ r + a\^2\ r\^2 + r\^4 + a\^4\ x\^2 - 2\ a\^2\ M\ r\ x\^2 + a\^2\ r\^2\ x\^2)\)\ d[\[CurlyPhi]]\^2\)\/\(r\^2 + a\^2\ x\^2\)\), (Short[ #, 32]&)]}], SequenceForm[ "LineElement = ", Short[ Plus[ Times[ -1, Power[ Plus[ Power[ a, 2], Times[ -2, M, r], Power[ r, 2]], -1], Plus[ Power[ r, 2], Times[ Power[ a, 2], Power[ x, 2]]], Power[ d[ r], 2]], Times[ Power[ Plus[ Power[ r, 2], Times[ Power[ a, 2], Power[ x, 2]]], -1], Plus[ Times[ -2, M, r], Power[ r, 2], Times[ Power[ a, 2], Power[ x, 2]]], Power[ d[ t], 2]], Times[ Power[ Plus[ -1, Power[ x, 2]], -1], Plus[ Power[ r, 2], Times[ Power[ a, 2], Power[ x, 2]]], Power[ d[ x], 2]], Times[ -4, a, M, r, Plus[ -1, Power[ x, 2]], Power[ Plus[ Power[ r, 2], Times[ Power[ a, 2], Power[ x, 2]]], -1], d[ t], d[ \[CurlyPhi]]], Times[ Plus[ -1, Power[ x, 2]], Power[ Plus[ Power[ r, 2], Times[ Power[ a, 2], Power[ x, 2]]], -1], Plus[ Times[ 2, Power[ a, 2], M, r], Times[ Power[ a, 2], Power[ r, 2]], Power[ r, 4], Times[ Power[ a, 4], Power[ x, 2]], Times[ -2, Power[ a, 2], M, r, Power[ x, 2]], Times[ Power[ a, 2], Power[ r, 2], Power[ x, 2]]], Power[ d[ \[CurlyPhi]], 2]]], 32]], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ RowBox[{\("gUU = "\), "\[InvisibleSpace]", TagBox[ RowBox[{"(", GridBox[{ {"1", "0", "0", "0"}, {"0", \(-1\), "0", "0"}, {"0", "0", \(-1\), "0"}, {"0", "0", "0", \(-1\)} }], ")"}], (MatrixForm[ #]&)]}], SequenceForm[ "gUU = ", MatrixForm[ {{1, 0, 0, 0}, {0, -1, 0, 0}, {0, 0, -1, 0}, {0, 0, 0, -1}}]], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ \("gUU computed in "\[InvisibleSpace]0.0166666666666674956` \[InvisibleSpace]" sec"\), SequenceForm[ "gUU computed in ", 0.016666666666667496, " sec"], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ \("d[coframe] computed in "\[InvisibleSpace]0.633333333333332859` \[InvisibleSpace]" sec"\), SequenceForm[ "d[coframe] computed in ", 0.63333333333333286, " sec"], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ \("Gamma computed in "\[InvisibleSpace]0.233333333333332504` \[InvisibleSpace]" sec"\), SequenceForm[ "Gamma computed in ", 0.2333333333333325, " sec"], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ \("Riemann(dddd) computed in "\[InvisibleSpace]2.40000000000000035` \[InvisibleSpace]" sec"\), SequenceForm[ "Riemann(dddd) computed in ", 2.4000000000000004, " sec"], Editable->False]], "Print"], Cell[BoxData[ \("RUddd not computed"\)], "Output", FontSize->16, FontSlant->"Italic", FontColor->RGBColor[1, 0, 1]], Cell[BoxData[ InterpretationBox[ \("Ricci computed in "\[InvisibleSpace]0.0500000000000007105` \[InvisibleSpace]" sec"\), SequenceForm[ "Ricci computed in ", 0.050000000000000711, " sec"], Editable->False]], "Print"], Cell[BoxData[ \("Weyl tensor not computed"\)], "Output", FontSize->16, FontSlant->"Italic", FontColor->RGBColor[1, 0, 1]], Cell[BoxData[ \("Ricci Flat"\)], "Output", FontSize->20, FontWeight->"Bold", FontColor->RGBColor[1, 0, 1]], Cell[BoxData[ \("All tasks completed in 3.48333 seconds"\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(detg\)], "Input", FontColor->GrayLevel[0.333333]], Cell[BoxData[ \(\(-1\)\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(Rdddd[\([1, 2, 1, 2]\)]\)], "Input", FontColor->GrayLevel[0.333333]], Cell[BoxData[ \(\(M\ r\ \((r\^2 - 3\ a\^2\ x\^2)\)\ \((\(-3\)\ a\^2 + 4\ M\ r - 2\ r\^2 + a\^2\ x\^2)\)\)\/\(\(( 2\ M\ r - r\^2 - a\^2\ x\^2)\)\ \((r\^2 + a\^2\ x\^2)\)\^3\)\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(\[Omega]Ud[\([1, 2]\)]\)], "Input", FontColor->GrayLevel[0.333333]], Cell[BoxData[ \(\(M\ \@\(a\^2 - 2\ M\ r + r\^2\)\ \((\(-r\) + a\ x)\)\ \((r + a\ x)\)\ e[1]\)\/\(\((2\ M\ r - r\^2 - a\^2\ x\^2)\)\ \((r\^2 + a\^2\ x\^2)\)\^\(3/2\)\) - \(a\ M\ \((\(-r\) + a\ x)\)\ \((r + a\ x)\)\ \@\(1 - x\^2\)\ e[4]\)\/\(\((2\ M\ r - r\^2 - a\^2\ x\^2)\)\ \((r\^2 + a\^2\ x\^2)\)\^\(3/2\)\)\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[TextData[{ " \[FilledSmallSquare] ", StyleBox[ "Sample calculations with tensor-valued differential forms and use of \ HStar:", FontWeight->"Bold", FontSlant->"Italic"] }], "Text", CellFrame->True, ShowGroupOpenCloseIcon->True, FontSize->16, FontColor->RGBColor[0, 0, 1]], Cell[TextData[{ "\t\[FilledSmallCircle] Construct the (rank-2) 2-form curvature tensor \ \[CapitalOmega]Ud with components \[CapitalOmega]Ud[[a,b]] =", Cell[BoxData[ \(\(\ \(\[CapitalOmega]\^a\)\_b\)\)]], Cell[BoxData[ \(\( = \(1\/2\) \(\(R\^a\)\_bcd\) e\^c\)\)]], Cell[BoxData[ \(\(\[Wedge]e\^d\)\)]], " (eUU is the 2-form-basis tensor: eUU[[a,b]]=e[a]\[Wedge]e[b])." }], "Text", FontSize->16, FontColor->RGBColor[0, 0, 1]], Cell[BoxData[ \(eUU = Outer[Wedge, e/@{1, 2, 3, 4}, e/@{1, 2, 3, 4}]; Off[General::"\", General::"\"]; \)], "Input", FontColor->GrayLevel[0.333333]], Cell[CellGroupData[{ Cell[BoxData[ \(\(\[CapitalOmega]Ud = multiDot[gUU.Rdddd/2, eUU, {3, 1}, {4, 2}]; \) // Timing\)], "Input", FontColor->GrayLevel[0.333333]], Cell[BoxData[ \({0.55000000000000071`\ Second, Null}\)], "Output"] }, Open ]], Cell[TextData[{ "\t\[FilledSmallCircle] Verify that ", Cell[BoxData[ \(\(\[CapitalOmega]\^a\)\_b\)]], " equals d[", Cell[BoxData[ \(\(\[Omega]\^a\)\_b\)]], "]+", Cell[BoxData[ \(\(\[Omega]\^a\)\_s\)]], "\[Wedge]", Cell[BoxData[ \(\(\[Omega]\^s\)\_b\)]], ". (Wedge multiplication of tensors acts like ", StyleBox["Dot", FontFamily->"Courier"], " - contracts last index of first tensor with first index of second \ tensor)." }], "Text", FontSize->16, FontColor->RGBColor[0, 0, 1]], Cell[CellGroupData[{ Cell[BoxData[ \(zeroQ[ FacSimp[d[\[Omega]Ud] + \[Omega]Ud\[Wedge]\[Omega]Ud - \[CapitalOmega]Ud]] // Timing\)], "Input", FontColor->GrayLevel[0.333333]], Cell[BoxData[ \({9.80000000000000071`\ Second, True}\)], "Output"] }, Open ]], Cell[TextData[ "\t\[FilledSmallCircle] Verify Bianchi identities using \[CapitalOmega]Ud:"], "Text", FontSize->16, FontColor->RGBColor[0, 0, 1]], Cell[CellGroupData[{ Cell[BoxData[ \(zeroQ[ FacSimp[d[\[CapitalOmega]Ud] + \[Omega]Ud\[Wedge]\[CapitalOmega]Ud - \[CapitalOmega]Ud\[Wedge]\[Omega]Ud]] // Timing\)], "Input", FontColor->GrayLevel[0.333333]], Cell[BoxData[ \({22.7499999999999946`\ Second, True}\)], "Output"] }, Open ]], Cell[TextData[{ " \[FilledSmallCircle] If both tensors to be contracted with ", StyleBox["multiDot", FontFamily->"Courier"], " are differential form-valued, then their components are multiplied using \ Wedge:" }], "Text", FontSize->16, FontColor->RGBColor[0, 0, 1]], Cell[CellGroupData[{ Cell[BoxData[ \(multiDot[\[CapitalOmega]Ud, \[CapitalOmega]Ud, {1, 2}, {2, 1}] // Timing \)], "Input", FontColor->GrayLevel[0.333333]], Cell[BoxData[ \({0.75`\ Second, \(48\ a\ M\^2\ r\ x\ \((\(-3\)\ r\^2 + a\^2\ x\^2)\)\ \((\(-r\^2\) + 3\ a\^2\ x\^2)\)\ e[1]\[Wedge]e[2]\[Wedge]e[3]\[Wedge]e[4]\)\/\((r\^2 + a\^2\ x\^2) \)\^6}\)], "Output"] }, Open ]], Cell[TextData[{ "\t\[FilledSmallCircle] ", StyleBox["HStar", FontFamily->"Courier"], " gives the Hodge-dual:" }], "Text", FontSize->16, FontColor->RGBColor[0, 0, 1]], Cell[CellGroupData[{ Cell[BoxData[ \(pseudoScalar = HStar[%[\([2]\)]]\)], "Input", FontColor->GrayLevel[0.333333]], Cell[BoxData[ \(\(48\ a\ M\^2\ r\ x\ \((r\^2 - 3\ a\^2\ x\^2)\)\ \((\(-3\)\ r\^2 + a\^2\ x\^2)\)\)\/\((r\^2 + a\^2\ x\^2)\)\^6\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[TextData[{ "\t\[FilledSmallCircle] This invariant equals ", Cell[BoxData[ \(\(-\(1\/4\)\) \(R\^ab\)\_cd\)]], Cell[BoxData[ \(\(\(R\^cd\)\_ef\) \(\[Eta]\^ef\)\_ab\)]], " and can also be obtained (using ", StyleBox["eta[1,2]", FontFamily->"Courier"], ") as follows:" }], "Text", CellFrame->True, ShowGroupOpenCloseIcon->True, FontSize->16, FontColor->RGBColor[0, 0, 1]], Cell[CellGroupData[{ Cell[BoxData[ \(\(RUUdd = Raise[Rdddd, 1, 2]; \) // Timing\)], "Input", FontColor->GrayLevel[0.333333]], Cell[BoxData[ \({0.766666666666665719`\ Second, Null}\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(\(RstarUUdd = multiDot[RUUdd/2, eta[1, 2], {3, 1}, {4, 2}]; \) // Timing \)], "Input", FontColor->GrayLevel[0.333333]], Cell[BoxData[ \({0.799999999999997157`\ Second, Null}\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(multiDot[\(-RUUdd\)/2, RstarUUdd, {1, 3}, {2, 4}, {3, 1}, {4, 2}]\)], "Input", FontColor->GrayLevel[0.333333]], Cell[BoxData[ \(\(-\(\(48\ a\ M\^2\ r\ x\ \((\(-3\)\ r\^2 + a\^2\ x\^2)\)\ \((\(-r\^2\) + 3\ a\^2\ x\^2)\)\)\/\((r\^2 + a\^2\ x\^2)\)\^6 \)\)\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(Factor[% - pseudoScalar]\)], "Input", FontColor->GrayLevel[0.333333]], Cell[BoxData[ \(0\)], "Output"] }, Open ]] }, Closed]], Cell[TextData[{ "\t\[FilledSmallCircle] The invariant ", Cell[BoxData[ \(\(1\/2\) \(R\^ab\)\_cd\)]], Cell[BoxData[ \(\(R\^cd\)\_ab\)]], " can be obtained either as:" }], "Text", FontSize->16, FontColor->RGBColor[0, 0, 1]], Cell[CellGroupData[{ Cell[BoxData[ \(multiDot[RUUdd, RUUdd, {1, 3}, {2, 4}, {3, 1}, {4, 2}]/2\)], "Input", FontColor->GrayLevel[0.333333]], Cell[BoxData[ \(\(24\ M\^2\ \((r - a\ x)\)\ \((r + a\ x)\)\ \((r\^2 - 4\ a\ r\ x + a\^2\ x\^2)\)\ \((r\^2 + 4\ a\ r\ x + a\^2\ x\^2)\)\)\/\((r\^2 + a\^2\ x\^2)\)\^6\)], "Output"] }, Open ]], Cell[TextData[{ "or, using \[CapitalOmega]Ud and ", StyleBox["HStar", FontFamily->"Courier"], ", as:" }], "Text", FontSize->16, FontColor->RGBColor[0, 0, 1]], Cell[CellGroupData[{ Cell[BoxData[ \(HStar[ multiDot[\[CapitalOmega]Ud, HStar[\[CapitalOmega]Ud], {1, 2}, {2, 1}]] // Timing\)], "Input", FontColor->GrayLevel[0.333333]], Cell[BoxData[ \({1.3333333333333357`\ Second, \(-\(\(24\ M\^2\ \((r - a\ x)\)\ \((r + a\ x)\)\ \((\(-r\^2\) - 4\ a\ r\ x - a\^2\ x\^2)\)\ \((r\^2 - 4\ a\ r\ x + a\^2\ x\^2)\)\)\/\((r\^2 + a\^2\ x\^2) \)\^6\)\)}\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(Factor[%[\([2]\)] - %%]\)], "Input", FontColor->GrayLevel[0.333333]], Cell[BoxData[ \(0\)], "Output"] }, Open ]], Cell[BoxData[ \(\(On[General::"\", General::"\"]; \)\)], "Input", FontColor->GrayLevel[0.333333]] }, Closed]] }, Closed]], Cell[CellGroupData[{ Cell[" 5.1.3 Newman-Penrose Null Frame", "Subsubsection", ShowGroupOpenCloseIcon->True, FontSize->16], Cell[TextData[{ Cell[BoxData[ TagBox["", DisplayForm]]], Cell[BoxData[ TagBox["", DisplayForm]]], "\tWhen the metric equals ", StyleBox["{{0,1,0,0},{1,0,0,0},{0,0,0,-1},{0,0,-1,0}}", FontFamily->"Courier"], ", ", StyleBox["RGtensors", FontFamily->"Courier"], " assigns values to a number of new symbols (global variables):\n\t(i) \ the spin coefficents: ", StyleBox[ "\[Tau], \[Kappa], \[Rho], \[Sigma], \[Gamma], \[Epsilon], \[Alpha], \ \[Beta], \[Nu], $\[Pi], \[Lambda], \[Mu]", FontFamily->"Courier"], "\n\t(ii) the Ricci and Weyl scalars: \[CapitalPhi][", StyleBox["i,j]", FontFamily->"Courier"], ", ", StyleBox["\[CapitalLambda]", FontFamily->"Courier"], ", and ", StyleBox["\[CapitalPsi][i]", FontFamily->"Courier"], " for the Newman-Penrose scalars ", Cell[BoxData[ \(\[CapitalPhi]\_ij\)]], ", ", StyleBox["\[CapitalLambda]", FontFamily->"Courier"], ", and ", Cell[BoxData[ \(\[CapitalPsi]\_i\)]], ",\nand defines the differential operators: ", StyleBox[ "{\[GothicCapitalD][_], \[CapitalDelta][_], \[Delta][_], \[Delta]B[_]}", FontFamily->"Courier"], ", \n", StyleBox["assuming that the null basis given in the coframe is", FontSlant->"Italic"], " ", StyleBox["{\[DoubleStruckL],\[DoubleStruckN],\[DoubleStruckM],", FontFamily->"Courier"], Cell[BoxData[ \(\[DoubleStruckM]\&_\)]], StyleBox["}", FontFamily->"Courier"], " (standard NP notation). \n\n\t", StyleBox["RGtensors", FontFamily->"Courier"], " prints messages after each set of NP symbols is defined. Differential \ forms are still written in the ", StyleBox["e[i]", FontFamily->"Courier"], " notation, where ", StyleBox["e[1]", FontFamily->"Courier"], "=", StyleBox["\[DoubleStruckL],e[2]", FontFamily->"Courier"], "=", StyleBox["\[DoubleStruckN]", FontFamily->"Courier"], ", etc. The only other differences from the standard notation are the use \ of ", StyleBox["$\[Pi]", FontFamily->"Courier"], " in place of ", StyleBox["\[Pi]", FontFamily->"Courier"], " (which in ", StyleBox["Mathematica", FontSlant->"Italic"], " is the constant 3.14159...), the use of the Gothic D - ", StyleBox["\[GothicCapitalD]", FontFamily->"Courier"], " - for the differential operator D (to distinguish it from the built-in \ operator D) and the use of ", StyleBox["\[Delta]B", FontFamily->"Courier"], " instead of ", StyleBox["OverBar[\[Delta]]", FontFamily->"Courier"], " (easier to write and to see!). The palette ", StyleBox["NPsymbolPLT.nb", FontWeight->"Bold"], " facilitates entering these NP symbols/operators." }], "Text", FontSize->16], Cell[TextData[{ "\tThe function ", StyleBox["Bar", FontFamily->"Courier"], " now knows the reality conditions of the frame, e.g., that ", StyleBox["Bar[e[1]]=e[1]", FontFamily->"Courier"], ", ", StyleBox["Bar[e[3]]=e[4]", FontFamily->"Courier"], ", etc., but assumes that all other symbols used are real (the spin \ coefficients are ", StyleBox["names", FontSlant->"Italic"], " that refer to expressions in terms of the coordinates which may contain \ the imaginary unit ", StyleBox["I", FontFamily->"Courier"], "). " }], "Text", FontSize->16] }, Closed]], Cell[CellGroupData[{ Cell[TextData[StyleBox[ " \[FilledSmallSquare] Example 4c: Kerr (Example 4) @ NP[(1,2), (3,4)] \ frame", FontWeight->"Bold"]], "Text", CellFrame->True, ShowGroupOpenCloseIcon->True, FontSize->16, FontColor->RGBColor[0, 0, 1]], Cell[BoxData[ \(Clear$dx\)], "Input"], Cell[CellGroupData[{ Cell[BoxData[ \(NPframe = FacSimp[{\((ONframe[\([1]\)] - ONframe[\([2]\)])\)/\@2, \((ONframe[\([1]\)] + ONframe[\([2]\)])\)/\@2, \((ONframe[\([3]\)] + I\ ONframe[\([4]\)])\)/\@2, \((ONframe[\([3]\)] - I\ ONframe[\([4]\)])\)/\@2}]\)], "Input"], Cell[BoxData[ \({\(- \(\(\@\(r\^2 + a\^2\ x\^2\)\ d[r]\)\/\(\@2\ \@\(a\^2 - 2\ M\ r + r\^2\)\)\)\) + \(\@\(\(-2\)\ M\ r + r\^2 + a\^2\ x\^2\)\ d[t]\)\/\(\@2\ \@\(r\^2 + a\^2\ x\^2\)\) - \(\@2\ a\ M\ r\ \((\(-1\) + x)\)\ \((1 + x)\)\ d[\[CurlyPhi]]\)\/\(\@\(r\^2 + a\^2\ x\^2\)\ \@\(\( - 2\)\ M\ r + r\^2 + a\^2\ x\^2\)\), \(\@\(r\^2 + a\^2\ x\^2\)\ d[r]\)\/\(\@2\ \@\(a\^2 - 2\ M\ r + r\^2\)\) + \(\@\(\(-2\)\ M\ r + r\^2 + a\^2\ x\^2\)\ d[t]\)\/\(\@2\ \@\(r\^2 + a\^2\ x\^2\)\) - \(\@2\ a\ M\ r\ \((\(-1\) + x)\)\ \((1 + x)\)\ d[\[CurlyPhi]]\)\/\(\@\(r\^2 + a\^2\ x\^2\)\ \@\(\( - 2\)\ M\ r + r\^2 + a\^2\ x\^2\)\), \(\@\(r\^2 + a\^2\ x\^2\)\ d[x]\)\/\(\@2\ \@\(1 - x\^2\)\) + \(I\ \@\(a\^2 - 2\ M\ r + r\^2\)\ \@\(1 - x\^2\)\ \@\(r\^2 + a\^2\ x\^2\)\ d[\[CurlyPhi]]\)\/\(\@2\ \@\(\( - 2\)\ M\ r + r\^2 + a\^2\ x\^2\)\), \(\@\(r\^2 + a\^2\ x\^2\)\ d[x]\)\/\(\@2\ \@\(1 - x\^2\)\) - \(I\ \@\(a\^2 - 2\ M\ r + r\^2\)\ \@\(1 - x\^2\)\ \@\(r\^2 + a\^2\ x\^2\)\ d[\[CurlyPhi]]\)\/\(\@2\ \@\(\( - 2\)\ M\ r + r\^2 + a\^2\ x\^2\)\)}\)], "Output"] }, Open ]], Cell[BoxData[ RowBox[{ RowBox[{"gNP", "=", StyleBox[ \({{0, 1, 0, 0}, {1, 0, 0, 0}, {0, 0, 0, \(-1\)}, {0, 0, \(-1\), 0}} \), FontFamily->"Courier"]}], StyleBox[";", FontFamily->"Courier"]}]], "Input"], Cell[CellGroupData[{ Cell[BoxData[ \(varList = {\@\(a\^2 - 2\ M\ r + r\^2\)}\)], "Input"], Cell[BoxData[ \({\@\(a\^2 - 2\ M\ r + r\^2\)}\)], "Output"] }, Open ]], Cell[TextData[{ "\tThis is an example where using ", StyleBox["varList", FontFamily->"Courier"], " is essential (see section 4.3). With the default empty list, ", StyleBox["RGtensors", FontFamily->"Courier"], " seems to get stuck (more than 10 minutes with ", StyleBox["Mathematica", FontSlant->"Italic"], " 4) in computing Rdddd (", StyleBox["Mathematica", FontSlant->"Italic"], " 3 actually gets stuck -- cannot be aborted!). " }], "Text", FontSize->16, FontColor->RGBColor[0, 0, 1]], Cell[CellGroupData[{ Cell[BoxData[ \(RGtensors[gNP, xCoord, NPframe, {0, 0}]\)], "Input"], Cell[BoxData[ InterpretationBox[ RowBox[{\("gdd = "\), "\[InvisibleSpace]", TagBox[ RowBox[{"(", GridBox[{ {"0", "1", "0", "0"}, {"1", "0", "0", "0"}, {"0", "0", "0", \(-1\)}, {"0", "0", \(-1\), "0"} }], ")"}], (MatrixForm[ #]&)]}], SequenceForm[ "gdd = ", MatrixForm[ {{0, 1, 0, 0}, {1, 0, 0, 0}, {0, 0, 0, -1}, {0, 0, -1, 0}}]], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ RowBox[{\("LineElement = "\), "\[InvisibleSpace]", TagBox[ \(\( - \(\((r\^2 + a\^2\ x\^2)\)\ d[r]\^2\)\/\(a\^2 - 2\ M\ r + r\^2\)\) + \(\((\(-2\)\ M\ r + r\^2 + a\^2\ x\^2)\)\ d[t]\^2\)\/\(r\^2 + a\^2\ x\^2\) + \(\((r\^2 + a\^2\ x\^2)\)\ d[x]\^2\)\/\(\(-1\) + x\^2\) - \(4\ a\ M\ r\ \((\(-1\) + x\^2)\)\ d[t]\ d[\[CurlyPhi]]\)\/\(r\^2 + a\^2\ x\^2\) + \(\((\(-1\) + x\^2)\)\ \((2\ a\^2\ M\ r + a\^2\ r\^2 + r\^4 + a\^4\ x\^2 - 2\ a\^2\ M\ r\ x\^2 + a\^2\ r\^2\ x\^2)\)\ d[\[CurlyPhi]]\^2\)\/\(r\^2 + a\^2\ x\^2\)\), (Short[ #, 32]&)]}], SequenceForm[ "LineElement = ", Short[ Plus[ Times[ -1, Power[ Plus[ Power[ a, 2], Times[ -2, M, r], Power[ r, 2]], -1], Plus[ Power[ r, 2], Times[ Power[ a, 2], Power[ x, 2]]], Power[ d[ r], 2]], Times[ Power[ Plus[ Power[ r, 2], Times[ Power[ a, 2], Power[ x, 2]]], -1], Plus[ Times[ -2, M, r], Power[ r, 2], Times[ Power[ a, 2], Power[ x, 2]]], Power[ d[ t], 2]], Times[ Power[ Plus[ -1, Power[ x, 2]], -1], Plus[ Power[ r, 2], Times[ Power[ a, 2], Power[ x, 2]]], Power[ d[ x], 2]], Times[ -4, a, M, r, Plus[ -1, Power[ x, 2]], Power[ Plus[ Power[ r, 2], Times[ Power[ a, 2], Power[ x, 2]]], -1], d[ t], d[ \[CurlyPhi]]], Times[ Plus[ -1, Power[ x, 2]], Power[ Plus[ Power[ r, 2], Times[ Power[ a, 2], Power[ x, 2]]], -1], Plus[ Times[ 2, Power[ a, 2], M, r], Times[ Power[ a, 2], Power[ r, 2]], Power[ r, 4], Times[ Power[ a, 4], Power[ x, 2]], Times[ -2, Power[ a, 2], M, r, Power[ x, 2]], Times[ Power[ a, 2], Power[ r, 2], Power[ x, 2]]], Power[ d[ \[CurlyPhi]], 2]]], 32]], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ RowBox[{\("gUU = "\), "\[InvisibleSpace]", TagBox[ RowBox[{"(", GridBox[{ {"0", "1", "0", "0"}, {"1", "0", "0", "0"}, {"0", "0", "0", \(-1\)}, {"0", "0", \(-1\), "0"} }], ")"}], (MatrixForm[ #]&)]}], SequenceForm[ "gUU = ", MatrixForm[ {{0, 1, 0, 0}, {1, 0, 0, 0}, {0, 0, 0, -1}, {0, 0, -1, 0}}]], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ \("gUU computed in "\[InvisibleSpace]0.`\[InvisibleSpace]" sec"\), SequenceForm[ "gUU computed in ", 0.0, " sec"], Editable->False]], "Print"], Cell[BoxData[ \("Computing d[coframe]..."\)], "Output", FontSize->16, FontSlant->"Italic", FontColor->RGBColor[1, 0, 1]], Cell[BoxData[ InterpretationBox[ \("d[coframe] computed in "\[InvisibleSpace]2.19999999999999573` \[InvisibleSpace]" sec"\), SequenceForm[ "d[coframe] computed in ", 2.1999999999999957, " sec"], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ \("Gamma computed in "\[InvisibleSpace]1.41666666666666429` \[InvisibleSpace]" sec"\), SequenceForm[ "Gamma computed in ", 1.4166666666666643, " sec"], Editable->False]], "Print"], Cell[BoxData[ \("Spin coefficients \[Tau], \[Kappa], \[Rho], \[Sigma], \[Gamma], \ \[Epsilon], \[Alpha], \[Beta], \[Nu], $\[Pi], \[Lambda], \[Mu] defined"\)], "Print"], Cell[BoxData[ \("Differential Operators \[GothicCapitalD][x_], \[CapitalDelta][x_], \ \[Delta][x_], \[Delta]B[x_] defined"\)], "Print"], Cell[BoxData[ InterpretationBox[ \("Riemann(dddd) computed in "\[InvisibleSpace]35.5333333333333367` \[InvisibleSpace]" sec"\), SequenceForm[ "Riemann(dddd) computed in ", 35.533333333333339, " sec"], Editable->False]], "Print"], Cell[BoxData[ \("RUddd not computed"\)], "Output", FontSize->16, FontSlant->"Italic", FontColor->RGBColor[1, 0, 1]], Cell[BoxData[ InterpretationBox[ \("Ricci computed in "\[InvisibleSpace]0.0166666666666657192` \[InvisibleSpace]" sec"\), SequenceForm[ "Ricci computed in ", 0.016666666666665719, " sec"], Editable->False]], "Print"], Cell[BoxData[ \("Weyl tensor not computed"\)], "Output", FontSize->16, FontSlant->"Italic", FontColor->RGBColor[1, 0, 1]], Cell[BoxData[ \("NP variables \[CapitalPhi][i,j], \[CapitalLambda] defined"\)], "Print"], Cell[BoxData[ \("Ricci Flat"\)], "Output", FontSize->20, FontWeight->"Bold", FontColor->RGBColor[1, 0, 1]], Cell[BoxData[ \("All tasks completed in 39.8833 seconds"\)], "Output"] }, Open ]], Cell["\<\ \tUse the input palette NPsymbolPLT.nb to enter the spin \ coefficients.\ \>", "Text", FontSize->16, FontColor->RGBColor[0, 0, 1]], Cell[CellGroupData[{ Cell[BoxData[ \(\[Kappa]\)], "Input"], Cell[BoxData[ \(\(-\(\(a\ \((r - I\ a\ x)\)\^2\ \((\(-I\)\ r + a\ x)\)\ \@\(1 - x\^2\)\ \((\(-2\)\ M\ r + 2\ I\ a\ M\ x - I\ a\ r\ x + a\^2\ x\^2) \)\)\/\(2\ \@2\ \((2\ M\ r - r\^2 - a\^2\ x\^2)\)\ \((r\^2 + a\^2\ x\^2)\)\^\(5/2\)\)\)\)\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(Bar[\[Kappa]]\)], "Input"], Cell[BoxData[ \(\(-\(\(a\ \((r + I\ a\ x)\)\^2\ \((I\ r + a\ x)\)\ \@\(1 - x\^2\)\ \((\(-2\)\ M\ r - 2\ I\ a\ M\ x + I\ a\ r\ x + a\^2\ x\^2) \)\)\/\(2\ \@2\ \((2\ M\ r - r\^2 - a\^2\ x\^2)\)\ \((r\^2 + a\^2\ x\^2)\)\^\(5/2\)\)\)\)\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(\(phi00 = \[GothicCapitalD][\[Rho]] - \[Delta]B[\[Kappa]] - \((\[Rho]^2 + \[Sigma]\ Bar[\[Sigma]] + \((\[Epsilon] + Bar[\[Epsilon]])\) \[Rho] - Bar[\[Kappa]] \[Tau] - \[Kappa] \((3 \[Alpha] + Bar[\[Beta]] - $\[Pi])\))\); \) // Timing\)], "Input"], Cell[BoxData[ \({3.34999999999999431`\ Second, Null}\)], "Output"] }, Open ]], Cell["\<\ \tThis takes long because the expressions for \[Rho] and \[Kappa] \ are being differentiated.\ \>", "Text", FontSize->16, FontColor->RGBColor[0, 0, 1]], Cell[CellGroupData[{ Cell[BoxData[ \(ByteCount[phi00]\)], "Input"], Cell[BoxData[ \(37720\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(FacSimp[phi00] // Timing\)], "Input"], Cell[BoxData[ \({1.06666666666666287`\ Second, 0}\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[TextData[{ "\t", StyleBox["Bar", FontFamily->"Courier"], " works as expected with exterior and partial differentiation:" }], "Text", CellFrame->True, ShowGroupOpenCloseIcon->True, FontSize->16, FontColor->RGBColor[0, 0, 1]], Cell[BoxData[ \(drho = FacSimp[d[\[Rho]]]; Imrho = FacSimp[\[Rho] - Bar[\[Rho]]]; \)], "Input"], Cell[CellGroupData[{ Cell[BoxData[ \(FacSimp[drho - Bar[drho] - d[Imrho]]\)], "Input"], Cell[BoxData[ \(0\)], "Output"] }, Open ]], Cell["\<\ i.e., the imaginary part of the 1-form d[\[Rho]] equals the \ exterior derivative of the imaginary part of the scalar \[Rho]. \ Similarly:\ \>", "Text", FontSize->16, FontColor->RGBColor[0, 0, 1]], Cell[BoxData[ \(\(rhor = D[\[Rho], r]; \)\)], "Input"], Cell[CellGroupData[{ Cell[BoxData[ \(FacSimp[rhor - Bar[rhor] - D[Imrho, r]]\)], "Input"], Cell[BoxData[ \(0\)], "Output"] }, Open ]] }, Closed]], Cell[CellGroupData[{ Cell[BoxData[ \(Rdddd[\([1, 2, 1, 2]\)]\)], "Input"], Cell[BoxData[ \(\(M\ r\ \((\(-3\)\ a\^2 + 4\ M\ r - 2\ r\^2 + a\^2\ x\^2)\)\ \((\(-r\^2\) + 3\ a\^2\ x\^2)\)\)\/\(\((r\^2 + a\^2\ x\^2)\)\^3\ \((\(-2\)\ M\ r + r\^2 + a\^2\ x\^2)\)\)\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(\[Omega]Ud[\([1, 3]\)]\)], "Input"], Cell[BoxData[ \(\(-\(\(a\^2\ x\ \@\(1 - x\^2\)\ e[1]\)\/\(2\ \@2\ \((2\ M\ r - r\^2 - a\^2\ x\^2)\)\ \@\(r\^2 + a\^2\ x\^2\)\)\)\) - \(a\ \((r + I\ a\ x)\)\^2\ \((I\ r + a\ x)\)\ \@\(1 - x\^2\)\ \((\(-2\)\ M\ r - 2\ I\ a\ M\ x + I\ a\ r\ x + a\^2\ x\^2)\)\ e[2]\)\/\(2\ \@2\ \((2\ M\ r - r\^2 - a\^2\ x\^2)\)\ \((r\^2 + a\^2\ x\^2)\)\^\(5/2\)\) - \(a\^2\ \((M - r)\)\ \((\(-1\) + x)\)\ \((1 + x)\)\ e[3]\)\/\(2\ \@2\ \@\(a\^2 - 2\ M\ r + r\^2\)\ \((2\ M\ r - r\^2 - a\^2\ x\^2)\)\ \@\(r\^2 + a\^2\ x\^2\)\) + \((\@\(r\^2 + a\^2\ x\^2\)\ \((\(-3\)\ a\^2\ M\ r + a\^2\ r\^2 + 8\ M\^2\ r\^2 - 8\ M\ r\^3 + 2\ r\^4 - I\ a\^3\ M\ x - I\ a\^3\ r\ x + 4\ I\ a\ M\ r\^2\ x - 2\ I\ a\ r\^3\ x - a\^2\ M\ r\ x\^2 + a\^2\ r\^2\ x\^2 + I\ a\^3\ M\ x\^3 - I\ a\^3\ r\ x\^3)\)\ e[4])\)/\(( 2\ \@2\ \@\(a\^2 - 2\ M\ r + r\^2\)\ \((r - I\ a\ x)\)\^2\ \((r + I\ a\ x)\)\ \((\(-2\)\ M\ r + r\^2 + a\^2\ x\^2)\))\)\)], "Output"] }, Open ]], Cell["\<\ \tOne can also define other NP quantities, say the spin connection \ 1-form \ \>", "Text", FontSize->16, FontColor->RGBColor[0, 0, 1]], Cell[CellGroupData[{ Cell[BoxData[ \(SpinOmega01 = FacSimp[\[Gamma]\ e[1] + \[Epsilon]\ e[2] - \[Alpha]\ e[3] - \[Beta]\ e[4]]\)], "Input"], Cell[BoxData[ \(\(M\ \@\(a\^2 - 2\ M\ r + r\^2\)\ \@\(r\^2 + a\^2\ x\^2\)\ e[1]\)\/\(2\ \@2\ \((r + I\ a\ x)\)\^2\ \((\(-2\)\ M\ r + r\^2 + a\^2\ x\^2)\)\) + \(M\ \@\(a\^2 - 2\ M\ r + r\^2\)\ \@\(r\^2 + a\^2\ x\^2\)\ e[2]\)\/\(2\ \@2\ \((r + I\ a\ x)\)\^2\ \((\(-2\)\ M\ r + r\^2 + a\^2\ x\^2)\)\) - \((\((r - I\ a\ x)\)\^2\ \((\(-I\)\ r + a\ x)\)\ \@\(1 - x\^2\)\ \((a\ M\ r - I\ a\^2\ M\ x + 2\ I\ M\ r\^2\ x - I\ r\^3\ x - 3\ a\ M\ r\ x\^2 + a\ r\^2\ x\^2 + I\ a\^2\ M\ x\^3 - I\ a\^2\ r\ x\^3 + a\^3\ x\^4)\)\ e[3])\)/ \((2\ \@2\ \((\(-1\) + x)\)\ \((1 + x)\)\ \((2\ M\ r - r\^2 - a\^2\ x\^2)\)\ \((r\^2 + a\^2\ x\^2)\)\^\(5/2\))\) + \((\((r - I\ a\ x)\)\^2\ \((\(-I\)\ r + a\ x)\)\ \@\(1 - x\^2\)\ \((a\ M\ r - I\ a\^2\ M\ x + 2\ I\ M\ r\^2\ x - I\ r\^3\ x - 3\ a\ M\ r\ x\^2 + a\ r\^2\ x\^2 + I\ a\^2\ M\ x\^3 - I\ a\^2\ r\ x\^3 + a\^3\ x\^4)\)\ e[4])\)/ \((2\ \@2\ \((\(-1\) + x)\)\ \((1 + x)\)\ \((2\ M\ r - r\^2 - a\^2\ x\^2)\)\ \((r\^2 + a\^2\ x\^2)\)\^\(5/2\))\)\)], "Output"] }, Open ]], Cell[BoxData[ \(d[a] =. ; d[M] =. ; varList = {}; \)], "Input"] }, Closed]] }, Closed]], Cell[CellGroupData[{ Cell[TextData[StyleBox[" 5.2 Implicit Frame Calculations", FontWeight->"Bold"]], "Subsection", ShowGroupOpenCloseIcon->True, FontSize->18, FontWeight->"Plain"], Cell[TextData[{ "\tFor some problems, giving the explicit form of the coframe (in terms of \ the coordinate differentials) is not the most efficient way of doing the \ calculations. This is particularly true if the exterior derivatives of the \ coframe satisfy simple expressions, not involving the coordinates, as in the \ Bianchi cosmological models, for which d[e", Cell[BoxData[ \(\^a\)]], "]= -", Cell[BoxData[ \(\(1\/2\) \(C\^a\)\_bc\)]], "e", Cell[BoxData[ \(\^b\)]], "\[Wedge]e", Cell[BoxData[ \(\^c\)]], " with ", Cell[BoxData[ \(\(C\^a\)\_bc\)]], "=constants. " }], "Text", FontSize->16], Cell[TextData[{ "\tTo do the calculations in such cases, ", StyleBox["RGtensors", FontFamily->"Courier"], " makes use of two global variables - ", StyleBox["deList", FontFamily->"Courier", FontWeight->"Bold"], " and ", StyleBox["dxRuleList", FontFamily->"Courier", FontWeight->"Bold"], " - which must be defined by the user. The first (", StyleBox["deList", FontFamily->"Courier", FontWeight->"Bold"], ") must be set equal to the expressions for ", StyleBox["d[e", FontFamily->"Courier"], Cell[BoxData[ \(\^a\)]], StyleBox["]", FontFamily->"Courier"], " (in terms of ", StyleBox["e[a]\[Wedge]e[b]", FontFamily->"Courier"], "), and the second (", StyleBox["dxRuleList", FontFamily->"Courier", FontWeight->"Bold"], ") must be set equal to a list of rules for replacing the coordinate \ differentials in terms of the ", StyleBox["e[a]", FontFamily->"Courier"], " basis. Actually, only the differentials of those coordinates that appear \ in the metric and in the expressions for ", StyleBox["d[e[a]]", FontFamily->"Courier"], " need to be included in ", StyleBox["dxRuleList", FontFamily->"Courier", FontWeight->"Bold"], ". Finally, one must call ", StyleBox["RGtensors", FontFamily->"Courier"], " with ", StyleBox["{e[]}", FontFamily->"Courier", FontWeight->"Bold"], " as third argument: ", StyleBox["RGtensors[gIN,xIN,{e[]}]", FontFamily->"Courier", FontWeight->"Bold"], ". The coframe thus remains undefined in terms of the coordinate \ differentials, but its exterior derivative is known. " }], "Text", FontSize->16], Cell[TextData[{ Cell[BoxData[ TagBox["", DisplayForm]]], Cell[BoxData[ TagBox["", DisplayForm]]], "\t", StyleBox["Warning", FontWeight->"Bold", FontSlant->"Italic"], ": When the differentials of only ", StyleBox["some", FontSlant->"Italic"], " of the coordinates are included in ", StyleBox["dxRuleList", FontFamily->"Courier", FontWeight->"Bold"], ", ", StyleBox["covD", FontFamily->"Courier"], " and ", StyleBox["covDiv", FontFamily->"Courier"], " behave as if differentiations with respect to the remaining coordinates \ give zero. " }], "Text", FontSize->16], Cell[CellGroupData[{ Cell[TextData[ " \[FilledSmallSquare] Example 9: Diagonal, Class-A, Bianchi Cosmological \ Models "], "Text", CellFrame->True, ShowGroupOpenCloseIcon->True, FontSize->16, FontWeight->"Bold", FontColor->RGBColor[0, 0, 1]], Cell[BoxData[ \(Clear$dx\)], "Input", FontColor->GrayLevel[0.333333]], Cell[BoxData[ \(\(xCoord = {x1, x2, x3, t}; \)\)], "Input", FontColor->GrayLevel[0.333333]], Cell[BoxData[ \(\(g = {{\(-A[t]\), 0, 0, 0}, {0, \(-B[t]\), 0, 0}, {0, 0, \(-C[t]\), 0}, {0, 0, 0, F[t]}}; \)\)], "Input", FontColor->GrayLevel[0.333333]], Cell[TextData[{ "\tThe components of ", StyleBox["g", FontFamily->"Courier"], " refer to an undefined coframe ", StyleBox["{e[1],e[2],....,e[Dim]}", FontFamily->"Courier"], "." }], "Text", FontSize->16, FontColor->RGBColor[0, 0, 1]], Cell[BoxData[ \(\(dxRuleList = {d[t] -> e[4]}; \)\)], "Input", FontColor->GrayLevel[0.333333]], Cell[CellGroupData[{ Cell[BoxData[ \(deList = {n[1] e[2]\[Wedge]e[3], n[2] e[3]\[Wedge]e[1], n[3] e[1]\[Wedge]e[2], 0}\)], "Input", FontColor->GrayLevel[0.333333]], Cell[BoxData[ \({n[1]\ e[2]\[Wedge]e[3], \(-n[2]\)\ e[1]\[Wedge]e[3], n[3]\ e[1]\[Wedge]e[2], 0}\)], "Output"] }, Open ]], Cell[TextData[{ "\tThe elements of ", StyleBox["deList", FontFamily->"Courier"], " are, by definition, ", StyleBox["{d[e[1]],d[e[2]],....,d[e[Dim]]}", FontFamily->"Courier"], "." }], "Text", FontSize->16, FontColor->RGBColor[0, 0, 1]], Cell[BoxData[ \( (*\(*\ d[n[_]]\) = 0; \ **) \)], "Input", FontColor->GrayLevel[0.333333]], Cell[TextData[{ "\t", StyleBox["d[n[_]]", FontFamily->"Courier"], " is left undefined intentionally to generate a warning message." }], "Text", FontSize->16, FontColor->RGBColor[0, 0, 1]], Cell[BoxData[ \(\(simpRules = {}; \)\)], "Input", FontColor->GrayLevel[0.333333]], Cell[CellGroupData[{ Cell[BoxData[ \(RGtensors[g, xCoord, {e[]}]\)], "Input", FontColor->GrayLevel[0.333333]], Cell[BoxData[ InterpretationBox[ RowBox[{\("gdd = "\), "\[InvisibleSpace]", TagBox[ RowBox[{"(", GridBox[{ {\(-A[t]\), "0", "0", "0"}, {"0", \(-B[t]\), "0", "0"}, {"0", "0", \(-C[t]\), "0"}, {"0", "0", "0", \(F[t]\)} }], ")"}], (MatrixForm[ #]&)]}], SequenceForm[ "gdd = ", MatrixForm[ {{ Times[ -1, A[ t]], 0, 0, 0}, {0, Times[ -1, B[ t]], 0, 0}, {0, 0, Times[ -1, C[ t]], 0}, {0, 0, 0, F[ t]}}]], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ RowBox[{\("LineElement = "\), "\[InvisibleSpace]", TagBox[ \(\( - A[t]\)\ e[1]\^2 - B[t]\ e[2]\^2 - C[t]\ e[3]\^2 + e[4]\^2\ F[t]\), (Short[ #, 32]&)]}], SequenceForm[ "LineElement = ", Short[ Plus[ Times[ -1, A[ t], Power[ e[ 1], 2]], Times[ -1, B[ t], Power[ e[ 2], 2]], Times[ -1, C[ t], Power[ e[ 3], 2]], Times[ Power[ e[ 4], 2], F[ t]]], 32]], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ RowBox[{\("gUU = "\), "\[InvisibleSpace]", TagBox[ RowBox[{"(", GridBox[{ {\(-\(1\/A[t]\)\), "0", "0", "0"}, {"0", \(-\(1\/B[t]\)\), "0", "0"}, {"0", "0", \(-\(1\/C[t]\)\), "0"}, {"0", "0", "0", \(1\/F[t]\)} }], ")"}], (MatrixForm[ #]&)]}], SequenceForm[ "gUU = ", MatrixForm[ {{ Times[ -1, Power[ A[ t], -1]], 0, 0, 0}, {0, Times[ -1, Power[ B[ t], -1]], 0, 0}, {0, 0, Times[ -1, Power[ C[ t], -1]], 0}, {0, 0, 0, Power[ F[ t], -1]}}]], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ \("gUU computed in "\[InvisibleSpace]0.0333333333333314385` \[InvisibleSpace]" sec"\), SequenceForm[ "gUU computed in ", 0.033333333333331439, " sec"], Editable->False]], "Print"], Cell[BoxData[ \("Warning: deList not closed! d[deList]="\)], "Output", FontSize->16, FontSlant->"Italic", FontColor->RGBColor[1, 0, 1]], Cell[BoxData[ \({d[n[1]]\[Wedge]e[2]\[Wedge]e[3], \(-\((d[n[2]]\[Wedge]e[1]\[Wedge]e[3])\)\), d[n[3]]\[Wedge]e[1]\[Wedge]e[2], 0}\)], "Print"], Cell[BoxData[ InterpretationBox[ \("Gamma computed in "\[InvisibleSpace]0.116666666666660034` \[InvisibleSpace]" sec"\), SequenceForm[ "Gamma computed in ", 0.11666666666666003, " sec"], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ \("Riemann(dddd) computed in "\[InvisibleSpace]0.0666666666666770879` \[InvisibleSpace]" sec"\), SequenceForm[ "Riemann(dddd) computed in ", 0.066666666666677088, " sec"], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ \("Riemann(Uddd) computed in "\[InvisibleSpace]0.133333333333325754` \[InvisibleSpace]" sec"\), SequenceForm[ "Riemann(Uddd) computed in ", 0.13333333333332575, " sec"], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ \("Ricci computed in "\[InvisibleSpace]0.0833333333333428072` \[InvisibleSpace]" sec"\), SequenceForm[ "Ricci computed in ", 0.083333333333342807, " sec"], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ \("Weyl computed in "\[InvisibleSpace]0.266666666666665719` \[InvisibleSpace]" sec"\), SequenceForm[ "Weyl computed in ", 0.26666666666666572, " sec"], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ \("Einstein computed in "\[InvisibleSpace]0.0999999999999943156` \[InvisibleSpace]" sec"\), SequenceForm[ "Einstein computed in ", 0.099999999999994316, " sec"], Editable->False]], "Print"], Cell[BoxData[ \("All tasks completed in 0.833333 seconds"\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(Clear$dx\)], "Input", FontColor->GrayLevel[0.333333]], Cell[BoxData[ \("deList and dxRuleList also cleared"\)], "Output", FontSize->16, FontSlant->"Italic", FontColor->RGBColor[1, 0, 1]] }, Open ]], Cell[TextData[{ "\t", StyleBox["Clear$dx", FontFamily->"Courier"], " clears ", StyleBox["deList", FontFamily->"Courier"], " and ", StyleBox["dxRuleList", FontFamily->"Courier"], " also, so they must be redefined \n", "\n", "\tChoosing n[i_] and A[t], B[t], C[t], F[t] appropriately, particular \ models can be selected: " }], "Text", FontSize->16, FontColor->RGBColor[0, 0, 1]], Cell[CellGroupData[{ Cell[BoxData[ RowBox[{ RowBox[{"(*", RowBox[{"*", " ", StyleBox["Taub", FontColor->RGBColor[0, 0, 1]]}], StyleBox[" ", FontColor->RGBColor[0, 0, 1]], "**)"}], RowBox[{\(dxRuleList = {d[t] -> e[4]}\), ";", RowBox[{"deList", "=", RowBox[{ \({n[1] e[2]\[Wedge]e[3], n[2] e[3]\[Wedge]e[1], n[3] e[1]\[Wedge]e[2], 0}\), StyleBox["/.", FontColor->RGBColor[1, 0, 0]], StyleBox[\(n[_] -> \(-1\)\), FontColor->RGBColor[1, 0, 0]]}]}], ";"}]}]], "Input", CellFrame->True, ShowGroupOpenCloseIcon->True, FontSize->12, FontColor->GrayLevel[0]], Cell[CellGroupData[{ Cell[BoxData[ \(RGtensors[ g /. {A[t] -> 1 + t^2, B[t] -> 1 + t^2, C[t] -> 4 \((1 + 2 a\ t - t^2)\)/\((1 + t^2)\), F[t] -> \((1 + t^2)\)/\((1 + 2 a\ t - t^2)\)}, xCoord, {e[]}]\)], "Input", FontColor->GrayLevel[0.333333]], Cell[BoxData[ InterpretationBox[ RowBox[{\("gdd = "\), "\[InvisibleSpace]", TagBox[ RowBox[{"(", GridBox[{ {\(\(-1\) - t\^2\), "0", "0", "0"}, {"0", \(\(-1\) - t\^2\), "0", "0"}, {"0", "0", \(-\(\(4\ \((1 + 2\ a\ t - t\^2)\)\)\/\(1 + t\^2\)\)\), "0"}, {"0", "0", "0", \(\(1 + t\^2\)\/\(1 + 2\ a\ t - t\^2\)\)} }], ")"}], (MatrixForm[ #]&)]}], SequenceForm[ "gdd = ", MatrixForm[ {{ Plus[ -1, Times[ -1, Power[ t, 2]]], 0, 0, 0}, {0, Plus[ -1, Times[ -1, Power[ t, 2]]], 0, 0}, {0, 0, Times[ -4, Plus[ 1, Times[ 2, a, t], Times[ -1, Power[ t, 2]]], Power[ Plus[ 1, Power[ t, 2]], -1]], 0}, {0, 0, 0, Times[ Power[ Plus[ 1, Times[ 2, a, t], Times[ -1, Power[ t, 2]]], -1], Plus[ 1, Power[ t, 2]]]}}]], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ RowBox[{\("LineElement = "\), "\[InvisibleSpace]", TagBox[ \(\((\(-1\) - t\^2)\)\ e[1]\^2 + \((\(-1\) - t\^2)\)\ e[2]\^2 - \(4\ \((1 + 2\ a\ t - t\^2)\)\ e[3]\^2\)\/\(1 + t\^2\) + \(\((1 + t\^2)\)\ e[4]\^2\)\/\(1 + 2\ a\ t - t\^2\)\), (Short[ #, 32]&)]}], SequenceForm[ "LineElement = ", Short[ Plus[ Times[ Plus[ -1, Times[ -1, Power[ t, 2]]], Power[ e[ 1], 2]], Times[ Plus[ -1, Times[ -1, Power[ t, 2]]], Power[ e[ 2], 2]], Times[ -4, Plus[ 1, Times[ 2, a, t], Times[ -1, Power[ t, 2]]], Power[ Plus[ 1, Power[ t, 2]], -1], Power[ e[ 3], 2]], Times[ Power[ Plus[ 1, Times[ 2, a, t], Times[ -1, Power[ t, 2]]], -1], Plus[ 1, Power[ t, 2]], Power[ e[ 4], 2]]], 32]], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ RowBox[{\("gUU = "\), "\[InvisibleSpace]", TagBox[ RowBox[{"(", GridBox[{ {\(-\(1\/\(1 + t\^2\)\)\), "0", "0", "0"}, {"0", \(-\(1\/\(1 + t\^2\)\)\), "0", "0"}, {"0", "0", \(-\(\(1 + t\^2\)\/\(4\ \((1 + 2\ a\ t - t\^2)\)\)\)\), "0"}, {"0", "0", "0", \(-\(\(\(-1\) - 2\ a\ t + t\^2\)\/\(1 + t\^2\)\)\)} }], ")"}], (MatrixForm[ #]&)]}], SequenceForm[ "gUU = ", MatrixForm[ {{ Times[ -1, Power[ Plus[ 1, Power[ t, 2]], -1]], 0, 0, 0}, {0, Times[ -1, Power[ Plus[ 1, Power[ t, 2]], -1]], 0, 0}, {0, 0, Times[ Rational[ -1, 4], Power[ Plus[ 1, Times[ 2, a, t], Times[ -1, Power[ t, 2]]], -1], Plus[ 1, Power[ t, 2]]], 0}, {0, 0, 0, Times[ -1, Power[ Plus[ 1, Power[ t, 2]], -1], Plus[ -1, Times[ -2, a, t], Power[ t, 2]]]}}]], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ \("gUU computed in "\[InvisibleSpace]0.0333333333333314385` \[InvisibleSpace]" sec"\), SequenceForm[ "gUU computed in ", 0.033333333333331439, " sec"], Editable->False]], "Print"], Cell[BoxData[ \("Warning: d[] on some symbols not defined!"\)], "Output", FontSize->16, FontSlant->"Italic", FontColor->RGBColor[1, 0, 1]], Cell[BoxData[ \({\(t\ d[a]\)\/\(1 + t\^2\), \(t\ \((1 + t\^2)\)\ d[a]\)\/\((\(-1\) - 2\ a\ t + t\^2)\)\^2}\)], "Print"], Cell[BoxData[ \("deList closure verified"\)], "Print"], Cell[BoxData[ InterpretationBox[ \("Gamma computed in "\[InvisibleSpace]0.133333333333339965` \[InvisibleSpace]" sec"\), SequenceForm[ "Gamma computed in ", 0.13333333333333997, " sec"], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ \("Riemann(dddd) computed in "\[InvisibleSpace]0.0499999999999971578` \[InvisibleSpace]" sec"\), SequenceForm[ "Riemann(dddd) computed in ", 0.049999999999997158, " sec"], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ \("Riemann(Uddd) computed in "\[InvisibleSpace]0.0666666666666770879` \[InvisibleSpace]" sec"\), SequenceForm[ "Riemann(Uddd) computed in ", 0.066666666666677088, " sec"], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ \("Ricci computed in "\[InvisibleSpace]0.`\[InvisibleSpace]" sec"\), SequenceForm[ "Ricci computed in ", 0.0, " sec"], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ \("Weyl computed in "\[InvisibleSpace]0.`\[InvisibleSpace]" sec"\), SequenceForm[ "Weyl computed in ", 0.0, " sec"], Editable->False]], "Print"], Cell[BoxData[ \("Ricci Flat"\)], "Output", FontSize->20, FontWeight->"Bold", FontColor->RGBColor[1, 0, 1]], Cell[BoxData[ \("All tasks completed in 0.4 seconds"\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(zeroQ[Bianchi[0]] // Timing\)], "Input", FontColor->GrayLevel[0.333333]], Cell[BoxData[ \({2.83333333333332859`\ Second, True}\)], "Output"] }, Open ]] }, Closed]], Cell[CellGroupData[{ Cell[BoxData[ \(Clear$dx\)], "Input", FontColor->GrayLevel[0.333333]], Cell[BoxData[ \("deList and dxRuleList also cleared"\)], "Output", FontSize->16, FontSlant->"Italic", FontColor->RGBColor[1, 0, 1]] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ RowBox[{ RowBox[{"(*", RowBox[{ RowBox[{"*", " ", StyleBox["Kasner", FontColor->RGBColor[0, 0, 1]]}], StyleBox[" ", FontColor->RGBColor[0, 0, 1]], StyleBox["-", FontColor->RGBColor[0, 0, 1]], StyleBox[" ", FontColor->RGBColor[0, 0, 1]], StyleBox[\(u\ is\ a\ constant\ parameter\), FontColor->RGBColor[0, 0, 1]]}], StyleBox[" ", FontColor->RGBColor[0, 0, 1]], "**)"}], RowBox[{\(d[u] = 0\), ";", \(dxRuleList = {d[t] -> e[4]}\), ";", "\n", RowBox[{"deList", "=", RowBox[{ \({n[1] e[2]\[Wedge]e[3], n[2] e[3]\[Wedge]e[1], n[3] e[1]\[Wedge]e[2], 0}\), StyleBox["/.", FontColor->RGBColor[1, 0, 0]], StyleBox[\(n[_] -> 0\), FontColor->RGBColor[1, 0, 0]]}]}], ";"}]}]], "Input", CellFrame->True, ShowGroupOpenCloseIcon->True, FontSize->12, FontColor->GrayLevel[0]], Cell[CellGroupData[{ Cell[BoxData[ \(RGtensors[ g /. {F[t] -> 1, A[t] -> t^\((\(-2\) u/\((1 + u + u^2)\))\), B[t] -> t^\((2 \((1 + u)\)/\((1 + u + u^2)\))\), C[t] -> t^\((2 u \((1 + u)\)/\((1 + u + u^2)\))\)}, xCoord, {e[]}] \)], "Input", FontColor->GrayLevel[0.333333]], Cell[BoxData[ InterpretationBox[ RowBox[{\("gdd = "\), "\[InvisibleSpace]", TagBox[ RowBox[{"(", GridBox[{ {\(-t\^\(-\(\(2\ u\)\/\(1 + u + u\^2\)\)\)\), "0", "0", "0"}, {"0", \(-t\^\(\(2\ \((1 + u)\)\)\/\(1 + u + u\^2\)\)\), "0", "0"}, {"0", "0", \(-t\^\(\(2\ u\ \((1 + u)\)\)\/\(1 + u + u\^2\)\)\), "0"}, {"0", "0", "0", "1"} }], ")"}], (MatrixForm[ #]&)]}], SequenceForm[ "gdd = ", MatrixForm[ {{ Times[ -1, Power[ t, Times[ -2, u, Power[ Plus[ 1, u, Power[ u, 2]], -1]]]], 0, 0, 0}, {0, Times[ -1, Power[ t, Times[ 2, Plus[ 1, u], Power[ Plus[ 1, u, Power[ u, 2]], -1]]]], 0, 0}, {0, 0, Times[ -1, Power[ t, Times[ 2, u, Plus[ 1, u], Power[ Plus[ 1, u, Power[ u, 2]], -1]]]], 0}, {0, 0, 0, 1}}]], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ RowBox[{\("LineElement = "\), "\[InvisibleSpace]", TagBox[ \(\( - t\^\(-\(\(2\ u\)\/\(1 + u + u\^2\)\)\)\)\ e[1]\^2 - t\^\(2\/\(1 + u + u\^2\) + \(2\ u\)\/\(1 + u + u\^2\)\)\ e[2]\^2 - t\^\(\(2\ u\ \((1 + u)\)\)\/\(1 + u + u\^2\)\)\ e[3]\^2 + e[4]\^2\), (Short[ #, 32]&)]}], SequenceForm[ "LineElement = ", Short[ Plus[ Times[ -1, Power[ t, Times[ -2, u, Power[ Plus[ 1, u, Power[ u, 2]], -1]]], Power[ e[ 1], 2]], Times[ -1, Power[ t, Plus[ Times[ 2, Power[ Plus[ 1, u, Power[ u, 2]], -1]], Times[ 2, u, Power[ Plus[ 1, u, Power[ u, 2]], -1]]]], Power[ e[ 2], 2]], Times[ -1, Power[ t, Times[ 2, u, Plus[ 1, u], Power[ Plus[ 1, u, Power[ u, 2]], -1]]], Power[ e[ 3], 2]], Power[ e[ 4], 2]], 32]], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ RowBox[{\("gUU = "\), "\[InvisibleSpace]", TagBox[ RowBox[{"(", GridBox[{ {\(-t\^\(\(2\ u\)\/\(1 + u + u\^2\)\)\), "0", "0", "0"}, {"0", \(- t\^\(\(-\(2\/\(1 + u + u\^2\)\)\) - \(2\ u\)\/\(1 + u + u\^2\)\)\), "0", "0"}, {"0", "0", \(-t\^\(-\(\(2\ u\ \((1 + u)\)\)\/\(1 + u + u\^2\)\)\)\), "0"}, {"0", "0", "0", "1"} }], ")"}], (MatrixForm[ #]&)]}], SequenceForm[ "gUU = ", MatrixForm[ {{ Times[ -1, Power[ t, Times[ 2, u, Power[ Plus[ 1, u, Power[ u, 2]], -1]]]], 0, 0, 0}, {0, Times[ -1, Power[ t, Plus[ Times[ -2, Power[ Plus[ 1, u, Power[ u, 2]], -1]], Times[ -2, u, Power[ Plus[ 1, u, Power[ u, 2]], -1]]]]], 0, 0}, {0, 0, Times[ -1, Power[ t, Times[ -2, u, Plus[ 1, u], Power[ Plus[ 1, u, Power[ u, 2]], -1]]]], 0}, {0, 0, 0, 1}}]], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ \("gUU computed in "\[InvisibleSpace]0.0333333333333314385` \[InvisibleSpace]" sec"\), SequenceForm[ "gUU computed in ", 0.033333333333331439, " sec"], Editable->False]], "Print"], Cell[BoxData[ \("deList closure verified"\)], "Print"], Cell[BoxData[ InterpretationBox[ \("Gamma computed in "\[InvisibleSpace]0.0999999999999943156` \[InvisibleSpace]" sec"\), SequenceForm[ "Gamma computed in ", 0.099999999999994316, " sec"], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ \("Riemann(dddd) computed in "\[InvisibleSpace]0.0500000000000113686` \[InvisibleSpace]" sec"\), SequenceForm[ "Riemann(dddd) computed in ", 0.050000000000011369, " sec"], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ \("Riemann(Uddd) computed in "\[InvisibleSpace]0.0499999999999971578` \[InvisibleSpace]" sec"\), SequenceForm[ "Riemann(Uddd) computed in ", 0.049999999999997158, " sec"], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ \("Ricci computed in "\[InvisibleSpace]0.`\[InvisibleSpace]" sec"\), SequenceForm[ "Ricci computed in ", 0.0, " sec"], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ \("Weyl computed in "\[InvisibleSpace]0.`\[InvisibleSpace]" sec"\), SequenceForm[ "Weyl computed in ", 0.0, " sec"], Editable->False]], "Print"], Cell[BoxData[ \("Ricci Flat"\)], "Output", FontSize->20, FontWeight->"Bold", FontColor->RGBColor[1, 0, 1]], Cell[BoxData[ \("All tasks completed in 0.366667 seconds"\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(zeroQ[Bianchi[1]]\)], "Input", FontColor->GrayLevel[0.333333]], Cell[BoxData[ \(True\)], "Output"] }, Open ]] }, Closed]], Cell[CellGroupData[{ Cell[BoxData[ \(Clear$dx; Clear[n, g]; d[u] =. ; \)], "Input", FontColor->GrayLevel[0.333333]], Cell[BoxData[ \("deList and dxRuleList also cleared"\)], "Output", FontSize->16, FontSlant->"Italic", FontColor->RGBColor[1, 0, 1]] }, Open ]] }, Closed]], Cell["\tSee also Example 12 in Section 6.", "Text", FontSize->16] }, Closed]] }, Closed]], Cell["", "Text", FontSize->10, FontColor->RGBColor[0, 0, 1]], Cell[CellGroupData[{ Cell[TextData[StyleBox[" 6 Approximations - Series Expansions", FontWeight->"Bold"]], "Section", ShowGroupOpenCloseIcon->True, FontSize->24, FontColor->RGBColor[0, 0, 1]], Cell[TextData[{ Cell[BoxData[ TagBox["", DisplayForm]]], Cell[BoxData[ TagBox["", DisplayForm]]], "\tThe built-in ", StyleBox["Mathematica", FontSlant->"Italic"], " function ", StyleBox["Series[f,{x,x0,n}]", FontFamily->"Courier"], ", which gives the series expansion of the function ", StyleBox["f", FontFamily->"Courier"], " around ", StyleBox["x0", FontFamily->"Courier"], " up to order ", StyleBox["n", FontFamily->"Courier"], ", can be applied to lists, and thus to tensors. ", StyleBox["RGtensors", FontFamily->"Courier"], " and the other functions defined in this package (version 2.3 or later) \ can handle ", StyleBox["SeriesData", FontFamily->"Courier"], " objects as input -- ", StyleBox["gIN", FontFamily->"Courier"], " (metric) and ", StyleBox["eIN", FontFamily->"Courier"], " (coframe) -- and thus allow approximate calculations (perturbations of a \ given solution, asymptotic expansion of the metric or the coframe, etc.).\n\n\ ", Cell[BoxData[ TagBox["", DisplayForm]]], Cell[BoxData[ TagBox["", DisplayForm]]], "\tThere are several points, however, that must be kept in mind in doing \ calculations with series: " }], "Text", FontSize->16], Cell[CellGroupData[{ Cell[TextData[{ " 6.1 Be aware of how your version of ", StyleBox["Mathematica", FontSlant->"Italic"], " handles series" }], "Subsection", ShowGroupOpenCloseIcon->True, FontSize->16], Cell[TextData[{ Cell[BoxData[ TagBox["", DisplayForm]]], Cell[BoxData[ TagBox["", DisplayForm]]], "\t There are significant differences in the way different versions of ", StyleBox["Mathematica", FontSlant->"Italic"], " handle series. Under ", StyleBox["Mathematica", FontSlant->"Italic"], " 3.0, algebraically equivalent expressions do not have identical series \ approximations at infinity (this problem does not arise in version 4.0 or \ higher):" }], "Text", FontSize->16], Cell[CellGroupData[{ Cell[BoxData[ \(\(Series[1 - 2 m/r + a^2/r^2, {r, #, 2}]&\)/@{0, Infinity}\)], "Input"], Cell[BoxData[ RowBox[{"{", RowBox[{ InterpretationBox[ RowBox[{\(a\^2\/r\^2\), "-", \(\(2\ m\)\/r\), "+", "1", "+", InterpretationBox[\(O[r]\^3\), SeriesData[ r, 0, {}, -2, 3, 1]]}], SeriesData[ r, 0, { Power[ a, 2], Times[ -2, m], 1}, -2, 3, 1]], ",", InterpretationBox[ RowBox[{ "1", "-", \(\(2\ m\)\/r\), "+", \(a\^2\ \((1\/r)\)\^2\), "+", InterpretationBox[\(O[1\/r]\^3\), SeriesData[ r, DirectedInfinity[ 1], {}, 0, 3, 1]]}], SeriesData[ r, DirectedInfinity[ 1], {1, Times[ -2, m], Power[ a, 2]}, 0, 3, 1]]}], "}"}]], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(\(Series[\((r - 2 m + a^2/r)\)/r, {r, #, 2}]&\)/@{0, Infinity}\)], "Input"], Cell[BoxData[ RowBox[{"{", RowBox[{ InterpretationBox[ RowBox[{\(a\^2\/r\^2\), "-", \(\(2\ m\)\/r\), "+", "1", "+", InterpretationBox[\(O[r]\^3\), SeriesData[ r, 0, {}, -2, 3, 1]]}], SeriesData[ r, 0, { Power[ a, 2], Times[ -2, m], 1}, -2, 3, 1]], ",", InterpretationBox[ RowBox[{"1", "-", \(\(2\ m\)\/r\), "+", InterpretationBox[\(O[1\/r]\^2\), SeriesData[ r, DirectedInfinity[ 1], {}, 0, 2, 1]]}], SeriesData[ r, DirectedInfinity[ 1], {1, Times[ -2, m]}, 0, 2, 1]]}], "}"}]], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(\(Series[\((r^2 - 2 m\ r + a^2)\)/r^2, {r, #, 2}]&\)/@{0, Infinity}\)], "Input"], Cell[BoxData[ RowBox[{"{", RowBox[{ InterpretationBox[ RowBox[{\(a\^2\/r\^2\), "-", \(\(2\ m\)\/r\), "+", "1", "+", InterpretationBox[\(O[r]\^3\), SeriesData[ r, 0, {}, -2, 3, 1]]}], SeriesData[ r, 0, { Power[ a, 2], Times[ -2, m], 1}, -2, 3, 1]], ",", InterpretationBox[ RowBox[{"1", "+", InterpretationBox[\(O[1\/r]\^1\), SeriesData[ r, DirectedInfinity[ 1], {}, 0, 1, 1]]}], SeriesData[ r, DirectedInfinity[ 1], {1}, 0, 1, 1]]}], "}"}]], "Output"] }, Open ]], Cell[TextData[{ Cell[BoxData[ TagBox["", DisplayForm]]], Cell[BoxData[ TagBox["", DisplayForm]]], "\tAs a consequence, with ", StyleBox["Mathematica", FontSlant->"Italic"], " 3.0, calculations with such expansions may not have the correct accuracy \ -- see Example 12 below. " }], "Text", FontSize->16], Cell[TextData[{ Cell[BoxData[ TagBox["", DisplayForm]]], Cell[BoxData[ TagBox["", DisplayForm]]], "\tRGTC corrects some of the notorious bugs of SeriesData objects in ", StyleBox["Mathematica", FontSlant->"Italic"], " 3 and 4. For example, ", StyleBox["before evaluating RGTC", FontSlant->"Italic"], ", multiplication of a series by zero gives a non-zero result" }], "Text", FontSize->16], Cell[CellGroupData[{ Cell[BoxData[ \(0*Series[1 + a\ x + b\ x^2, {x, 0, 2}]\)], "Input"], Cell[BoxData[ InterpretationBox[\(O[x]\^3\), SeriesData[ x, 0, {}, 3, 3, 1]]], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[TextData[{ Cell[BoxData[ TagBox["", DisplayForm]]], Cell[BoxData[ TagBox["", DisplayForm]]], "\t", StyleBox["Mathematica", FontSlant->"Italic"], " 5 and 6 corrects this and other problems, but is considerably slower in \ handling series expressions. In some cases, it can be more than 10 ", StyleBox["times", FontSlant->"Italic"], " slower compared to ", StyleBox["Mathematica", FontSlant->"Italic"], " 4 (substitution of series expansions in complicated expressions - see \ alternate ways to verify the Tomimatsu-Sato solutions, TS123AltEV.nb, in ", ButtonBox["AdditionalExamples.html", ButtonData:>{ URL[ "http://www.inp.demokritos.gr/~sbonano/RGTC/AdditionalExamples.html"], None}, ButtonStyle->"Hyperlink"], ".). This is probably due to the fact that ", StyleBox["Mathematica", FontSlant->"Italic"], " 5 or 6 gives results to one order higher than ", StyleBox["Mathematica", FontSlant->"Italic"], " 4. For the examples in the next two subsections, the results (", StyleBox["Rdd", FontFamily->"Courier"], ", ", StyleBox["LineElement", FontFamily->"Courier"], ") are identical between versions 3 and 4, and between 5 and 6. However, \ the version 5 results are given to one order higher (at least for some tensor \ components) than those of version 4. The times taken to complete the \ calculations also differ significantly between versions:" }], "Text", ShowGroupOpenCloseIcon->True, FontSize->16], Cell[BoxData[ \(\(Off[General::"\"]; \)\)], "Input", FontSize->1, FontColor->GrayLevel[1]], Cell[BoxData[ RowBox[{GridBox[{ {"MathematicaVersion", "3", "4", "5", "6"}, {\(Time \((sec)\)\), "13", "22", "26", "34"} }, RowLines->True, ColumnLines->True], StyleBox[";", FontColor->GrayLevel[1]], StyleBox[ RowBox[{ StyleBox["On", FontColor->GrayLevel[1]], "[", RowBox[{ StyleBox["General", FontColor->GrayLevel[1]], "::", StyleBox[\("\"\), FontColor->GrayLevel[1]]}], "]"}], FontColor->GrayLevel[1]], StyleBox[";", FontColor->GrayLevel[1]]}]], "Input"] }, Open ]] }, Closed]], Cell[CellGroupData[{ Cell[" 6.2 Expanding the coframe with respect to a coordinate", "Subsection", ShowGroupOpenCloseIcon->True, FontSize->16], Cell[TextData[{ Cell[BoxData[ TagBox["", DisplayForm]]], Cell[BoxData[ TagBox["", DisplayForm]]], "\tWhen the series expansion of the metric or the coframe is with respect \ to one of the coordinates, the notation ", StyleBox["d[x]", FontFamily->"Courier"], " for the differential of that coordinate cannot be used because ", StyleBox["Series", FontFamily->"Courier"], " will consider ", StyleBox["d[x]", FontFamily->"Courier"], " a function of ", StyleBox["x", FontFamily->"Courier"], " and formally expand it (using ", StyleBox["d[0]=0", FontFamily->"Courier"], "):" }], "Text", ShowGroupOpenCloseIcon->True, FontSize->16], Cell[CellGroupData[{ Cell[BoxData[ \(Series[d[x]/\((1 - x)\), {x, 0, 2}]\)], "Input"], Cell[BoxData[ InterpretationBox[ RowBox[{ RowBox[{ RowBox[{ SuperscriptBox["d", "\[Prime]", MultilineFunction->None], "[", "0", "]"}], " ", "x"}], "+", RowBox[{ RowBox[{"(", RowBox[{ RowBox[{ SuperscriptBox["d", "\[Prime]", MultilineFunction->None], "[", "0", "]"}], "+", FractionBox[ RowBox[{ SuperscriptBox["d", "\[DoublePrime]", MultilineFunction->None], "[", "0", "]"}], "2"]}], ")"}], " ", \(x\^2\)}], "+", InterpretationBox[\(O[x]\^3\), SeriesData[ x, 0, {}, 1, 3, 1]]}], SeriesData[ x, 0, { Derivative[ 1][ d][ 0], Plus[ Derivative[ 1][ d][ 0], Times[ Rational[ 1, 2], Derivative[ 2][ d][ 0]]]}, 1, 3, 1]]], "Output"] }, Open ]], Cell[TextData[{ " \tWhen only the metric is expanded, ", StyleBox["RGtensors", FontFamily->"Courier"], " will automatically introduce the notation ", StyleBox["dx", FontFamily->"Courier"], " for ", StyleBox["d[x]", FontFamily->"Courier"], ". The symbol ", StyleBox["dx", FontFamily->"Courier"], " will then be treated correctly as a closed 1-form. The user can still \ input ", StyleBox["d[x]", FontFamily->"Courier"], ".\n\tIf the series expansion is with respect to a parameter, that \ parameter is treated as a constant." }], "Text", FontSize->16], Cell[CellGroupData[{ Cell[TextData[ " \[FilledSmallSquare] Example 10: Asymptotic expansion of a \"perturbed \ Schwarzschild\" metric"], "Text", CellFrame->True, ShowGroupOpenCloseIcon->True, FontSize->16, FontWeight->"Bold", FontColor->RGBColor[0, 0, 1]], Cell[BoxData[ \(xCoord = {t, r, \[Theta], \[CurlyPhi]}; simpRules = TrigRules; \)], "Input", FontColor->GrayLevel[0.333333]], Cell[BoxData[ \(A[r] = 1 - 2 m/r + a^2/r^2; B[r] = Exp[2 b/r]; \)], "Input", FontColor->GrayLevel[0.333333]], Cell["\<\ \ta and b are the two constant parameters which vanish for the \ Schwarzschild solution. Define series expansion of the metric:\ \>", "Text", FontSize->16, FontColor->RGBColor[0, 0, 1]], Cell[BoxData[ \(gSER[n_] := FacSimp[Series[ DiagonalMatrix[{A[r], \(-1\)/A[r], \(-r^2\)/B[r], \(-r^2\) B[r] Sin[\[Theta]]^2}], {r, Infinity, n}]]\)], "Input",\ FontColor->GrayLevel[0.333333]], Cell[CellGroupData[{ Cell[BoxData[ \(gSER[3]\)], "Input", FontColor->GrayLevel[0.333333]], Cell[BoxData[ RowBox[{"{", RowBox[{ RowBox[{"{", RowBox[{ InterpretationBox[ RowBox[{ "1", "-", \(\(2\ m\)\/r\), "+", \(a\^2\ \((1\/r)\)\^2\), "+", InterpretationBox[\(O[1\/r]\^4\), SeriesData[ r, DirectedInfinity[ 1], {}, 0, 4, 1]]}], SeriesData[ r, DirectedInfinity[ 1], {1, Times[ -2, m], Power[ a, 2]}, 0, 4, 1]], ",", "0", ",", "0", ",", "0"}], "}"}], ",", RowBox[{"{", RowBox[{"0", ",", InterpretationBox[ RowBox[{ \(-1\), "-", \(\(2\ m\)\/r\), "+", \(\((a - 2\ m)\)\ \((a + 2\ m)\)\ \((1\/r)\)\^2\), "+", \(4\ m\ \((a\^2 - 2\ m\^2)\)\ \((1\/r)\)\^3\), "+", InterpretationBox[\(O[1\/r]\^4\), SeriesData[ r, DirectedInfinity[ 1], {}, 0, 4, 1]]}], SeriesData[ r, DirectedInfinity[ 1], {-1, Times[ -2, m], Times[ Plus[ a, Times[ -2, m]], Plus[ a, Times[ 2, m]]], Times[ 4, m, Plus[ Power[ a, 2], Times[ -2, Power[ m, 2]]]]}, 0, 4, 1]], ",", "0", ",", "0"}], "}"}], ",", RowBox[{"{", RowBox[{"0", ",", "0", ",", InterpretationBox[ RowBox[{ \(-\(1\/\((1\/r)\)\^2\)\), "+", \(\(2\ b\)\/\(1\/r\)\), "-", \(2\ b\^2\), "+", \(\(4\ b\^3\)\/\(3\ r\)\), "+", InterpretationBox[\(O[1\/r]\^2\), SeriesData[ r, DirectedInfinity[ 1], {}, -2, 2, 1]]}], SeriesData[ r, DirectedInfinity[ 1], {-1, Times[ 2, b], Times[ -2, Power[ b, 2]], Times[ Rational[ 4, 3], Power[ b, 3]]}, -2, 2, 1]], ",", "0"}], "}"}], ",", RowBox[{"{", RowBox[{"0", ",", "0", ",", "0", ",", InterpretationBox[ RowBox[{ \(-\(Sin[\[Theta]]\^2\/\((1\/r)\)\^2\)\), "-", \(\(2\ \((b\ Sin[\[Theta]]\^2)\)\)\/\(1\/r\)\), "-", \(2\ \((b\^2\ Sin[\[Theta]]\^2)\)\), "-", \(\(4\ \((b\^3\ Sin[\[Theta]]\^2)\)\)\/\(3\ r\)\), "+", InterpretationBox[\(O[1\/r]\^2\), SeriesData[ r, DirectedInfinity[ 1], {}, -2, 2, 1]]}], SeriesData[ r, DirectedInfinity[ 1], { Times[ -1, Power[ Sin[ \[Theta]], 2]], Times[ -2, b, Power[ Sin[ \[Theta]], 2]], Times[ -2, Power[ b, 2], Power[ Sin[ \[Theta]], 2]], Times[ Rational[ -4, 3], Power[ b, 3], Power[ Sin[ \[Theta]], 2]]}, -2, 2, 1]]}], "}"}]}], "}"}]], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ RowBox[{\(RGtensors[gSER[4], xCoord]\), RowBox[{"(*", RowBox[{ RowBox[{"*", StyleBox[" ", FontColor->RGBColor[0, 0, 1]], StyleBox["In", FontColor->RGBColor[0, 0, 1]], StyleBox[" ", FontColor->RGBColor[0, 0, 1]], StyleBox["LineElement", FontColor->RGBColor[0, 0, 1]]}], StyleBox[",", FontColor->RGBColor[0, 0, 1]], StyleBox[" ", FontColor->RGBColor[0, 0, 1]], StyleBox[\(note\ the\ use\ of\ dr\ in\ place\ of\ d[r]\), FontColor->RGBColor[0, 0, 1]]}], " ", "**)"}]}]], "Input", FontColor->GrayLevel[0.333333]], Cell[BoxData[ InterpretationBox[ RowBox[{\("gdd = "\), "\[InvisibleSpace]", TagBox[ RowBox[{"(", GridBox[{ { InterpretationBox[ RowBox[{ "1", "-", \(\(2\ m\)\/r\), "+", \(a\^2\ \((1\/r)\)\^2\), "+", InterpretationBox[\(O[1\/r]\^5\), SeriesData[ r, DirectedInfinity[ 1], {}, 0, 5, 1]]}], SeriesData[ r, DirectedInfinity[ 1], {1, Times[ -2, m], Power[ a, 2]}, 0, 5, 1]], "0", "0", "0"}, {"0", InterpretationBox[ RowBox[{ \(-1\), "-", \(\(2\ m\)\/r\), "+", \(\((a - 2\ m)\)\ \((a + 2\ m)\)\ \((1\/r)\)\^2\), "+", \(4\ m\ \((a\^2 - 2\ m\^2)\)\ \((1\/r)\)\^3\), "-", \(\((a\^2 - 2\ a\ m - 4\ m\^2)\)\ \((a\^2 + 2\ a\ m - 4\ m\^2)\)\ \((1\/r)\)\^4\), "+", InterpretationBox[\(O[1\/r]\^5\), SeriesData[ r, DirectedInfinity[ 1], {}, 0, 5, 1]]}], SeriesData[ r, DirectedInfinity[ 1], {-1, Times[ -2, m], Times[ Plus[ a, Times[ -2, m]], Plus[ a, Times[ 2, m]]], Times[ 4, m, Plus[ Power[ a, 2], Times[ -2, Power[ m, 2]]]], Times[ -1, Plus[ Power[ a, 2], Times[ -2, a, m], Times[ -4, Power[ m, 2]]], Plus[ Power[ a, 2], Times[ 2, a, m], Times[ -4, Power[ m, 2]]]]}, 0, 5, 1]], "0", "0"}, {"0", "0", InterpretationBox[ RowBox[{ \(-\(1\/\((1\/r)\)\^2\)\), "+", \(\(2\ b\)\/\(1\/r\)\), "-", \(2\ b\^2\), "+", \(\(4\ b\^3\)\/\(3\ r\)\), "-", \(2\/3\ b\^4\ \((1\/r)\)\^2\), "+", InterpretationBox[\(O[1\/r]\^3\), SeriesData[ r, DirectedInfinity[ 1], {}, -2, 3, 1]]}], SeriesData[ r, DirectedInfinity[ 1], {-1, Times[ 2, b], Times[ -2, Power[ b, 2]], Times[ Rational[ 4, 3], Power[ b, 3]], Times[ Rational[ -2, 3], Power[ b, 4]]}, -2, 3, 1]], "0"}, {"0", "0", "0", InterpretationBox[ RowBox[{ \(-\(Sin[\[Theta]]\^2\/\((1\/r)\)\^2\)\), "-", \(\(2\ \((b\ Sin[\[Theta]]\^2)\)\)\/\(1\/r\)\), "-", \(2\ \((b\^2\ Sin[\[Theta]]\^2)\)\), "-", \(\(4\ \((b\^3\ Sin[\[Theta]]\^2)\)\)\/\(3\ r\)\), "-", \(2\/3\ \((b\^4\ Sin[\[Theta]]\^2)\)\ \((1\/r)\)\^2\), "+", InterpretationBox[\(O[1\/r]\^3\), SeriesData[ r, DirectedInfinity[ 1], {}, -2, 3, 1]]}], SeriesData[ r, DirectedInfinity[ 1], { Times[ -1, Power[ Sin[ \[Theta]], 2]], Times[ -2, b, Power[ Sin[ \[Theta]], 2]], Times[ -2, Power[ b, 2], Power[ Sin[ \[Theta]], 2]], Times[ Rational[ -4, 3], Power[ b, 3], Power[ Sin[ \[Theta]], 2]], Times[ Rational[ -2, 3], Power[ b, 4], Power[ Sin[ \[Theta]], 2]]}, -2, 3, 1]]} }], ")"}], (MatrixForm[ #]&)]}], SequenceForm[ "gdd = ", MatrixForm[ {{ SeriesData[ r, DirectedInfinity[ 1], {1, Times[ -2, m], Power[ a, 2]}, 0, 5, 1], 0, 0, 0}, {0, SeriesData[ r, DirectedInfinity[ 1], {-1, Times[ -2, m], Times[ Plus[ a, Times[ -2, m]], Plus[ a, Times[ 2, m]]], Times[ 4, m, Plus[ Power[ a, 2], Times[ -2, Power[ m, 2]]]], Times[ -1, Plus[ Power[ a, 2], Times[ -2, a, m], Times[ -4, Power[ m, 2]]], Plus[ Power[ a, 2], Times[ 2, a, m], Times[ -4, Power[ m, 2]]]]}, 0, 5, 1], 0, 0}, {0, 0, SeriesData[ r, DirectedInfinity[ 1], {-1, Times[ 2, b], Times[ -2, Power[ b, 2]], Times[ Rational[ 4, 3], Power[ b, 3]], Times[ Rational[ -2, 3], Power[ b, 4]]}, -2, 3, 1], 0}, {0, 0, 0, SeriesData[ r, DirectedInfinity[ 1], { Times[ -1, Power[ Sin[ \[Theta]], 2]], Times[ -2, b, Power[ Sin[ \[Theta]], 2]], Times[ -2, Power[ b, 2], Power[ Sin[ \[Theta]], 2]], Times[ Rational[ -4, 3], Power[ b, 3], Power[ Sin[ \[Theta]], 2]], Times[ Rational[ -2, 3], Power[ b, 4], Power[ Sin[ \[Theta]], 2]]}, -2, 3, 1]}}]], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ RowBox[{\("LineElement = "\), "\[InvisibleSpace]", TagBox[ InterpretationBox[ RowBox[{ \(\(\( - d[\[Theta]]\^2\) - d[\[CurlyPhi]]\^2\ Sin[\[Theta]]\^2\)\/\((1\/r)\)\^2\), "+", \(\(2\ b\ d[\[Theta]]\^2 - 2\ b\ d[\[CurlyPhi]]\^2\ Sin[\[Theta]]\^2\)\/\(1\/r\)\), "+", \((\(-dr\^2\) + d[t]\^2 - 2\ b\^2\ d[\[Theta]]\^2 - 2\ b\^2\ d[\[CurlyPhi]]\^2\ Sin[\[Theta]]\^2)\), "+", \(\(\(-2\)\ dr\^2\ m - 2\ m\ d[t]\^2 + 4\/3\ b\^3\ d[\[Theta]]\^2 - 4\/3\ b\^3\ d[\[CurlyPhi]]\^2\ Sin[\[Theta]]\^2\)\/r\), "+", \(\(( dr\^2\ \((a - 2\ m)\)\ \((a + 2\ m)\) + a\^2\ d[t]\^2 - 2\/3\ b\^4\ d[\[Theta]]\^2 - 2\/3\ b\^4\ d[\[CurlyPhi]]\^2\ Sin[\[Theta]]\^2)\)\ \((1\/r)\)\^2\), "+", InterpretationBox[\(O[1\/r]\^3\), SeriesData[ r, DirectedInfinity[ 1], {}, -2, 3, 1]]}], SeriesData[ r, DirectedInfinity[ 1], { Plus[ Times[ -1, Power[ d[ \[Theta]], 2]], Times[ -1, Power[ d[ \[CurlyPhi]], 2], Power[ Sin[ \[Theta]], 2]]], Plus[ Times[ 2, b, Power[ d[ \[Theta]], 2]], Times[ -2, b, Power[ d[ \[CurlyPhi]], 2], Power[ Sin[ \[Theta]], 2]]], Plus[ Times[ -1, Power[ dr, 2]], Power[ d[ t], 2], Times[ -2, Power[ b, 2], Power[ d[ \[Theta]], 2]], Times[ -2, Power[ b, 2], Power[ d[ \[CurlyPhi]], 2], Power[ Sin[ \[Theta]], 2]]], Plus[ Times[ -2, Power[ dr, 2], m], Times[ -2, m, Power[ d[ t], 2]], Times[ Rational[ 4, 3], Power[ b, 3], Power[ d[ \[Theta]], 2]], Times[ Rational[ -4, 3], Power[ b, 3], Power[ d[ \[CurlyPhi]], 2], Power[ Sin[ \[Theta]], 2]]], Plus[ Times[ Power[ dr, 2], Plus[ a, Times[ -2, m]], Plus[ a, Times[ 2, m]]], Times[ Power[ a, 2], Power[ d[ t], 2]], Times[ Rational[ -2, 3], Power[ b, 4], Power[ d[ \[Theta]], 2]], Times[ Rational[ -2, 3], Power[ b, 4], Power[ d[ \[CurlyPhi]], 2], Power[ Sin[ \[Theta]], 2]]]}, -2, 3, 1]], (Short[ #, 32]&)]}], SequenceForm[ "LineElement = ", Short[ SeriesData[ r, DirectedInfinity[ 1], { Plus[ Times[ -1, Power[ d[ \[Theta]], 2]], Times[ -1, Power[ d[ \[CurlyPhi]], 2], Power[ Sin[ \[Theta]], 2]]], Plus[ Times[ 2, b, Power[ d[ \[Theta]], 2]], Times[ -2, b, Power[ d[ \[CurlyPhi]], 2], Power[ Sin[ \[Theta]], 2]]], Plus[ Times[ -1, Power[ dr, 2]], Power[ d[ t], 2], Times[ -2, Power[ b, 2], Power[ d[ \[Theta]], 2]], Times[ -2, Power[ b, 2], Power[ d[ \[CurlyPhi]], 2], Power[ Sin[ \[Theta]], 2]]], Plus[ Times[ -2, Power[ dr, 2], m], Times[ -2, m, Power[ d[ t], 2]], Times[ Rational[ 4, 3], Power[ b, 3], Power[ d[ \[Theta]], 2]], Times[ Rational[ -4, 3], Power[ b, 3], Power[ d[ \[CurlyPhi]], 2], Power[ Sin[ \[Theta]], 2]]], Plus[ Times[ Power[ dr, 2], Plus[ a, Times[ -2, m]], Plus[ a, Times[ 2, m]]], Times[ Power[ a, 2], Power[ d[ t], 2]], Times[ Rational[ -2, 3], Power[ b, 4], Power[ d[ \[Theta]], 2]], Times[ Rational[ -2, 3], Power[ b, 4], Power[ d[ \[CurlyPhi]], 2], Power[ Sin[ \[Theta]], 2]]]}, -2, 3, 1], 32]], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ RowBox[{\("gUU = "\), "\[InvisibleSpace]", TagBox[ RowBox[{"(", GridBox[{ { InterpretationBox[ RowBox[{ "1", "+", \(\(2\ m\)\/r\), "-", \(\((a - 2\ m)\)\ \((a + 2\ m)\)\ \((1\/r)\)\^2\), "+", \(4\ m\ \((\(-a\^2\) + 2\ m\^2)\)\ \((1\/r)\)\^3\), "+", \(\((a\^2 - 2\ a\ m - 4\ m\^2)\)\ \((a\^2 + 2\ a\ m - 4\ m\^2)\)\ \((1\/r)\)\^4\), "+", InterpretationBox[\(O[1\/r]\^5\), SeriesData[ r, DirectedInfinity[ 1], {}, 0, 5, 1]]}], SeriesData[ r, DirectedInfinity[ 1], {1, Times[ 2, m], Times[ -1, Plus[ a, Times[ -2, m]], Plus[ a, Times[ 2, m]]], Times[ 4, m, Plus[ Times[ -1, Power[ a, 2]], Times[ 2, Power[ m, 2]]]], Times[ Plus[ Power[ a, 2], Times[ -2, a, m], Times[ -4, Power[ m, 2]]], Plus[ Power[ a, 2], Times[ 2, a, m], Times[ -4, Power[ m, 2]]]]}, 0, 5, 1]], "0", "0", "0"}, {"0", InterpretationBox[ RowBox[{ \(-1\), "+", \(\(2\ m\)\/r\), "-", \(a\^2\ \((1\/r)\)\^2\), "+", InterpretationBox[\(O[1\/r]\^5\), SeriesData[ r, DirectedInfinity[ 1], {}, 0, 5, 1]]}], SeriesData[ r, DirectedInfinity[ 1], {-1, Times[ 2, m], Times[ -1, Power[ a, 2]]}, 0, 5, 1]], "0", "0"}, {"0", "0", InterpretationBox[ RowBox[{ \(-\((1\/r)\)\^2\), "-", \(2\ b\ \((1\/r)\)\^3\), "-", \(2\ b\^2\ \((1\/r)\)\^4\), "-", \(4\/3\ b\^3\ \((1\/r)\)\^5\), "-", \(2\/3\ b\^4\ \((1\/r)\)\^6\), "+", InterpretationBox[\(O[1\/r]\^7\), SeriesData[ r, DirectedInfinity[ 1], {}, 2, 7, 1]]}], SeriesData[ r, DirectedInfinity[ 1], {-1, Times[ -2, b], Times[ -2, Power[ b, 2]], Times[ Rational[ -4, 3], Power[ b, 3]], Times[ Rational[ -2, 3], Power[ b, 4]]}, 2, 7, 1]], "0"}, {"0", "0", "0", InterpretationBox[ RowBox[{ \(-\(Csc[\[Theta]]\^2\ \((1\/r)\)\^2\)\), "+", \(2\ b\ Csc[\[Theta]]\^2\ \((1\/r)\)\^3\), "-", \(2\ \((b\^2\ Csc[\[Theta]]\^2)\)\ \((1\/r)\)\^4\), "+", \(4\/3\ b\^3\ Csc[\[Theta]]\^2\ \((1\/r)\)\^5\), "-", \(2\/3\ \((b\^4\ Csc[\[Theta]]\^2)\)\ \((1\/r)\)\^6\), "+", InterpretationBox[\(O[1\/r]\^7\), SeriesData[ r, DirectedInfinity[ 1], {}, 2, 7, 1]]}], SeriesData[ r, DirectedInfinity[ 1], { Times[ -1, Power[ Csc[ \[Theta]], 2]], Times[ 2, b, Power[ Csc[ \[Theta]], 2]], Times[ -2, Power[ b, 2], Power[ Csc[ \[Theta]], 2]], Times[ Rational[ 4, 3], Power[ b, 3], Power[ Csc[ \[Theta]], 2]], Times[ Rational[ -2, 3], Power[ b, 4], Power[ Csc[ \[Theta]], 2]]}, 2, 7, 1]]} }], ")"}], (MatrixForm[ #]&)]}], SequenceForm[ "gUU = ", MatrixForm[ {{ SeriesData[ r, DirectedInfinity[ 1], {1, Times[ 2, m], Times[ -1, Plus[ a, Times[ -2, m]], Plus[ a, Times[ 2, m]]], Times[ 4, m, Plus[ Times[ -1, Power[ a, 2]], Times[ 2, Power[ m, 2]]]], Times[ Plus[ Power[ a, 2], Times[ -2, a, m], Times[ -4, Power[ m, 2]]], Plus[ Power[ a, 2], Times[ 2, a, m], Times[ -4, Power[ m, 2]]]]}, 0, 5, 1], 0, 0, 0}, {0, SeriesData[ r, DirectedInfinity[ 1], {-1, Times[ 2, m], Times[ -1, Power[ a, 2]]}, 0, 5, 1], 0, 0}, {0, 0, SeriesData[ r, DirectedInfinity[ 1], {-1, Times[ -2, b], Times[ -2, Power[ b, 2]], Times[ Rational[ -4, 3], Power[ b, 3]], Times[ Rational[ -2, 3], Power[ b, 4]]}, 2, 7, 1], 0}, {0, 0, 0, SeriesData[ r, DirectedInfinity[ 1], { Times[ -1, Power[ Csc[ \[Theta]], 2]], Times[ 2, b, Power[ Csc[ \[Theta]], 2]], Times[ -2, Power[ b, 2], Power[ Csc[ \[Theta]], 2]], Times[ Rational[ 4, 3], Power[ b, 3], Power[ Csc[ \[Theta]], 2]], Times[ Rational[ -2, 3], Power[ b, 4], Power[ Csc[ \[Theta]], 2]]}, 2, 7, 1]}}]], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ \("gUU computed in "\[InvisibleSpace]0.183333333333337122` \[InvisibleSpace]" sec"\), SequenceForm[ "gUU computed in ", 0.18333333333333712, " sec"], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ \("Gamma computed in "\[InvisibleSpace]0.0666666666666628771` \[InvisibleSpace]" sec"\), SequenceForm[ "Gamma computed in ", 0.066666666666662877, " sec"], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ \("Riemann(dddd) computed in "\[InvisibleSpace]0.116666666666660034` \[InvisibleSpace]" sec"\), SequenceForm[ "Riemann(dddd) computed in ", 0.11666666666666003, " sec"], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ \("Riemann(Uddd) computed in "\[InvisibleSpace]0.150000000000005684` \[InvisibleSpace]" sec"\), SequenceForm[ "Riemann(Uddd) computed in ", 0.15000000000000568, " sec"], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ \("Ricci computed in "\[InvisibleSpace]0.0166666666666657192` \[InvisibleSpace]" sec"\), SequenceForm[ "Ricci computed in ", 0.016666666666665719, " sec"], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ \("Weyl computed in "\[InvisibleSpace]0.183333333333337122` \[InvisibleSpace]" sec"\), SequenceForm[ "Weyl computed in ", 0.18333333333333712, " sec"], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ \("Einstein computed in "\[InvisibleSpace]0.0166666666666657192` \[InvisibleSpace]" sec"\), SequenceForm[ "Einstein computed in ", 0.016666666666665719, " sec"], Editable->False]], "Print"], Cell[BoxData[ \("All tasks completed in 0.8 seconds"\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(Rdd\)], "Input", FontColor->GrayLevel[0.333333]], Cell[BoxData[ RowBox[{"{", RowBox[{ RowBox[{"{", RowBox[{ InterpretationBox[ RowBox[{\(a\^2\ \((1\/r)\)\^4\), "+", InterpretationBox[\(O[1\/r]\^5\), SeriesData[ r, DirectedInfinity[ 1], {}, 4, 5, 1]]}], SeriesData[ r, DirectedInfinity[ 1], { Power[ a, 2]}, 4, 5, 1]], ",", InterpretationBox[\(O[1\/r]\^6\), SeriesData[ r, DirectedInfinity[ 1], {}, 6, 6, 1]], ",", InterpretationBox[\(O[1\/r]\^5\), SeriesData[ r, DirectedInfinity[ 1], {}, 5, 5, 1]], ",", InterpretationBox[\(O[1\/r]\^5\), SeriesData[ r, DirectedInfinity[ 1], {}, 5, 5, 1]]}], "}"}], ",", RowBox[{"{", RowBox[{ InterpretationBox[\(O[1\/r]\^6\), SeriesData[ r, DirectedInfinity[ 1], {}, 6, 6, 1]], ",", InterpretationBox[ RowBox[{\(\((\(-a\^2\) - 2\ b\^2)\)\ \((1\/r)\)\^4\), "+", InterpretationBox[\(O[1\/r]\^5\), SeriesData[ r, DirectedInfinity[ 1], {}, 4, 5, 1]]}], SeriesData[ r, DirectedInfinity[ 1], { Plus[ Times[ -1, Power[ a, 2]], Times[ -2, Power[ b, 2]]]}, 4, 5, 1]], ",", InterpretationBox[ RowBox[{\(2\ b\ Cot[\[Theta]]\ \((1\/r)\)\^2\), "+", InterpretationBox[\(O[1\/r]\^6\), SeriesData[ r, DirectedInfinity[ 1], {}, 2, 6, 1]]}], SeriesData[ r, DirectedInfinity[ 1], { Times[ 2, b, Cot[ \[Theta]]]}, 2, 6, 1]], ",", InterpretationBox[\(O[1\/r]\^6\), SeriesData[ r, DirectedInfinity[ 1], {}, 6, 6, 1]]}], "}"}], ",", RowBox[{"{", RowBox[{ InterpretationBox[\(O[1\/r]\^5\), SeriesData[ r, DirectedInfinity[ 1], {}, 5, 5, 1]], ",", InterpretationBox[ RowBox[{\(2\ b\ Cot[\[Theta]]\ \((1\/r)\)\^2\), "+", InterpretationBox[\(O[1\/r]\^6\), SeriesData[ r, DirectedInfinity[ 1], {}, 2, 6, 1]]}], SeriesData[ r, DirectedInfinity[ 1], { Times[ 2, b, Cot[ \[Theta]]]}, 2, 6, 1]], ",", InterpretationBox[ RowBox[{ \(\(2\ b\)\/r\), "+", \(\((a\^2 - 2\ b\^2 - 2\ b\ m)\)\ \((1\/r)\)\^2\), "+", InterpretationBox[\(O[1\/r]\^3\), SeriesData[ r, DirectedInfinity[ 1], {}, 1, 3, 1]]}], SeriesData[ r, DirectedInfinity[ 1], { Times[ 2, b], Plus[ Power[ a, 2], Times[ -2, Power[ b, 2]], Times[ -2, b, m]]}, 1, 3, 1]], ",", InterpretationBox[\(O[1\/r]\^5\), SeriesData[ r, DirectedInfinity[ 1], {}, 5, 5, 1]]}], "}"}], ",", RowBox[{"{", RowBox[{ InterpretationBox[\(O[1\/r]\^5\), SeriesData[ r, DirectedInfinity[ 1], {}, 5, 5, 1]], ",", InterpretationBox[\(O[1\/r]\^6\), SeriesData[ r, DirectedInfinity[ 1], {}, 6, 6, 1]], ",", InterpretationBox[\(O[1\/r]\^5\), SeriesData[ r, DirectedInfinity[ 1], {}, 5, 5, 1]], ",", InterpretationBox[ RowBox[{ \(\(2\ b\ Sin[\[Theta]]\^2\)\/r\), "+", \(\((a\^2 + 6\ b\^2 + 2\ b\ m)\)\ Sin[\[Theta]]\^2\ \((1\/r)\)\^2\), "+", InterpretationBox[\(O[1\/r]\^3\), SeriesData[ r, DirectedInfinity[ 1], {}, 1, 3, 1]]}], SeriesData[ r, DirectedInfinity[ 1], { Times[ 2, b, Power[ Sin[ \[Theta]], 2]], Times[ Plus[ Power[ a, 2], Times[ 6, Power[ b, 2]], Times[ 2, b, m]], Power[ Sin[ \[Theta]], 2]]}, 1, 3, 1]]}], "}"}]}], "}"}]], "Output"] }, Open ]], Cell[TextData[{ "\tWhen ", StyleBox["b=0", FontFamily->"Courier"], " and only terms to order 3 are kept, ", StyleBox["RGtensors", FontFamily->"Courier"], " will conclude that the space is Ricci flat (", StyleBox["Mathematica", FontSlant->"Italic"], " 3 - 4.2) or Einstein space (", StyleBox["Mathematica", FontSlant->"Italic"], " 5 - 6) in this approximation:" }], "Text", FontSize->16, FontColor->RGBColor[0, 0, 1]], Cell[CellGroupData[{ Cell[BoxData[ RowBox[{"RGtensors", "[", RowBox[{ RowBox[{\(gSER[3]\), StyleBox["/.", FontColor->RGBColor[1, 0, 0]], StyleBox[\(b \[Rule] 0\), FontColor->RGBColor[1, 0, 0]]}], ",", "xCoord"}], "]"}]], "Input",\ FontColor->GrayLevel[0.333333]], Cell[BoxData[ InterpretationBox[ RowBox[{\("gdd = "\), "\[InvisibleSpace]", TagBox[ RowBox[{"(", GridBox[{ { InterpretationBox[ RowBox[{ "1", "-", \(\(2\ m\)\/r\), "+", \(a\^2\ \((1\/r)\)\^2\), "+", InterpretationBox[\(O[1\/r]\^4\), SeriesData[ r, DirectedInfinity[ 1], {}, 0, 4, 1]]}], SeriesData[ r, DirectedInfinity[ 1], {1, Times[ -2, m], Power[ a, 2]}, 0, 4, 1]], "0", "0", "0"}, {"0", InterpretationBox[ RowBox[{ \(-1\), "-", \(\(2\ m\)\/r\), "+", \(\((a - 2\ m)\)\ \((a + 2\ m)\)\ \((1\/r)\)\^2\), "+", \(4\ m\ \((a\^2 - 2\ m\^2)\)\ \((1\/r)\)\^3\), "+", InterpretationBox[\(O[1\/r]\^4\), SeriesData[ r, DirectedInfinity[ 1], {}, 0, 4, 1]]}], SeriesData[ r, DirectedInfinity[ 1], {-1, Times[ -2, m], Times[ Plus[ a, Times[ -2, m]], Plus[ a, Times[ 2, m]]], Times[ 4, m, Plus[ Power[ a, 2], Times[ -2, Power[ m, 2]]]]}, 0, 4, 1]], "0", "0"}, {"0", "0", InterpretationBox[ RowBox[{\(-\(1\/\((1\/r)\)\^2\)\), "+", InterpretationBox[\(O[1\/r]\^2\), SeriesData[ r, DirectedInfinity[ 1], {}, -2, 2, 1]]}], SeriesData[ r, DirectedInfinity[ 1], {-1}, -2, 2, 1]], "0"}, {"0", "0", "0", InterpretationBox[ RowBox[{\(-\(Sin[\[Theta]]\^2\/\((1\/r)\)\^2\)\), "+", InterpretationBox[\(O[1\/r]\^2\), SeriesData[ r, DirectedInfinity[ 1], {}, -2, 2, 1]]}], SeriesData[ r, DirectedInfinity[ 1], { Times[ -1, Power[ Sin[ \[Theta]], 2]]}, -2, 2, 1]]} }], ")"}], (MatrixForm[ #]&)]}], SequenceForm[ "gdd = ", MatrixForm[ {{ SeriesData[ r, DirectedInfinity[ 1], {1, Times[ -2, m], Power[ a, 2]}, 0, 4, 1], 0, 0, 0}, {0, SeriesData[ r, DirectedInfinity[ 1], {-1, Times[ -2, m], Times[ Plus[ a, Times[ -2, m]], Plus[ a, Times[ 2, m]]], Times[ 4, m, Plus[ Power[ a, 2], Times[ -2, Power[ m, 2]]]]}, 0, 4, 1], 0, 0}, {0, 0, SeriesData[ r, DirectedInfinity[ 1], {-1}, -2, 2, 1], 0}, {0, 0, 0, SeriesData[ r, DirectedInfinity[ 1], { Times[ -1, Power[ Sin[ \[Theta]], 2]]}, -2, 2, 1]}}]], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ RowBox[{\("LineElement = "\), "\[InvisibleSpace]", TagBox[ InterpretationBox[ RowBox[{ \(\(\( - d[\[Theta]]\^2\) - d[\[CurlyPhi]]\^2\ Sin[\[Theta]]\^2\)\/\((1\/r)\)\^2\), "+", \((\(-dr\^2\) + d[t]\^2)\), "+", \(\(\(-2\)\ dr\^2\ m - 2\ m\ d[t]\^2\)\/r\), "+", InterpretationBox[\(O[1\/r]\^2\), SeriesData[ r, DirectedInfinity[ 1], {}, -2, 2, 1]]}], SeriesData[ r, DirectedInfinity[ 1], { Plus[ Times[ -1, Power[ d[ \[Theta]], 2]], Times[ -1, Power[ d[ \[CurlyPhi]], 2], Power[ Sin[ \[Theta]], 2]]], 0, Plus[ Times[ -1, Power[ dr, 2]], Power[ d[ t], 2]], Plus[ Times[ -2, Power[ dr, 2], m], Times[ -2, m, Power[ d[ t], 2]]]}, -2, 2, 1]], (Short[ #, 32]&)]}], SequenceForm[ "LineElement = ", Short[ SeriesData[ r, DirectedInfinity[ 1], { Plus[ Times[ -1, Power[ d[ \[Theta]], 2]], Times[ -1, Power[ d[ \[CurlyPhi]], 2], Power[ Sin[ \[Theta]], 2]]], 0, Plus[ Times[ -1, Power[ dr, 2]], Power[ d[ t], 2]], Plus[ Times[ -2, Power[ dr, 2], m], Times[ -2, m, Power[ d[ t], 2]]]}, -2, 2, 1], 32]], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ RowBox[{\("gUU = "\), "\[InvisibleSpace]", TagBox[ RowBox[{"(", GridBox[{ { InterpretationBox[ RowBox[{ "1", "+", \(\(2\ m\)\/r\), "-", \(\((a - 2\ m)\)\ \((a + 2\ m)\)\ \((1\/r)\)\^2\), "+", \(4\ m\ \((\(-a\^2\) + 2\ m\^2)\)\ \((1\/r)\)\^3\), "+", InterpretationBox[\(O[1\/r]\^4\), SeriesData[ r, DirectedInfinity[ 1], {}, 0, 4, 1]]}], SeriesData[ r, DirectedInfinity[ 1], {1, Times[ 2, m], Times[ -1, Plus[ a, Times[ -2, m]], Plus[ a, Times[ 2, m]]], Times[ 4, m, Plus[ Times[ -1, Power[ a, 2]], Times[ 2, Power[ m, 2]]]]}, 0, 4, 1]], "0", "0", "0"}, {"0", InterpretationBox[ RowBox[{ \(-1\), "+", \(\(2\ m\)\/r\), "-", \(a\^2\ \((1\/r)\)\^2\), "+", InterpretationBox[\(O[1\/r]\^4\), SeriesData[ r, DirectedInfinity[ 1], {}, 0, 4, 1]]}], SeriesData[ r, DirectedInfinity[ 1], {-1, Times[ 2, m], Times[ -1, Power[ a, 2]]}, 0, 4, 1]], "0", "0"}, {"0", "0", InterpretationBox[ RowBox[{\(-\((1\/r)\)\^2\), "+", InterpretationBox[\(O[1\/r]\^6\), SeriesData[ r, DirectedInfinity[ 1], {}, 2, 6, 1]]}], SeriesData[ r, DirectedInfinity[ 1], {-1}, 2, 6, 1]], "0"}, {"0", "0", "0", InterpretationBox[ RowBox[{\(-\(Csc[\[Theta]]\^2\ \((1\/r)\)\^2\)\), "+", InterpretationBox[\(O[1\/r]\^6\), SeriesData[ r, DirectedInfinity[ 1], {}, 2, 6, 1]]}], SeriesData[ r, DirectedInfinity[ 1], { Times[ -1, Power[ Csc[ \[Theta]], 2]]}, 2, 6, 1]]} }], ")"}], (MatrixForm[ #]&)]}], SequenceForm[ "gUU = ", MatrixForm[ {{ SeriesData[ r, DirectedInfinity[ 1], {1, Times[ 2, m], Times[ -1, Plus[ a, Times[ -2, m]], Plus[ a, Times[ 2, m]]], Times[ 4, m, Plus[ Times[ -1, Power[ a, 2]], Times[ 2, Power[ m, 2]]]]}, 0, 4, 1], 0, 0, 0}, {0, SeriesData[ r, DirectedInfinity[ 1], {-1, Times[ 2, m], Times[ -1, Power[ a, 2]]}, 0, 4, 1], 0, 0}, {0, 0, SeriesData[ r, DirectedInfinity[ 1], {-1}, 2, 6, 1], 0}, {0, 0, 0, SeriesData[ r, DirectedInfinity[ 1], { Times[ -1, Power[ Csc[ \[Theta]], 2]]}, 2, 6, 1]}}]], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ \("gUU computed in "\[InvisibleSpace]0.0500000000000113686` \[InvisibleSpace]" sec"\), SequenceForm[ "gUU computed in ", 0.050000000000011369, " sec"], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ \("Gamma computed in "\[InvisibleSpace]0.0499999999999971578` \[InvisibleSpace]" sec"\), SequenceForm[ "Gamma computed in ", 0.049999999999997158, " sec"], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ \("Riemann(dddd) computed in "\[InvisibleSpace]0.0833333333333285963` \[InvisibleSpace]" sec"\), SequenceForm[ "Riemann(dddd) computed in ", 0.083333333333328596, " sec"], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ \("Riemann(Uddd) computed in "\[InvisibleSpace]0.0666666666666628771` \[InvisibleSpace]" sec"\), SequenceForm[ "Riemann(Uddd) computed in ", 0.066666666666662877, " sec"], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ \("Ricci computed in "\[InvisibleSpace]0.`\[InvisibleSpace]" sec"\), SequenceForm[ "Ricci computed in ", 0.0, " sec"], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ \("Weyl computed in "\[InvisibleSpace]0.`\[InvisibleSpace]" sec"\), SequenceForm[ "Weyl computed in ", 0.0, " sec"], Editable->False]], "Print"], Cell[BoxData[ \("Ricci Flat to order 3 or higher"\)], "Output", FontSize->20, FontWeight->"Bold", FontColor->RGBColor[1, 0, 1]], Cell[BoxData[ \("All tasks completed in 0.383333 seconds"\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(If[$VersionNumber < 4.5, Rdd, Rdd - 1/4 R\ gdd]\)], "Input", FontColor->GrayLevel[0.333333]], Cell[BoxData[ RowBox[{"{", RowBox[{ RowBox[{"{", RowBox[{ InterpretationBox[\(O[1\/r]\^4\), SeriesData[ r, DirectedInfinity[ 1], {}, 4, 4, 1]], ",", InterpretationBox[\(O[1\/r]\^5\), SeriesData[ r, DirectedInfinity[ 1], {}, 5, 5, 1]], ",", InterpretationBox[\(O[1\/r]\^4\), SeriesData[ r, DirectedInfinity[ 1], {}, 4, 4, 1]], ",", InterpretationBox[\(O[1\/r]\^4\), SeriesData[ r, DirectedInfinity[ 1], {}, 4, 4, 1]]}], "}"}], ",", RowBox[{"{", RowBox[{ InterpretationBox[\(O[1\/r]\^5\), SeriesData[ r, DirectedInfinity[ 1], {}, 5, 5, 1]], ",", InterpretationBox[\(O[1\/r]\^4\), SeriesData[ r, DirectedInfinity[ 1], {}, 4, 4, 1]], ",", InterpretationBox[\(O[1\/r]\^5\), SeriesData[ r, DirectedInfinity[ 1], {}, 5, 5, 1]], ",", InterpretationBox[\(O[1\/r]\^5\), SeriesData[ r, DirectedInfinity[ 1], {}, 5, 5, 1]]}], "}"}], ",", RowBox[{"{", RowBox[{ InterpretationBox[\(O[1\/r]\^4\), SeriesData[ r, DirectedInfinity[ 1], {}, 4, 4, 1]], ",", InterpretationBox[\(O[1\/r]\^5\), SeriesData[ r, DirectedInfinity[ 1], {}, 5, 5, 1]], ",", InterpretationBox[\(O[1\/r]\^2\), SeriesData[ r, DirectedInfinity[ 1], {}, 2, 2, 1]], ",", InterpretationBox[\(O[1\/r]\^4\), SeriesData[ r, DirectedInfinity[ 1], {}, 4, 4, 1]]}], "}"}], ",", RowBox[{"{", RowBox[{ InterpretationBox[\(O[1\/r]\^4\), SeriesData[ r, DirectedInfinity[ 1], {}, 4, 4, 1]], ",", InterpretationBox[\(O[1\/r]\^5\), SeriesData[ r, DirectedInfinity[ 1], {}, 5, 5, 1]], ",", InterpretationBox[\(O[1\/r]\^4\), SeriesData[ r, DirectedInfinity[ 1], {}, 4, 4, 1]], ",", InterpretationBox[\(O[1\/r]\^2\), SeriesData[ r, DirectedInfinity[ 1], {}, 2, 2, 1]]}], "}"}]}], "}"}]], "Output"] }, Open ]], Cell[TextData[{ "\tThe \"order 3\" refers to the components of the mixed tensor ", Cell[BoxData[ \(\(\(R\^a\)\_b\) \((\(-1\)/4\ R\ \(\[Delta]\^a\)\_b)\)\)]], ":" }], "Text", FontSize->16, FontColor->RGBColor[0, 0, 1]], Cell[CellGroupData[{ Cell[BoxData[ \(Raise[If[$VersionNumber < 4.5, Rdd, Rdd - 1/4 R\ gdd], 1]\)], "Input", FontColor->GrayLevel[0.333333]], Cell[BoxData[ RowBox[{"{", RowBox[{ RowBox[{"{", RowBox[{ InterpretationBox[\(O[1\/r]\^4\), SeriesData[ r, DirectedInfinity[ 1], {}, 4, 4, 1]], ",", InterpretationBox[\(O[1\/r]\^5\), SeriesData[ r, DirectedInfinity[ 1], {}, 5, 5, 1]], ",", InterpretationBox[\(O[1\/r]\^4\), SeriesData[ r, DirectedInfinity[ 1], {}, 4, 4, 1]], ",", InterpretationBox[\(O[1\/r]\^4\), SeriesData[ r, DirectedInfinity[ 1], {}, 4, 4, 1]]}], "}"}], ",", RowBox[{"{", RowBox[{ InterpretationBox[\(O[1\/r]\^5\), SeriesData[ r, DirectedInfinity[ 1], {}, 5, 5, 1]], ",", InterpretationBox[\(O[1\/r]\^4\), SeriesData[ r, DirectedInfinity[ 1], {}, 4, 4, 1]], ",", InterpretationBox[\(O[1\/r]\^5\), SeriesData[ r, DirectedInfinity[ 1], {}, 5, 5, 1]], ",", InterpretationBox[\(O[1\/r]\^5\), SeriesData[ r, DirectedInfinity[ 1], {}, 5, 5, 1]]}], "}"}], ",", RowBox[{"{", RowBox[{ InterpretationBox[\(O[1\/r]\^6\), SeriesData[ r, DirectedInfinity[ 1], {}, 6, 6, 1]], ",", InterpretationBox[\(O[1\/r]\^7\), SeriesData[ r, DirectedInfinity[ 1], {}, 7, 7, 1]], ",", InterpretationBox[\(O[1\/r]\^4\), SeriesData[ r, DirectedInfinity[ 1], {}, 4, 4, 1]], ",", InterpretationBox[\(O[1\/r]\^6\), SeriesData[ r, DirectedInfinity[ 1], {}, 6, 6, 1]]}], "}"}], ",", RowBox[{"{", RowBox[{ InterpretationBox[\(O[1\/r]\^6\), SeriesData[ r, DirectedInfinity[ 1], {}, 6, 6, 1]], ",", InterpretationBox[\(O[1\/r]\^7\), SeriesData[ r, DirectedInfinity[ 1], {}, 7, 7, 1]], ",", InterpretationBox[\(O[1\/r]\^6\), SeriesData[ r, DirectedInfinity[ 1], {}, 6, 6, 1]], ",", InterpretationBox[\(O[1\/r]\^4\), SeriesData[ r, DirectedInfinity[ 1], {}, 4, 4, 1]]}], "}"}]}], "}"}]], "Output"] }, Open ]] }, Closed]], Cell[TextData[{ " \tFor an example of expansion with respect to a parameter see the \ \"General 1st Order Perturbation of the Schwarzschild metric\" in ", ButtonBox["AdditionalExamples.html", ButtonData:>{ URL[ "http://www.inp.demokritos.gr/~sbonano/RGTC/AdditionalExamples.html"], None}, ButtonStyle->"Hyperlink"], "." }], "Text", FontSize->16], Cell[CellGroupData[{ Cell[TextData[{ Cell[BoxData[ TagBox["", DisplayForm]]], Cell[BoxData[ TagBox["", DisplayForm]]], "\t", "However, if the coframe (which depends on ", StyleBox["d[x]", FontFamily->"Courier"], ") is to be expanded with respect to the coordinate x, the user must \ introduce the symbol ", StyleBox["dx", FontFamily->"Courier"], " for ", StyleBox["d[x]", FontFamily->"Courier"], StyleBox[" before", FontSlant->"Italic"], " expanding the coframe. This is achieved with the following commands \ (where ", StyleBox["x", FontFamily->"Courier"], " is the symbol for the expansion coordinate) :" }], "Text", CellFrame->True, ShowGroupOpenCloseIcon->True, FontSize->16], Cell[BoxData[ \(DeclareForms[1, dx]; d[x] = dx; d[dx] = 0; \)], "Input"], Cell[TextData[{ " \tThen ", StyleBox["Series", FontFamily->"Courier"], " does not expand ", StyleBox["d[x]", FontFamily->"Courier"], " (= ", StyleBox["dx", FontFamily->"Courier"], "):" }], "Text", FontSize->16], Cell[CellGroupData[{ Cell[BoxData[ \(Series[d[x]/\((1 - x)\), {x, 0, 2}]\)], "Input"], Cell[BoxData[ InterpretationBox[ RowBox[{"dx", "+", \(dx\ x\), "+", \(dx\ x\^2\), "+", InterpretationBox[\(O[x]\^3\), SeriesData[ x, 0, {}, 0, 3, 1]]}], SeriesData[ x, 0, {dx, dx, dx}, 0, 3, 1]]], "Output"] }, Open ]], Cell[TextData[{ " \tAnd ", StyleBox["dx", FontFamily->"Courier"], " is treated correctly as a closed 1-form: " }], "Text", FontSize->16], Cell[CellGroupData[{ Cell[BoxData[ \(d[%]\)], "Input"], Cell[BoxData[ InterpretationBox[\(O[x]\^2\), SeriesData[ x, 0, {}, 2, 2, 1]]], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(%%\[Wedge]%%\)], "Input"], Cell[BoxData[ InterpretationBox[\(O[x]\^3\), SeriesData[ x, 0, {}, 3, 3, 1]]], "Output"] }, Open ]] }, Closed]], Cell[TextData[{ Cell[BoxData[ TagBox["", DisplayForm]]], Cell[BoxData[ TagBox["", DisplayForm]]], "\tIf repeated calculations (for different orders) are to be performed, the \ differentials of the coordinates (and of the symbol dx) must be cleared \ before each new calculation.This is accomplished with ", StyleBox["Clear$dx", FontFamily->"Courier"], " - see section 5.1.1 \"", ButtonBox["Note on repeated frame calculations", ButtonData:>"sec 5", ButtonStyle->"Hyperlink"], "\"." }], "Text", FontSize->16], Cell[CellGroupData[{ Cell[TextData[ " \[FilledSmallSquare] Example 11: Example 10 in an orthonormal frame "], "Text", CellFrame->True, ShowGroupOpenCloseIcon->True, FontSize->16, FontWeight->"Bold", FontColor->RGBColor[0, 0, 1]], Cell[BoxData[ \(Clear$dx\)], "Input", FontColor->GrayLevel[0.333333]], Cell[BoxData[ \(d[m] = 0; d[a] = 0; d[b] = 0; \)], "Input", FontColor->GrayLevel[0.333333]], Cell[TextData[{ "\t", StyleBox[ "When the frame is to be expanded in terms of a coordinate, the notation ", FontSize->16], StyleBox["dr", FontFamily->"Courier", FontSize->16], StyleBox[" for ", FontSize->16], StyleBox["d[r]", FontFamily->"Courier", FontSize->16], StyleBox[" must be used:", FontSize->16] }], "Text", FontColor->RGBColor[0, 0, 1]], Cell[BoxData[ \(DeclareForms[1, dr]; d[r] = dr; d[dr] = 0; \)], "Input", FontColor->GrayLevel[0.333333]], Cell[BoxData[ \(\(ONframe = PowerExpand[{Sqrt[A[r]] d[t], d[r]/Sqrt[A[r]], r\ d[\[Theta]]/Sqrt[B[r]], r\ Sin[\[Theta]] Sqrt[B[r]] d[\[CurlyPhi]]}]; \)\)], "Input", FontColor->GrayLevel[0.333333]], Cell[BoxData[ \(\(gON = DiagonalMatrix[{1, \(-1\), \(-1\), \(-1\)}]; \)\)], "Input", FontColor->GrayLevel[0.333333]], Cell[BoxData[ \(ONfrSer[n_] := FacSimp[Series[ONframe, {r, Infinity, n}]]\)], "Input", FontColor->GrayLevel[0.333333]], Cell[CellGroupData[{ Cell[BoxData[ RowBox[{ RowBox[{"(*", RowBox[{"*", StyleBox[" ", FontColor->RGBColor[0, 0, 1]], StyleBox["Order", FontColor->RGBColor[0, 0, 1]], StyleBox[" ", FontColor->RGBColor[0, 0, 1]], StyleBox["4", FontColor->RGBColor[0, 0, 1]]}], " ", "**)"}], \(RGtensors[gON, xCoord, ONfrSer[4]]\)}]], "Input", FontColor->GrayLevel[0.333333]], Cell[BoxData[ InterpretationBox[ RowBox[{\("gdd = "\), "\[InvisibleSpace]", TagBox[ RowBox[{"(", GridBox[{ {"1", "0", "0", "0"}, {"0", \(-1\), "0", "0"}, {"0", "0", \(-1\), "0"}, {"0", "0", "0", \(-1\)} }], ")"}], (MatrixForm[ #]&)]}], SequenceForm[ "gdd = ", MatrixForm[ {{1, 0, 0, 0}, {0, -1, 0, 0}, {0, 0, -1, 0}, {0, 0, 0, -1}}]], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ RowBox[{\("LineElement = "\), "\[InvisibleSpace]", TagBox[ InterpretationBox[ RowBox[{ \(\(\( - d[\[Theta]]\^2\) - d[\[CurlyPhi]]\^2\ Sin[\[Theta]]\^2\)\/\((1\/r)\)\^2\), "+", \(\(2\ b\ d[\[Theta]]\^2 - 2\ b\ d[\[CurlyPhi]]\^2\ Sin[\[Theta]]\^2\)\/\(1\/r\)\), "+", \((\(-dr\^2\) + d[t]\^2 - 2\ b\^2\ d[\[Theta]]\^2 - 2\ b\^2\ d[\[CurlyPhi]]\^2\ Sin[\[Theta]]\^2)\), "+", \(\(\(-2\)\ dr\^2\ m - 2\ m\ d[t]\^2 + 4\/3\ b\^3\ d[\[Theta]]\^2 - 4\/3\ b\^3\ d[\[CurlyPhi]]\^2\ Sin[\[Theta]]\^2\)\/r\), "+", \(\(( dr\^2\ \((a - 2\ m)\)\ \((a + 2\ m)\) + a\^2\ d[t]\^2 - 2\/3\ b\^4\ d[\[Theta]]\^2 - 2\/3\ b\^4\ d[\[CurlyPhi]]\^2\ Sin[\[Theta]]\^2)\)\ \((1\/r)\)\^2\), "+", InterpretationBox[\(O[1\/r]\^3\), SeriesData[ r, DirectedInfinity[ 1], {}, -2, 3, 1]]}], SeriesData[ r, DirectedInfinity[ 1], { Plus[ Times[ -1, Power[ d[ \[Theta]], 2]], Times[ -1, Power[ d[ \[CurlyPhi]], 2], Power[ Sin[ \[Theta]], 2]]], Plus[ Times[ 2, b, Power[ d[ \[Theta]], 2]], Times[ -2, b, Power[ d[ \[CurlyPhi]], 2], Power[ Sin[ \[Theta]], 2]]], Plus[ Times[ -1, Power[ dr, 2]], Power[ d[ t], 2], Times[ -2, Power[ b, 2], Power[ d[ \[Theta]], 2]], Times[ -2, Power[ b, 2], Power[ d[ \[CurlyPhi]], 2], Power[ Sin[ \[Theta]], 2]]], Plus[ Times[ -2, Power[ dr, 2], m], Times[ -2, m, Power[ d[ t], 2]], Times[ Rational[ 4, 3], Power[ b, 3], Power[ d[ \[Theta]], 2]], Times[ Rational[ -4, 3], Power[ b, 3], Power[ d[ \[CurlyPhi]], 2], Power[ Sin[ \[Theta]], 2]]], Plus[ Times[ Power[ dr, 2], Plus[ a, Times[ -2, m]], Plus[ a, Times[ 2, m]]], Times[ Power[ a, 2], Power[ d[ t], 2]], Times[ Rational[ -2, 3], Power[ b, 4], Power[ d[ \[Theta]], 2]], Times[ Rational[ -2, 3], Power[ b, 4], Power[ d[ \[CurlyPhi]], 2], Power[ Sin[ \[Theta]], 2]]]}, -2, 3, 1]], (Short[ #, 32]&)]}], SequenceForm[ "LineElement = ", Short[ SeriesData[ r, DirectedInfinity[ 1], { Plus[ Times[ -1, Power[ d[ \[Theta]], 2]], Times[ -1, Power[ d[ \[CurlyPhi]], 2], Power[ Sin[ \[Theta]], 2]]], Plus[ Times[ 2, b, Power[ d[ \[Theta]], 2]], Times[ -2, b, Power[ d[ \[CurlyPhi]], 2], Power[ Sin[ \[Theta]], 2]]], Plus[ Times[ -1, Power[ dr, 2]], Power[ d[ t], 2], Times[ -2, Power[ b, 2], Power[ d[ \[Theta]], 2]], Times[ -2, Power[ b, 2], Power[ d[ \[CurlyPhi]], 2], Power[ Sin[ \[Theta]], 2]]], Plus[ Times[ -2, Power[ dr, 2], m], Times[ -2, m, Power[ d[ t], 2]], Times[ Rational[ 4, 3], Power[ b, 3], Power[ d[ \[Theta]], 2]], Times[ Rational[ -4, 3], Power[ b, 3], Power[ d[ \[CurlyPhi]], 2], Power[ Sin[ \[Theta]], 2]]], Plus[ Times[ Power[ dr, 2], Plus[ a, Times[ -2, m]], Plus[ a, Times[ 2, m]]], Times[ Power[ a, 2], Power[ d[ t], 2]], Times[ Rational[ -2, 3], Power[ b, 4], Power[ d[ \[Theta]], 2]], Times[ Rational[ -2, 3], Power[ b, 4], Power[ d[ \[CurlyPhi]], 2], Power[ Sin[ \[Theta]], 2]]]}, -2, 3, 1], 32]], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ RowBox[{\("gUU = "\), "\[InvisibleSpace]", TagBox[ RowBox[{"(", GridBox[{ {"1", "0", "0", "0"}, {"0", \(-1\), "0", "0"}, {"0", "0", \(-1\), "0"}, {"0", "0", "0", \(-1\)} }], ")"}], (MatrixForm[ #]&)]}], SequenceForm[ "gUU = ", MatrixForm[ {{1, 0, 0, 0}, {0, -1, 0, 0}, {0, 0, -1, 0}, {0, 0, 0, -1}}]], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ \("gUU computed in "\[InvisibleSpace]0.`\[InvisibleSpace]" sec"\), SequenceForm[ "gUU computed in ", 0.0, " sec"], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ \("d[coframe] computed in "\[InvisibleSpace]0.48333333333333428` \[InvisibleSpace]" sec"\), SequenceForm[ "d[coframe] computed in ", 0.48333333333333428, " sec"], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ \("Gamma computed in "\[InvisibleSpace]0.100000000000008526` \[InvisibleSpace]" sec"\), SequenceForm[ "Gamma computed in ", 0.10000000000000853, " sec"], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ \("Riemann(dddd) computed in "\[InvisibleSpace]0.0999999999999943156` \[InvisibleSpace]" sec"\), SequenceForm[ "Riemann(dddd) computed in ", 0.099999999999994316, " sec"], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ \("Riemann(Uddd) computed in "\[InvisibleSpace]0.0666666666666770879` \[InvisibleSpace]" sec"\), SequenceForm[ "Riemann(Uddd) computed in ", 0.066666666666677088, " sec"], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ \("Ricci computed in "\[InvisibleSpace]0.`\[InvisibleSpace]" sec"\), SequenceForm[ "Ricci computed in ", 0.0, " sec"], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ \("Weyl computed in "\[InvisibleSpace]0.0833333333333285963` \[InvisibleSpace]" sec"\), SequenceForm[ "Weyl computed in ", 0.083333333333328596, " sec"], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ \("Einstein computed in "\[InvisibleSpace]0.0166666666666657192` \[InvisibleSpace]" sec"\), SequenceForm[ "Einstein computed in ", 0.016666666666665719, " sec"], Editable->False]], "Print"], Cell[BoxData[ \("All tasks completed in 1. seconds"\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(Rdd\)], "Input", FontColor->GrayLevel[0.333333]], Cell[BoxData[ RowBox[{"{", RowBox[{ RowBox[{"{", RowBox[{ InterpretationBox[\(O[1\/r]\^4\), SeriesData[ r, DirectedInfinity[ 1], {}, 4, 4, 1]], ",", InterpretationBox[\(O[1\/r]\^5\), SeriesData[ r, DirectedInfinity[ 1], {}, 5, 5, 1]], ",", InterpretationBox[\(O[1\/r]\^5\), SeriesData[ r, DirectedInfinity[ 1], {}, 5, 5, 1]], ",", InterpretationBox[\(O[1\/r]\^5\), SeriesData[ r, DirectedInfinity[ 1], {}, 5, 5, 1]]}], "}"}], ",", RowBox[{"{", RowBox[{ InterpretationBox[\(O[1\/r]\^5\), SeriesData[ r, DirectedInfinity[ 1], {}, 5, 5, 1]], ",", InterpretationBox[ RowBox[{\(\((\(-a\^2\) - 2\ b\^2)\)\ \((1\/r)\)\^4\), "+", InterpretationBox[\(O[1\/r]\^5\), SeriesData[ r, DirectedInfinity[ 1], {}, 4, 5, 1]]}], SeriesData[ r, DirectedInfinity[ 1], { Plus[ Times[ -1, Power[ a, 2]], Times[ -2, Power[ b, 2]]]}, 4, 5, 1]], ",", InterpretationBox[ RowBox[{\(2\ b\ Cot[\[Theta]]\ \((1\/r)\)\^3\), "+", InterpretationBox[\(O[1\/r]\^4\), SeriesData[ r, DirectedInfinity[ 1], {}, 3, 4, 1]]}], SeriesData[ r, DirectedInfinity[ 1], { Times[ 2, b, Cot[ \[Theta]]]}, 3, 4, 1]], ",", InterpretationBox[\(O[1\/r]\^4\), SeriesData[ r, DirectedInfinity[ 1], {}, 4, 4, 1]]}], "}"}], ",", RowBox[{"{", RowBox[{ InterpretationBox[\(O[1\/r]\^5\), SeriesData[ r, DirectedInfinity[ 1], {}, 5, 5, 1]], ",", InterpretationBox[ RowBox[{\(2\ b\ Cot[\[Theta]]\ \((1\/r)\)\^3\), "+", InterpretationBox[\(O[1\/r]\^4\), SeriesData[ r, DirectedInfinity[ 1], {}, 3, 4, 1]]}], SeriesData[ r, DirectedInfinity[ 1], { Times[ 2, b, Cot[ \[Theta]]]}, 3, 4, 1]], ",", InterpretationBox[ RowBox[{\(2\ b\ \((1\/r)\)\^3\), "+", InterpretationBox[\(O[1\/r]\^4\), SeriesData[ r, DirectedInfinity[ 1], {}, 3, 4, 1]]}], SeriesData[ r, DirectedInfinity[ 1], { Times[ 2, b]}, 3, 4, 1]], ",", InterpretationBox[\(O[1\/r]\^4\), SeriesData[ r, DirectedInfinity[ 1], {}, 4, 4, 1]]}], "}"}], ",", RowBox[{"{", RowBox[{ InterpretationBox[\(O[1\/r]\^5\), SeriesData[ r, DirectedInfinity[ 1], {}, 5, 5, 1]], ",", InterpretationBox[\(O[1\/r]\^4\), SeriesData[ r, DirectedInfinity[ 1], {}, 4, 4, 1]], ",", InterpretationBox[\(O[1\/r]\^4\), SeriesData[ r, DirectedInfinity[ 1], {}, 4, 4, 1]], ",", InterpretationBox[ RowBox[{\(2\ b\ \((1\/r)\)\^3\), "+", InterpretationBox[\(O[1\/r]\^4\), SeriesData[ r, DirectedInfinity[ 1], {}, 3, 4, 1]]}], SeriesData[ r, DirectedInfinity[ 1], { Times[ 2, b]}, 3, 4, 1]]}], "}"}]}], "}"}]], "Output"] }, Open ]], Cell["\<\ \ \>", "Text"], Cell[CellGroupData[{ Cell[BoxData[ \(d[r]\)], "Input", FontColor->GrayLevel[0.333333]], Cell[BoxData[ InterpretationBox[ RowBox[{ \(e[2]\), "-", \(\(m\ e[2]\)\/r\), "-", \(1\/2\ \((\((\(-a\) + m)\)\ \((a + m)\)\ e[2])\)\ \((1\/r)\)\^2\), "-", \(1\/2\ \((m\ \((\(-a\) + m)\)\ \((a + m)\)\ e[2])\)\ \((1\/r)\)\^3\), "-", \(1\/8\ \(( \((\(-a\) + m)\)\ \((a + m)\)\ \((\(-a\^2\) + 5\ m\^2)\)\ e[2]) \)\ \((1\/r)\)\^4\), "+", InterpretationBox[\(O[1\/r]\^5\), SeriesData[ r, DirectedInfinity[ 1], {}, 0, 5, 1]]}], SeriesData[ r, DirectedInfinity[ 1], { e[ 2], Times[ -1, m, e[ 2]], Times[ Rational[ -1, 2], Plus[ Times[ -1, a], m], Plus[ a, m], e[ 2]], Times[ Rational[ -1, 2], m, Plus[ Times[ -1, a], m], Plus[ a, m], e[ 2]], Times[ Rational[ -1, 8], Plus[ Times[ -1, a], m], Plus[ a, m], Plus[ Times[ -1, Power[ a, 2]], Times[ 5, Power[ m, 2]]], e[ 2]]}, 0, 5, 1]]], "Output"] }, Open ]], Cell[TextData[{ "\t", StyleBox["Before another calculation, clear the coordinate differentia", FontSize->16], StyleBox["ls (", FontSize->16], StyleBox["Clear$dx", FontFamily->"Courier", FontSize->16], StyleBox[" resets ", FontSize->16], StyleBox["d[r]", FontFamily->"Courier", FontSize->16], StyleBox[" to ", FontSize->16], StyleBox["dr", FontFamily->"Courier", FontSize->16], StyleBox["). ", FontSize->16] }], "Text", FontColor->RGBColor[0, 0, 1]], Cell[CellGroupData[{ Cell[BoxData[ \(Clear$dx; d[r]\)], "Input", FontColor->GrayLevel[0.333333]], Cell[BoxData[ \(dr\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ RowBox[{ RowBox[{"(*", RowBox[{"*", StyleBox[" ", FontColor->RGBColor[0, 0, 1]], StyleBox["Order", FontColor->RGBColor[0, 0, 1]], StyleBox[" ", FontColor->RGBColor[0, 0, 1]], StyleBox["5", FontColor->RGBColor[0, 0, 1]]}], " ", "**)"}], \(RGtensors[gON, xCoord, ONfrSer[5]]\)}]], "Input", FontColor->GrayLevel[0.333333]], Cell[BoxData[ InterpretationBox[ RowBox[{\("gdd = "\), "\[InvisibleSpace]", TagBox[ RowBox[{"(", GridBox[{ {"1", "0", "0", "0"}, {"0", \(-1\), "0", "0"}, {"0", "0", \(-1\), "0"}, {"0", "0", "0", \(-1\)} }], ")"}], (MatrixForm[ #]&)]}], SequenceForm[ "gdd = ", MatrixForm[ {{1, 0, 0, 0}, {0, -1, 0, 0}, {0, 0, -1, 0}, {0, 0, 0, -1}}]], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ RowBox[{\("LineElement = "\), "\[InvisibleSpace]", TagBox[ InterpretationBox[ RowBox[{ \(\(\( - d[\[Theta]]\^2\) - d[\[CurlyPhi]]\^2\ Sin[\[Theta]]\^2\)\/\((1\/r)\)\^2\), "+", \(\(2\ b\ d[\[Theta]]\^2 - 2\ b\ d[\[CurlyPhi]]\^2\ Sin[\[Theta]]\^2\)\/\(1\/r\)\), "+", \((\(-dr\^2\) + d[t]\^2 - 2\ b\^2\ d[\[Theta]]\^2 - 2\ b\^2\ d[\[CurlyPhi]]\^2\ Sin[\[Theta]]\^2)\), "+", \(\(\(-2\)\ dr\^2\ m - 2\ m\ d[t]\^2 + 4\/3\ b\^3\ d[\[Theta]]\^2 - 4\/3\ b\^3\ d[\[CurlyPhi]]\^2\ Sin[\[Theta]]\^2\)\/r\), "+", \(\(( dr\^2\ \((a - 2\ m)\)\ \((a + 2\ m)\) + a\^2\ d[t]\^2 - 2\/3\ b\^4\ d[\[Theta]]\^2 - 2\/3\ b\^4\ d[\[CurlyPhi]]\^2\ Sin[\[Theta]]\^2)\)\ \((1\/r)\)\^2\), "+", \(\((\(-4\)\ dr\^2\ m\ \((\(-a\^2\) + 2\ m\^2)\) + 4\/15\ b\^5\ d[\[Theta]]\^2 - 4\/15\ b\^5\ d[\[CurlyPhi]]\^2\ Sin[\[Theta]]\^2)\)\ \((1\/r)\)\^3\), "+", InterpretationBox[\(O[1\/r]\^4\), SeriesData[ r, DirectedInfinity[ 1], {}, -2, 4, 1]]}], SeriesData[ r, DirectedInfinity[ 1], { Plus[ Times[ -1, Power[ d[ \[Theta]], 2]], Times[ -1, Power[ d[ \[CurlyPhi]], 2], Power[ Sin[ \[Theta]], 2]]], Plus[ Times[ 2, b, Power[ d[ \[Theta]], 2]], Times[ -2, b, Power[ d[ \[CurlyPhi]], 2], Power[ Sin[ \[Theta]], 2]]], Plus[ Times[ -1, Power[ dr, 2]], Power[ d[ t], 2], Times[ -2, Power[ b, 2], Power[ d[ \[Theta]], 2]], Times[ -2, Power[ b, 2], Power[ d[ \[CurlyPhi]], 2], Power[ Sin[ \[Theta]], 2]]], Plus[ Times[ -2, Power[ dr, 2], m], Times[ -2, m, Power[ d[ t], 2]], Times[ Rational[ 4, 3], Power[ b, 3], Power[ d[ \[Theta]], 2]], Times[ Rational[ -4, 3], Power[ b, 3], Power[ d[ \[CurlyPhi]], 2], Power[ Sin[ \[Theta]], 2]]], Plus[ Times[ Power[ dr, 2], Plus[ a, Times[ -2, m]], Plus[ a, Times[ 2, m]]], Times[ Power[ a, 2], Power[ d[ t], 2]], Times[ Rational[ -2, 3], Power[ b, 4], Power[ d[ \[Theta]], 2]], Times[ Rational[ -2, 3], Power[ b, 4], Power[ d[ \[CurlyPhi]], 2], Power[ Sin[ \[Theta]], 2]]], Plus[ Times[ -4, Power[ dr, 2], m, Plus[ Times[ -1, Power[ a, 2]], Times[ 2, Power[ m, 2]]]], Times[ Rational[ 4, 15], Power[ b, 5], Power[ d[ \[Theta]], 2]], Times[ Rational[ -4, 15], Power[ b, 5], Power[ d[ \[CurlyPhi]], 2], Power[ Sin[ \[Theta]], 2]]]}, -2, 4, 1]], (Short[ #, 32]&)]}], SequenceForm[ "LineElement = ", Short[ SeriesData[ r, DirectedInfinity[ 1], { Plus[ Times[ -1, Power[ d[ \[Theta]], 2]], Times[ -1, Power[ d[ \[CurlyPhi]], 2], Power[ Sin[ \[Theta]], 2]]], Plus[ Times[ 2, b, Power[ d[ \[Theta]], 2]], Times[ -2, b, Power[ d[ \[CurlyPhi]], 2], Power[ Sin[ \[Theta]], 2]]], Plus[ Times[ -1, Power[ dr, 2]], Power[ d[ t], 2], Times[ -2, Power[ b, 2], Power[ d[ \[Theta]], 2]], Times[ -2, Power[ b, 2], Power[ d[ \[CurlyPhi]], 2], Power[ Sin[ \[Theta]], 2]]], Plus[ Times[ -2, Power[ dr, 2], m], Times[ -2, m, Power[ d[ t], 2]], Times[ Rational[ 4, 3], Power[ b, 3], Power[ d[ \[Theta]], 2]], Times[ Rational[ -4, 3], Power[ b, 3], Power[ d[ \[CurlyPhi]], 2], Power[ Sin[ \[Theta]], 2]]], Plus[ Times[ Power[ dr, 2], Plus[ a, Times[ -2, m]], Plus[ a, Times[ 2, m]]], Times[ Power[ a, 2], Power[ d[ t], 2]], Times[ Rational[ -2, 3], Power[ b, 4], Power[ d[ \[Theta]], 2]], Times[ Rational[ -2, 3], Power[ b, 4], Power[ d[ \[CurlyPhi]], 2], Power[ Sin[ \[Theta]], 2]]], Plus[ Times[ -4, Power[ dr, 2], m, Plus[ Times[ -1, Power[ a, 2]], Times[ 2, Power[ m, 2]]]], Times[ Rational[ 4, 15], Power[ b, 5], Power[ d[ \[Theta]], 2]], Times[ Rational[ -4, 15], Power[ b, 5], Power[ d[ \[CurlyPhi]], 2], Power[ Sin[ \[Theta]], 2]]]}, -2, 4, 1], 32]], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ RowBox[{\("gUU = "\), "\[InvisibleSpace]", TagBox[ RowBox[{"(", GridBox[{ {"1", "0", "0", "0"}, {"0", \(-1\), "0", "0"}, {"0", "0", \(-1\), "0"}, {"0", "0", "0", \(-1\)} }], ")"}], (MatrixForm[ #]&)]}], SequenceForm[ "gUU = ", MatrixForm[ {{1, 0, 0, 0}, {0, -1, 0, 0}, {0, 0, -1, 0}, {0, 0, 0, -1}}]], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ \("gUU computed in "\[InvisibleSpace]0.`\[InvisibleSpace]" sec"\), SequenceForm[ "gUU computed in ", 0.0, " sec"], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ \("d[coframe] computed in "\[InvisibleSpace]0.766666666666665719` \[InvisibleSpace]" sec"\), SequenceForm[ "d[coframe] computed in ", 0.76666666666666572, " sec"], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ \("Gamma computed in "\[InvisibleSpace]0.116666666666660034` \[InvisibleSpace]" sec"\), SequenceForm[ "Gamma computed in ", 0.11666666666666003, " sec"], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ \("Riemann(dddd) computed in "\[InvisibleSpace]0.150000000000005684` \[InvisibleSpace]" sec"\), SequenceForm[ "Riemann(dddd) computed in ", 0.15000000000000568, " sec"], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ \("Riemann(Uddd) computed in "\[InvisibleSpace]0.0833333333333285963` \[InvisibleSpace]" sec"\), SequenceForm[ "Riemann(Uddd) computed in ", 0.083333333333328596, " sec"], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ \("Ricci computed in "\[InvisibleSpace]0.0166666666666657192` \[InvisibleSpace]" sec"\), SequenceForm[ "Ricci computed in ", 0.016666666666665719, " sec"], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ \("Weyl computed in "\[InvisibleSpace]0.100000000000008526` \[InvisibleSpace]" sec"\), SequenceForm[ "Weyl computed in ", 0.10000000000000853, " sec"], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ \("Einstein computed in "\[InvisibleSpace]0.0166666666666657192` \[InvisibleSpace]" sec"\), SequenceForm[ "Einstein computed in ", 0.016666666666665719, " sec"], Editable->False]], "Print"], Cell[BoxData[ \("All tasks completed in 1.43333 seconds"\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(Rdd\)], "Input", FontColor->GrayLevel[0.333333]], Cell[BoxData[ RowBox[{"{", RowBox[{ RowBox[{"{", RowBox[{ InterpretationBox[ RowBox[{\(a\^2\ \((1\/r)\)\^4\), "+", InterpretationBox[\(O[1\/r]\^5\), SeriesData[ r, DirectedInfinity[ 1], {}, 4, 5, 1]]}], SeriesData[ r, DirectedInfinity[ 1], { Power[ a, 2]}, 4, 5, 1]], ",", InterpretationBox[\(O[1\/r]\^6\), SeriesData[ r, DirectedInfinity[ 1], {}, 6, 6, 1]], ",", InterpretationBox[\(O[1\/r]\^6\), SeriesData[ r, DirectedInfinity[ 1], {}, 6, 6, 1]], ",", InterpretationBox[\(O[1\/r]\^6\), SeriesData[ r, DirectedInfinity[ 1], {}, 6, 6, 1]]}], "}"}], ",", RowBox[{"{", RowBox[{ InterpretationBox[\(O[1\/r]\^6\), SeriesData[ r, DirectedInfinity[ 1], {}, 6, 6, 1]], ",", InterpretationBox[ RowBox[{ \(\((\(-a\^2\) - 2\ b\^2)\)\ \((1\/r)\)\^4\), "+", \(4\ b\^2\ m\ \((1\/r)\)\^5\), "+", InterpretationBox[\(O[1\/r]\^6\), SeriesData[ r, DirectedInfinity[ 1], {}, 4, 6, 1]]}], SeriesData[ r, DirectedInfinity[ 1], { Plus[ Times[ -1, Power[ a, 2]], Times[ -2, Power[ b, 2]]], Times[ 4, Power[ b, 2], m]}, 4, 6, 1]], ",", InterpretationBox[ RowBox[{ \(2\ b\ Cot[\[Theta]]\ \((1\/r)\)\^3\), "+", \(2\ b\ \((b - m)\)\ Cot[\[Theta]]\ \((1\/r)\)\^4\), "+", InterpretationBox[\(O[1\/r]\^5\), SeriesData[ r, DirectedInfinity[ 1], {}, 3, 5, 1]]}], SeriesData[ r, DirectedInfinity[ 1], { Times[ 2, b, Cot[ \[Theta]]], Times[ 2, b, Plus[ b, Times[ -1, m]], Cot[ \[Theta]]]}, 3, 5, 1]], ",", InterpretationBox[\(O[1\/r]\^5\), SeriesData[ r, DirectedInfinity[ 1], {}, 5, 5, 1]]}], "}"}], ",", RowBox[{"{", RowBox[{ InterpretationBox[\(O[1\/r]\^6\), SeriesData[ r, DirectedInfinity[ 1], {}, 6, 6, 1]], ",", InterpretationBox[ RowBox[{ \(2\ b\ Cot[\[Theta]]\ \((1\/r)\)\^3\), "+", \(2\ b\ \((b - m)\)\ Cot[\[Theta]]\ \((1\/r)\)\^4\), "+", InterpretationBox[\(O[1\/r]\^5\), SeriesData[ r, DirectedInfinity[ 1], {}, 3, 5, 1]]}], SeriesData[ r, DirectedInfinity[ 1], { Times[ 2, b, Cot[ \[Theta]]], Times[ 2, b, Plus[ b, Times[ -1, m]], Cot[ \[Theta]]]}, 3, 5, 1]], ",", InterpretationBox[ RowBox[{ \(2\ b\ \((1\/r)\)\^3\), "+", \(\((a\^2 + 2\ b\^2 - 2\ b\ m)\)\ \((1\/r)\)\^4\), "+", InterpretationBox[\(O[1\/r]\^5\), SeriesData[ r, DirectedInfinity[ 1], {}, 3, 5, 1]]}], SeriesData[ r, DirectedInfinity[ 1], { Times[ 2, b], Plus[ Power[ a, 2], Times[ 2, Power[ b, 2]], Times[ -2, b, m]]}, 3, 5, 1]], ",", InterpretationBox[\(O[1\/r]\^5\), SeriesData[ r, DirectedInfinity[ 1], {}, 5, 5, 1]]}], "}"}], ",", RowBox[{"{", RowBox[{ InterpretationBox[\(O[1\/r]\^6\), SeriesData[ r, DirectedInfinity[ 1], {}, 6, 6, 1]], ",", InterpretationBox[\(O[1\/r]\^5\), SeriesData[ r, DirectedInfinity[ 1], {}, 5, 5, 1]], ",", InterpretationBox[\(O[1\/r]\^5\), SeriesData[ r, DirectedInfinity[ 1], {}, 5, 5, 1]], ",", InterpretationBox[ RowBox[{ \(2\ b\ \((1\/r)\)\^3\), "+", \(\((a\^2 + 2\ b\^2 + 2\ b\ m)\)\ \((1\/r)\)\^4\), "+", InterpretationBox[\(O[1\/r]\^5\), SeriesData[ r, DirectedInfinity[ 1], {}, 3, 5, 1]]}], SeriesData[ r, DirectedInfinity[ 1], { Times[ 2, b], Plus[ Power[ a, 2], Times[ 2, Power[ b, 2]], Times[ 2, b, m]]}, 3, 5, 1]]}], "}"}]}], "}"}]], "Output"] }, Open ]], Cell[TextData[{ "\t", StyleBox[ "Remember that the coordinate differentials have been set equal to their \ expressions in terms of the ", FontSize->16], StyleBox["e[i]", FontFamily->"Courier", FontSize->16], StyleBox[" everywhere. To recover the original expressions use ", FontSize->16], StyleBox["eTO$dx", FontFamily->"Courier", FontSize->16], StyleBox[" (see section 5.1.1):", FontSize->16] }], "Text", FontColor->RGBColor[0, 0, 1]], Cell[CellGroupData[{ Cell[BoxData[ \(LineElement\)], "Input", FontColor->GrayLevel[0.333333]], Cell[BoxData[ InterpretationBox[ RowBox[{ \((e[1]\^2 - e[2]\^2 - e[3]\^2 - e[4]\^2)\), "+", \(\((a\^2\ e[1]\^2 - 3\ m\^2\ e[1]\^2 + \((\(-a\^2\) + 3\ m\^2)\)\ e[1]\^2 + 3\ m\^2\ e[2]\^2 + \((\(-a\) + m)\)\ \((a + m)\)\ e[2]\^2 + \((a - 2\ m)\)\ \((a + 2\ m)\)\ e[2]\^2)\)\ \((1\/r)\)\^2\), "+", \(\(( 2\ a\^2\ m\ e[1]\^2 + m\ \((\(-a\^2\) + 3\ m\^2)\)\ e[1]\^2 + m\ \((\(-3\)\ a\^2 + 5\ m\^2)\)\ e[1]\^2 - 2\ m\ \((m\^2\ e[1]\^2 + \((\(-a\^2\) + 3\ m\^2)\)\ e[1]\^2) \) - 2\ \((a - 2\ m)\)\ m\ \((a + 2\ m)\)\ e[2]\^2 - 4\ m\ \((\(-a\^2\) + 2\ m\^2)\)\ e[2]\^2 - 2\ m\ \((m\^2\ e[2]\^2 - \((\(-a\) + m)\)\ \((a + m)\)\ e[2]\^2) \))\)\ \((1\/r)\)\^3\), "+", InterpretationBox[\(O[1\/r]\^4\), SeriesData[ r, DirectedInfinity[ 1], {}, 0, 4, 1]]}], SeriesData[ r, DirectedInfinity[ 1], { Plus[ Power[ e[ 1], 2], Times[ -1, Power[ e[ 2], 2]], Times[ -1, Power[ e[ 3], 2]], Times[ -1, Power[ e[ 4], 2]]], 0, Plus[ Times[ Power[ a, 2], Power[ e[ 1], 2]], Times[ -3, Power[ m, 2], Power[ e[ 1], 2]], Times[ Plus[ Times[ -1, Power[ a, 2]], Times[ 3, Power[ m, 2]]], Power[ e[ 1], 2]], Times[ 3, Power[ m, 2], Power[ e[ 2], 2]], Times[ Plus[ Times[ -1, a], m], Plus[ a, m], Power[ e[ 2], 2]], Times[ Plus[ a, Times[ -2, m]], Plus[ a, Times[ 2, m]], Power[ e[ 2], 2]]], Plus[ Times[ 2, Power[ a, 2], m, Power[ e[ 1], 2]], Times[ m, Plus[ Times[ -1, Power[ a, 2]], Times[ 3, Power[ m, 2]]], Power[ e[ 1], 2]], Times[ m, Plus[ Times[ -3, Power[ a, 2]], Times[ 5, Power[ m, 2]]], Power[ e[ 1], 2]], Times[ -2, m, Plus[ Times[ Power[ m, 2], Power[ e[ 1], 2]], Times[ Plus[ Times[ -1, Power[ a, 2]], Times[ 3, Power[ m, 2]]], Power[ e[ 1], 2]]]], Times[ -2, Plus[ a, Times[ -2, m]], m, Plus[ a, Times[ 2, m]], Power[ e[ 2], 2]], Times[ -4, m, Plus[ Times[ -1, Power[ a, 2]], Times[ 2, Power[ m, 2]]], Power[ e[ 2], 2]], Times[ -2, m, Plus[ Times[ Power[ m, 2], Power[ e[ 2], 2]], Times[ -1, Plus[ Times[ -1, a], m], Plus[ a, m], Power[ e[ 2], 2]]]]]}, 0, 4, 1]]], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(FacSimp[LineElement]\)], "Input", FontColor->GrayLevel[0.333333]], Cell[BoxData[ InterpretationBox[ RowBox[{\((e[1]\^2 - e[2]\^2 - e[3]\^2 - e[4]\^2)\), "+", InterpretationBox[\(O[1\/r]\^4\), SeriesData[ r, DirectedInfinity[ 1], {}, 0, 4, 1]]}], SeriesData[ r, DirectedInfinity[ 1], { Plus[ Power[ e[ 1], 2], Times[ -1, Power[ e[ 2], 2]], Times[ -1, Power[ e[ 3], 2]], Times[ -1, Power[ e[ 4], 2]]]}, 0, 4, 1]]], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(FacSimp[LineElement /. eTO$dx]\)], "Input", FontColor->GrayLevel[0.333333]], Cell[BoxData[ InterpretationBox[ RowBox[{ \(\(\(-\[ScriptD][\[Theta]]\^2\) - Sin[\[Theta]]\^2\ \[ScriptD][\[CurlyPhi]]\^2\)\/\((1\/r)\)\^2\), "+", \(\(2\ b\ \(( \[ScriptD][\[Theta]] - Sin[\[Theta]]\ \[ScriptD][\[CurlyPhi]]) \)\ \((\[ScriptD][\[Theta]] + Sin[\[Theta]]\ \[ScriptD][\[CurlyPhi]])\)\)\/\(1\/r\)\), "+", \((\(-\[ScriptD]r\^2\) + \[ScriptD][t]\^2 - 2\ b\^2\ \[ScriptD][\[Theta]]\^2 - 2\ b\^2\ Sin[\[Theta]]\^2\ \[ScriptD][\[CurlyPhi]]\^2)\), "-", \(\(2\ \(( 3\ m\ \[ScriptD]r\^2 + 3\ m\ \[ScriptD][t]\^2 - 2\ b\^3\ \[ScriptD][\[Theta]]\^2 + 2\ b\^3\ Sin[\[Theta]]\^2\ \[ScriptD][\[CurlyPhi]]\^2) \)\)\/\(3\ r\)\), "+", \(1\/3\ \(( 3\ a\^2\ \[ScriptD]r\^2 - 12\ m\^2\ \[ScriptD]r\^2 + 3\ a\^2\ \[ScriptD][t]\^2 - 2\ b\^4\ \[ScriptD][\[Theta]]\^2 - 2\ b\^4\ Sin[\[Theta]]\^2\ \[ScriptD][\[CurlyPhi]]\^2)\)\ \((1\/r)\)\^2\), "-", \(4\/15\ \(( \(-15\)\ a\^2\ m\ \[ScriptD]r\^2 + 30\ m\^3\ \[ScriptD]r\^2 - b\^5\ \[ScriptD][\[Theta]]\^2 + b\^5\ Sin[\[Theta]]\^2\ \[ScriptD][\[CurlyPhi]]\^2)\)\ \((1\/r)\)\^3\), "+", InterpretationBox[\(O[1\/r]\^4\), SeriesData[ r, DirectedInfinity[ 1], {}, -2, 4, 1]]}], SeriesData[ r, DirectedInfinity[ 1], { Plus[ Times[ -1, Power[ \[ScriptD][ \[Theta]], 2]], Times[ -1, Power[ Sin[ \[Theta]], 2], Power[ \[ScriptD][ \[CurlyPhi]], 2]]], Times[ 2, b, Plus[ \[ScriptD][ \[Theta]], Times[ -1, Sin[ \[Theta]], \[ScriptD][ \[CurlyPhi]]]], Plus[ \[ScriptD][ \[Theta]], Times[ Sin[ \[Theta]], \[ScriptD][ \[CurlyPhi]]]]], Plus[ Times[ -1, Power[ \[ScriptD]r, 2]], Power[ \[ScriptD][ t], 2], Times[ -2, Power[ b, 2], Power[ \[ScriptD][ \[Theta]], 2]], Times[ -2, Power[ b, 2], Power[ Sin[ \[Theta]], 2], Power[ \[ScriptD][ \[CurlyPhi]], 2]]], Times[ Rational[ -2, 3], Plus[ Times[ 3, m, Power[ \[ScriptD]r, 2]], Times[ 3, m, Power[ \[ScriptD][ t], 2]], Times[ -2, Power[ b, 3], Power[ \[ScriptD][ \[Theta]], 2]], Times[ 2, Power[ b, 3], Power[ Sin[ \[Theta]], 2], Power[ \[ScriptD][ \[CurlyPhi]], 2]]]], Times[ Rational[ 1, 3], Plus[ Times[ 3, Power[ a, 2], Power[ \[ScriptD]r, 2]], Times[ -12, Power[ m, 2], Power[ \[ScriptD]r, 2]], Times[ 3, Power[ a, 2], Power[ \[ScriptD][ t], 2]], Times[ -2, Power[ b, 4], Power[ \[ScriptD][ \[Theta]], 2]], Times[ -2, Power[ b, 4], Power[ Sin[ \[Theta]], 2], Power[ \[ScriptD][ \[CurlyPhi]], 2]]]], Times[ Rational[ -4, 15], Plus[ Times[ -15, Power[ a, 2], m, Power[ \[ScriptD]r, 2]], Times[ 30, Power[ m, 3], Power[ \[ScriptD]r, 2]], Times[ -1, Power[ b, 5], Power[ \[ScriptD][ \[Theta]], 2]], Times[ Power[ b, 5], Power[ Sin[ \[Theta]], 2], Power[ \[ScriptD][ \[CurlyPhi]], 2]]]]}, -2, 4, 1]]], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(Coefficient[%, \[ScriptD][r]^2]\)], "Input", FontColor->GrayLevel[0.333333]], Cell[BoxData[ \(\(-1\) + \(4\ a\^2\ m\)\/r\^3 - \(8\ m\^3\)\/r\^3 + a\^2\/r\^2 - \(4\ m\^2\)\/r\^2 - \(2\ m\)\/r\)], "Output"] }, Open ]], Cell[TextData[{ "\t", StyleBox["The function ", FontSize->16], StyleBox["GenCoef[x_,y_]", FontFamily->"Courier", FontSize->16], StyleBox[ " (\"GeneralizedCoefficient\") returns a series for the coefficient of y in \ x when x is a series:", FontSize->16] }], "Text", FontColor->RGBColor[0, 0, 1]], Cell[CellGroupData[{ Cell[BoxData[ \(GenCoef[%%, \[ScriptD][r]^2]\)], "Input", FontColor->GrayLevel[0.333333]], Cell[BoxData[ InterpretationBox[ RowBox[{ \(-1\), "-", \(\(2\ m\)\/r\), "+", \(\((a\^2 - 4\ m\^2)\)\ \((1\/r)\)\^2\), "+", \(\((4\ a\^2\ m - 8\ m\^3)\)\ \((1\/r)\)\^3\), "+", InterpretationBox[\(O[1\/r]\^4\), SeriesData[ r, DirectedInfinity[ 1], {}, 0, 4, 1]]}], SeriesData[ r, DirectedInfinity[ 1], {-1, Times[ -2, m], Plus[ Power[ a, 2], Times[ -4, Power[ m, 2]]], Plus[ Times[ 4, Power[ a, 2], m], Times[ -8, Power[ m, 3]]]}, 0, 4, 1]]], "Output"] }, Open ]] }, Closed]] }, Closed]], Cell[CellGroupData[{ Cell["\<\ 6.3 Expanding deList and dxRuleList in implicit frame \ calculations\ \>", "Subsection", ShowGroupOpenCloseIcon->True, FontSize->16], Cell[TextData[{ Cell[BoxData[ TagBox["", DisplayForm]]], Cell[BoxData[ TagBox["", DisplayForm]]], "\tIf an implicit frame is used (see Section 5.2), then, in addition to the \ metric, the expressions in ", StyleBox["deList", FontFamily->"Courier"], " and ", StyleBox["dxRuleList", FontFamily->"Courier"], " must be expanded in a series, especially if they are complicated. The \ reason is that before a normal expression can be multiplied by a series, it \ must be expanded itself in a series. Thus, if ", StyleBox["deList", FontFamily->"Courier"], " and ", StyleBox["dxRuleList", FontFamily->"Courier"], " are given as normal expressions, ", StyleBox["Mathematica", FontSlant->"Italic"], " will keep expanding these expressions again and again every time it \ performs a differentiation, causing the calculations to proceed very slowly." }], "Text", ShowGroupOpenCloseIcon->True, FontSize->16], Cell[CellGroupData[{ Cell[TextData[ " \[FilledSmallSquare] Example 12: Example 10 in an implicit NP null \ frame"], "Text", CellFrame->True, ShowGroupOpenCloseIcon->True, FontSize->16, FontWeight->"Bold", FontColor->RGBColor[0, 0, 1]], Cell[BoxData[ \(Clear$dx\)], "Input", FontColor->GrayLevel[0.333333]], Cell[CellGroupData[{ Cell[BoxData[ \(NPframe = PowerExpand[ FacSimp[{\((ONframe[\([1]\)] - ONframe[\([2]\)])\)/\@2, \((ONframe[\([1]\)] + ONframe[\([2]\)])\)/\@2, \((ONframe[\([3]\)] + I\ ONframe[\([4]\)])\)/\@2, \((ONframe[\([3]\)] - I\ ONframe[\([4]\)])\)/\@2}]]\)], "Input", FontColor->GrayLevel[0.333333]], Cell[BoxData[ \({\(-\(\(dr\ r\)\/\(\@2\ \@\(a\^2 - 2\ m\ r + r\^2\)\)\)\) + \(\@\(a\^2 - 2\ m\ r + r\^2\)\ d[t]\)\/\(\@2\ r\), \(dr\ r\)\/\(\@2\ \@\(a\^2 - 2\ m\ r + r\^2\)\) + \(\@\(a\^2 - 2\ m\ r + r\^2\)\ d[t]\)\/\(\@2\ r\), \(E\^\(-\(b\/r\)\)\ r\ d[\[Theta]]\)\/\@2 + \(I\ E\^\(b/r\)\ r\ d[\[CurlyPhi]]\ Sin[\[Theta]]\)\/\@2, \(E\^\(-\(b\/r\)\)\ r\ d[\[Theta]]\)\/\@2 - \(I\ E\^\(b/r\)\ r\ d[\[CurlyPhi]]\ Sin[\[Theta]]\)\/\@2}\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(dxTOe = PowerExpand[ FacSimp[\(Solve[ NPframe == {e[1], e[2], e[3], e[4]}, {d[t], d[r], d[\[Theta]], d[\[CurlyPhi]]}]\)[\([1]\)]]]\)], "Input", FontColor->GrayLevel[0.333333]], Cell[BoxData[ \({d[\[Theta]] \[Rule] \(E\^\(b/r\)\ e[3]\)\/\(\@2\ r\) + \(E\^\(b/r\)\ e[4]\)\/\(\@2\ r\), d[\[CurlyPhi]] \[Rule] \(-\(\(I\ E\^\(-\(b\/r\)\)\ Csc[\[Theta]]\ e[3]\)\/\(\@2\ r\)\)\) + \(I\ E\^\(-\(b\/r\)\)\ Csc[\[Theta]]\ e[4]\)\/\(\@2\ r\), d[t] \[Rule] \(r\ e[1]\)\/\(\@2\ \@\(a\^2 - 2\ m\ r + r\^2\)\) + \(r\ e[2]\)\/\(\@2\ \@\(a\^2 - 2\ m\ r + r\^2\)\), dr \[Rule] \(-\(\(\@\(a\^2 - 2\ m\ r + r\^2\)\ e[1]\)\/\(\@2\ r\)\)\) + \(\@\(a\^2 - 2\ m\ r + r\^2\)\ e[2]\)\/\(\@2\ r\)}\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(dNPframeTOee = PowerExpand[FacSimp[d[NPframe] /. dxTOe]]\)], "Input", FontColor->GrayLevel[0.333333]], Cell[BoxData[ \({\(\((a\^2 - m\ r)\)\ e[1]\[Wedge]e[2]\)\/\(\@2\ r\^2\ \@\(a\^2 - 2\ m\ r + r\^2\)\), \(\((a\^2 - m\ r)\)\ e[1]\[Wedge]e[2]\)\/\(\@2\ r\^2\ \@\(a\^2 - 2\ m\ r + r\^2\)\), \(-\(\(\@\(a\^2 - 2\ m\ r + r\^2\)\ e[1]\[Wedge]e[3]\)\/\(\@2\ r\^2\)\)\) - \(b\ \@\(a\^2 - 2\ m\ r + r\^2\)\ e[1]\[Wedge]e[4]\)\/\(\@2\ r\^3\) + \(\@\(a\^2 - 2\ m\ r + r\^2\)\ e[2]\[Wedge]e[3]\)\/\(\@2\ r\^2\) + \(b\ \@\(a\^2 - 2\ m\ r + r\^2\)\ e[2]\[Wedge]e[4]\)\/\(\@2\ r\^3\) - \(E\^\(b/r\)\ Cot[\[Theta]]\ e[3]\[Wedge]e[4]\)\/\(\@2\ r\), \(-\(\(b\ \@\(a\^2 - 2\ m\ r + r\^2\)\ e[1]\[Wedge]e[3]\)\/\(\@2\ r\^3\)\)\) - \(\@\(a\^2 - 2\ m\ r + r\^2\)\ e[1]\[Wedge]e[4]\)\/\(\@2\ r\^2\) + \(b\ \@\(a\^2 - 2\ m\ r + r\^2\)\ e[2]\[Wedge]e[3]\)\/\(\@2\ r\^3\) + \(\@\(a\^2 - 2\ m\ r + r\^2\)\ e[2]\[Wedge]e[4]\)\/\(\@2\ r\^2\) + \(E\^\(b/r\)\ Cot[\[Theta]]\ e[3]\[Wedge]e[4]\)\/\(\@2\ r\)}\)], "Output"] }, Open ]], Cell[TextData[{ Cell[BoxData[ TagBox["", DisplayForm]]], Cell[BoxData[ TagBox["", DisplayForm]]], "\tFor implicit frame calculations, the user must define the global \ variables ", StyleBox["deList", FontFamily->"Courier"], " and ", StyleBox["dxRuleList", FontFamily->"Courier"], ". For this problem, only the ", StyleBox["\[Theta]", FontFamily->"Courier"], ", ", StyleBox["r", FontFamily->"Courier"], " differentials need to be included in ", StyleBox["dxRuleList", FontFamily->"Courier"], " :" }], "Text", FontSize->16, FontColor->RGBColor[0, 0, 1]], Cell[BoxData[ \(\(deList = dNPframeTOee; \)\)], "Input", FontColor->GrayLevel[0.333333]], Cell[BoxData[ \(\(dxTOe2 = Drop[dxTOe, {2, 3}]; \)\)], "Input", FontColor->GrayLevel[0.333333]], Cell[CellGroupData[{ Cell[BoxData[ \(dxRuleList = dxTOe2\)], "Input", FontColor->GrayLevel[0.333333]], Cell[BoxData[ \({d[\[Theta]] \[Rule] \(E\^\(b/r\)\ e[3]\)\/\(\@2\ r\) + \(E\^\(b/r\)\ e[4]\)\/\(\@2\ r\), dr \[Rule] \(-\(\(\@\(a\^2 - 2\ m\ r + r\^2\)\ e[1]\)\/\(\@2\ r\)\)\) + \(\@\(a\^2 - 2\ m\ r + r\^2\)\ e[2]\)\/\(\@2\ r\)}\)], "Output"] }, Open ]], Cell[TextData[{ Cell[BoxData[ TagBox["", DisplayForm]]], Cell[BoxData[ TagBox["", DisplayForm]]], "\tOne should check that ", StyleBox["deList", FontFamily->"Courier"], " is a set of closed 2-forms, giving the ", StyleBox["d[e[i]]", FontFamily->"Courier"], ":" }], "Text", FontSize->16, FontColor->RGBColor[0, 0, 1]], Cell[CellGroupData[{ Cell[BoxData[ \(checkClosure = FacSimp[\(d[deList] /. d[e[i_]] :> deList[\([i]\)]\) /. dxRuleList] // Timing\)], "Input", FontColor->GrayLevel[0.333333]], Cell[BoxData[ \({0.850000000000008526`\ Second, {0, 0, 0, 0}}\)], "Output"] }, Open ]], Cell[TextData[{ Cell[BoxData[ TagBox["", DisplayForm]]], Cell[BoxData[ TagBox["", DisplayForm]]], "\t" }], "Text", FontSize->16], Cell[CellGroupData[{ Cell["\t(1) Exact calculation", "Text", CellFrame->True, ShowGroupOpenCloseIcon->True, FontSize->16, FontColor->RGBColor[0, 0, 1]], Cell[CellGroupData[{ Cell[BoxData[ RowBox[{"RGtensors", "[", RowBox[{ StyleBox[ \({{0, 1, 0, 0}, {1, 0, 0, 0}, {0, 0, 0, \(-1\)}, {0, 0, \(-1\), 0}} \), FontFamily->"Courier"], ",", "xCoord", ",", \({e[]}\)}], "]"}]], "Input", FontColor->GrayLevel[0.333333]], Cell[BoxData[ InterpretationBox[ RowBox[{\("gdd = "\), "\[InvisibleSpace]", TagBox[ RowBox[{"(", GridBox[{ {"0", "1", "0", "0"}, {"1", "0", "0", "0"}, {"0", "0", "0", \(-1\)}, {"0", "0", \(-1\), "0"} }], ")"}], (MatrixForm[ #]&)]}], SequenceForm[ "gdd = ", MatrixForm[ {{0, 1, 0, 0}, {1, 0, 0, 0}, {0, 0, 0, -1}, {0, 0, -1, 0}}]], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ RowBox[{\("LineElement = "\), "\[InvisibleSpace]", TagBox[\(2\ e[1]\ e[2] - 2\ e[3]\ e[4]\), (Short[ #, 32]&)]}], SequenceForm[ "LineElement = ", Short[ Plus[ Times[ 2, e[ 1], e[ 2]], Times[ -2, e[ 3], e[ 4]]], 32]], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ RowBox[{\("gUU = "\), "\[InvisibleSpace]", TagBox[ RowBox[{"(", GridBox[{ {"0", "1", "0", "0"}, {"1", "0", "0", "0"}, {"0", "0", "0", \(-1\)}, {"0", "0", \(-1\), "0"} }], ")"}], (MatrixForm[ #]&)]}], SequenceForm[ "gUU = ", MatrixForm[ {{0, 1, 0, 0}, {1, 0, 0, 0}, {0, 0, 0, -1}, {0, 0, -1, 0}}]], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ \("gUU computed in "\[InvisibleSpace]0.0333333333333314385` \[InvisibleSpace]" sec"\), SequenceForm[ "gUU computed in ", 0.033333333333331439, " sec"], Editable->False]], "Print"], Cell[BoxData[ \("deList closure verified"\)], "Print"], Cell[BoxData[ InterpretationBox[ \("Gamma computed in "\[InvisibleSpace]1.04999999999999715` \[InvisibleSpace]" sec"\), SequenceForm[ "Gamma computed in ", 1.0499999999999972, " sec"], Editable->False]], "Print"], Cell[BoxData[ \("Spin coefficients \[Tau], \[Kappa], \[Rho], \[Sigma], \[Gamma], \ \[Epsilon], \[Alpha], \[Beta], \[Nu], $\[Pi], \[Lambda], \[Mu] defined"\)], "Print"], Cell[BoxData[ \("Differential Operators \[GothicCapitalD][x_], \[CapitalDelta][x_], \ \[Delta][x_], \[Delta]B[x_] defined"\)], "Print"], Cell[BoxData[ InterpretationBox[ \("Riemann(dddd) computed in "\[InvisibleSpace]0.200000000000002842` \[InvisibleSpace]" sec"\), SequenceForm[ "Riemann(dddd) computed in ", 0.20000000000000284, " sec"], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ \("Riemann(Uddd) computed in "\[InvisibleSpace]0.116666666666660034` \[InvisibleSpace]" sec"\), SequenceForm[ "Riemann(Uddd) computed in ", 0.11666666666666003, " sec"], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ \("Ricci computed in "\[InvisibleSpace]0.0333333333333456494` \[InvisibleSpace]" sec"\), SequenceForm[ "Ricci computed in ", 0.033333333333345649, " sec"], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ \("Weyl computed in "\[InvisibleSpace]0.133333333333325754` \[InvisibleSpace]" sec"\), SequenceForm[ "Weyl computed in ", 0.13333333333332575, " sec"], Editable->False]], "Print"], Cell[BoxData[ \("NP variables \[CapitalPhi][i,j], \[CapitalLambda] and \[CapitalPsi][i] \ defined"\)], "Print"], Cell[BoxData[ InterpretationBox[ \("Einstein computed in "\[InvisibleSpace]0.0333333333333314385` \[InvisibleSpace]" sec"\), SequenceForm[ "Einstein computed in ", 0.033333333333331439, " sec"], Editable->False]], "Print"], Cell[BoxData[ \("All tasks completed in 1.78333 seconds"\)], "Output"] }, Open ]] }, Closed]], Cell[CellGroupData[{ Cell[BoxData[ \(ExactRdd = Rdd\)], "Input", FontColor->GrayLevel[0.333333]], Cell[BoxData[ \({{\(-\(\(b\^2\ \((a\^2 - 2\ m\ r + r\^2)\)\)\/r\^6\)\), \(a\^2\ b\^2 - 2\ b\^2\ m\ r + a\^2\ r\^2 + b\^2\ r\^2\)\/r\^6, \(-\(\(b\ E\^\(b/r\)\ \@\(a\^2 - 2\ m\ r + r\^2\)\ Cot[\[Theta]]\)\/r \^4\)\), \(-\(\(b\ E\^\(b/r\)\ \@\(a\^2 - 2\ m\ r + r\^2\)\ Cot[\[Theta]]\)\/r \^4\)\)}, { \(a\^2\ b\^2 - 2\ b\^2\ m\ r + a\^2\ r\^2 + b\^2\ r\^2\)\/r\^6, \(-\(\(b\^2\ \((a\^2 - 2\ m\ r + r\^2)\)\)\/r\^6\)\), \(b\ E\^\(b/r\)\ \@\(a\^2 - 2\ m\ r + r\^2\)\ Cot[\[Theta]]\)\/r\^4, \(b\ E\^\(b/r\)\ \@\(a\^2 - 2\ m\ r + r\^2\)\ Cot[\[Theta]]\)\/r \^4}, {\(- \(\(b\ E\^\(b/r\)\ \@\(a\^2 - 2\ m\ r + r\^2\)\ Cot[\[Theta]]\)\/r \^4\)\), \(b\ E\^\(b/r\)\ \@\(a\^2 - 2\ m\ r + r\^2\)\ Cot[\[Theta]]\)\/r\^4, \(-\(\(2\ b\ \((\(-a\^2\) + m\ r)\)\)\/r\^5\)\), \(a\^2 - r\^2 + E\^\(\(2\ b\)\/r\)\ r\^2\)\/r\^4}, { \(-\(\(b\ E\^\(b/r\)\ \@\(a\^2 - 2\ m\ r + r\^2\)\ Cot[\[Theta]]\)\/r \^4\)\), \(b\ E\^\(b/r\)\ \@\(a\^2 - 2\ m\ r + r\^2\)\ Cot[\[Theta]]\)\/r\^4, \(a\^2 - r\^2 + E\^\(\(2\ b\)\/r\)\ r\^2\)\/r\^4, \(-\(\(2\ b\ \((\(-a\^2\) + m\ r)\)\)\/r\^5\)\)}}\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \({\[CapitalPhi][0, 0], \[CapitalPhi][0, 2], \[CapitalPhi][1, 2]}\)], "Input", FontColor->GrayLevel[0.333333]], Cell[BoxData[ \({\(-\(\(b\^2\ \((a\^2 - 2\ m\ r + r\^2)\)\)\/\(2\ r\^6\)\)\), \(-\(\(b\ \((\(-a\^2\) + m\ r)\)\)\/r\^5\)\), \(b\ E\^\(b/r\)\ \@\(a\^2 - 2\ m\ r + r\^2\)\ Cot[\[Theta]]\)\/\(2\ r\^4\)}\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(ExactPSI = \[CapitalPsi]/@{0, 1, 2, 3, 4}\)], "Input", FontColor->GrayLevel[0.333333]], Cell[BoxData[ \({0, \(b\ E\^\(b/r\)\ \@\(a\^2 - 2\ m\ r + r\^2\)\ Cot[\[Theta]]\)\/\(2\ r\^4\), \(- \(\(2\ a\^2\ b\^2 - 4\ b\^2\ m\ r - 6\ a\^2\ r\^2 + 2\ b\^2\ r\^2 + 6\ m\ r\^3 - r\^4 + E\^\(\(2\ b\)\/r\)\ r\^4\)\/\(6\ r\^6\)\)\), \(-\(\(b\ E\^\(b/r\)\ \@\(a\^2 - 2\ m\ r + r\^2\)\ Cot[\[Theta]]\)\/\(2 \ r\^4\)\)\), 0}\)], "Output"] }, Open ]], Cell[BoxData[ \(\n\)], "Input"], Cell[CellGroupData[{ Cell["\t(1) Approximate calculation", "Text", CellFrame->True, ShowGroupOpenCloseIcon->True, FontSize->16, FontColor->RGBColor[0, 0, 1]], Cell[CellGroupData[{ Cell[BoxData[ \(Clear$dx\)], "Input", FontColor->GrayLevel[0.333333]], Cell[BoxData[ \("deList and dxRuleList also cleared"\)], "Output", FontSize->16, FontSlant->"Italic", FontColor->RGBColor[1, 0, 1]] }, Open ]], Cell[TextData[{ Cell[BoxData[ TagBox["", DisplayForm]]], Cell[BoxData[ TagBox["", DisplayForm]]], "\tAfter an implicit frame calculation, ", StyleBox["Clear$dx", FontFamily->"Courier"], " clears ", StyleBox["deList", FontFamily->"Courier"], " and ", StyleBox["dxRuleList", FontFamily->"Courier"], " also." }], "Text", FontSize->16, FontColor->RGBColor[0, 0, 1]], Cell[CellGroupData[{ Cell[BoxData[ \(deList = FacSimp[Series[dNPframeTOee, {r, Infinity, 3}]]\)], "Input", FontColor->GrayLevel[0.333333]], Cell[BoxData[ RowBox[{"{", RowBox[{ InterpretationBox[ RowBox[{ \(-\(\(m\ e[1]\[Wedge]e[2]\ \((1\/r)\)\^2\)\/\@2\)\), "+", \(\(\((a - m)\)\ \((a + m)\)\ e[1]\[Wedge]e[2]\ \((1\/r)\)\^3\)\/\@2\), "+", InterpretationBox[\(O[1\/r]\^4\), SeriesData[ r, DirectedInfinity[ 1], {}, 2, 4, 1]]}], SeriesData[ r, DirectedInfinity[ 1], { Times[ -1, Power[ 2, Rational[ -1, 2]], m, Wedge[ e[ 1], e[ 2]]], Times[ Power[ 2, Rational[ -1, 2]], Plus[ a, Times[ -1, m]], Plus[ a, m], Wedge[ e[ 1], e[ 2]]]}, 2, 4, 1]], ",", InterpretationBox[ RowBox[{ \(-\(\(m\ e[1]\[Wedge]e[2]\ \((1\/r)\)\^2\)\/\@2\)\), "+", \(\(\((a - m)\)\ \((a + m)\)\ e[1]\[Wedge]e[2]\ \((1\/r)\)\^3\)\/\@2\), "+", InterpretationBox[\(O[1\/r]\^4\), SeriesData[ r, DirectedInfinity[ 1], {}, 2, 4, 1]]}], SeriesData[ r, DirectedInfinity[ 1], { Times[ -1, Power[ 2, Rational[ -1, 2]], m, Wedge[ e[ 1], e[ 2]]], Times[ Power[ 2, Rational[ -1, 2]], Plus[ a, Times[ -1, m]], Plus[ a, m], Wedge[ e[ 1], e[ 2]]]}, 2, 4, 1]], ",", InterpretationBox[ RowBox[{ \(\(\(-\(\(e[1]\[Wedge]e[3]\)\/\@2\)\) + \(e[2]\[Wedge]e[3]\)\/\@2 - \(Cot[\[Theta]]\ e[3]\[Wedge]e[4]\)\/\@2\)\/r\), "+", \(\((\(m\ e[1]\[Wedge]e[3]\)\/\@2 - \(b\ e[1]\[Wedge]e[4]\)\/\@2 - \(m\ e[2]\[Wedge]e[3]\)\/\@2 + \(b\ e[2]\[Wedge]e[4]\)\/\@2 - \(b\ Cot[\[Theta]]\ e[3]\[Wedge]e[4]\)\/\@2)\)\ \((1\/r)\)\^2\), "+", \(\((\(-\(\(\((a - m)\)\ \((a + m)\)\ e[1]\[Wedge]e[3]\)\/\(2\ \@2\)\)\) + \(b\ m\ e[1]\[Wedge]e[4]\)\/\@2 + \(\((a - m)\)\ \((a + m)\)\ e[2]\[Wedge]e[3]\)\/\(2\ \@2\) - \(b\ m\ e[2]\[Wedge]e[4]\)\/\@2 - \(b\^2\ Cot[\[Theta]]\ e[3]\[Wedge]e[4]\)\/\(2\ \@2\))\)\ \((1\/r)\)\^3\), "+", InterpretationBox[\(O[1\/r]\^4\), SeriesData[ r, DirectedInfinity[ 1], {}, 1, 4, 1]]}], SeriesData[ r, DirectedInfinity[ 1], { Plus[ Times[ -1, Power[ 2, Rational[ -1, 2]], Wedge[ e[ 1], e[ 3]]], Times[ Power[ 2, Rational[ -1, 2]], Wedge[ e[ 2], e[ 3]]], Times[ -1, Power[ 2, Rational[ -1, 2]], Cot[ \[Theta]], Wedge[ e[ 3], e[ 4]]]], Plus[ Times[ Power[ 2, Rational[ -1, 2]], m, Wedge[ e[ 1], e[ 3]]], Times[ -1, Power[ 2, Rational[ -1, 2]], b, Wedge[ e[ 1], e[ 4]]], Times[ -1, Power[ 2, Rational[ -1, 2]], m, Wedge[ e[ 2], e[ 3]]], Times[ Power[ 2, Rational[ -1, 2]], b, Wedge[ e[ 2], e[ 4]]], Times[ -1, Power[ 2, Rational[ -1, 2]], b, Cot[ \[Theta]], Wedge[ e[ 3], e[ 4]]]], Plus[ Times[ Rational[ -1, 2], Power[ 2, Rational[ -1, 2]], Plus[ a, Times[ -1, m]], Plus[ a, m], Wedge[ e[ 1], e[ 3]]], Times[ Power[ 2, Rational[ -1, 2]], b, m, Wedge[ e[ 1], e[ 4]]], Times[ Rational[ 1, 2], Power[ 2, Rational[ -1, 2]], Plus[ a, Times[ -1, m]], Plus[ a, m], Wedge[ e[ 2], e[ 3]]], Times[ -1, Power[ 2, Rational[ -1, 2]], b, m, Wedge[ e[ 2], e[ 4]]], Times[ Rational[ -1, 2], Power[ 2, Rational[ -1, 2]], Power[ b, 2], Cot[ \[Theta]], Wedge[ e[ 3], e[ 4]]]]}, 1, 4, 1]], ",", InterpretationBox[ RowBox[{ \(\(\(-\(\(e[1]\[Wedge]e[4]\)\/\@2\)\) + \(e[2]\[Wedge]e[4]\)\/\@2 + \(Cot[\[Theta]]\ e[3]\[Wedge]e[4]\)\/\@2\)\/r\), "+", \(\((\(-\(\(b\ e[1]\[Wedge]e[3]\)\/\@2\)\) + \(m\ e[1]\[Wedge]e[4]\)\/\@2 + \(b\ e[2]\[Wedge]e[3]\)\/\@2 - \(m\ e[2]\[Wedge]e[4]\)\/\@2 + \(b\ Cot[\[Theta]]\ e[3]\[Wedge]e[4]\)\/\@2)\)\ \((1\/r)\)\^2\), "+", \(\((\(b\ m\ e[1]\[Wedge]e[3]\)\/\@2 - \(\((a - m)\)\ \((a + m)\)\ e[1]\[Wedge]e[4]\)\/\(2\ \@2\) - \(b\ m\ e[2]\[Wedge]e[3]\)\/\@2 + \(\((a - m)\)\ \((a + m)\)\ e[2]\[Wedge]e[4]\)\/\(2\ \@2\) + \(b\^2\ Cot[\[Theta]]\ e[3]\[Wedge]e[4]\)\/\(2\ \@2\))\)\ \((1\/r)\)\^3\), "+", InterpretationBox[\(O[1\/r]\^4\), SeriesData[ r, DirectedInfinity[ 1], {}, 1, 4, 1]]}], SeriesData[ r, DirectedInfinity[ 1], { Plus[ Times[ -1, Power[ 2, Rational[ -1, 2]], Wedge[ e[ 1], e[ 4]]], Times[ Power[ 2, Rational[ -1, 2]], Wedge[ e[ 2], e[ 4]]], Times[ Power[ 2, Rational[ -1, 2]], Cot[ \[Theta]], Wedge[ e[ 3], e[ 4]]]], Plus[ Times[ -1, Power[ 2, Rational[ -1, 2]], b, Wedge[ e[ 1], e[ 3]]], Times[ Power[ 2, Rational[ -1, 2]], m, Wedge[ e[ 1], e[ 4]]], Times[ Power[ 2, Rational[ -1, 2]], b, Wedge[ e[ 2], e[ 3]]], Times[ -1, Power[ 2, Rational[ -1, 2]], m, Wedge[ e[ 2], e[ 4]]], Times[ Power[ 2, Rational[ -1, 2]], b, Cot[ \[Theta]], Wedge[ e[ 3], e[ 4]]]], Plus[ Times[ Power[ 2, Rational[ -1, 2]], b, m, Wedge[ e[ 1], e[ 3]]], Times[ Rational[ -1, 2], Power[ 2, Rational[ -1, 2]], Plus[ a, Times[ -1, m]], Plus[ a, m], Wedge[ e[ 1], e[ 4]]], Times[ -1, Power[ 2, Rational[ -1, 2]], b, m, Wedge[ e[ 2], e[ 3]]], Times[ Rational[ 1, 2], Power[ 2, Rational[ -1, 2]], Plus[ a, Times[ -1, m]], Plus[ a, m], Wedge[ e[ 2], e[ 4]]], Times[ Rational[ 1, 2], Power[ 2, Rational[ -1, 2]], Power[ b, 2], Cot[ \[Theta]], Wedge[ e[ 3], e[ 4]]]]}, 1, 4, 1]]}], "}"}]], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(dxRuleList = Map[Rule[#[\([1]\)], FacSimp[Series[#[\([2]\)], {r, Infinity, 3}]]]&, dxTOe2]\)], "Input", FontColor->GrayLevel[0.333333]], Cell[BoxData[ RowBox[{"{", RowBox[{ RowBox[{\(d[\[Theta]]\), "\[Rule]", InterpretationBox[ RowBox[{ \(\(e[3]\/\@2 + e[4]\/\@2\)\/r\), "+", \(\((\(b\ e[3]\)\/\@2 + \(b\ e[4]\)\/\@2)\)\ \((1\/r)\)\^2\), "+", \(\(( \(b\^2\ e[3]\)\/\(2\ \@2\) + \(b\^2\ e[4]\)\/\(2\ \@2\))\)\ \((1\/r)\)\^3\), "+", InterpretationBox[\(O[1\/r]\^4\), SeriesData[ r, DirectedInfinity[ 1], {}, 1, 4, 1]]}], SeriesData[ r, DirectedInfinity[ 1], { Plus[ Times[ Power[ 2, Rational[ -1, 2]], e[ 3]], Times[ Power[ 2, Rational[ -1, 2]], e[ 4]]], Plus[ Times[ Power[ 2, Rational[ -1, 2]], b, e[ 3]], Times[ Power[ 2, Rational[ -1, 2]], b, e[ 4]]], Plus[ Times[ Rational[ 1, 2], Power[ 2, Rational[ -1, 2]], Power[ b, 2], e[ 3]], Times[ Rational[ 1, 2], Power[ 2, Rational[ -1, 2]], Power[ b, 2], e[ 4]]]}, 1, 4, 1]]}], ",", RowBox[{"dr", "\[Rule]", InterpretationBox[ RowBox[{ \((\(-\(e[1]\/\@2\)\) + e[2]\/\@2)\), "+", \(\(\(m\ e[1]\)\/\@2 - \(m\ e[2]\)\/\@2\)\/r\), "+", \(\((\(-\(\(\((a - m)\)\ \((a + m)\)\ e[1]\)\/\(2\ \@2\)\)\) + \(\((a - m)\)\ \((a + m)\)\ e[2]\)\/\(2\ \@2\))\)\ \((1\/r)\)\^2\), "+", \(\((\(m\ \((\(-a\) + m)\)\ \((a + m)\)\ e[1]\)\/\(2\ \@2\) - \(m\ \((\(-a\) + m)\)\ \((a + m)\)\ e[2]\)\/\(2\ \@2\)) \)\ \((1\/r)\)\^3\), "+", InterpretationBox[\(O[1\/r]\^4\), SeriesData[ r, DirectedInfinity[ 1], {}, 0, 4, 1]]}], SeriesData[ r, DirectedInfinity[ 1], { Plus[ Times[ -1, Power[ 2, Rational[ -1, 2]], e[ 1]], Times[ Power[ 2, Rational[ -1, 2]], e[ 2]]], Plus[ Times[ Power[ 2, Rational[ -1, 2]], m, e[ 1]], Times[ -1, Power[ 2, Rational[ -1, 2]], m, e[ 2]]], Plus[ Times[ Rational[ -1, 2], Power[ 2, Rational[ -1, 2]], Plus[ a, Times[ -1, m]], Plus[ a, m], e[ 1]], Times[ Rational[ 1, 2], Power[ 2, Rational[ -1, 2]], Plus[ a, Times[ -1, m]], Plus[ a, m], e[ 2]]], Plus[ Times[ Rational[ 1, 2], Power[ 2, Rational[ -1, 2]], m, Plus[ Times[ -1, a], m], Plus[ a, m], e[ 1]], Times[ Rational[ -1, 2], Power[ 2, Rational[ -1, 2]], m, Plus[ Times[ -1, a], m], Plus[ a, m], e[ 2]]]}, 0, 4, 1]]}]}], "}"}]], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(checkClosure = FacSimp[\(d[deList] /. d[e[i_]] :> deList[\([i]\)]\) /. dxRuleList] // Timing\)], "Input", FontColor->GrayLevel[0.333333]], Cell[BoxData[ RowBox[{"{", RowBox[{\(1.95000000000000284`\ Second\), ",", RowBox[{"{", RowBox[{ InterpretationBox[\(O[1\/r]\^4\), SeriesData[ r, DirectedInfinity[ 1], {}, 4, 4, 1]], ",", InterpretationBox[\(O[1\/r]\^4\), SeriesData[ r, DirectedInfinity[ 1], {}, 4, 4, 1]], ",", InterpretationBox[\(O[1\/r]\^4\), SeriesData[ r, DirectedInfinity[ 1], {}, 4, 4, 1]], ",", InterpretationBox[\(O[1\/r]\^4\), SeriesData[ r, DirectedInfinity[ 1], {}, 4, 4, 1]]}], "}"}]}], "}"}]], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[TextData[{ StyleBox["GenCoef[x_,y_]", FontFamily->"Courier"], " returns the correct series coefficient of y in x, when x is a series - \ otherwise acts as ", StyleBox["Coefficient[x_,y_]", FontFamily->"Courier"] }], "Text", CellFrame->True, ShowGroupOpenCloseIcon->True, FontSize->16, FontColor->RGBColor[0, 0, 1]], Cell[CellGroupData[{ Cell[BoxData[ \(Coefficient[deList, e[1]\[Wedge]e[3]]\)], "Input", FontColor->GrayLevel[0.333333]], Cell[BoxData[ \({0, 0, \(-\(a\^2\/\(2\ \@2\ r\^3\)\)\) + m\^2\/\(2\ \@2\ r\^3\) + m\/\(\@2\ r\^2\) - 1\/\(\@2\ r\), \(b\ m\)\/\(\@2\ r\^3\) - b\/\(\@2\ r\^2\)}\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(GenCoef[deList, e[1]\[Wedge]e[3]]\)], "Input", FontColor->GrayLevel[0.333333]], Cell[BoxData[ RowBox[{"{", RowBox[{ InterpretationBox[\(O[1\/r]\^4\), SeriesData[ r, DirectedInfinity[ 1], {}, 4, 4, 1]], ",", InterpretationBox[\(O[1\/r]\^4\), SeriesData[ r, DirectedInfinity[ 1], {}, 4, 4, 1]], ",", InterpretationBox[ RowBox[{ \(-\(1\/\(\@2\ r\)\)\), "+", \(\(m\ \((1\/r)\)\^2\)\/\@2\), "-", \(\(\((\((a - m)\)\ \((a + m)\))\)\ \((1\/r)\)\^3\)\/\(2\ \@2\)\), "+", InterpretationBox[\(O[1\/r]\^4\), SeriesData[ r, DirectedInfinity[ 1], {}, 1, 4, 1]]}], SeriesData[ r, DirectedInfinity[ 1], { Times[ -1, Power[ 2, Rational[ -1, 2]]], Times[ Power[ 2, Rational[ -1, 2]], m], Times[ Rational[ -1, 2], Power[ 2, Rational[ -1, 2]], Plus[ a, Times[ -1, m]], Plus[ a, m]]}, 1, 4, 1]], ",", InterpretationBox[ RowBox[{ \(-\(\(b\ \((1\/r)\)\^2\)\/\@2\)\), "+", \(\(b\ m\ \((1\/r)\)\^3\)\/\@2\), "+", InterpretationBox[\(O[1\/r]\^4\), SeriesData[ r, DirectedInfinity[ 1], {}, 2, 4, 1]]}], SeriesData[ r, DirectedInfinity[ 1], { Times[ -1, Power[ 2, Rational[ -1, 2]], b], Times[ Power[ 2, Rational[ -1, 2]], b, m]}, 2, 4, 1]]}], "}"}]], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(GenCoef[Normal[deList], e[1]\[Wedge]e[3]]\)], "Input", FontColor->GrayLevel[0.333333]], Cell[BoxData[ \({0, 0, \(-\(a\^2\/\(2\ \@2\ r\^3\)\)\) + m\^2\/\(2\ \@2\ r\^3\) + m\/\(\@2\ r\^2\) - 1\/\(\@2\ r\), \(b\ m\)\/\(\@2\ r\^3\) - b\/\(\@2\ r\^2\)}\)], "Output"] }, Open ]] }, Closed]], Cell[BoxData[ \(\n\)], "Input"], Cell[CellGroupData[{ Cell[BoxData[ RowBox[{"RGtensors", "[", RowBox[{ StyleBox[ \({{0, 1, 0, 0}, {1, 0, 0, 0}, {0, 0, 0, \(-1\)}, {0, 0, \(-1\), 0}} \), FontFamily->"Courier"], ",", "xCoord", ",", \({e[]}\)}], "]"}]], "Input", FontColor->GrayLevel[0.333333]], Cell[BoxData[ InterpretationBox[ RowBox[{\("gdd = "\), "\[InvisibleSpace]", TagBox[ RowBox[{"(", GridBox[{ {"0", "1", "0", "0"}, {"1", "0", "0", "0"}, {"0", "0", "0", \(-1\)}, {"0", "0", \(-1\), "0"} }], ")"}], (MatrixForm[ #]&)]}], SequenceForm[ "gdd = ", MatrixForm[ {{0, 1, 0, 0}, {1, 0, 0, 0}, {0, 0, 0, -1}, {0, 0, -1, 0}}]], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ RowBox[{\("LineElement = "\), "\[InvisibleSpace]", TagBox[\(2\ e[1]\ e[2] - 2\ e[3]\ e[4]\), (Short[ #, 32]&)]}], SequenceForm[ "LineElement = ", Short[ Plus[ Times[ 2, e[ 1], e[ 2]], Times[ -2, e[ 3], e[ 4]]], 32]], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ RowBox[{\("gUU = "\), "\[InvisibleSpace]", TagBox[ RowBox[{"(", GridBox[{ {"0", "1", "0", "0"}, {"1", "0", "0", "0"}, {"0", "0", "0", \(-1\)}, {"0", "0", \(-1\), "0"} }], ")"}], (MatrixForm[ #]&)]}], SequenceForm[ "gUU = ", MatrixForm[ {{0, 1, 0, 0}, {1, 0, 0, 0}, {0, 0, 0, -1}, {0, 0, -1, 0}}]], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ \("gUU computed in "\[InvisibleSpace]0.0333333333333314385` \[InvisibleSpace]" sec"\), SequenceForm[ "gUU computed in ", 0.033333333333331439, " sec"], Editable->False]], "Print"], Cell[BoxData[ \("Warning: deList closure not tested"\)], "Output", FontSize->16, FontSlant->"Italic", FontColor->RGBColor[1, 0, 1]], Cell[BoxData[ InterpretationBox[ \("Gamma computed in "\[InvisibleSpace]0.400000000000005684` \[InvisibleSpace]" sec"\), SequenceForm[ "Gamma computed in ", 0.40000000000000568, " sec"], Editable->False]], "Print"], Cell[BoxData[ \("Spin coefficients \[Tau], \[Kappa], \[Rho], \[Sigma], \[Gamma], \ \[Epsilon], \[Alpha], \[Beta], \[Nu], $\[Pi], \[Lambda], \[Mu] defined"\)], "Print"], Cell[BoxData[ \("Differential Operators \[GothicCapitalD][x_], \[CapitalDelta][x_], \ \[Delta][x_], \[Delta]B[x_] defined"\)], "Print"], Cell[BoxData[ InterpretationBox[ \("Riemann(dddd) computed in "\[InvisibleSpace]0.183333333333337122` \[InvisibleSpace]" sec"\), SequenceForm[ "Riemann(dddd) computed in ", 0.18333333333333712, " sec"], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ \("Riemann(Uddd) computed in "\[InvisibleSpace]0.0999999999999943156` \[InvisibleSpace]" sec"\), SequenceForm[ "Riemann(Uddd) computed in ", 0.099999999999994316, " sec"], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ \("Ricci computed in "\[InvisibleSpace]0.0166666666666657192` \[InvisibleSpace]" sec"\), SequenceForm[ "Ricci computed in ", 0.016666666666665719, " sec"], Editable->False]], "Print"], Cell[BoxData[ InterpretationBox[ \("Weyl computed in "\[InvisibleSpace]0.166666666666671403` \[InvisibleSpace]" sec"\), SequenceForm[ "Weyl computed in ", 0.1666666666666714, " sec"], Editable->False]], "Print"], Cell[BoxData[ \("NP variables \[CapitalPhi][i,j], \[CapitalLambda] and \[CapitalPsi][i] \ defined"\)], "Print"], Cell[BoxData[ InterpretationBox[ \("Einstein computed in "\[InvisibleSpace]0.0166666666666657192` \[InvisibleSpace]" sec"\), SequenceForm[ "Einstein computed in ", 0.016666666666665719, " sec"], Editable->False]], "Print"], Cell[BoxData[ \("All tasks completed in 1.1 seconds"\)], "Output"] }, Open ]] }, Closed]], Cell[CellGroupData[{ Cell[BoxData[ \(ExactRdd - Rdd\)], "Input", FontColor->GrayLevel[0.333333]], Cell[BoxData[ RowBox[{"{", RowBox[{ RowBox[{"{", RowBox[{ InterpretationBox[\(O[1\/r]\^4\), SeriesData[ r, DirectedInfinity[ 1], {}, 4, 4, 1]], ",", InterpretationBox[\(O[1\/r]\^4\), SeriesData[ r, DirectedInfinity[ 1], {}, 4, 4, 1]], ",", InterpretationBox[\(O[1\/r]\^5\), SeriesData[ r, DirectedInfinity[ 1], {}, 5, 5, 1]], ",", InterpretationBox[\(O[1\/r]\^5\), SeriesData[ r, DirectedInfinity[ 1], {}, 5, 5, 1]]}], "}"}], ",", RowBox[{"{", RowBox[{ InterpretationBox[\(O[1\/r]\^4\), SeriesData[ r, DirectedInfinity[ 1], {}, 4, 4, 1]], ",", InterpretationBox[\(O[1\/r]\^4\), SeriesData[ r, DirectedInfinity[ 1], {}, 4, 4, 1]], ",", InterpretationBox[\(O[1\/r]\^5\), SeriesData[ r, DirectedInfinity[ 1], {}, 5, 5, 1]], ",", InterpretationBox[\(O[1\/r]\^5\), SeriesData[ r, DirectedInfinity[ 1], {}, 5, 5, 1]]}], "}"}], ",", RowBox[{"{", RowBox[{ InterpretationBox[\(O[1\/r]\^5\), SeriesData[ r, DirectedInfinity[ 1], {}, 5, 5, 1]], ",", InterpretationBox[\(O[1\/r]\^5\), SeriesData[ r, DirectedInfinity[ 1], {}, 5, 5, 1]], ",", InterpretationBox[\(O[1\/r]\^5\), SeriesData[ r, DirectedInfinity[ 1], {}, 5, 5, 1]], ",", InterpretationBox[\(O[1\/r]\^5\), SeriesData[ r, DirectedInfinity[ 1], {}, 5, 5, 1]]}], "}"}], ",", RowBox[{"{", RowBox[{ InterpretationBox[\(O[1\/r]\^5\), SeriesData[ r, DirectedInfinity[ 1], {}, 5, 5, 1]], ",", InterpretationBox[\(O[1\/r]\^5\), SeriesData[ r, DirectedInfinity[ 1], {}, 5, 5, 1]], ",", InterpretationBox[\(O[1\/r]\^5\), SeriesData[ r, DirectedInfinity[ 1], {}, 5, 5, 1]], ",", InterpretationBox[\(O[1\/r]\^5\), SeriesData[ r, DirectedInfinity[ 1], {}, 5, 5, 1]]}], "}"}]}], "}"}]], "Output"] }, Open ]], Cell[TextData[{ Cell[BoxData[ TagBox["", DisplayForm]]], Cell[BoxData[ TagBox["", DisplayForm]]], "\tThe function ", StyleBox["zeroQ[]", FontFamily->"Courier"], " ignores ", Cell[BoxData[ \(O[1\/r]\^n\)]], " terms:" }], "Text", FontSize->16, FontColor->RGBColor[0, 0, 1]], Cell[CellGroupData[{ Cell[BoxData[ \(zeroQ[%]\)], "Input", FontColor->GrayLevel[0.333333]], Cell[BoxData[ \(True\)], "Output"] }, Open ]], Cell[CellGroupData[{ Cell[BoxData[ \(ExactPSI - \[CapitalPsi]/@{0, 1, 2, 3, 4}\)], "Input", FontColor->GrayLevel[0.333333]], Cell[BoxData[ RowBox[{"{", RowBox[{ InterpretationBox[\(O[1\/r]\^5\), SeriesData[ r, DirectedInfinity[ 1], {}, 5, 5, 1]], ",", InterpretationBox[\(O[1\/r]\^5\), SeriesData[ r, DirectedInfinity[ 1], {}, 5, 5, 1]], ",", InterpretationBox[\(O[1\/r]\^3\), SeriesData[ r, DirectedInfinity[ 1], {}, 3, 3, 1]], ",", InterpretationBox[\(O[1\/r]\^5\), SeriesData[ r, DirectedInfinity[ 1], {}, 5, 5, 1]], ",", InterpretationBox[\(O[1\/r]\^5\), SeriesData[ r, DirectedInfinity[ 1], {}, 5, 5, 1]]}], "}"}]], "Output"] }, Open ]], Cell[TextData[{ Cell[BoxData[ TagBox["", DisplayForm]]], Cell[BoxData[ TagBox["", DisplayForm]]], StyleBox["Mathematica", FontSlant->"Italic"], " 4.0 (or higher) has better handling of SeriesData objects. As a result it \ returns ", Cell[BoxData[ InterpretationBox[\(O[1\/r]\^5\), SeriesData[ r, DirectedInfinity[ 1], {}, 5, 5, 1]]]], " for all elements in the last two lists." }], "Text", FontSize->16, FontColor->RGBColor[0, 0, 1]] }, Closed]], Cell[TextData[{ Cell[BoxData[ TagBox["", DisplayForm]]], Cell[BoxData[ TagBox["", DisplayForm]]], "\tIf only ", StyleBox["deList", FontFamily->"Courier"], " is expanded, ", StyleBox["RGtensors", FontFamily->"Courier"], " takes ~20% longer, while if only ", StyleBox["dxRuleList", FontFamily->"Courier"], " is expanded, it takes ~100% longer!" }], "Text", FontSize->16] }, Closed]] }, Closed]], Cell[BoxData[""], "Input"] }, FrontEndVersion->"Macintosh 3.0", ScreenRectangle->{{0, 1024}, {0, 748}}, CellGrouping->Manual, WindowSize->{956, 721}, WindowMargins->{{4, Automatic}, {Automatic, 1}}, Magnification->1.25, MacintoshSystemPageSetup->"\<\ 0040001804P000000aP2I0000003609To`83609T0@00001804P000000aP2I001 0@00I00100000@0200000BL?00400000000000000000051`I6H0I00000000000 00000000000000000000000000000000\>" ] (*********************************************************************** Cached data follows. If you edit this Notebook file directly, not using Mathematica, you must remove the line containing CacheID at the top of the file. The cache data will then be recreated when you save this file from within Mathematica. ***********************************************************************) (*CellTagsOutline CellTagsIndex->{ "blank 4"->{ Cell[340218, 10760, 87, 3, 29, "Text", CellTags->"blank 4"]}, "sec 5"->{ Cell[362887, 11528, 284, 10, 54, "Subsubsection", CellTags->"sec 5"], Cell[363174, 11540, 345, 12, 65, "Text", CellTags->"sec 5"], Cell[363544, 11556, 78, 2, 33, "Input", CellTags->"sec 5"], Cell[363948, 11570, 506, 13, 89, "Text", CellTags->"sec 5"], Cell[364649, 11595, 355, 8, 89, "Text", CellTags->"sec 5"], Cell[365051, 11608, 187, 7, 41, "Text", CellTags->"sec 5"], Cell[365372, 11626, 333, 11, 65, "Text", CellTags->"sec 5"]} } *) (*CellTagsIndex CellTagsIndex->{ {"blank 4", 576989, 18406}, {"sec 5", 577074, 18409} } *) (*NotebookFileOutline Notebook[{ Cell[CellGroupData[{ Cell[1731, 51, 413, 15, 137, "Text"], Cell[2147, 68, 152, 5, 39, "Text"], Cell[2302, 75, 1358, 47, 185, "Text"] }, Closed]], Cell[3675, 125, 612, 21, 46, "Text"], Cell[CellGroupData[{ Cell[4312, 150, 157, 4, 72, "Section"], Cell[CellGroupData[{ Cell[4494, 158, 89, 2, 57, "Subsection"], Cell[4586, 162, 837, 22, 161, "Text"], Cell[5426, 186, 833, 23, 137, "Text"] }, Open ]], Cell[CellGroupData[{ Cell[6296, 214, 107, 2, 57, "Subsection"], Cell[6406, 218, 1548, 49, 314, "Text"], Cell[CellGroupData[{ Cell[7979, 271, 962, 32, 137, "Text"], Cell[8944, 305, 206, 8, 41, "Text"], Cell[9153, 315, 213, 9, 41, "Text"], Cell[9369, 326, 256, 9, 41, "Text"], Cell[9628, 337, 248, 10, 41, "Text"], Cell[9879, 349, 248, 9, 41, "Text"], Cell[10130, 360, 354, 15, 41, "Text"], Cell[10487, 377, 438, 19, 41, "Text"], Cell[10928, 398, 377, 16, 41, "Text"], Cell[11308, 416, 217, 9, 41, "Text"] }, Closed]], Cell[11540, 428, 1041, 34, 132, "Text"], Cell[12584, 464, 748, 23, 113, "Text"], Cell[CellGroupData[{ Cell[13357, 491, 119, 2, 54, "Subsubsection"], Cell[13479, 495, 595, 18, 89, "Text"], Cell[14077, 515, 503, 20, 65, "Text"], Cell[14583, 537, 485, 21, 65, "Text"], Cell[15071, 560, 608, 23, 89, "Text"], Cell[15682, 585, 391, 16, 41, "Text"], Cell[16076, 603, 167, 9, 41, "Text"], Cell[16246, 614, 465, 19, 41, "Text"], Cell[16714, 635, 1505, 58, 161, "Text"] }, Closed]], Cell[18234, 696, 313, 11, 84, "Text"] }, Closed]], Cell[CellGroupData[{ Cell[18584, 712, 125, 2, 36, "Subsection"], Cell[18712, 716, 295, 12, 41, "Text"], Cell[19010, 730, 179, 8, 41, "Text"], Cell[19192, 740, 286, 13, 41, "Text"], Cell[19481, 755, 234, 9, 41, "Text"], Cell[19718, 766, 504, 21, 65, "Text"], Cell[20225, 789, 504, 21, 65, "Text"], Cell[20732, 812, 618, 28, 65, "Text"], Cell[21353, 842, 613, 27, 65, "Text"], Cell[21969, 871, 339, 15, 41, "Text"], Cell[22311, 888, 525, 23, 65, "Text"], Cell[22839, 913, 1136, 52, 89, "Text"] }, Closed]], Cell[CellGroupData[{ Cell[24012, 970, 106, 2, 36, "Subsection"], Cell[24121, 974, 681, 19, 113, "Text"], Cell[24805, 995, 389, 17, 41, "Text"], Cell[25197, 1014, 274, 13, 41, "Text"], Cell[25474, 1029, 421, 18, 65, "Text"], Cell[25898, 1049, 455, 16, 65, "Text"], Cell[26356, 1067, 652, 24, 89, "Text"], Cell[27011, 1093, 2044, 82, 185, "Text"], Cell[29058, 1177, 556, 15, 89, "Text"] }, Closed]], Cell[CellGroupData[{ Cell[29651, 1197, 113, 2, 36, "Subsection"], Cell[29767, 1201, 129, 4, 41, "Text"], Cell[CellGroupData[{ Cell[29921, 1209, 973, 34, 113, "Text"], Cell[30897, 1245, 418, 19, 41, "Text"], Cell[31318, 1266, 434, 19, 41, "Text"] }, Closed]], Cell[CellGroupData[{ Cell[31789, 1290, 980, 34, 108, "Text"], Cell[32772, 1326, 434, 19, 41, "Text"], Cell[33209, 1347, 446, 19, 41, "Text"], Cell[33658, 1368, 492, 24, 41, "Text"], Cell[34153, 1394, 508, 20, 65, "Text"] }, Closed]], Cell[CellGroupData[{ Cell[34698, 1419, 992, 36, 108, "Text"], Cell[35693, 1457, 749, 29, 65, "Text"], Cell[36445, 1488, 1133, 49, 69, "Text"] }, Closed]], Cell[37593, 1540, 735, 26, 84, "Text"], Cell[38331, 1568, 762, 30, 89, "Text"], Cell[CellGroupData[{ Cell[39118, 1602, 726, 24, 113, "Text"], Cell[39847, 1628, 497, 14, 89, "Text"] }, Closed]] }, Closed]], Cell[CellGroupData[{ Cell[40393, 1648, 110, 2, 36, "Subsection"], Cell[40506, 1652, 379, 9, 89, "Text"], Cell[CellGroupData[{ Cell[40910, 1665, 294, 13, 54, "Subsubsection"], Cell[41207, 1680, 767, 26, 113, "Text"] }, Closed]], Cell[CellGroupData[{ Cell[42011, 1711, 280, 12, 36, "Subsubsection"], Cell[42294, 1725, 552, 18, 137, "Text"] }, Closed]], Cell[CellGroupData[{ Cell[42883, 1748, 274, 12, 36, "Subsubsection"], Cell[43160, 1762, 351, 12, 89, "Text"] }, Closed]], Cell[CellGroupData[{ Cell[43548, 1779, 270, 12, 36, "Subsubsection"], Cell[43821, 1793, 445, 15, 113, "Text"] }, Closed]], Cell[CellGroupData[{ Cell[44303, 1813, 357, 15, 36, "Subsubsection"], Cell[44663, 1830, 436, 19, 41, "Text"] }, Closed]], Cell[45114, 1852, 568, 22, 60, "Text"] }, Closed]], Cell[CellGroupData[{ Cell[45719, 1879, 91, 2, 36, "Subsection"], Cell[45813, 1883, 437, 12, 89, "Text"], Cell[46253, 1897, 611, 13, 137, "Text"] }, Closed]], Cell[46879, 1913, 544, 17, 84, "Text"] }, Open ]], Cell[47438, 1933, 64, 2, 34, "Text"], Cell[CellGroupData[{ Cell[47527, 1939, 155, 4, 72, "Section"], Cell[47685, 1945, 92, 2, 39, "Text"], Cell[47780, 1949, 112, 2, 33, "Input"], Cell[47895, 1953, 857, 14, 204, "Input"], Cell[48755, 1969, 332, 6, 71, "Input"], Cell[49090, 1977, 411, 8, 71, "Input"], Cell[49504, 1987, 769, 15, 147, "Input"], Cell[50276, 2004, 193, 3, 52, "Input"], Cell[50472, 2009, 93, 1, 33, "Input"], Cell[50568, 2012, 97, 2, 33, "Input"], Cell[CellGroupData[{ Cell[50690, 2018, 107, 2, 33, "Input"], Cell[50800, 2022, 208, 4, 43, "Input"], Cell[51011, 2028, 226, 4, 43, "Input"], Cell[51240, 2034, 365, 7, 59, "Input"] }, Closed]], Cell[51620, 2044, 318, 6, 66, "Input"], Cell[51941, 2052, 69, 1, 33, "Input"], Cell[52013, 2055, 101, 2, 33, "Input"], Cell[CellGroupData[{ Cell[52139, 2061, 446, 8, 128, "Input"], Cell[52588, 2071, 358, 8, 71, "Input"] }, Closed]], Cell[52961, 2082, 196, 4, 66, "Input"], Cell[53160, 2088, 127, 2, 33, "Input"], Cell[53290, 2092, 311, 6, 71, "Input"], Cell[53604, 2100, 129, 3, 33, "Input"], Cell[53736, 2105, 708, 13, 147, "Input"], Cell[54447, 2120, 217, 4, 71, "Input"], Cell[54667, 2126, 16678, 296, 2997, "Input"], Cell[71348, 2424, 346, 7, 90, "Input"], Cell[71697, 2433, 1739, 29, 242, "Input"], Cell[73439, 2464, 1121, 21, 147, "Input"], Cell[74563, 2487, 443, 8, 128, "Input"], Cell[75009, 2497, 97, 2, 33, "Input"], Cell[75109, 2501, 257, 5, 52, "Input"], Cell[75369, 2508, 152, 3, 33, "Input"], Cell[75524, 2513, 152, 3, 33, "Input"], Cell[CellGroupData[{ Cell[75701, 2520, 735, 14, 147, "Input"], Cell[76439, 2536, 401, 7, 75, "Input"], Cell[76843, 2545, 531, 11, 107, "Input"] }, Closed]], Cell[CellGroupData[{ Cell[77411, 2561, 310, 5, 66, "Input"], Cell[77724, 2568, 112, 2, 27, "Input"], Cell[77839, 2572, 210, 4, 43, "Input"], Cell[78052, 2578, 342, 6, 75, "Input"] }, Closed]], Cell[78409, 2587, 112, 2, 28, "Input"], Cell[CellGroupData[{ Cell[78546, 2593, 219, 4, 52, "Input"], Cell[78768, 2599, 451, 9, 75, "Input"], Cell[79222, 2610, 485, 9, 91, "Input"] }, Closed]], Cell[79722, 2622, 2477, 43, 408, "Input"], Cell[82202, 2667, 200, 4, 52, "Input"], Cell[CellGroupData[{ Cell[82427, 2675, 1194, 23, 204, "Input"], Cell[83624, 2700, 86, 1, 27, "Input"] }, Closed]], Cell[83725, 2704, 134, 3, 28, "Input"], Cell[83862, 2709, 185, 3, 52, "Input"], Cell[84050, 2714, 245, 6, 52, "Input"], Cell[84298, 2722, 273, 7, 52, "Input"], Cell[84574, 2731, 81, 1, 33, "Input"], Cell[84658, 2734, 1050, 17, 204, "Input"], Cell[85711, 2753, 98, 2, 33, "Input"], Cell[85812, 2757, 273, 4, 71, "Input"], Cell[86088, 2763, 111, 2, 33, "Input"] }, Closed]], Cell[86214, 2768, 64, 2, 29, "Text"], Cell[CellGroupData[{ Cell[86303, 2774, 440, 15, 92, "Section"], Cell[86746, 2791, 307, 11, 84, "Text"], Cell[87056, 2804, 61, 1, 33, "Input"], Cell[CellGroupData[{ Cell[87142, 2809, 149, 5, 57, "Subsection"], Cell[87294, 2816, 371, 11, 65, "Text"], Cell[87668, 2829, 82, 1, 33, "Input"], Cell[87753, 2832, 494, 8, 71, "Input"], Cell[CellGroupData[{ Cell[88272, 2844, 57, 1, 33, "Input"], Cell[88332, 2847, 2385, 70, 70, "Print"], Cell[90720, 2919, 2448, 68, 70, "Print"], Cell[93171, 2989, 2243, 62, 70, "Print"], Cell[95417, 3053, 242, 5, 70, "Print"], Cell[95662, 3060, 245, 5, 70, "Print"], Cell[95910, 3067, 268, 6, 70, "Print"], Cell[96181, 3075, 117, 4, 70, "Output"], Cell[96301, 3081, 66, 1, 70, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[96404, 3087, 52, 1, 33, "Input"], Cell[96459, 3090, 231, 4, 70, "Output"] }, Open ]], Cell[96705, 3097, 145, 5, 41, "Text"], Cell[CellGroupData[{ Cell[96875, 3106, 42, 1, 33, "Input"], Cell[96920, 3109, 299, 4, 70, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[97256, 3118, 50, 1, 33, "Input"], Cell[97309, 3121, 299, 4, 70, "Output"] }, Open ]] }, Closed]], Cell[CellGroupData[{ Cell[97657, 3131, 95, 2, 36, "Subsection"], Cell[97755, 3135, 77, 1, 33, "Input"], Cell[97835, 3138, 150, 3, 33, "Input"], Cell[97988, 3143, 60, 1, 33, "Input"], Cell[98051, 3146, 665, 28, 41, "Text"], Cell[CellGroupData[{ Cell[98741, 3178, 53, 1, 33, "Input"], Cell[98797, 3181, 929, 27, 70, "Print"], Cell[99729, 3210, 1089, 35, 70, "Print"], Cell[100821, 3247, 963, 28, 70, "Print"], Cell[101787, 3277, 242, 5, 70, "Print"], Cell[102032, 3284, 246, 5, 70, "Print"], Cell[102281, 3291, 269, 6, 70, "Print"], Cell[102553, 3299, 269, 6, 70, "Print"], Cell[102825, 3307, 201, 4, 70, "Print"], Cell[103029, 3313, 199, 4, 70, "Print"], Cell[103231, 3319, 116, 4, 70, "Output"], Cell[103350, 3325, 75, 1, 70, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[103462, 3331, 56, 1, 33, "Input"], Cell[103521, 3334, 77, 1, 70, "Output"] }, Open ]], Cell[103613, 3338, 150, 6, 41, "Text"], Cell[CellGroupData[{ Cell[103788, 3348, 60, 1, 33, "Input"], Cell[103851, 3351, 70, 1, 70, "Output"] }, Open ]] }, Closed]], Cell[CellGroupData[{ Cell[103970, 3358, 123, 2, 36, "Subsection"], Cell[104096, 3362, 77, 1, 33, "Input"], Cell[104176, 3365, 213, 4, 33, "Input"], Cell[104392, 3371, 60, 1, 33, "Input"], Cell[CellGroupData[{ Cell[104477, 3376, 53, 1, 33, "Input"], Cell[104533, 3379, 1308, 38, 70, "Print"], Cell[105844, 3419, 1360, 41, 70, "Print"], Cell[107207, 3462, 1295, 38, 70, "Print"], Cell[108505, 3502, 242, 5, 70, "Print"], Cell[108750, 3509, 246, 5, 70, "Print"], Cell[108999, 3516, 269, 6, 70, "Print"], Cell[109271, 3524, 269, 6, 70, "Print"], Cell[109543, 3532, 201, 4, 70, "Print"], Cell[109747, 3538, 244, 5, 70, "Print"], Cell[109994, 3545, 207, 4, 70, "Print"], Cell[110204, 3551, 120, 4, 70, "Output"], Cell[110327, 3557, 70, 1, 70, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[110434, 3563, 48, 1, 33, "Input"], Cell[110485, 3566, 56, 1, 70, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[110578, 3572, 34, 1, 33, "Input"], Cell[110615, 3575, 58, 1, 70, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[110710, 3581, 57, 1, 33, "Input"], Cell[110770, 3584, 90, 1, 70, "Output"] }, Open ]], Cell[110875, 3588, 145, 5, 41, "Text"], Cell[CellGroupData[{ Cell[111045, 3597, 50, 1, 33, "Input"], Cell[111098, 3600, 38, 1, 70, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[111173, 3606, 436, 18, 75, "Subsubsection"], Cell[111612, 3626, 121, 2, 33, "Input"], Cell[111736, 3630, 99, 2, 33, "Input"], Cell[111838, 3634, 1249, 35, 52, "Input"], Cell[113090, 3671, 675, 20, 52, "Input"], Cell[CellGroupData[{ Cell[113790, 3695, 118, 2, 33, "Input"], Cell[113911, 3699, 87, 1, 70, "Output"] }, Open ]], Cell[114013, 3703, 247, 10, 41, "Text"], Cell[CellGroupData[{ Cell[114285, 3717, 367, 9, 52, "Input"], Cell[114655, 3728, 83, 1, 70, "Output"] }, Open ]], Cell[114753, 3732, 120, 2, 33, "Input"] }, Closed]] }, Closed]], Cell[CellGroupData[{ Cell[114922, 3740, 98, 2, 36, "Subsection"], Cell[115023, 3744, 77, 1, 33, "Input"], Cell[115103, 3747, 187, 3, 52, "Input"], Cell[115293, 3752, 60, 1, 33, "Input"], Cell[CellGroupData[{ Cell[115378, 3757, 53, 1, 33, "Input"], Cell[115434, 3760, 998, 30, 70, "Print"], Cell[116435, 3792, 1103, 36, 70, "Print"], Cell[117541, 3830, 976, 29, 70, "Print"], Cell[118520, 3861, 242, 5, 70, "Print"], Cell[118765, 3868, 246, 5, 70, "Print"], Cell[119014, 3875, 269, 6, 70, "Print"], Cell[119286, 3883, 269, 6, 70, "Print"], Cell[119558, 3891, 201, 4, 70, "Print"], Cell[119762, 3897, 244, 5, 70, "Print"], Cell[120009, 3904, 122, 4, 70, "Output"], Cell[120134, 3910, 207, 4, 70, "Print"], Cell[120344, 3916, 75, 1, 70, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[120456, 3922, 48, 1, 33, "Input"], Cell[120507, 3925, 232, 7, 70, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[120776, 3937, 48, 1, 33, "Input"], Cell[120827, 3940, 315, 9, 70, "Output"] }, Open ]], Cell[121157, 3952, 146, 5, 41, "Text"], Cell[CellGroupData[{ Cell[121328, 3961, 50, 1, 33, "Input"], Cell[121381, 3964, 38, 1, 70, "Output"] }, Open ]] }, Closed]], Cell[CellGroupData[{ Cell[121468, 3971, 112, 2, 36, "Subsection"], Cell[121583, 3975, 68, 1, 33, "Input"], Cell[121654, 3978, 102, 2, 33, "Input"], Cell[121759, 3982, 53, 1, 33, "Input"], Cell[CellGroupData[{ Cell[121837, 3987, 174, 7, 54, "Subsubsection"], Cell[CellGroupData[{ Cell[122036, 3998, 53, 1, 33, "Input"], Cell[122092, 4001, 1307, 34, 70, "Print"], Cell[123402, 4037, 1338, 38, 70, "Print"], Cell[124743, 4077, 1327, 34, 70, "Print"], Cell[126073, 4113, 242, 5, 70, "Print"], Cell[126318, 4120, 246, 5, 70, "Print"], Cell[126567, 4127, 267, 6, 70, "Print"], Cell[126837, 4135, 267, 6, 70, "Print"], Cell[127107, 4143, 246, 5, 70, "Print"], Cell[127356, 4150, 241, 5, 70, "Print"], Cell[127600, 4157, 122, 4, 70, "Output"], Cell[127725, 4163, 252, 5, 70, "Print"], Cell[127980, 4170, 75, 1, 70, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[128092, 4176, 52, 1, 33, "Input"], Cell[128147, 4179, 283, 7, 70, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[128467, 4191, 48, 1, 33, "Input"], Cell[128518, 4194, 1899, 41, 70, "Output"] }, Open ]], Cell[130432, 4238, 130, 5, 41, "Text"], Cell[CellGroupData[{ Cell[130587, 4247, 48, 1, 33, "Input"], Cell[130638, 4250, 37, 1, 70, "Output"] }, Open ]], Cell[130690, 4254, 123, 5, 41, "Text"], Cell[CellGroupData[{ Cell[130838, 4263, 56, 1, 33, "Input"], Cell[130897, 4266, 36, 1, 70, "Output"] }, Open ]], Cell[130948, 4270, 124, 5, 41, "Text"], Cell[CellGroupData[{ Cell[131097, 4279, 58, 1, 33, "Input"], Cell[131158, 4282, 36, 1, 70, "Output"] }, Open ]], Cell[131209, 4286, 143, 5, 41, "Text"], Cell[131355, 4293, 630, 26, 65, "Text"], Cell[CellGroupData[{ Cell[132010, 4323, 78, 1, 33, "Input"], Cell[132091, 4326, 220, 3, 70, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[132348, 4334, 89, 1, 33, "Input"], Cell[132440, 4337, 38, 1, 70, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[132515, 4343, 89, 1, 33, "Input"], Cell[132607, 4346, 38, 1, 70, "Output"] }, Open ]] }, Closed]], Cell[CellGroupData[{ Cell[132694, 4353, 185, 7, 36, "Subsubsection"], Cell[CellGroupData[{ Cell[132904, 4364, 179, 4, 33, "Input"], Cell[133086, 4370, 2877, 83, 70, "Print"], Cell[135966, 4455, 3238, 98, 70, "Print"], Cell[139207, 4555, 3359, 102, 70, "Print"], Cell[142569, 4659, 242, 5, 70, "Print"], Cell[142814, 4666, 243, 5, 70, "Print"], Cell[143060, 4673, 267, 6, 70, "Print"], Cell[143330, 4681, 269, 6, 70, "Print"], Cell[143602, 4689, 201, 4, 70, "Print"], Cell[143806, 4695, 244, 5, 70, "Print"], Cell[144053, 4702, 122, 4, 70, "Output"], Cell[144178, 4708, 207, 4, 70, "Print"], Cell[144388, 4714, 120, 4, 70, "Output"], Cell[144511, 4720, 134, 4, 70, "Output"], Cell[144648, 4726, 75, 1, 70, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[144760, 4732, 56, 1, 28, "Input"], Cell[144819, 4735, 128, 3, 70, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[144984, 4743, 34, 1, 33, "Input"], Cell[145021, 4746, 39, 1, 70, "Output"] }, Open ]], Cell[145075, 4750, 130, 5, 41, "Text"], Cell[CellGroupData[{ Cell[145230, 4759, 48, 1, 33, "Input"], Cell[145281, 4762, 36, 1, 70, "Output"] }, Open ]], Cell[145332, 4766, 185, 7, 41, "Text"], Cell[CellGroupData[{ Cell[145542, 4777, 50, 1, 33, "Input"], Cell[145595, 4780, 111, 2, 70, "Output"] }, Open ]] }, Closed]] }, Closed]], Cell[CellGroupData[{ Cell[145767, 4789, 176, 4, 36, "Subsection"], Cell[145946, 4795, 160, 6, 41, "Text"], Cell[146109, 4803, 76, 1, 33, "Input"], Cell[146188, 4806, 86, 1, 33, "Input"], Cell[146277, 4809, 328, 6, 71, "Input"], Cell[146608, 4817, 53, 1, 33, "Input"], Cell[CellGroupData[{ Cell[146686, 4822, 53, 1, 33, "Input"], Cell[146742, 4825, 2959, 92, 70, "Print"], Cell[149704, 4919, 3192, 98, 70, "Print"], Cell[152899, 5019, 3938, 122, 70, "Print"], Cell[156840, 5143, 239, 5, 70, "Print"], Cell[157082, 5150, 204, 4, 70, "Print"], Cell[157289, 5156, 267, 6, 70, "Print"], Cell[157559, 5164, 266, 6, 70, "Print"], Cell[157828, 5172, 246, 5, 70, "Print"], Cell[158077, 5179, 199, 4, 70, "Print"], Cell[158279, 5185, 116, 4, 70, "Output"], Cell[158398, 5191, 71, 1, 70, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[158506, 5197, 52, 1, 33, "Input"], Cell[158561, 5200, 68, 1, 70, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[158666, 5206, 56, 1, 33, "Input"], Cell[158725, 5209, 212, 3, 70, "Output"] }, Open ]], Cell[158952, 5215, 145, 5, 41, "Text"], Cell[CellGroupData[{ Cell[159122, 5224, 60, 1, 33, "Input"], Cell[159185, 5227, 70, 1, 70, "Output"] }, Open ]], Cell[159270, 5231, 458, 19, 65, "Text"], Cell[CellGroupData[{ Cell[159753, 5254, 60, 1, 33, "Input"], Cell[159816, 5257, 53, 1, 70, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[159906, 5263, 144, 4, 77, "Subsection"], Cell[160053, 5269, 375, 16, 41, "Text"], Cell[160431, 5287, 178, 4, 33, "Input"], Cell[CellGroupData[{ Cell[160634, 5295, 113, 2, 33, "Input"], Cell[160750, 5299, 71, 1, 70, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[160858, 5305, 572, 15, 54, "Input"], Cell[161433, 5322, 6539, 149, 70, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[168009, 5476, 76, 2, 33, "Input"], Cell[168088, 5480, 36, 1, 70, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[168161, 5486, 162, 4, 33, "Input"], Cell[168326, 5492, 99, 2, 70, "Output"] }, Open ]], Cell[168440, 5497, 332, 12, 65, "Text"], Cell[CellGroupData[{ Cell[168797, 5513, 592, 16, 73, "Input"], Cell[169392, 5531, 3472, 86, 70, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[172901, 5622, 980, 26, 35, "Input"], Cell[173884, 5650, 1093, 31, 70, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[175014, 5686, 302, 6, 71, "Input"], Cell[175319, 5694, 64, 1, 70, "Output"] }, Open ]] }, Closed]], Cell[CellGroupData[{ Cell[175432, 5701, 136, 4, 56, "Subsection"], Cell[175571, 5707, 358, 14, 65, "Text"], Cell[CellGroupData[{ Cell[175954, 5725, 92, 2, 33, "Input"], Cell[176049, 5729, 46, 1, 70, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[176132, 5735, 89, 2, 33, "Input"], Cell[176224, 5739, 46, 1, 70, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[176307, 5745, 107, 2, 33, "Input"], Cell[176417, 5749, 48, 1, 70, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[176502, 5755, 88, 2, 33, "Input"], Cell[176593, 5759, 90, 1, 70, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[176720, 5765, 92, 2, 33, "Input"], Cell[176815, 5769, 1152, 15, 70, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[178004, 5789, 95, 2, 33, "Input"], Cell[178102, 5793, 90, 1, 70, "Output"] }, Open ]] }, Closed]] }, Closed]], Cell[CellGroupData[{ Cell[178253, 5801, 285, 9, 36, "Subsection"], Cell[178541, 5812, 62, 1, 33, "Input"], Cell[178606, 5815, 80, 1, 33, "Input"], Cell[178689, 5818, 442, 7, 90, "Input"], Cell[179134, 5827, 121, 2, 41, "Text"], Cell[179258, 5831, 128, 2, 33, "Input"], Cell[179389, 5835, 273, 6, 65, "Text"], Cell[CellGroupData[{ Cell[179687, 5845, 1673, 38, 90, "Input"], Cell[181363, 5885, 4057, 108, 70, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[185457, 5998, 59, 1, 33, "Input"], Cell[185519, 6001, 3395, 103, 70, "Print"], Cell[188917, 6106, 3161, 104, 70, "Print"], Cell[192081, 6212, 3551, 107, 70, "Print"], Cell[195635, 6321, 242, 5, 70, "Print"], Cell[195880, 6328, 244, 5, 70, "Print"], Cell[196127, 6335, 265, 6, 70, "Print"], Cell[196395, 6343, 265, 6, 70, "Print"], Cell[196663, 6351, 204, 4, 70, "Print"], Cell[196870, 6357, 244, 5, 70, "Print"], Cell[197117, 6364, 116, 4, 70, "Output"], Cell[197236, 6370, 72, 1, 70, "Output"] }, Open ]], Cell[197323, 6374, 562, 22, 65, "Text"], Cell[CellGroupData[{ Cell[197910, 6400, 229, 8, 62, "Text"], Cell[198142, 6410, 334, 13, 41, "Text"] }, Closed]], Cell[198491, 6426, 65, 1, 28, "Input"] }, Closed]], Cell[CellGroupData[{ Cell[198593, 6432, 127, 2, 36, "Subsection"], Cell[198723, 6436, 169, 5, 39, "Text"], Cell[198895, 6443, 66, 1, 33, "Input"], Cell[198964, 6446, 493, 12, 52, "Input"], Cell[199460, 6460, 107, 2, 33, "Input"], Cell[199570, 6464, 111, 2, 33, "Input"], Cell[199684, 6468, 123, 2, 33, "Input"], Cell[199810, 6472, 328, 6, 71, "Input"], Cell[200141, 6480, 53, 1, 33, "Input"], Cell[CellGroupData[{ Cell[200219, 6485, 53, 1, 33, "Input"], Cell[200275, 6488, 3975, 124, 70, "Print"], Cell[204253, 6614, 4711, 142, 70, "Print"], Cell[208967, 6758, 9149, 268, 70, "Print"], Cell[218119, 7028, 239, 5, 70, "Print"], Cell[218361, 7035, 244, 5, 70, "Print"], Cell[218608, 7042, 265, 6, 70, "Print"], Cell[218876, 7050, 265, 6, 70, "Print"], Cell[219144, 7058, 241, 5, 70, "Print"], Cell[219388, 7065, 199, 4, 70, "Print"], Cell[219590, 7071, 116, 4, 70, "Output"], Cell[219709, 7077, 74, 1, 70, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[219820, 7083, 37, 1, 33, "Input"], Cell[219860, 7086, 414, 7, 70, "Output"] }, Open ]], Cell[220289, 7096, 747, 24, 101, "Text"] }, Closed]], Cell[CellGroupData[{ Cell[221073, 7125, 122, 2, 36, "Subsection"], Cell[221198, 7129, 77, 1, 33, "Input"], Cell[221278, 7132, 572, 10, 90, "Input"], Cell[221853, 7144, 60, 1, 33, "Input"], Cell[CellGroupData[{ Cell[221938, 7149, 53, 1, 33, "Input"], Cell[221994, 7152, 2445, 70, 70, "Print"], Cell[224442, 7224, 2287, 66, 70, "Print"], Cell[226732, 7292, 2086, 59, 70, "Print"], Cell[228821, 7353, 242, 5, 70, "Print"], Cell[229066, 7360, 243, 5, 70, "Print"], Cell[229312, 7367, 265, 6, 70, "Print"], Cell[229580, 7375, 265, 6, 70, "Print"], Cell[229848, 7383, 242, 5, 70, "Print"], Cell[230093, 7390, 240, 5, 70, "Print"], Cell[230336, 7397, 248, 5, 70, "Print"], Cell[230587, 7404, 74, 1, 70, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[230698, 7410, 52, 1, 33, "Input"], Cell[230753, 7413, 746, 18, 70, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[231536, 7436, 48, 1, 33, "Input"], Cell[231587, 7439, 770, 20, 70, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[232394, 7464, 48, 1, 33, "Input"], Cell[232445, 7467, 12620, 291, 70, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[245102, 7763, 42, 1, 33, "Input"], Cell[245147, 7766, 299, 4, 70, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[245483, 7775, 56, 1, 33, "Input"], Cell[245542, 7778, 90, 1, 70, "Output"] }, Open ]], Cell[245647, 7782, 202, 7, 41, "Text"], Cell[245852, 7791, 314, 12, 84, "Text"], Cell[CellGroupData[{ Cell[246191, 7807, 61, 1, 33, "Input"], Cell[246255, 7810, 2445, 70, 70, "Print"], Cell[248703, 7882, 2287, 66, 70, "Print"], Cell[250993, 7950, 2086, 59, 70, "Print"], Cell[253082, 8011, 242, 5, 70, "Print"], Cell[253327, 8018, 244, 5, 70, "Print"], Cell[253574, 8025, 265, 6, 70, "Print"], Cell[253842, 8033, 125, 4, 70, "Output"], Cell[253970, 8039, 242, 5, 70, "Print"], Cell[254215, 8046, 131, 4, 70, "Output"], Cell[254349, 8052, 248, 5, 70, "Print"], Cell[254600, 8059, 70, 1, 70, "Output"] }, Open ]] }, Closed]], Cell[CellGroupData[{ Cell[254719, 8066, 132, 3, 36, "Subsection"], Cell[254854, 8071, 336, 11, 63, "Text"], Cell[255193, 8084, 77, 1, 33, "Input"], Cell[255273, 8087, 647, 11, 138, "Input"], Cell[255923, 8100, 173, 6, 79, "Text"], Cell[256099, 8108, 60, 1, 33, "Input"], Cell[CellGroupData[{ Cell[256184, 8113, 61, 1, 33, "Input"], Cell[256248, 8116, 3072, 91, 125, "Print"], Cell[259323, 8209, 3375, 99, 120, "Print"], Cell[262701, 8310, 4878, 151, 142, "Print"], Cell[267582, 8463, 240, 5, 28, "Print"], Cell[267825, 8470, 243, 5, 28, "Print"], Cell[268071, 8477, 256, 5, 28, "Print"], Cell[268330, 8484, 265, 6, 28, "Print"], Cell[268598, 8492, 242, 5, 28, "Print"], Cell[268843, 8499, 131, 4, 38, "Output"], Cell[268977, 8505, 248, 5, 28, "Print"], Cell[269228, 8512, 71, 1, 33, "Output"] }, Open ]], Cell[269314, 8516, 422, 15, 65, "Text"], Cell[CellGroupData[{ Cell[269761, 8535, 48, 1, 33, "Input"], Cell[269812, 8538, 10923, 173, 70, "Output"] }, Closed]], Cell[CellGroupData[{ Cell[280772, 8716, 44, 1, 28, "Input"], Cell[280819, 8719, 40, 1, 33, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[280896, 8725, 56, 1, 33, "Input"], Cell[280955, 8728, 443, 7, 84, "Output"] }, Open ]], Cell[281413, 8738, 16, 0, 36, "Text"], Cell[CellGroupData[{ Cell[281454, 8742, 236, 9, 62, "Text"], Cell[CellGroupData[{ Cell[281715, 8755, 223, 6, 35, "Input"], Cell[281941, 8763, 305, 6, 70, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[282283, 8774, 87, 2, 33, "Input"], Cell[282373, 8778, 3072, 91, 70, "Print"], Cell[285448, 8871, 3776, 111, 70, "Print"], Cell[289227, 8984, 4171, 130, 70, "Print"], Cell[293401, 9116, 240, 5, 70, "Print"], Cell[293644, 9123, 244, 5, 70, "Print"], Cell[293891, 9130, 227, 5, 70, "Print"], Cell[294121, 9137, 267, 6, 70, "Print"], Cell[294391, 9145, 246, 5, 70, "Print"], Cell[294640, 9152, 199, 4, 70, "Print"], Cell[294842, 9158, 116, 4, 70, "Output"], Cell[294961, 9164, 74, 1, 70, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[295072, 9170, 86, 2, 33, "Input"], Cell[295161, 9174, 129, 2, 70, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[295327, 9181, 90, 2, 33, "Input"], Cell[295420, 9185, 169, 2, 70, "Output"] }, Open ]], Cell[295604, 9190, 162, 5, 41, "Text"] }, Closed]] }, Closed]], Cell[295793, 9199, 26, 0, 28, "Input"], Cell[CellGroupData[{ Cell[295844, 9203, 109, 2, 33, "Input"], Cell[295956, 9207, 189, 4, 28, "Print"] }, Open ]], Cell[296160, 9214, 675, 18, 156, "Text"] }, Closed]], Cell[296850, 9235, 64, 2, 29, "Text"], Cell[CellGroupData[{ Cell[296939, 9241, 177, 4, 72, "Section"], Cell[CellGroupData[{ Cell[297141, 9249, 247, 10, 57, "Subsection"], Cell[297391, 9261, 1450, 43, 209, "Text"] }, Closed]], Cell[CellGroupData[{ Cell[298878, 9309, 268, 10, 36, "Subsection"], Cell[299149, 9321, 969, 24, 185, "Text"], Cell[300121, 9347, 424, 8, 113, "Text"], Cell[300548, 9357, 841, 23, 137, "Text"], Cell[301392, 9382, 387, 10, 89, "Text"], Cell[301782, 9394, 93, 1, 33, "Input"], Cell[301878, 9397, 533, 19, 89, "Text"] }, Closed]], Cell[CellGroupData[{ Cell[302448, 9421, 262, 10, 36, "Subsection"], Cell[302713, 9433, 264, 10, 41, "Text"], Cell[302980, 9445, 488, 23, 41, "Text"], Cell[303471, 9470, 432, 20, 41, "Text"], Cell[303906, 9492, 1597, 65, 137, "Text"], Cell[305506, 9559, 464, 17, 65, "Text"], Cell[CellGroupData[{ Cell[305995, 9580, 533, 18, 89, "Text"], Cell[CellGroupData[{ Cell[306553, 9602, 951, 31, 35, "Input"], Cell[307507, 9635, 105, 2, 70, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[307649, 9642, 85, 2, 33, "Input"], Cell[307737, 9646, 91, 1, 70, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[307865, 9652, 99, 2, 33, "Input"], Cell[307967, 9656, 55, 1, 70, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[308059, 9662, 111, 2, 33, "Input"], Cell[308173, 9666, 37, 1, 70, "Output"] }, Open ]], Cell[308225, 9670, 129, 4, 41, "Text"] }, Closed]], Cell[308369, 9677, 968, 44, 84, "Text"], Cell[309340, 9723, 1766, 71, 161, "Text"], Cell[311109, 9796, 536, 21, 65, "Text"] }, Closed]], Cell[CellGroupData[{ Cell[311682, 9822, 243, 10, 36, "Subsection"], Cell[311928, 9834, 535, 19, 89, "Text"], Cell[312466, 9855, 920, 26, 161, "Text"], Cell[CellGroupData[{ Cell[313411, 9885, 443, 17, 86, "Text"], Cell[313857, 9904, 348, 8, 52, "Input"], Cell[314208, 9914, 146, 3, 33, "Input"], Cell[314357, 9919, 297, 12, 65, "Text"], Cell[314657, 9933, 302, 12, 41, "Text"] }, Closed]], Cell[314974, 9948, 529, 15, 84, "Text"], Cell[CellGroupData[{ Cell[315528, 9967, 391, 12, 86, "Text"], Cell[CellGroupData[{ Cell[315944, 9983, 74, 2, 33, "Input"], Cell[316021, 9987, 36, 1, 70, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[316094, 9993, 170, 4, 33, "Input"], Cell[316267, 9999, 327, 5, 70, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[316631, 10009, 91, 2, 33, "Input"], Cell[316725, 10013, 398, 7, 70, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[317160, 10025, 95, 2, 33, "Input"], Cell[317258, 10029, 314, 6, 70, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[317609, 10040, 213, 5, 46, "Input"], Cell[317825, 10047, 152, 3, 70, "Output"] }, Open ]], Cell[317992, 10053, 85, 2, 33, "Input"], Cell[CellGroupData[{ Cell[318102, 10059, 80, 2, 33, "Input"], Cell[318185, 10063, 327, 5, 70, "Output"] }, Open ]], Cell[318527, 10071, 747, 27, 89, "Text"] }, Closed]] }, Closed]], Cell[CellGroupData[{ Cell[319323, 10104, 233, 10, 36, "Subsection"], Cell[319559, 10116, 896, 33, 113, "Text"], Cell[CellGroupData[{ Cell[320480, 10153, 124, 3, 33, "Input"], Cell[320607, 10158, 1074, 27, 70, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[321718, 10190, 127, 3, 33, "Input"], Cell[321848, 10195, 2014, 52, 70, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[323899, 10252, 150, 3, 33, "Input"], Cell[324052, 10257, 4191, 111, 70, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[328280, 10373, 165, 4, 33, "Input"], Cell[328448, 10379, 4158, 107, 70, "Output"] }, Open ]], Cell[332621, 10489, 426, 14, 89, "Text"] }, Closed]], Cell[CellGroupData[{ Cell[333084, 10508, 237, 10, 36, "Subsection"], Cell[333324, 10520, 753, 22, 113, "Text"], Cell[334080, 10544, 507, 14, 89, "Text"] }, Closed]], Cell[CellGroupData[{ Cell[334624, 10563, 270, 10, 36, "Subsection"], Cell[334897, 10575, 788, 20, 161, "Text"], Cell[335688, 10597, 394, 13, 65, "Text"], Cell[336085, 10612, 785, 29, 113, "Text"], Cell[336873, 10643, 2011, 73, 209, "Text"], Cell[338887, 10718, 1304, 38, 185, "Text"] }, Closed]] }, Closed]], Cell[340218, 10760, 87, 3, 29, "Text", CellTags->"blank 4"], Cell[CellGroupData[{ Cell[340330, 10767, 184, 4, 72, "Section"], Cell[340517, 10773, 418, 13, 65, "Text"], Cell[340938, 10788, 2846, 66, 27, "Input"], Cell[343787, 10856, 739, 21, 113, "Text"], Cell[344529, 10879, 911, 27, 137, "Text"], Cell[CellGroupData[{ Cell[345465, 10910, 169, 4, 60, "Subsection"], Cell[345637, 10916, 186, 9, 41, "Text"], Cell[345826, 10927, 583, 22, 89, "Text"], Cell[346412, 10951, 252, 10, 41, "Text"], Cell[346667, 10963, 1527, 54, 185, "Text"], Cell[348197, 11019, 636, 23, 89, "Text"], Cell[CellGroupData[{ Cell[348858, 11046, 246, 7, 62, "Text"], Cell[349107, 11055, 104, 2, 33, "Input"], Cell[349214, 11059, 208, 5, 33, "Input"], Cell[349425, 11066, 120, 2, 33, "Input"], Cell[349548, 11070, 243, 6, 52, "Input"], Cell[349794, 11078, 87, 2, 33, "Input"], Cell[349884, 11082, 87, 2, 33, "Input"], Cell[CellGroupData[{ Cell[349996, 11088, 96, 2, 33, "Input"], Cell[350095, 11092, 2340, 73, 70, "Print"], Cell[352438, 11167, 3192, 98, 70, "Print"], Cell[355633, 11267, 2433, 77, 70, "Print"], Cell[358069, 11346, 240, 5, 70, "Print"], Cell[358312, 11353, 254, 5, 70, "Print"], Cell[358569, 11360, 202, 4, 70, "Print"], Cell[358774, 11366, 227, 5, 70, "Print"], Cell[359004, 11373, 267, 6, 70, "Print"], Cell[359274, 11381, 246, 5, 70, "Print"], Cell[359523, 11388, 199, 4, 70, "Print"], Cell[359725, 11394, 116, 4, 70, "Output"], Cell[359844, 11400, 74, 1, 70, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[359955, 11406, 71, 2, 33, "Input"], Cell[360029, 11410, 65, 1, 70, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[360131, 11416, 90, 2, 33, "Input"], Cell[360224, 11420, 287, 5, 70, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[360548, 11430, 89, 2, 33, "Input"], Cell[360640, 11434, 337, 6, 70, "Output"] }, Open ]] }, Closed]], Cell[361004, 11444, 564, 19, 84, "Text"], Cell[361571, 11465, 303, 13, 41, "Text"], Cell[361877, 11480, 322, 13, 41, "Text"], Cell[362202, 11495, 313, 13, 41, "Text"], Cell[362518, 11510, 344, 14, 65, "Text"], Cell[CellGroupData[{ Cell[362887, 11528, 284, 10, 54, "Subsubsection", CellTags->"sec 5"], Cell[363174, 11540, 345, 12, 65, "Text", CellTags->"sec 5"], Cell[CellGroupData[{ Cell[363544, 11556, 78, 2, 33, "Input", CellTags->"sec 5"], Cell[363625, 11560, 308, 7, 70, "Output"] }, Open ]], Cell[363948, 11570, 506, 13, 89, "Text", CellTags->"sec 5"], Cell[CellGroupData[{ Cell[364479, 11587, 53, 1, 33, "Input"], Cell[364535, 11590, 99, 2, 70, "Output"] }, Open ]], Cell[364649, 11595, 355, 8, 89, "Text", CellTags->"sec 5"], Cell[365007, 11605, 41, 1, 33, "Input"], Cell[365051, 11608, 187, 7, 41, "Text", CellTags->"sec 5"], Cell[CellGroupData[{ Cell[365263, 11619, 45, 1, 33, "Input"], Cell[365311, 11622, 46, 1, 70, "Output"] }, Open ]], Cell[365372, 11626, 333, 11, 65, "Text", CellTags->"sec 5"] }, Closed]], Cell[CellGroupData[{ Cell[365742, 11642, 97, 2, 36, "Subsubsection"], Cell[365842, 11646, 637, 22, 67, "Text"], Cell[366482, 11670, 632, 16, 38, "Text"], Cell[367117, 11688, 1773, 64, 142, "Text"] }, Closed]], Cell[CellGroupData[{ Cell[368927, 11757, 236, 7, 57, "Text"], Cell[369166, 11766, 75, 2, 33, "Input"], Cell[CellGroupData[{ Cell[369266, 11772, 963, 22, 71, "Input"], Cell[370232, 11796, 572, 10, 115, "Output"] }, Open ]], Cell[370819, 11809, 393, 15, 65, "Text"], Cell[371215, 11826, 122, 2, 33, "Input"], Cell[371340, 11830, 358, 7, 95, "Input"], Cell[371701, 11839, 265, 6, 65, "Text"], Cell[CellGroupData[{ Cell[371991, 11849, 106, 2, 33, "Input"], Cell[372100, 11853, 511, 14, 86, "Print"], Cell[372614, 11869, 3159, 97, 90, "Print"], Cell[375776, 11968, 511, 14, 86, "Print"], Cell[376290, 11984, 242, 5, 28, "Print"], Cell[376535, 11991, 254, 5, 28, "Print"], Cell[376792, 11998, 243, 5, 28, "Print"], Cell[377038, 12005, 265, 6, 28, "Print"], Cell[377306, 12013, 125, 4, 38, "Output"], Cell[377434, 12019, 246, 5, 28, "Print"], Cell[377683, 12026, 131, 4, 38, "Output"], Cell[377817, 12032, 116, 4, 43, "Output"], Cell[377936, 12038, 74, 1, 33, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[378047, 12044, 71, 2, 33, "Input"], Cell[378121, 12048, 40, 1, 33, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[378198, 12054, 90, 2, 33, "Input"], Cell[378291, 12058, 213, 4, 56, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[378541, 12067, 89, 2, 33, "Input"], Cell[378633, 12071, 378, 6, 59, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[379048, 12082, 307, 11, 62, "Text"], Cell[379358, 12095, 457, 12, 65, "Text"], Cell[379818, 12109, 176, 3, 33, "Input"], Cell[CellGroupData[{ Cell[380019, 12116, 152, 3, 33, "Input"], Cell[380174, 12121, 70, 1, 70, "Output"] }, Open ]], Cell[380259, 12125, 534, 20, 65, "Text"], Cell[CellGroupData[{ Cell[380818, 12149, 179, 4, 33, "Input"], Cell[381000, 12155, 70, 1, 70, "Output"] }, Open ]], Cell[381085, 12159, 151, 4, 41, "Text"], Cell[CellGroupData[{ Cell[381261, 12167, 211, 4, 33, "Input"], Cell[381475, 12173, 70, 1, 70, "Output"] }, Open ]], Cell[381560, 12177, 287, 8, 65, "Text"], Cell[CellGroupData[{ Cell[381872, 12189, 146, 3, 33, "Input"], Cell[382021, 12194, 250, 5, 70, "Output"] }, Open ]], Cell[382286, 12202, 179, 7, 41, "Text"], Cell[CellGroupData[{ Cell[382490, 12213, 99, 2, 33, "Input"], Cell[382592, 12217, 156, 3, 70, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[382785, 12225, 409, 14, 86, "Text"], Cell[CellGroupData[{ Cell[383219, 12243, 109, 2, 33, "Input"], Cell[383331, 12247, 71, 1, 70, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[383439, 12253, 146, 3, 33, "Input"], Cell[383588, 12258, 71, 1, 70, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[383696, 12264, 135, 3, 33, "Input"], Cell[383834, 12269, 184, 3, 70, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[384055, 12277, 91, 2, 33, "Input"], Cell[384149, 12281, 35, 1, 70, "Output"] }, Open ]] }, Closed]], Cell[384211, 12286, 247, 9, 36, "Text"], Cell[CellGroupData[{ Cell[384483, 12299, 123, 2, 33, "Input"], Cell[384609, 12303, 203, 4, 70, "Output"] }, Open ]], Cell[384827, 12310, 171, 7, 41, "Text"], Cell[CellGroupData[{ Cell[385023, 12321, 171, 4, 33, "Input"], Cell[385197, 12327, 281, 5, 70, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[385515, 12337, 90, 2, 33, "Input"], Cell[385608, 12341, 35, 1, 70, "Output"] }, Open ]], Cell[385658, 12345, 120, 2, 33, "Input"] }, Closed]] }, Closed]], Cell[CellGroupData[{ Cell[385827, 12353, 109, 2, 36, "Subsubsection"], Cell[385939, 12357, 2752, 92, 305, "Text"], Cell[388694, 12451, 588, 20, 89, "Text"] }, Closed]], Cell[CellGroupData[{ Cell[389319, 12476, 239, 7, 57, "Text"], Cell[389561, 12485, 41, 1, 33, "Input"], Cell[CellGroupData[{ Cell[389627, 12490, 286, 5, 85, "Input"], Cell[389916, 12497, 1289, 23, 227, "Output"] }, Open ]], Cell[391220, 12523, 267, 8, 33, "Input"], Cell[CellGroupData[{ Cell[391512, 12535, 72, 1, 46, "Input"], Cell[391587, 12538, 63, 1, 44, "Output"] }, Open ]], Cell[391665, 12542, 523, 16, 89, "Text"], Cell[CellGroupData[{ Cell[392213, 12562, 72, 1, 33, "Input"], Cell[392288, 12565, 507, 14, 86, "Print"], Cell[392798, 12581, 3159, 97, 90, "Print"], Cell[395960, 12680, 507, 14, 86, "Print"], Cell[396470, 12696, 197, 4, 28, "Print"], Cell[396670, 12702, 130, 4, 38, "Output"], Cell[396803, 12708, 252, 5, 28, "Print"], Cell[397058, 12715, 242, 5, 28, "Print"], Cell[397303, 12722, 174, 3, 28, "Print"], Cell[397480, 12727, 139, 2, 28, "Print"], Cell[397622, 12731, 265, 6, 28, "Print"], Cell[397890, 12739, 125, 4, 38, "Output"], Cell[398018, 12745, 246, 5, 28, "Print"], Cell[398267, 12752, 131, 4, 38, "Output"], Cell[398401, 12758, 92, 1, 28, "Print"], Cell[398496, 12761, 116, 4, 43, "Output"], Cell[398615, 12767, 74, 1, 33, "Output"] }, Open ]], Cell[398704, 12771, 144, 5, 41, "Text"], Cell[CellGroupData[{ Cell[398873, 12780, 41, 1, 33, "Input"], Cell[398917, 12783, 294, 4, 61, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[399248, 12792, 46, 1, 33, "Input"], Cell[399297, 12795, 289, 4, 61, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[399623, 12804, 339, 7, 33, "Input"], Cell[399965, 12813, 70, 1, 33, "Output"] }, Open ]], Cell[400050, 12817, 166, 5, 41, "Text"], Cell[CellGroupData[{ Cell[400241, 12826, 49, 1, 33, "Input"], Cell[400293, 12829, 39, 1, 33, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[400369, 12835, 57, 1, 33, "Input"], Cell[400429, 12838, 67, 1, 33, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[400533, 12844, 246, 9, 62, "Text"], Cell[400782, 12855, 102, 2, 33, "Input"], Cell[CellGroupData[{ Cell[400909, 12861, 69, 1, 33, "Input"], Cell[400981, 12864, 35, 1, 70, "Output"] }, Open ]], Cell[401031, 12868, 210, 6, 65, "Text"], Cell[401244, 12876, 58, 1, 33, "Input"], Cell[CellGroupData[{ Cell[401327, 12881, 72, 1, 33, "Input"], Cell[401402, 12884, 35, 1, 70, "Output"] }, Open ]] }, Closed]], Cell[CellGroupData[{ Cell[401486, 12891, 56, 1, 28, "Input"], Cell[401545, 12894, 218, 3, 56, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[401800, 12902, 55, 1, 33, "Input"], Cell[401858, 12905, 1122, 19, 273, "Output"] }, Open ]], Cell[402995, 12927, 148, 5, 41, "Text"], Cell[CellGroupData[{ Cell[403168, 12936, 140, 3, 33, "Input"], Cell[403311, 12941, 1218, 20, 193, "Output"] }, Open ]], Cell[404544, 12964, 67, 1, 33, "Input"] }, Closed]] }, Closed]], Cell[CellGroupData[{ Cell[404660, 12971, 169, 4, 39, "Subsection"], Cell[404832, 12977, 652, 22, 113, "Text"], Cell[405487, 13001, 1670, 56, 209, "Text"], Cell[407160, 13059, 646, 27, 65, "Text"], Cell[CellGroupData[{ Cell[407831, 13090, 233, 7, 62, "Text"], Cell[408067, 13099, 75, 2, 33, "Input"], Cell[408145, 13103, 97, 2, 33, "Input"], Cell[408245, 13107, 171, 3, 33, "Input"], Cell[408419, 13112, 254, 10, 41, "Text"], Cell[408676, 13124, 100, 2, 33, "Input"], Cell[CellGroupData[{ Cell[408801, 13130, 164, 4, 33, "Input"], Cell[408968, 13136, 121, 2, 33, "Output"] }, Open ]], Cell[409104, 13141, 256, 10, 41, "Text"], Cell[409363, 13153, 96, 2, 33, "Input"], Cell[409462, 13157, 201, 7, 41, "Text"], Cell[409666, 13166, 87, 2, 33, "Input"], Cell[CellGroupData[{ Cell[409778, 13172, 94, 2, 33, "Input"], Cell[409875, 13176, 648, 20, 86, "Print"], Cell[410526, 13198, 734, 26, 30, "Print"], Cell[411263, 13226, 778, 24, 130, "Print"], Cell[412044, 13252, 242, 5, 28, "Print"], Cell[412289, 13259, 145, 4, 38, "Output"], Cell[412437, 13265, 160, 3, 28, "Print"], Cell[412600, 13270, 244, 5, 28, "Print"], Cell[412847, 13277, 269, 6, 28, "Print"], Cell[413119, 13285, 267, 6, 28, "Print"], Cell[413389, 13293, 246, 5, 28, "Print"], Cell[413638, 13300, 242, 5, 28, "Print"], Cell[413883, 13307, 252, 5, 28, "Print"], Cell[414138, 13314, 75, 1, 33, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[414250, 13320, 75, 2, 33, "Input"], Cell[414328, 13324, 141, 4, 38, "Output"] }, Open ]], Cell[414484, 13331, 411, 16, 89, "Text"], Cell[CellGroupData[{ Cell[414920, 13351, 704, 20, 72, "Input"], Cell[CellGroupData[{ Cell[415649, 13375, 260, 6, 71, "Input"], Cell[415912, 13383, 1235, 38, 70, "Print"], Cell[417150, 13423, 1349, 43, 70, "Print"], Cell[418502, 13468, 1355, 42, 70, "Print"], Cell[419860, 13512, 242, 5, 70, "Print"], Cell[420105, 13519, 148, 4, 70, "Output"], Cell[420256, 13525, 133, 3, 70, "Print"], Cell[420392, 13530, 58, 1, 70, "Print"], Cell[420453, 13533, 244, 5, 70, "Print"], Cell[420700, 13540, 269, 6, 70, "Print"], Cell[420972, 13548, 269, 6, 70, "Print"], Cell[421244, 13556, 201, 4, 70, "Print"], Cell[421448, 13562, 199, 4, 70, "Print"], Cell[421650, 13568, 116, 4, 70, "Output"], Cell[421769, 13574, 70, 1, 70, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[421876, 13580, 94, 2, 33, "Input"], Cell[421973, 13584, 70, 1, 70, "Output"] }, Open ]] }, Closed]], Cell[CellGroupData[{ Cell[422092, 13591, 75, 2, 28, "Input"], Cell[422170, 13595, 141, 4, 38, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[422348, 13604, 1053, 29, 72, "Input"], Cell[CellGroupData[{ Cell[423426, 13637, 290, 6, 71, "Input"], Cell[423719, 13645, 1260, 37, 70, "Print"], Cell[424982, 13684, 1463, 45, 70, "Print"], Cell[426448, 13731, 1462, 43, 70, "Print"], Cell[427913, 13776, 242, 5, 70, "Print"], Cell[428158, 13783, 58, 1, 70, "Print"], Cell[428219, 13786, 246, 5, 70, "Print"], Cell[428468, 13793, 269, 6, 70, "Print"], Cell[428740, 13801, 269, 6, 70, "Print"], Cell[429012, 13809, 201, 4, 70, "Print"], Cell[429216, 13815, 199, 4, 70, "Print"], Cell[429418, 13821, 116, 4, 70, "Output"], Cell[429537, 13827, 75, 1, 70, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[429649, 13833, 84, 2, 33, "Input"], Cell[429736, 13837, 38, 1, 70, "Output"] }, Open ]] }, Closed]], Cell[CellGroupData[{ Cell[429823, 13844, 100, 2, 28, "Input"], Cell[429926, 13848, 141, 4, 38, "Output"] }, Open ]] }, Closed]], Cell[430094, 13856, 67, 1, 36, "Text"] }, Closed]] }, Closed]], Cell[430188, 13861, 64, 2, 29, "Text"], Cell[CellGroupData[{ Cell[430277, 13867, 179, 4, 72, "Section"], Cell[430459, 13873, 1300, 47, 185, "Text"], Cell[CellGroupData[{ Cell[431784, 13924, 198, 7, 57, "Subsection"], Cell[431985, 13933, 528, 17, 89, "Text"], Cell[CellGroupData[{ Cell[432538, 13954, 92, 1, 33, "Input"], Cell[432633, 13957, 745, 19, 52, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[433415, 13981, 99, 2, 33, "Input"], Cell[433517, 13985, 677, 17, 52, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[434231, 14007, 104, 2, 33, "Input"], Cell[434338, 14011, 627, 16, 52, "Output"] }, Open ]], Cell[434980, 14030, 346, 13, 65, "Text"], Cell[435329, 14045, 441, 15, 65, "Text"], Cell[CellGroupData[{ Cell[435795, 14064, 71, 1, 33, "Input"], Cell[435869, 14067, 98, 2, 35, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[436004, 14074, 1534, 43, 209, "Text"], Cell[437541, 14119, 107, 3, 27, "Input"], Cell[437651, 14124, 654, 20, 53, "Input"] }, Open ]] }, Closed]], Cell[CellGroupData[{ Cell[438354, 14150, 127, 2, 36, "Subsection"], Cell[438484, 14154, 702, 26, 89, "Text"], Cell[CellGroupData[{ Cell[439211, 14184, 68, 1, 33, "Input"], Cell[439282, 14187, 928, 26, 49, "Output"] }, Open ]], Cell[440225, 14216, 594, 20, 89, "Text"], Cell[CellGroupData[{ Cell[440844, 14240, 247, 7, 62, "Text"], Cell[441094, 14249, 133, 3, 33, "Input"], Cell[441230, 14254, 116, 2, 33, "Input"], Cell[441349, 14258, 199, 5, 65, "Text"], Cell[441551, 14265, 230, 6, 52, "Input"], Cell[CellGroupData[{ Cell[441806, 14275, 74, 2, 33, "Input"], Cell[441883, 14279, 3316, 85, 199, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[445236, 14369, 731, 19, 33, "Input"], Cell[445970, 14390, 6669, 172, 224, "Print"], Cell[452642, 14564, 5880, 178, 203, "Print"], Cell[458525, 14744, 6842, 177, 188, "Print"], Cell[465370, 14923, 240, 5, 28, "Print"], Cell[465613, 14930, 246, 5, 28, "Print"], Cell[465862, 14937, 267, 6, 28, "Print"], Cell[466132, 14945, 267, 6, 28, "Print"], Cell[466402, 14953, 246, 5, 28, "Print"], Cell[466651, 14960, 242, 5, 28, "Print"], Cell[466896, 14967, 252, 5, 28, "Print"], Cell[467151, 14974, 70, 1, 33, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[467258, 14980, 70, 2, 33, "Input"], Cell[467331, 14984, 4631, 115, 170, "Output"] }, Open ]], Cell[471977, 15102, 454, 16, 65, "Text"], Cell[CellGroupData[{ Cell[472456, 15122, 309, 9, 33, "Input"], Cell[472768, 15133, 3503, 86, 216, "Print"], Cell[476274, 15221, 1971, 60, 58, "Print"], Cell[478248, 15283, 3656, 91, 188, "Print"], Cell[481907, 15376, 242, 5, 28, "Print"], Cell[482152, 15383, 246, 5, 28, "Print"], Cell[482401, 15390, 269, 6, 28, "Print"], Cell[482673, 15398, 269, 6, 28, "Print"], Cell[482945, 15406, 201, 4, 28, "Print"], Cell[483149, 15412, 199, 4, 28, "Print"], Cell[483351, 15418, 137, 4, 43, "Output"], Cell[483491, 15424, 75, 1, 33, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[483603, 15430, 115, 2, 33, "Input"], Cell[483721, 15434, 2423, 59, 89, "Output"] }, Open ]], Cell[486159, 15496, 233, 7, 41, "Text"], Cell[CellGroupData[{ Cell[486417, 15507, 125, 2, 33, "Input"], Cell[486545, 15511, 2423, 59, 89, "Output"] }, Open ]] }, Closed]], Cell[488995, 15574, 381, 11, 60, "Text"], Cell[CellGroupData[{ Cell[489401, 15589, 738, 28, 110, "Text"], Cell[490142, 15619, 76, 1, 33, "Input"], Cell[490221, 15622, 238, 12, 41, "Text"], Cell[CellGroupData[{ Cell[490484, 15638, 68, 1, 33, "Input"], Cell[490555, 15641, 241, 5, 35, "Output"] }, Open ]], Cell[490811, 15649, 149, 6, 41, "Text"], Cell[CellGroupData[{ Cell[490985, 15659, 37, 1, 33, "Input"], Cell[491025, 15662, 98, 2, 35, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[491160, 15669, 45, 1, 33, "Input"], Cell[491208, 15672, 98, 2, 35, "Output"] }, Open ]] }, Closed]], Cell[491333, 15678, 564, 18, 84, "Text"], Cell[CellGroupData[{ Cell[491922, 15700, 223, 7, 62, "Text"], Cell[492148, 15709, 75, 2, 33, "Input"], Cell[492226, 15713, 97, 2, 33, "Input"], Cell[492326, 15717, 391, 16, 41, "Text"], Cell[492720, 15735, 110, 2, 33, "Input"], Cell[492833, 15739, 230, 5, 52, "Input"], Cell[493066, 15746, 122, 2, 33, "Input"], Cell[493191, 15750, 124, 2, 33, "Input"], Cell[CellGroupData[{ Cell[493340, 15756, 453, 13, 33, "Input"], Cell[493796, 15771, 511, 14, 86, "Print"], Cell[494310, 15787, 5880, 178, 203, "Print"], Cell[500193, 15967, 511, 14, 86, "Print"], Cell[500707, 15983, 197, 4, 28, "Print"], Cell[500907, 15989, 253, 5, 28, "Print"], Cell[501163, 15996, 244, 5, 28, "Print"], Cell[501410, 16003, 269, 6, 28, "Print"], Cell[501682, 16011, 269, 6, 28, "Print"], Cell[501954, 16019, 201, 4, 28, "Print"], Cell[502158, 16025, 244, 5, 28, "Print"], Cell[502405, 16032, 252, 5, 28, "Print"], Cell[502660, 16039, 69, 1, 33, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[502766, 16045, 70, 2, 33, "Input"], Cell[502839, 16049, 3716, 89, 167, "Output"] }, Open ]], Cell[506570, 16141, 25, 3, 55, "Text"], Cell[CellGroupData[{ Cell[506620, 16148, 71, 2, 33, "Input"], Cell[506694, 16152, 1203, 40, 89, "Output"] }, Open ]], Cell[507912, 16195, 515, 22, 41, "Text"], Cell[CellGroupData[{ Cell[508452, 16221, 81, 2, 33, "Input"], Cell[508536, 16225, 36, 1, 33, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[508609, 16231, 453, 13, 33, "Input"], Cell[509065, 16246, 511, 14, 86, "Print"], Cell[509579, 16262, 7358, 222, 242, "Print"], Cell[516940, 16486, 511, 14, 86, "Print"], Cell[517454, 16502, 197, 4, 28, "Print"], Cell[517654, 16508, 254, 5, 28, "Print"], Cell[517911, 16515, 244, 5, 28, "Print"], Cell[518158, 16522, 267, 6, 28, "Print"], Cell[518428, 16530, 269, 6, 28, "Print"], Cell[518700, 16538, 246, 5, 28, "Print"], Cell[518949, 16545, 242, 5, 28, "Print"], Cell[519194, 16552, 252, 5, 28, "Print"], Cell[519449, 16559, 74, 1, 33, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[519560, 16565, 70, 2, 33, "Input"], Cell[519633, 16569, 4993, 124, 206, "Output"] }, Open ]], Cell[524641, 16696, 479, 17, 65, "Text"], Cell[CellGroupData[{ Cell[525145, 16717, 78, 2, 33, "Input"], Cell[525226, 16721, 3732, 128, 172, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[528995, 16854, 87, 2, 33, "Input"], Cell[529085, 16858, 561, 19, 50, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[529683, 16882, 97, 2, 33, "Input"], Cell[529783, 16886, 4251, 126, 237, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[534071, 17017, 98, 2, 33, "Input"], Cell[534172, 17021, 137, 2, 52, "Output"] }, Open ]], Cell[534324, 17026, 323, 12, 65, "Text"], Cell[CellGroupData[{ Cell[534672, 17042, 95, 2, 33, "Input"], Cell[534770, 17046, 641, 20, 50, "Output"] }, Open ]] }, Closed]] }, Closed]], Cell[CellGroupData[{ Cell[535472, 17073, 149, 5, 36, "Subsection"], Cell[535624, 17080, 972, 29, 161, "Text"], Cell[CellGroupData[{ Cell[536621, 17113, 226, 7, 62, "Text"], Cell[536850, 17122, 75, 2, 33, "Input"], Cell[CellGroupData[{ Cell[536950, 17128, 348, 7, 105, "Input"], Cell[537301, 17137, 506, 8, 120, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[537844, 17150, 243, 6, 52, "Input"], Cell[538090, 17158, 601, 11, 120, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[538728, 17174, 123, 2, 33, "Input"], Cell[538854, 17178, 1044, 17, 275, "Output"] }, Open ]], Cell[539913, 17198, 629, 26, 65, "Text"], Cell[540545, 17226, 94, 2, 33, "Input"], Cell[540642, 17230, 101, 2, 33, "Input"], Cell[CellGroupData[{ Cell[540768, 17236, 86, 2, 33, "Input"], Cell[540857, 17240, 282, 5, 61, "Output"] }, Open ]], Cell[541154, 17248, 370, 16, 41, "Text"], Cell[CellGroupData[{ Cell[541549, 17268, 175, 4, 33, "Input"], Cell[541727, 17274, 79, 1, 33, "Output"] }, Open ]], Cell[541821, 17278, 164, 9, 41, "Text"], Cell[CellGroupData[{ Cell[542010, 17291, 139, 4, 62, "Text"], Cell[CellGroupData[{ Cell[542174, 17299, 293, 8, 33, "Input"], Cell[542470, 17309, 507, 14, 86, "Print"], Cell[542980, 17325, 424, 14, 28, "Print"], Cell[543407, 17341, 507, 14, 86, "Print"], Cell[543917, 17357, 242, 5, 28, "Print"], Cell[544162, 17364, 58, 1, 28, "Print"], Cell[544223, 17367, 242, 5, 28, "Print"], Cell[544468, 17374, 174, 3, 28, "Print"], Cell[544645, 17379, 139, 2, 28, "Print"], Cell[544787, 17383, 267, 6, 28, "Print"], Cell[545057, 17391, 267, 6, 28, "Print"], Cell[545327, 17399, 246, 5, 28, "Print"], Cell[545576, 17406, 242, 5, 28, "Print"], Cell[545821, 17413, 115, 2, 28, "Print"], Cell[545939, 17417, 252, 5, 28, "Print"], Cell[546194, 17424, 74, 1, 33, "Output"] }, Open ]] }, Closed]], Cell[CellGroupData[{ Cell[546317, 17431, 81, 2, 28, "Input"], Cell[546401, 17435, 1282, 21, 247, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[547720, 17461, 133, 3, 33, "Input"], Cell[547856, 17466, 242, 4, 55, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[548135, 17475, 108, 2, 33, "Input"], Cell[548246, 17479, 416, 8, 106, "Output"] }, Open ]], Cell[548677, 17490, 35, 1, 52, "Input"], Cell[CellGroupData[{ Cell[548737, 17495, 145, 4, 62, "Text"], Cell[CellGroupData[{ Cell[548907, 17503, 75, 2, 33, "Input"], Cell[548985, 17507, 141, 4, 70, "Output"] }, Open ]], Cell[549141, 17514, 423, 19, 41, "Text"], Cell[CellGroupData[{ Cell[549589, 17537, 123, 2, 33, "Input"], Cell[549715, 17541, 9338, 285, 70, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[559090, 17831, 173, 4, 33, "Input"], Cell[559266, 17837, 3998, 114, 70, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[563301, 17956, 175, 4, 33, "Input"], Cell[563479, 17962, 692, 17, 70, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[564208, 17984, 341, 11, 86, "Text"], Cell[CellGroupData[{ Cell[564574, 17999, 104, 2, 33, "Input"], Cell[564681, 18003, 200, 4, 70, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[564918, 18012, 100, 2, 33, "Input"], Cell[565021, 18016, 1644, 46, 70, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[566702, 18067, 108, 2, 33, "Input"], Cell[566813, 18071, 200, 4, 70, "Output"] }, Open ]] }, Closed]], Cell[567040, 18079, 35, 1, 47, "Input"], Cell[CellGroupData[{ Cell[567100, 18084, 293, 8, 33, "Input"], Cell[567396, 18094, 507, 14, 70, "Print"], Cell[567906, 18110, 424, 14, 70, "Print"], Cell[568333, 18126, 507, 14, 70, "Print"], Cell[568843, 18142, 242, 5, 70, "Print"], Cell[569088, 18149, 141, 4, 70, "Output"], Cell[569232, 18155, 244, 5, 70, "Print"], Cell[569479, 18162, 174, 3, 70, "Print"], Cell[569656, 18167, 139, 2, 70, "Print"], Cell[569798, 18171, 267, 6, 70, "Print"], Cell[570068, 18179, 269, 6, 70, "Print"], Cell[570340, 18187, 246, 5, 70, "Print"], Cell[570589, 18194, 241, 5, 70, "Print"], Cell[570833, 18201, 115, 2, 70, "Print"], Cell[570951, 18205, 252, 5, 70, "Print"], Cell[571206, 18212, 70, 1, 70, "Output"] }, Open ]] }, Closed]], Cell[CellGroupData[{ Cell[571325, 18219, 81, 2, 28, "Input"], Cell[571409, 18223, 2423, 59, 89, "Output"] }, Open ]], Cell[573847, 18285, 327, 16, 41, "Text"], Cell[CellGroupData[{ Cell[574199, 18305, 75, 2, 33, "Input"], Cell[574277, 18309, 38, 1, 33, "Output"] }, Open ]], Cell[CellGroupData[{ Cell[574352, 18315, 108, 2, 33, "Input"], Cell[574463, 18319, 675, 17, 50, "Output"] }, Open ]], Cell[575153, 18339, 506, 18, 68, "Text"] }, Closed]], Cell[575674, 18360, 428, 18, 60, "Text"] }, Closed]] }, Closed]], Cell[576129, 18382, 26, 0, 28, "Input"] } ] *) (*********************************************************************** End of Mathematica Notebook file. ***********************************************************************)