Peano
Loading...
Searching...
No Matches
exahype2.solvers.rkdg.actionsets.DynamicAMR.DynamicAMR Class Reference

Default DG interpolation/restriction action set. More...

Inheritance diagram for exahype2.solvers.rkdg.actionsets.DynamicAMR.DynamicAMR:
Collaboration diagram for exahype2.solvers.rkdg.actionsets.DynamicAMR.DynamicAMR:

Public Member Functions

 __init__ (self, solver, FaceProjections face_projections)
 The guards are those for the projection onto the faces.
 
 get_action_set_name (self)
 You should replicate this function in each subclass, so you get meaningful action set names (otherwise, it will be AbstractFVActionSet0,1,2,...).
 
 get_includes (self)
 Return include statements that you need.
 
 get_body_of_operation (self, operation_name)
 Return actual C++ code snippets to be inserted into C++ code.
 
 guards (self)
 
 guards (self, new_guards)
 
- Public Member Functions inherited from exahype2.solvers.rkdg.actionsets.AbstractRungeKuttaDGActionSet.AbstractRungeKuttaDGActionSet
 user_should_modify_template (self)
 Is the user allowed to modify the output.
 
- Public Member Functions inherited from peano4.solversteps.ActionSet.ActionSet
 get_constructor_body (self)
 Define a tailored constructor body.
 
 get_static_initialisations (self, full_qualified_classname)
 
 get_destructor_body (self)
 
 get_body_of_getGridControlEvents (self)
 
 get_body_of_prepareTraversal (self)
 
 get_body_of_unprepareTraversal (self)
 
 get_attributes (self)
 Return attributes as copied and pasted into the generated class.
 

Data Fields

 guards
 
 face_projections
 
- Data Fields inherited from peano4.solversteps.ActionSet.ActionSet
 descend_invocation_order
 
 parallel
 

Protected Attributes

 _guards
 
- Protected Attributes inherited from exahype2.solvers.rkdg.actionsets.AbstractRungeKuttaDGActionSet.AbstractRungeKuttaDGActionSet
 _solver
 

Static Private Attributes

str __Template_TouchFaceFirstTime
 
str __Template_CreateHangingFace
 
str __Template_DestroyHangingFace
 

Additional Inherited Members

- Static Public Attributes inherited from peano4.solversteps.ActionSet.ActionSet
str OPERATION_BEGIN_TRAVERSAL = "beginTraversal"
 
str OPERATION_END_TRAVERSAL = "endTraversal"
 
str OPERATION_CREATE_PERSISTENT_VERTEX = "createPersistentVertex"
 
str OPERATION_DESTROY_PERSISTENT_VERTEX = "destroyPersistentVertex"
 
str OPERATION_CREATE_HANGING_VERTEX = "createHangingVertex"
 
str OPERATION_DESTROY_HANGING_VERTEX = "destroyHangingVertex"
 
str OPERATION_CREATE_PERSISTENT_FACE = "createPersistentFace"
 
str OPERATION_DESTROY_PERSISTENT_FACE = "destroyPersistentFace"
 
str OPERATION_CREATE_HANGING_FACE = "createHangingFace"
 
str OPERATION_DESTROY_HANGING_FACE = "destroyHangingFace"
 
str OPERATION_CREATE_CELL = "createCell"
 
str OPERATION_DESTROY_CELL = "destroyCell"
 
str OPERATION_TOUCH_VERTEX_FIRST_TIME = "touchVertexFirstTime"
 
str OPERATION_TOUCH_VERTEX_LAST_TIME = "touchVertexLastTime"
 
str OPERATION_TOUCH_FACE_FIRST_TIME = "touchFaceFirstTime"
 
str OPERATION_TOUCH_FACE_LAST_TIME = "touchFaceLastTime"
 
str OPERATION_TOUCH_CELL_FIRST_TIME = "touchCellFirstTime"
 
str OPERATION_TOUCH_CELL_LAST_TIME = "touchCellLastTime"
 

Detailed Description

Default DG interpolation/restriction action set.

There is a detailed description of the DG AMR semantics in the exahype2 C++ directory. Logically, any AMR mesh transition translates into a Riemann problem. The documentation hence is stored in the Riemann.h file.

Definition at line 13 of file DynamicAMR.py.

Constructor & Destructor Documentation

◆ __init__()

exahype2.solvers.rkdg.actionsets.DynamicAMR.DynamicAMR.__init__ ( self,
solver,
FaceProjections face_projections )

The guards are those for the projection onto the faces.

Reimplemented from exahype2.solvers.rkdg.actionsets.AbstractRungeKuttaDGActionSet.AbstractRungeKuttaDGActionSet.

Definition at line 25 of file DynamicAMR.py.

References exahype2.solvers.rkdg.actionsets.DynamicAMR.DynamicAMR.__init__().

Referenced by exahype2.solvers.rkdg.actionsets.DynamicAMR.DynamicAMR.__init__().

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

Member Function Documentation

◆ get_action_set_name()

exahype2.solvers.rkdg.actionsets.DynamicAMR.DynamicAMR.get_action_set_name ( self)

You should replicate this function in each subclass, so you get meaningful action set names (otherwise, it will be AbstractFVActionSet0,1,2,...).

Reimplemented from exahype2.solvers.rkdg.actionsets.AbstractRungeKuttaDGActionSet.AbstractRungeKuttaDGActionSet.

Definition at line 38 of file DynamicAMR.py.

◆ get_body_of_operation()

exahype2.solvers.rkdg.actionsets.DynamicAMR.DynamicAMR.get_body_of_operation ( self,
operation_name )

Return actual C++ code snippets to be inserted into C++ code.

See class' string constants starting with OPERATION_ for possible values of operation_name.

Reimplemented from peano4.solversteps.ActionSet.ActionSet.

Definition at line 108 of file DynamicAMR.py.

References exahype2.solvers.rkdg.actionsets.DynamicAMR.DynamicAMR.__Template_CreateHangingFace, exahype2.solvers.rkdg.actionsets.DynamicAMR.DynamicAMR.__Template_DestroyHangingFace, exahype2.solvers.rkdg.actionsets.DynamicAMR.DynamicAMR.__Template_TouchFaceFirstTime, exahype2.solvers.aderdg.actionsets.AbstractADERDGActionSet.AbstractADERDGActionSet._solver, exahype2.solvers.fv.actionsets.AbstractFVActionSet.AbstractFVActionSet._solver, exahype2.solvers.fv.EnclaveTasking.UpdateCell._solver, exahype2.solvers.fv.SingleSweep.UpdateCell._solver, exahype2.solvers.limiting.actionsets.AbstractLimiterActionSet.AbstractLimiterActionSet._solver, exahype2.solvers.rkdg.actionsets.AbstractRungeKuttaDGActionSet.AbstractRungeKuttaDGActionSet._solver, exahype2.solvers.rkfd.actionsets.AbstractRKFDActionSet.AbstractRKFDActionSet._solver, exahype2.solvers.rkfd.actionsets.PreprocessSolution.PreprocessReconstructedSolutionWithHalo._solver, exahype2.solvers.rkfd.OneSweepPerRungeKuttaStep.UpdateCell._solver, exahype2.solvers.rkfd.SeparateSweeps.UpdateCell._solver, exahype2.solvers.rkfd.SeparateSweepsWithEnclaveTasking.UpdateCell._solver, exahype2.solvers.rkdg.actionsets.DynamicAMR.DynamicAMR.face_projections, exahype2.solvers.rkdg.actionsets.ProjectLinearCombinationOfEstimatesOntoFaces.ProjectLinearCombinationOfEstimatesOntoFaces.face_projections, exahype2.solvers.rkdg.actionsets.AddVolumeAndFaceSolution.AddVolumeAndFaceSolution.guards, exahype2.solvers.rkdg.actionsets.AddVolumeAndFaceSolution.AddVolumeAndFaceSolution.guards(), exahype2.solvers.rkdg.actionsets.DynamicAMR.DynamicAMR.guards, exahype2.solvers.rkdg.actionsets.DynamicAMR.DynamicAMR.guards(), exahype2.solvers.rkdg.actionsets.HandleBoundary.HandleBoundary.guards(), exahype2.solvers.rkdg.actionsets.ProjectLinearCombinationOfEstimatesOntoFaces.ProjectLinearCombinationOfEstimatesOntoFaces.guards(), exahype2.solvers.rkdg.actionsets.SolveRiemannProblem.SolveRiemannProblem.guards(), exahype2.solvers.rkdg.actionsets.AddVolumeAndFaceSolution.AddVolumeAndFaceSolution.guards(), exahype2.solvers.rkdg.actionsets.DynamicAMR.DynamicAMR.guards(), exahype2.solvers.rkdg.actionsets.HandleBoundary.HandleBoundary.guards, exahype2.solvers.rkdg.actionsets.LinearCombinationOfEstimates.LinearCombinationOfEstimates.guards(), exahype2.solvers.rkdg.actionsets.HandleBoundary.HandleBoundary.guards(), exahype2.solvers.rkdg.actionsets.LinearCombinationOfEstimates.LinearCombinationOfEstimates.guards(), exahype2.solvers.rkdg.actionsets.ProjectLinearCombinationOfEstimatesOntoFaces.ProjectLinearCombinationOfEstimatesOntoFaces.guards, exahype2.solvers.rkdg.actionsets.ProjectLinearCombinationOfEstimatesOntoFaces.ProjectLinearCombinationOfEstimatesOntoFaces.guards(), exahype2.solvers.rkdg.actionsets.SolveRiemannProblem.SolveRiemannProblem.guards, exahype2.solvers.rkdg.actionsets.SolveRiemannProblem.SolveRiemannProblem.guards(), exahype2.solvers.rkdg.actionsets.SolveVolumeIntegral.SolveVolumeIntegral.guards, exahype2.solvers.rkdg.actionsets.SolveVolumeIntegral.SolveVolumeIntegral.guards(), exahype2.solvers.rkfd.actionsets.LinearCombinationOfEstimates.LinearCombinationOfEstimates.guards(), exahype2.solvers.rkfd.actionsets.ProjectPatchOntoFaces.ProjectPatchOntoFaces.guards(), exahype2.solvers.rkdg.actionsets.SolveVolumeIntegral.SolveVolumeIntegral.guards(), exahype2.solvers.rkfd.actionsets.LinearCombinationOfEstimates.LinearCombinationOfEstimates.guards(), and exahype2.solvers.rkfd.actionsets.ProjectPatchOntoFaces.ProjectPatchOntoFaces.guards().

Here is the call graph for this function:

◆ get_includes()

exahype2.solvers.rkdg.actionsets.DynamicAMR.DynamicAMR.get_includes ( self)

Return include statements that you need.

All of these includes will eventually end up in the header of the generated C++ code.

Reimplemented from exahype2.solvers.rkdg.actionsets.AbstractRungeKuttaDGActionSet.AbstractRungeKuttaDGActionSet.

Definition at line 42 of file DynamicAMR.py.

References exahype2.solvers.rkdg.actionsets.DynamicAMR.DynamicAMR.get_includes().

Referenced by exahype2.solvers.rkdg.actionsets.DynamicAMR.DynamicAMR.get_includes().

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

◆ guards() [1/2]

◆ guards() [2/2]

exahype2.solvers.rkdg.actionsets.DynamicAMR.DynamicAMR.guards ( self,
new_guards )

Definition at line 158 of file DynamicAMR.py.

References exahype2.solvers.rkdg.actionsets.AddVolumeAndFaceSolution.AddVolumeAndFaceSolution._guards, exahype2.solvers.rkdg.actionsets.DynamicAMR.DynamicAMR._guards, exahype2.solvers.rkdg.actionsets.HandleBoundary.HandleBoundary._guards, exahype2.solvers.rkdg.actionsets.LinearCombinationOfEstimates.LinearCombinationOfEstimates._guards, exahype2.solvers.rkdg.actionsets.ProjectLinearCombinationOfEstimatesOntoFaces.ProjectLinearCombinationOfEstimatesOntoFaces._guards, exahype2.solvers.rkdg.actionsets.SolveRiemannProblem.SolveRiemannProblem._guards, exahype2.solvers.rkdg.actionsets.SolveVolumeIntegral.SolveVolumeIntegral._guards, exahype2.solvers.rkfd.actionsets.LinearCombinationOfEstimates.LinearCombinationOfEstimates._guards, exahype2.solvers.rkfd.actionsets.ProjectPatchOntoFaces.ProjectPatchOntoFaces._guards, exahype2.solvers.aderdg.actionsets.AbstractADERDGActionSet.AbstractADERDGActionSet._solver, exahype2.solvers.fv.actionsets.AbstractFVActionSet.AbstractFVActionSet._solver, exahype2.solvers.fv.EnclaveTasking.UpdateCell._solver, exahype2.solvers.fv.SingleSweep.UpdateCell._solver, exahype2.solvers.limiting.actionsets.AbstractLimiterActionSet.AbstractLimiterActionSet._solver, exahype2.solvers.rkdg.actionsets.AbstractRungeKuttaDGActionSet.AbstractRungeKuttaDGActionSet._solver, exahype2.solvers.rkfd.actionsets.AbstractRKFDActionSet.AbstractRKFDActionSet._solver, exahype2.solvers.rkfd.actionsets.PreprocessSolution.PreprocessReconstructedSolutionWithHalo._solver, exahype2.solvers.rkfd.OneSweepPerRungeKuttaStep.UpdateCell._solver, exahype2.solvers.rkfd.SeparateSweeps.UpdateCell._solver, and exahype2.solvers.rkfd.SeparateSweepsWithEnclaveTasking.UpdateCell._solver.

Referenced by exahype2.solvers.rkdg.actionsets.DynamicAMR.DynamicAMR.get_body_of_operation(), exahype2.solvers.rkdg.actionsets.HandleBoundary.HandleBoundary.get_body_of_operation(), exahype2.solvers.rkdg.actionsets.LinearCombinationOfEstimates.LinearCombinationOfEstimates.get_body_of_operation(), exahype2.solvers.rkdg.actionsets.ProjectLinearCombinationOfEstimatesOntoFaces.ProjectLinearCombinationOfEstimatesOntoFaces.get_body_of_operation(), exahype2.solvers.rkdg.actionsets.SolveRiemannProblem.SolveRiemannProblem.get_body_of_operation(), exahype2.solvers.rkdg.actionsets.SolveVolumeIntegral.SolveVolumeIntegral.get_body_of_operation(), exahype2.solvers.rkfd.actionsets.LinearCombinationOfEstimates.LinearCombinationOfEstimates.get_body_of_operation(), and exahype2.solvers.rkfd.actionsets.ProjectPatchOntoFaces.ProjectPatchOntoFaces.get_body_of_operation().

Here is the caller graph for this function:

Field Documentation

◆ __Template_CreateHangingFace

str exahype2.solvers.rkdg.actionsets.DynamicAMR.DynamicAMR.__Template_CreateHangingFace
staticprivate
Initial value:
= """
::exahype2::dg::interpolateRiemannSolution(
marker,
{{ORDER}},
{{NUMBER_OF_UNKNOWNS}},
repositories::{{SOLVER_INSTANCE}}.InterpolationMatrix1d,
coarseGridFaces{{UNKNOWN_IDENTIFIER}}RiemannSolution(marker.getSelectedFaceNumber()).value,
fineGridFace{{UNKNOWN_IDENTIFIER}}RiemannSolution.value
);
fineGridFace{{FACE_LABEL}}.setNewTimeStamp(0, std::max( coarseGridFaces{{FACE_LABEL}}(marker.getSelectedFaceNumber()).getNewTimeStamp(0), fineGridFace{{FACE_LABEL}}.getNewTimeStamp(0)) );
fineGridFace{{FACE_LABEL}}.setNewTimeStamp(1, std::max( coarseGridFaces{{FACE_LABEL}}(marker.getSelectedFaceNumber()).getNewTimeStamp(1), fineGridFace{{FACE_LABEL}}.getNewTimeStamp(1)) );
fineGridFace{{FACE_LABEL}}.setOldTimeStamp(0, std::max( coarseGridFaces{{FACE_LABEL}}(marker.getSelectedFaceNumber()).getOldTimeStamp(0), fineGridFace{{FACE_LABEL}}.getOldTimeStamp(0)) );
fineGridFace{{FACE_LABEL}}.setOldTimeStamp(1, std::max( coarseGridFaces{{FACE_LABEL}}(marker.getSelectedFaceNumber()).getOldTimeStamp(1), fineGridFace{{FACE_LABEL}}.getOldTimeStamp(1)) );
"""

Definition at line 63 of file DynamicAMR.py.

Referenced by exahype2.solvers.rkdg.actionsets.DynamicAMR.DynamicAMR.get_body_of_operation().

◆ __Template_DestroyHangingFace

str exahype2.solvers.rkdg.actionsets.DynamicAMR.DynamicAMR.__Template_DestroyHangingFace
staticprivate
Initial value:
= """
{% for PREDICATE_NO in range(0,PREDICATES|length) %}
if ( {{PREDICATES[PREDICATE_NO]}} ) {
::exahype2::dg::restrictAndAccumulateProjectedFacePolynomial(
marker,
{{ORDER}},
{{NUMBER_OF_PROJECTED_QUANTITIES}},
{{NUMBER_OF_UNKNOWNS}},
{{NUMBER_OF_AUXILIARY_VARIABLES}},
repositories::{{SOLVER_INSTANCE}}.RestrictionMatrix1d,
fineGridFace{{UNKNOWN_IDENTIFIER}}EstimateProjection.value,
coarseGridFaces{{UNKNOWN_IDENTIFIER}}EstimateProjection(marker.getSelectedFaceNumber()).value
);
bool isLeftEntryOnCoarseFaceLabel = marker.getSelectedFaceNumber() >= Dimensions;
coarseGridFaces{{FACE_LABEL}}(marker.getSelectedFaceNumber()).setUpdated( isLeftEntryOnCoarseFaceLabel ? 0 : 1,true);
coarseGridFaces{{FACE_LABEL}}(marker.getSelectedFaceNumber()).setUpdatedTimeStamp(
isLeftEntryOnCoarseFaceLabel ? 0 : 1,
std::max(
coarseGridFaces{{FACE_LABEL}}(marker.getSelectedFaceNumber()).getUpdatedTimeStamp( isLeftEntryOnCoarseFaceLabel ? 0 : 1 ),
fineGridFace{{FACE_LABEL}}.getUpdatedTimeStamp( isLeftEntryOnCoarseFaceLabel ? 0 : 1 )
)
);
}
{% endfor %}
"""

Definition at line 80 of file DynamicAMR.py.

Referenced by exahype2.solvers.rkdg.actionsets.DynamicAMR.DynamicAMR.get_body_of_operation().

◆ __Template_TouchFaceFirstTime

str exahype2.solvers.rkdg.actionsets.DynamicAMR.DynamicAMR.__Template_TouchFaceFirstTime
staticprivate
Initial value:
= """
{% for PREDICATE_NO in range(0,PREDICATES|length) %}
if ( {{PREDICATES[PREDICATE_NO]}} ) {
::exahype2::dg::clearSolutionProjection(
{{ORDER}},
{{NUMBER_OF_UNKNOWNS}},
{{NUMBER_OF_AUXILIARY_VARIABLES}},
{{NUMBER_OF_PROJECTED_QUANTITIES}},
fineGridFace{{UNKNOWN_IDENTIFIER}}EstimateProjection.value
);
}
{% endfor %}
"""

Definition at line 48 of file DynamicAMR.py.

Referenced by exahype2.solvers.rkdg.actionsets.DynamicAMR.DynamicAMR.get_body_of_operation().

◆ _guards

◆ face_projections

◆ guards


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