|
Peano
|
Run over solution volume by volume. More...


Public Member Functions | |
| __init__ (self, solver) | |
| solver: ADERDG Reference to creating class | |
| add_postprocessing_kernel (self, operation_per_point) | |
| Add a code snippet which is applied to each and every point. | |
| get_body_of_operation (self, operation_name) | |
| Return actual C++ code snippets to be inserted into C++ code. | |
| 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,...). | |
Public Member Functions inherited from solvers.fv.actionsets.AbstractFVActionSet.AbstractFVActionSet | |
| user_should_modify_template (self) | |
| Is the user allowed to modify the output. | |
| get_includes (self) | |
| Return include statements that you need. | |
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 | |
| guard | |
Data Fields inherited from peano4.api.solversteps.ActionSet.ActionSet | |
| descend_invocation_order | |
| parallel | |
Protected Attributes | |
| _compute_kernel | |
Protected Attributes inherited from solvers.fv.actionsets.AbstractFVActionSet.AbstractFVActionSet | |
| _solver | |
Run over solution volume by volume.
PostprocessSolution differs from other action sets, as I only create it once. See FV.create_action_sets(). Once the instance does exist, you can tailor it. But you can also completely overwrite it.
See also FV.postprocess_updated_patch(self, kernel) for a discussion what options ExaHyPE offers for postprocessing. This volume-wise postprocessing might be too heavy-weight for some applications.
The postprocessing plugs into touch cell last time. It is the last action set added by the default implementation. Therefore, it is the first action set of which touchCellLastTime() is called. The reason why I plug into the leaving of the cell is that some solvers may add further action sets to the solve. Enclave tasking for example adds the merger as additional action set. These action sets plug into touchCellFirstTime() - and consequently their first time is called after the postprocessing's first time. By making the postprocessing use touchCellLastTime(), I ensure that any additional action set added by a subclass can still precede the postprocessing.
Definition at line 32 of file PostprocessSolution.py.
| solvers.fv.actionsets.PostprocessSolution.VolumeWisePostprocessSolution.__init__ | ( | self, | |
| solver | |||
| ) |
solver: ADERDG Reference to creating class
Reimplemented from solvers.fv.actionsets.AbstractFVActionSet.AbstractFVActionSet.
Definition at line 58 of file PostprocessSolution.py.
| solvers.fv.actionsets.PostprocessSolution.VolumeWisePostprocessSolution.add_postprocessing_kernel | ( | self, | |
| operation_per_point | |||
| ) |
Add a code snippet which is applied to each and every point.
You have the following variables which are well-defined:
operation_per_point: String C/C++ code snippet
Definition at line 63 of file PostprocessSolution.py.
References solvers.aderdg.actionsets.PostprocessSolution.EmptyPostprocessSolution._compute_kernel, solvers.aderdg.actionsets.PostprocessSolution.DoFWisePostprocessSolution._compute_kernel, solvers.aderdg.actionsets.PostprocessSolution.CellWisePostprocessSolution._compute_kernel, solvers.fv.actionsets.PostprocessSolution.VolumeWisePostprocessSolution._compute_kernel, solvers.fv.actionsets.PreprocessSolution.VolumeWisePreprocessSolution._compute_kernel, solvers.rkdg.actionsets.PostprocessSolution.DoFWisePostprocessSolution._compute_kernel, solvers.rkdg.actionsets.PostprocessSolution.CellWisePostprocessSolution._compute_kernel, solvers.rkdg.actionsets.PreprocessSolution.DoFWisePreprocessSolution._compute_kernel, and solvers.rkdg.actionsets.PreprocessSolution.CellWisePreprocessSolution._compute_kernel.
| solvers.fv.actionsets.PostprocessSolution.VolumeWisePostprocessSolution.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 solvers.fv.actionsets.AbstractFVActionSet.AbstractFVActionSet.
Definition at line 127 of file PostprocessSolution.py.
| solvers.fv.actionsets.PostprocessSolution.VolumeWisePostprocessSolution.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 109 of file PostprocessSolution.py.
References solvers.aderdg.actionsets.PostprocessSolution.EmptyPostprocessSolution._compute_kernel, solvers.aderdg.actionsets.PostprocessSolution.DoFWisePostprocessSolution._compute_kernel, solvers.aderdg.actionsets.PostprocessSolution.CellWisePostprocessSolution._compute_kernel, solvers.fv.actionsets.PostprocessSolution.VolumeWisePostprocessSolution._compute_kernel, solvers.fv.actionsets.PreprocessSolution.VolumeWisePreprocessSolution._compute_kernel, solvers.rkdg.actionsets.PostprocessSolution.DoFWisePostprocessSolution._compute_kernel, solvers.rkdg.actionsets.PostprocessSolution.CellWisePostprocessSolution._compute_kernel, solvers.rkdg.actionsets.PreprocessSolution.DoFWisePreprocessSolution._compute_kernel, solvers.rkdg.actionsets.PreprocessSolution.CellWisePreprocessSolution._compute_kernel, 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.fv.actionsets.AdaptivityCriterion.AdaptivityCriterion.guard, solvers.fv.actionsets.HandleBoundary.HandleBoundary.guard, solvers.fv.actionsets.InitialCondition.InitialCondition.guard, solvers.fv.actionsets.PostprocessSolution.EmptyPostprocessSolution.guard, solvers.fv.actionsets.PostprocessSolution.VolumeWisePostprocessSolution.guard, solvers.fv.actionsets.PreprocessSolution.EmptyPreprocessSolution.guard, solvers.fv.actionsets.PreprocessSolution.VolumeWisePreprocessSolution.guard, solvers.fv.EnclaveTasking.MergeEnclaveTaskOutcome.guard, solvers.limiting.actionsets.SaveNewCellData.SaveNewCellData.guard, solvers.limiting.actionsets.SpreadLimiterStatus.SpreadLimiterStatus.guard, solvers.limiting.actionsets.VerifyTroubledness.VerifyTroubledness.guard, solvers.rkdg.actionsets.AdaptivityCriterion.AdaptivityCriterion.guard, solvers.rkdg.actionsets.ComputeFinalLinearCombination.ComputeFinalLinearCombination.guard, solvers.rkdg.actionsets.InitialCondition.InitialCondition.guard, solvers.rkdg.actionsets.PostprocessSolution.EmptyPostprocessSolution.guard, solvers.rkdg.actionsets.PostprocessSolution.DoFWisePostprocessSolution.guard, solvers.rkdg.actionsets.PostprocessSolution.CellWisePostprocessSolution.guard, solvers.rkdg.actionsets.PreprocessSolution.EmptyPreprocessSolution.guard, solvers.rkdg.actionsets.PreprocessSolution.DoFWisePreprocessSolution.guard, solvers.rkdg.actionsets.PreprocessSolution.CellWisePreprocessSolution.guard, exagrype.api.actionsets.AddKreissOligerDissipation.AddKreissOligerDissipation.guard, exahype2.api.blockstructured.DynamicMeshRefinement.DynamicMeshRefinement.guard, exahype2.api.fv.actionsets.ApplyDirichletBoundaryConditions.ApplyDirichletBoundaryConditions.guard, exahype2.api.fv.actionsets.ComputeGlobalCFLCondition.ComputeGlobalCFLCondition.guard, exahype2.api.fv.actionsets.DiscardPatchInterior.DiscardPatchInterior.guard, exahype2.api.fv.actionsets.InitialCondition.InitialCondition.guard, exahype2.api.fv.actionsets.InsertPatchInterior.InsertPatchInterior.guard, exahype2.api.fv.actionsets.ReadjustTimeStepSizeForOptimisticGlobalTimestepping.ReadjustTimeStepSizeForOptimisticGlobalTimestepping.guard, exahype2.api.fv.actionsets.SpawnTaskToUpdateCellInterior.SpawnTaskToUpdateCellInterior.guard, exahype2.api.fv.actionsets.UpdateCell.UpdateCell.guard, exahype2.api.fv.actionsets.UpdateCellInterior.UpdateCellInterior.guard, exahype2.api.fv.actionsets.UpdateCellShell.UpdateCellShell.guard, exahype2.api.rkfd4.actionsets.AddLopsidedAdvection.AddLopsidedAdvection.guard, exahype2.api.rkfd4.actionsets.ApplyDirichletBoundaryConditions.ApplyDirichletBoundaryConditions.guard, exahype2.api.rkfd4.actionsets.ComputeLinearCombination.ComputeLinearCombination.guard, exahype2.api.rkfd4.actionsets.ComputeMaxEigenvalue.ComputeMaxEigenvalue.guard, exahype2.api.rkfd4.actionsets.ComputeTimeStepSize.ComputeTimeStepSize.guard, exahype2.api.rkfd4.actionsets.EvaluateRightHandSide.EvaluateRightHandSide.guard, exahype2.api.rkfd4.actionsets.InitialCondition.InitialCondition.guard, peano4.api.actionsets.ConstructRegularGrid.ConstructRegularGrid.guard, api.ApplyPointWiselyToPatch.ApplyPointWiselyToPatch.guard(), api.InterpolateHangingFaces.InterpolateHangingFaces.guard, api.ProjectPatchOntoFaces.ProjectPatchOntoFaces.guard(), api.ApplyPointWiselyToPatch.ApplyPointWiselyToPatch.guard(), api.ProjectPatchOntoFaces.ProjectPatchOntoFaces.guard(), api.ProjectPatchWithHaloOntoFaces.ProjectPatchWithHaloOntoFaces.guard, api.ReconstructPatchWithHalo.ReconstructPatchWithHalo.guard, and api.RestrictHangingFaces.RestrictHangingFaces.guard.
Referenced by peano4.api.solversteps.ActionSet.ActionSet.get_implementation_of_operation().


|
protected |
Definition at line 61 of file PostprocessSolution.py.
Referenced by solvers.aderdg.actionsets.PostprocessSolution.CellWisePostprocessSolution.add_postprocessing_kernel(), solvers.rkdg.actionsets.PostprocessSolution.CellWisePostprocessSolution.add_postprocessing_kernel(), solvers.rkdg.actionsets.PreprocessSolution.CellWisePreprocessSolution.add_postprocessing_kernel(), solvers.aderdg.actionsets.PostprocessSolution.DoFWisePostprocessSolution.add_postprocessing_kernel(), solvers.fv.actionsets.PostprocessSolution.VolumeWisePostprocessSolution.add_postprocessing_kernel(), solvers.fv.actionsets.PreprocessSolution.VolumeWisePreprocessSolution.add_postprocessing_kernel(), solvers.rkdg.actionsets.PostprocessSolution.DoFWisePostprocessSolution.add_postprocessing_kernel(), solvers.rkdg.actionsets.PreprocessSolution.DoFWisePreprocessSolution.add_postprocessing_kernel(), solvers.aderdg.actionsets.PostprocessSolution.EmptyPostprocessSolution.get_body_of_operation(), solvers.aderdg.actionsets.PostprocessSolution.DoFWisePostprocessSolution.get_body_of_operation(), solvers.aderdg.actionsets.PostprocessSolution.CellWisePostprocessSolution.get_body_of_operation(), solvers.fv.actionsets.PostprocessSolution.VolumeWisePostprocessSolution.get_body_of_operation(), solvers.fv.actionsets.PreprocessSolution.VolumeWisePreprocessSolution.get_body_of_operation(), solvers.rkdg.actionsets.PostprocessSolution.DoFWisePostprocessSolution.get_body_of_operation(), solvers.rkdg.actionsets.PostprocessSolution.CellWisePostprocessSolution.get_body_of_operation(), solvers.rkdg.actionsets.PreprocessSolution.DoFWisePreprocessSolution.get_body_of_operation(), and solvers.rkdg.actionsets.PreprocessSolution.CellWisePreprocessSolution.get_body_of_operation().
| solvers.fv.actionsets.PostprocessSolution.VolumeWisePostprocessSolution.guard |
Definition at line 60 of file PostprocessSolution.py.
Referenced by api.ReconstructPatchWithHalo.ReconstructPatchWithHalo._add_action_set_entries_to_dictionary(), solvers.aderdg.actionsets.Correction.Correction.get_body_of_operation(), solvers.aderdg.actionsets.Prediction.Prediction.get_body_of_operation(), solvers.fv.actionsets.AdaptivityCriterion.AdaptivityCriterion.get_body_of_operation(), solvers.fv.actionsets.InitialCondition.InitialCondition.get_body_of_operation(), solvers.fv.actionsets.PostprocessSolution.VolumeWisePostprocessSolution.get_body_of_operation(), solvers.fv.actionsets.PreprocessSolution.VolumeWisePreprocessSolution.get_body_of_operation(), solvers.fv.EnclaveTasking.MergeEnclaveTaskOutcome.get_body_of_operation(), solvers.limiting.actionsets.SaveNewCellData.SaveNewCellData.get_body_of_operation(), solvers.limiting.actionsets.SpreadLimiterStatus.SpreadLimiterStatus.get_body_of_operation(), solvers.limiting.actionsets.VerifyTroubledness.VerifyTroubledness.get_body_of_operation(), solvers.rkdg.actionsets.AdaptivityCriterion.AdaptivityCriterion.get_body_of_operation(), solvers.rkdg.actionsets.ComputeFinalLinearCombination.ComputeFinalLinearCombination.get_body_of_operation(), solvers.rkdg.actionsets.InitialCondition.InitialCondition.get_body_of_operation(), solvers.rkdg.actionsets.PostprocessSolution.DoFWisePostprocessSolution.get_body_of_operation(), solvers.rkdg.actionsets.PostprocessSolution.CellWisePostprocessSolution.get_body_of_operation(), solvers.rkdg.actionsets.PreprocessSolution.DoFWisePreprocessSolution.get_body_of_operation(), solvers.rkdg.actionsets.PreprocessSolution.CellWisePreprocessSolution.get_body_of_operation(), solvers.fv.actionsets.InitialCondition.InitialCondition.get_body_of_prepareTraversal(), exagrype.api.actionsets.AddKreissOligerDissipation.AddKreissOligerDissipation.get_guard_of_operation(), exahype2.api.blockstructured.DynamicMeshRefinement.DynamicMeshRefinement.get_guard_of_operation(), exahype2.api.fv.actionsets.ApplyDirichletBoundaryConditions.ApplyDirichletBoundaryConditions.get_guard_of_operation(), exahype2.api.fv.actionsets.ComputeGlobalCFLCondition.ComputeGlobalCFLCondition.get_guard_of_operation(), exahype2.api.fv.actionsets.DiscardPatchInterior.DiscardPatchInterior.get_guard_of_operation(), exahype2.api.fv.actionsets.InitialCondition.InitialCondition.get_guard_of_operation(), exahype2.api.fv.actionsets.InitialiseNewCells.InitialiseNewCells.get_guard_of_operation(), exahype2.api.fv.actionsets.InsertPatchInterior.InsertPatchInterior.get_guard_of_operation(), exahype2.api.fv.actionsets.ReadjustTimeStepSizeForOptimisticGlobalTimestepping.ReadjustTimeStepSizeForOptimisticGlobalTimestepping.get_guard_of_operation(), exahype2.api.fv.actionsets.SpawnTaskToUpdateCellInterior.SpawnTaskToUpdateCellInterior.get_guard_of_operation(), exahype2.api.fv.actionsets.UpdateCell.UpdateCell.get_guard_of_operation(), exahype2.api.fv.actionsets.UpdateCellInterior.UpdateCellInterior.get_guard_of_operation(), exahype2.api.fv.actionsets.UpdateCellShell.UpdateCellShell.get_guard_of_operation(), exahype2.api.rkfd4.actionsets.AddLopsidedAdvection.AddLopsidedAdvection.get_guard_of_operation(), exahype2.api.rkfd4.actionsets.ApplyDirichletBoundaryConditions.ApplyDirichletBoundaryConditions.get_guard_of_operation(), exahype2.api.rkfd4.actionsets.ComputeLinearCombination.ComputeLinearCombination.get_guard_of_operation(), exahype2.api.rkfd4.actionsets.ComputeMaxEigenvalue.ComputeMaxEigenvalue.get_guard_of_operation(), exahype2.api.rkfd4.actionsets.ComputeTimeStepSize.ComputeTimeStepSize.get_guard_of_operation(), exahype2.api.rkfd4.actionsets.EvaluateRightHandSide.EvaluateRightHandSide.get_guard_of_operation(), exahype2.api.rkfd4.actionsets.InitialCondition.InitialCondition.get_guard_of_operation(), api.InterpolateHangingFaces.InterpolateHangingFaces.get_guard_of_operation(), api.ProjectPatchWithHaloOntoFaces.ProjectPatchWithHaloOntoFaces.get_guard_of_operation(), api.ReconstructPatchWithHalo.ReconstructPatchWithHalo.get_guard_of_operation(), and api.RestrictHangingFaces.RestrictHangingFaces.get_guard_of_operation().