Peano
Loading...
Searching...
No Matches
exahype2::fv::rusanov::microbenchmark::AbstractEulerFVSmooth Class Reference

#include <AbstractEulerFVSmooth.h>

Inheritance diagram for exahype2::fv::rusanov::microbenchmark::AbstractEulerFVSmooth:
Collaboration diagram for exahype2::fv::rusanov::microbenchmark::AbstractEulerFVSmooth:

Public Member Functions

 AbstractEulerFVSmooth ()
 
virtual void flux (const double *__restrict__ Q, const tarch::la::Vector< Dimensions, double > &x, int normal, double *__restrict__ F) final
 
virtual void maxEigenvalue (const double *__restrict__ Q, const tarch::la::Vector< Dimensions, double > &x, int normal, double *__restrict__ lambdaMax) final
 
virtual void initPointWisely (const tarch::la::Vector< Dimensions, double > &x, double *__restrict__ Q) final
 
- Public Member Functions inherited from exahype2::Solver
 Solver ()
 The min and max time stamp and the time step size all start at 0, so the very first time step does not advance the solution.
 
virtual double getMinTimeStamp () const
 
virtual double getMaxTimeStamp () const
 
virtual double getMinTimeStepSize () const
 
virtual double getMaxTimeStepSize () const
 
virtual double getAdmissibleTimeStepSize () const
 The time step size the solver would use if enforceTimeStepSize() had not been called, i.e.
 
virtual void startTimeStep (double globalMinTimeStamp, double globalMaxTimeStamp, double globalMinTimeStepSize, double globalMaxTimeStepSize)
 Default implementation: rolls the previous sweep's accumulated _minTimeStampUpdatedThisTimeStep/_maxTimeStampUpdatedThisTimeStep, _minTimeStepSizeUpdatedThisTimeStep/_maxTimeStepSizeUpdatedThisTimeStep and _minVolumeHUpdatedThisTimeStep/_maxVolumeHUpdatedThisTimeStep over into the corresponding global attributes, and resets the UpdatedThisTimeStep accumulators (and _cellUpdates) so the new sweep about to start can accumulate its own contributions via updateCell().
 
virtual void finishTimeStep ()
 Default implementation: MPI-all-reduces the UpdatedThisTimeStep accumulators (min via MPI_MIN, max via MPI_MAX, _cellUpdates via MPI_SUM) across ranks, so every rank's startTimeStep() rolls over the same, globally synchronised values.
 
virtual void startPlottingStep (double globalMinTimeStamp, double globalMaxTimeStamp, double globalMinTimeStepSize, double globalMaxTimeStepSize)
 Not pure virtual, unlike the other lifecycle hooks above: overriding it is optional.
 
virtual void finishPlottingStep ()
 Not pure virtual -.
 
virtual double getMaxMeshSize () const
 
virtual double getMinMeshSize () const
 
virtual std::string toCheckpointMetaData () const
 Solver state for the header of a checkpoint.
 
virtual void fromCheckpointMetaData (const std::string &metaData)
 Restore the solver state from the header of a checkpoint.
 
virtual bool cellCanUseStatelessPDETerms (const tarch::la::Vector< Dimensions, double > &cellCentre, const tarch::la::Vector< Dimensions, double > &cellH, double t, double dt) const
 Default implementation: always returns true, i.e.
 
void updateCell (double timeStepSize, double timeStamp)
 Thread-safely fold one cell's contribution into this time step's running time stamp and time step size bounds (protected by _semaphore).
 
void enforceTimeStepSize (double timeStepSize)
 Thread-safely overwrite the current minimum and maximum time step size (protected by _semaphore), i.e.
 
void resetTimeStepSize ()
 Restart the time stepping with a time step size of zero.
 

Static Public Member Functions

static GPUCallableMethod void flux (const double *__restrict__ Q, const tarch::la::Vector< Dimensions, double > &x, int normal, double *__restrict__ F, Offloadable)
 
static GPUCallableMethod void maxEigenvalue (const double *__restrict__ Q, const tarch::la::Vector< Dimensions, double > &x, int normal, double *__restrict__ lambdaMax, Offloadable)
 
- Static Public Member Functions inherited from exahype2::Solver
static std::string toCheckpointMetaDataEntry (const std::string &key, double value)
 One line of toCheckpointMetaData()
 
static bool getCheckpointMetaDataEntry (const std::string &metaData, const std::string &key, double &value)
 Find one entry of a checkpoint's meta data.
 

Static Public Attributes

static constexpr int NumberOfUnknowns = 4
 
static constexpr int NumberOfAuxiliaryVariables = 0
 
static constexpr int PatchSize = 16
 
static constexpr int HaloSize = 1
 

Static Protected Attributes

static tarch::logging::Log _log
 

Additional Inherited Members

- Public Types inherited from exahype2::Solver
enum class  Offloadable { Yes }
 This is a "fake" enum, i.e. More...
 
- Protected Attributes inherited from exahype2::Solver
double _minTimeStamp
 
double _maxTimeStamp
 
double _minTimeStampUpdatedThisTimeStep
 
double _maxTimeStampUpdatedThisTimeStep
 
double _minVolumeH
 
double _maxVolumeH
 
double _minVolumeHUpdatedThisTimeStep
 
double _maxVolumeHUpdatedThisTimeStep
 
double _minTimeStepSize
 
double _maxTimeStepSize
 
double _admissibleTimeStepSize
 
double _minTimeStepSizeUpdatedThisTimeStep
 
double _maxTimeStepSizeUpdatedThisTimeStep
 
int _cellUpdates
 
tarch::multicore::BooleanSemaphore _semaphore
 

Detailed Description

Definition at line 33 of file AbstractEulerFVSmooth.h.

Constructor & Destructor Documentation

◆ AbstractEulerFVSmooth()

exahype2::fv::rusanov::microbenchmark::AbstractEulerFVSmooth::AbstractEulerFVSmooth ( )

Member Function Documentation

◆ flux() [1/2]

virtual void exahype2::fv::rusanov::microbenchmark::AbstractEulerFVSmooth::flux ( const double *__restrict__  Q,
const tarch::la::Vector< Dimensions, double > &  x,
int  normal,
double *__restrict__  F 
)
finalvirtual

◆ flux() [2/2]

static GPUCallableMethod void exahype2::fv::rusanov::microbenchmark::AbstractEulerFVSmooth::flux ( const double *__restrict__  Q,
const tarch::la::Vector< Dimensions, double > &  x,
int  normal,
double *__restrict__  F,
Offloadable   
)
static

◆ initPointWisely()

virtual void exahype2::fv::rusanov::microbenchmark::AbstractEulerFVSmooth::initPointWisely ( const tarch::la::Vector< Dimensions, double > &  x,
double *__restrict__  Q 
)
finalvirtual

◆ maxEigenvalue() [1/2]

virtual void exahype2::fv::rusanov::microbenchmark::AbstractEulerFVSmooth::maxEigenvalue ( const double *__restrict__  Q,
const tarch::la::Vector< Dimensions, double > &  x,
int  normal,
double *__restrict__  lambdaMax 
)
finalvirtual

◆ maxEigenvalue() [2/2]

static GPUCallableMethod void exahype2::fv::rusanov::microbenchmark::AbstractEulerFVSmooth::maxEigenvalue ( const double *__restrict__  Q,
const tarch::la::Vector< Dimensions, double > &  x,
int  normal,
double *__restrict__  lambdaMax,
Offloadable   
)
static

Field Documentation

◆ _log

tarch::logging::Log exahype2::fv::rusanov::microbenchmark::AbstractEulerFVSmooth::_log
staticprotected

Definition at line 82 of file AbstractEulerFVSmooth.h.

◆ HaloSize

constexpr int exahype2::fv::rusanov::microbenchmark::AbstractEulerFVSmooth::HaloSize = 1
staticconstexpr

Definition at line 40 of file AbstractEulerFVSmooth.h.

◆ NumberOfAuxiliaryVariables

constexpr int exahype2::fv::rusanov::microbenchmark::AbstractEulerFVSmooth::NumberOfAuxiliaryVariables = 0
staticconstexpr

Definition at line 38 of file AbstractEulerFVSmooth.h.

◆ NumberOfUnknowns

constexpr int exahype2::fv::rusanov::microbenchmark::AbstractEulerFVSmooth::NumberOfUnknowns = 4
staticconstexpr

Definition at line 37 of file AbstractEulerFVSmooth.h.

◆ PatchSize

constexpr int exahype2::fv::rusanov::microbenchmark::AbstractEulerFVSmooth::PatchSize = 16
staticconstexpr

Definition at line 39 of file AbstractEulerFVSmooth.h.


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