4from .AbstractLimiterActionSet
import AbstractLimiterActionSet
6import peano4.solversteps
9 TemplateSpreadLimiterStatus =
"""
11 if ( {{PREDICATE}} ) {
13 if(fineGridCell{{SOLVER_NAME}}CellLabel.getTroubled_Marker()==celldata::{{SOLVER_NAME}}CellLabel::Troubled_Marker::TROUBLED) return;
15 bool hasTroubledNeighbour = false;
16 for(int d=0; d<2*Dimensions; d++){
17 hasTroubledNeighbour |= fineGridFaces{{SOLVER_NAME}}FaceLabel(d).getTroubled_Marker()==facedata::{{SOLVER_NAME}}FaceLabel::Troubled_Marker::TROUBLED;
20 if(hasTroubledNeighbour){
21 fineGridCell{{SOLVER_NAME}}CellLabel.setTroubled_Marker(celldata::{{SOLVER_NAME}}CellLabel::Troubled_Marker::LIMITER_TO_REGULAR);
22 for(int d=0; d<2*Dimensions; d++){
23 fineGridFaces{{SOLVER_NAME}}FaceLabel(d).setTroubled_Marker(
24 std::max(fineGridFaces{{SOLVER_NAME}}FaceLabel(d).getTroubled_Marker(),
25 facedata::{{SOLVER_NAME}}FaceLabel::Troubled_Marker::LIMITER_TO_REGULAR
36 super(SpreadLimiterStatus,self).
__init__(solver)
41 if operation_name==peano4.solversteps.ActionSet.OPERATION_TOUCH_CELL_FIRST_TIME:
43 self.
_solver._init_dictionary_with_default_parameters(d)
44 self.
_solver.add_entries_to_text_replacement_dictionary(d)
45 d[
"PREDICATE" ] = self.
guard
52 return __name__.replace(
".py",
"").replace(
".",
"_")
str TemplateSpreadLimiterStatus
get_action_set_name(self)
You should replicate this function in each subclass, so you get meaningful action set names (otherwis...
__init__(self, solver, guard)
solver: Ader-DG Reference to creating class
get_body_of_operation(self, operation_name)
Return actual C++ code snippets to be inserted into C++ code.