Peano
Loading...
Searching...
No Matches
exahype2.api.GradientRefinement.GradientRefinement Class Reference

Gradient-based refinement criterion: given a one-sided difference quotient of the solution along one coordinate axis, decide whether the mesh around this point should be refined, erased (coarsened) or kept. More...

Inheritance diagram for exahype2.api.GradientRefinement.GradientRefinement:
Collaboration diagram for exahype2.api.GradientRefinement.GradientRefinement:

Data Structures

class  Generator
 GradientRefinement-specific code generation. More...
 

Public Member Functions

 __init__ (self, str implementation=None, bool stateless=False)
 
- Public Member Functions inherited from exahype2.api.PDETerm.PDETerm
str __repr__ (self)
 
str __str__ (self)
 
"PDETerm.Generator" generator (self)
 Code generator for this term: an instance of this term's own (possibly subclass-specific) Generator.
 

Static Public Attributes

tuple SIGNATURE
 
str NAME = "refineEraseWithGradient"
 
- Static Public Attributes inherited from exahype2.api.PDETerm.PDETerm
str NAME
 
str SIGNATURE
 

Additional Inherited Members

- Data Fields inherited from exahype2.api.PDETerm.PDETerm
 name
 
 implementation
 
 stateless
 

Detailed Description

Gradient-based refinement criterion: given a one-sided difference quotient of the solution along one coordinate axis, decide whether the mesh around this point should be refined, erased (coarsened) or kept.

virtual void refineEraseWithGradient(
const double* __restrict__ gradient, // gradient[{{NUMBER_OF_UNKNOWNS}}+{{NUMBER_OF_AUXILIARY_VARIABLES}}]
int normal,
::exahype2::RefinementCommand* __restrict__ refinementCommand
);

The action set which evaluates the criterion calls the term 2*Dimensions times per volume: For each coordinate axis normal, it passes the left difference quotient \( (Q_j - Q_{j-1})/h \) and the right one \( (Q_{j+1} - Q_j)/h \). Each call starts from Keep. The volume asks for a refinement if any of the calls says Refine, and it may be erased only if all of the calls say Erase.

Volumes at the patch boundary have no neighbour on one side. For them, the difference quotient towards the patch's interior is passed in both calls (exahype2::fv::computeOneSidedGradient()).

gradient holds unknowns+auxiliary_variables entries. The output semantics are those of every adaptivity criterion (exahype2.api.AdaptivityCriterion).

Definition at line 8 of file GradientRefinement.py.

Constructor & Destructor Documentation

◆ __init__()

exahype2.api.GradientRefinement.GradientRefinement.__init__ (   self,
str   implementation = None,
bool   stateless = False 
)
Parameters
implementationstr A C++ snippet that becomes refineEraseWithGradient()'s body, or None (the default) to leave refineEraseWithGradient() pure virtual for you to implement by hand. The empty string is a valid body: it leaves *refinementCommand untouched, i.e. at Keep.
statelessbool Generate a static, GPU-offloadable method instead of a virtual one. Requires an implementation.

Reimplemented from exahype2.api.AdaptivityCriterion.AdaptivityCriterion.

Definition at line 48 of file GradientRefinement.py.

References exahype2.api.GradientRefinement.GradientRefinement.__init__(), exahype2.api.blockstructured.DirichletBoundaryConditions.DirichletBoundaryConditions.NAME, exahype2.api.blockstructured.SommerfeldBoundaryConditions.SommerfeldBoundaryConditions.NAME, exahype2.api.Flux.Flux.NAME, exahype2.api.GradientRefinement.GradientRefinement.NAME, exahype2.api.InitPointWisely.InitPointWisely.NAME, exahype2.api.MassMatrix.MassMatrix.NAME, exahype2.api.MaxEigenvalue.MaxEigenvalue.NAME, exahype2.api.NonconservativeProduct.NonconservativeProduct.NAME, exahype2.api.PDETerm.PDETerm.NAME, exahype2.api.PointSource.PointSource.NAME, exahype2.api.RefineErasePointwisely.RefineErasePointwisely.NAME, and exahype2.api.VolumetricSource.VolumetricSource.NAME.

Referenced by exahype2.api.GradientRefinement.GradientRefinement.__init__().

Here is the call graph for this function:
Here is the caller graph for this function:

Field Documentation

◆ NAME

◆ SIGNATURE

tuple exahype2.api.GradientRefinement.GradientRefinement.SIGNATURE
static
Initial value:
= (
"const double* __restrict__ gradient, "
"int normal, "
"::exahype2::RefinementCommand* __restrict__ refinementCommand"
)

Definition at line 40 of file GradientRefinement.py.


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