[ET Trac] #2916: Include Cottonmouth

Zach Etienne trac-noreply at einsteintoolkit.org
Thu Apr 23 09:55:53 CDT 2026


#2916: Include Cottonmouth

 Reporter: Beyhan Karakaş
   Status: open
Milestone: ET_2026_05
  Version: 
     Type: enhancement
 Priority: major
Component: EinsteinToolkit thorn

Comment (by Zach Etienne):

Issues found (sorry for the uneven formatting):

```
Issue 1:

Missing symmetrization in the conformal Ricci tensor inside the constraints/analysis block.

Where the bug is

In `fun_bssn_cons`, the code uses

    + Delta[uc] * Gammat[la, lb, lc]

but in the BSSN Ricci decomposition the corresponding term is the symmetrized object

    Delta^c * Gammat_(ab)c

which means

    (1/2) * Delta^c * Gammat_abc
  + (1/2) * Delta^c * Gammat_bac.

Minimal fix

Replace

    + Delta[uc] * Gammat[la, lb, lc]

by

    + Rational(1, 2) * Delta[uc] * Gammat[la, lb, lc]
    + Rational(1, 2) * Delta[uc] * Gammat[lb, la, lc]

Note that your own `fun_bssn_rhs` block already contains the correct symmetrized pair and therefore serves as an internal consistency check.
```

2. bssnok.py

```
* Issue 2
 - Severity high
 - Description of the error
 - The momentum-constraint matter source carries an extra factor of `w**2`. With `g_{ij} = (1 / w**2) * gt_{ij}`, one has `gamma^{ij} = w**2 * gt^{ij}`, but the conformal BSSN momentum constraint with free upper index uses `gt^{ij} * S_j`, not `gamma^{ij} * S_j`. The current code therefore overweights the source term by a factor of `w**2`.
 - Filename + line number(s)
 - Pasted file (filename not provided):638-648
 - Original code snippet
 - fun_bssn_cons.add_eqn(
       MomCons[ua],
       + gt[ua, uc] * gt[ub, ud] * (
           D(At[lc, ld], lb)
           - Gammat[uk, lc, lb] * At[lk, ld]
           - Gammat[uk, ld, lb] * At[lc, lk]
       )
       + 6 * At[ua, ub] * cdphi[lb]
       - Rational(2, 3) * gt[ua, ub] * D(trK, lb)
       # Matter
       - 8 * pi * w**2 * gt[ua, ub] * S[lb]
   )
 - Fixed code snippet.
 - fun_bssn_cons.add_eqn(
       MomCons[ua],
       + gt[ua, uc] * gt[ub, ud] * (
           D(At[lc, ld], lb)
           - Gammat[uk, lc, lb] * At[lk, ld]
           - Gammat[uk, ld, lb] * At[lc, lk]
       )
       + 6 * At[ua, ub] * cdphi[lb]
       - Rational(2, 3) * gt[ua, ub] * D(trK, lb)
       # Matter
       - 8 * pi * gt[ua, ub] * S[lb]
   )
 - Confidence
 - 96%

* Issue 3
 - Severity low
 - Description of the error
 - The comments defining `Delta` are mathematically malformed. They describe the contraction with the wrong index pattern, which can mislead a reader into thinking `Delta^i` is built from `tilde gamma^{i,j} tilde Gamma^a_{ab}` or `tilde gamma^{ij} tilde Gamma^i_{jk}`. The correct definition is `Delta^i = tilde gamma^{jk} tilde Gamma^i_{jk}`. The executable code below the comments is correct; only the comments are wrong.
 - Filename + line number(s)
 - Pasted file (filename not provided):273-275
 - Original code snippet
 - # \tilde{\gamma}^{i, j} \tilde{\Gamma}^a_{a b}
   # When \tilde{\Gamma}^{i} when it appears and its derivative are not needed,
   # the substitution \tilde{\Gamma}^{i} \rightarrow \tilde{gamma}^{ij} \tilde{\Gamma}^{i}_{jk} = \Delta^i
 - Fixed code snippet.
 - # \Delta^i = \tilde{\gamma}^{jk} \tilde{\Gamma}^i_{jk}
   # When \tilde{\Gamma}^{i} appears without derivatives, we replace it by
   # \Delta^i = \tilde{\gamma}^{jk} \tilde{\Gamma}^{i}_{jk}
 - Confidence
 - 99%
```


```
Issue 4:

linear_wave.py:
File sets an unphysical default amplitude for the wave:

    amplitude = cottonmouth_linear_wave_id.add_param(
        "amplitude",
        default=1.0,
        desc="Linear wave amplitude"
    )

A << 1 for a valid linearized wave.
```

--
Ticket URL: https://bitbucket.org/einsteintoolkit/tickets/issues/2916/include-cottonmouth
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.einsteintoolkit.org/pipermail/trac/attachments/20260423/3cc7552a/attachment.htm>


More information about the Trac mailing list