{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"\n",
"\n",
"# LaTeX Interface Example: BSSN (Cartesian)\n",
"\n",
"## Author: Ken Sible\n",
"\n",
"### The following notebook will demonstrate parsing BSSN (Cartesian) and validating against NRPy+"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Covariant Formulation of BSSN\n",
"\n",
"\\begin{align}\n",
" \\partial_t \\bar{\\gamma}_{i j} &= \\left[\\beta^k \\partial_k \\bar{\\gamma}_{i j} + \\partial_i \\beta^k \\bar{\\gamma}_{k j} + \\partial_j \\beta^k \\bar{\\gamma}_{i k} \\right] + \\frac{2}{3} \\bar{\\gamma}_{i j} \\left(\\alpha \\bar{A}^k{}_k - \\bar{D}_k \\beta^k\\right) - 2 \\alpha \\bar{A}_{i j} \\\\\n",
" \\partial_t \\phi &= \\left[\\beta^k \\partial_k \\phi \\right] + \\frac{1}{6} \\left(\\bar{D}_k \\beta^k - \\alpha K \\right) \\\\\n",
" \\partial_t K &= \\left[\\beta^k \\partial_k K \\right] + \\frac{1}{3} \\alpha K^2 + \\alpha \\bar{A}_{i j} \\bar{A}^{i j} - e^{-4 \\phi} \\left(\\bar{D}_i \\bar{D}^i \\alpha + 2 \\bar{D}^i \\alpha \\bar{D}_i \\phi \\right) \\\\\n",
" \\partial_t \\bar{\\Lambda}^i &= \\left[\\beta^k \\partial_k \\bar{\\Lambda}^i - \\partial_k \\beta^i \\bar{\\Lambda}^k \\right] + \\bar{\\gamma}^{j k} \\hat{D}_j \\hat{D}_k \\beta^i + \\frac{2}{3} \\Delta^i \\bar{D}_j \\beta^j + \\frac{1}{3} \\bar{D}^i \\bar{D}_j \\beta^j \\\\\n",
" &\\qquad - 2 \\bar{A}^{i j} \\left(\\partial_j \\alpha - 6 \\partial_j \\phi \\right) + 2 \\alpha \\bar{A}^{j k} \\Delta^i_{j k} - \\frac{4}{3} \\alpha \\bar{\\gamma}^{i j} \\partial_j K \\\\\n",
" \\partial_t \\bar{A}_{i j} &= \\left[\\beta^k \\partial_k \\bar{A}_{i j} + \\partial_i \\beta^k \\bar{A}_{k j} + \\partial_j \\beta^k \\bar{A}_{i k} \\right] - \\frac{2}{3} \\bar{A}_{i j} \\bar{D}_k \\beta^k - 2 \\alpha \\bar{A}_{i k} \\bar{A}^k{}_j + \\alpha \\bar{A}_{i j} K \\\\\n",
" &\\qquad + e^{-4 \\phi} \\left\\{-2 \\alpha \\bar{D}_i \\bar{D}_j \\phi + 4 \\alpha \\bar{D}_i \\phi \\bar{D}_j \\phi + 4 \\bar{D}_{(i} \\alpha \\bar{D}_{j)} \\phi - \\bar{D}_i \\bar{D}_j \\alpha + \\alpha \\bar{R}_{i j} \\right\\}^{\\text{TF}} \\\\\n",
" \\partial_t \\alpha &= \\left[\\beta^k \\partial_k \\alpha \\right] - 2 \\alpha K \\\\\n",
" \\partial_t \\beta^i &= \\left[\\beta^k \\bar{D}_k \\beta^i \\right] + B^i \\\\\n",
" \\partial_t B^i &= \\left[\\beta^k \\bar{D}_k B^i \\right] + \\frac{3}{4} \\left(\\partial_t \\bar{\\Lambda}^i - \\left[\\beta^k \\bar{D}_k \\bar{\\Lambda}^i \\right] \\right) - \\eta B^i \\\\\n",
" \\mathcal{H} &= \\frac{2}{3} K^2 - \\bar{A}_{ij} \\bar{A}^{ij} + e^{-4\\phi} \\left(\\bar{R} - 8 \\bar{D}^i \\phi \\bar{D}_i \\phi - 8 \\bar{D}^2 \\phi \\right) \\\\\n",
" \\mathcal{M}^i &= e^{-4\\phi} \\left(\\hat{D}_j \\bar{A}^{ij} + 6 \\bar{A}^{ij}\\partial_j \\phi - \\frac{2}{3} \\bar{\\gamma}^{ij} \\partial_j K + \\bar{A}^{jk} \\Delta^i_{jk} + \\bar{A}^{ik} \\Delta^j_{jk} \\right) \\\\\n",
" \\bar{R}_{i j} &= - \\frac{1}{2} \\bar{\\gamma}^{k l} \\hat{D}_k \\hat{D}_l \\bar{\\gamma}_{i j} + \\bar{\\gamma}_{k(i} \\hat{D}_{j)} \\bar{\\Lambda}^k + \\Delta^k \\Delta_{(i j) k} + \\bar{\\gamma}^{k l} \\left(2 \\Delta_{k(i}^m \\Delta_{j) m l} + \\Delta_{i k}^m \\Delta_{m j l} \\right)\n",
"\\end{align}"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"\n",
"# Table of Contents\n",
"$$\\label{toc}$$\n",
"\n",
"- [Step 1](#step_1): Evolution Equation for $\\partial_t \\bar{\\gamma}_{ij}$\n",
"- [Step 2](#step_2): Evolution Equation for $\\partial_t \\phi$\n",
"- [Step 3](#step_3): Evolution Equation for $\\partial_t K$\n",
"- [Step 4](#step_4): Evolution Equation for $\\partial_t \\bar{\\Lambda}^i$\n",
"- [Step 5](#step_5): Evolution Equation for $\\partial_t \\bar{A}_{ij}$\n",
"- [Step 6](#step_6): Gauge Evolution Equation(s)\n",
"- [Step 7](#step_7): Constraint Equation(s)\n",
"- [Step 8](#step_8): Output Notebook to PDF"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\u001b[33mWARNING: There was an error checking the latest version of pip.\u001b[0m\u001b[33m\n",
"\u001b[0mnrpylatex==1.0.8\n"
]
}
],
"source": [
"!pip install nrpylatex==1.0.8 > /dev/null\n",
"!pip freeze | grep nrpylatex\n",
"%load_ext nrpylatex.extension"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"execution": {
"iopub.execute_input": "2021-03-07T17:12:04.697783Z",
"iopub.status.busy": "2021-03-07T17:12:04.696674Z",
"iopub.status.idle": "2021-03-07T17:12:06.156502Z",
"shell.execute_reply": "2021-03-07T17:12:06.155932Z"
}
},
"outputs": [],
"source": [
"from UnitTesting.assert_equal import assert_equal\n",
"\n",
"import NRPy_param_funcs as par, reference_metric as rfm\n",
"import BSSN.BSSN_quantities as Bq\n",
"import BSSN.BSSN_RHSs as Brhs\n",
"import BSSN.BSSN_gauge_RHSs as gaugerhs\n",
"import BSSN.BSSN_constraints as bssncon\n",
"\n",
"par.set_parval_from_str('reference_metric::CoordSystem', 'Cartesian')\n",
"par.set_parval_from_str('BSSN.BSSN_quantities::LeaveRicciSymbolic', 'True')\n",
"rfm.reference_metric()\n",
"Brhs.BSSN_RHSs()\n",
"gaugerhs.BSSN_gauge_RHSs()\n",
"bssncon.BSSN_constraints()\n",
"par.set_parval_from_str('BSSN.BSSN_quantities::LeaveRicciSymbolic', 'False')\n",
"Bq.RicciBar__gammabarDD_dHatD__DGammaUDD__DGammaU()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We formatted the notebook in the following pedagogical scheme, shown below, to encourage a *learned* approach to parsing tensorial LaTeX.\n",
"```\n",
"(1) attempt to parse equation\n",
"(2) if ParseError or TensorError\n",
" debug error and goto (1)\n",
"(3) change equation and goto (1)\n",
"```\n",
"[YouTube Tutorial](https://www.youtube.com/watch?v=A9IWYpQe6Fo) (Notebook Walkthrough)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"\n",
"## Step 1: Evolution Equation for $\\partial_t \\bar{\\gamma}_{ij}$ [ [^](#top) ]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\\begin{equation}\n",
" \\partial_t \\bar{\\gamma}_{i j} = \\left[\\beta^k \\partial_k \\bar{\\gamma}_{i j} + \\partial_i \\beta^k \\bar{\\gamma}_{k j} + \\partial_j \\beta^k \\bar{\\gamma}_{i k} \\right] + \\frac{2}{3} \\bar{\\gamma}_{i j} \\left(\\alpha \\bar{A}^k{}_k - \\bar{D}_k \\beta^k\\right) - 2 \\alpha \\bar{A}_{i j}\n",
"\\end{equation}"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"execution": {
"iopub.execute_input": "2021-03-07T17:12:06.166378Z",
"iopub.status.busy": "2021-03-07T17:12:06.165695Z",
"iopub.status.idle": "2021-03-07T17:12:06.168856Z",
"shell.execute_reply": "2021-03-07T17:12:06.169352Z"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"ParseError: \\partial_t \\bar{\\gamma}_{i j} = [\\beta^k \\partial_k \\bar{\\gamma}_{i j} + \\partial_i \\beta^k\n",
" ^\n",
"cannot index undefined tensor 'gammabarDD' at position 29\n"
]
}
],
"source": [
"%%parse_latex --reset --ignore-warning\n",
"\n",
"\\begin{align}\n",
" \\partial_t \\bar{\\gamma}_{i j} &= \\left[\\beta^k \\partial_k \\bar{\\gamma}_{i j} + \\partial_i \\beta^k\n",
" \\bar{\\gamma}_{k j} + \\partial_j \\beta^k \\bar{\\gamma}_{i k} \\right] + \\frac{2}{3} \\bar{\\gamma}_{i j} \\left(\\alpha\n",
" \\bar{A}^k{}_k - \\bar{D}_k \\beta^k\\right) - 2 \\alpha \\bar{A}_{i j} \\\\\n",
"\\end{align}"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"First, attempt to parse the equation without any modification, and notice the `ParseError` for indexing an `undefined tensor 'gammabarDD'`.\n",
"\n",
"`gammabarDD :=` $ \\bar{\\gamma}_{ij} = h_{ij} + \\hat{\\gamma}_{ij} $ where `hDD` is the deviation from the flat 3D Cartesian metric `gammahatDD :=` $ \\hat{\\gamma}_{ij} = \\delta_{ij} $.\n",
"\n",
"`vardef`: define a variable, including a derivative option and a (anti)symmetry option.
\n",
"`assign`: assign a `vardef` option to an already existing variable in the namespace.
\n",
"`parse`: parse an equation without rendering that equation in a `.tex` document or a Jupyter Notebook.\n",
"\n",
"`-metric` can assign the symmetry `sym01` and automatically generate the metric inverse and determinant.\n",
"\n",
"1. Define the Kronecker delta `deltaDD` using the `vardef` macro.\n",
"1. Parse the equation $\\hat{\\gamma}_{ij} = \\delta_{ij}$ using the `parse` macro.\n",
"1. Assign the `-metric` option to `gammahatDD` using the `assign` macro.\n",
"\n",
"```\n",
"% vardef -kron 'deltaDD'\n",
"% parse \\hat{\\gamma}_{ij} = \\delta_{ij}\n",
"% assign -diff_type=symbolic -metric 'gammahatDD'\n",
"```\n",
"\n",
"**Remark:** If a derivative option should also apply to the metric inverse and determinant, then that option should precede `-metric`. Moreover, you need not define a scalar quantity. However, should a scalar quantity require a `vardef` option, you may assign one using either the `vardef` or `assign` macro.\n",
"\n",
"1. Define the deviation `hDD` using the `vardef` macro.\n",
"1. Parse the equation $\\bar{\\gamma}_{ij} = h_{ij} + \\hat{\\gamma}_{ij}$ using the `parse` macro.\n",
"1. Assign the `-metric` option to `gammabarDD` using the `assign` macro.\n",
"\n",
"```\n",
"% vardef -diff_type=dD -symmetry=sym01 'hDD'\n",
"% parse \\bar{\\gamma}_{ij} = h_{ij} + \\hat{\\gamma}_{ij}\n",
"% assign -diff_type=dD -metric 'gammabarDD'\n",
"```"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"execution": {
"iopub.execute_input": "2021-03-07T17:12:06.243619Z",
"iopub.status.busy": "2021-03-07T17:12:06.207985Z",
"iopub.status.idle": "2021-03-07T17:12:06.327462Z",
"shell.execute_reply": "2021-03-07T17:12:06.327904Z"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"ParseError: \\partial_t \\bar{\\gamma}_{i j} = [\\beta^k \\partial_k \\bar{\\gamma}_{i j} + \\partial_i \\beta^k\n",
" ^\n",
"cannot index undefined tensor 'betaU' at position 386\n"
]
}
],
"source": [
"%%parse_latex --reset --ignore-warning\n",
"\n",
"\\begin{align}\n",
" % vardef -kron 'deltaDD'\n",
" % parse \\hat{\\gamma}_{ij} = \\delta_{ij}\n",
" % assign -diff_type=symbolic -metric 'gammahatDD'\n",
" % vardef -diff_type=dD -symmetry=sym01 'hDD'\n",
" % parse \\bar{\\gamma}_{ij} = h_{ij} + \\hat{\\gamma}_{ij}\n",
" % assign -diff_type=dD -metric 'gammabarDD'\n",
"\n",
" \\partial_t \\bar{\\gamma}_{i j} &= \\left[\\beta^k \\partial_k \\bar{\\gamma}_{i j} + \\partial_i \\beta^k\n",
" \\bar{\\gamma}_{k j} + \\partial_j \\beta^k \\bar{\\gamma}_{i k} \\right] + \\frac{2}{3} \\bar{\\gamma}_{i j} \\left(\\alpha\n",
" \\bar{A}^k{}_k - \\bar{D}_k \\beta^k\\right) - 2 \\alpha \\bar{A}_{i j} \\\\\n",
"\\end{align}"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Next, replace every instance of `betaU` with `vetU`, a different variable name chosen for the SymPy output, using the `srepl` macro, and then define the variable `vetU` using the `vardef` macro. The `srepl` macro can preserve the original LaTeX representation while changing the variable name internally.\n",
"\n",
"**Remark:** If you require a variable name longer than one Latin or Greek letter, you should surround that variable name in the `\\text` command.\n",
"\n",
"`srepl`: string replacement given the assumption that string `A` and string `B` are equal whenever they are equivalent syntactically\n",
"\n",
"Therefore, for example, `S_{a b} T^{b c}` and `S_{ab}T^{bc}` are considered equal according to the `srepl` macro.\n",
"\n",
"```\n",
"% srepl \"\\beta\" -> \"\\text{vet}\"\n",
"% vardef -diff_type=dD 'vetU'\n",
"```\n",
"\n",
"**Remark**: You can check \"syntactic equivalence\" for the `srepl` macro using the code snippet provided below.\n",
"\n",
"```\n",
"lexer = Lexer()\n",
"lexer.initialize(A)\n",
"syntax_A = [(lexer.lexeme, token) for token in lexer.tokenize()]\n",
"lexer.initialize(B)\n",
"syntax_B = [(lexer.lexeme, token) for token in lexer.tokenize()]\n",
"assert syntax_A == syntax_B\n",
"```\n",
"\n",
"`-persist` will apply the replacement rule `\"...\" -> \"...\"` to every subsequent input (internal or external) of the `parse` function.\n",
"\n",
"**Remark:** The `srepl` macro will *not* replace any text inside of a future `srepl` or `ignore` macro."
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"execution": {
"iopub.execute_input": "2021-03-07T17:12:06.498171Z",
"iopub.status.busy": "2021-03-07T17:12:06.461872Z",
"iopub.status.idle": "2021-03-07T17:12:06.537264Z",
"shell.execute_reply": "2021-03-07T17:12:06.537735Z"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"ParseError: \\bar{A}^k_k - \\bar{D}_k \\text{vet}^k) - 2 \\alpha \\bar{A}_{i j} \\\\\n",
" ^\n",
"cannot index undefined tensor 'AbarUD' at position 598\n"
]
}
],
"source": [
"%%parse_latex --reset --ignore-warning\n",
"\n",
"\\begin{align}\n",
" % vardef -kron 'deltaDD'\n",
" % parse \\hat{\\gamma}_{ij} = \\delta_{ij}\n",
" % assign -diff_type=symbolic -metric 'gammahatDD'\n",
" % vardef -diff_type=dD -symmetry=sym01 'hDD'\n",
" % parse \\bar{\\gamma}_{ij} = h_{ij} + \\hat{\\gamma}_{ij}\n",
" % assign -diff_type=dD -metric 'gammabarDD'\n",
"\n",
" % srepl \"\\beta\" -> \"\\text{vet}\"\n",
" % vardef -diff_type=dD 'vetU'\n",
"\n",
" \\partial_t \\bar{\\gamma}_{i j} &= \\left[\\beta^k \\partial_k \\bar{\\gamma}_{i j} + \\partial_i \\beta^k\n",
" \\bar{\\gamma}_{k j} + \\partial_j \\beta^k \\bar{\\gamma}_{i k} \\right] + \\frac{2}{3} \\bar{\\gamma}_{i j} \\left(\\alpha\n",
" \\bar{A}^k{}_k - \\bar{D}_k \\beta^k\\right) - 2 \\alpha \\bar{A}_{i j} \\\\\n",
"\\end{align}"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"1. Replace every instance of `AbarDD` with `aDD` using the `srepl` macro.\n",
"1. Define the variable `aDD` (with symmetry `sym01`) using the `vardef` macro.\n",
"1. Generate the variable `aUD` by assigning the metric `gammabar` to `aDD`.\n",
"\n",
"\\begin{equation}\n",
" \\bar{A}^i{}_j = \\bar{\\gamma}^{ik} \\bar{A}_{kj}\n",
"\\end{equation}\n",
"\n",
"```\n",
"% srepl \"\\bar{A}\" -> \"\\text{a}\"\n",
"% vardef -diff_type=dD -symmetry=sym01 'aDD'\n",
"% assign -metric='gammabar' 'aDD'\n",
"```\n",
"\n",
"**Remark**: The default metric for a variable is the metric associated with the diacritic (or lack thereof) in the variable name. In the current situtation, we need to explicitly associate that metric since we removed the `bar` diacritic from the variable `AbarDD` using the `srepl` macro."
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"execution": {
"iopub.execute_input": "2021-03-07T17:12:06.555806Z",
"iopub.status.busy": "2021-03-07T17:12:06.550611Z",
"iopub.status.idle": "2021-03-07T17:12:06.721385Z",
"shell.execute_reply": "2021-03-07T17:12:06.720660Z"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"TensorError: unbalanced free index {'t'} in gammabarDD_dD\n"
]
}
],
"source": [
"%%parse_latex --reset --ignore-warning\n",
"\n",
"\\begin{align}\n",
" % vardef -kron 'deltaDD'\n",
" % parse \\hat{\\gamma}_{ij} = \\delta_{ij}\n",
" % assign -diff_type=symbolic -metric 'gammahatDD'\n",
" % vardef -diff_type=dD -symmetry=sym01 'hDD'\n",
" % parse \\bar{\\gamma}_{ij} = h_{ij} + \\hat{\\gamma}_{ij}\n",
" % assign -diff_type=dD -metric 'gammabarDD'\n",
"\n",
" % srepl \"\\beta\" -> \"\\text{vet}\"\n",
" % vardef -diff_type=dD 'vetU'\n",
"\n",
" % srepl \"\\bar{A}\" -> \"\\text{a}\"\n",
" % vardef -diff_type=dD -symmetry=sym01 'aDD'\n",
" % assign -metric='gammabar' 'aDD'\n",
"\n",
" \\partial_t \\bar{\\gamma}_{i j} &= \\left[\\beta^k \\partial_k \\bar{\\gamma}_{i j} + \\partial_i \\beta^k\n",
" \\bar{\\gamma}_{k j} + \\partial_j \\beta^k \\bar{\\gamma}_{i k} \\right] + \\frac{2}{3} \\bar{\\gamma}_{i j} \\left(\\alpha\n",
" \\bar{A}^k{}_k - \\bar{D}_k \\beta^k\\right) - 2 \\alpha \\bar{A}_{i j} \\\\\n",
"\\end{align}"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Next, replace the partial derivative $\\partial_t \\bar{\\gamma}$ on the LHS with the variable name `h_rhs` using the `srepl` macro.\n",
"\n",
"```\n",
"% srepl \"\\partial_t \\bar{\\gamma}\" -> \"\\text{h_rhs}\"\n",
"```\n",
"\n",
"**Remark**: We received a `TensorError` that resulted from interpreting `t` as an index in the partial derivative $\\partial_t \\bar{\\gamma}$ on the LHS. However, if the `basis` included the symbol `t`, then numeric indexing would have occured, i.e. `t -> 0` provided that `basis = [t, x, y, z]` for example."
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"data": {
"text/latex": [
"\\[\n",
"\\begin{align}\n",
" % vardef -kron 'deltaDD'\n",
" % parse \\hat{\\gamma}_{ij} = \\delta_{ij}\n",
" % assign -diff_type=symbolic -metric 'gammahatDD'\n",
" % vardef -diff_type=dD -symmetry=sym01 'hDD'\n",
" % parse \\bar{\\gamma}_{ij} = h_{ij} + \\hat{\\gamma}_{ij}\n",
" % assign -diff_type=dD -metric 'gammabarDD'\n",
"\n",
" % srepl \"\\beta\" -> \"\\text{vet}\"\n",
" % vardef -diff_type=dD 'vetU'\n",
"\n",
" % srepl \"\\bar{A}\" -> \"\\text{a}\"\n",
" % vardef -diff_type=dD -symmetry=sym01 'aDD'\n",
" % assign -metric='gammabar' 'aDD'\n",
"\n",
" % srepl \"\\partial_t \\bar{\\gamma}\" -> \"\\text{h_rhs}\"\n",
" \\partial_t \\bar{\\gamma}_{i j} &= \\left[\\beta^k \\partial_k \\bar{\\gamma}_{i j} + \\partial_i \\beta^k\n",
" \\bar{\\gamma}_{k j} + \\partial_j \\beta^k \\bar{\\gamma}_{i k} \\right] + \\frac{2}{3} \\bar{\\gamma}_{i j} \\left(\\alpha\n",
" \\bar{A}^k{}_k - \\bar{D}_k \\beta^k\\right) - 2 \\alpha \\bar{A}_{i j} \\\\\n",
"\\end{align}\n",
"\\]"
],
"text/plain": [
"('GammahatUDD',\n",
" 'alpha',\n",
" 'hDD_dD',\n",
" 'epsilonUUU',\n",
" 'gammahatUU',\n",
" 'gammahatDD',\n",
" 'gammabardet',\n",
" 'h_rhsDD',\n",
" 'hDD',\n",
" 'deltaDD',\n",
" 'GammabarUDD',\n",
" 'vetU_cdbarD',\n",
" 'gammabarDD',\n",
" 'vetU',\n",
" 'gammabarDD_dD',\n",
" 'aDD',\n",
" 'gammahatdet',\n",
" 'vetU_dD',\n",
" 'aUD',\n",
" 'gammabarUU')"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"%%parse_latex --reset --ignore-warning\n",
"\n",
"\\begin{align}\n",
" % vardef -kron 'deltaDD'\n",
" % parse \\hat{\\gamma}_{ij} = \\delta_{ij}\n",
" % assign -diff_type=symbolic -metric 'gammahatDD'\n",
" % vardef -diff_type=dD -symmetry=sym01 'hDD'\n",
" % parse \\bar{\\gamma}_{ij} = h_{ij} + \\hat{\\gamma}_{ij}\n",
" % assign -diff_type=dD -metric 'gammabarDD'\n",
"\n",
" % srepl \"\\beta\" -> \"\\text{vet}\"\n",
" % vardef -diff_type=dD 'vetU'\n",
"\n",
" % srepl \"\\bar{A}\" -> \"\\text{a}\"\n",
" % vardef -diff_type=dD -symmetry=sym01 'aDD'\n",
" % assign -metric='gammabar' 'aDD'\n",
"\n",
" % srepl \"\\partial_t \\bar{\\gamma}\" -> \"\\text{h_rhs}\"\n",
" \\partial_t \\bar{\\gamma}_{i j} &= \\left[\\beta^k \\partial_k \\bar{\\gamma}_{i j} + \\partial_i \\beta^k\n",
" \\bar{\\gamma}_{k j} + \\partial_j \\beta^k \\bar{\\gamma}_{i k} \\right] + \\frac{2}{3} \\bar{\\gamma}_{i j} \\left(\\alpha\n",
" \\bar{A}^k{}_k - \\bar{D}_k \\beta^k\\right) - 2 \\alpha \\bar{A}_{i j} \\\\\n",
"\\end{align}"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"`keydef`: define a keyword, i.e. define a `basis` or coodinate system, or define an `index` range (for looping or summation).\n",
"\n",
"```\n",
"% keydef basis [x, y, z]\n",
"```"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"data": {
"text/latex": [
"\\[\n",
"\\begin{align}\n",
" % keydef basis [x, y, z]\n",
"\n",
" % vardef -kron 'deltaDD'\n",
" % parse \\hat{\\gamma}_{ij} = \\delta_{ij}\n",
" % assign -diff_type=symbolic -metric 'gammahatDD'\n",
" % vardef -diff_type=dD -symmetry=sym01 'hDD'\n",
" % parse \\bar{\\gamma}_{ij} = h_{ij} + \\hat{\\gamma}_{ij}\n",
" % assign -diff_type=dD -metric 'gammabarDD'\n",
"\n",
" % srepl \"\\beta\" -> \"\\text{vet}\"\n",
" % vardef -diff_type=dD 'vetU'\n",
"\n",
" % srepl \"\\bar{A}\" -> \"\\text{a}\"\n",
" % vardef -diff_type=dD -symmetry=sym01 'aDD'\n",
" % assign -metric='gammabar' 'aDD'\n",
"\n",
" % srepl \"\\partial_t \\bar{\\gamma}\" -> \"\\text{h_rhs}\"\n",
" \\partial_t \\bar{\\gamma}_{i j} &= \\left[\\beta^k \\partial_k \\bar{\\gamma}_{i j} + \\partial_i \\beta^k\n",
" \\bar{\\gamma}_{k j} + \\partial_j \\beta^k \\bar{\\gamma}_{i k} \\right] + \\frac{2}{3} \\bar{\\gamma}_{i j} \\left(\\alpha\n",
" \\bar{A}^k{}_k - \\bar{D}_k \\beta^k\\right) - 2 \\alpha \\bar{A}_{i j} \\\\\n",
"\\end{align}\n",
"\\]"
],
"text/plain": [
"('GammahatUDD',\n",
" 'alpha',\n",
" 'hDD_dD',\n",
" 'epsilonUUU',\n",
" 'gammahatUU',\n",
" 'gammahatDD',\n",
" 'gammabardet',\n",
" 'h_rhsDD',\n",
" 'hDD',\n",
" 'deltaDD',\n",
" 'GammabarUDD',\n",
" 'vetU_cdbarD',\n",
" 'gammabarDD',\n",
" 'vetU',\n",
" 'gammabarDD_dD',\n",
" 'aDD',\n",
" 'gammahatdet',\n",
" 'vetU_dD',\n",
" 'aUD',\n",
" 'gammabarUU')"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"%%parse_latex --reset --ignore-warning\n",
"\n",
"\\begin{align}\n",
" % keydef basis [x, y, z]\n",
"\n",
" % vardef -kron 'deltaDD'\n",
" % parse \\hat{\\gamma}_{ij} = \\delta_{ij}\n",
" % assign -diff_type=symbolic -metric 'gammahatDD'\n",
" % vardef -diff_type=dD -symmetry=sym01 'hDD'\n",
" % parse \\bar{\\gamma}_{ij} = h_{ij} + \\hat{\\gamma}_{ij}\n",
" % assign -diff_type=dD -metric 'gammabarDD'\n",
"\n",
" % srepl \"\\beta\" -> \"\\text{vet}\"\n",
" % vardef -diff_type=dD 'vetU'\n",
"\n",
" % srepl \"\\bar{A}\" -> \"\\text{a}\"\n",
" % vardef -diff_type=dD -symmetry=sym01 'aDD'\n",
" % assign -metric='gammabar' 'aDD'\n",
"\n",
" % srepl \"\\partial_t \\bar{\\gamma}\" -> \"\\text{h_rhs}\"\n",
" \\partial_t \\bar{\\gamma}_{i j} &= \\left[\\beta^k \\partial_k \\bar{\\gamma}_{i j} + \\partial_i \\beta^k\n",
" \\bar{\\gamma}_{k j} + \\partial_j \\beta^k \\bar{\\gamma}_{i k} \\right] + \\frac{2}{3} \\bar{\\gamma}_{i j} \\left(\\alpha\n",
" \\bar{A}^k{}_k - \\bar{D}_k \\beta^k\\right) - 2 \\alpha \\bar{A}_{i j} \\\\\n",
"\\end{align}"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Assertion Failed!\n"
]
}
],
"source": [
"try:\n",
" assert_equal(h_rhsDD, Brhs.h_rhsDD)\n",
"except AssertionError:\n",
" print('Assertion Failed!')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Finally, we upwind every partial derivative in each instance of the pattern `\\beta^{...} \\partial_{...}`. To enforce upwinding inside of the bracketed term on the RHS where that pattern occurs, use the `vphantom` command to dynamically change the derivative type to upwinded.\n",
"\n",
"```\n",
"\\partial_t \\bar{\\gamma}_{i j} &= \\left[\\beta^k \\vphantom{dupD} \\partial_k ...\n",
"```\n",
"\n",
"**Remark**: You could, alternatively, replace the bracketed term with the Lie derivative `\\mathcal{L}_\\beta \\bar{\\gamma}_{i j}`, allow automatic generation of that Lie derivative, and then use an `srepl` macro with the `-persist` option and (advanced) capture group syntax to upwind the aforementioned pattern.\n",
"\n",
"```\n",
"% srepl -persist \"\\text{vet}^<1> \\partial_<1>\" -> \"\\text{vet}^<1> \\vphantom{dupD} \\partial_<1>\"\n",
"```\n",
"\n",
"To simplify the calculation of $\\bar{D}_k \\beta^k$, substitute a useful tensor identity for that contraction and apply the `-persist` option.\n",
"$$ \\bar{D}_k \\beta^k = \\partial_k \\beta^k + \\beta^k \\frac{\\partial_k \\hat{\\gamma}}{2 \\hat{\\gamma}} $$\n",
"```\n",
"%% replace '\\bar{D}_k \\beta^k' with contraction identity\n",
"% srepl \"\\bar{D}_k \\text{vet}^k\" -> \"(\\partial_k \\text{vet}^k + \\frac{\\partial_k \\text{gammahatdet} \\text{vet}^k}{2 \\text{gammahatdet}})\"\n",
"```"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"data": {
"text/latex": [
"\\[\n",
"\\begin{align}\n",
" % keydef basis [x, y, z]\n",
"\n",
" % vardef -kron 'deltaDD'\n",
" % parse \\hat{\\gamma}_{ij} = \\delta_{ij}\n",
" % assign -diff_type=symbolic -metric 'gammahatDD'\n",
" % vardef -diff_type=dD -symmetry=sym01 'hDD'\n",
" % parse \\bar{\\gamma}_{ij} = h_{ij} + \\hat{\\gamma}_{ij}\n",
" % assign -diff_type=dD -metric 'gammabarDD'\n",
"\n",
" % srepl \"\\beta\" -> \"\\text{vet}\"\n",
" % vardef -diff_type=dD 'vetU'\n",
" %% replace '\\bar{D}_k \\beta^k' with contraction identity\n",
" % srepl \"\\bar{D}_k \\text{vet}^k\" -> \"(\\partial_k \\text{vet}^k + \\frac{\\partial_k \\text{gammahatdet} \\text{vet}^k}{2 \\text{gammahatdet}})\"\n",
"\n",
" % srepl \"\\bar{A}\" -> \"\\text{a}\"\n",
" % vardef -diff_type=dD -symmetry=sym01 'aDD'\n",
" % assign -metric='gammabar' 'aDD'\n",
"\n",
" % srepl \"\\partial_t \\bar{\\gamma}\" -> \"\\text{h_rhs}\"\n",
" \\partial_t \\bar{\\gamma}_{i j} &= \\left[\\beta^k \\vphantom{dupD} \\partial_k \\bar{\\gamma}_{i j} + \\partial_i \\beta^k\n",
" \\bar{\\gamma}_{k j} + \\partial_j \\beta^k \\bar{\\gamma}_{i k} \\right] + \\frac{2}{3} \\bar{\\gamma}_{i j} \\left(\\alpha\n",
" \\bar{A}^k{}_k - \\bar{D}_k \\beta^k\\right) - 2 \\alpha \\bar{A}_{i j} \\\\\n",
"\\end{align}\n",
"\\]"
],
"text/plain": [
"('GammahatUDD',\n",
" 'alpha',\n",
" 'hDD_dD',\n",
" 'epsilonUUU',\n",
" 'gammahatUU',\n",
" 'gammabarDD_dupD',\n",
" 'gammahatDD',\n",
" 'gammabardet',\n",
" 'h_rhsDD',\n",
" 'hDD',\n",
" 'deltaDD',\n",
" 'GammabarUDD',\n",
" 'hDD_dupD',\n",
" 'gammabarDD',\n",
" 'vetU',\n",
" 'gammabarDD_dD',\n",
" 'aDD',\n",
" 'gammahatdet',\n",
" 'vetU_dD',\n",
" 'aUD',\n",
" 'gammabarUU')"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"%%parse_latex --reset --ignore-warning\n",
"\n",
"\\begin{align}\n",
" % keydef basis [x, y, z]\n",
"\n",
" % vardef -kron 'deltaDD'\n",
" % parse \\hat{\\gamma}_{ij} = \\delta_{ij}\n",
" % assign -diff_type=symbolic -metric 'gammahatDD'\n",
" % vardef -diff_type=dD -symmetry=sym01 'hDD'\n",
" % parse \\bar{\\gamma}_{ij} = h_{ij} + \\hat{\\gamma}_{ij}\n",
" % assign -diff_type=dD -metric 'gammabarDD'\n",
"\n",
" % srepl \"\\beta\" -> \"\\text{vet}\"\n",
" % vardef -diff_type=dD 'vetU'\n",
" %% replace '\\bar{D}_k \\beta^k' with contraction identity\n",
" % srepl \"\\bar{D}_k \\text{vet}^k\" -> \"(\\partial_k \\text{vet}^k + \\frac{\\partial_k \\text{gammahatdet} \\text{vet}^k}{2 \\text{gammahatdet}})\"\n",
"\n",
" % srepl \"\\bar{A}\" -> \"\\text{a}\"\n",
" % vardef -diff_type=dD -symmetry=sym01 'aDD'\n",
" % assign -metric='gammabar' 'aDD'\n",
"\n",
" % srepl \"\\partial_t \\bar{\\gamma}\" -> \"\\text{h_rhs}\"\n",
" \\partial_t \\bar{\\gamma}_{i j} &= \\left[\\beta^k \\vphantom{dupD} \\partial_k \\bar{\\gamma}_{i j} + \\partial_i \\beta^k\n",
" \\bar{\\gamma}_{k j} + \\partial_j \\beta^k \\bar{\\gamma}_{i k} \\right] + \\frac{2}{3} \\bar{\\gamma}_{i j} \\left(\\alpha\n",
" \\bar{A}^k{}_k - \\bar{D}_k \\beta^k\\right) - 2 \\alpha \\bar{A}_{i j} \\\\\n",
"\\end{align}"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"execution": {
"iopub.execute_input": "2021-03-07T17:12:06.999357Z",
"iopub.status.busy": "2021-03-07T17:12:06.963623Z",
"iopub.status.idle": "2021-03-07T17:12:09.158226Z",
"shell.execute_reply": "2021-03-07T17:12:09.158706Z"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Assertion Passed!\n"
]
}
],
"source": [
"assert_equal(h_rhsDD, Brhs.h_rhsDD)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"\n",
"## Step 2: Evolution Equation for $\\partial_t \\phi$ [ [^](#top) ]\n",
"\n",
"\\begin{equation}\n",
" \\partial_t \\phi = \\left[\\beta^k \\partial_k \\phi \\right] + \\frac{1}{6} \\left(\\bar{D}_k \\beta^k - \\alpha K \\right)\n",
"\\end{equation}"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {
"execution": {
"iopub.execute_input": "2021-03-07T17:12:09.233710Z",
"iopub.status.busy": "2021-03-07T17:12:09.197829Z",
"iopub.status.idle": "2021-03-07T17:12:09.374566Z",
"shell.execute_reply": "2021-03-07T17:12:09.375036Z"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"TensorError: unbalanced free index {'t'} in phi_dD\n"
]
}
],
"source": [
"%%parse_latex --reset --ignore-warning\n",
"\n",
"\\begin{align}\n",
" % keydef basis [x, y, z]\n",
"\n",
" % vardef -kron 'deltaDD'\n",
" % parse \\hat{\\gamma}_{ij} = \\delta_{ij}\n",
" % assign -diff_type=symbolic -metric 'gammahatDD'\n",
" % vardef -diff_type=dD -symmetry=sym01 'hDD'\n",
" % parse \\bar{\\gamma}_{ij} = h_{ij} + \\hat{\\gamma}_{ij}\n",
" % assign -diff_type=dD -metric 'gammabarDD'\n",
"\n",
" % srepl \"\\beta\" -> \"\\text{vet}\"\n",
" % vardef -diff_type=dD 'vetU'\n",
" %% replace '\\bar{D}_k \\beta^k' with contraction identity\n",
" % srepl \"\\bar{D}_k \\text{vet}^k\" -> \"(\\partial_k \\text{vet}^k + \\frac{\\partial_k \\text{gammahatdet} \\text{vet}^k}{2 \\text{gammahatdet}})\"\n",
"\n",
" % srepl \"\\bar{A}\" -> \"\\text{a}\"\n",
" % vardef -diff_type=dD -symmetry=sym01 'aDD'\n",
" % assign -metric='gammabar' 'aDD'\n",
"\n",
" % srepl \"\\partial_t \\bar{\\gamma}\" -> \"\\text{h_rhs}\"\n",
" \\partial_t \\bar{\\gamma}_{i j} &= \\left[\\beta^k \\vphantom{dupD} \\partial_k \\bar{\\gamma}_{i j} + \\partial_i \\beta^k\n",
" \\bar{\\gamma}_{k j} + \\partial_j \\beta^k \\bar{\\gamma}_{i k} \\right] + \\frac{2}{3} \\bar{\\gamma}_{i j} \\left(\\alpha\n",
" \\bar{A}^k{}_k - \\bar{D}_k \\beta^k\\right) - 2 \\alpha \\bar{A}_{i j} \\\\\n",
"\n",
" \\partial_t \\phi &= \\left[\\beta^k \\partial_k \\phi \\right] + \\frac{1}{6} \\left(\\bar{D}_k \\beta^k - \\alpha K \\right) \\\\\n",
"\\end{align}"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"First, replace every instance of `phi` with the conformal factor `cf = W = e^{-2\\phi}`, including every derivative (partial or covariant) of `phi`.\n",
"\n",
"\\begin{equation}\n",
" \\partial_t W = \\partial_t e^{-2 \\phi} = -2 e^{-2\\phi} \\partial_t \\phi = -2 W \\partial_t \\phi \\Rightarrow \\partial_t \\phi = - \\frac{1}{2W} \\partial_t W\n",
"\\end{equation}\n",
"\n",
"```\n",
"%% replace 'phi' with conformal factor cf = W = e^{-2\\phi}\n",
"% srepl \"e^{-4\\phi}\" -> \"\\text{cf}^2\"\n",
"% srepl \"\\partial_t \\phi = <1..> \\\\\" -> \"\\text{cf_rhs} = -2 \\text{cf} (<1..>) \\\\\"\n",
"% srepl -persist \"\\partial_{<1>} \\phi\" -> \"\\partial_{<1>} \\text{cf} \\frac{-1}{2 \\text{cf}}\"\n",
"% srepl \"\\partial_<1> \\phi\" -> \"\\partial_<1> \\text{cf} \\frac{-1}{2 \\text{cf}}\"\n",
"```\n",
"\n",
"**Remark**: We assigned the `-persist` option to the third `srepl` macro to replace the partial derivative inside of each covariant derivative of `phi`."
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"data": {
"text/latex": [
"\\[\n",
"\\begin{align}\n",
" % keydef basis [x, y, z]\n",
"\n",
" % vardef -kron 'deltaDD'\n",
" % parse \\hat{\\gamma}_{ij} = \\delta_{ij}\n",
" % assign -diff_type=symbolic -metric 'gammahatDD'\n",
" % vardef -diff_type=dD -symmetry=sym01 'hDD'\n",
" % parse \\bar{\\gamma}_{ij} = h_{ij} + \\hat{\\gamma}_{ij}\n",
" % assign -diff_type=dD -metric 'gammabarDD'\n",
"\n",
" % srepl \"\\beta\" -> \"\\text{vet}\"\n",
" % vardef -diff_type=dD 'vetU'\n",
" %% replace '\\bar{D}_k \\beta^k' with contraction identity\n",
" % srepl \"\\bar{D}_k \\text{vet}^k\" -> \"(\\partial_k \\text{vet}^k + \\frac{\\partial_k \\text{gammahatdet} \\text{vet}^k}{2 \\text{gammahatdet}})\"\n",
"\n",
" % srepl \"\\bar{A}\" -> \"\\text{a}\"\n",
" % vardef -diff_type=dD -symmetry=sym01 'aDD'\n",
" % assign -metric='gammabar' 'aDD'\n",
"\n",
" % srepl \"\\partial_t \\bar{\\gamma}\" -> \"\\text{h_rhs}\"\n",
" \\partial_t \\bar{\\gamma}_{i j} &= \\left[\\beta^k \\vphantom{dupD} \\partial_k \\bar{\\gamma}_{i j} + \\partial_i \\beta^k\n",
" \\bar{\\gamma}_{k j} + \\partial_j \\beta^k \\bar{\\gamma}_{i k} \\right] + \\frac{2}{3} \\bar{\\gamma}_{i j} \\left(\\alpha\n",
" \\bar{A}^k{}_k - \\bar{D}_k \\beta^k\\right) - 2 \\alpha \\bar{A}_{i j} \\\\\n",
"\n",
" %% replace 'phi' with conformal factor cf = W = e^{-2\\phi}\n",
" % srepl \"e^{-4 \\phi}\" -> \"\\text{cf}^2\"\n",
" % srepl \"\\partial_t \\phi = <1..> \\\\\" -> \"\\text{cf_rhs} = -2 \\text{cf} (<1..>) \\\\\"\n",
" % srepl -persist \"\\partial_{<1>} \\phi\" -> \"\\partial_{<1>} \\text{cf} \\frac{-1}{2 \\text{cf}}\"\n",
" % srepl \"\\partial_<1> \\phi\" -> \"\\partial_<1> \\text{cf} \\frac{-1}{2 \\text{cf}}\"\n",
"\n",
" \\partial_t \\phi &= \\left[\\beta^k \\partial_k \\phi \\right] + \\frac{1}{6} \\left(\\bar{D}_k \\beta^k - \\alpha K \\right) \\\\\n",
"\\end{align}\n",
"\\]"
],
"text/plain": [
"('GammahatUDD',\n",
" 'alpha',\n",
" 'hDD_dD',\n",
" 'epsilonUUU',\n",
" 'gammahatUU',\n",
" 'gammabarDD_dupD',\n",
" 'gammahatDD',\n",
" 'gammabardet',\n",
" 'h_rhsDD',\n",
" 'hDD',\n",
" 'deltaDD',\n",
" 'GammabarUDD',\n",
" 'hDD_dupD',\n",
" 'gammabarDD',\n",
" 'vetU',\n",
" 'cf_rhs',\n",
" 'K',\n",
" 'gammabarDD_dD',\n",
" 'aDD',\n",
" 'gammahatdet',\n",
" 'cf',\n",
" 'vetU_dD',\n",
" 'aUD',\n",
" 'gammabarUU')"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"%%parse_latex --reset --ignore-warning\n",
"\n",
"\\begin{align}\n",
" % keydef basis [x, y, z]\n",
"\n",
" % vardef -kron 'deltaDD'\n",
" % parse \\hat{\\gamma}_{ij} = \\delta_{ij}\n",
" % assign -diff_type=symbolic -metric 'gammahatDD'\n",
" % vardef -diff_type=dD -symmetry=sym01 'hDD'\n",
" % parse \\bar{\\gamma}_{ij} = h_{ij} + \\hat{\\gamma}_{ij}\n",
" % assign -diff_type=dD -metric 'gammabarDD'\n",
"\n",
" % srepl \"\\beta\" -> \"\\text{vet}\"\n",
" % vardef -diff_type=dD 'vetU'\n",
" %% replace '\\bar{D}_k \\beta^k' with contraction identity\n",
" % srepl \"\\bar{D}_k \\text{vet}^k\" -> \"(\\partial_k \\text{vet}^k + \\frac{\\partial_k \\text{gammahatdet} \\text{vet}^k}{2 \\text{gammahatdet}})\"\n",
"\n",
" % srepl \"\\bar{A}\" -> \"\\text{a}\"\n",
" % vardef -diff_type=dD -symmetry=sym01 'aDD'\n",
" % assign -metric='gammabar' 'aDD'\n",
"\n",
" % srepl \"\\partial_t \\bar{\\gamma}\" -> \"\\text{h_rhs}\"\n",
" \\partial_t \\bar{\\gamma}_{i j} &= \\left[\\beta^k \\vphantom{dupD} \\partial_k \\bar{\\gamma}_{i j} + \\partial_i \\beta^k\n",
" \\bar{\\gamma}_{k j} + \\partial_j \\beta^k \\bar{\\gamma}_{i k} \\right] + \\frac{2}{3} \\bar{\\gamma}_{i j} \\left(\\alpha\n",
" \\bar{A}^k{}_k - \\bar{D}_k \\beta^k\\right) - 2 \\alpha \\bar{A}_{i j} \\\\\n",
"\n",
" %% replace 'phi' with conformal factor cf = W = e^{-2\\phi}\n",
" % srepl \"e^{-4 \\phi}\" -> \"\\text{cf}^2\"\n",
" % srepl \"\\partial_t \\phi = <1..> \\\\\" -> \"\\text{cf_rhs} = -2 \\text{cf} (<1..>) \\\\\"\n",
" % srepl -persist \"\\partial_{<1>} \\phi\" -> \"\\partial_{<1>} \\text{cf} \\frac{-1}{2 \\text{cf}}\"\n",
" % srepl \"\\partial_<1> \\phi\" -> \"\\partial_<1> \\text{cf} \\frac{-1}{2 \\text{cf}}\"\n",
"\n",
" \\partial_t \\phi &= \\left[\\beta^k \\partial_k \\phi \\right] + \\frac{1}{6} \\left(\\bar{D}_k \\beta^k - \\alpha K \\right) \\\\\n",
"\\end{align}"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {
"scrolled": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Assertion Failed!\n"
]
}
],
"source": [
"try:\n",
" assert_equal(cf_rhs, Brhs.cf_rhs)\n",
"except AssertionError:\n",
" print('Assertion Failed!')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Next, enforce upwinding on the contracted partial derivative inside of the bracketed term using the `vphantom` command.\n",
"\n",
"```\n",
"\\partial_t \\phi &= \\left[\\beta^k \\vphantom{dupD} \\partial_k ...\n",
"```\n",
"\n",
"Finally, replace every instance of `K` with `trK` using the `srepl` macro.\n",
"\n",
"```\n",
"% srepl \"K\" -> \"\\text{trK}\"\n",
"```"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {
"execution": {
"iopub.execute_input": "2021-03-07T17:12:09.449903Z",
"iopub.status.busy": "2021-03-07T17:12:09.413953Z",
"iopub.status.idle": "2021-03-07T17:12:09.608051Z",
"shell.execute_reply": "2021-03-07T17:12:09.607504Z"
}
},
"outputs": [
{
"data": {
"text/latex": [
"\\[\n",
"\\begin{align}\n",
" % keydef basis [x, y, z]\n",
"\n",
" % vardef -kron 'deltaDD'\n",
" % parse \\hat{\\gamma}_{ij} = \\delta_{ij}\n",
" % assign -diff_type=symbolic -metric 'gammahatDD'\n",
" % vardef -diff_type=dD -symmetry=sym01 'hDD'\n",
" % parse \\bar{\\gamma}_{ij} = h_{ij} + \\hat{\\gamma}_{ij}\n",
" % assign -diff_type=dD -metric 'gammabarDD'\n",
"\n",
" % srepl \"\\beta\" -> \"\\text{vet}\"\n",
" % vardef -diff_type=dD 'vetU'\n",
" %% replace '\\bar{D}_k \\beta^k' with contraction identity\n",
" % srepl \"\\bar{D}_k \\text{vet}^k\" -> \"(\\partial_k \\text{vet}^k + \\frac{\\partial_k \\text{gammahatdet} \\text{vet}^k}{2 \\text{gammahatdet}})\"\n",
"\n",
" % srepl \"\\bar{A}\" -> \"\\text{a}\"\n",
" % vardef -diff_type=dD -symmetry=sym01 'aDD'\n",
" % assign -metric='gammabar' 'aDD'\n",
"\n",
" % srepl \"\\partial_t \\bar{\\gamma}\" -> \"\\text{h_rhs}\"\n",
" \\partial_t \\bar{\\gamma}_{i j} &= \\left[\\beta^k \\vphantom{dupD} \\partial_k \\bar{\\gamma}_{i j} + \\partial_i \\beta^k\n",
" \\bar{\\gamma}_{k j} + \\partial_j \\beta^k \\bar{\\gamma}_{i k} \\right] + \\frac{2}{3} \\bar{\\gamma}_{i j} \\left(\\alpha\n",
" \\bar{A}^k{}_k - \\bar{D}_k \\beta^k\\right) - 2 \\alpha \\bar{A}_{i j} \\\\\n",
"\n",
" %% replace 'phi' with conformal factor cf = W = e^{-2\\phi}\n",
" % srepl \"e^{-4 \\phi}\" -> \"\\text{cf}^2\"\n",
" % srepl \"\\partial_t \\phi = <1..> \\\\\" -> \"\\text{cf_rhs} = -2 \\text{cf} (<1..>) \\\\\"\n",
" % srepl -persist \"\\partial_<1> \\phi\" -> \"\\partial_<1> \\text{cf} \\frac{-1}{2 \\text{cf}}\"\n",
"\n",
" % srepl \"K\" -> \"\\text{trK}\"\n",
" \\partial_t \\phi &= \\left[\\beta^k \\vphantom{dupD} \\partial_k \\phi \\right] + \\frac{1}{6} \\left(\\bar{D}_k \\beta^k - \\alpha K \\right) \\\\\n",
"\\end{align}\n",
"\\]"
],
"text/plain": [
"('GammahatUDD',\n",
" 'alpha',\n",
" 'hDD_dD',\n",
" 'cf_dupD',\n",
" 'epsilonUUU',\n",
" 'gammahatUU',\n",
" 'gammabarDD_dupD',\n",
" 'trK',\n",
" 'gammahatDD',\n",
" 'gammabardet',\n",
" 'h_rhsDD',\n",
" 'hDD',\n",
" 'deltaDD',\n",
" 'GammabarUDD',\n",
" 'hDD_dupD',\n",
" 'gammabarDD',\n",
" 'vetU',\n",
" 'cf_rhs',\n",
" 'gammabarDD_dD',\n",
" 'aDD',\n",
" 'gammahatdet',\n",
" 'cf',\n",
" 'vetU_dD',\n",
" 'aUD',\n",
" 'gammabarUU')"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"%%parse_latex --reset --ignore-warning\n",
"\n",
"\\begin{align}\n",
" % keydef basis [x, y, z]\n",
"\n",
" % vardef -kron 'deltaDD'\n",
" % parse \\hat{\\gamma}_{ij} = \\delta_{ij}\n",
" % assign -diff_type=symbolic -metric 'gammahatDD'\n",
" % vardef -diff_type=dD -symmetry=sym01 'hDD'\n",
" % parse \\bar{\\gamma}_{ij} = h_{ij} + \\hat{\\gamma}_{ij}\n",
" % assign -diff_type=dD -metric 'gammabarDD'\n",
"\n",
" % srepl \"\\beta\" -> \"\\text{vet}\"\n",
" % vardef -diff_type=dD 'vetU'\n",
" %% replace '\\bar{D}_k \\beta^k' with contraction identity\n",
" % srepl \"\\bar{D}_k \\text{vet}^k\" -> \"(\\partial_k \\text{vet}^k + \\frac{\\partial_k \\text{gammahatdet} \\text{vet}^k}{2 \\text{gammahatdet}})\"\n",
"\n",
" % srepl \"\\bar{A}\" -> \"\\text{a}\"\n",
" % vardef -diff_type=dD -symmetry=sym01 'aDD'\n",
" % assign -metric='gammabar' 'aDD'\n",
"\n",
" % srepl \"\\partial_t \\bar{\\gamma}\" -> \"\\text{h_rhs}\"\n",
" \\partial_t \\bar{\\gamma}_{i j} &= \\left[\\beta^k \\vphantom{dupD} \\partial_k \\bar{\\gamma}_{i j} + \\partial_i \\beta^k\n",
" \\bar{\\gamma}_{k j} + \\partial_j \\beta^k \\bar{\\gamma}_{i k} \\right] + \\frac{2}{3} \\bar{\\gamma}_{i j} \\left(\\alpha\n",
" \\bar{A}^k{}_k - \\bar{D}_k \\beta^k\\right) - 2 \\alpha \\bar{A}_{i j} \\\\\n",
"\n",
" %% replace 'phi' with conformal factor cf = W = e^{-2\\phi}\n",
" % srepl \"e^{-4 \\phi}\" -> \"\\text{cf}^2\"\n",
" % srepl \"\\partial_t \\phi = <1..> \\\\\" -> \"\\text{cf_rhs} = -2 \\text{cf} (<1..>) \\\\\"\n",
" % srepl -persist \"\\partial_<1> \\phi\" -> \"\\partial_<1> \\text{cf} \\frac{-1}{2 \\text{cf}}\"\n",
"\n",
" % srepl \"K\" -> \"\\text{trK}\"\n",
" \\partial_t \\phi &= \\left[\\beta^k \\vphantom{dupD} \\partial_k \\phi \\right] + \\frac{1}{6} \\left(\\bar{D}_k \\beta^k - \\alpha K \\right) \\\\\n",
"\\end{align}"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {
"execution": {
"iopub.execute_input": "2021-03-07T17:12:09.651439Z",
"iopub.status.busy": "2021-03-07T17:12:09.646839Z",
"iopub.status.idle": "2021-03-07T17:12:09.654033Z",
"shell.execute_reply": "2021-03-07T17:12:09.654525Z"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Assertion Passed!\n"
]
}
],
"source": [
"assert_equal(cf_rhs, Brhs.cf_rhs)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"\n",
"## Step 3: Evolution Equation for $\\partial_t K$ [ [^](#top) ]\n",
"\n",
"\\begin{equation}\n",
" \\partial_t K = \\left[\\beta^k \\partial_k K \\right] + \\frac{1}{3} \\alpha K^2 + \\alpha \\bar{A}_{i j}\n",
" \\bar{A}^{i j} - e^{-4 \\phi} \\left(\\bar{D}_i \\bar{D}^i \\alpha + 2 \\bar{D}^i \\alpha \\bar{D}_i \\phi \\right)\n",
"\\end{equation}"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {
"execution": {
"iopub.execute_input": "2021-03-07T17:12:09.700032Z",
"iopub.status.busy": "2021-03-07T17:12:09.684397Z",
"iopub.status.idle": "2021-03-07T17:12:09.887533Z",
"shell.execute_reply": "2021-03-07T17:12:09.886943Z"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"TensorError: unbalanced free index {'t'} in trK_dD\n"
]
}
],
"source": [
"%%parse_latex --reset --ignore-warning\n",
"\n",
"\\begin{align}\n",
" % keydef basis [x, y, z]\n",
"\n",
" % vardef -kron 'deltaDD'\n",
" % parse \\hat{\\gamma}_{ij} = \\delta_{ij}\n",
" % assign -diff_type=symbolic -metric 'gammahatDD'\n",
" % vardef -diff_type=dD -symmetry=sym01 'hDD'\n",
" % parse \\bar{\\gamma}_{ij} = h_{ij} + \\hat{\\gamma}_{ij}\n",
" % assign -diff_type=dD -metric 'gammabarDD'\n",
"\n",
" % srepl \"\\beta\" -> \"\\text{vet}\"\n",
" % vardef -diff_type=dD 'vetU'\n",
" %% replace '\\bar{D}_k \\beta^k' with contraction identity\n",
" % srepl \"\\bar{D}_k \\text{vet}^k\" -> \"(\\partial_k \\text{vet}^k + \\frac{\\partial_k \\text{gammahatdet} \\text{vet}^k}{2 \\text{gammahatdet}})\"\n",
"\n",
" % srepl \"\\bar{A}\" -> \"\\text{a}\"\n",
" % vardef -diff_type=dD -symmetry=sym01 'aDD'\n",
" % assign -metric='gammabar' 'aDD'\n",
"\n",
" % srepl \"\\partial_t \\bar{\\gamma}\" -> \"\\text{h_rhs}\"\n",
" \\partial_t \\bar{\\gamma}_{i j} &= \\left[\\beta^k \\vphantom{dupD} \\partial_k \\bar{\\gamma}_{i j} + \\partial_i \\beta^k\n",
" \\bar{\\gamma}_{k j} + \\partial_j \\beta^k \\bar{\\gamma}_{i k} \\right] + \\frac{2}{3} \\bar{\\gamma}_{i j}\n",
" \\left(\\alpha \\bar{A}^k{}_k - \\bar{D}_k \\beta^k\\right) - 2 \\alpha \\bar{A}_{i j} \\\\\n",
"\n",
" %% replace 'phi' with conformal factor cf = W = e^{-2\\phi}\n",
" % srepl \"e^{-4 \\phi}\" -> \"\\text{cf}^2\"\n",
" % srepl \"\\partial_t \\phi = <1..> \\\\\" -> \"\\text{cf_rhs} = -2 \\text{cf} (<1..>) \\\\\"\n",
" % srepl -persist \"\\partial_{<1>} \\phi\" -> \"\\partial_{<1>} \\text{cf} \\frac{-1}{2 \\text{cf}}\"\n",
" % srepl \"\\partial_<1> \\phi\" -> \"\\partial_<1> \\text{cf} \\frac{-1}{2 \\text{cf}}\"\n",
"\n",
" % srepl \"K\" -> \"\\text{trK}\"\n",
" \\partial_t \\phi &= \\left[\\beta^k \\vphantom{dupD} \\partial_k \\phi \\right] + \\frac{1}{6} \\left(\\bar{D}_k \\beta^k - \\alpha K \\right) \\\\\n",
"\n",
" \\partial_t K &= \\left[\\beta^k \\partial_k K \\right] + \\frac{1}{3} \\alpha K^2 + \\alpha \\bar{A}_{i j}\n",
" \\bar{A}^{i j} - e^{-4 \\phi} \\left(\\bar{D}_i \\bar{D}^i \\alpha + 2 \\bar{D}^i \\alpha \\bar{D}_i \\phi \\right) \\\\\n",
"\\end{align}"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"First, replace the partial derivative $\\partial_t K$ on the LHS with the variable name `trK_rhs` using the `srepl` macro.\n",
"\n",
"```\n",
"% srepl \"\\partial_t \\text{trK}\" -> \"\\text{trK_rhs}\"\n",
"```"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [
{
"data": {
"text/latex": [
"\\[\n",
"\\begin{align}\n",
" % keydef basis [x, y, z]\n",
"\n",
" % vardef -kron 'deltaDD'\n",
" % parse \\hat{\\gamma}_{ij} = \\delta_{ij}\n",
" % assign -diff_type=symbolic -metric 'gammahatDD'\n",
" % vardef -diff_type=dD -symmetry=sym01 'hDD'\n",
" % parse \\bar{\\gamma}_{ij} = h_{ij} + \\hat{\\gamma}_{ij}\n",
" % assign -diff_type=dD -metric 'gammabarDD'\n",
"\n",
" % srepl \"\\beta\" -> \"\\text{vet}\"\n",
" % vardef -diff_type=dD 'vetU'\n",
" %% replace '\\bar{D}_k \\beta^k' with contraction identity\n",
" % srepl \"\\bar{D}_k \\text{vet}^k\" -> \"(\\partial_k \\text{vet}^k + \\frac{\\partial_k \\text{gammahatdet} \\text{vet}^k}{2 \\text{gammahatdet}})\"\n",
"\n",
" % srepl \"\\bar{A}\" -> \"\\text{a}\"\n",
" % vardef -diff_type=dD -symmetry=sym01 'aDD'\n",
" % assign -metric='gammabar' 'aDD'\n",
"\n",
" % srepl \"\\partial_t \\bar{\\gamma}\" -> \"\\text{h_rhs}\"\n",
" \\partial_t \\bar{\\gamma}_{i j} &= \\left[\\beta^k \\vphantom{dupD} \\partial_k \\bar{\\gamma}_{i j} + \\partial_i \\beta^k\n",
" \\bar{\\gamma}_{k j} + \\partial_j \\beta^k \\bar{\\gamma}_{i k} \\right] + \\frac{2}{3} \\bar{\\gamma}_{i j}\n",
" \\left(\\alpha \\bar{A}^k{}_k - \\bar{D}_k \\beta^k\\right) - 2 \\alpha \\bar{A}_{i j} \\\\\n",
"\n",
" %% replace 'phi' with conformal factor cf = W = e^{-2\\phi}\n",
" % srepl \"e^{-4 \\phi}\" -> \"\\text{cf}^2\"\n",
" % srepl \"\\partial_t \\phi = <1..> \\\\\" -> \"\\text{cf_rhs} = -2 \\text{cf} (<1..>) \\\\\"\n",
" % srepl -persist \"\\partial_{<1>} \\phi\" -> \"\\partial_{<1>} \\text{cf} \\frac{-1}{2 \\text{cf}}\"\n",
" % srepl \"\\partial_<1> \\phi\" -> \"\\partial_<1> \\text{cf} \\frac{-1}{2 \\text{cf}}\"\n",
"\n",
" % srepl \"K\" -> \"\\text{trK}\"\n",
" \\partial_t \\phi &= \\left[\\beta^k \\vphantom{dupD} \\partial_k \\phi \\right] + \\frac{1}{6} \\left(\\bar{D}_k \\beta^k - \\alpha K \\right) \\\\\n",
"\n",
" % srepl \"\\partial_t \\text{trK}\" -> \"\\text{trK_rhs}\"\n",
" \\partial_t K &= \\left[\\beta^k \\partial_k K \\right] + \\frac{1}{3} \\alpha K^2 + \\alpha \\bar{A}_{i j}\n",
" \\bar{A}^{i j} - e^{-4 \\phi} \\left(\\bar{D}_i \\bar{D}^i \\alpha + 2 \\bar{D}^i \\alpha \\bar{D}_i \\phi \\right) \\\\\n",
"\\end{align}\n",
"\\]"
],
"text/plain": [
"('GammahatUDD',\n",
" 'alpha',\n",
" 'alpha_dDD',\n",
" 'hDD_dD',\n",
" 'phi_cdbarD',\n",
" 'cf_dupD',\n",
" 'epsilonUUU',\n",
" 'gammahatUU',\n",
" 'gammabarDD_dupD',\n",
" 'alpha_dD',\n",
" 'trK_rhs',\n",
" 'trK',\n",
" 'gammahatDD',\n",
" 'gammabardet',\n",
" 'alpha_cdbarD_dD',\n",
" 'aUU',\n",
" 'h_rhsDD',\n",
" 'phi',\n",
" 'hDD',\n",
" 'deltaDD',\n",
" 'gammabardet_dD',\n",
" 'alpha_cdbarD',\n",
" 'GammabarUDD',\n",
" 'hDD_dupD',\n",
" 'alpha_cdbarU_dD',\n",
" 'gammabarDD',\n",
" 'vetU',\n",
" 'cf_rhs',\n",
" 'gammabarDD_dD',\n",
" 'aDD',\n",
" 'gammahatdet',\n",
" 'cf',\n",
" 'vetU_dD',\n",
" 'aUD',\n",
" 'alpha_cdbarU',\n",
" 'gammabarUU',\n",
" 'gammabarUU_dD',\n",
" 'alpha_cdbarUD')"
]
},
"execution_count": 18,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"%%parse_latex --reset --ignore-warning\n",
"\n",
"\\begin{align}\n",
" % keydef basis [x, y, z]\n",
"\n",
" % vardef -kron 'deltaDD'\n",
" % parse \\hat{\\gamma}_{ij} = \\delta_{ij}\n",
" % assign -diff_type=symbolic -metric 'gammahatDD'\n",
" % vardef -diff_type=dD -symmetry=sym01 'hDD'\n",
" % parse \\bar{\\gamma}_{ij} = h_{ij} + \\hat{\\gamma}_{ij}\n",
" % assign -diff_type=dD -metric 'gammabarDD'\n",
"\n",
" % srepl \"\\beta\" -> \"\\text{vet}\"\n",
" % vardef -diff_type=dD 'vetU'\n",
" %% replace '\\bar{D}_k \\beta^k' with contraction identity\n",
" % srepl \"\\bar{D}_k \\text{vet}^k\" -> \"(\\partial_k \\text{vet}^k + \\frac{\\partial_k \\text{gammahatdet} \\text{vet}^k}{2 \\text{gammahatdet}})\"\n",
"\n",
" % srepl \"\\bar{A}\" -> \"\\text{a}\"\n",
" % vardef -diff_type=dD -symmetry=sym01 'aDD'\n",
" % assign -metric='gammabar' 'aDD'\n",
"\n",
" % srepl \"\\partial_t \\bar{\\gamma}\" -> \"\\text{h_rhs}\"\n",
" \\partial_t \\bar{\\gamma}_{i j} &= \\left[\\beta^k \\vphantom{dupD} \\partial_k \\bar{\\gamma}_{i j} + \\partial_i \\beta^k\n",
" \\bar{\\gamma}_{k j} + \\partial_j \\beta^k \\bar{\\gamma}_{i k} \\right] + \\frac{2}{3} \\bar{\\gamma}_{i j}\n",
" \\left(\\alpha \\bar{A}^k{}_k - \\bar{D}_k \\beta^k\\right) - 2 \\alpha \\bar{A}_{i j} \\\\\n",
"\n",
" %% replace 'phi' with conformal factor cf = W = e^{-2\\phi}\n",
" % srepl \"e^{-4 \\phi}\" -> \"\\text{cf}^2\"\n",
" % srepl \"\\partial_t \\phi = <1..> \\\\\" -> \"\\text{cf_rhs} = -2 \\text{cf} (<1..>) \\\\\"\n",
" % srepl -persist \"\\partial_{<1>} \\phi\" -> \"\\partial_{<1>} \\text{cf} \\frac{-1}{2 \\text{cf}}\"\n",
" % srepl \"\\partial_<1> \\phi\" -> \"\\partial_<1> \\text{cf} \\frac{-1}{2 \\text{cf}}\"\n",
"\n",
" % srepl \"K\" -> \"\\text{trK}\"\n",
" \\partial_t \\phi &= \\left[\\beta^k \\vphantom{dupD} \\partial_k \\phi \\right] + \\frac{1}{6} \\left(\\bar{D}_k \\beta^k - \\alpha K \\right) \\\\\n",
"\n",
" % srepl \"\\partial_t \\text{trK}\" -> \"\\text{trK_rhs}\"\n",
" \\partial_t K &= \\left[\\beta^k \\partial_k K \\right] + \\frac{1}{3} \\alpha K^2 + \\alpha \\bar{A}_{i j}\n",
" \\bar{A}^{i j} - e^{-4 \\phi} \\left(\\bar{D}_i \\bar{D}^i \\alpha + 2 \\bar{D}^i \\alpha \\bar{D}_i \\phi \\right) \\\\\n",
"\\end{align}"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Assertion Failed!\n"
]
}
],
"source": [
"try:\n",
" assert_equal(trK_rhs, Brhs.trK_rhs)\n",
"except AssertionError:\n",
" print('Assertion Failed!')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Next, enforce upwinding on the contracted partial derivative inside of the bracketed term using the `vphantom` command.\n",
"\n",
"```\n",
"\\partial_t K &= \\left[\\beta^k \\vphantom{dupD} \\partial_k K ...\n",
"```\n",
"\n",
"Finally, assign the property `-diff_type=dD` to `cf`, `trK`, and `alpha` using the `assign` macro."
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"outputs": [
{
"data": {
"text/latex": [
"\\[\n",
"\\begin{align}\n",
" % keydef basis [x, y, z]\n",
"\n",
" % vardef -kron 'deltaDD'\n",
" % parse \\hat{\\gamma}_{ij} = \\delta_{ij}\n",
" % assign -diff_type=symbolic -metric 'gammahatDD'\n",
" % vardef -diff_type=dD -symmetry=sym01 'hDD'\n",
" % parse \\bar{\\gamma}_{ij} = h_{ij} + \\hat{\\gamma}_{ij}\n",
" % assign -diff_type=dD -metric 'gammabarDD'\n",
"\n",
" % srepl \"\\beta\" -> \"\\text{vet}\"\n",
" % vardef -diff_type=dD 'vetU'\n",
" %% replace '\\bar{D}_k \\beta^k' with contraction identity\n",
" % srepl \"\\bar{D}_k \\text{vet}^k\" -> \"(\\partial_k \\text{vet}^k + \\frac{\\partial_k \\text{gammahatdet} \\text{vet}^k}{2 \\text{gammahatdet}})\"\n",
"\n",
" % srepl \"\\bar{A}\" -> \"\\text{a}\"\n",
" % vardef -diff_type=dD -symmetry=sym01 'aDD'\n",
" % assign -metric='gammabar' 'aDD'\n",
"\n",
" % srepl \"\\partial_t \\bar{\\gamma}\" -> \"\\text{h_rhs}\"\n",
" \\partial_t \\bar{\\gamma}_{i j} &= \\left[\\beta^k \\vphantom{dupD} \\partial_k \\bar{\\gamma}_{i j} + \\partial_i \\beta^k\n",
" \\bar{\\gamma}_{k j} + \\partial_j \\beta^k \\bar{\\gamma}_{i k} \\right] + \\frac{2}{3} \\bar{\\gamma}_{i j}\n",
" \\left(\\alpha \\bar{A}^k{}_k - \\bar{D}_k \\beta^k\\right) - 2 \\alpha \\bar{A}_{i j} \\\\\n",
"\n",
" % assign -diff_type=dD 'cf'\n",
" %% replace 'phi' with conformal factor cf = W = e^{-2\\phi}\n",
" % srepl \"e^{-4 \\phi}\" -> \"\\text{cf}^2\"\n",
" % srepl \"\\partial_t \\phi = <1..> \\\\\" -> \"\\text{cf_rhs} = -2 \\text{cf} (<1..>) \\\\\"\n",
" % srepl -persist \"\\partial_{<1>} \\phi\" -> \"\\partial_{<1>} \\text{cf} \\frac{-1}{2 \\text{cf}}\"\n",
" % srepl \"\\partial_<1> \\phi\" -> \"\\partial_<1> \\text{cf} \\frac{-1}{2 \\text{cf}}\"\n",
"\n",
" % srepl \"K\" -> \"\\text{trK}\"\n",
" % assign -diff_type=dD 'trK'\n",
" \\partial_t \\phi &= \\left[\\beta^k \\vphantom{dupD} \\partial_k \\phi \\right] + \\frac{1}{6} \\left(\\bar{D}_k \\beta^k - \\alpha K \\right) \\\\\n",
"\n",
" % assign -diff_type=dD 'alpha'\n",
" % srepl \"\\partial_t \\text{trK}\" -> \"\\text{trK_rhs}\"\n",
" \\partial_t K &= \\left[\\beta^k \\vphantom{dupD} \\partial_k K \\right] + \\frac{1}{3} \\alpha K^2 + \\alpha \\bar{A}_{i j}\n",
" \\bar{A}^{i j} - e^{-4 \\phi} \\left(\\bar{D}_i \\bar{D}^i \\alpha + 2 \\bar{D}^i \\alpha \\bar{D}_i \\phi \\right) \\\\\n",
"\\end{align}\n",
"\\]"
],
"text/plain": [
"('GammahatUDD',\n",
" 'alpha',\n",
" 'alpha_dDD',\n",
" 'hDD_dD',\n",
" 'phi_cdbarD',\n",
" 'cf_dupD',\n",
" 'epsilonUUU',\n",
" 'gammahatUU',\n",
" 'gammabarDD_dupD',\n",
" 'alpha_dD',\n",
" 'trK_rhs',\n",
" 'cf_dD',\n",
" 'trK',\n",
" 'gammahatDD',\n",
" 'gammabardet',\n",
" 'alpha_cdbarD_dD',\n",
" 'aUU',\n",
" 'h_rhsDD',\n",
" 'phi',\n",
" 'hDD',\n",
" 'deltaDD',\n",
" 'gammabardet_dD',\n",
" 'alpha_cdbarD',\n",
" 'GammabarUDD',\n",
" 'hDD_dupD',\n",
" 'alpha_cdbarU_dD',\n",
" 'trK_dupD',\n",
" 'gammabarDD',\n",
" 'vetU',\n",
" 'cf_rhs',\n",
" 'gammabarDD_dD',\n",
" 'aDD',\n",
" 'gammahatdet',\n",
" 'cf',\n",
" 'vetU_dD',\n",
" 'aUD',\n",
" 'alpha_cdbarU',\n",
" 'gammabarUU',\n",
" 'gammabarUU_dD',\n",
" 'alpha_cdbarUD')"
]
},
"execution_count": 20,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"%%parse_latex --reset --ignore-warning\n",
"\n",
"\\begin{align}\n",
" % keydef basis [x, y, z]\n",
"\n",
" % vardef -kron 'deltaDD'\n",
" % parse \\hat{\\gamma}_{ij} = \\delta_{ij}\n",
" % assign -diff_type=symbolic -metric 'gammahatDD'\n",
" % vardef -diff_type=dD -symmetry=sym01 'hDD'\n",
" % parse \\bar{\\gamma}_{ij} = h_{ij} + \\hat{\\gamma}_{ij}\n",
" % assign -diff_type=dD -metric 'gammabarDD'\n",
"\n",
" % srepl \"\\beta\" -> \"\\text{vet}\"\n",
" % vardef -diff_type=dD 'vetU'\n",
" %% replace '\\bar{D}_k \\beta^k' with contraction identity\n",
" % srepl \"\\bar{D}_k \\text{vet}^k\" -> \"(\\partial_k \\text{vet}^k + \\frac{\\partial_k \\text{gammahatdet} \\text{vet}^k}{2 \\text{gammahatdet}})\"\n",
"\n",
" % srepl \"\\bar{A}\" -> \"\\text{a}\"\n",
" % vardef -diff_type=dD -symmetry=sym01 'aDD'\n",
" % assign -metric='gammabar' 'aDD'\n",
"\n",
" % srepl \"\\partial_t \\bar{\\gamma}\" -> \"\\text{h_rhs}\"\n",
" \\partial_t \\bar{\\gamma}_{i j} &= \\left[\\beta^k \\vphantom{dupD} \\partial_k \\bar{\\gamma}_{i j} + \\partial_i \\beta^k\n",
" \\bar{\\gamma}_{k j} + \\partial_j \\beta^k \\bar{\\gamma}_{i k} \\right] + \\frac{2}{3} \\bar{\\gamma}_{i j}\n",
" \\left(\\alpha \\bar{A}^k{}_k - \\bar{D}_k \\beta^k\\right) - 2 \\alpha \\bar{A}_{i j} \\\\\n",
"\n",
" % assign -diff_type=dD 'cf'\n",
" %% replace 'phi' with conformal factor cf = W = e^{-2\\phi}\n",
" % srepl \"e^{-4 \\phi}\" -> \"\\text{cf}^2\"\n",
" % srepl \"\\partial_t \\phi = <1..> \\\\\" -> \"\\text{cf_rhs} = -2 \\text{cf} (<1..>) \\\\\"\n",
" % srepl -persist \"\\partial_{<1>} \\phi\" -> \"\\partial_{<1>} \\text{cf} \\frac{-1}{2 \\text{cf}}\"\n",
" % srepl \"\\partial_<1> \\phi\" -> \"\\partial_<1> \\text{cf} \\frac{-1}{2 \\text{cf}}\"\n",
"\n",
" % srepl \"K\" -> \"\\text{trK}\"\n",
" % assign -diff_type=dD 'trK'\n",
" \\partial_t \\phi &= \\left[\\beta^k \\vphantom{dupD} \\partial_k \\phi \\right] + \\frac{1}{6} \\left(\\bar{D}_k \\beta^k - \\alpha K \\right) \\\\\n",
"\n",
" % assign -diff_type=dD 'alpha'\n",
" % srepl \"\\partial_t \\text{trK}\" -> \"\\text{trK_rhs}\"\n",
" \\partial_t K &= \\left[\\beta^k \\vphantom{dupD} \\partial_k K \\right] + \\frac{1}{3} \\alpha K^2 + \\alpha \\bar{A}_{i j}\n",
" \\bar{A}^{i j} - e^{-4 \\phi} \\left(\\bar{D}_i \\bar{D}^i \\alpha + 2 \\bar{D}^i \\alpha \\bar{D}_i \\phi \\right) \\\\\n",
"\\end{align}"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {
"execution": {
"iopub.execute_input": "2021-03-07T17:12:13.518298Z",
"iopub.status.busy": "2021-03-07T17:12:13.482430Z",
"iopub.status.idle": "2021-03-07T17:12:16.809496Z",
"shell.execute_reply": "2021-03-07T17:12:16.808939Z"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Assertion Passed!\n"
]
}
],
"source": [
"assert_equal(trK_rhs, Brhs.trK_rhs)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"\n",
"## Step 4: Evolution Equation for $\\partial_t \\bar{\\Lambda}^i$ [ [^](#top) ]\n",
"\n",
"\\begin{align}\n",
" \\partial_t \\bar{\\Lambda}^i &= \\left[\\beta^k \\partial_k \\bar{\\Lambda}^i - \\partial_k \\beta^i \\bar{\\Lambda}^k \\right] + \\bar{\\gamma}^{j k} \\hat{D}_j \\hat{D}_k \\beta^i + \\frac{2}{3} \\Delta^i \\bar{D}_j \\beta^j + \\frac{1}{3} \\bar{D}^i \\bar{D}_j \\beta^j \\\\\n",
" &\\qquad - 2 \\bar{A}^{i j} \\left(\\partial_j \\alpha - 6 \\partial_j \\phi \\right) + 2 \\alpha \\bar{A}^{j k} \\Delta_{j k}^i - \\frac{4}{3} \\alpha \\bar{\\gamma}^{i j} \\partial_j K\n",
"\\end{align}"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {
"execution": {
"iopub.execute_input": "2021-03-07T17:12:16.881053Z",
"iopub.status.busy": "2021-03-07T17:12:16.844613Z",
"iopub.status.idle": "2021-03-07T17:12:18.533381Z",
"shell.execute_reply": "2021-03-07T17:12:18.533822Z"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"ParseError: \\partial_t \\bar{\\Lambda}^i = [\\text{vet}^k \\partial_k \\bar{\\Lambda}^i - \\partial_k \\text{vet}^i \\bar{\\Lambda}^k ] +\n",
" ^\n",
"cannot index undefined tensor 'LambdabarU' at position 2099\n"
]
}
],
"source": [
"%%parse_latex --reset --ignore-warning\n",
"\n",
"\\begin{align}\n",
" % keydef basis [x, y, z]\n",
"\n",
" % vardef -kron 'deltaDD'\n",
" % parse \\hat{\\gamma}_{ij} = \\delta_{ij}\n",
" % assign -diff_type=symbolic -metric 'gammahatDD'\n",
" % vardef -diff_type=dD -symmetry=sym01 'hDD'\n",
" % parse \\bar{\\gamma}_{ij} = h_{ij} + \\hat{\\gamma}_{ij}\n",
" % assign -diff_type=dD -metric 'gammabarDD'\n",
"\n",
" % srepl \"\\beta\" -> \"\\text{vet}\"\n",
" % vardef -diff_type=dD 'vetU'\n",
" %% replace '\\bar{D}_k \\beta^k' with contraction identity\n",
" % srepl \"\\bar{D}_k \\text{vet}^k\" -> \"(\\partial_k \\text{vet}^k + \\frac{\\partial_k \\text{gammahatdet} \\text{vet}^k}{2 \\text{gammahatdet}})\"\n",
"\n",
" % srepl \"\\bar{A}\" -> \"\\text{a}\"\n",
" % vardef -diff_type=dD -symmetry=sym01 'aDD'\n",
" % assign -metric='gammabar' 'aDD'\n",
"\n",
" % srepl \"\\partial_t \\bar{\\gamma}\" -> \"\\text{h_rhs}\"\n",
" \\partial_t \\bar{\\gamma}_{i j} &= \\left[\\beta^k \\vphantom{dupD} \\partial_k \\bar{\\gamma}_{i j} + \\partial_i \\beta^k\n",
" \\bar{\\gamma}_{k j} + \\partial_j \\beta^k \\bar{\\gamma}_{i k} \\right] + \\frac{2}{3} \\bar{\\gamma}_{i j}\n",
" \\left(\\alpha \\bar{A}^k{}_k - \\bar{D}_k \\beta^k\\right) - 2 \\alpha \\bar{A}_{i j} \\\\\n",
"\n",
" % assign -diff_type=dD 'cf'\n",
" %% replace 'phi' with conformal factor cf = W = e^{-2\\phi}\n",
" % srepl \"e^{-4 \\phi}\" -> \"\\text{cf}^2\"\n",
" % srepl \"\\partial_t \\phi = <1..> \\\\\" -> \"\\text{cf_rhs} = -2 \\text{cf} (<1..>) \\\\\"\n",
" % srepl -persist \"\\partial_{<1>} \\phi\" -> \"\\partial_{<1>} \\text{cf} \\frac{-1}{2 \\text{cf}}\"\n",
" % srepl \"\\partial_<1> \\phi\" -> \"\\partial_<1> \\text{cf} \\frac{-1}{2 \\text{cf}}\"\n",
"\n",
" % srepl \"K\" -> \"\\text{trK}\"\n",
" % assign -diff_type=dD 'trK'\n",
" \\partial_t \\phi &= \\left[\\beta^k \\vphantom{dupD} \\partial_k \\phi \\right] + \\frac{1}{6} \\left(\\bar{D}_k \\beta^k - \\alpha K \\right) \\\\\n",
"\n",
" % assign -diff_type=dD 'alpha'\n",
" % srepl \"\\partial_t \\text{trK}\" -> \"\\text{trK_rhs}\"\n",
" \\partial_t K &= \\left[\\beta^k \\vphantom{dupD} \\partial_k K \\right] + \\frac{1}{3} \\alpha K^2 + \\alpha \\bar{A}_{i j}\n",
" \\bar{A}^{i j} - e^{-4 \\phi} \\left(\\bar{D}_i \\bar{D}^i \\alpha + 2 \\bar{D}^i \\alpha \\bar{D}_i \\phi \\right) \\\\\n",
"\n",
" \\partial_t \\bar{\\Lambda}^i &= \\left[\\beta^k \\partial_k \\bar{\\Lambda}^i - \\partial_k \\beta^i \\bar{\\Lambda}^k \\right] +\n",
" \\bar{\\gamma}^{j k} \\hat{D}_j \\hat{D}_k \\beta^i + \\frac{2}{3} \\Delta^i \\bar{D}_k \\beta^k + \\frac{1}{3} \\bar{D}^i \\bar{D}_k \\beta^k \\\\\n",
" &\\qquad - 2 \\bar{A}^{i j} \\left(\\partial_j \\alpha - 6 \\alpha \\partial_j \\phi \\right) + 2 \\alpha\n",
" \\bar{A}^{j k} \\Delta^i_{j k} - \\frac{4}{3} \\alpha \\bar{\\gamma}^{i j} \\partial_j K \\\\\n",
"\\end{align}"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"First, replace every instance of `LambdabarU` with `lambdaU` using the `srepl` macro, and then define the variable `lambdaU` using the `vardef` macro.\n",
"\n",
"```\n",
"% srepl \"\\bar{\\Lambda}\" -> \"\\text{lambda}\"\n",
"% vardef -diff_type=dD 'lambdaU'\n",
"```"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"TensorError: unbalanced free index {'t'} in lambdaU_dD\n"
]
}
],
"source": [
"%%parse_latex --reset --ignore-warning\n",
"\n",
"\\begin{align}\n",
" % keydef basis [x, y, z]\n",
"\n",
" % vardef -kron 'deltaDD'\n",
" % parse \\hat{\\gamma}_{ij} = \\delta_{ij}\n",
" % assign -diff_type=symbolic -metric 'gammahatDD'\n",
" % vardef -diff_type=dD -symmetry=sym01 'hDD'\n",
" % parse \\bar{\\gamma}_{ij} = h_{ij} + \\hat{\\gamma}_{ij}\n",
" % assign -diff_type=dD -metric 'gammabarDD'\n",
"\n",
" % srepl \"\\beta\" -> \"\\text{vet}\"\n",
" % vardef -diff_type=dD 'vetU'\n",
" %% replace '\\bar{D}_k \\beta^k' with contraction identity\n",
" % srepl \"\\bar{D}_k \\text{vet}^k\" -> \"(\\partial_k \\text{vet}^k + \\frac{\\partial_k \\text{gammahatdet} \\text{vet}^k}{2 \\text{gammahatdet}})\"\n",
"\n",
" % srepl \"\\bar{A}\" -> \"\\text{a}\"\n",
" % vardef -diff_type=dD -symmetry=sym01 'aDD'\n",
" % assign -metric='gammabar' 'aDD'\n",
"\n",
" % srepl \"\\partial_t \\bar{\\gamma}\" -> \"\\text{h_rhs}\"\n",
" \\partial_t \\bar{\\gamma}_{i j} &= \\left[\\beta^k \\vphantom{dupD} \\partial_k \\bar{\\gamma}_{i j} + \\partial_i \\beta^k\n",
" \\bar{\\gamma}_{k j} + \\partial_j \\beta^k \\bar{\\gamma}_{i k} \\right] + \\frac{2}{3} \\bar{\\gamma}_{i j}\n",
" \\left(\\alpha \\bar{A}^k{}_k - \\bar{D}_k \\beta^k\\right) - 2 \\alpha \\bar{A}_{i j} \\\\\n",
"\n",
" % assign -diff_type=dD 'cf'\n",
" %% replace 'phi' with conformal factor cf = W = e^{-2\\phi}\n",
" % srepl \"e^{-4 \\phi}\" -> \"\\text{cf}^2\"\n",
" % srepl \"\\partial_t \\phi = <1..> \\\\\" -> \"\\text{cf_rhs} = -2 \\text{cf} (<1..>) \\\\\"\n",
" % srepl -persist \"\\partial_{<1>} \\phi\" -> \"\\partial_{<1>} \\text{cf} \\frac{-1}{2 \\text{cf}}\"\n",
" % srepl \"\\partial_<1> \\phi\" -> \"\\partial_<1> \\text{cf} \\frac{-1}{2 \\text{cf}}\"\n",
"\n",
" % srepl \"K\" -> \"\\text{trK}\"\n",
" % assign -diff_type=dD 'trK'\n",
" \\partial_t \\phi &= \\left[\\beta^k \\vphantom{dupD} \\partial_k \\phi \\right] + \\frac{1}{6} \\left(\\bar{D}_k \\beta^k - \\alpha K \\right) \\\\\n",
"\n",
" % assign -diff_type=dD 'alpha'\n",
" % srepl \"\\partial_t \\text{trK}\" -> \"\\text{trK_rhs}\"\n",
" \\partial_t K &= \\left[\\beta^k \\vphantom{dupD} \\partial_k K \\right] + \\frac{1}{3} \\alpha K^2 + \\alpha \\bar{A}_{i j}\n",
" \\bar{A}^{i j} - e^{-4 \\phi} \\left(\\bar{D}_i \\bar{D}^i \\alpha + 2 \\bar{D}^i \\alpha \\bar{D}_i \\phi \\right) \\\\\n",
"\n",
" % srepl \"\\bar{\\Lambda}\" -> \"\\text{lambda}\"\n",
" % vardef -diff_type=dD 'lambdaU'\n",
" \\partial_t \\bar{\\Lambda}^i &= \\left[\\beta^k \\partial_k \\bar{\\Lambda}^i - \\partial_k \\beta^i \\bar{\\Lambda}^k \\right] +\n",
" \\bar{\\gamma}^{j k} \\hat{D}_j \\hat{D}_k \\beta^i + \\frac{2}{3} \\Delta^i \\bar{D}_k \\beta^k + \\frac{1}{3} \\bar{D}^i \\bar{D}_k \\beta^k \\\\\n",
" &\\qquad - 2 \\bar{A}^{i j} \\left(\\partial_j \\alpha - 6 \\alpha \\partial_j \\phi \\right) + 2 \\alpha\n",
" \\bar{A}^{j k} \\Delta^i_{j k} - \\frac{4}{3} \\alpha \\bar{\\gamma}^{i j} \\partial_j K \\\\\n",
"\\end{align}"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"1. Parse $ \\Delta^k_{ij} = \\bar{\\Gamma}^k_{ij} - \\hat{\\Gamma}^k_{ij} $ using the `parse` macro to define `DeltaUDD`.\n",
"1. Parse $ \\Delta^k = \\bar{\\gamma}^{ij} \\Delta^k_{ij} $ (contraction of `DeltaUDD`) using the `parse` macro to define `DeltaU`.\n",
"\n",
"```\n",
"% parse \\Delta^k_{ij} = \\bar{\\Gamma}^k_{ij} - \\hat{\\Gamma}^k_{ij}\n",
"% parse \\Delta^k = \\bar{\\gamma}^{ij} \\Delta^k_{ij}\n",
"```"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"TensorError: unbalanced free index {'t'} in lambdaU_dD\n"
]
}
],
"source": [
"%%parse_latex --reset --ignore-warning\n",
"\n",
"\\begin{align}\n",
" % keydef basis [x, y, z]\n",
"\n",
" % vardef -kron 'deltaDD'\n",
" % parse \\hat{\\gamma}_{ij} = \\delta_{ij}\n",
" % assign -diff_type=symbolic -metric 'gammahatDD'\n",
" % vardef -diff_type=dD -symmetry=sym01 'hDD'\n",
" % parse \\bar{\\gamma}_{ij} = h_{ij} + \\hat{\\gamma}_{ij}\n",
" % assign -diff_type=dD -metric 'gammabarDD'\n",
"\n",
" % srepl \"\\beta\" -> \"\\text{vet}\"\n",
" % vardef -diff_type=dD 'vetU'\n",
" %% replace '\\bar{D}_k \\beta^k' with contraction identity\n",
" % srepl \"\\bar{D}_k \\text{vet}^k\" -> \"(\\partial_k \\text{vet}^k + \\frac{\\partial_k \\text{gammahatdet} \\text{vet}^k}{2 \\text{gammahatdet}})\"\n",
"\n",
" % srepl \"\\bar{A}\" -> \"\\text{a}\"\n",
" % vardef -diff_type=dD -symmetry=sym01 'aDD'\n",
" % assign -metric='gammabar' 'aDD'\n",
"\n",
" % srepl \"\\partial_t \\bar{\\gamma}\" -> \"\\text{h_rhs}\"\n",
" \\partial_t \\bar{\\gamma}_{i j} &= \\left[\\beta^k \\vphantom{dupD} \\partial_k \\bar{\\gamma}_{i j} + \\partial_i \\beta^k\n",
" \\bar{\\gamma}_{k j} + \\partial_j \\beta^k \\bar{\\gamma}_{i k} \\right] + \\frac{2}{3} \\bar{\\gamma}_{i j}\n",
" \\left(\\alpha \\bar{A}^k{}_k - \\bar{D}_k \\beta^k\\right) - 2 \\alpha \\bar{A}_{i j} \\\\\n",
"\n",
" % assign -diff_type=dD 'cf'\n",
" %% replace 'phi' with conformal factor cf = W = e^{-2\\phi}\n",
" % srepl \"e^{-4 \\phi}\" -> \"\\text{cf}^2\"\n",
" % srepl \"\\partial_t \\phi = <1..> \\\\\" -> \"\\text{cf_rhs} = -2 \\text{cf} (<1..>) \\\\\"\n",
" % srepl -persist \"\\partial_{<1>} \\phi\" -> \"\\partial_{<1>} \\text{cf} \\frac{-1}{2 \\text{cf}}\"\n",
" % srepl \"\\partial_<1> \\phi\" -> \"\\partial_<1> \\text{cf} \\frac{-1}{2 \\text{cf}}\"\n",
"\n",
" % srepl \"K\" -> \"\\text{trK}\"\n",
" % assign -diff_type=dD 'trK'\n",
" \\partial_t \\phi &= \\left[\\beta^k \\vphantom{dupD} \\partial_k \\phi \\right] + \\frac{1}{6} \\left(\\bar{D}_k \\beta^k - \\alpha K \\right) \\\\\n",
"\n",
" % assign -diff_type=dD 'alpha'\n",
" % srepl \"\\partial_t \\text{trK}\" -> \"\\text{trK_rhs}\"\n",
" \\partial_t K &= \\left[\\beta^k \\vphantom{dupD} \\partial_k K \\right] + \\frac{1}{3} \\alpha K^2 + \\alpha \\bar{A}_{i j}\n",
" \\bar{A}^{i j} - e^{-4 \\phi} \\left(\\bar{D}_i \\bar{D}^i \\alpha + 2 \\bar{D}^i \\alpha \\bar{D}_i \\phi \\right) \\\\\n",
"\n",
" % srepl \"\\bar{\\Lambda}\" -> \"\\text{lambda}\"\n",
" % vardef -diff_type=dD 'lambdaU'\n",
"\n",
" % parse \\Delta^k_{ij} = \\bar{\\Gamma}^k_{ij} - \\hat{\\Gamma}^k_{ij}\n",
" % parse \\Delta^k = \\bar{\\gamma}^{ij} \\Delta^k_{ij} \\\\\n",
" \\partial_t \\bar{\\Lambda}^i &= \\left[\\beta^k \\partial_k \\bar{\\Lambda}^i - \\partial_k \\beta^i \\bar{\\Lambda}^k \\right] +\n",
" \\bar{\\gamma}^{j k} \\hat{D}_j \\hat{D}_k \\beta^i + \\frac{2}{3} \\Delta^i \\bar{D}_k \\beta^k + \\frac{1}{3} \\bar{D}^i \\bar{D}_k \\beta^k \\\\\n",
" &\\qquad - 2 \\bar{A}^{i j} \\left(\\partial_j \\alpha - 6 \\alpha \\partial_j \\phi \\right) + 2 \\alpha\n",
" \\bar{A}^{j k} \\Delta^i_{j k} - \\frac{4}{3} \\alpha \\bar{\\gamma}^{i j} \\partial_j K \\\\\n",
"\\end{align}"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Next, replace the partial derivative $\\partial_t \\bar{\\Lambda}$ on the LHS with the variable name `Lambdabar_rhs` using the `srepl` macro.\n",
"\n",
"```\n",
"% srepl \"\\partial_t \\text{lambda}\" -> \"\\text{Lambdabar_rhs}\"\n",
"```"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"ParseError: \\qquad - 2 \\text{a}^{i j} (\\partial_j \\alpha - 6 \\alpha \\partial_j \\text{cf} \\frac{-1}{2 \\text{cf}} ) + 2 \\alpha\n",
" ^\n",
"unsupported operator '\\qquad' at position 2793\n"
]
}
],
"source": [
"%%parse_latex --reset --ignore-warning\n",
"\n",
"\\begin{align}\n",
" % keydef basis [x, y, z]\n",
"\n",
" % vardef -kron 'deltaDD'\n",
" % parse \\hat{\\gamma}_{ij} = \\delta_{ij}\n",
" % assign -diff_type=symbolic -metric 'gammahatDD'\n",
" % vardef -diff_type=dD -symmetry=sym01 'hDD'\n",
" % parse \\bar{\\gamma}_{ij} = h_{ij} + \\hat{\\gamma}_{ij}\n",
" % assign -diff_type=dD -metric 'gammabarDD'\n",
"\n",
" % srepl \"\\beta\" -> \"\\text{vet}\"\n",
" % vardef -diff_type=dD 'vetU'\n",
" %% replace '\\bar{D}_k \\beta^k' with contraction identity\n",
" % srepl \"\\bar{D}_k \\text{vet}^k\" -> \"(\\partial_k \\text{vet}^k + \\frac{\\partial_k \\text{gammahatdet} \\text{vet}^k}{2 \\text{gammahatdet}})\"\n",
"\n",
" % srepl \"\\bar{A}\" -> \"\\text{a}\"\n",
" % vardef -diff_type=dD -symmetry=sym01 'aDD'\n",
" % assign -metric='gammabar' 'aDD'\n",
"\n",
" % srepl \"\\partial_t \\bar{\\gamma}\" -> \"\\text{h_rhs}\"\n",
" \\partial_t \\bar{\\gamma}_{i j} &= \\left[\\beta^k \\vphantom{dupD} \\partial_k \\bar{\\gamma}_{i j} + \\partial_i \\beta^k\n",
" \\bar{\\gamma}_{k j} + \\partial_j \\beta^k \\bar{\\gamma}_{i k} \\right] + \\frac{2}{3} \\bar{\\gamma}_{i j}\n",
" \\left(\\alpha \\bar{A}^k{}_k - \\bar{D}_k \\beta^k\\right) - 2 \\alpha \\bar{A}_{i j} \\\\\n",
"\n",
" % assign -diff_type=dD 'cf'\n",
" %% replace 'phi' with conformal factor cf = W = e^{-2\\phi}\n",
" % srepl \"e^{-4 \\phi}\" -> \"\\text{cf}^2\"\n",
" % srepl \"\\partial_t \\phi = <1..> \\\\\" -> \"\\text{cf_rhs} = -2 \\text{cf} (<1..>) \\\\\"\n",
" % srepl -persist \"\\partial_{<1>} \\phi\" -> \"\\partial_{<1>} \\text{cf} \\frac{-1}{2 \\text{cf}}\"\n",
" % srepl \"\\partial_<1> \\phi\" -> \"\\partial_<1> \\text{cf} \\frac{-1}{2 \\text{cf}}\"\n",
"\n",
" % srepl \"K\" -> \"\\text{trK}\"\n",
" % assign -diff_type=dD 'trK'\n",
" \\partial_t \\phi &= \\left[\\beta^k \\vphantom{dupD} \\partial_k \\phi \\right] + \\frac{1}{6} \\left(\\bar{D}_k \\beta^k - \\alpha K \\right) \\\\\n",
"\n",
" % assign -diff_type=dD 'alpha'\n",
" % srepl \"\\partial_t \\text{trK}\" -> \"\\text{trK_rhs}\"\n",
" \\partial_t K &= \\left[\\beta^k \\vphantom{dupD} \\partial_k K \\right] + \\frac{1}{3} \\alpha K^2 + \\alpha \\bar{A}_{i j}\n",
" \\bar{A}^{i j} - e^{-4 \\phi} \\left(\\bar{D}_i \\bar{D}^i \\alpha + 2 \\bar{D}^i \\alpha \\bar{D}_i \\phi \\right) \\\\\n",
"\n",
" % srepl \"\\bar{\\Lambda}\" -> \"\\text{lambda}\"\n",
" % vardef -diff_type=dD 'lambdaU'\n",
"\n",
" % parse \\Delta^k_{ij} = \\bar{\\Gamma}^k_{ij} - \\hat{\\Gamma}^k_{ij}\n",
" % parse \\Delta^k = \\bar{\\gamma}^{ij} \\Delta^k_{ij}\n",
" % srepl \"\\partial_t \\text{lambda}\" -> \"\\text{Lambdabar_rhs}\"\n",
" \\partial_t \\bar{\\Lambda}^i &= \\left[\\beta^k \\partial_k \\bar{\\Lambda}^i - \\partial_k \\beta^i \\bar{\\Lambda}^k \\right] +\n",
" \\bar{\\gamma}^{j k} \\hat{D}_j \\hat{D}_k \\beta^i + \\frac{2}{3} \\Delta^i \\bar{D}_k \\beta^k + \\frac{1}{3} \\bar{D}^i \\bar{D}_k \\beta^k \\\\\n",
" &\\qquad - 2 \\bar{A}^{i j} \\left(\\partial_j \\alpha - 6 \\alpha \\partial_j \\phi \\right) + 2 \\alpha\n",
" \\bar{A}^{j k} \\Delta^i_{j k} - \\frac{4}{3} \\alpha \\bar{\\gamma}^{i j} \\partial_j K \\\\\n",
"\\end{align}"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Next, internally remove the formatting command `\\qquad` using the `ignore` macro.\n",
"\n",
"`ignore`: remove a LaTeX command or substring; equivalent to `srepl \"...\" -> \"\"` (empty replacement).\n",
"\n",
"```\n",
"% ignore \"\\qquad\"\n",
"```"
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"ParseError: - 2 \\text{a}^{i j} (\\partial_j \\alpha - 6 \\alpha \\partial_j \\text{cf} \\frac{-1}{2 \\text{cf}} ) + 2 \\alpha\n",
" ^\n",
"unsupported operator '-' at position 2816\n"
]
}
],
"source": [
"%%parse_latex --reset --ignore-warning\n",
"\n",
"\\begin{align}\n",
" % keydef basis [x, y, z]\n",
" % ignore \"\\qquad\"\n",
"\n",
" % vardef -kron 'deltaDD'\n",
" % parse \\hat{\\gamma}_{ij} = \\delta_{ij}\n",
" % assign -diff_type=symbolic -metric 'gammahatDD'\n",
" % vardef -diff_type=dD -symmetry=sym01 'hDD'\n",
" % parse \\bar{\\gamma}_{ij} = h_{ij} + \\hat{\\gamma}_{ij}\n",
" % assign -diff_type=dD -metric 'gammabarDD'\n",
"\n",
" % srepl \"\\beta\" -> \"\\text{vet}\"\n",
" % vardef -diff_type=dD 'vetU'\n",
" %% replace '\\bar{D}_k \\beta^k' with contraction identity\n",
" % srepl \"\\bar{D}_k \\text{vet}^k\" -> \"(\\partial_k \\text{vet}^k + \\frac{\\partial_k \\text{gammahatdet} \\text{vet}^k}{2 \\text{gammahatdet}})\"\n",
"\n",
" % srepl \"\\bar{A}\" -> \"\\text{a}\"\n",
" % vardef -diff_type=dD -symmetry=sym01 'aDD'\n",
" % assign -metric='gammabar' 'aDD'\n",
"\n",
" % srepl \"\\partial_t \\bar{\\gamma}\" -> \"\\text{h_rhs}\"\n",
" \\partial_t \\bar{\\gamma}_{i j} &= \\left[\\beta^k \\vphantom{dupD} \\partial_k \\bar{\\gamma}_{i j} + \\partial_i \\beta^k\n",
" \\bar{\\gamma}_{k j} + \\partial_j \\beta^k \\bar{\\gamma}_{i k} \\right] + \\frac{2}{3} \\bar{\\gamma}_{i j}\n",
" \\left(\\alpha \\bar{A}^k{}_k - \\bar{D}_k \\beta^k\\right) - 2 \\alpha \\bar{A}_{i j} \\\\\n",
"\n",
" % assign -diff_type=dD 'cf'\n",
" %% replace 'phi' with conformal factor cf = W = e^{-2\\phi}\n",
" % srepl \"e^{-4 \\phi}\" -> \"\\text{cf}^2\"\n",
" % srepl \"\\partial_t \\phi = <1..> \\\\\" -> \"\\text{cf_rhs} = -2 \\text{cf} (<1..>) \\\\\"\n",
" % srepl -persist \"\\partial_{<1>} \\phi\" -> \"\\partial_{<1>} \\text{cf} \\frac{-1}{2 \\text{cf}}\"\n",
" % srepl \"\\partial_<1> \\phi\" -> \"\\partial_<1> \\text{cf} \\frac{-1}{2 \\text{cf}}\"\n",
"\n",
" % srepl \"K\" -> \"\\text{trK}\"\n",
" % assign -diff_type=dD 'trK'\n",
" \\partial_t \\phi &= \\left[\\beta^k \\vphantom{dupD} \\partial_k \\phi \\right] + \\frac{1}{6} \\left(\\bar{D}_k \\beta^k - \\alpha K \\right) \\\\\n",
"\n",
" % assign -diff_type=dD 'alpha'\n",
" % srepl \"\\partial_t \\text{trK}\" -> \"\\text{trK_rhs}\"\n",
" \\partial_t K &= \\left[\\beta^k \\vphantom{dupD} \\partial_k K \\right] + \\frac{1}{3} \\alpha K^2 + \\alpha \\bar{A}_{i j}\n",
" \\bar{A}^{i j} - e^{-4 \\phi} \\left(\\bar{D}_i \\bar{D}^i \\alpha + 2 \\bar{D}^i \\alpha \\bar{D}_i \\phi \\right) \\\\\n",
"\n",
" % srepl \"\\bar{\\Lambda}\" -> \"\\text{lambda}\"\n",
" % vardef -diff_type=dD 'lambdaU'\n",
"\n",
" % parse \\Delta^k_{ij} = \\bar{\\Gamma}^k_{ij} - \\hat{\\Gamma}^k_{ij}\n",
" % parse \\Delta^k = \\bar{\\gamma}^{ij} \\Delta^k_{ij}\n",
" % srepl \"\\partial_t \\text{lambda}\" -> \"\\text{Lambdabar_rhs}\"\n",
" \\partial_t \\bar{\\Lambda}^i &= \\left[\\beta^k \\partial_k \\bar{\\Lambda}^i - \\partial_k \\beta^i \\bar{\\Lambda}^k \\right] +\n",
" \\bar{\\gamma}^{j k} \\hat{D}_j \\hat{D}_k \\beta^i + \\frac{2}{3} \\Delta^i \\bar{D}_k \\beta^k + \\frac{1}{3} \\bar{D}^i \\bar{D}_k \\beta^k \\\\\n",
" &\\qquad - 2 \\bar{A}^{i j} \\left(\\partial_j \\alpha - 6 \\alpha \\partial_j \\phi \\right) + 2 \\alpha\n",
" \\bar{A}^{j k} \\Delta^i_{j k} - \\frac{4}{3} \\alpha \\bar{\\gamma}^{i j} \\partial_j K \\\\\n",
"\\end{align}"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Next, append a percent symbol `%` to the end of the line break preceding `\\qquad`, and then remove that custom line break `\\\\%` using the `ignore` macro.\n",
"\n",
"```\n",
"% ignore \"\\\\%\"\n",
"```\n",
"\n",
"**Remark**: You cannot split an equation across a line break, and hence we removed that line break internally using the `ignore` macro."
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {},
"outputs": [
{
"data": {
"text/latex": [
"\\[\n",
"\\begin{align}\n",
" % keydef basis [x, y, z]\n",
" % ignore \"\\\\%\", \"\\qquad\"\n",
"\n",
" % vardef -kron 'deltaDD'\n",
" % parse \\hat{\\gamma}_{ij} = \\delta_{ij}\n",
" % assign -diff_type=symbolic -metric 'gammahatDD'\n",
" % vardef -diff_type=dD -symmetry=sym01 'hDD'\n",
" % parse \\bar{\\gamma}_{ij} = h_{ij} + \\hat{\\gamma}_{ij}\n",
" % assign -diff_type=dD -metric 'gammabarDD'\n",
"\n",
" % srepl \"\\beta\" -> \"\\text{vet}\"\n",
" % vardef -diff_type=dD 'vetU'\n",
" %% replace '\\bar{D}_k \\beta^k' with contraction identity\n",
" % srepl \"\\bar{D}_k \\text{vet}^k\" -> \"(\\partial_k \\text{vet}^k + \\frac{\\partial_k \\text{gammahatdet} \\text{vet}^k}{2 \\text{gammahatdet}})\"\n",
"\n",
" % srepl \"\\bar{A}\" -> \"\\text{a}\"\n",
" % vardef -diff_type=dD -symmetry=sym01 'aDD'\n",
" % assign -metric='gammabar' 'aDD'\n",
"\n",
" % srepl \"\\partial_t \\bar{\\gamma}\" -> \"\\text{h_rhs}\"\n",
" \\partial_t \\bar{\\gamma}_{i j} &= \\left[\\beta^k \\vphantom{dupD} \\partial_k \\bar{\\gamma}_{i j} + \\partial_i \\beta^k\n",
" \\bar{\\gamma}_{k j} + \\partial_j \\beta^k \\bar{\\gamma}_{i k} \\right] + \\frac{2}{3} \\bar{\\gamma}_{i j}\n",
" \\left(\\alpha \\bar{A}^k{}_k - \\bar{D}_k \\beta^k\\right) - 2 \\alpha \\bar{A}_{i j} \\\\\n",
"\n",
" % assign -diff_type=dD 'cf'\n",
" %% replace 'phi' with conformal factor cf = W = e^{-2\\phi}\n",
" % srepl \"e^{-4 \\phi}\" -> \"\\text{cf}^2\"\n",
" % srepl \"\\partial_t \\phi = <1..> \\\\\" -> \"\\text{cf_rhs} = -2 \\text{cf} (<1..>) \\\\\"\n",
" % srepl -persist \"\\partial_{<1>} \\phi\" -> \"\\partial_{<1>} \\text{cf} \\frac{-1}{2 \\text{cf}}\"\n",
" % srepl \"\\partial_<1> \\phi\" -> \"\\partial_<1> \\text{cf} \\frac{-1}{2 \\text{cf}}\"\n",
"\n",
" % srepl \"K\" -> \"\\text{trK}\"\n",
" % assign -diff_type=dD 'trK'\n",
" \\partial_t \\phi &= \\left[\\beta^k \\vphantom{dupD} \\partial_k \\phi \\right] + \\frac{1}{6} \\left(\\bar{D}_k \\beta^k - \\alpha K \\right) \\\\\n",
"\n",
" % assign -diff_type=dD 'alpha'\n",
" % srepl \"\\partial_t \\text{trK}\" -> \"\\text{trK_rhs}\"\n",
" \\partial_t K &= \\left[\\beta^k \\vphantom{dupD} \\partial_k K \\right] + \\frac{1}{3} \\alpha K^2 + \\alpha \\bar{A}_{i j}\n",
" \\bar{A}^{i j} - e^{-4 \\phi} \\left(\\bar{D}_i \\bar{D}^i \\alpha + 2 \\bar{D}^i \\alpha \\bar{D}_i \\phi \\right) \\\\\n",
"\n",
" % srepl \"\\bar{\\Lambda}\" -> \"\\text{lambda}\"\n",
" % vardef -diff_type=dD 'lambdaU'\n",
"\n",
" % parse \\Delta^k_{ij} = \\bar{\\Gamma}^k_{ij} - \\hat{\\Gamma}^k_{ij}\n",
" % parse \\Delta^k = \\bar{\\gamma}^{ij} \\Delta^k_{ij}\n",
" % srepl \"\\partial_t \\text{lambda}\" -> \"\\text{Lambdabar_rhs}\"\n",
" \\partial_t \\bar{\\Lambda}^i &= \\left[\\beta^k \\partial_k \\bar{\\Lambda}^i - \\partial_k \\beta^i \\bar{\\Lambda}^k \\right] +\n",
" \\bar{\\gamma}^{j k} \\hat{D}_j \\hat{D}_k \\beta^i + \\frac{2}{3} \\Delta^i \\bar{D}_k \\beta^k + \\frac{1}{3} \\bar{D}^i \\bar{D}_k \\beta^k \\\\%\n",
" &\\qquad - 2 \\bar{A}^{i j} \\left(\\partial_j \\alpha - 6 \\alpha \\partial_j \\phi \\right) + 2 \\alpha\n",
" \\bar{A}^{j k} \\Delta^i_{j k} - \\frac{4}{3} \\alpha \\bar{\\gamma}^{i j} \\partial_j K \\\\\n",
"\\end{align}\n",
"\\]"
],
"text/plain": [
"('GammahatUDD',\n",
" 'alpha',\n",
" 'alpha_dDD',\n",
" 'hDD_dD',\n",
" 'phi_cdbarD',\n",
" 'cf_dupD',\n",
" 'epsilonUUU',\n",
" 'gammahatUU',\n",
" 'vetU_cdhatDD',\n",
" 'gammabarDD_dupD',\n",
" 'alpha_dD',\n",
" 'trK_rhs',\n",
" 'lambdaU_dD',\n",
" 'gammahatdet_dD_cdbarU',\n",
" 'cf_dD',\n",
" 'trK',\n",
" 'gammahatDD',\n",
" 'vetU_cdhatD',\n",
" 'vetU_cdhatD_dD',\n",
" 'gammabardet',\n",
" 'lambdaU',\n",
" 'alpha_cdbarD_dD',\n",
" 'aUU',\n",
" 'h_rhsDD',\n",
" 'DeltaUDD',\n",
" 'phi',\n",
" 'hDD',\n",
" 'deltaDD',\n",
" 'gammabardet_dD',\n",
" 'alpha_cdbarD',\n",
" 'vetU_dD_cdbarU',\n",
" 'trK_dD',\n",
" 'GammabarUDD',\n",
" 'hDD_dupD',\n",
" 'alpha_cdbarU_dD',\n",
" 'Lambdabar_rhsU',\n",
" 'vetU_cdbarU',\n",
" 'vetU_dDD',\n",
" 'gammahatdet_dD_cdbarD',\n",
" 'trK_dupD',\n",
" 'vetU_cdbarD',\n",
" 'gammabarDD',\n",
" 'vetU',\n",
" 'gammahatdet_cdbarD',\n",
" 'cf_rhs',\n",
" 'gammabarDD_dD',\n",
" 'aDD',\n",
" 'gammahatdet',\n",
" 'DeltaU',\n",
" 'gammahatdet_cdbarU',\n",
" 'cf',\n",
" 'vetU_dD',\n",
" 'aUD',\n",
" 'alpha_cdbarU',\n",
" 'gammahatdet_dD',\n",
" 'gammabarUU',\n",
" 'gammabarUU_dD',\n",
" 'vetU_dD_cdbarD',\n",
" 'alpha_cdbarUD')"
]
},
"execution_count": 27,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"%%parse_latex --reset --ignore-warning\n",
"\n",
"\\begin{align}\n",
" % keydef basis [x, y, z]\n",
" % ignore \"\\\\%\", \"\\qquad\"\n",
"\n",
" % vardef -kron 'deltaDD'\n",
" % parse \\hat{\\gamma}_{ij} = \\delta_{ij}\n",
" % assign -diff_type=symbolic -metric 'gammahatDD'\n",
" % vardef -diff_type=dD -symmetry=sym01 'hDD'\n",
" % parse \\bar{\\gamma}_{ij} = h_{ij} + \\hat{\\gamma}_{ij}\n",
" % assign -diff_type=dD -metric 'gammabarDD'\n",
"\n",
" % srepl \"\\beta\" -> \"\\text{vet}\"\n",
" % vardef -diff_type=dD 'vetU'\n",
" %% replace '\\bar{D}_k \\beta^k' with contraction identity\n",
" % srepl \"\\bar{D}_k \\text{vet}^k\" -> \"(\\partial_k \\text{vet}^k + \\frac{\\partial_k \\text{gammahatdet} \\text{vet}^k}{2 \\text{gammahatdet}})\"\n",
"\n",
" % srepl \"\\bar{A}\" -> \"\\text{a}\"\n",
" % vardef -diff_type=dD -symmetry=sym01 'aDD'\n",
" % assign -metric='gammabar' 'aDD'\n",
"\n",
" % srepl \"\\partial_t \\bar{\\gamma}\" -> \"\\text{h_rhs}\"\n",
" \\partial_t \\bar{\\gamma}_{i j} &= \\left[\\beta^k \\vphantom{dupD} \\partial_k \\bar{\\gamma}_{i j} + \\partial_i \\beta^k\n",
" \\bar{\\gamma}_{k j} + \\partial_j \\beta^k \\bar{\\gamma}_{i k} \\right] + \\frac{2}{3} \\bar{\\gamma}_{i j}\n",
" \\left(\\alpha \\bar{A}^k{}_k - \\bar{D}_k \\beta^k\\right) - 2 \\alpha \\bar{A}_{i j} \\\\\n",
"\n",
" % assign -diff_type=dD 'cf'\n",
" %% replace 'phi' with conformal factor cf = W = e^{-2\\phi}\n",
" % srepl \"e^{-4 \\phi}\" -> \"\\text{cf}^2\"\n",
" % srepl \"\\partial_t \\phi = <1..> \\\\\" -> \"\\text{cf_rhs} = -2 \\text{cf} (<1..>) \\\\\"\n",
" % srepl -persist \"\\partial_{<1>} \\phi\" -> \"\\partial_{<1>} \\text{cf} \\frac{-1}{2 \\text{cf}}\"\n",
" % srepl \"\\partial_<1> \\phi\" -> \"\\partial_<1> \\text{cf} \\frac{-1}{2 \\text{cf}}\"\n",
"\n",
" % srepl \"K\" -> \"\\text{trK}\"\n",
" % assign -diff_type=dD 'trK'\n",
" \\partial_t \\phi &= \\left[\\beta^k \\vphantom{dupD} \\partial_k \\phi \\right] + \\frac{1}{6} \\left(\\bar{D}_k \\beta^k - \\alpha K \\right) \\\\\n",
"\n",
" % assign -diff_type=dD 'alpha'\n",
" % srepl \"\\partial_t \\text{trK}\" -> \"\\text{trK_rhs}\"\n",
" \\partial_t K &= \\left[\\beta^k \\vphantom{dupD} \\partial_k K \\right] + \\frac{1}{3} \\alpha K^2 + \\alpha \\bar{A}_{i j}\n",
" \\bar{A}^{i j} - e^{-4 \\phi} \\left(\\bar{D}_i \\bar{D}^i \\alpha + 2 \\bar{D}^i \\alpha \\bar{D}_i \\phi \\right) \\\\\n",
"\n",
" % srepl \"\\bar{\\Lambda}\" -> \"\\text{lambda}\"\n",
" % vardef -diff_type=dD 'lambdaU'\n",
"\n",
" % parse \\Delta^k_{ij} = \\bar{\\Gamma}^k_{ij} - \\hat{\\Gamma}^k_{ij}\n",
" % parse \\Delta^k = \\bar{\\gamma}^{ij} \\Delta^k_{ij}\n",
" % srepl \"\\partial_t \\text{lambda}\" -> \"\\text{Lambdabar_rhs}\"\n",
" \\partial_t \\bar{\\Lambda}^i &= \\left[\\beta^k \\partial_k \\bar{\\Lambda}^i - \\partial_k \\beta^i \\bar{\\Lambda}^k \\right] +\n",
" \\bar{\\gamma}^{j k} \\hat{D}_j \\hat{D}_k \\beta^i + \\frac{2}{3} \\Delta^i \\bar{D}_k \\beta^k + \\frac{1}{3} \\bar{D}^i \\bar{D}_k \\beta^k \\\\%\n",
" &\\qquad - 2 \\bar{A}^{i j} \\left(\\partial_j \\alpha - 6 \\alpha \\partial_j \\phi \\right) + 2 \\alpha\n",
" \\bar{A}^{j k} \\Delta^i_{j k} - \\frac{4}{3} \\alpha \\bar{\\gamma}^{i j} \\partial_j K \\\\\n",
"\\end{align}"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Assertion Failed!\n"
]
}
],
"source": [
"try:\n",
" assert_equal(Lambdabar_rhsU, Brhs.Lambdabar_rhsU)\n",
"except AssertionError:\n",
" print('Assertion Failed!')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Finally, enforce upwinding on the contracted partial derivative inside of the bracketed term using the `vphantom` command.\n",
"\n",
"```\n",
"\\partial_t \\bar{\\Lambda}^i &= \\left[\\beta^k \\vphantom{dupD} \\partial_k ...\n",
"```"
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {},
"outputs": [
{
"data": {
"text/latex": [
"\\[\n",
"\\begin{align}\n",
" % keydef basis [x, y, z]\n",
" % ignore \"\\\\%\", \"\\qquad\"\n",
"\n",
" % vardef -kron 'deltaDD'\n",
" % parse \\hat{\\gamma}_{ij} = \\delta_{ij}\n",
" % assign -diff_type=symbolic -metric 'gammahatDD'\n",
" % vardef -diff_type=dD -symmetry=sym01 'hDD'\n",
" % parse \\bar{\\gamma}_{ij} = h_{ij} + \\hat{\\gamma}_{ij}\n",
" % assign -diff_type=dD -metric 'gammabarDD'\n",
"\n",
" % srepl \"\\beta\" -> \"\\text{vet}\"\n",
" % vardef -diff_type=dD 'vetU'\n",
" %% replace '\\bar{D}_k \\beta^k' with contraction identity\n",
" % srepl \"\\bar{D}_k \\text{vet}^k\" -> \"(\\partial_k \\text{vet}^k + \\frac{\\partial_k \\text{gammahatdet} \\text{vet}^k}{2 \\text{gammahatdet}})\"\n",
"\n",
" % srepl \"\\bar{A}\" -> \"\\text{a}\"\n",
" % vardef -diff_type=dD -symmetry=sym01 'aDD'\n",
" % assign -metric='gammabar' 'aDD'\n",
"\n",
" % srepl \"\\partial_t \\bar{\\gamma}\" -> \"\\text{h_rhs}\"\n",
" \\partial_t \\bar{\\gamma}_{i j} &= \\left[\\beta^k \\vphantom{dupD} \\partial_k \\bar{\\gamma}_{i j} + \\partial_i \\beta^k\n",
" \\bar{\\gamma}_{k j} + \\partial_j \\beta^k \\bar{\\gamma}_{i k} \\right] + \\frac{2}{3} \\bar{\\gamma}_{i j}\n",
" \\left(\\alpha \\bar{A}^k{}_k - \\bar{D}_k \\beta^k\\right) - 2 \\alpha \\bar{A}_{i j} \\\\\n",
"\n",
" % assign -diff_type=dD 'cf'\n",
" %% replace 'phi' with conformal factor cf = W = e^{-2\\phi}\n",
" % srepl \"e^{-4 \\phi}\" -> \"\\text{cf}^2\"\n",
" % srepl \"\\partial_t \\phi = <1..> \\\\\" -> \"\\text{cf_rhs} = -2 \\text{cf} (<1..>) \\\\\"\n",
" % srepl -persist \"\\partial_{<1>} \\phi\" -> \"\\partial_{<1>} \\text{cf} \\frac{-1}{2 \\text{cf}}\"\n",
" % srepl \"\\partial_<1> \\phi\" -> \"\\partial_<1> \\text{cf} \\frac{-1}{2 \\text{cf}}\"\n",
"\n",
" % srepl \"K\" -> \"\\text{trK}\"\n",
" % assign -diff_type=dD 'trK'\n",
" \\partial_t \\phi &= \\left[\\beta^k \\vphantom{dupD} \\partial_k \\phi \\right] + \\frac{1}{6} \\left(\\bar{D}_k \\beta^k - \\alpha K \\right) \\\\\n",
"\n",
" % assign -diff_type=dD 'alpha'\n",
" % srepl \"\\partial_t \\text{trK}\" -> \"\\text{trK_rhs}\"\n",
" \\partial_t K &= \\left[\\beta^k \\vphantom{dupD} \\partial_k K \\right] + \\frac{1}{3} \\alpha K^2 + \\alpha \\bar{A}_{i j}\n",
" \\bar{A}^{i j} - e^{-4 \\phi} \\left(\\bar{D}_i \\bar{D}^i \\alpha + 2 \\bar{D}^i \\alpha \\bar{D}_i \\phi \\right) \\\\\n",
"\n",
" % srepl \"\\bar{\\Lambda}\" -> \"\\text{lambda}\"\n",
" % vardef -diff_type=dD 'lambdaU'\n",
"\n",
" % parse \\Delta^k_{ij} = \\bar{\\Gamma}^k_{ij} - \\hat{\\Gamma}^k_{ij}\n",
" % parse \\Delta^k = \\bar{\\gamma}^{ij} \\Delta^k_{ij}\n",
" % srepl \"\\partial_t \\text{lambda}\" -> \"\\text{Lambdabar_rhs}\"\n",
" \\partial_t \\bar{\\Lambda}^i &= \\left[\\beta^k \\vphantom{dupD} \\partial_k \\bar{\\Lambda}^i - \\partial_k \\beta^i \\bar{\\Lambda}^k \\right] +\n",
" \\bar{\\gamma}^{j k} \\hat{D}_j \\hat{D}_k \\beta^i + \\frac{2}{3} \\Delta^i \\bar{D}_k \\beta^k + \\frac{1}{3} \\bar{D}^i \\bar{D}_k \\beta^k \\\\%\n",
" &\\qquad - 2 \\bar{A}^{i j} \\left(\\partial_j \\alpha - 6 \\alpha \\partial_j \\phi \\right) + 2 \\alpha\n",
" \\bar{A}^{j k} \\Delta^i_{j k} - \\frac{4}{3} \\alpha \\bar{\\gamma}^{i j} \\partial_j K \\\\\n",
"\\end{align}\n",
"\\]"
],
"text/plain": [
"('GammahatUDD',\n",
" 'alpha',\n",
" 'alpha_dDD',\n",
" 'hDD_dD',\n",
" 'phi_cdbarD',\n",
" 'cf_dupD',\n",
" 'epsilonUUU',\n",
" 'gammahatUU',\n",
" 'vetU_cdhatDD',\n",
" 'gammabarDD_dupD',\n",
" 'alpha_dD',\n",
" 'trK_rhs',\n",
" 'gammahatdet_dD_cdbarU',\n",
" 'cf_dD',\n",
" 'trK',\n",
" 'gammahatDD',\n",
" 'vetU_cdhatD',\n",
" 'vetU_cdhatD_dD',\n",
" 'gammabardet',\n",
" 'lambdaU',\n",
" 'alpha_cdbarD_dD',\n",
" 'aUU',\n",
" 'h_rhsDD',\n",
" 'DeltaUDD',\n",
" 'phi',\n",
" 'hDD',\n",
" 'lambdaU_dupD',\n",
" 'deltaDD',\n",
" 'gammabardet_dD',\n",
" 'alpha_cdbarD',\n",
" 'vetU_dD_cdbarU',\n",
" 'trK_dD',\n",
" 'GammabarUDD',\n",
" 'hDD_dupD',\n",
" 'alpha_cdbarU_dD',\n",
" 'Lambdabar_rhsU',\n",
" 'vetU_cdbarU',\n",
" 'vetU_dDD',\n",
" 'gammahatdet_dD_cdbarD',\n",
" 'trK_dupD',\n",
" 'vetU_cdbarD',\n",
" 'gammabarDD',\n",
" 'vetU',\n",
" 'gammahatdet_cdbarD',\n",
" 'cf_rhs',\n",
" 'gammabarDD_dD',\n",
" 'aDD',\n",
" 'gammahatdet',\n",
" 'DeltaU',\n",
" 'gammahatdet_cdbarU',\n",
" 'cf',\n",
" 'vetU_dD',\n",
" 'aUD',\n",
" 'alpha_cdbarU',\n",
" 'gammahatdet_dD',\n",
" 'gammabarUU',\n",
" 'gammabarUU_dD',\n",
" 'vetU_dD_cdbarD',\n",
" 'alpha_cdbarUD')"
]
},
"execution_count": 29,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"%%parse_latex --reset --ignore-warning\n",
"\n",
"\\begin{align}\n",
" % keydef basis [x, y, z]\n",
" % ignore \"\\\\%\", \"\\qquad\"\n",
"\n",
" % vardef -kron 'deltaDD'\n",
" % parse \\hat{\\gamma}_{ij} = \\delta_{ij}\n",
" % assign -diff_type=symbolic -metric 'gammahatDD'\n",
" % vardef -diff_type=dD -symmetry=sym01 'hDD'\n",
" % parse \\bar{\\gamma}_{ij} = h_{ij} + \\hat{\\gamma}_{ij}\n",
" % assign -diff_type=dD -metric 'gammabarDD'\n",
"\n",
" % srepl \"\\beta\" -> \"\\text{vet}\"\n",
" % vardef -diff_type=dD 'vetU'\n",
" %% replace '\\bar{D}_k \\beta^k' with contraction identity\n",
" % srepl \"\\bar{D}_k \\text{vet}^k\" -> \"(\\partial_k \\text{vet}^k + \\frac{\\partial_k \\text{gammahatdet} \\text{vet}^k}{2 \\text{gammahatdet}})\"\n",
"\n",
" % srepl \"\\bar{A}\" -> \"\\text{a}\"\n",
" % vardef -diff_type=dD -symmetry=sym01 'aDD'\n",
" % assign -metric='gammabar' 'aDD'\n",
"\n",
" % srepl \"\\partial_t \\bar{\\gamma}\" -> \"\\text{h_rhs}\"\n",
" \\partial_t \\bar{\\gamma}_{i j} &= \\left[\\beta^k \\vphantom{dupD} \\partial_k \\bar{\\gamma}_{i j} + \\partial_i \\beta^k\n",
" \\bar{\\gamma}_{k j} + \\partial_j \\beta^k \\bar{\\gamma}_{i k} \\right] + \\frac{2}{3} \\bar{\\gamma}_{i j}\n",
" \\left(\\alpha \\bar{A}^k{}_k - \\bar{D}_k \\beta^k\\right) - 2 \\alpha \\bar{A}_{i j} \\\\\n",
"\n",
" % assign -diff_type=dD 'cf'\n",
" %% replace 'phi' with conformal factor cf = W = e^{-2\\phi}\n",
" % srepl \"e^{-4 \\phi}\" -> \"\\text{cf}^2\"\n",
" % srepl \"\\partial_t \\phi = <1..> \\\\\" -> \"\\text{cf_rhs} = -2 \\text{cf} (<1..>) \\\\\"\n",
" % srepl -persist \"\\partial_{<1>} \\phi\" -> \"\\partial_{<1>} \\text{cf} \\frac{-1}{2 \\text{cf}}\"\n",
" % srepl \"\\partial_<1> \\phi\" -> \"\\partial_<1> \\text{cf} \\frac{-1}{2 \\text{cf}}\"\n",
"\n",
" % srepl \"K\" -> \"\\text{trK}\"\n",
" % assign -diff_type=dD 'trK'\n",
" \\partial_t \\phi &= \\left[\\beta^k \\vphantom{dupD} \\partial_k \\phi \\right] + \\frac{1}{6} \\left(\\bar{D}_k \\beta^k - \\alpha K \\right) \\\\\n",
"\n",
" % assign -diff_type=dD 'alpha'\n",
" % srepl \"\\partial_t \\text{trK}\" -> \"\\text{trK_rhs}\"\n",
" \\partial_t K &= \\left[\\beta^k \\vphantom{dupD} \\partial_k K \\right] + \\frac{1}{3} \\alpha K^2 + \\alpha \\bar{A}_{i j}\n",
" \\bar{A}^{i j} - e^{-4 \\phi} \\left(\\bar{D}_i \\bar{D}^i \\alpha + 2 \\bar{D}^i \\alpha \\bar{D}_i \\phi \\right) \\\\\n",
"\n",
" % srepl \"\\bar{\\Lambda}\" -> \"\\text{lambda}\"\n",
" % vardef -diff_type=dD 'lambdaU'\n",
"\n",
" % parse \\Delta^k_{ij} = \\bar{\\Gamma}^k_{ij} - \\hat{\\Gamma}^k_{ij}\n",
" % parse \\Delta^k = \\bar{\\gamma}^{ij} \\Delta^k_{ij}\n",
" % srepl \"\\partial_t \\text{lambda}\" -> \"\\text{Lambdabar_rhs}\"\n",
" \\partial_t \\bar{\\Lambda}^i &= \\left[\\beta^k \\vphantom{dupD} \\partial_k \\bar{\\Lambda}^i - \\partial_k \\beta^i \\bar{\\Lambda}^k \\right] +\n",
" \\bar{\\gamma}^{j k} \\hat{D}_j \\hat{D}_k \\beta^i + \\frac{2}{3} \\Delta^i \\bar{D}_k \\beta^k + \\frac{1}{3} \\bar{D}^i \\bar{D}_k \\beta^k \\\\%\n",
" &\\qquad - 2 \\bar{A}^{i j} \\left(\\partial_j \\alpha - 6 \\alpha \\partial_j \\phi \\right) + 2 \\alpha\n",
" \\bar{A}^{j k} \\Delta^i_{j k} - \\frac{4}{3} \\alpha \\bar{\\gamma}^{i j} \\partial_j K \\\\\n",
"\\end{align}"
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {
"execution": {
"iopub.execute_input": "2021-03-07T17:12:27.941357Z",
"iopub.status.busy": "2021-03-07T17:12:27.905492Z",
"iopub.status.idle": "2021-03-07T17:12:34.473431Z",
"shell.execute_reply": "2021-03-07T17:12:34.473877Z"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Assertion Passed!\n"
]
}
],
"source": [
"assert_equal(Lambdabar_rhsU, Brhs.Lambdabar_rhsU)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"\n",
"## Step 5: Evolution Equation for $\\partial_t \\bar{A}_{ij}$ [ [^](#top) ]\n",
"\n",
"\\begin{align}\n",
" \\partial_t \\bar{A}_{i j} &= \\left[\\beta^k \\partial_k \\bar{A}_{i j} + \\partial_i \\beta^k \\bar{A}_{k j} + \\partial_j \\beta^k \\bar{A}_{i k} \\right] - \\frac{2}{3} \\bar{A}_{i j} \\bar{D}_k \\beta^k - 2 \\alpha \\bar{A}_{i k} \\bar{A}^k{}_j + \\alpha \\bar{A}_{i j} K \\\\\n",
" &\\qquad + e^{-4 \\phi} \\left\\{-2 \\alpha \\bar{D}_i \\bar{D}_j \\phi + 4 \\alpha \\bar{D}_i \\phi \\bar{D}_j \\phi + 4 \\bar{D}_{(i} \\alpha \\bar{D}_{j)} \\phi - \\bar{D}_i \\bar{D}_j \\alpha + \\alpha \\bar{R}_{i j} \\right\\}^{\\text{TF}}\n",
"\\end{align}\n",
"\n",
"**Remark**: We must manually expand the trace-free term $ \\{\\ldots\\}^{TF} $ and the symmetric term $ \\bar{D}_{(i} \\alpha \\bar{D}_{j)} $ since neither notation is currenlty supported.\n",
"\n",
"\\begin{gather}\n",
" \\bar{D}_{(i} \\alpha \\bar{D}_{j)} = \\frac{1}{2} \\left(\\bar{D}_i \\alpha \\bar{D}_j + \\bar{D}_j \\alpha \\bar{D}_i \\right) \\\\\n",
" X_{i j} = -2 \\alpha \\bar{D}_i \\bar{D}_j \\phi + 4 \\alpha \\bar{D}_i \\phi \\bar{D}_j \\phi + 2 \\bar{D}_i \\alpha \\bar{D}_j \\phi + 2 \\bar{D}_j \\alpha \\bar{D}_i \\phi - \\bar{D}_i \\bar{D}_j \\alpha + \\alpha \\bar{R}_{i j} \\\\\n",
" \\hat{X}_{i j} = X_{i j} - \\frac{1}{3} \\bar{\\gamma}_{i j} \\bar{\\gamma}^{k l} X_{k l} \\\\\n",
" \\partial_t \\bar{A}_{i j} = \\left[\\beta^k \\partial_k \\bar{A}_{i j} + \\partial_i \\beta^k \\bar{A}_{k j} + \\partial_j \\beta^k \\bar{A}_{i k} \\right] - \\frac{2}{3} \\bar{A}_{i j} \\bar{D}_k \\beta^k - 2 \\alpha \\bar{A}_{i k} \\bar{A}^k{}_j + \\alpha \\bar{A}_{i j} K + e^{-4 \\phi} \\hat{X}_{i j}\n",
"\\end{gather}"
]
},
{
"cell_type": "code",
"execution_count": 31,
"metadata": {
"execution": {
"iopub.execute_input": "2021-03-07T17:12:34.525074Z",
"iopub.status.busy": "2021-03-07T17:12:34.504146Z",
"iopub.status.idle": "2021-03-07T17:12:37.033680Z",
"shell.execute_reply": "2021-03-07T17:12:37.034188Z"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"ParseError: \\bar{D}_j \\phi + 2 \\bar{D}_j \\alpha \\bar{D}_i \\phi - \\bar{D}_i \\bar{D}_j \\alpha + \\alpha \\bar{R}_{i j} \\\\\n",
" ^\n",
"cannot index undefined tensor 'RbarDD' at position 3255\n"
]
}
],
"source": [
"%%parse_latex --reset --ignore-warning\n",
"\n",
"\\begin{align}\n",
" % keydef basis [x, y, z]\n",
" % ignore \"\\\\%\", \"\\qquad\"\n",
"\n",
" % vardef -kron 'deltaDD'\n",
" % parse \\hat{\\gamma}_{ij} = \\delta_{ij}\n",
" % assign -diff_type=symbolic -metric 'gammahatDD'\n",
" % vardef -diff_type=dD -symmetry=sym01 'hDD'\n",
" % parse \\bar{\\gamma}_{ij} = h_{ij} + \\hat{\\gamma}_{ij}\n",
" % assign -diff_type=dD -metric 'gammabarDD'\n",
"\n",
" % srepl \"\\beta\" -> \"\\text{vet}\"\n",
" % vardef -diff_type=dD 'vetU'\n",
" %% replace '\\bar{D}_k \\beta^k' with contraction identity\n",
" % srepl \"\\bar{D}_k \\text{vet}^k\" -> \"(\\partial_k \\text{vet}^k + \\frac{\\partial_k \\text{gammahatdet} \\text{vet}^k}{2 \\text{gammahatdet}})\"\n",
"\n",
" % srepl \"\\bar{A}\" -> \"\\text{a}\"\n",
" % vardef -diff_type=dD -symmetry=sym01 'aDD'\n",
" % assign -metric='gammabar' 'aDD'\n",
"\n",
" % srepl \"\\partial_t \\bar{\\gamma}\" -> \"\\text{h_rhs}\"\n",
" \\partial_t \\bar{\\gamma}_{i j} &= \\left[\\beta^k \\vphantom{dupD} \\partial_k \\bar{\\gamma}_{i j} + \\partial_i \\beta^k\n",
" \\bar{\\gamma}_{k j} + \\partial_j \\beta^k \\bar{\\gamma}_{i k} \\right] + \\frac{2}{3} \\bar{\\gamma}_{i j}\n",
" \\left(\\alpha \\bar{A}^k{}_k - \\bar{D}_k \\beta^k\\right) - 2 \\alpha \\bar{A}_{i j} \\\\\n",
"\n",
" % assign -diff_type=dD 'cf'\n",
" %% replace 'phi' with conformal factor cf = W = e^{-2\\phi}\n",
" % srepl \"e^{-4 \\phi}\" -> \"\\text{cf}^2\"\n",
" % srepl \"\\partial_t \\phi = <1..> \\\\\" -> \"\\text{cf_rhs} = -2 \\text{cf} (<1..>) \\\\\"\n",
" % srepl -persist \"\\partial_{<1>} \\phi\" -> \"\\partial_{<1>} \\text{cf} \\frac{-1}{2 \\text{cf}}\"\n",
" % srepl \"\\partial_<1> \\phi\" -> \"\\partial_<1> \\text{cf} \\frac{-1}{2 \\text{cf}}\"\n",
"\n",
" % srepl \"K\" -> \"\\text{trK}\"\n",
" % assign -diff_type=dD 'trK'\n",
" \\partial_t \\phi &= \\left[\\beta^k \\vphantom{dupD} \\partial_k \\phi \\right] + \\frac{1}{6} \\left(\\bar{D}_k \\beta^k - \\alpha K \\right) \\\\\n",
"\n",
" % assign -diff_type=dD 'alpha'\n",
" % srepl \"\\partial_t \\text{trK}\" -> \"\\text{trK_rhs}\"\n",
" \\partial_t K &= \\left[\\beta^k \\vphantom{dupD} \\partial_k K \\right] + \\frac{1}{3} \\alpha K^2 + \\alpha \\bar{A}_{i j}\n",
" \\bar{A}^{i j} - e^{-4 \\phi} \\left(\\bar{D}_i \\bar{D}^i \\alpha + 2 \\bar{D}^i \\alpha \\bar{D}_i \\phi \\right) \\\\\n",
"\n",
" % srepl \"\\bar{\\Lambda}\" -> \"\\text{lambda}\"\n",
" % vardef -diff_type=dD 'lambdaU'\n",
"\n",
" % parse \\Delta^k_{ij} = \\bar{\\Gamma}^k_{ij} - \\hat{\\Gamma}^k_{ij}\n",
" % parse \\Delta^k = \\bar{\\gamma}^{ij} \\Delta^k_{ij}\n",
" % srepl \"\\partial_t \\text{lambda}\" -> \"\\text{Lambdabar_rhs}\"\n",
" \\partial_t \\bar{\\Lambda}^i &= \\left[\\beta^k \\vphantom{dupD} \\partial_k \\bar{\\Lambda}^i - \\partial_k \\beta^i \\bar{\\Lambda}^k \\right] +\n",
" \\bar{\\gamma}^{j k} \\hat{D}_j \\hat{D}_k \\beta^i + \\frac{2}{3} \\Delta^i \\bar{D}_k \\beta^k + \\frac{1}{3} \\bar{D}^i \\bar{D}_k \\beta^k \\\\%\n",
" &\\qquad - 2 \\bar{A}^{i j} \\left(\\partial_j \\alpha - 6 \\alpha \\partial_j \\phi \\right) + 2 \\alpha\n",
" \\bar{A}^{j k} \\Delta^i_{j k} - \\frac{4}{3} \\alpha \\bar{\\gamma}^{i j} \\partial_j K \\\\\n",
"\n",
" X_{i j} &= -2 \\alpha \\bar{D}_i \\bar{D}_j \\phi + 4 \\alpha \\bar{D}_i \\phi \\bar{D}_j \\phi + 2 \\bar{D}_i \\alpha\n",
" \\bar{D}_j \\phi + 2 \\bar{D}_j \\alpha \\bar{D}_i \\phi - \\bar{D}_i \\bar{D}_j \\alpha + \\alpha \\bar{R}_{i j} \\\\\n",
" \\hat{X}_{i j} &= X_{i j} - \\frac{1}{3} \\bar{\\gamma}_{i j} \\bar{\\gamma}^{k l} X_{k l} \\\\\n",
" \\partial_t \\bar{A}_{i j} &= \\left[\\beta^k \\partial_k \\bar{A}_{i j} + \\partial_i \\beta^k \\bar{A}_{k j} + \\partial_j \\beta^k\n",
" \\bar{A}_{i k} \\right] - \\frac{2}{3} \\bar{A}_{i j} \\bar{D}_k \\beta^k - 2 \\alpha \\bar{A}_{i k}\n",
" \\bar{A}^k{}_j + \\alpha \\bar{A}_{i j} K + e^{-4 \\phi} \\hat{X}_{i j} \\\\\n",
"\\end{align}"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"First, define the variable `RbarDD` (with symmetry `sym01`) using the `vardef` macro.\n",
"\n",
"```\n",
"% vardef -diff_type=dD -symmetry=sym01 'RbarDD'\n",
"```"
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {
"execution": {
"iopub.execute_input": "2021-03-07T17:12:37.110266Z",
"iopub.status.busy": "2021-03-07T17:12:37.074334Z",
"iopub.status.idle": "2021-03-07T17:12:39.652811Z",
"shell.execute_reply": "2021-03-07T17:12:39.653253Z"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"TensorError: unbalanced free index {'t'} in aDD_dD\n"
]
}
],
"source": [
"%%parse_latex --reset --ignore-warning\n",
"\n",
"\\begin{align}\n",
" % keydef basis [x, y, z]\n",
" % ignore \"\\\\%\", \"\\qquad\"\n",
"\n",
" % vardef -kron 'deltaDD'\n",
" % parse \\hat{\\gamma}_{ij} = \\delta_{ij}\n",
" % assign -diff_type=symbolic -metric 'gammahatDD'\n",
" % vardef -diff_type=dD -symmetry=sym01 'hDD'\n",
" % parse \\bar{\\gamma}_{ij} = h_{ij} + \\hat{\\gamma}_{ij}\n",
" % assign -diff_type=dD -metric 'gammabarDD'\n",
"\n",
" % srepl \"\\beta\" -> \"\\text{vet}\"\n",
" % vardef -diff_type=dD 'vetU'\n",
" %% replace '\\bar{D}_k \\beta^k' with contraction identity\n",
" % srepl \"\\bar{D}_k \\text{vet}^k\" -> \"(\\partial_k \\text{vet}^k + \\frac{\\partial_k \\text{gammahatdet} \\text{vet}^k}{2 \\text{gammahatdet}})\"\n",
"\n",
" % srepl \"\\bar{A}\" -> \"\\text{a}\"\n",
" % vardef -diff_type=dD -symmetry=sym01 'aDD'\n",
" % assign -metric='gammabar' 'aDD'\n",
"\n",
" % srepl \"\\partial_t \\bar{\\gamma}\" -> \"\\text{h_rhs}\"\n",
" \\partial_t \\bar{\\gamma}_{i j} &= \\left[\\beta^k \\vphantom{dupD} \\partial_k \\bar{\\gamma}_{i j} + \\partial_i \\beta^k\n",
" \\bar{\\gamma}_{k j} + \\partial_j \\beta^k \\bar{\\gamma}_{i k} \\right] + \\frac{2}{3} \\bar{\\gamma}_{i j}\n",
" \\left(\\alpha \\bar{A}^k{}_k - \\bar{D}_k \\beta^k\\right) - 2 \\alpha \\bar{A}_{i j} \\\\\n",
"\n",
" % assign -diff_type=dD 'cf'\n",
" %% replace 'phi' with conformal factor cf = W = e^{-2\\phi}\n",
" % srepl \"e^{-4 \\phi}\" -> \"\\text{cf}^2\"\n",
" % srepl \"\\partial_t \\phi = <1..> \\\\\" -> \"\\text{cf_rhs} = -2 \\text{cf} (<1..>) \\\\\"\n",
" % srepl -persist \"\\partial_{<1>} \\phi\" -> \"\\partial_{<1>} \\text{cf} \\frac{-1}{2 \\text{cf}}\"\n",
" % srepl \"\\partial_<1> \\phi\" -> \"\\partial_<1> \\text{cf} \\frac{-1}{2 \\text{cf}}\"\n",
"\n",
" % srepl \"K\" -> \"\\text{trK}\"\n",
" % assign -diff_type=dD 'trK'\n",
" \\partial_t \\phi &= \\left[\\beta^k \\vphantom{dupD} \\partial_k \\phi \\right] + \\frac{1}{6} \\left(\\bar{D}_k \\beta^k - \\alpha K \\right) \\\\\n",
"\n",
" % assign -diff_type=dD 'alpha'\n",
" % srepl \"\\partial_t \\text{trK}\" -> \"\\text{trK_rhs}\"\n",
" \\partial_t K &= \\left[\\beta^k \\vphantom{dupD} \\partial_k K \\right] + \\frac{1}{3} \\alpha K^2 + \\alpha \\bar{A}_{i j}\n",
" \\bar{A}^{i j} - e^{-4 \\phi} \\left(\\bar{D}_i \\bar{D}^i \\alpha + 2 \\bar{D}^i \\alpha \\bar{D}_i \\phi \\right) \\\\\n",
"\n",
" % srepl \"\\bar{\\Lambda}\" -> \"\\text{lambda}\"\n",
" % vardef -diff_type=dD 'lambdaU'\n",
"\n",
" % parse \\Delta^k_{ij} = \\bar{\\Gamma}^k_{ij} - \\hat{\\Gamma}^k_{ij}\n",
" % parse \\Delta^k = \\bar{\\gamma}^{ij} \\Delta^k_{ij}\n",
" % srepl \"\\partial_t \\text{lambda}\" -> \"\\text{Lambdabar_rhs}\"\n",
" \\partial_t \\bar{\\Lambda}^i &= \\left[\\beta^k \\vphantom{dupD} \\partial_k \\bar{\\Lambda}^i - \\partial_k \\beta^i \\bar{\\Lambda}^k \\right] +\n",
" \\bar{\\gamma}^{j k} \\hat{D}_j \\hat{D}_k \\beta^i + \\frac{2}{3} \\Delta^i \\bar{D}_k \\beta^k + \\frac{1}{3} \\bar{D}^i \\bar{D}_k \\beta^k \\\\%\n",
" &\\qquad - 2 \\bar{A}^{i j} \\left(\\partial_j \\alpha - 6 \\alpha \\partial_j \\phi \\right) + 2 \\alpha\n",
" \\bar{A}^{j k} \\Delta^i_{j k} - \\frac{4}{3} \\alpha \\bar{\\gamma}^{i j} \\partial_j K \\\\\n",
"\n",
" % vardef -diff_type=dD -symmetry=sym01 'RbarDD'\n",
" X_{i j} &= -2 \\alpha \\bar{D}_i \\bar{D}_j \\phi + 4 \\alpha \\bar{D}_i \\phi \\bar{D}_j \\phi + 2 \\bar{D}_i \\alpha\n",
" \\bar{D}_j \\phi + 2 \\bar{D}_j \\alpha \\bar{D}_i \\phi - \\bar{D}_i \\bar{D}_j \\alpha + \\alpha \\bar{R}_{i j} \\\\\n",
" \\hat{X}_{i j} &= X_{i j} - \\frac{1}{3} \\bar{\\gamma}_{i j} \\bar{\\gamma}^{k l} X_{k l} \\\\\n",
" \\partial_t \\bar{A}_{i j} &= \\left[\\beta^k \\partial_k \\bar{A}_{i j} + \\partial_i \\beta^k \\bar{A}_{k j} + \\partial_j \\beta^k\n",
" \\bar{A}_{i k} \\right] - \\frac{2}{3} \\bar{A}_{i j} \\bar{D}_k \\beta^k - 2 \\alpha \\bar{A}_{i k}\n",
" \\bar{A}^k{}_j + \\alpha \\bar{A}_{i j} K + e^{-4 \\phi} \\hat{X}_{i j} \\\\\n",
"\\end{align}"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Next, replace the partial derivative $\\partial_t \\bar{A}_{i j}$ on the LHS with the variable name `a_rhs` using the `srepl` macro.\n",
"\n",
"```\n",
"% srepl \"\\partial_t \\bar{A}_{i j}\" -> \"\\text{a_rhs}\"\n",
"```"
]
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {
"execution": {
"iopub.execute_input": "2021-03-07T17:12:39.719059Z",
"iopub.status.busy": "2021-03-07T17:12:39.683048Z",
"iopub.status.idle": "2021-03-07T17:12:42.269437Z",
"shell.execute_reply": "2021-03-07T17:12:42.269941Z"
}
},
"outputs": [
{
"data": {
"text/latex": [
"\\[\n",
"\\begin{align}\n",
" % keydef basis [x, y, z]\n",
" % ignore \"\\\\%\", \"\\qquad\"\n",
"\n",
" % vardef -kron 'deltaDD'\n",
" % parse \\hat{\\gamma}_{ij} = \\delta_{ij}\n",
" % assign -diff_type=symbolic -metric 'gammahatDD'\n",
" % vardef -diff_type=dD -symmetry=sym01 'hDD'\n",
" % parse \\bar{\\gamma}_{ij} = h_{ij} + \\hat{\\gamma}_{ij}\n",
" % assign -diff_type=dD -metric 'gammabarDD'\n",
"\n",
" % srepl \"\\beta\" -> \"\\text{vet}\"\n",
" % vardef -diff_type=dD 'vetU'\n",
" %% replace '\\bar{D}_k \\beta^k' with contraction identity\n",
" % srepl \"\\bar{D}_k \\text{vet}^k\" -> \"(\\partial_k \\text{vet}^k + \\frac{\\partial_k \\text{gammahatdet} \\text{vet}^k}{2 \\text{gammahatdet}})\"\n",
"\n",
" % srepl \"\\bar{A}\" -> \"\\text{a}\"\n",
" % vardef -diff_type=dD -symmetry=sym01 'aDD'\n",
" % assign -metric='gammabar' 'aDD'\n",
"\n",
" % srepl \"\\partial_t \\bar{\\gamma}\" -> \"\\text{h_rhs}\"\n",
" \\partial_t \\bar{\\gamma}_{i j} &= \\left[\\beta^k \\vphantom{dupD} \\partial_k \\bar{\\gamma}_{i j} + \\partial_i \\beta^k\n",
" \\bar{\\gamma}_{k j} + \\partial_j \\beta^k \\bar{\\gamma}_{i k} \\right] + \\frac{2}{3} \\bar{\\gamma}_{i j}\n",
" \\left(\\alpha \\bar{A}^k{}_k - \\bar{D}_k \\beta^k\\right) - 2 \\alpha \\bar{A}_{i j} \\\\\n",
"\n",
" % assign -diff_type=dD 'cf'\n",
" %% replace 'phi' with conformal factor cf = W = e^{-2\\phi}\n",
" % srepl \"e^{-4 \\phi}\" -> \"\\text{cf}^2\"\n",
" % srepl \"\\partial_t \\phi = <1..> \\\\\" -> \"\\text{cf_rhs} = -2 \\text{cf} (<1..>) \\\\\"\n",
" % srepl -persist \"\\partial_{<1>} \\phi\" -> \"\\partial_{<1>} \\text{cf} \\frac{-1}{2 \\text{cf}}\"\n",
" % srepl \"\\partial_<1> \\phi\" -> \"\\partial_<1> \\text{cf} \\frac{-1}{2 \\text{cf}}\"\n",
"\n",
" % srepl \"K\" -> \"\\text{trK}\"\n",
" % assign -diff_type=dD 'trK'\n",
" \\partial_t \\phi &= \\left[\\beta^k \\vphantom{dupD} \\partial_k \\phi \\right] + \\frac{1}{6} \\left(\\bar{D}_k \\beta^k - \\alpha K \\right) \\\\\n",
"\n",
" % assign -diff_type=dD 'alpha'\n",
" % srepl \"\\partial_t \\text{trK}\" -> \"\\text{trK_rhs}\"\n",
" \\partial_t K &= \\left[\\beta^k \\vphantom{dupD} \\partial_k K \\right] + \\frac{1}{3} \\alpha K^2 + \\alpha \\bar{A}_{i j}\n",
" \\bar{A}^{i j} - e^{-4 \\phi} \\left(\\bar{D}_i \\bar{D}^i \\alpha + 2 \\bar{D}^i \\alpha \\bar{D}_i \\phi \\right) \\\\\n",
"\n",
" % srepl \"\\bar{\\Lambda}\" -> \"\\text{lambda}\"\n",
" % vardef -diff_type=dD 'lambdaU'\n",
"\n",
" % parse \\Delta^k_{ij} = \\bar{\\Gamma}^k_{ij} - \\hat{\\Gamma}^k_{ij}\n",
" % parse \\Delta^k = \\bar{\\gamma}^{ij} \\Delta^k_{ij}\n",
" % srepl \"\\partial_t \\text{lambda}\" -> \"\\text{Lambdabar_rhs}\"\n",
" \\partial_t \\bar{\\Lambda}^i &= \\left[\\beta^k \\vphantom{dupD} \\partial_k \\bar{\\Lambda}^i - \\partial_k \\beta^i \\bar{\\Lambda}^k \\right] +\n",
" \\bar{\\gamma}^{j k} \\hat{D}_j \\hat{D}_k \\beta^i + \\frac{2}{3} \\Delta^i \\bar{D}_k \\beta^k + \\frac{1}{3} \\bar{D}^i \\bar{D}_k \\beta^k \\\\%\n",
" &\\qquad - 2 \\bar{A}^{i j} \\left(\\partial_j \\alpha - 6 \\alpha \\partial_j \\phi \\right) + 2 \\alpha\n",
" \\bar{A}^{j k} \\Delta^i_{j k} - \\frac{4}{3} \\alpha \\bar{\\gamma}^{i j} \\partial_j K \\\\\n",
"\n",
" % vardef -diff_type=dD -symmetry=sym01 'RbarDD'\n",
" X_{i j} &= -2 \\alpha \\bar{D}_i \\bar{D}_j \\phi + 4 \\alpha \\bar{D}_i \\phi \\bar{D}_j \\phi + 2 \\bar{D}_i \\alpha\n",
" \\bar{D}_j \\phi + 2 \\bar{D}_j \\alpha \\bar{D}_i \\phi - \\bar{D}_i \\bar{D}_j \\alpha + \\alpha \\bar{R}_{i j} \\\\\n",
" \\hat{X}_{i j} &= X_{i j} - \\frac{1}{3} \\bar{\\gamma}_{i j} \\bar{\\gamma}^{k l} X_{k l} \\\\\n",
" % srepl \"\\partial_t \\text{a}\" -> \"\\text{a_rhs}\"\n",
" \\partial_t \\bar{A}_{i j} &= \\left[\\beta^k \\partial_k \\bar{A}_{i j} + \\partial_i \\beta^k \\bar{A}_{k j} + \\partial_j \\beta^k\n",
" \\bar{A}_{i k} \\right] - \\frac{2}{3} \\bar{A}_{i j} \\bar{D}_k \\beta^k - 2 \\alpha \\bar{A}_{i k}\n",
" \\bar{A}^k{}_j + \\alpha \\bar{A}_{i j} K + e^{-4 \\phi} \\hat{X}_{i j} \\\\\n",
"\\end{align}\n",
"\\]"
],
"text/plain": [
"('GammahatUDD',\n",
" 'alpha',\n",
" 'alpha_dDD',\n",
" 'hDD_dD',\n",
" 'phi_cdbarD',\n",
" 'cf_dupD',\n",
" 'epsilonUUU',\n",
" 'gammahatUU',\n",
" 'vetU_cdhatDD',\n",
" 'gammabarDD_dupD',\n",
" 'alpha_dD',\n",
" 'trK_rhs',\n",
" 'gammahatdet_dD_cdbarU',\n",
" 'cf_dD',\n",
" 'RbarDD',\n",
" 'trK',\n",
" 'gammahatDD',\n",
" 'vetU_cdhatD',\n",
" 'alpha_cdbarDD',\n",
" 'vetU_cdhatD_dD',\n",
" 'gammabardet',\n",
" 'lambdaU',\n",
" 'alpha_cdbarD_dD',\n",
" 'aUU',\n",
" 'h_rhsDD',\n",
" 'DeltaUDD',\n",
" 'phi',\n",
" 'hDD',\n",
" 'lambdaU_dupD',\n",
" 'deltaDD',\n",
" 'gammabardet_dD',\n",
" 'alpha_cdbarD',\n",
" 'vetU_dD_cdbarU',\n",
" 'phi_cdbarDD',\n",
" 'trK_dD',\n",
" 'GammabarUDD',\n",
" 'hDD_dupD',\n",
" 'alpha_cdbarU_dD',\n",
" 'a_rhsDD',\n",
" 'Lambdabar_rhsU',\n",
" 'vetU_cdbarU',\n",
" 'XhatDD',\n",
" 'vetU_dDD',\n",
" 'gammahatdet_dD_cdbarD',\n",
" 'trK_dupD',\n",
" 'vetU_cdbarD',\n",
" 'XDD',\n",
" 'gammabarDD',\n",
" 'vetU',\n",
" 'gammahatdet_cdbarD',\n",
" 'cf_rhs',\n",
" 'gammabarDD_dD',\n",
" 'aDD',\n",
" 'gammahatdet',\n",
" 'DeltaU',\n",
" 'gammahatdet_cdbarU',\n",
" 'cf',\n",
" 'vetU_dD',\n",
" 'aUD',\n",
" 'alpha_cdbarU',\n",
" 'gammahatdet_dD',\n",
" 'phi_cdbarD_dD',\n",
" 'aDD_dD',\n",
" 'gammabarUU',\n",
" 'gammabarUU_dD',\n",
" 'vetU_dD_cdbarD',\n",
" 'alpha_cdbarUD',\n",
" 'cf_dDD')"
]
},
"execution_count": 33,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"%%parse_latex --reset --ignore-warning\n",
"\n",
"\\begin{align}\n",
" % keydef basis [x, y, z]\n",
" % ignore \"\\\\%\", \"\\qquad\"\n",
"\n",
" % vardef -kron 'deltaDD'\n",
" % parse \\hat{\\gamma}_{ij} = \\delta_{ij}\n",
" % assign -diff_type=symbolic -metric 'gammahatDD'\n",
" % vardef -diff_type=dD -symmetry=sym01 'hDD'\n",
" % parse \\bar{\\gamma}_{ij} = h_{ij} + \\hat{\\gamma}_{ij}\n",
" % assign -diff_type=dD -metric 'gammabarDD'\n",
"\n",
" % srepl \"\\beta\" -> \"\\text{vet}\"\n",
" % vardef -diff_type=dD 'vetU'\n",
" %% replace '\\bar{D}_k \\beta^k' with contraction identity\n",
" % srepl \"\\bar{D}_k \\text{vet}^k\" -> \"(\\partial_k \\text{vet}^k + \\frac{\\partial_k \\text{gammahatdet} \\text{vet}^k}{2 \\text{gammahatdet}})\"\n",
"\n",
" % srepl \"\\bar{A}\" -> \"\\text{a}\"\n",
" % vardef -diff_type=dD -symmetry=sym01 'aDD'\n",
" % assign -metric='gammabar' 'aDD'\n",
"\n",
" % srepl \"\\partial_t \\bar{\\gamma}\" -> \"\\text{h_rhs}\"\n",
" \\partial_t \\bar{\\gamma}_{i j} &= \\left[\\beta^k \\vphantom{dupD} \\partial_k \\bar{\\gamma}_{i j} + \\partial_i \\beta^k\n",
" \\bar{\\gamma}_{k j} + \\partial_j \\beta^k \\bar{\\gamma}_{i k} \\right] + \\frac{2}{3} \\bar{\\gamma}_{i j}\n",
" \\left(\\alpha \\bar{A}^k{}_k - \\bar{D}_k \\beta^k\\right) - 2 \\alpha \\bar{A}_{i j} \\\\\n",
"\n",
" % assign -diff_type=dD 'cf'\n",
" %% replace 'phi' with conformal factor cf = W = e^{-2\\phi}\n",
" % srepl \"e^{-4 \\phi}\" -> \"\\text{cf}^2\"\n",
" % srepl \"\\partial_t \\phi = <1..> \\\\\" -> \"\\text{cf_rhs} = -2 \\text{cf} (<1..>) \\\\\"\n",
" % srepl -persist \"\\partial_{<1>} \\phi\" -> \"\\partial_{<1>} \\text{cf} \\frac{-1}{2 \\text{cf}}\"\n",
" % srepl \"\\partial_<1> \\phi\" -> \"\\partial_<1> \\text{cf} \\frac{-1}{2 \\text{cf}}\"\n",
"\n",
" % srepl \"K\" -> \"\\text{trK}\"\n",
" % assign -diff_type=dD 'trK'\n",
" \\partial_t \\phi &= \\left[\\beta^k \\vphantom{dupD} \\partial_k \\phi \\right] + \\frac{1}{6} \\left(\\bar{D}_k \\beta^k - \\alpha K \\right) \\\\\n",
"\n",
" % assign -diff_type=dD 'alpha'\n",
" % srepl \"\\partial_t \\text{trK}\" -> \"\\text{trK_rhs}\"\n",
" \\partial_t K &= \\left[\\beta^k \\vphantom{dupD} \\partial_k K \\right] + \\frac{1}{3} \\alpha K^2 + \\alpha \\bar{A}_{i j}\n",
" \\bar{A}^{i j} - e^{-4 \\phi} \\left(\\bar{D}_i \\bar{D}^i \\alpha + 2 \\bar{D}^i \\alpha \\bar{D}_i \\phi \\right) \\\\\n",
"\n",
" % srepl \"\\bar{\\Lambda}\" -> \"\\text{lambda}\"\n",
" % vardef -diff_type=dD 'lambdaU'\n",
"\n",
" % parse \\Delta^k_{ij} = \\bar{\\Gamma}^k_{ij} - \\hat{\\Gamma}^k_{ij}\n",
" % parse \\Delta^k = \\bar{\\gamma}^{ij} \\Delta^k_{ij}\n",
" % srepl \"\\partial_t \\text{lambda}\" -> \"\\text{Lambdabar_rhs}\"\n",
" \\partial_t \\bar{\\Lambda}^i &= \\left[\\beta^k \\vphantom{dupD} \\partial_k \\bar{\\Lambda}^i - \\partial_k \\beta^i \\bar{\\Lambda}^k \\right] +\n",
" \\bar{\\gamma}^{j k} \\hat{D}_j \\hat{D}_k \\beta^i + \\frac{2}{3} \\Delta^i \\bar{D}_k \\beta^k + \\frac{1}{3} \\bar{D}^i \\bar{D}_k \\beta^k \\\\%\n",
" &\\qquad - 2 \\bar{A}^{i j} \\left(\\partial_j \\alpha - 6 \\alpha \\partial_j \\phi \\right) + 2 \\alpha\n",
" \\bar{A}^{j k} \\Delta^i_{j k} - \\frac{4}{3} \\alpha \\bar{\\gamma}^{i j} \\partial_j K \\\\\n",
"\n",
" % vardef -diff_type=dD -symmetry=sym01 'RbarDD'\n",
" X_{i j} &= -2 \\alpha \\bar{D}_i \\bar{D}_j \\phi + 4 \\alpha \\bar{D}_i \\phi \\bar{D}_j \\phi + 2 \\bar{D}_i \\alpha\n",
" \\bar{D}_j \\phi + 2 \\bar{D}_j \\alpha \\bar{D}_i \\phi - \\bar{D}_i \\bar{D}_j \\alpha + \\alpha \\bar{R}_{i j} \\\\\n",
" \\hat{X}_{i j} &= X_{i j} - \\frac{1}{3} \\bar{\\gamma}_{i j} \\bar{\\gamma}^{k l} X_{k l} \\\\\n",
" % srepl \"\\partial_t \\text{a}\" -> \"\\text{a_rhs}\"\n",
" \\partial_t \\bar{A}_{i j} &= \\left[\\beta^k \\partial_k \\bar{A}_{i j} + \\partial_i \\beta^k \\bar{A}_{k j} + \\partial_j \\beta^k\n",
" \\bar{A}_{i k} \\right] - \\frac{2}{3} \\bar{A}_{i j} \\bar{D}_k \\beta^k - 2 \\alpha \\bar{A}_{i k}\n",
" \\bar{A}^k{}_j + \\alpha \\bar{A}_{i j} K + e^{-4 \\phi} \\hat{X}_{i j} \\\\\n",
"\\end{align}"
]
},
{
"cell_type": "code",
"execution_count": 34,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Assertion Failed!\n"
]
}
],
"source": [
"try:\n",
" assert_equal(a_rhsDD, Brhs.a_rhsDD)\n",
"except AssertionError:\n",
" print('Assertion Failed!')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Finally, enforce upwinding on the contracted partial derivative inside of the bracketed term using the `vphantom` command.\n",
"\n",
"```\n",
"\\partial_t \\bar{A}_{i j} &= \\left[\\beta^k \\vphantom{dupD} \\partial_k ...\n",
"```"
]
},
{
"cell_type": "code",
"execution_count": 35,
"metadata": {},
"outputs": [
{
"data": {
"text/latex": [
"\\[\n",
"\\begin{align}\n",
" % keydef basis [x, y, z]\n",
" % ignore \"\\\\%\", \"\\qquad\"\n",
"\n",
" % vardef -kron 'deltaDD'\n",
" % parse \\hat{\\gamma}_{ij} = \\delta_{ij}\n",
" % assign -diff_type=symbolic -metric 'gammahatDD'\n",
" % vardef -diff_type=dD -symmetry=sym01 'hDD'\n",
" % parse \\bar{\\gamma}_{ij} = h_{ij} + \\hat{\\gamma}_{ij}\n",
" % assign -diff_type=dD -metric 'gammabarDD'\n",
"\n",
" % srepl \"\\beta\" -> \"\\text{vet}\"\n",
" % vardef -diff_type=dD 'vetU'\n",
" %% replace '\\bar{D}_k \\beta^k' with contraction identity\n",
" % srepl \"\\bar{D}_k \\text{vet}^k\" -> \"(\\partial_k \\text{vet}^k + \\frac{\\partial_k \\text{gammahatdet} \\text{vet}^k}{2 \\text{gammahatdet}})\"\n",
"\n",
" % srepl \"\\bar{A}\" -> \"\\text{a}\"\n",
" % vardef -diff_type=dD -symmetry=sym01 'aDD'\n",
" % assign -metric='gammabar' 'aDD'\n",
"\n",
" % srepl \"\\partial_t \\bar{\\gamma}\" -> \"\\text{h_rhs}\"\n",
" \\partial_t \\bar{\\gamma}_{i j} &= \\left[\\beta^k \\vphantom{dupD} \\partial_k \\bar{\\gamma}_{i j} + \\partial_i \\beta^k\n",
" \\bar{\\gamma}_{k j} + \\partial_j \\beta^k \\bar{\\gamma}_{i k} \\right] + \\frac{2}{3} \\bar{\\gamma}_{i j}\n",
" \\left(\\alpha \\bar{A}^k{}_k - \\bar{D}_k \\beta^k\\right) - 2 \\alpha \\bar{A}_{i j} \\\\\n",
"\n",
" % assign -diff_type=dD 'cf'\n",
" %% replace 'phi' with conformal factor cf = W = e^{-2\\phi}\n",
" % srepl \"e^{-4 \\phi}\" -> \"\\text{cf}^2\"\n",
" % srepl \"\\partial_t \\phi = <1..> \\\\\" -> \"\\text{cf_rhs} = -2 \\text{cf} (<1..>) \\\\\"\n",
" % srepl -persist \"\\partial_{<1>} \\phi\" -> \"\\partial_{<1>} \\text{cf} \\frac{-1}{2 \\text{cf}}\"\n",
" % srepl \"\\partial_<1> \\phi\" -> \"\\partial_<1> \\text{cf} \\frac{-1}{2 \\text{cf}}\"\n",
"\n",
" % srepl \"K\" -> \"\\text{trK}\"\n",
" % assign -diff_type=dD 'trK'\n",
" \\partial_t \\phi &= \\left[\\beta^k \\vphantom{dupD} \\partial_k \\phi \\right] + \\frac{1}{6} \\left(\\bar{D}_k \\beta^k - \\alpha K \\right) \\\\\n",
"\n",
" % assign -diff_type=dD 'alpha'\n",
" % srepl \"\\partial_t \\text{trK}\" -> \"\\text{trK_rhs}\"\n",
" \\partial_t K &= \\left[\\beta^k \\vphantom{dupD} \\partial_k K \\right] + \\frac{1}{3} \\alpha K^2 + \\alpha \\bar{A}_{i j}\n",
" \\bar{A}^{i j} - e^{-4 \\phi} \\left(\\bar{D}_i \\bar{D}^i \\alpha + 2 \\bar{D}^i \\alpha \\bar{D}_i \\phi \\right) \\\\\n",
"\n",
" % srepl \"\\bar{\\Lambda}\" -> \"\\text{lambda}\"\n",
" % vardef -diff_type=dD 'lambdaU'\n",
"\n",
" % parse \\Delta^k_{ij} = \\bar{\\Gamma}^k_{ij} - \\hat{\\Gamma}^k_{ij}\n",
" % parse \\Delta^k = \\bar{\\gamma}^{ij} \\Delta^k_{ij}\n",
" % srepl \"\\partial_t \\text{lambda}\" -> \"\\text{Lambdabar_rhs}\"\n",
" \\partial_t \\bar{\\Lambda}^i &= \\left[\\beta^k \\vphantom{dupD} \\partial_k \\bar{\\Lambda}^i - \\partial_k \\beta^i \\bar{\\Lambda}^k \\right] +\n",
" \\bar{\\gamma}^{j k} \\hat{D}_j \\hat{D}_k \\beta^i + \\frac{2}{3} \\Delta^i \\bar{D}_k \\beta^k + \\frac{1}{3} \\bar{D}^i \\bar{D}_k \\beta^k \\\\%\n",
" &\\qquad - 2 \\bar{A}^{i j} \\left(\\partial_j \\alpha - 6 \\alpha \\partial_j \\phi \\right) + 2 \\alpha\n",
" \\bar{A}^{j k} \\Delta^i_{j k} - \\frac{4}{3} \\alpha \\bar{\\gamma}^{i j} \\partial_j K \\\\\n",
"\n",
" % vardef -diff_type=dD -symmetry=sym01 'RbarDD'\n",
" X_{i j} &= -2 \\alpha \\bar{D}_i \\bar{D}_j \\phi + 4 \\alpha \\bar{D}_i \\phi \\bar{D}_j \\phi + 2 \\bar{D}_i \\alpha\n",
" \\bar{D}_j \\phi + 2 \\bar{D}_j \\alpha \\bar{D}_i \\phi - \\bar{D}_i \\bar{D}_j \\alpha + \\alpha \\bar{R}_{i j} \\\\\n",
" \\hat{X}_{i j} &= X_{i j} - \\frac{1}{3} \\bar{\\gamma}_{i j} \\bar{\\gamma}^{k l} X_{k l} \\\\\n",
" % srepl \"\\partial_t \\text{a}\" -> \"\\text{a_rhs}\"\n",
" \\partial_t \\bar{A}_{i j} &= \\left[\\beta^k \\vphantom{dupD} \\partial_k \\bar{A}_{i j} + \\partial_i \\beta^k \\bar{A}_{k j} + \\partial_j \\beta^k\n",
" \\bar{A}_{i k} \\right] - \\frac{2}{3} \\bar{A}_{i j} \\bar{D}_k \\beta^k - 2 \\alpha \\bar{A}_{i k}\n",
" \\bar{A}^k{}_j + \\alpha \\bar{A}_{i j} K + e^{-4 \\phi} \\hat{X}_{i j} \\\\\n",
"\\end{align}\n",
"\\]"
],
"text/plain": [
"('GammahatUDD',\n",
" 'alpha',\n",
" 'alpha_dDD',\n",
" 'hDD_dD',\n",
" 'phi_cdbarD',\n",
" 'cf_dupD',\n",
" 'epsilonUUU',\n",
" 'gammahatUU',\n",
" 'vetU_cdhatDD',\n",
" 'gammabarDD_dupD',\n",
" 'alpha_dD',\n",
" 'trK_rhs',\n",
" 'gammahatdet_dD_cdbarU',\n",
" 'cf_dD',\n",
" 'RbarDD',\n",
" 'trK',\n",
" 'gammahatDD',\n",
" 'vetU_cdhatD',\n",
" 'alpha_cdbarDD',\n",
" 'vetU_cdhatD_dD',\n",
" 'gammabardet',\n",
" 'lambdaU',\n",
" 'alpha_cdbarD_dD',\n",
" 'aUU',\n",
" 'h_rhsDD',\n",
" 'DeltaUDD',\n",
" 'phi',\n",
" 'hDD',\n",
" 'lambdaU_dupD',\n",
" 'deltaDD',\n",
" 'gammabardet_dD',\n",
" 'alpha_cdbarD',\n",
" 'vetU_dD_cdbarU',\n",
" 'phi_cdbarDD',\n",
" 'trK_dD',\n",
" 'GammabarUDD',\n",
" 'hDD_dupD',\n",
" 'alpha_cdbarU_dD',\n",
" 'a_rhsDD',\n",
" 'Lambdabar_rhsU',\n",
" 'vetU_cdbarU',\n",
" 'XhatDD',\n",
" 'vetU_dDD',\n",
" 'gammahatdet_dD_cdbarD',\n",
" 'trK_dupD',\n",
" 'vetU_cdbarD',\n",
" 'aDD_dupD',\n",
" 'XDD',\n",
" 'gammabarDD',\n",
" 'vetU',\n",
" 'gammahatdet_cdbarD',\n",
" 'cf_rhs',\n",
" 'gammabarDD_dD',\n",
" 'aDD',\n",
" 'gammahatdet',\n",
" 'DeltaU',\n",
" 'gammahatdet_cdbarU',\n",
" 'cf',\n",
" 'vetU_dD',\n",
" 'aUD',\n",
" 'alpha_cdbarU',\n",
" 'gammahatdet_dD',\n",
" 'phi_cdbarD_dD',\n",
" 'gammabarUU',\n",
" 'gammabarUU_dD',\n",
" 'vetU_dD_cdbarD',\n",
" 'alpha_cdbarUD',\n",
" 'cf_dDD')"
]
},
"execution_count": 35,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"%%parse_latex --reset --ignore-warning\n",
"\n",
"\\begin{align}\n",
" % keydef basis [x, y, z]\n",
" % ignore \"\\\\%\", \"\\qquad\"\n",
"\n",
" % vardef -kron 'deltaDD'\n",
" % parse \\hat{\\gamma}_{ij} = \\delta_{ij}\n",
" % assign -diff_type=symbolic -metric 'gammahatDD'\n",
" % vardef -diff_type=dD -symmetry=sym01 'hDD'\n",
" % parse \\bar{\\gamma}_{ij} = h_{ij} + \\hat{\\gamma}_{ij}\n",
" % assign -diff_type=dD -metric 'gammabarDD'\n",
"\n",
" % srepl \"\\beta\" -> \"\\text{vet}\"\n",
" % vardef -diff_type=dD 'vetU'\n",
" %% replace '\\bar{D}_k \\beta^k' with contraction identity\n",
" % srepl \"\\bar{D}_k \\text{vet}^k\" -> \"(\\partial_k \\text{vet}^k + \\frac{\\partial_k \\text{gammahatdet} \\text{vet}^k}{2 \\text{gammahatdet}})\"\n",
"\n",
" % srepl \"\\bar{A}\" -> \"\\text{a}\"\n",
" % vardef -diff_type=dD -symmetry=sym01 'aDD'\n",
" % assign -metric='gammabar' 'aDD'\n",
"\n",
" % srepl \"\\partial_t \\bar{\\gamma}\" -> \"\\text{h_rhs}\"\n",
" \\partial_t \\bar{\\gamma}_{i j} &= \\left[\\beta^k \\vphantom{dupD} \\partial_k \\bar{\\gamma}_{i j} + \\partial_i \\beta^k\n",
" \\bar{\\gamma}_{k j} + \\partial_j \\beta^k \\bar{\\gamma}_{i k} \\right] + \\frac{2}{3} \\bar{\\gamma}_{i j}\n",
" \\left(\\alpha \\bar{A}^k{}_k - \\bar{D}_k \\beta^k\\right) - 2 \\alpha \\bar{A}_{i j} \\\\\n",
"\n",
" % assign -diff_type=dD 'cf'\n",
" %% replace 'phi' with conformal factor cf = W = e^{-2\\phi}\n",
" % srepl \"e^{-4 \\phi}\" -> \"\\text{cf}^2\"\n",
" % srepl \"\\partial_t \\phi = <1..> \\\\\" -> \"\\text{cf_rhs} = -2 \\text{cf} (<1..>) \\\\\"\n",
" % srepl -persist \"\\partial_{<1>} \\phi\" -> \"\\partial_{<1>} \\text{cf} \\frac{-1}{2 \\text{cf}}\"\n",
" % srepl \"\\partial_<1> \\phi\" -> \"\\partial_<1> \\text{cf} \\frac{-1}{2 \\text{cf}}\"\n",
"\n",
" % srepl \"K\" -> \"\\text{trK}\"\n",
" % assign -diff_type=dD 'trK'\n",
" \\partial_t \\phi &= \\left[\\beta^k \\vphantom{dupD} \\partial_k \\phi \\right] + \\frac{1}{6} \\left(\\bar{D}_k \\beta^k - \\alpha K \\right) \\\\\n",
"\n",
" % assign -diff_type=dD 'alpha'\n",
" % srepl \"\\partial_t \\text{trK}\" -> \"\\text{trK_rhs}\"\n",
" \\partial_t K &= \\left[\\beta^k \\vphantom{dupD} \\partial_k K \\right] + \\frac{1}{3} \\alpha K^2 + \\alpha \\bar{A}_{i j}\n",
" \\bar{A}^{i j} - e^{-4 \\phi} \\left(\\bar{D}_i \\bar{D}^i \\alpha + 2 \\bar{D}^i \\alpha \\bar{D}_i \\phi \\right) \\\\\n",
"\n",
" % srepl \"\\bar{\\Lambda}\" -> \"\\text{lambda}\"\n",
" % vardef -diff_type=dD 'lambdaU'\n",
"\n",
" % parse \\Delta^k_{ij} = \\bar{\\Gamma}^k_{ij} - \\hat{\\Gamma}^k_{ij}\n",
" % parse \\Delta^k = \\bar{\\gamma}^{ij} \\Delta^k_{ij}\n",
" % srepl \"\\partial_t \\text{lambda}\" -> \"\\text{Lambdabar_rhs}\"\n",
" \\partial_t \\bar{\\Lambda}^i &= \\left[\\beta^k \\vphantom{dupD} \\partial_k \\bar{\\Lambda}^i - \\partial_k \\beta^i \\bar{\\Lambda}^k \\right] +\n",
" \\bar{\\gamma}^{j k} \\hat{D}_j \\hat{D}_k \\beta^i + \\frac{2}{3} \\Delta^i \\bar{D}_k \\beta^k + \\frac{1}{3} \\bar{D}^i \\bar{D}_k \\beta^k \\\\%\n",
" &\\qquad - 2 \\bar{A}^{i j} \\left(\\partial_j \\alpha - 6 \\alpha \\partial_j \\phi \\right) + 2 \\alpha\n",
" \\bar{A}^{j k} \\Delta^i_{j k} - \\frac{4}{3} \\alpha \\bar{\\gamma}^{i j} \\partial_j K \\\\\n",
"\n",
" % vardef -diff_type=dD -symmetry=sym01 'RbarDD'\n",
" X_{i j} &= -2 \\alpha \\bar{D}_i \\bar{D}_j \\phi + 4 \\alpha \\bar{D}_i \\phi \\bar{D}_j \\phi + 2 \\bar{D}_i \\alpha\n",
" \\bar{D}_j \\phi + 2 \\bar{D}_j \\alpha \\bar{D}_i \\phi - \\bar{D}_i \\bar{D}_j \\alpha + \\alpha \\bar{R}_{i j} \\\\\n",
" \\hat{X}_{i j} &= X_{i j} - \\frac{1}{3} \\bar{\\gamma}_{i j} \\bar{\\gamma}^{k l} X_{k l} \\\\\n",
" % srepl \"\\partial_t \\text{a}\" -> \"\\text{a_rhs}\"\n",
" \\partial_t \\bar{A}_{i j} &= \\left[\\beta^k \\vphantom{dupD} \\partial_k \\bar{A}_{i j} + \\partial_i \\beta^k \\bar{A}_{k j} + \\partial_j \\beta^k\n",
" \\bar{A}_{i k} \\right] - \\frac{2}{3} \\bar{A}_{i j} \\bar{D}_k \\beta^k - 2 \\alpha \\bar{A}_{i k}\n",
" \\bar{A}^k{}_j + \\alpha \\bar{A}_{i j} K + e^{-4 \\phi} \\hat{X}_{i j} \\\\\n",
"\\end{align}"
]
},
{
"cell_type": "code",
"execution_count": 36,
"metadata": {
"execution": {
"iopub.execute_input": "2021-03-07T17:12:42.344043Z",
"iopub.status.busy": "2021-03-07T17:12:42.308253Z",
"iopub.status.idle": "2021-03-07T17:13:04.646590Z",
"shell.execute_reply": "2021-03-07T17:13:04.647036Z"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Assertion Passed!\n"
]
}
],
"source": [
"assert_equal(a_rhsDD, Brhs.a_rhsDD)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"\n",
"## Step 6: Gauge Evolution Equation(s) [ [^](#top) ]\n",
"\n",
"\\begin{align}\n",
" \\partial_t \\alpha &= \\left[\\beta^k \\partial_k \\alpha \\right] - 2 \\alpha K \\\\\n",
" \\partial_t \\beta^i &= \\left[\\beta^k \\bar{D}_k \\beta^i \\right] + B^i \\\\\n",
" \\partial_t B^i &= \\left[\\beta^k \\bar{D}_k B^i \\right] + \\frac{3}{4} \\left(\\partial_t \\bar{\\Lambda}^i - \\left[\\beta^k \\bar{D}_k \\bar{\\Lambda}^i \\right] \\right) - \\eta B^i\n",
"\\end{align}"
]
},
{
"cell_type": "code",
"execution_count": 37,
"metadata": {
"execution": {
"iopub.execute_input": "2021-03-07T17:13:04.718463Z",
"iopub.status.busy": "2021-03-07T17:13:04.677336Z",
"iopub.status.idle": "2021-03-07T17:13:07.363029Z",
"shell.execute_reply": "2021-03-07T17:13:07.363477Z"
}
},
"outputs": [
{
"data": {
"text/latex": [
"\\[\n",
"\\begin{align}\n",
" % keydef basis [x, y, z]\n",
" % ignore \"\\\\%\", \"\\qquad\"\n",
"\n",
" % vardef -kron 'deltaDD'\n",
" % parse \\hat{\\gamma}_{ij} = \\delta_{ij}\n",
" % assign -diff_type=symbolic -metric 'gammahatDD'\n",
" % vardef -diff_type=dD -symmetry=sym01 'hDD'\n",
" % parse \\bar{\\gamma}_{ij} = h_{ij} + \\hat{\\gamma}_{ij}\n",
" % assign -diff_type=dD -metric 'gammabarDD'\n",
"\n",
" % srepl \"\\beta\" -> \"\\text{vet}\"\n",
" % vardef -diff_type=dD 'vetU'\n",
" %% replace '\\bar{D}_k \\beta^k' with contraction identity\n",
" % srepl \"\\bar{D}_k \\text{vet}^k\" -> \"(\\partial_k \\text{vet}^k + \\frac{\\partial_k \\text{gammahatdet} \\text{vet}^k}{2 \\text{gammahatdet}})\"\n",
"\n",
" % srepl \"\\bar{A}\" -> \"\\text{a}\"\n",
" % vardef -diff_type=dD -symmetry=sym01 'aDD'\n",
" % assign -metric='gammabar' 'aDD'\n",
"\n",
" % srepl \"\\partial_t \\bar{\\gamma}\" -> \"\\text{h_rhs}\"\n",
" \\partial_t \\bar{\\gamma}_{i j} &= \\left[\\beta^k \\vphantom{dupD} \\partial_k \\bar{\\gamma}_{i j} + \\partial_i \\beta^k\n",
" \\bar{\\gamma}_{k j} + \\partial_j \\beta^k \\bar{\\gamma}_{i k} \\right] + \\frac{2}{3} \\bar{\\gamma}_{i j}\n",
" \\left(\\alpha \\bar{A}^k{}_k - \\bar{D}_k \\beta^k\\right) - 2 \\alpha \\bar{A}_{i j} \\\\\n",
"\n",
" % assign -diff_type=dD 'cf'\n",
" %% replace 'phi' with conformal factor cf = W = e^{-2\\phi}\n",
" % srepl \"e^{-4 \\phi}\" -> \"\\text{cf}^2\"\n",
" % srepl \"\\partial_t \\phi = <1..> \\\\\" -> \"\\text{cf_rhs} = -2 \\text{cf} (<1..>) \\\\\"\n",
" % srepl -persist \"\\partial_{<1>} \\phi\" -> \"\\partial_{<1>} \\text{cf} \\frac{-1}{2 \\text{cf}}\"\n",
" % srepl \"\\partial_<1> \\phi\" -> \"\\partial_<1> \\text{cf} \\frac{-1}{2 \\text{cf}}\"\n",
"\n",
" % srepl \"K\" -> \"\\text{trK}\"\n",
" % assign -diff_type=dD 'trK'\n",
" \\partial_t \\phi &= \\left[\\beta^k \\vphantom{dupD} \\partial_k \\phi \\right] + \\frac{1}{6} \\left(\\bar{D}_k \\beta^k - \\alpha K \\right) \\\\\n",
"\n",
" % assign -diff_type=dD 'alpha'\n",
" % srepl \"\\partial_t \\text{trK}\" -> \"\\text{trK_rhs}\"\n",
" \\partial_t K &= \\left[\\beta^k \\vphantom{dupD} \\partial_k K \\right] + \\frac{1}{3} \\alpha K^2 + \\alpha \\bar{A}_{i j}\n",
" \\bar{A}^{i j} - e^{-4 \\phi} \\left(\\bar{D}_i \\bar{D}^i \\alpha + 2 \\bar{D}^i \\alpha \\bar{D}_i \\phi \\right) \\\\\n",
"\n",
" % srepl \"\\bar{\\Lambda}\" -> \"\\text{lambda}\"\n",
" % vardef -diff_type=dD 'lambdaU'\n",
"\n",
" % parse \\Delta^k_{ij} = \\bar{\\Gamma}^k_{ij} - \\hat{\\Gamma}^k_{ij}\n",
" % parse \\Delta^k = \\bar{\\gamma}^{ij} \\Delta^k_{ij}\n",
" % srepl \"\\partial_t \\text{lambda}\" -> \"\\text{Lambdabar_rhs}\"\n",
" \\partial_t \\bar{\\Lambda}^i &= \\left[\\beta^k \\vphantom{dupD} \\partial_k \\bar{\\Lambda}^i - \\partial_k \\beta^i \\bar{\\Lambda}^k \\right] +\n",
" \\bar{\\gamma}^{j k} \\hat{D}_j \\hat{D}_k \\beta^i + \\frac{2}{3} \\Delta^i \\bar{D}_k \\beta^k + \\frac{1}{3} \\bar{D}^i \\bar{D}_k \\beta^k \\\\%\n",
" &\\qquad - 2 \\bar{A}^{i j} \\left(\\partial_j \\alpha - 6 \\alpha \\partial_j \\phi \\right) + 2 \\alpha\n",
" \\bar{A}^{j k} \\Delta^i_{j k} - \\frac{4}{3} \\alpha \\bar{\\gamma}^{i j} \\partial_j K \\\\\n",
"\n",
" % vardef -diff_type=dD -symmetry=sym01 'RbarDD'\n",
" X_{i j} &= -2 \\alpha \\bar{D}_i \\bar{D}_j \\phi + 4 \\alpha \\bar{D}_i \\phi \\bar{D}_j \\phi + 2 \\bar{D}_i \\alpha\n",
" \\bar{D}_j \\phi + 2 \\bar{D}_j \\alpha \\bar{D}_i \\phi - \\bar{D}_i \\bar{D}_j \\alpha + \\alpha \\bar{R}_{i j} \\\\\n",
" \\hat{X}_{i j} &= X_{i j} - \\frac{1}{3} \\bar{\\gamma}_{i j} \\bar{\\gamma}^{k l} X_{k l} \\\\\n",
" % srepl \"\\partial_t \\text{a}\" -> \"\\text{a_rhs}\"\n",
" \\partial_t \\bar{A}_{i j} &= \\left[\\beta^k \\vphantom{dupD} \\partial_k \\bar{A}_{i j} + \\partial_i \\beta^k \\bar{A}_{k j} + \\partial_j \\beta^k\n",
" \\bar{A}_{i k} \\right] - \\frac{2}{3} \\bar{A}_{i j} \\bar{D}_k \\beta^k - 2 \\alpha \\bar{A}_{i k}\n",
" \\bar{A}^k{}_j + \\alpha \\bar{A}_{i j} K + e^{-4 \\phi} \\hat{X}_{i j} \\\\\n",
"\n",
" % srepl \"\\partial_t \\alpha\" -> \"\\text{alpha_rhs}\"\n",
" \\partial_t \\alpha &= \\left[\\beta^k \\vphantom{dupD} \\partial_k \\alpha \\right] - 2 \\alpha K \\\\\n",
"\n",
" % srepl \"B\" -> \"\\text{bet}\"\n",
" % vardef -diff_type=dD 'betU'\n",
" % srepl \"\\partial_t \\text{vet}\" -> \"\\text{vet_rhs}\"\n",
" \\partial_t \\beta^i &= \\left[\\beta^j \\vphantom{dupD} \\bar{D}_j \\beta^i \\right] + B^i \\\\\n",
"\n",
" % vardef -const 'eta'\n",
" % srepl \"\\partial_t \\text{bet}\" -> \"\\text{bet_rhs}\"\n",
" \\partial_t B^i &= \\left[\\beta^j \\vphantom{dupD} \\bar{D}_j B^i \\right] + \\frac{3}{4} \\left(\\partial_t \\bar{\\Lambda}^i - \\left[\\beta^j \\vphantom{dupD} \\bar{D}_j \\bar{\\Lambda}^i \\right] \\right) - \\eta B^i \\\\\n",
"\\end{align}\n",
"\\]"
],
"text/plain": [
"('phi_cdbarD',\n",
" 'cf_dupD',\n",
" 'betU_dupD',\n",
" 'trK_rhs',\n",
" 'gammahatDD',\n",
" 'lambdaU',\n",
" 'h_rhsDD',\n",
" 'phi_cdbarDD',\n",
" 'vetU_dDD',\n",
" 'alpha_rhs',\n",
" 'trK_dupD',\n",
" 'vet_rhsU',\n",
" 'XDD',\n",
" 'gammabarDD',\n",
" 'DeltaU',\n",
" 'betU',\n",
" 'cf',\n",
" 'alpha_cdbarU',\n",
" 'aUD',\n",
" 'gammahatdet_dD',\n",
" 'GammahatUDD',\n",
" 'hDD_dD',\n",
" 'RbarDD',\n",
" 'eta',\n",
" 'vetU_cdhatD_dD',\n",
" 'gammabardet',\n",
" 'aUU',\n",
" 'phi',\n",
" 'trK_dD',\n",
" 'hDD_dupD',\n",
" 'alpha_cdbarU_dD',\n",
" 'alpha_dupD',\n",
" 'XhatDD',\n",
" 'gammahatdet_dD_cdbarD',\n",
" 'vetU_cdbarD',\n",
" 'gammahatdet_cdbarD',\n",
" 'gammabarDD_dD',\n",
" 'gammahatdet',\n",
" 'gammahatdet_cdbarU',\n",
" 'vetU_dD',\n",
" 'phi_cdbarD_dD',\n",
" 'gammabarDD_dupD',\n",
" 'alpha_dD',\n",
" 'gammahatdet_dD_cdbarU',\n",
" 'cf_dD',\n",
" 'trK',\n",
" 'alpha_cdbarDD',\n",
" 'vetU_cdhatD',\n",
" 'DeltaUDD',\n",
" 'vetU_dupD',\n",
" 'lambdaU_cdbarD',\n",
" 'a_rhsDD',\n",
" 'Lambdabar_rhsU',\n",
" 'vetU_cdbarU',\n",
" 'cf_rhs',\n",
" 'gammabarUU',\n",
" 'alpha_cdbarUD',\n",
" 'alpha',\n",
" 'alpha_dDD',\n",
" 'epsilonUUU',\n",
" 'gammahatUU',\n",
" 'vetU_cdhatDD',\n",
" 'bet_rhsU',\n",
" 'alpha_cdbarD_dD',\n",
" 'hDD',\n",
" 'lambdaU_dupD',\n",
" 'deltaDD',\n",
" 'gammabardet_dD',\n",
" 'alpha_cdbarD',\n",
" 'vetU_dD_cdbarU',\n",
" 'GammabarUDD',\n",
" 'vetU',\n",
" 'betU_cdbarD',\n",
" 'aDD',\n",
" 'gammabarUU_dD',\n",
" 'vetU_dD_cdbarD',\n",
" 'aDD_dupD',\n",
" 'cf_dDD')"
]
},
"execution_count": 37,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"%%parse_latex --reset --ignore-warning\n",
"\n",
"\\begin{align}\n",
" % keydef basis [x, y, z]\n",
" % ignore \"\\\\%\", \"\\qquad\"\n",
"\n",
" % vardef -kron 'deltaDD'\n",
" % parse \\hat{\\gamma}_{ij} = \\delta_{ij}\n",
" % assign -diff_type=symbolic -metric 'gammahatDD'\n",
" % vardef -diff_type=dD -symmetry=sym01 'hDD'\n",
" % parse \\bar{\\gamma}_{ij} = h_{ij} + \\hat{\\gamma}_{ij}\n",
" % assign -diff_type=dD -metric 'gammabarDD'\n",
"\n",
" % srepl \"\\beta\" -> \"\\text{vet}\"\n",
" % vardef -diff_type=dD 'vetU'\n",
" %% replace '\\bar{D}_k \\beta^k' with contraction identity\n",
" % srepl \"\\bar{D}_k \\text{vet}^k\" -> \"(\\partial_k \\text{vet}^k + \\frac{\\partial_k \\text{gammahatdet} \\text{vet}^k}{2 \\text{gammahatdet}})\"\n",
"\n",
" % srepl \"\\bar{A}\" -> \"\\text{a}\"\n",
" % vardef -diff_type=dD -symmetry=sym01 'aDD'\n",
" % assign -metric='gammabar' 'aDD'\n",
"\n",
" % srepl \"\\partial_t \\bar{\\gamma}\" -> \"\\text{h_rhs}\"\n",
" \\partial_t \\bar{\\gamma}_{i j} &= \\left[\\beta^k \\vphantom{dupD} \\partial_k \\bar{\\gamma}_{i j} + \\partial_i \\beta^k\n",
" \\bar{\\gamma}_{k j} + \\partial_j \\beta^k \\bar{\\gamma}_{i k} \\right] + \\frac{2}{3} \\bar{\\gamma}_{i j}\n",
" \\left(\\alpha \\bar{A}^k{}_k - \\bar{D}_k \\beta^k\\right) - 2 \\alpha \\bar{A}_{i j} \\\\\n",
"\n",
" % assign -diff_type=dD 'cf'\n",
" %% replace 'phi' with conformal factor cf = W = e^{-2\\phi}\n",
" % srepl \"e^{-4 \\phi}\" -> \"\\text{cf}^2\"\n",
" % srepl \"\\partial_t \\phi = <1..> \\\\\" -> \"\\text{cf_rhs} = -2 \\text{cf} (<1..>) \\\\\"\n",
" % srepl -persist \"\\partial_{<1>} \\phi\" -> \"\\partial_{<1>} \\text{cf} \\frac{-1}{2 \\text{cf}}\"\n",
" % srepl \"\\partial_<1> \\phi\" -> \"\\partial_<1> \\text{cf} \\frac{-1}{2 \\text{cf}}\"\n",
"\n",
" % srepl \"K\" -> \"\\text{trK}\"\n",
" % assign -diff_type=dD 'trK'\n",
" \\partial_t \\phi &= \\left[\\beta^k \\vphantom{dupD} \\partial_k \\phi \\right] + \\frac{1}{6} \\left(\\bar{D}_k \\beta^k - \\alpha K \\right) \\\\\n",
"\n",
" % assign -diff_type=dD 'alpha'\n",
" % srepl \"\\partial_t \\text{trK}\" -> \"\\text{trK_rhs}\"\n",
" \\partial_t K &= \\left[\\beta^k \\vphantom{dupD} \\partial_k K \\right] + \\frac{1}{3} \\alpha K^2 + \\alpha \\bar{A}_{i j}\n",
" \\bar{A}^{i j} - e^{-4 \\phi} \\left(\\bar{D}_i \\bar{D}^i \\alpha + 2 \\bar{D}^i \\alpha \\bar{D}_i \\phi \\right) \\\\\n",
"\n",
" % srepl \"\\bar{\\Lambda}\" -> \"\\text{lambda}\"\n",
" % vardef -diff_type=dD 'lambdaU'\n",
"\n",
" % parse \\Delta^k_{ij} = \\bar{\\Gamma}^k_{ij} - \\hat{\\Gamma}^k_{ij}\n",
" % parse \\Delta^k = \\bar{\\gamma}^{ij} \\Delta^k_{ij}\n",
" % srepl \"\\partial_t \\text{lambda}\" -> \"\\text{Lambdabar_rhs}\"\n",
" \\partial_t \\bar{\\Lambda}^i &= \\left[\\beta^k \\vphantom{dupD} \\partial_k \\bar{\\Lambda}^i - \\partial_k \\beta^i \\bar{\\Lambda}^k \\right] +\n",
" \\bar{\\gamma}^{j k} \\hat{D}_j \\hat{D}_k \\beta^i + \\frac{2}{3} \\Delta^i \\bar{D}_k \\beta^k + \\frac{1}{3} \\bar{D}^i \\bar{D}_k \\beta^k \\\\%\n",
" &\\qquad - 2 \\bar{A}^{i j} \\left(\\partial_j \\alpha - 6 \\alpha \\partial_j \\phi \\right) + 2 \\alpha\n",
" \\bar{A}^{j k} \\Delta^i_{j k} - \\frac{4}{3} \\alpha \\bar{\\gamma}^{i j} \\partial_j K \\\\\n",
"\n",
" % vardef -diff_type=dD -symmetry=sym01 'RbarDD'\n",
" X_{i j} &= -2 \\alpha \\bar{D}_i \\bar{D}_j \\phi + 4 \\alpha \\bar{D}_i \\phi \\bar{D}_j \\phi + 2 \\bar{D}_i \\alpha\n",
" \\bar{D}_j \\phi + 2 \\bar{D}_j \\alpha \\bar{D}_i \\phi - \\bar{D}_i \\bar{D}_j \\alpha + \\alpha \\bar{R}_{i j} \\\\\n",
" \\hat{X}_{i j} &= X_{i j} - \\frac{1}{3} \\bar{\\gamma}_{i j} \\bar{\\gamma}^{k l} X_{k l} \\\\\n",
" % srepl \"\\partial_t \\text{a}\" -> \"\\text{a_rhs}\"\n",
" \\partial_t \\bar{A}_{i j} &= \\left[\\beta^k \\vphantom{dupD} \\partial_k \\bar{A}_{i j} + \\partial_i \\beta^k \\bar{A}_{k j} + \\partial_j \\beta^k\n",
" \\bar{A}_{i k} \\right] - \\frac{2}{3} \\bar{A}_{i j} \\bar{D}_k \\beta^k - 2 \\alpha \\bar{A}_{i k}\n",
" \\bar{A}^k{}_j + \\alpha \\bar{A}_{i j} K + e^{-4 \\phi} \\hat{X}_{i j} \\\\\n",
"\n",
" % srepl \"\\partial_t \\alpha\" -> \"\\text{alpha_rhs}\"\n",
" \\partial_t \\alpha &= \\left[\\beta^k \\vphantom{dupD} \\partial_k \\alpha \\right] - 2 \\alpha K \\\\\n",
"\n",
" % srepl \"B\" -> \"\\text{bet}\"\n",
" % vardef -diff_type=dD 'betU'\n",
" % srepl \"\\partial_t \\text{vet}\" -> \"\\text{vet_rhs}\"\n",
" \\partial_t \\beta^i &= \\left[\\beta^j \\vphantom{dupD} \\bar{D}_j \\beta^i \\right] + B^i \\\\\n",
"\n",
" % vardef -const 'eta'\n",
" % srepl \"\\partial_t \\text{bet}\" -> \"\\text{bet_rhs}\"\n",
" \\partial_t B^i &= \\left[\\beta^j \\vphantom{dupD} \\bar{D}_j B^i \\right] + \\frac{3}{4} \\left(\\partial_t \\bar{\\Lambda}^i - \\left[\\beta^j \\vphantom{dupD} \\bar{D}_j \\bar{\\Lambda}^i \\right] \\right) - \\eta B^i \\\\\n",
"\\end{align}"
]
},
{
"cell_type": "code",
"execution_count": 38,
"metadata": {
"execution": {
"iopub.execute_input": "2021-03-07T17:13:10.086756Z",
"iopub.status.busy": "2021-03-07T17:13:10.086092Z",
"iopub.status.idle": "2021-03-07T17:13:10.089145Z",
"shell.execute_reply": "2021-03-07T17:13:10.089644Z"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Assertion Passed!\n"
]
}
],
"source": [
"assert_equal(alpha_rhs, gaugerhs.alpha_rhs)"
]
},
{
"cell_type": "code",
"execution_count": 39,
"metadata": {
"execution": {
"iopub.execute_input": "2021-03-07T17:13:18.192017Z",
"iopub.status.busy": "2021-03-07T17:13:18.156296Z",
"iopub.status.idle": "2021-03-07T17:13:19.092150Z",
"shell.execute_reply": "2021-03-07T17:13:19.092596Z"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Assertion Passed!\n"
]
}
],
"source": [
"assert_equal(vet_rhsU, gaugerhs.vet_rhsU)"
]
},
{
"cell_type": "code",
"execution_count": 40,
"metadata": {
"execution": {
"iopub.execute_input": "2021-03-07T17:13:24.565411Z",
"iopub.status.busy": "2021-03-07T17:13:24.529610Z",
"iopub.status.idle": "2021-03-07T17:13:32.594970Z",
"shell.execute_reply": "2021-03-07T17:13:32.595420Z"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Assertion Passed!\n"
]
}
],
"source": [
"assert_equal(bet_rhsU, gaugerhs.bet_rhsU)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"\n",
"## Step 7: Constraint Equation(s) [ [^](#top) ]\n",
"\n",
"\\begin{align}\n",
" \\mathcal{H} &= \\frac{2}{3} K^2 - \\bar{A}_{ij} \\bar{A}^{ij} + e^{-4\\phi} \\left(\\bar{R} - 8 \\bar{D}^i \\phi \\bar{D}_i \\phi - 8 \\bar{D}^2 \\phi \\right) \\\\\n",
" \\mathcal{M}^i &= e^{-4\\phi} \\left(\\hat{D}_j \\bar{A}^{ij} + 6 \\bar{A}^{ij}\\partial_j \\phi - \\frac{2}{3} \\bar{\\gamma}^{ij} \\partial_j K + \\bar{A}^{jk} \\Delta^i_{jk} + \\bar{A}^{ik} \\Delta^j_{jk} \\right)\n",
"\\end{align}"
]
},
{
"cell_type": "code",
"execution_count": 41,
"metadata": {
"execution": {
"iopub.execute_input": "2021-03-07T17:13:32.661650Z",
"iopub.status.busy": "2021-03-07T17:13:32.625894Z",
"iopub.status.idle": "2021-03-07T17:13:35.297128Z",
"shell.execute_reply": "2021-03-07T17:13:35.297606Z"
},
"scrolled": true
},
"outputs": [
{
"data": {
"text/latex": [
"\\[\n",
"\\begin{align}\n",
" % keydef basis [x, y, z]\n",
" % ignore \"\\\\%\", \"\\qquad\"\n",
"\n",
" % vardef -kron 'deltaDD'\n",
" % parse \\hat{\\gamma}_{ij} = \\delta_{ij}\n",
" % assign -diff_type=symbolic -metric 'gammahatDD'\n",
" % vardef -diff_type=dD -symmetry=sym01 'hDD'\n",
" % parse \\bar{\\gamma}_{ij} = h_{ij} + \\hat{\\gamma}_{ij}\n",
" % assign -diff_type=dD -metric 'gammabarDD'\n",
"\n",
" % vardef -diff_type=dD 'vetU'\n",
" % srepl \"\\beta\" -> \"\\text{vet}\"\n",
" %% upwind pattern inside Lie derivative expansion\n",
" % srepl -persist \"\\text{vet}^<1> \\partial_<1>\" -> \"\\text{vet}^<1> \\vphantom{dupD} \\partial_<1>\"\n",
" %% substitute tensor identity (see appropriate BSSN notebook)\n",
" % srepl \"\\bar{D}_k \\text{vet}^k\" -> \"(\\partial_k \\text{vet}^k + \\frac{\\partial_k \\text{gammahatdet} \\text{vet}^k}{2 \\text{gammahatdet}})\"\n",
"\n",
" % vardef -diff_type=dD 'alpha'\n",
" % vardef -diff_type=dD -symmetry=sym01 'aDD'\n",
" % srepl \"\\bar{A}\" -> \"\\text{a}\"\n",
" % parse \\bar{A}^i_j = \\bar{\\gamma}^{ik} \\bar{A}_{kj}\n",
" % assign -diff_type=dD 'aUD'\n",
" % srepl \"\\partial_t \\bar{\\gamma}\" -> \"\\text{h_rhs}\"\n",
"\n",
" \\partial_t \\bar{\\gamma}_{ij} &= \\mathcal{L}_\\beta \\bar{\\gamma}_{ij}\n",
" + \\frac{2}{3} \\bar{\\gamma}_{ij} \\left(\\alpha \\bar{A}^k{}_k - \\bar{D}_k \\beta^k\\right)\n",
" - 2 \\alpha \\bar{A}_{ij} \\\\\n",
"\n",
" % vardef -diff_type=dD 'cf', 'trK'\n",
" % srepl \"K\" -> \"\\text{trK}\"\n",
" %% replace 'phi' with conformal factor cf = W = e^{{-2\\phi}}\n",
" % srepl \"e^{-4\\phi}\" -> \"\\text{cf}^2\"\n",
" % srepl \"\\partial_t \\phi = <1..> \\\\\" -> \"\\text{cf_rhs} = -2 \\text{cf} (<1..>) \\\\\"\n",
" % srepl -persist \"\\partial_{<1>} \\phi\" -> \"\\partial_{<1>} \\text{cf} \\frac{-1}{2 \\text{cf}}\"\n",
" % srepl \"\\partial_<1> \\phi\" -> \"\\partial_<1> \\text{cf} \\frac{-1}{2 \\text{cf}}\"\n",
"\n",
" \\partial_t \\phi &= \\mathcal{L}_\\beta \\phi\n",
" + \\frac{1}{6} \\left(\\bar{D}_k \\beta^k - \\alpha K \\right) \\\\\n",
"\n",
" % parse \\bar{A}^{ij} = \\bar{\\gamma}^{jk} \\bar{A}^i_k\n",
" % assign -diff_type=dD 'aUU'\n",
" % srepl \"\\partial_t \\text{trK}\" -> \"\\text{trK_rhs}\"\n",
" \\partial_t K &= \\mathcal{L}_\\beta K\n",
" + \\frac{1}{3} \\alpha K^2\n",
" + \\alpha \\bar{A}_{ij} \\bar{A}^{ij}\n",
" - e^{-4\\phi} \\left(\\bar{D}_i \\bar{D}^i \\alpha + 2 \\bar{D}^i \\alpha \\bar{D}_i \\phi\\right) \\\\\n",
"\n",
" % vardef -diff_type=dD 'lambdaU'\n",
" % srepl \"\\bar{\\Lambda}\" -> \"\\text{lambda}\"\n",
" % parse \\Delta^k_{ij} = \\bar{\\Gamma}^k_{ij} - \\hat{\\Gamma}^k_{ij}\n",
" % parse \\Delta_{ijk} = \\bar{\\gamma}_{il} \\Delta^l_{jk}\n",
" % parse \\Delta^k = \\bar{\\gamma}^{ij} \\Delta^k_{ij}\n",
" % srepl \"\\partial_t \\text{lambda}\" -> \"\\text{Lambdabar_rhs}\"\n",
" \\partial_t \\bar{\\Lambda}^i &= \\mathcal{L}_\\beta \\bar{\\Lambda}^i + \\bar{\\gamma}^{jk} \\hat{D}_j \\hat{D}_k \\beta^i\n",
" + \\frac{2}{3} \\Delta^i \\bar{D}_k \\beta^k + \\frac{1}{3} \\bar{D}^i \\bar{D}_k \\beta^k \\\\%\n",
" &\\qquad- 2 \\bar{A}^{ij} \\left(\\partial_j \\alpha - 6 \\alpha \\partial_j \\phi\\right)\n",
" + 2 \\alpha \\bar{A}^{jk} \\Delta^i_{jk} - \\frac{4}{3} \\alpha \\bar{\\gamma}^{ij} \\partial_j K \\\\\n",
"\n",
" % vardef -diff_type=dD -symmetry=sym01 'RbarDD'\n",
" X_{ij} &= -2 \\alpha \\bar{D}_i \\bar{D}_j \\phi + 4 \\alpha \\bar{D}_i \\phi \\bar{D}_j \\phi\n",
" + 2 \\bar{D}_i \\alpha \\bar{D}_j \\phi + 2 \\bar{D}_j \\alpha \\bar{D}_i \\phi\n",
" - \\bar{D}_i \\bar{D}_j \\alpha + \\alpha \\bar{R}_{ij} \\\\\n",
" \\hat{X}_{ij} &= X_{ij} - \\frac{1}{3} \\bar{\\gamma}_{ij} \\bar{\\gamma}^{kl} X_{kl} \\\\\n",
" % srepl \"\\partial_t \\text{a}\" -> \"\\text{a_rhs}\"\n",
" \\partial_t \\bar{A}_{ij} &= \\mathcal{L}_\\beta \\bar{A}_{ij}\n",
" - \\frac{2}{3} \\bar{A}_{ij} \\bar{D}_k \\beta^k\n",
" - 2 \\alpha \\bar{A}_{ik} \\bar{A}^k_j\n",
" + \\alpha \\bar{A}_{ij} K\n",
" + e^{-4\\phi} \\hat{X}_{ij} \\\\\n",
"\n",
" % srepl \"\\partial_t \\alpha\" -> \"\\text{alpha_rhs}\"\n",
" \\partial_t \\alpha &= \\mathcal{L}_\\beta \\alpha - 2 \\alpha K \\\\\n",
"\n",
" % vardef -diff_type=dD 'betU'\n",
" % srepl \"B\" -> \"\\text{bet}\"\n",
" % srepl \"\\partial_t \\text{vet}\" -> \"\\text{vet_rhs}\"\n",
" \\partial_t \\beta^i &= \\left[\\beta^j \\vphantom{dupD} \\bar{D}_j \\beta^i\\right] + B^i \\\\\n",
"\n",
" % vardef -const 'eta'\n",
" % srepl \"\\partial_t \\text{bet}\" -> \"\\text{bet_rhs}\"\n",
" \\partial_t B^i &= \\left[\\beta^j \\vphantom{dupD} \\bar{D}_j B^i\\right]\n",
" + \\frac{3}{4} \\left(\\partial_t \\bar{\\Lambda}^i - \\left[\\beta^j \\vphantom{dupD} \\bar{D}_j \\bar{\\Lambda}^i\\right]\\right)\n",
" - \\eta B^i \\\\\n",
"\n",
" % parse \\bar{R} = \\bar{\\gamma}^{ij} \\bar{R}_{ij}\n",
" % srepl \"\\bar{D}^2\" -> \"\\bar{D}^i \\bar{D}_i\", \"\\mathcal{<1>}\" -> \"<1>\"\n",
" \\mathcal{H} &= \\frac{2}{3} K^2 - \\bar{A}_{ij} \\bar{A}^{ij} + e^{-4\\phi} \\left(\\bar{R} - 8 \\bar{D}^i \\phi\n",
" \\bar{D}_i \\phi - 8 \\bar{D}^2 \\phi \\right) \\\\\n",
"\n",
" \\mathcal{M}^i &= e^{-4\\phi} \\left(\\hat{D}_j \\bar{A}^{ij} + 6 \\bar{A}^{ij}\\partial_j \\phi - \\frac{2}{3} \\bar{\\gamma}^{ij}\n",
" \\partial_j K + \\bar{A}^{jk} \\Delta^i_{jk} + \\bar{A}^{ik} \\Delta^j_{jk} \\right) \\\\\n",
"\n",
" \\bar{R}_{ij} &= -\\frac{1}{2} \\bar{\\gamma}^{kl} \\hat{D}_k \\hat{D}_l \\bar{\\gamma}_{ij} + \\frac{1}{2} \\left(\\bar{\\gamma}_{ki}\n",
" \\hat{D}_j \\bar{\\Lambda}^k + \\bar{\\gamma}_{kj} \\hat{D}_i \\bar{\\Lambda}^k\\right) + \\frac{1}{2} \\Delta^k \\left(\\Delta_{ijk} + \\Delta_{jik}\\right) \\\\%\n",
" &\\qquad+ \\bar{\\gamma}^{kl} \\left(\\Delta^m_{ki} \\Delta_{jml} + \\Delta^m_{kj} \\Delta_{iml} + \\Delta^m_{ik} \\Delta_{mjl}\\right)\n",
"\\end{align}\n",
"\\]"
],
"text/plain": [
"('phi_cdbarD',\n",
" 'phi_cdbarDU',\n",
" 'lambdaU_ldvet',\n",
" 'betU_dupD',\n",
" 'trK_rhs',\n",
" 'gammahatDD',\n",
" 'gammabarDD_cdhatD_dD',\n",
" 'aDD_ldvet',\n",
" 'aUU_cdhatD',\n",
" 'lambdaU',\n",
" 'h_rhsDD',\n",
" 'gammabarDD_ldvet',\n",
" 'phi_cdbarDD',\n",
" 'vetU_dDD',\n",
" 'alpha_rhs',\n",
" 'vet_rhsU',\n",
" 'hDD_dDD',\n",
" 'XDD',\n",
" 'gammabarDD',\n",
" 'phi_ldvet',\n",
" 'trK_ldvet',\n",
" 'DeltaU',\n",
" 'betU',\n",
" 'cf',\n",
" 'alpha_cdbarU',\n",
" 'aUD',\n",
" 'gammahatdet_dD',\n",
" 'GammahatUDD',\n",
" 'hDD_dD',\n",
" 'RbarDD',\n",
" 'eta',\n",
" 'vetU_cdhatD_dD',\n",
" 'gammabardet',\n",
" 'aUU',\n",
" 'phi',\n",
" 'trK_dD',\n",
" 'alpha_cdbarU_dD',\n",
" 'XhatDD',\n",
" 'alpha_ldvet',\n",
" 'gammahatdet_dD_cdbarD',\n",
" 'vetU_cdbarD',\n",
" 'gammahatdet_cdbarD',\n",
" 'gammabarDD_dD',\n",
" 'gammahatdet',\n",
" 'gammahatdet_cdbarU',\n",
" 'vetU_dD',\n",
" 'phi_cdbarD_dD',\n",
" 'gammabarDD_dDD',\n",
" 'phi_cdbarU',\n",
" 'H',\n",
" 'alpha_dD',\n",
" 'DeltaDDD',\n",
" 'lambdaU_dD',\n",
" 'gammahatdet_dD_cdbarU',\n",
" 'cf_dD',\n",
" 'trK',\n",
" 'alpha_cdbarDD',\n",
" 'vetU_cdhatD',\n",
" 'DeltaUDD',\n",
" 'vetU_dupD',\n",
" 'gammabarDD_cdhatDD',\n",
" 'lambdaU_cdbarD',\n",
" 'a_rhsDD',\n",
" 'Lambdabar_rhsU',\n",
" 'vetU_cdbarU',\n",
" 'gammabarDD_cdhatD',\n",
" 'aUD_dD',\n",
" 'cf_rhs',\n",
" 'gammabarUU',\n",
" 'alpha_cdbarUD',\n",
" 'alpha',\n",
" 'alpha_dDD',\n",
" 'epsilonUUU',\n",
" 'lambdaU_cdhatD',\n",
" 'gammahatUU',\n",
" 'vetU_cdhatDD',\n",
" 'bet_rhsU',\n",
" 'alpha_cdbarD_dD',\n",
" 'hDD',\n",
" 'lambdaU_dupD',\n",
" 'deltaDD',\n",
" 'gammabardet_dD',\n",
" 'Rbar',\n",
" 'alpha_cdbarD',\n",
" 'vetU_dD_cdbarU',\n",
" 'aUU_dD',\n",
" 'GammabarUDD',\n",
" 'MU',\n",
" 'vetU',\n",
" 'betU_cdbarD',\n",
" 'aDD',\n",
" 'aDD_dD',\n",
" 'gammabarUU_dD',\n",
" 'vetU_dD_cdbarD',\n",
" 'cf_dDD')"
]
},
"execution_count": 41,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"%%parse_latex --reset --ignore-warning\n",
"\n",
"\\begin{align}\n",
" % keydef basis [x, y, z]\n",
" % ignore \"\\\\%\", \"\\qquad\"\n",
"\n",
" % vardef -kron 'deltaDD'\n",
" % parse \\hat{\\gamma}_{ij} = \\delta_{ij}\n",
" % assign -diff_type=symbolic -metric 'gammahatDD'\n",
" % vardef -diff_type=dD -symmetry=sym01 'hDD'\n",
" % parse \\bar{\\gamma}_{ij} = h_{ij} + \\hat{\\gamma}_{ij}\n",
" % assign -diff_type=dD -metric 'gammabarDD'\n",
"\n",
" % vardef -diff_type=dD 'vetU'\n",
" % srepl \"\\beta\" -> \"\\text{vet}\"\n",
" %% upwind pattern inside Lie derivative expansion\n",
" % srepl -persist \"\\text{vet}^<1> \\partial_<1>\" -> \"\\text{vet}^<1> \\vphantom{dupD} \\partial_<1>\"\n",
" %% substitute tensor identity (see appropriate BSSN notebook)\n",
" % srepl \"\\bar{D}_k \\text{vet}^k\" -> \"(\\partial_k \\text{vet}^k + \\frac{\\partial_k \\text{gammahatdet} \\text{vet}^k}{2 \\text{gammahatdet}})\"\n",
"\n",
" % vardef -diff_type=dD 'alpha'\n",
" % vardef -diff_type=dD -symmetry=sym01 'aDD'\n",
" % srepl \"\\bar{A}\" -> \"\\text{a}\"\n",
" % parse \\bar{A}^i_j = \\bar{\\gamma}^{ik} \\bar{A}_{kj}\n",
" % assign -diff_type=dD 'aUD'\n",
" % srepl \"\\partial_t \\bar{\\gamma}\" -> \"\\text{h_rhs}\"\n",
"\n",
" \\partial_t \\bar{\\gamma}_{ij} &= \\mathcal{L}_\\beta \\bar{\\gamma}_{ij}\n",
" + \\frac{2}{3} \\bar{\\gamma}_{ij} \\left(\\alpha \\bar{A}^k{}_k - \\bar{D}_k \\beta^k\\right)\n",
" - 2 \\alpha \\bar{A}_{ij} \\\\\n",
"\n",
" % vardef -diff_type=dD 'cf', 'trK'\n",
" % srepl \"K\" -> \"\\text{trK}\"\n",
" %% replace 'phi' with conformal factor cf = W = e^{{-2\\phi}}\n",
" % srepl \"e^{-4\\phi}\" -> \"\\text{cf}^2\"\n",
" % srepl \"\\partial_t \\phi = <1..> \\\\\" -> \"\\text{cf_rhs} = -2 \\text{cf} (<1..>) \\\\\"\n",
" % srepl -persist \"\\partial_{<1>} \\phi\" -> \"\\partial_{<1>} \\text{cf} \\frac{-1}{2 \\text{cf}}\"\n",
" % srepl \"\\partial_<1> \\phi\" -> \"\\partial_<1> \\text{cf} \\frac{-1}{2 \\text{cf}}\"\n",
"\n",
" \\partial_t \\phi &= \\mathcal{L}_\\beta \\phi\n",
" + \\frac{1}{6} \\left(\\bar{D}_k \\beta^k - \\alpha K \\right) \\\\\n",
"\n",
" % parse \\bar{A}^{ij} = \\bar{\\gamma}^{jk} \\bar{A}^i_k\n",
" % assign -diff_type=dD 'aUU'\n",
" % srepl \"\\partial_t \\text{trK}\" -> \"\\text{trK_rhs}\"\n",
" \\partial_t K &= \\mathcal{L}_\\beta K\n",
" + \\frac{1}{3} \\alpha K^2\n",
" + \\alpha \\bar{A}_{ij} \\bar{A}^{ij}\n",
" - e^{-4\\phi} \\left(\\bar{D}_i \\bar{D}^i \\alpha + 2 \\bar{D}^i \\alpha \\bar{D}_i \\phi\\right) \\\\\n",
"\n",
" % vardef -diff_type=dD 'lambdaU'\n",
" % srepl \"\\bar{\\Lambda}\" -> \"\\text{lambda}\"\n",
" % parse \\Delta^k_{ij} = \\bar{\\Gamma}^k_{ij} - \\hat{\\Gamma}^k_{ij}\n",
" % parse \\Delta_{ijk} = \\bar{\\gamma}_{il} \\Delta^l_{jk}\n",
" % parse \\Delta^k = \\bar{\\gamma}^{ij} \\Delta^k_{ij}\n",
" % srepl \"\\partial_t \\text{lambda}\" -> \"\\text{Lambdabar_rhs}\"\n",
" \\partial_t \\bar{\\Lambda}^i &= \\mathcal{L}_\\beta \\bar{\\Lambda}^i + \\bar{\\gamma}^{jk} \\hat{D}_j \\hat{D}_k \\beta^i\n",
" + \\frac{2}{3} \\Delta^i \\bar{D}_k \\beta^k + \\frac{1}{3} \\bar{D}^i \\bar{D}_k \\beta^k \\\\%\n",
" &\\qquad- 2 \\bar{A}^{ij} \\left(\\partial_j \\alpha - 6 \\alpha \\partial_j \\phi\\right)\n",
" + 2 \\alpha \\bar{A}^{jk} \\Delta^i_{jk} - \\frac{4}{3} \\alpha \\bar{\\gamma}^{ij} \\partial_j K \\\\\n",
"\n",
" % vardef -diff_type=dD -symmetry=sym01 'RbarDD'\n",
" X_{ij} &= -2 \\alpha \\bar{D}_i \\bar{D}_j \\phi + 4 \\alpha \\bar{D}_i \\phi \\bar{D}_j \\phi\n",
" + 2 \\bar{D}_i \\alpha \\bar{D}_j \\phi + 2 \\bar{D}_j \\alpha \\bar{D}_i \\phi\n",
" - \\bar{D}_i \\bar{D}_j \\alpha + \\alpha \\bar{R}_{ij} \\\\\n",
" \\hat{X}_{ij} &= X_{ij} - \\frac{1}{3} \\bar{\\gamma}_{ij} \\bar{\\gamma}^{kl} X_{kl} \\\\\n",
" % srepl \"\\partial_t \\text{a}\" -> \"\\text{a_rhs}\"\n",
" \\partial_t \\bar{A}_{ij} &= \\mathcal{L}_\\beta \\bar{A}_{ij}\n",
" - \\frac{2}{3} \\bar{A}_{ij} \\bar{D}_k \\beta^k\n",
" - 2 \\alpha \\bar{A}_{ik} \\bar{A}^k_j\n",
" + \\alpha \\bar{A}_{ij} K\n",
" + e^{-4\\phi} \\hat{X}_{ij} \\\\\n",
"\n",
" % srepl \"\\partial_t \\alpha\" -> \"\\text{alpha_rhs}\"\n",
" \\partial_t \\alpha &= \\mathcal{L}_\\beta \\alpha - 2 \\alpha K \\\\\n",
"\n",
" % vardef -diff_type=dD 'betU'\n",
" % srepl \"B\" -> \"\\text{bet}\"\n",
" % srepl \"\\partial_t \\text{vet}\" -> \"\\text{vet_rhs}\"\n",
" \\partial_t \\beta^i &= \\left[\\beta^j \\vphantom{dupD} \\bar{D}_j \\beta^i\\right] + B^i \\\\\n",
"\n",
" % vardef -const 'eta'\n",
" % srepl \"\\partial_t \\text{bet}\" -> \"\\text{bet_rhs}\"\n",
" \\partial_t B^i &= \\left[\\beta^j \\vphantom{dupD} \\bar{D}_j B^i\\right]\n",
" + \\frac{3}{4} \\left(\\partial_t \\bar{\\Lambda}^i - \\left[\\beta^j \\vphantom{dupD} \\bar{D}_j \\bar{\\Lambda}^i\\right]\\right)\n",
" - \\eta B^i \\\\\n",
"\n",
" % parse \\bar{R} = \\bar{\\gamma}^{ij} \\bar{R}_{ij}\n",
" % srepl \"\\bar{D}^2\" -> \"\\bar{D}^i \\bar{D}_i\", \"\\mathcal{<1>}\" -> \"<1>\"\n",
" \\mathcal{H} &= \\frac{2}{3} K^2 - \\bar{A}_{ij} \\bar{A}^{ij} + e^{-4\\phi} \\left(\\bar{R} - 8 \\bar{D}^i \\phi\n",
" \\bar{D}_i \\phi - 8 \\bar{D}^2 \\phi \\right) \\\\\n",
"\n",
" \\mathcal{M}^i &= e^{-4\\phi} \\left(\\hat{D}_j \\bar{A}^{ij} + 6 \\bar{A}^{ij}\\partial_j \\phi - \\frac{2}{3} \\bar{\\gamma}^{ij}\n",
" \\partial_j K + \\bar{A}^{jk} \\Delta^i_{jk} + \\bar{A}^{ik} \\Delta^j_{jk} \\right) \\\\\n",
"\n",
" \\bar{R}_{ij} &= -\\frac{1}{2} \\bar{\\gamma}^{kl} \\hat{D}_k \\hat{D}_l \\bar{\\gamma}_{ij} + \\frac{1}{2} \\left(\\bar{\\gamma}_{ki}\n",
" \\hat{D}_j \\bar{\\Lambda}^k + \\bar{\\gamma}_{kj} \\hat{D}_i \\bar{\\Lambda}^k\\right) + \\frac{1}{2} \\Delta^k \\left(\\Delta_{ijk} + \\Delta_{jik}\\right) \\\\%\n",
" &\\qquad+ \\bar{\\gamma}^{kl} \\left(\\Delta^m_{ki} \\Delta_{jml} + \\Delta^m_{kj} \\Delta_{iml} + \\Delta^m_{ik} \\Delta_{mjl}\\right)\n",
"\\end{align}"
]
},
{
"cell_type": "code",
"execution_count": 42,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Assertion Passed!\n"
]
}
],
"source": [
"assert_equal(H, bssncon.H)"
]
},
{
"cell_type": "code",
"execution_count": 43,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Assertion Passed!\n"
]
}
],
"source": [
"assert_equal(MU, bssncon.MU)"
]
},
{
"cell_type": "code",
"execution_count": 44,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Assertion Passed!\n"
]
}
],
"source": [
"assert_equal(RbarDD, Bq.RbarDD)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"\n",
"## Step 8: Output Notebook to PDF [ [^](#top) ]\n",
"\n",
"The following code cell converts this Jupyter notebook into a proper, clickable $\\LaTeX$-formatted PDF file. After the cell is successfully run, the generated PDF may be found in the root NRPy+ tutorial directory, with filename\n",
"[Tutorial-LaTeX_Interface_Example-BSSN_Cartesian.pdf](Tutorial-LaTeX_Interface_Example-BSSN_Cartesian.pdf). (Note that clicking on this link may not work; you may need to open the PDF file through another means.)"
]
},
{
"cell_type": "code",
"execution_count": 45,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Created Tutorial-LaTeX_Interface_Example-BSSN_Cartesian.tex, and compiled\n",
" LaTeX file to PDF file Tutorial-LaTeX_Interface_Example-\n",
" BSSN_Cartesian.pdf\n"
]
}
],
"source": [
"import cmdline_helper as cmd # NRPy+: Multi-platform Python command-line interface\n",
"cmd.output_Jupyter_notebook_to_LaTeXed_PDF(\"Tutorial-LaTeX_Interface_Example-BSSN_Cartesian\")"
]
}
],
"metadata": {
"file_extension": ".py",
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.10.4"
},
"mimetype": "text/x-python",
"name": "python",
"npconvert_exporter": "python",
"pygments_lexer": "ipython3",
"toc": {
"base_numbering": 1,
"nav_menu": {},
"number_sections": true,
"sideBar": true,
"skip_h1_title": false,
"title_cell": "Table of Contents",
"title_sidebar": "Contents",
"toc_cell": false,
"toc_position": {},
"toc_section_display": true,
"toc_window_display": false
},
"varInspector": {
"cols": {
"lenName": 16,
"lenType": 16,
"lenVar": 40
},
"kernels_config": {
"python": {
"delete_cmd_postfix": "",
"delete_cmd_prefix": "del ",
"library": "var_list.py",
"varRefreshCmd": "print(var_dic_list())"
},
"r": {
"delete_cmd_postfix": ") ",
"delete_cmd_prefix": "rm(",
"library": "var_list.r",
"varRefreshCmd": "cat(var_dic_list()) "
}
},
"types_to_exclude": [
"module",
"function",
"builtin_function_or_method",
"instance",
"_Feature"
],
"window_display": false
},
"version": 3
},
"nbformat": 4,
"nbformat_minor": 2
}