#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-cottonmout...
trac@lists.einsteintoolkit.org