Tensorium
Loading...
Searching...
No Matches
tensorium_RG::RicciTildeTensor< T > Class Template Reference

Provides methods to compute the conformal Ricci tensor \( \tilde{R}_{ij} \) in the BSSN formulation. More...

#include <BSSNRicciTildeTensor.hpp>

Collaboration diagram for tensorium_RG::RicciTildeTensor< T >:

Static Public Member Functions

static tensorium::Tensor< T, 2 > compute_laplacian_term (const tensorium::Vector< T > &X, T dx, T dy, T dz, const Metric< T > &metric, const tensorium::Tensor< T, 2 > &gamma_tilde_inv)
 Compute \( R^{(1)}_{ij} = -\frac{1}{2} \tilde{\gamma}^{kl} \partial_k \partial_l \tilde{\gamma}_{ij} \) using scalar autodiff.
 
static tensorium::Tensor< T, 2 > compute_dGamma_term (const tensorium::Vector< T > &X, T dx, T dy, T dz, const tensorium::Vector< T > &tilde_Gamma, const tensorium::Tensor< T, 2 > &tilde_gamma_contract)
 Compute \( R^{(2)}_{ij} = \frac{1}{2} \left( \nabla_i \tilde{\Gamma}_j + \nabla_j \tilde{\Gamma}_i \right) \).
 
static tensorium::Tensor< T, 2 > compute_GammaGamma_term (const tensorium::Vector< T > &tilde_Gamma, const tensorium::Tensor< T, 3 > &christoffel_tilde, const tensorium::Tensor< T, 2 > &gamma_tilde)
 Compute the nonlinear contracted term:
 
static tensorium::Tensor< T, 2 > compute_GammaProduct_term (const tensorium::Tensor< T, 2 > &gamma_tilde_inv, const tensorium::Tensor< T, 3 > &christoffel_tilde)
 Compute the quadratic Christoffel term:
 
static tensorium::Tensor< T, 2 > compute_Ricci_Tilde_tensor (const ChiContext< T > &chi_context, const tensorium::Tensor< T, 2 > &gamma_tilde_inv, const tensorium::Vector< T > &tilde_Gamma, const tensorium::Tensor< T, 3 > &christoffel_tilde, const tensorium::Tensor< T, 2 > &gamma_tilde)
 Combine all four contributions to compute the conformal Ricci tensor:
 

Detailed Description

template<typename T>
class tensorium_RG::RicciTildeTensor< T >

Provides methods to compute the conformal Ricci tensor \( \tilde{R}_{ij} \) in the BSSN formulation.

The conformal Ricci tensor is given by:

\[ \tilde{R}_{ij} = R^{(1)}_{ij} + R^{(2)}_{ij} + R^{(3)}_{ij} + R^{(4)}_{ij} \]

where:

  • \( R^{(1)}_{ij} = -\frac{1}{2} \tilde{\gamma}^{kl} \partial_k \partial_l \tilde{\gamma}_{ij} \)
  • \( R^{(2)}_{ij} = \frac{1}{2} \left( \nabla_i \tilde{\Gamma}_j + \nabla_j \tilde{\Gamma}_i \right) \)
  • \( R^{(3)}_{ij} = \frac{1}{2} \tilde{\Gamma}^k \left( \tilde{\gamma}_{ki} \tilde{\Gamma}^l_{jl} + \tilde{\gamma}_{kj} \tilde{\Gamma}^l_{il} \right) \)
  • \( R^{(4)}_{ij} = \tilde{\gamma}^{\ell m} \left( 2 \tilde{\Gamma}^k_{\ell(i} \tilde{\Gamma}_{j)km} + \tilde{\Gamma}^k_{im} \tilde{\Gamma}_{k\ell j} \right) \)

Each term is computed separately and combined to give \( \tilde{R}_{ij} \).

Member Function Documentation

◆ compute_dGamma_term()

template<typename T >
static tensorium::Tensor< T, 2 > tensorium_RG::RicciTildeTensor< T >::compute_dGamma_term ( const tensorium::Vector< T > & X,
T dx,
T dy,
T dz,
const tensorium::Vector< T > & tilde_Gamma,
const tensorium::Tensor< T, 2 > & tilde_gamma_contract )
inlinestatic

Compute \( R^{(2)}_{ij} = \frac{1}{2} \left( \nabla_i \tilde{\Gamma}_j + \nabla_j \tilde{\Gamma}_i \right) \).

Parameters
XSpatial point
dx,dy,dzGrid spacings
tilde_GammaContracted conformal Christoffel vector \( \tilde{\Gamma}^i \)
tilde_gammaConformal metric \( \tilde{\gamma}_{ij} \)
Returns
Symmetrized derivative term \( R^{(2)}_{ij} \)

References tensorium_RG::partial_scalar(), and X().

Referenced by tensorium_RG::RicciTildeTensor< T >::compute_Ricci_Tilde_tensor().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ compute_GammaGamma_term()

template<typename T >
static tensorium::Tensor< T, 2 > tensorium_RG::RicciTildeTensor< T >::compute_GammaGamma_term ( const tensorium::Vector< T > & tilde_Gamma,
const tensorium::Tensor< T, 3 > & christoffel_tilde,
const tensorium::Tensor< T, 2 > & gamma_tilde )
inlinestatic

Compute the nonlinear contracted term:

\[ R^{(3)}_{ij} = \frac{1}{2} \tilde{\Gamma}^k \left( \tilde{\gamma}_{ki} \tilde{\Gamma}^l_{jl} + \tilde{\gamma}_{kj} \tilde{\Gamma}^l_{il} \right) \]

Parameters
tilde_GammaContracted Christoffel symbols \( \tilde{\Gamma}^k \)
christoffel_tildeChristoffel symbols \( \tilde{\Gamma}^i_{jk} \)
gamma_tildeConformal metric \( \tilde{\gamma}_{ij} \)
Returns
Tensor \( R^{(3)}_{ij} \)

Referenced by tensorium_RG::RicciTildeTensor< T >::compute_Ricci_Tilde_tensor().

Here is the caller graph for this function:

◆ compute_GammaProduct_term()

template<typename T >
static tensorium::Tensor< T, 2 > tensorium_RG::RicciTildeTensor< T >::compute_GammaProduct_term ( const tensorium::Tensor< T, 2 > & gamma_tilde_inv,
const tensorium::Tensor< T, 3 > & christoffel_tilde )
inlinestatic

Compute the quadratic Christoffel term:

\[ R^{(4)}_{ij} = \tilde{\gamma}^{\ell m} \left( 2 \tilde{\Gamma}^k_{\ell(i} \tilde{\Gamma}_{j)km} + \tilde{\Gamma}^k_{im} \tilde{\Gamma}_{k\ell j} \right) \]

Parameters
gamma_tilde_invInverse conformal metric \( \tilde{\gamma}^{\ell m} \)
christoffel_tildeChristoffel symbols \( \tilde{\Gamma}^i_{jk} \)
Returns
Tensor \( R^{(4)}_{ij} \)

Referenced by tensorium_RG::RicciTildeTensor< T >::compute_Ricci_Tilde_tensor().

Here is the caller graph for this function:

◆ compute_laplacian_term()

template<typename T >
static tensorium::Tensor< T, 2 > tensorium_RG::RicciTildeTensor< T >::compute_laplacian_term ( const tensorium::Vector< T > & X,
T dx,
T dy,
T dz,
const Metric< T > & metric,
const tensorium::Tensor< T, 2 > & gamma_tilde_inv )
inlinestatic

Compute \( R^{(1)}_{ij} = -\frac{1}{2} \tilde{\gamma}^{kl} \partial_k \partial_l \tilde{\gamma}_{ij} \) using scalar autodiff.

Parameters
XPosition vector
dx,dy,dzGrid spacings
metricMetric object to evaluate \( \tilde{\gamma}_{ij} \)
gamma_tilde_invInverse of the conformal metric \( \tilde{\gamma}^{kl} \)
Returns
Laplacian term \( R^{(1)}_{ij} \)

References tensorium_RG::Metric< T >::BSSN(), chi, and X().

Referenced by tensorium_RG::RicciTildeTensor< T >::compute_Ricci_Tilde_tensor().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ compute_Ricci_Tilde_tensor()

template<typename T >
static tensorium::Tensor< T, 2 > tensorium_RG::RicciTildeTensor< T >::compute_Ricci_Tilde_tensor ( const ChiContext< T > & chi_context,
const tensorium::Tensor< T, 2 > & gamma_tilde_inv,
const tensorium::Vector< T > & tilde_Gamma,
const tensorium::Tensor< T, 3 > & christoffel_tilde,
const tensorium::Tensor< T, 2 > & gamma_tilde )
inlinestatic

Combine all four contributions to compute the conformal Ricci tensor:

\[ \tilde{R}_{ij} = R^{(1)}_{ij} + R^{(2)}_{ij} + R^{(3)}_{ij} + R^{(4)}_{ij} \]

Parameters
chi_contextChiContext (holds metric, position, grid spacing, etc.)
gamma_tilde_invInverse conformal metric
tilde_GammaContracted conformal Christoffel vector
christoffel_tildeConformal Christoffel symbols
gamma_tildeConformal metric
Returns
Tensor \( \tilde{R}_{ij} \)

References tensorium_RG::RicciTildeTensor< T >::compute_dGamma_term(), tensorium_RG::RicciTildeTensor< T >::compute_GammaGamma_term(), tensorium_RG::RicciTildeTensor< T >::compute_GammaProduct_term(), tensorium_RG::RicciTildeTensor< T >::compute_laplacian_term(), and X().

Referenced by tensorium_RG::RicciPhysicalTensor< T >::compute_Ricci_total(), and tensorium_RG::BSSN< T >::init_BSSN().

Here is the call graph for this function:
Here is the caller graph for this function:

The documentation for this class was generated from the following file: