Peano
Loading...
Searching...
No Matches
solvers.limiting.actionsets.CopyAndConvertPatch.CopyAndConvertPatch Class Reference
Inheritance diagram for solvers.limiting.actionsets.CopyAndConvertPatch.CopyAndConvertPatch:
Collaboration diagram for solvers.limiting.actionsets.CopyAndConvertPatch.CopyAndConvertPatch:

Public Member Functions

 __init__ (self, solver, regularToLimiterGuard, limiterToRegularGuard)
 
 get_body_of_operation (self, operation_name)
 Return actual C++ code snippets to be inserted into C++ code.
 
 get_action_set_name (self)
 Return unique action set name.
 
 get_includes (self)
 Return include statements that you need.
 
- Public Member Functions inherited from solvers.limiting.actionsets.AbstractLimiterActionSet.AbstractLimiterActionSet
 user_should_modify_template (self)
 Is the user allowed to modify the output.
 
- Public Member Functions inherited from peano4.api.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_createGridControlEventsForNextTraversal (self)
 Return the grid control events that this action set wants to trigger.
 
 get_implementation_of_createGridControlEventsForNextTraversal (self)
 Return the C++ implementation of createGridControlEventsForNextTraversal()
 
 get_body_of_prepareTraversal (self)
 
 get_implementation_of_prepareTraversal (self)
 Return the C++ implementation of prepareTraversal()
 
 get_body_of_unprepareTraversal (self)
 
 get_implementation_of_unprepareTraversal (self)
 Return the C++ implementation of unprepareTraversal()
 
 get_guard_of_operation (self, operation_name)
 Return the guard of an operation.
 
 get_implementation_of_operation (self, operation_name)
 Return the C++ implementation of an operation.
 
bool may_run_in_background_task (self)
 May a task graph compiler move touchCellFirstTime() into a task.
 
 get_attributes (self)
 Return attributes as copied and pasted into the generated class.
 

Data Fields

 regularToLimiterGuard
 
 limiterToRegularGuard
 
- Data Fields inherited from peano4.api.solversteps.ActionSet.ActionSet
 descend_invocation_order
 
 parallel
 

Static Public Attributes

str TemplateCopyAndConvertDataFromRegularToLimiterAndProjectToFaces
 
str TemplateCopyAndConvertDataFromLimiterToRegular
 
- Static Public Attributes inherited from peano4.api.solversteps.ActionSet.ActionSet
int descend_invocation_order = 0
 
bool parallel = False
 
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"
 

Additional Inherited Members

- Protected Attributes inherited from solvers.limiting.actionsets.AbstractLimiterActionSet.AbstractLimiterActionSet
 _solver
 

Detailed Description

Definition at line 8 of file CopyAndConvertPatch.py.

Constructor & Destructor Documentation

◆ __init__()

solvers.limiting.actionsets.CopyAndConvertPatch.CopyAndConvertPatch.__init__ (   self,
  solver,
  regularToLimiterGuard,
  limiterToRegularGuard 
)

Member Function Documentation

◆ get_action_set_name()

solvers.limiting.actionsets.CopyAndConvertPatch.CopyAndConvertPatch.get_action_set_name (   self)

Return unique action set name.

Returns a description (word) for the mapping which is also used as class name for the generated type. As a consequence, the result should be one word (if possible) and uppercase. Also, every subclass should overwrite this routine.

The generator will take the result and construct eventually classes similar to MyStep2Dummy.h and MyStep2Dummy.cpp or similar for the example below, where we return Dummy.

Reimplemented from solvers.limiting.actionsets.AbstractLimiterActionSet.AbstractLimiterActionSet.

Definition at line 61 of file CopyAndConvertPatch.py.

◆ get_body_of_operation()

solvers.limiting.actionsets.CopyAndConvertPatch.CopyAndConvertPatch.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. The snippet is executed if and only if the guard returned by get_guard_of_operation() holds, i.e. the body should not evaluate the guard itself. See the section "Guard and body" in the class documentation.

Reimplemented from peano4.api.solversteps.ActionSet.ActionSet.

Definition at line 45 of file CopyAndConvertPatch.py.

References solvers.aderdg.actionsets.AbstractADERDGActionSet.AbstractADERDGActionSet._solver, solvers.fv.actionsets.AbstractFVActionSet.AbstractFVActionSet._solver, solvers.fv.EnclaveTasking.UpdateCell._solver, solvers.fv.SingleSweep.UpdateCell._solver, solvers.limiting.actionsets.AbstractLimiterActionSet.AbstractLimiterActionSet._solver, solvers.rkdg.actionsets.AbstractRungeKuttaDGActionSet.AbstractRungeKuttaDGActionSet._solver, exagrype.api.FD4WithKODissipation.FD4WithKODissipation._solver, exahype2.api.blockstructured.AdaptMeshAndBalanceLoad.AdaptMeshAndBalanceLoad._solver, exahype2.api.blockstructured.ConsumeRefinementRequests.ConsumeRefinementRequests._solver, exahype2.api.blockstructured.DynamicMeshRefinement.DynamicMeshRefinement._solver, exahype2.api.blockstructured.LoadCheckpoint._LoadPatchesFromCheckpoint._solver, exahype2.api.blockstructured.LoadCheckpoint.LoadCheckpoint._solver, exahype2.api.fv.actionsets.AbstractFVActionSet.AbstractFVActionSet._solver, exahype2.api.fv.actionsets.ApplyDirichletBoundaryConditions.ApplyDirichletBoundaryConditions._solver, exahype2.api.fv.actionsets.DiscardPatchInterior.DiscardPatchInterior._solver, exahype2.api.fv.AdaptMeshAndBalanceLoad.AdaptMeshAndBalanceLoad._solver, exahype2.api.fv.PlotAsVTKFile.PlotAsVTKFile._solver, exahype2.api.fv.RusanovWithExplicitEuler.RusanovWithExplicitEuler._solver, exahype2.api.fv.RusanovWithOptimisticExplicitEuler.RusanovWithOptimisticExplicitEuler._solver, exahype2.api.fv.SetupSimulationOverRegularGrid.SetupSimulationOverRegularGrid._solver, exahype2.api.fv.SetupSimulationWithUserCodedRefinementCriterion.SetupSimulationWithUserCodedRefinementCriterion._solver, exahype2.api.fv.WriteCheckpoint.WriteCheckpoint._solver, exahype2.api.rkfd4.actionsets.AbstractRKFD4ActionSet.AbstractRKFD4ActionSet._solver, exahype2.api.rkfd4.actionsets.ApplyDirichletBoundaryConditions.ApplyDirichletBoundaryConditions._solver, exahype2.api.rkfd4.AdaptMeshAndBalanceLoad.AdaptMeshAndBalanceLoad._solver, exahype2.api.rkfd4.CentralDifferencesWithRungeKutta.CentralDifferencesWithRungeKutta._solver, exahype2.api.rkfd4.PlotAsVTKFile.PlotAsVTKFile._solver, exahype2.api.rkfd4.SetupSimulationOverRegularGrid.SetupSimulationOverRegularGrid._solver, exahype2.api.rkfd4.WriteCheckpoint.WriteCheckpoint._solver, exahype2.api.Solver.Solver.SolverGenerator._solver, exahype2.api.Solver.Solver.NumericalScheme._solver, exahype2.api.Solver.Solver.GridConstruction._solver, exahype2.api.Solver.Solver.Plotter._solver, exahype2.api.Solver.Solver.MeshAdaptation._solver, 20_additional-solver-steps.RusanovWithDensityFloor._solver, 20_additional-solver-steps.RungeKuttaWithDensityFloor._solver, solvers.limiting.actionsets.CopyAndConvertPatch.CopyAndConvertPatch.limiterToRegularGuard, solvers.limiting.actionsets.CopyAndConvertPatch.CopyAndConvertPatch.regularToLimiterGuard, solvers.limiting.actionsets.CopyAndConvertPatch.CopyAndConvertPatch.TemplateCopyAndConvertDataFromLimiterToRegular, and solvers.limiting.actionsets.CopyAndConvertPatch.CopyAndConvertPatch.TemplateCopyAndConvertDataFromRegularToLimiterAndProjectToFaces.

Referenced by peano4.api.solversteps.ActionSet.ActionSet.get_implementation_of_operation().

Here is the caller graph for this function:

◆ get_includes()

solvers.limiting.actionsets.CopyAndConvertPatch.CopyAndConvertPatch.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 solvers.limiting.actionsets.AbstractLimiterActionSet.AbstractLimiterActionSet.

Definition at line 64 of file CopyAndConvertPatch.py.

References solvers.aderdg.actionsets.AbstractADERDGActionSet.AbstractADERDGActionSet._solver, solvers.fv.actionsets.AbstractFVActionSet.AbstractFVActionSet._solver, solvers.fv.EnclaveTasking.UpdateCell._solver, solvers.fv.SingleSweep.UpdateCell._solver, solvers.limiting.actionsets.AbstractLimiterActionSet.AbstractLimiterActionSet._solver, solvers.rkdg.actionsets.AbstractRungeKuttaDGActionSet.AbstractRungeKuttaDGActionSet._solver, exagrype.api.FD4WithKODissipation.FD4WithKODissipation._solver, exahype2.api.blockstructured.AdaptMeshAndBalanceLoad.AdaptMeshAndBalanceLoad._solver, exahype2.api.blockstructured.ConsumeRefinementRequests.ConsumeRefinementRequests._solver, exahype2.api.blockstructured.DynamicMeshRefinement.DynamicMeshRefinement._solver, exahype2.api.blockstructured.LoadCheckpoint._LoadPatchesFromCheckpoint._solver, exahype2.api.blockstructured.LoadCheckpoint.LoadCheckpoint._solver, exahype2.api.fv.actionsets.AbstractFVActionSet.AbstractFVActionSet._solver, exahype2.api.fv.actionsets.ApplyDirichletBoundaryConditions.ApplyDirichletBoundaryConditions._solver, exahype2.api.fv.actionsets.DiscardPatchInterior.DiscardPatchInterior._solver, exahype2.api.fv.AdaptMeshAndBalanceLoad.AdaptMeshAndBalanceLoad._solver, exahype2.api.fv.PlotAsVTKFile.PlotAsVTKFile._solver, exahype2.api.fv.RusanovWithExplicitEuler.RusanovWithExplicitEuler._solver, exahype2.api.fv.RusanovWithOptimisticExplicitEuler.RusanovWithOptimisticExplicitEuler._solver, exahype2.api.fv.SetupSimulationOverRegularGrid.SetupSimulationOverRegularGrid._solver, exahype2.api.fv.SetupSimulationWithUserCodedRefinementCriterion.SetupSimulationWithUserCodedRefinementCriterion._solver, exahype2.api.fv.WriteCheckpoint.WriteCheckpoint._solver, exahype2.api.rkfd4.actionsets.AbstractRKFD4ActionSet.AbstractRKFD4ActionSet._solver, exahype2.api.rkfd4.actionsets.ApplyDirichletBoundaryConditions.ApplyDirichletBoundaryConditions._solver, exahype2.api.rkfd4.AdaptMeshAndBalanceLoad.AdaptMeshAndBalanceLoad._solver, exahype2.api.rkfd4.CentralDifferencesWithRungeKutta.CentralDifferencesWithRungeKutta._solver, exahype2.api.rkfd4.PlotAsVTKFile.PlotAsVTKFile._solver, exahype2.api.rkfd4.SetupSimulationOverRegularGrid.SetupSimulationOverRegularGrid._solver, exahype2.api.rkfd4.WriteCheckpoint.WriteCheckpoint._solver, exahype2.api.Solver.Solver.SolverGenerator._solver, exahype2.api.Solver.Solver.NumericalScheme._solver, exahype2.api.Solver.Solver.GridConstruction._solver, exahype2.api.Solver.Solver.Plotter._solver, exahype2.api.Solver.Solver.MeshAdaptation._solver, 20_additional-solver-steps.RusanovWithDensityFloor._solver, 20_additional-solver-steps.RungeKuttaWithDensityFloor._solver, and solvers.limiting.actionsets.CopyAndConvertPatch.CopyAndConvertPatch.get_includes().

Referenced by solvers.limiting.actionsets.CopyAndConvertPatch.CopyAndConvertPatch.get_includes().

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

Field Documentation

◆ limiterToRegularGuard

solvers.limiting.actionsets.CopyAndConvertPatch.CopyAndConvertPatch.limiterToRegularGuard

◆ regularToLimiterGuard

solvers.limiting.actionsets.CopyAndConvertPatch.CopyAndConvertPatch.regularToLimiterGuard

◆ TemplateCopyAndConvertDataFromLimiterToRegular

str solvers.limiting.actionsets.CopyAndConvertPatch.CopyAndConvertPatch.TemplateCopyAndConvertDataFromLimiterToRegular
static
Initial value:
= """
if ({{CONVERT_FROM_LIMITER_TO_REGULAR_PREDICATE}}) {
kernels::{{SOLVER_NAME}}::projectOnDGSpaceFromFVWithoutHalo(
fineGridCell{{LIMITER_SOLVER_UNKNOWN_IDENTIFIER}}.value,
fineGridCell{{REGULAR_SOLVER_UNKNOWN_IDENTIFIER}}.value
);
}"""

Definition at line 32 of file CopyAndConvertPatch.py.

Referenced by solvers.limiting.actionsets.CopyAndConvertPatch.CopyAndConvertPatch.get_body_of_operation().

◆ TemplateCopyAndConvertDataFromRegularToLimiterAndProjectToFaces

str solvers.limiting.actionsets.CopyAndConvertPatch.CopyAndConvertPatch.TemplateCopyAndConvertDataFromRegularToLimiterAndProjectToFaces
static
Initial value:
= """
if ( {{CONVERT_FROM_REGULAR_TO_LIMITER_AND_SEND_PREDICATE}} ) {
celldata::{{SOLVER_NAME}}CellLabel::Troubled_Marker ownStatus = fineGridCell{{SOLVER_NAME}}CellLabel.getTroubled_Marker();
bool sendFaceProjection = ownStatus>=celldata::{{SOLVER_NAME}}CellLabel::Troubled_Marker::REGULAR_TO_LIMITER;
for(int d=0; d<2*Dimensions; d++){
sendFaceProjection |= fineGridFaces{{SOLVER_NAME}}FaceLabel(d).getTroubled_Marker()>= facedata::{{SOLVER_NAME}}FaceLabel::Troubled_Marker::LIMITER_TO_REGULAR;
}
//If there's no need to send anything, skip this step
if(!sendFaceProjection) return;
double* regularSolverOldValues = fineGridCell{{REGULAR_SOLVER_UNKNOWN_IDENTIFIER}}_old.value;
double* limiterSolverNewValues = fineGridCell{{LIMITER_SOLVER_UNKNOWN_IDENTIFIER}}.value;
//TODO: Replace with more general conversion
// Converts DG into FV
kernels::{{SOLVER_NAME}}::projectOnFVLimiterSpaceWithoutHalo(regularSolverOldValues, limiterSolverNewValues);
}"""

Definition at line 9 of file CopyAndConvertPatch.py.

Referenced by solvers.limiting.actionsets.CopyAndConvertPatch.CopyAndConvertPatch.get_body_of_operation().


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