11#include "AbstractCCZ4.h"
12#include "tarch/logging/Log.h"
16#include "InitialValues.h"
32 static tarch::logging::Log
_log;
73 const double * NOALIAS Q,
74 const tarch::la::Vector<DIMENSIONS,double>& volumeCentre,
75 const tarch::la::Vector<DIMENSIONS,double>& volumeH,
79#ifdef IncludeTwoPunctures
85 const tarch::la::Vector<DIMENSIONS,double>& volumeCentre,
86 const tarch::la::Vector<DIMENSIONS,double>& volumeH
93 const double * NOALIAS Qinside,
94 double * NOALIAS Qoutside,
95 const tarch::la::Vector<DIMENSIONS,double>& faceCentre,
96 const tarch::la::Vector<DIMENSIONS,double>& volumeH,
106 const double * NOALIAS Q,
107 const tarch::la::Vector<DIMENSIONS,double>& volumeCentre,
108 const tarch::la::Vector<DIMENSIONS,double>& volumeH,
124 const double * NOALIAS Q,
125 const tarch::la::Vector<DIMENSIONS,double>& faceCentre,
126 const tarch::la::Vector<DIMENSIONS,double>& volumeH,
139 const double * NOALIAS Q,
140 const double * NOALIAS deltaQ,
141 const tarch::la::Vector<DIMENSIONS,double>& faceCentre,
142 const tarch::la::Vector<DIMENSIONS,double>& volumeH,
146 double * NOALIAS BgradQ
167 const double * NOALIAS Q,
168 const tarch::la::Vector<DIMENSIONS,double>& volumeCentre,
169 const tarch::la::Vector<DIMENSIONS,double>& volumeH,
173 ::exahype2::Solver::Offloadable
175 memset(S, 0, NumberOfUnknowns*
sizeof(
double));
176 applications::exahype2::ccz4::source(S,Q, CCZ4LapseType, CCZ4ds, CCZ4c, CCZ4e, CCZ4f, CCZ4bs, CCZ4sk, CCZ4xi, CCZ4itau, CCZ4eta, CCZ4k1, CCZ4k2, CCZ4k3, CCZ4SO);
194 const double * NOALIAS Q,
195 const tarch::la::Vector<DIMENSIONS,double>& faceCentre,
196 const tarch::la::Vector<DIMENSIONS,double>& volumeH,
200 ::exahype2::Solver::Offloadable
202 const double np = 1.0;
203 #if defined(CCZ4EINSTEIN)
204 const double qmin = std::min({Q[0],Q[3],Q[5]});
205 const double alpha = std::max({1.0, Q[16]}) * std::max({1.0, pow(Q[54],1.0/np)}) / std::sqrt(qmin);
207 const double alpha = 1.0;
210 constexpr double sqrtwo = 1.4142135623730951;
212 const double tempA = alpha * std::max({sqrtwo, CCZ4e, CCZ4ds, CCZ4GLMc/alpha, CCZ4GLMd/alpha});
213 const double tempB = Q[17+normal];
214 double tem = std::max({1.0, std::abs(-tempA-tempB), std::abs(tempA-tempB)});
234 const double * NOALIAS Q,
235 const double * NOALIAS deltaQ,
236 const tarch::la::Vector<DIMENSIONS,double>& faceCentre,
237 const tarch::la::Vector<DIMENSIONS,double>& volumeH,
241 double * NOALIAS BgradQ,
242 ::exahype2::Solver::Offloadable
static GPU_CALLABLE_METHOD void sourceTerm(const double *NOALIAS Q, const tarch::la::Vector< DIMENSIONS, double > &volumeCentre, const tarch::la::Vector< DIMENSIONS, double > &volumeH, double t, double dt, double *NOALIAS S, ::exahype2::Solver::Offloadable)
To obtain the best performance, I recommend to man inline command to this signature and to copy the i...
static GPU_CALLABLE_METHOD void nonconservativeProduct(const double *NOALIAS Q, const double *NOALIAS deltaQ, const tarch::la::Vector< DIMENSIONS, double > &faceCentre, const tarch::la::Vector< DIMENSIONS, double > &volumeH, double t, double dt, int normal, double *NOALIAS BgradQ, ::exahype2::Solver::Offloadable)
To obtain the best performance, I recommend to man inline command to this signature and to copy the i...
void initialCondition(double *NOALIAS Q, const tarch::la::Vector< DIMENSIONS, double > &volumeCentre, const tarch::la::Vector< DIMENSIONS, double > &volumeH) override
virtual void nonconservativeProduct(const double *NOALIAS Q, const double *NOALIAS deltaQ, const tarch::la::Vector< DIMENSIONS, double > &faceCentre, const tarch::la::Vector< DIMENSIONS, double > &volumeH, double t, double dt, int normal, double *NOALIAS BgradQ) override
virtual double maxEigenvalue(const double *NOALIAS Q, const tarch::la::Vector< DIMENSIONS, double > &faceCentre, const tarch::la::Vector< DIMENSIONS, double > &volumeH, double t, double dt, int normal) override
Determine max eigenvalue over Jacobian in a given point with solution values (states) Q.
static GPU_CALLABLE_METHOD double maxEigenvalue(const double *NOALIAS Q, const tarch::la::Vector< DIMENSIONS, double > &faceCentre, const tarch::la::Vector< DIMENSIONS, double > &volumeH, double t, double dt, int normal, ::exahype2::Solver::Offloadable)
To obtain the best performance, I recommend to man inline command to this signature and to copy the i...
::exahype2::RefinementCommand refinementCriterion(const double *NOALIAS Q, const tarch::la::Vector< DIMENSIONS, double > &volumeCentre, const tarch::la::Vector< DIMENSIONS, double > &volumeH, double t) override
Refinement criterion.
virtual void boundaryConditions(const double *NOALIAS Qinside, double *NOALIAS Qoutside, const tarch::la::Vector< DIMENSIONS, double > &faceCentre, const tarch::la::Vector< DIMENSIONS, double > &volumeH, double t, int normal) override
static tarch::logging::Log _log
void prepare(TP::TwoPunctures *tp)
void sourceTerm(const double *NOALIAS Q, const tarch::la::Vector< DIMENSIONS, double > &volumeCentre, const tarch::la::Vector< DIMENSIONS, double > &volumeH, double t, double dt, double *NOALIAS S) override
static void source(double *S, const double *const Q, const int CCZ4LapseType, const double CCZ4ds, const double CCZ4c, const double CCZ4e, const double CCZ4f, const double CCZ4bs, const double CCZ4sk, const double CCZ4xi, const double CCZ4itau, const double CCZ4eta, const double CCZ4k1, const double CCZ4k2, const double CCZ4k3, const double CCZ4SO)
The source term is one out of two terms that we use in our CCZ4 formulation.