Peano
Loading...
Searching...
No Matches
exahype2::elastic::ElasticSolver Class Reference

#include <ElasticSolver.h>

Inheritance diagram for exahype2::elastic::ElasticSolver:
Collaboration diagram for exahype2::elastic::ElasticSolver:

Public Member Functions

 ElasticSolver ()
 
::exahype2::RefinementCommand refinementCriterion (const double *__restrict__ Q, const tarch::la::Vector< Dimensions, double > &x, const tarch::la::Vector< Dimensions, double > &h, double t) override
 Refinement criterion.
 
void initialCondition (double *__restrict__ Q, const tarch::la::Vector< Dimensions, double > &x, const tarch::la::Vector< Dimensions, double > &h, bool gridIsConstructed) override
 
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) final override
 
void riemannSolver (double *const FL, double *const FR, const double *const QL, const double *const QR, const double t, const double dt, const tarch::la::Vector< Dimensions, double > &x, const tarch::la::Vector< Dimensions, double > &h, const int direction, bool isBoundaryFace, int faceIndex) final override
 
double maxEigenvalue (const double *__restrict__ Q, const tarch::la::Vector< Dimensions, double > &volumeX, const tarch::la::Vector< Dimensions, double > &volumeH, double t, double dt, int normal) override
 
void flux (const double *__restrict__ Q, const tarch::la::Vector< Dimensions, double > &volumeX, const tarch::la::Vector< Dimensions, double > &volumeH, double t, double dt, int normal, double *__restrict__ F) override
 
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
 
void multiplyMaterialParameterMatrix (const double *const Q, const tarch::la::Vector< Dimensions, double > &volumeX, const tarch::la::Vector< Dimensions, double > &volumeH, double t, double dt, int normal, double *const rhs) override
 
void pointSource (const double *const Q, const double *const x, const double t, const double dt, double *const forceVector, int n) override
 
void initPointSourceLocations (double sourceLocation[NumberOfPointSources][Dimensions]) override
 

Data Fields

double * QuadraturePoints1d = kernels::ElasticSolver::Quadrature<double>::nodes
 

Private Attributes

ContextCurvilinear< VariableShortcutsExpanded, Order+1 > * context
 
std::vector< Refinement::RefinementCriterion< VariableShortcutsExpanded > * > refinementCriteria
 

Static Private Attributes

static tarch::logging::Log _log
 

Detailed Description

Definition at line 43 of file ElasticSolver.h.

Constructor & Destructor Documentation

◆ ElasticSolver()

exahype2::elastic::ElasticSolver::ElasticSolver ( )

Member Function Documentation

◆ boundaryConditions()

void exahype2::elastic::ElasticSolver::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 
)
finaloverride

◆ flux()

void exahype2::elastic::ElasticSolver::flux ( const double *__restrict__  Q,
const tarch::la::Vector< Dimensions, double > &  volumeX,
const tarch::la::Vector< Dimensions, double > &  volumeH,
double  t,
double  dt,
int  normal,
double *__restrict__  F 
)
override

◆ initialCondition()

void exahype2::elastic::ElasticSolver::initialCondition ( double *__restrict__  Q,
const tarch::la::Vector< Dimensions, double > &  x,
const tarch::la::Vector< Dimensions, double > &  h,
bool  gridIsConstructed 
)
override

◆ initPointSourceLocations()

void exahype2::elastic::ElasticSolver::initPointSourceLocations ( double  sourceLocation[NumberOfPointSources][Dimensions])
override

◆ maxEigenvalue()

double exahype2::elastic::ElasticSolver::maxEigenvalue ( const double *__restrict__  Q,
const tarch::la::Vector< Dimensions, double > &  volumeX,
const tarch::la::Vector< Dimensions, double > &  volumeH,
double  t,
double  dt,
int  normal 
)
override

◆ multiplyMaterialParameterMatrix()

void exahype2::elastic::ElasticSolver::multiplyMaterialParameterMatrix ( const double *const  Q,
const tarch::la::Vector< Dimensions, double > &  volumeX,
const tarch::la::Vector< Dimensions, double > &  volumeH,
double  t,
double  dt,
int  normal,
double *const  rhs 
)
override

◆ nonconservativeProduct()

void exahype2::elastic::ElasticSolver::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

◆ pointSource()

void exahype2::elastic::ElasticSolver::pointSource ( const double *const  Q,
const double *const  x,
const double  t,
const double  dt,
double *const  forceVector,
int  n 
)
override

◆ refinementCriterion()

::exahype2::RefinementCommand exahype2::elastic::ElasticSolver::refinementCriterion ( const double *__restrict__  Q,
const tarch::la::Vector< Dimensions, double > &  x,
const tarch::la::Vector< Dimensions, double > &  h,
double  t 
)
override

Refinement criterion.

ExaHypE2 is guided by a maximum and minimum mesh (patch) size. All (dynamic) AMR is constrained by these values, i.e. if your mesh is coarser than the maximum mesh size, ExaHyPE 2 will automatically refine. If you try to refine further than the minimum mesh size, ExaHyPE 2 will ignore any refinement.

Consequently, you are fine if you work with a regular mesh: You set the maximum mesh size, and you leave everything else to Peano 4/ExaHyPE 2. If you want to have an adaptive mesh, use this routine to implement the refinement pattern.

Parameters
QThis is the (current) solution. The data is not set to a valid value throughout grid construction. That is: If t equals 0.0, you cannot assume that Q is properly initialised. Therefore, Q usually is only evaluated by dynamic AMR codes which make the solution follow

◆ riemannSolver()

void exahype2::elastic::ElasticSolver::riemannSolver ( double *const  FL,
double *const  FR,
const double *const  QL,
const double *const  QR,
const double  t,
const double  dt,
const tarch::la::Vector< Dimensions, double > &  x,
const tarch::la::Vector< Dimensions, double > &  h,
const int  direction,
bool  isBoundaryFace,
int  faceIndex 
)
finaloverride

Field Documentation

◆ _log

tarch::logging::Log exahype2::elastic::ElasticSolver::_log
staticprivate

Definition at line 45 of file ElasticSolver.h.

◆ context

ContextCurvilinear<VariableShortcutsExpanded, Order + 1>* exahype2::elastic::ElasticSolver::context
private

Definition at line 46 of file ElasticSolver.h.

◆ QuadraturePoints1d

double* exahype2::elastic::ElasticSolver::QuadraturePoints1d = kernels::ElasticSolver::Quadrature<double>::nodes

Definition at line 51 of file ElasticSolver.h.

◆ refinementCriteria

std::vector<Refinement::RefinementCriterion<VariableShortcutsExpanded>*> exahype2::elastic::ElasticSolver::refinementCriteria
private

Definition at line 47 of file ElasticSolver.h.


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