4from .AbstractLimiterActionSet
import AbstractLimiterActionSet
6import peano4.solversteps
9 TemplateSpreadLimiterStatus =
"""
10 if ( {{PREDICATE}} ) {
11 if(fineGridCell{{SOLVER_NAME}}CellLabel.getTroubled_Marker()==celldata::{{SOLVER_NAME}}CellLabel::Troubled_Marker::TROUBLED) return;
13 bool hasTroubledNeighbour = false;
14 for(int d=0; d<2*Dimensions; d++){
15 hasTroubledNeighbour |= fineGridFaces{{SOLVER_NAME}}FaceLabel(d).getTroubled_Marker()==facedata::{{SOLVER_NAME}}FaceLabel::Troubled_Marker::TROUBLED;
18 if(hasTroubledNeighbour){
19 fineGridCell{{SOLVER_NAME}}CellLabel.setTroubled_Marker(celldata::{{SOLVER_NAME}}CellLabel::Troubled_Marker::LIMITER_TO_REGULAR);
20 for(int d=0; d<2*Dimensions; d++){
21 fineGridFaces{{SOLVER_NAME}}FaceLabel(d).setTroubled_Marker(
22 std::max(fineGridFaces{{SOLVER_NAME}}FaceLabel(d).getTroubled_Marker(),
23 facedata::{{SOLVER_NAME}}FaceLabel::Troubled_Marker::LIMITER_TO_REGULAR
32 super(SpreadLimiterStatus,self).
__init__(solver)
37 if operation_name==peano4.solversteps.ActionSet.OPERATION_TOUCH_CELL_FIRST_TIME:
39 self.
_solver._init_dictionary_with_default_parameters(d)
40 self.
_solver.add_entries_to_text_replacement_dictionary(d)
41 d[
"PREDICATE" ] = self.
guard
47 return __name__.replace(
".py",
"").replace(
".",
"_")
__init__(self, solver, guard)
str TemplateSpreadLimiterStatus
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.