54 for (
size_t i = 0; i < 3; ++i) {
55 for (
size_t j = 0;
j < 3; ++
j) {
62 T chi = compute_conformal_factor(metric,
g_phys);
71 for (
int k = 0;
k < 3; ++
k)
72 for (
int l = 0;
l < 3; ++
l)
76 for (
int k = 0;
k < 3; ++
k)
77 for (
int l = 0;
l < 3; ++
l)
84 for (
size_t i = 0; i < 3; ++i) {
85 for (
size_t j = i + 1;
j < 3; ++
j) {
86 T avg = 0.5 * (result(i,
j) + result(
j, i));
87 result(i,
j) = result(
j, i) =
avg;
110 for (
int k = 0;
k < 3; ++
k) {
113 for (
int j = 0;
j < 3; ++
j) {
119 for (
int i = 0; i < 3; ++i) {
120 for (
int j = 0;
j < 3; ++
j) {
122 for (
int k = 0;
k < 3; ++
k) {
126 R2(i,
j) =
static_cast<T>(0.5) *
sum;
151 for (
size_t i = 0; i < 3; ++i) {
152 for (
size_t j = 0;
j < 3; ++
j) {
154 for (
size_t k = 0;
k < 3; ++
k) {
156 for (
size_t m = 0;
m < 3; ++
m) {
157 G_ijk += gamma_tilde(i,
m) * christoffel_tilde(
m,
j,
k);
158 G_jik += gamma_tilde(
j,
m) * christoffel_tilde(
m, i,
k);
185 for (
size_t i = 0; i < 3; ++i) {
186 for (
size_t j = 0;
j < 3; ++
j) {
189 for (
size_t m = 0;
m < 3; ++
m) {
191 for (
size_t k = 0;
k < 3; ++
k) {
192 term1 += christoffel_tilde(
k,
ell, i) * christoffel_tilde(
j,
k,
m);
194 for (
size_t k = 0;
k < 3; ++
k) {
195 term1 += christoffel_tilde(
k,
ell,
j) * christoffel_tilde(i,
k,
m);
198 for (
size_t k = 0;
k < 3; ++
k) {
199 term2 += christoffel_tilde(
k, i,
m) * christoffel_tilde(
j,
k,
ell);
237 for (
size_t i = 0; i < 3; ++i) {
238 for (
size_t j = 0;
j < 3; ++
j) {
static FrontendPluginRegistry::Add< TensoriumPluginAction > X("tensorium-dispatch", "Handle #pragma tensorium directives")
Register the plugin under the name "tensorium-dispatch".
Multi-dimensional tensor class with fixed rank and SIMD support.
Definition Tensor.hpp:25
A callable 4D metric class for general relativity (Minkowski, Schwarzschild, Kerr,...
Definition Metric.hpp:27
void BSSN(const tensorium::Vector< T > &X, T &alpha, tensorium::Vector< T > &beta, tensorium::Tensor< T, 2 > &gamma) const
Extract BSSN 3+1 variables (lapse, shift, and spatial metric)
Definition Metric.hpp:83
Provides methods to compute the conformal Ricci tensor in the BSSN formulation.
Definition BSSNRicciTildeTensor.hpp:36
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 .
Definition BSSNRicciTildeTensor.hpp:104
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:
Definition BSSNRicciTildeTensor.hpp:222
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:
Definition BSSNRicciTildeTensor.hpp:180
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 using scalar autodiff.
Definition BSSNRicciTildeTensor.hpp:48
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:
Definition BSSNRicciTildeTensor.hpp:145
Definition BSSNAtildeTensor.hpp:10
tensorium::Vector< T > partial_scalar(const tensorium::Vector< T > &X, T dx, T dy, T dz, ScalarFunc &&func)
Definition BSSNDerivatives.hpp:119
Definition Derivate.hpp:24
Definition BSSNChiContext.hpp:10