{ "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 }