Peano
Loading...
Searching...
No Matches
benchmarks::exahype2::ccz4::CCZ4 Class Reference

#include <CCZ4.h>

Inheritance diagram for benchmarks::exahype2::ccz4::CCZ4:
Collaboration diagram for benchmarks::exahype2::ccz4::CCZ4:

Public Member Functions

::exahype2::RefinementCommand refinementCriterion (const double *__restrict__ Q, const tarch::la::Vector< Dimensions, double > &volumeCentre, const tarch::la::Vector< Dimensions, double > &volumeH, double t) override
 
void initialCondition (double *__restrict__ Q, const tarch::la::Vector< Dimensions, double > &volumeCentre, const tarch::la::Vector< Dimensions, double > &volumeH, bool gridIsConstructed) override
 
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
 
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
 
virtual double 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) override
 Determine max eigenvalue over Jacobian in a given point with solution values (states) Q.
 
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 Public Member Functions

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 implementation into the header.
 
static GPUCallableMethod double 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, ::exahype2::Solver::Offloadable)
 To obtain the best performance, I recommend to man inline command to this signature and to copy the implementation into the header.
 
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 implementation into the header.
 

Static Private Attributes

static tarch::logging::Log _log
 

Detailed Description

Definition at line 30 of file CCZ4.h.

Member Function Documentation

◆ boundaryConditions()

virtual void benchmarks::exahype2::ccz4::CCZ4::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 
)
overridevirtual

◆ initialCondition()

void benchmarks::exahype2::ccz4::CCZ4::initialCondition ( double *__restrict__  Q,
const tarch::la::Vector< Dimensions, double > &  volumeCentre,
const tarch::la::Vector< Dimensions, double > &  volumeH,
bool  gridIsConstructed 
)
override

◆ maxEigenvalue() [1/2]

virtual double benchmarks::exahype2::ccz4::CCZ4::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 
)
overridevirtual

Determine max eigenvalue over Jacobian in a given point with solution values (states) Q.

All parameters are in.

Returns
Max eigenvalue. Result has to be positive, so we are actually speaking about the maximum absolute eigenvalue.

◆ maxEigenvalue() [2/2]

static GPUCallableMethod double benchmarks::exahype2::ccz4::CCZ4::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,
::exahype2::Solver::Offloadable   
)
static

To obtain the best performance, I recommend to man inline command to this signature and to copy the implementation into the header.

So it would read

static inline double maxEigenvalue( ... ) { code here }

The GPU offloading requires static functions. As we cannot overload the original (virtual) function with a static alternative, we do the TBB trick and overload by adding an additional enum. It has no semantics but helps the compiler to distinguish the different function variants.

Definition at line 156 of file CCZ4.h.

◆ nonconservativeProduct() [1/2]

virtual void benchmarks::exahype2::ccz4::CCZ4::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 
)
overridevirtual

◆ nonconservativeProduct() [2/2]

static GPUCallableMethod void benchmarks::exahype2::ccz4::CCZ4::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   
)
static

To obtain the best performance, I recommend to man inline command to this signature and to copy the implementation into the header.

So it would read

static inline void nonconservativeProduct( ... ) { code here }

The GPU offloading requires static functions. As we cannot overload the original (virtual) function with a static alternative, we do the TBB trick and overload by adding an additional enum. It has no semantics but helps the compiler to distinguish the different function variants.

◆ refinementCriterion()

::exahype2::RefinementCommand benchmarks::exahype2::ccz4::CCZ4::refinementCriterion ( const double *__restrict__  Q,
const tarch::la::Vector< Dimensions, double > &  volumeCentre,
const tarch::la::Vector< Dimensions, double > &  volumeH,
double  t 
)
override

◆ sourceTerm() [1/2]

void benchmarks::exahype2::ccz4::CCZ4::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

◆ sourceTerm() [2/2]

static GPUCallableMethod void benchmarks::exahype2::ccz4::CCZ4::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   
)
static

To obtain the best performance, I recommend to man inline command to this signature and to copy the implementation into the header.

So it would read

static inline void sourceTerm( ... ) { code here }

The GPU offloading requires static functions. As we cannot overload the original (virtual) function with a static alternative, we do the TBB trick and overload by adding an additional enum. It has no semantics but helps the compiler to distinguish the different function variants.

Definition at line 123 of file CCZ4.h.

References exagrype::ccz4::source().

Here is the call graph for this function:

Field Documentation

◆ _log

tarch::logging::Log benchmarks::exahype2::ccz4::CCZ4::_log
staticprivate

Definition at line 32 of file CCZ4.h.


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