11#include "AbstractCCZ4.h"
74 const double * __restrict__ Q,
80#ifdef IncludeTwoPunctures
85 double * __restrict__ Q,
88 bool gridIsConstructed
95 const double * __restrict__ Qinside,
96 double * __restrict__ Qoutside,
108 const double * __restrict__ Q,
113 double * __restrict__ S
126 const double * __restrict__ Q,
137 const double * __restrict__ Q,
138 const double * __restrict__ deltaQ,
144 double * __restrict__ BgradQ
162 #if defined(GPUOffloadingOMP)
163 #pragma omp declare target
166 const double * __restrict__ Q,
171 double * __restrict__ S,
174 ::exagrype::ccz4::source(S,Q, CCZ4LapseType, CCZ4ds, CCZ4c, CCZ4e, CCZ4f, CCZ4bs, CCZ4sk, CCZ4xi, CCZ4itau, CCZ4eta, CCZ4k1, CCZ4k2, CCZ4k3, CCZ4SO);
176 #if defined(GPUOffloadingOMP)
177 #pragma omp end declare target
195 #if defined(GPUOffloadingOMP)
196 #pragma omp declare target
199 const double * __restrict__ Q,
208 const double np = 1.0;
209 #if defined(CCZ4EINSTEIN)
210 const double qmin = std::min({Q[0],Q[3],Q[5]});
211 const double alpha = std::max({1.0, Q[16]}) * std::max({1.0, pow(Q[54],1.0/np)}) / std::sqrt(qmin);
213 const double alpha = 1.0;
216 constexpr double sqrtwo = 1.4142135623730951;
218 const double tempA = alpha * std::max({sqrtwo, CCZ4e, CCZ4ds, CCZ4GLMc/alpha, CCZ4GLMd/alpha});
219 const double tempB = Q[17+normal];
220 double tem = std::max({1.0, std::abs(-tempA-tempB), std::abs(tempA-tempB)});
225 #if defined(GPUOffloadingOMP)
226 #pragma omp end declare target
243 #if defined(GPUOffloadingOMP)
244 #pragma omp declare target
247 const double * __restrict__ Q,
248 const double * __restrict__ deltaQ,
254 double * __restrict__ BgradQ,
257 #if defined(GPUOffloadingOMP)
258 #pragma omp end declare target
#define GPUCallableMethod
::exahype2::RefinementCommand refinementCriterion(const double *__restrict__ Q, const tarch::la::Vector< Dimensions, double > &volumeCentre, const tarch::la::Vector< Dimensions, double > &volumeH, double t) override
Refinement criterion.
static GPUCallableMethod void nonconservativeProduct(const double *__restrict__ Q, const double *__restrict__ deltaQ, const tarch::la::Vector< Dimensions, double > &faceCentre, const tarch::la::Vector< Dimensions, double > &volumeH, double t, double dt, int normal, double *__restrict__ BgradQ, ::exahype2::Solver::Offloadable)
To obtain the best performance, I recommend to man inline command to this signature and to copy the i...
static tarch::logging::Log _log
virtual void maxEigenvalue(const double *__restrict__ Q, const tarch::la::Vector< Dimensions, double > &faceCentre, const tarch::la::Vector< Dimensions, double > &volumeH, double t, double dt, int normal, double *__restrict__ maxEigenvalue) override
Determine max eigenvalue over Jacobian in a given point with solution values (states) Q.
virtual void boundaryConditions(const double *__restrict__ Qinside, double *__restrict__ Qoutside, const tarch::la::Vector< Dimensions, double > &faceCentre, const tarch::la::Vector< Dimensions, double > &volumeH, double t, int normal) override
static GPUCallableMethod void sourceTerm(const double *__restrict__ Q, const tarch::la::Vector< Dimensions, double > &volumeCentre, const tarch::la::Vector< Dimensions, double > &volumeH, double t, double dt, double *__restrict__ S, ::exahype2::Solver::Offloadable)
To obtain the best performance, I recommend to man inline command to this signature and to copy the i...
virtual void nonconservativeProduct(const double *__restrict__ Q, const double *__restrict__ deltaQ, const tarch::la::Vector< Dimensions, double > &faceCentre, const tarch::la::Vector< Dimensions, double > &volumeH, double t, double dt, int normal, double *__restrict__ BgradQ) override
static GPUCallableMethod void maxEigenvalue(const double *__restrict__ Q, const tarch::la::Vector< Dimensions, double > &faceCentre, const tarch::la::Vector< Dimensions, double > &volumeH, double t, double dt, int normal, double *__restrict__ maxEigenvalue, ::exahype2::Solver::Offloadable)
To obtain the best performance, I recommend to man inline command to this signature and to copy the i...
void sourceTerm(const double *__restrict__ Q, const tarch::la::Vector< Dimensions, double > &volumeCentre, const tarch::la::Vector< Dimensions, double > &volumeH, double t, double dt, double *__restrict__ S) override
void initialCondition(double *__restrict__ Q, const tarch::la::Vector< Dimensions, double > &volumeCentre, const tarch::la::Vector< Dimensions, double > &volumeH, bool gridIsConstructed) override
Offloadable
This is a "fake" enum, i.e.
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.
This file is part of the ExaHyPE 2 project within Peano 4.
-test-datastructures This Python script uses/invokes DaStGen2 to generate all the datatypes required ...