{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"\n",
"\n",
"# LaTeX Interface Example: BSSN (Cartesian)\n",
"\n",
"## Author: Ken Sible\n",
"\n",
"## This notebook demonstrates parsing BSSN (Cartesian) and validating against NRPy+.\n",
"[comment]: <> (**Notebook Status:** Not Validated )"
]
},
{
"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": {
"execution": {
"iopub.execute_input": "2023-04-18T16:57:51.221023Z",
"iopub.status.busy": "2023-04-18T16:57:51.220634Z",
"iopub.status.idle": "2023-04-18T16:57:54.566160Z",
"shell.execute_reply": "2023-04-18T16:57:54.565262Z"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"nrpylatex==1.0.8\r\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": "2023-04-18T16:57:54.571023Z",
"iopub.status.busy": "2023-04-18T16:57:54.570582Z",
"iopub.status.idle": "2023-04-18T16:57:56.160743Z",
"shell.execute_reply": "2023-04-18T16:57:56.159948Z"
}
},
"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": "2023-04-18T16:57:56.164628Z",
"iopub.status.busy": "2023-04-18T16:57:56.164445Z",
"iopub.status.idle": "2023-04-18T16:57:56.173430Z",
"shell.execute_reply": "2023-04-18T16:57:56.172662Z"
}
},
"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": "2023-04-18T16:57:56.175948Z",
"iopub.status.busy": "2023-04-18T16:57:56.175762Z",
"iopub.status.idle": "2023-04-18T16:57:56.373657Z",
"shell.execute_reply": "2023-04-18T16:57:56.372884Z"
}
},
"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": "2023-04-18T16:57:56.377371Z",
"iopub.status.busy": "2023-04-18T16:57:56.377186Z",
"iopub.status.idle": "2023-04-18T16:57:56.537115Z",
"shell.execute_reply": "2023-04-18T16:57:56.536337Z"
}
},
"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 situation, 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": "2023-04-18T16:57:56.540624Z",
"iopub.status.busy": "2023-04-18T16:57:56.540441Z",
"iopub.status.idle": "2023-04-18T16:57:56.729659Z",
"shell.execute_reply": "2023-04-18T16:57:56.728893Z"
}
},
"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 occurred, i.e. `t -> 0` provided that `basis = [t, x, y, z]` for example."
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"execution": {
"iopub.execute_input": "2023-04-18T16:57:56.733178Z",
"iopub.status.busy": "2023-04-18T16:57:56.732955Z",
"iopub.status.idle": "2023-04-18T16:57:56.933527Z",
"shell.execute_reply": "2023-04-18T16:57:56.932786Z"
}
},
"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": [
"('hDD_dD',\n",
" 'GammahatUDD',\n",
" 'h_rhsDD',\n",
" 'gammahatDD',\n",
" 'epsilonUUU',\n",
" 'aDD',\n",
" 'deltaDD',\n",
" 'gammahatdet',\n",
" 'aUD',\n",
" 'gammahatUU',\n",
" 'gammabarUU',\n",
" 'hDD',\n",
" 'alpha',\n",
" 'gammabarDD_dD',\n",
" 'gammabarDD',\n",
" 'gammabardet',\n",
" 'vetU',\n",
" 'GammabarUDD',\n",
" 'vetU_cdbarD',\n",
" 'vetU_dD')"
]
},
"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 coordinate 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": {
"execution": {
"iopub.execute_input": "2023-04-18T16:57:56.937343Z",
"iopub.status.busy": "2023-04-18T16:57:56.937021Z",
"iopub.status.idle": "2023-04-18T16:57:57.135657Z",
"shell.execute_reply": "2023-04-18T16:57:57.134927Z"
}
},
"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": [
"('hDD_dD',\n",
" 'GammahatUDD',\n",
" 'h_rhsDD',\n",
" 'gammahatDD',\n",
" 'epsilonUUU',\n",
" 'aDD',\n",
" 'deltaDD',\n",
" 'gammahatdet',\n",
" 'aUD',\n",
" 'gammahatUU',\n",
" 'gammabarUU',\n",
" 'hDD',\n",
" 'alpha',\n",
" 'gammabarDD_dD',\n",
" 'gammabarDD',\n",
" 'gammabardet',\n",
" 'vetU',\n",
" 'GammabarUDD',\n",
" 'vetU_cdbarD',\n",
" 'vetU_dD')"
]
},
"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": {
"execution": {
"iopub.execute_input": "2023-04-18T16:57:57.139351Z",
"iopub.status.busy": "2023-04-18T16:57:57.139043Z",
"iopub.status.idle": "2023-04-18T16:58:00.264460Z",
"shell.execute_reply": "2023-04-18T16:58:00.263679Z"
}
},
"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": {
"execution": {
"iopub.execute_input": "2023-04-18T16:58:00.268482Z",
"iopub.status.busy": "2023-04-18T16:58:00.268171Z",
"iopub.status.idle": "2023-04-18T16:58:00.482221Z",
"shell.execute_reply": "2023-04-18T16:58:00.481508Z"
}
},
"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": [
"('hDD_dD',\n",
" 'hDD_dupD',\n",
" 'GammahatUDD',\n",
" 'h_rhsDD',\n",
" 'gammahatDD',\n",
" 'epsilonUUU',\n",
" 'aDD',\n",
" 'deltaDD',\n",
" 'gammabarDD_dupD',\n",
" 'gammahatdet',\n",
" 'aUD',\n",
" 'gammahatUU',\n",
" 'gammabarUU',\n",
" 'hDD',\n",
" 'alpha',\n",
" 'gammabarDD_dD',\n",
" 'gammabarDD',\n",
" 'gammabardet',\n",
" 'vetU',\n",
" 'GammabarUDD',\n",
" 'vetU_dD')"
]
},
"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": "2023-04-18T16:58:00.485717Z",
"iopub.status.busy": "2023-04-18T16:58:00.485529Z",
"iopub.status.idle": "2023-04-18T16:58:01.723955Z",
"shell.execute_reply": "2023-04-18T16:58:01.723391Z"
}
},
"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": "2023-04-18T16:58:01.728170Z",
"iopub.status.busy": "2023-04-18T16:58:01.727861Z",
"iopub.status.idle": "2023-04-18T16:58:01.864070Z",
"shell.execute_reply": "2023-04-18T16:58:01.863537Z"
}
},
"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": {
"execution": {
"iopub.execute_input": "2023-04-18T16:58:01.867363Z",
"iopub.status.busy": "2023-04-18T16:58:01.867250Z",
"iopub.status.idle": "2023-04-18T16:58:02.004423Z",
"shell.execute_reply": "2023-04-18T16:58:02.003913Z"
}
},
"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": [
"('hDD_dD',\n",
" 'K',\n",
" 'cf_rhs',\n",
" 'hDD_dupD',\n",
" 'GammahatUDD',\n",
" 'h_rhsDD',\n",
" 'cf',\n",
" 'gammahatDD',\n",
" 'epsilonUUU',\n",
" 'aDD',\n",
" 'deltaDD',\n",
" 'gammabarDD_dupD',\n",
" 'gammahatdet',\n",
" 'aUD',\n",
" 'gammahatUU',\n",
" 'gammabarUU',\n",
" 'hDD',\n",
" 'alpha',\n",
" 'gammabarDD_dD',\n",
" 'gammabarDD',\n",
" 'gammabardet',\n",
" 'vetU',\n",
" 'GammabarUDD',\n",
" 'vetU_dD')"
]
},
"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": {
"execution": {
"iopub.execute_input": "2023-04-18T16:58:02.008343Z",
"iopub.status.busy": "2023-04-18T16:58:02.008025Z",
"iopub.status.idle": "2023-04-18T16:58:02.026053Z",
"shell.execute_reply": "2023-04-18T16:58:02.025541Z"
},
"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": "2023-04-18T16:58:02.030300Z",
"iopub.status.busy": "2023-04-18T16:58:02.029984Z",
"iopub.status.idle": "2023-04-18T16:58:02.165069Z",
"shell.execute_reply": "2023-04-18T16:58:02.164562Z"
}
},
"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": [
"('hDD_dD',\n",
" 'cf_rhs',\n",
" 'hDD_dupD',\n",
" 'GammahatUDD',\n",
" 'h_rhsDD',\n",
" 'cf',\n",
" 'gammahatDD',\n",
" 'epsilonUUU',\n",
" 'aDD',\n",
" 'deltaDD',\n",
" 'gammabarDD_dupD',\n",
" 'gammahatdet',\n",
" 'aUD',\n",
" 'gammahatUU',\n",
" 'gammabarUU',\n",
" 'hDD',\n",
" 'alpha',\n",
" 'gammabarDD_dD',\n",
" 'trK',\n",
" 'gammabarDD',\n",
" 'gammabardet',\n",
" 'vetU',\n",
" 'cf_dupD',\n",
" 'GammabarUDD',\n",
" 'vetU_dD')"
]
},
"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": "2023-04-18T16:58:02.168075Z",
"iopub.status.busy": "2023-04-18T16:58:02.167957Z",
"iopub.status.idle": "2023-04-18T16:58:02.179739Z",
"shell.execute_reply": "2023-04-18T16:58:02.179230Z"
}
},
"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": "2023-04-18T16:58:02.183802Z",
"iopub.status.busy": "2023-04-18T16:58:02.183676Z",
"iopub.status.idle": "2023-04-18T16:58:02.994831Z",
"shell.execute_reply": "2023-04-18T16:58:02.994321Z"
}
},
"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": {
"execution": {
"iopub.execute_input": "2023-04-18T16:58:02.998040Z",
"iopub.status.busy": "2023-04-18T16:58:02.997921Z",
"iopub.status.idle": "2023-04-18T16:58:03.739052Z",
"shell.execute_reply": "2023-04-18T16:58:03.738626Z"
}
},
"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": [
"('hDD_dD',\n",
" 'gammabardet_dD',\n",
" 'phi_cdbarD',\n",
" 'alpha_dD',\n",
" 'cf_rhs',\n",
" 'hDD_dupD',\n",
" 'alpha_cdbarU_dD',\n",
" 'alpha_dDD',\n",
" 'GammahatUDD',\n",
" 'h_rhsDD',\n",
" 'cf',\n",
" 'gammahatDD',\n",
" 'epsilonUUU',\n",
" 'trK_rhs',\n",
" 'aDD',\n",
" 'deltaDD',\n",
" 'alpha_cdbarU',\n",
" 'alpha_cdbarD_dD',\n",
" 'alpha_cdbarUD',\n",
" 'gammabarDD_dupD',\n",
" 'gammahatdet',\n",
" 'aUD',\n",
" 'gammahatUU',\n",
" 'gammabarUU_dD',\n",
" 'gammabarUU',\n",
" 'phi',\n",
" 'hDD',\n",
" 'alpha',\n",
" 'gammabarDD_dD',\n",
" 'trK',\n",
" 'gammabarDD',\n",
" 'aUU',\n",
" 'gammabardet',\n",
" 'alpha_cdbarD',\n",
" 'vetU',\n",
" 'cf_dupD',\n",
" 'GammabarUDD',\n",
" 'vetU_dD')"
]
},
"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": {
"execution": {
"iopub.execute_input": "2023-04-18T16:58:03.742389Z",
"iopub.status.busy": "2023-04-18T16:58:03.742276Z",
"iopub.status.idle": "2023-04-18T16:58:04.925559Z",
"shell.execute_reply": "2023-04-18T16:58:04.925052Z"
}
},
"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": {
"execution": {
"iopub.execute_input": "2023-04-18T16:58:04.928621Z",
"iopub.status.busy": "2023-04-18T16:58:04.928510Z",
"iopub.status.idle": "2023-04-18T16:58:05.677227Z",
"shell.execute_reply": "2023-04-18T16:58:05.676740Z"
}
},
"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": [
"('hDD_dD',\n",
" 'gammabardet_dD',\n",
" 'phi_cdbarD',\n",
" 'alpha_dD',\n",
" 'cf_rhs',\n",
" 'hDD_dupD',\n",
" 'alpha_cdbarU_dD',\n",
" 'alpha_dDD',\n",
" 'GammahatUDD',\n",
" 'h_rhsDD',\n",
" 'cf',\n",
" 'gammahatDD',\n",
" 'epsilonUUU',\n",
" 'trK_rhs',\n",
" 'aDD',\n",
" 'cf_dD',\n",
" 'deltaDD',\n",
" 'alpha_cdbarU',\n",
" 'alpha_cdbarD_dD',\n",
" 'alpha_cdbarUD',\n",
" 'gammabarDD_dupD',\n",
" 'gammahatdet',\n",
" 'aUD',\n",
" 'gammahatUU',\n",
" 'gammabarUU_dD',\n",
" 'gammabarUU',\n",
" 'phi',\n",
" 'hDD',\n",
" 'alpha',\n",
" 'gammabarDD_dD',\n",
" 'trK',\n",
" 'gammabarDD',\n",
" 'aUU',\n",
" 'gammabardet',\n",
" 'alpha_cdbarD',\n",
" 'vetU',\n",
" 'cf_dupD',\n",
" 'GammabarUDD',\n",
" 'trK_dupD',\n",
" 'vetU_dD')"
]
},
"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": "2023-04-18T16:58:05.680168Z",
"iopub.status.busy": "2023-04-18T16:58:05.680052Z",
"iopub.status.idle": "2023-04-18T16:58:06.944858Z",
"shell.execute_reply": "2023-04-18T16:58:06.944343Z"
}
},
"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": "2023-04-18T16:58:06.949109Z",
"iopub.status.busy": "2023-04-18T16:58:06.948793Z",
"iopub.status.idle": "2023-04-18T16:58:07.696088Z",
"shell.execute_reply": "2023-04-18T16:58:07.695577Z"
}
},
"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": {
"execution": {
"iopub.execute_input": "2023-04-18T16:58:07.700231Z",
"iopub.status.busy": "2023-04-18T16:58:07.699546Z",
"iopub.status.idle": "2023-04-18T16:58:08.761622Z",
"shell.execute_reply": "2023-04-18T16:58:08.761055Z"
}
},
"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": {
"execution": {
"iopub.execute_input": "2023-04-18T16:58:08.764647Z",
"iopub.status.busy": "2023-04-18T16:58:08.764518Z",
"iopub.status.idle": "2023-04-18T16:58:09.801701Z",
"shell.execute_reply": "2023-04-18T16:58:09.801131Z"
}
},
"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": {
"execution": {
"iopub.execute_input": "2023-04-18T16:58:09.805104Z",
"iopub.status.busy": "2023-04-18T16:58:09.804976Z",
"iopub.status.idle": "2023-04-18T16:58:10.885847Z",
"shell.execute_reply": "2023-04-18T16:58:10.885287Z"
}
},
"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": {
"execution": {
"iopub.execute_input": "2023-04-18T16:58:10.889631Z",
"iopub.status.busy": "2023-04-18T16:58:10.889317Z",
"iopub.status.idle": "2023-04-18T16:58:11.972021Z",
"shell.execute_reply": "2023-04-18T16:58:11.971437Z"
}
},
"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": {
"execution": {
"iopub.execute_input": "2023-04-18T16:58:11.975989Z",
"iopub.status.busy": "2023-04-18T16:58:11.975642Z",
"iopub.status.idle": "2023-04-18T16:58:13.082293Z",
"shell.execute_reply": "2023-04-18T16:58:13.081752Z"
}
},
"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": [
"('vetU_cdhatD_dD',\n",
" 'hDD_dD',\n",
" 'gammabardet_dD',\n",
" 'phi_cdbarD',\n",
" 'alpha_dD',\n",
" 'cf_rhs',\n",
" 'hDD_dupD',\n",
" 'alpha_cdbarU_dD',\n",
" 'alpha_dDD',\n",
" 'GammahatUDD',\n",
" 'h_rhsDD',\n",
" 'cf',\n",
" 'gammahatDD',\n",
" 'epsilonUUU',\n",
" 'trK_rhs',\n",
" 'DeltaU',\n",
" 'aDD',\n",
" 'gammahatdet_cdbarU',\n",
" 'cf_dD',\n",
" 'deltaDD',\n",
" 'alpha_cdbarU',\n",
" 'alpha_cdbarD_dD',\n",
" 'alpha_cdbarUD',\n",
" 'vetU_cdhatD',\n",
" 'gammabarDD_dupD',\n",
" 'DeltaUDD',\n",
" 'vetU_cdhatDD',\n",
" 'gammahatdet',\n",
" 'aUD',\n",
" 'gammahatdet_dD_cdbarU',\n",
" 'gammahatUU',\n",
" 'gammabarUU_dD',\n",
" 'gammahatdet_dD_cdbarD',\n",
" 'gammabarUU',\n",
" 'lambdaU_dD',\n",
" 'trK_dD',\n",
" 'phi',\n",
" 'hDD',\n",
" 'alpha',\n",
" 'gammabarDD_dD',\n",
" 'trK',\n",
" 'vetU_dD_cdbarD',\n",
" 'gammabarDD',\n",
" 'aUU',\n",
" 'lambdaU',\n",
" 'gammabardet',\n",
" 'alpha_cdbarD',\n",
" 'vetU_dDD',\n",
" 'vetU',\n",
" 'gammahatdet_cdbarD',\n",
" 'vetU_dD_cdbarU',\n",
" 'Lambdabar_rhsU',\n",
" 'cf_dupD',\n",
" 'GammabarUDD',\n",
" 'trK_dupD',\n",
" 'vetU_cdbarD',\n",
" 'gammahatdet_dD',\n",
" 'vetU_dD',\n",
" 'vetU_cdbarU')"
]
},
"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": {
"execution": {
"iopub.execute_input": "2023-04-18T16:58:13.087025Z",
"iopub.status.busy": "2023-04-18T16:58:13.086714Z",
"iopub.status.idle": "2023-04-18T16:58:15.824524Z",
"shell.execute_reply": "2023-04-18T16:58:15.823970Z"
}
},
"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": {
"execution": {
"iopub.execute_input": "2023-04-18T16:58:15.826790Z",
"iopub.status.busy": "2023-04-18T16:58:15.826674Z",
"iopub.status.idle": "2023-04-18T16:58:16.936737Z",
"shell.execute_reply": "2023-04-18T16:58:16.936247Z"
}
},
"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": [
"('vetU_cdhatD_dD',\n",
" 'hDD_dD',\n",
" 'gammabardet_dD',\n",
" 'phi_cdbarD',\n",
" 'alpha_dD',\n",
" 'cf_rhs',\n",
" 'hDD_dupD',\n",
" 'alpha_cdbarU_dD',\n",
" 'alpha_dDD',\n",
" 'GammahatUDD',\n",
" 'h_rhsDD',\n",
" 'cf',\n",
" 'gammahatDD',\n",
" 'lambdaU_dupD',\n",
" 'epsilonUUU',\n",
" 'trK_rhs',\n",
" 'DeltaU',\n",
" 'aDD',\n",
" 'gammahatdet_cdbarU',\n",
" 'cf_dD',\n",
" 'deltaDD',\n",
" 'alpha_cdbarU',\n",
" 'alpha_cdbarD_dD',\n",
" 'alpha_cdbarUD',\n",
" 'vetU_cdhatD',\n",
" 'gammabarDD_dupD',\n",
" 'DeltaUDD',\n",
" 'vetU_cdhatDD',\n",
" 'gammahatdet',\n",
" 'aUD',\n",
" 'gammahatdet_dD_cdbarU',\n",
" 'gammahatUU',\n",
" 'gammabarUU_dD',\n",
" 'gammahatdet_dD_cdbarD',\n",
" 'gammabarUU',\n",
" 'trK_dD',\n",
" 'phi',\n",
" 'hDD',\n",
" 'alpha',\n",
" 'gammabarDD_dD',\n",
" 'trK',\n",
" 'vetU_dD_cdbarD',\n",
" 'gammabarDD',\n",
" 'aUU',\n",
" 'lambdaU',\n",
" 'gammabardet',\n",
" 'alpha_cdbarD',\n",
" 'vetU_dDD',\n",
" 'vetU',\n",
" 'gammahatdet_cdbarD',\n",
" 'vetU_dD_cdbarU',\n",
" 'Lambdabar_rhsU',\n",
" 'cf_dupD',\n",
" 'GammabarUDD',\n",
" 'trK_dupD',\n",
" 'vetU_cdbarD',\n",
" 'gammahatdet_dD',\n",
" 'vetU_dD',\n",
" 'vetU_cdbarU')"
]
},
"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": "2023-04-18T16:58:16.940354Z",
"iopub.status.busy": "2023-04-18T16:58:16.940042Z",
"iopub.status.idle": "2023-04-18T16:58:19.664414Z",
"shell.execute_reply": "2023-04-18T16:58:19.663910Z"
}
},
"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": "2023-04-18T16:58:19.668747Z",
"iopub.status.busy": "2023-04-18T16:58:19.668442Z",
"iopub.status.idle": "2023-04-18T16:58:20.812813Z",
"shell.execute_reply": "2023-04-18T16:58:20.812301Z"
}
},
"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": "2023-04-18T16:58:20.816034Z",
"iopub.status.busy": "2023-04-18T16:58:20.815918Z",
"iopub.status.idle": "2023-04-18T16:58:21.970653Z",
"shell.execute_reply": "2023-04-18T16:58:21.970082Z"
}
},
"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": "2023-04-18T16:58:21.975040Z",
"iopub.status.busy": "2023-04-18T16:58:21.974722Z",
"iopub.status.idle": "2023-04-18T16:58:23.142395Z",
"shell.execute_reply": "2023-04-18T16:58:23.141856Z"
}
},
"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": [
"('vetU_cdhatD_dD',\n",
" 'hDD_dD',\n",
" 'gammabardet_dD',\n",
" 'phi_cdbarD',\n",
" 'phi_cdbarDD',\n",
" 'aDD_dD',\n",
" 'alpha_dD',\n",
" 'cf_rhs',\n",
" 'hDD_dupD',\n",
" 'alpha_cdbarU_dD',\n",
" 'alpha_dDD',\n",
" 'GammahatUDD',\n",
" 'h_rhsDD',\n",
" 'cf',\n",
" 'gammahatDD',\n",
" 'lambdaU_dupD',\n",
" 'cf_dDD',\n",
" 'epsilonUUU',\n",
" 'trK_rhs',\n",
" 'DeltaU',\n",
" 'aDD',\n",
" 'gammahatdet_cdbarU',\n",
" 'cf_dD',\n",
" 'deltaDD',\n",
" 'alpha_cdbarU',\n",
" 'alpha_cdbarD_dD',\n",
" 'alpha_cdbarUD',\n",
" 'vetU_cdhatD',\n",
" 'alpha_cdbarDD',\n",
" 'gammabarDD_dupD',\n",
" 'DeltaUDD',\n",
" 'vetU_cdhatDD',\n",
" 'gammahatdet',\n",
" 'aUD',\n",
" 'a_rhsDD',\n",
" 'gammahatdet_dD_cdbarU',\n",
" 'gammahatUU',\n",
" 'gammabarUU_dD',\n",
" 'gammahatdet_dD_cdbarD',\n",
" 'gammabarUU',\n",
" 'trK_dD',\n",
" 'phi',\n",
" 'hDD',\n",
" 'alpha',\n",
" 'gammabarDD_dD',\n",
" 'trK',\n",
" 'vetU_dD_cdbarD',\n",
" 'gammabarDD',\n",
" 'aUU',\n",
" 'lambdaU',\n",
" 'gammabardet',\n",
" 'alpha_cdbarD',\n",
" 'vetU_dDD',\n",
" 'vetU',\n",
" 'gammahatdet_cdbarD',\n",
" 'vetU_dD_cdbarU',\n",
" 'Lambdabar_rhsU',\n",
" 'cf_dupD',\n",
" 'GammabarUDD',\n",
" 'trK_dupD',\n",
" 'vetU_cdbarD',\n",
" 'gammahatdet_dD',\n",
" 'vetU_dD',\n",
" 'phi_cdbarD_dD',\n",
" 'vetU_cdbarU',\n",
" 'XDD',\n",
" 'XhatDD',\n",
" 'RbarDD')"
]
},
"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": {
"execution": {
"iopub.execute_input": "2023-04-18T16:58:23.146662Z",
"iopub.status.busy": "2023-04-18T16:58:23.146336Z",
"iopub.status.idle": "2023-04-18T16:58:32.271926Z",
"shell.execute_reply": "2023-04-18T16:58:32.271403Z"
}
},
"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": {
"execution": {
"iopub.execute_input": "2023-04-18T16:58:32.275692Z",
"iopub.status.busy": "2023-04-18T16:58:32.275388Z",
"iopub.status.idle": "2023-04-18T16:58:33.449437Z",
"shell.execute_reply": "2023-04-18T16:58:33.448940Z"
}
},
"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": [
"('vetU_cdhatD_dD',\n",
" 'hDD_dD',\n",
" 'gammabardet_dD',\n",
" 'phi_cdbarD',\n",
" 'phi_cdbarDD',\n",
" 'alpha_dD',\n",
" 'cf_rhs',\n",
" 'hDD_dupD',\n",
" 'alpha_cdbarU_dD',\n",
" 'alpha_dDD',\n",
" 'GammahatUDD',\n",
" 'h_rhsDD',\n",
" 'cf',\n",
" 'gammahatDD',\n",
" 'lambdaU_dupD',\n",
" 'cf_dDD',\n",
" 'epsilonUUU',\n",
" 'trK_rhs',\n",
" 'DeltaU',\n",
" 'aDD',\n",
" 'gammahatdet_cdbarU',\n",
" 'cf_dD',\n",
" 'deltaDD',\n",
" 'alpha_cdbarU',\n",
" 'alpha_cdbarD_dD',\n",
" 'alpha_cdbarUD',\n",
" 'vetU_cdhatD',\n",
" 'alpha_cdbarDD',\n",
" 'gammabarDD_dupD',\n",
" 'DeltaUDD',\n",
" 'vetU_cdhatDD',\n",
" 'gammahatdet',\n",
" 'aUD',\n",
" 'a_rhsDD',\n",
" 'gammahatdet_dD_cdbarU',\n",
" 'gammahatUU',\n",
" 'gammabarUU_dD',\n",
" 'gammahatdet_dD_cdbarD',\n",
" 'aDD_dupD',\n",
" 'gammabarUU',\n",
" 'trK_dD',\n",
" 'phi',\n",
" 'hDD',\n",
" 'alpha',\n",
" 'gammabarDD_dD',\n",
" 'trK',\n",
" 'vetU_dD_cdbarD',\n",
" 'gammabarDD',\n",
" 'aUU',\n",
" 'lambdaU',\n",
" 'gammabardet',\n",
" 'alpha_cdbarD',\n",
" 'vetU_dDD',\n",
" 'vetU',\n",
" 'gammahatdet_cdbarD',\n",
" 'vetU_dD_cdbarU',\n",
" 'Lambdabar_rhsU',\n",
" 'cf_dupD',\n",
" 'GammabarUDD',\n",
" 'trK_dupD',\n",
" 'vetU_cdbarD',\n",
" 'gammahatdet_dD',\n",
" 'vetU_dD',\n",
" 'phi_cdbarD_dD',\n",
" 'vetU_cdbarU',\n",
" 'XDD',\n",
" 'XhatDD',\n",
" 'RbarDD')"
]
},
"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": "2023-04-18T16:58:33.452500Z",
"iopub.status.busy": "2023-04-18T16:58:33.452389Z",
"iopub.status.idle": "2023-04-18T16:58:42.667171Z",
"shell.execute_reply": "2023-04-18T16:58:42.666664Z"
}
},
"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": "2023-04-18T16:58:42.671002Z",
"iopub.status.busy": "2023-04-18T16:58:42.670673Z",
"iopub.status.idle": "2023-04-18T16:58:43.874148Z",
"shell.execute_reply": "2023-04-18T16:58:43.873638Z"
}
},
"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_cdbarDD',\n",
" 'alpha_dD',\n",
" 'lambdaU_dupD',\n",
" 'vetU_dupD',\n",
" 'cf_dD',\n",
" 'alpha_cdbarDD',\n",
" 'alpha_cdbarU',\n",
" 'vetU_cdhatDD',\n",
" 'gammahatdet_dD_cdbarU',\n",
" 'betU',\n",
" 'gammabarUU_dD',\n",
" 'alpha_rhs',\n",
" 'alpha',\n",
" 'gammabarDD_dD',\n",
" 'gammabardet',\n",
" 'GammabarUDD',\n",
" 'trK_dupD',\n",
" 'RbarDD',\n",
" 'phi_cdbarD',\n",
" 'hDD_dupD',\n",
" 'alpha_dDD',\n",
" 'GammahatUDD',\n",
" 'h_rhsDD',\n",
" 'gammahatDD',\n",
" 'cf_dDD',\n",
" 'DeltaU',\n",
" 'aDD',\n",
" 'vetU_cdhatD',\n",
" 'gammahatdet',\n",
" 'gammahatdet_dD_cdbarD',\n",
" 'betU_cdbarD',\n",
" 'aDD_dupD',\n",
" 'vetU_dD_cdbarD',\n",
" 'alpha_cdbarD',\n",
" 'vetU_dDD',\n",
" 'vetU',\n",
" 'gammahatdet_cdbarD',\n",
" 'Lambdabar_rhsU',\n",
" 'vetU_dD',\n",
" 'phi_cdbarD_dD',\n",
" 'XhatDD',\n",
" 'eta',\n",
" 'gammabardet_dD',\n",
" 'cf_rhs',\n",
" 'alpha_cdbarU_dD',\n",
" 'cf',\n",
" 'epsilonUUU',\n",
" 'deltaDD',\n",
" 'a_rhsDD',\n",
" 'gammahatUU',\n",
" 'phi',\n",
" 'hDD',\n",
" 'bet_rhsU',\n",
" 'vetU_dD_cdbarU',\n",
" 'XDD',\n",
" 'vetU_cdbarU',\n",
" 'vetU_cdhatD_dD',\n",
" 'hDD_dD',\n",
" 'alpha_dupD',\n",
" 'trK_rhs',\n",
" 'gammahatdet_cdbarU',\n",
" 'alpha_cdbarD_dD',\n",
" 'alpha_cdbarUD',\n",
" 'gammabarDD_dupD',\n",
" 'DeltaUDD',\n",
" 'aUD',\n",
" 'betU_dupD',\n",
" 'gammabarUU',\n",
" 'trK_dD',\n",
" 'vet_rhsU',\n",
" 'lambdaU_cdbarD',\n",
" 'trK',\n",
" 'gammabarDD',\n",
" 'aUU',\n",
" 'lambdaU',\n",
" 'cf_dupD',\n",
" 'vetU_cdbarD',\n",
" 'gammahatdet_dD')"
]
},
"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": "2023-04-18T16:58:43.877454Z",
"iopub.status.busy": "2023-04-18T16:58:43.877337Z",
"iopub.status.idle": "2023-04-18T16:58:43.884945Z",
"shell.execute_reply": "2023-04-18T16:58:43.884507Z"
}
},
"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": "2023-04-18T16:58:43.889651Z",
"iopub.status.busy": "2023-04-18T16:58:43.889342Z",
"iopub.status.idle": "2023-04-18T16:58:44.361311Z",
"shell.execute_reply": "2023-04-18T16:58:44.360801Z"
}
},
"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": "2023-04-18T16:58:44.364569Z",
"iopub.status.busy": "2023-04-18T16:58:44.364359Z",
"iopub.status.idle": "2023-04-18T16:58:47.685765Z",
"shell.execute_reply": "2023-04-18T16:58:47.685252Z"
}
},
"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": "2023-04-18T16:58:47.689814Z",
"iopub.status.busy": "2023-04-18T16:58:47.689483Z",
"iopub.status.idle": "2023-04-18T16:58:49.258351Z",
"shell.execute_reply": "2023-04-18T16:58:49.257859Z"
},
"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_cdbarDU',\n",
" 'phi_cdbarDD',\n",
" 'alpha_dD',\n",
" 'lambdaU_dupD',\n",
" 'vetU_dupD',\n",
" 'cf_dD',\n",
" 'alpha_cdbarDD',\n",
" 'alpha_cdbarU',\n",
" 'Rbar',\n",
" 'vetU_cdhatDD',\n",
" 'gammahatdet_dD_cdbarU',\n",
" 'betU',\n",
" 'gammabarUU_dD',\n",
" 'alpha_rhs',\n",
" 'alpha',\n",
" 'gammabarDD_dD',\n",
" 'gammabardet',\n",
" 'hDD_dDD',\n",
" 'GammabarUDD',\n",
" 'RbarDD',\n",
" 'aUU_cdhatD',\n",
" 'phi_cdbarD',\n",
" 'aDD_dD',\n",
" 'lambdaU_ldvet',\n",
" 'alpha_dDD',\n",
" 'GammahatUDD',\n",
" 'h_rhsDD',\n",
" 'gammahatDD',\n",
" 'cf_dDD',\n",
" 'DeltaU',\n",
" 'aDD',\n",
" 'vetU_cdhatD',\n",
" 'gammabarDD_cdhatD_dD',\n",
" 'gammahatdet',\n",
" 'alpha_ldvet',\n",
" 'gammahatdet_dD_cdbarD',\n",
" 'betU_cdbarD',\n",
" 'lambdaU_dD',\n",
" 'gammabarDD_cdhatDD',\n",
" 'vetU_dD_cdbarD',\n",
" 'lambdaU_cdhatD',\n",
" 'alpha_cdbarD',\n",
" 'vetU_dDD',\n",
" 'vetU',\n",
" 'gammahatdet_cdbarD',\n",
" 'Lambdabar_rhsU',\n",
" 'vetU_dD',\n",
" 'phi_cdbarD_dD',\n",
" 'XhatDD',\n",
" 'eta',\n",
" 'gammabardet_dD',\n",
" 'cf_rhs',\n",
" 'alpha_cdbarU_dD',\n",
" 'cf',\n",
" 'MU',\n",
" 'aDD_ldvet',\n",
" 'epsilonUUU',\n",
" 'deltaDD',\n",
" 'phi_cdbarU',\n",
" 'gammabarDD_cdhatD',\n",
" 'a_rhsDD',\n",
" 'aUD_dD',\n",
" 'gammahatUU',\n",
" 'trK_ldvet',\n",
" 'phi',\n",
" 'hDD',\n",
" 'phi_ldvet',\n",
" 'bet_rhsU',\n",
" 'vetU_dD_cdbarU',\n",
" 'XDD',\n",
" 'gammabarDD_dDD',\n",
" 'vetU_cdbarU',\n",
" 'vetU_cdhatD_dD',\n",
" 'hDD_dD',\n",
" 'DeltaDDD',\n",
" 'trK_rhs',\n",
" 'gammahatdet_cdbarU',\n",
" 'alpha_cdbarD_dD',\n",
" 'alpha_cdbarUD',\n",
" 'aUU_dD',\n",
" 'DeltaUDD',\n",
" 'gammabarDD_ldvet',\n",
" 'aUD',\n",
" 'betU_dupD',\n",
" 'gammabarUU',\n",
" 'trK_dD',\n",
" 'vet_rhsU',\n",
" 'lambdaU_cdbarD',\n",
" 'trK',\n",
" 'gammabarDD',\n",
" 'aUU',\n",
" 'H',\n",
" 'lambdaU',\n",
" 'vetU_cdbarD',\n",
" 'gammahatdet_dD')"
]
},
"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": {
"execution": {
"iopub.execute_input": "2023-04-18T16:58:49.262237Z",
"iopub.status.busy": "2023-04-18T16:58:49.261888Z",
"iopub.status.idle": "2023-04-18T16:58:50.605376Z",
"shell.execute_reply": "2023-04-18T16:58:50.604867Z"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Assertion Passed!\n"
]
}
],
"source": [
"assert_equal(H, bssncon.H)"
]
},
{
"cell_type": "code",
"execution_count": 43,
"metadata": {
"execution": {
"iopub.execute_input": "2023-04-18T16:58:50.608998Z",
"iopub.status.busy": "2023-04-18T16:58:50.608676Z",
"iopub.status.idle": "2023-04-18T16:58:55.139505Z",
"shell.execute_reply": "2023-04-18T16:58:55.138993Z"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Assertion Passed!\n"
]
}
],
"source": [
"assert_equal(MU, bssncon.MU)"
]
},
{
"cell_type": "code",
"execution_count": 44,
"metadata": {
"execution": {
"iopub.execute_input": "2023-04-18T16:58:55.142569Z",
"iopub.status.busy": "2023-04-18T16:58:55.142457Z",
"iopub.status.idle": "2023-04-18T16:59:03.610706Z",
"shell.execute_reply": "2023-04-18T16:59:03.610116Z"
}
},
"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": {
"execution": {
"iopub.execute_input": "2023-04-18T16:59:03.613867Z",
"iopub.status.busy": "2023-04-18T16:59:03.613250Z",
"iopub.status.idle": "2023-04-18T16:59:11.248113Z",
"shell.execute_reply": "2023-04-18T16:59:11.246849Z"
}
},
"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.11.1"
},
"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": 4
}