|
Peano
|
Code generator for one action set. More...


Public Member Functions | |
| __init__ (self, classname, namespace, subdirectory, implementation=None) | |
| implementation Should be of type peano4.api.solversteps.ActionSet or None. | |
| add_operation (self, name, signature) | |
| signature is a long tuple. | |
| get_cpp_file_name (self) | |
| generate (self, overwrite, directory) | |
Data Fields | |
| classname | |
| namespace | |
| subdirectory | |
| operations | |
| include_files | |
| typedefs | |
| implementation | |
Private Member Functions | |
| __generate_includes (self, outputfile) | |
| __get_operation_arguments (self, operation) | |
| __generate_operation (self, outputfile, operation) | |
| outputfile points to file, operation to an operation object as added by the solver step | |
| __get_full_qualified_class_name (self) | |
| __generate_header (self, overwrite, directory) | |
| __generate_implementation (self, overwrite, directory) | |
Private Attributes | |
| __class__ | |
Code generator for one action set.
Do not confuse this with peano4.api.solversteps.ActionSet.ActionSet, which is the interface you actually implement (you subclass it and override get_guard_of_operation(), get_body_of_operation(), get_attributes(), get_includes(), ... to say what the action set does). Users typically never interact with this class. They work against the ActionSet in solversteps.
This class here is the corresponding writer: given one such solversteps.ActionSet instance (held as self.implementation), it emits the actual C++ .h/.cpp pair - the include guard, the class declaration inside the right namespace, a static tarch::logging::Log log, the constructor/destructor, createGridControlEventsForNextTraversal(), prepareTraversal()/unprepareTraversal(), and one method per grid event (touchCellFirstTime, createPersistentVertex, ...) - calling back into the get_implementation_of*() routines - which combine your get_guard_of_operation() and get_body_of_*() overrides - to fill in each method body. peano4.api.solversteps.ActionSet.ActionSet is the data model, this class is the writer.
The class is instantiated in exactly one place: construct_output() of peano4.api.solversteps.StepToActionSets.StepToActionSets, which is called once per action set attached to a peano4.api.solversteps.Step.Step, from Step.construct_output(), as it loops over self.action_sets. That call site decides two things this class here itself does not know about:
Definition at line 12 of file ActionSet.py.
| peano4.api.output.ActionSet.ActionSet.__init__ | ( | self, | |
| classname, | |||
| namespace, | |||
| subdirectory, | |||
implementation = None |
|||
| ) |
implementation Should be of type peano4.api.solversteps.ActionSet or None.
If it is None, then the generated stuff will be a sole interface.
Definition at line 66 of file ActionSet.py.
|
private |
Definition at line 135 of file ActionSet.py.
References peano4.api.output.ActionSet.ActionSet.classname, peano4.api.output.Jinja2TemplatedHeaderFile.Jinja2TemplatedHeaderFile.classname, peano4.api.output.Jinja2TemplatedHeaderImplementationFilePair.Jinja2TemplatedHeaderImplementationFilePair.classname, peano4.api.output.Jinja2TemplateStringHeaderImplementationFilePair.Jinja2TemplateStringHeaderImplementationFilePair.classname, peano4.api.output.Observer.Observer.classname, peano4.api.output.TemplatedHeaderFile.TemplatedHeaderFile.classname, peano4.api.output.TemplatedHeaderImplementationFilePair.TemplatedHeaderImplementationFilePair.classname, exahype2.api.PDETerm.PDETerm.implementation, peano4.api.output.ActionSet.ActionSet.implementation, exahype2.api.Project.Project.subdirectory(), api.Project.Project.subdirectory(), peano4.api.datamodel.DoF.DoF.subdirectory, peano4.api.datamodel.Model.Model.subdirectory, peano4.api.datamodel.Model.Model.subdirectory(), peano4.api.output.ActionSet.ActionSet.subdirectory, peano4.api.output.InvokeExternalTool.InvokeExternalTool.subdirectory, peano4.api.output.Jinja2TemplatedHeaderFile.Jinja2TemplatedHeaderFile.subdirectory, peano4.api.output.Jinja2TemplatedHeaderImplementationFilePair.Jinja2TemplatedHeaderImplementationFilePair.subdirectory, peano4.api.output.Jinja2TemplateStringHeaderImplementationFilePair.Jinja2TemplateStringHeaderImplementationFilePair.subdirectory, peano4.api.output.Observer.Observer.subdirectory, peano4.api.output.TemplatedHeaderFile.TemplatedHeaderFile.subdirectory, peano4.api.output.TemplatedHeaderImplementationFilePair.TemplatedHeaderImplementationFilePair.subdirectory, peano4.api.Project.Project.subdirectory, peano4.api.Project.Project.subdirectory(), and peano4.api.solversteps.Step.Step.subdirectory.
Referenced by peano4.api.output.ActionSet.ActionSet.generate(), and peano4.api.output.Observer.Observer.generate().


|
private |
Definition at line 212 of file ActionSet.py.
References peano4.api.output.ActionSet.ActionSet.__class__, peano4.api.output.Jinja2TemplatedHeaderImplementationFilePair.Jinja2TemplatedHeaderImplementationFilePair.__class__, peano4.api.output.TemplatedHeaderFile.TemplatedHeaderFile.__class__, peano4.api.output.ActionSet.ActionSet.__get_full_qualified_class_name(), peano4.api.output.ActionSet.ActionSet.__get_operation_arguments(), peano4.api.output.ActionSet.ActionSet.classname, peano4.api.output.Jinja2TemplatedHeaderFile.Jinja2TemplatedHeaderFile.classname, peano4.api.output.Jinja2TemplatedHeaderImplementationFilePair.Jinja2TemplatedHeaderImplementationFilePair.classname, peano4.api.output.Jinja2TemplateStringHeaderImplementationFilePair.Jinja2TemplateStringHeaderImplementationFilePair.classname, peano4.api.output.Observer.Observer.classname, peano4.api.output.TemplatedHeaderFile.TemplatedHeaderFile.classname, peano4.api.output.TemplatedHeaderImplementationFilePair.TemplatedHeaderImplementationFilePair.classname, peano4.api.output.ActionSet.ActionSet.get_cpp_file_name(), peano4.api.output.Observer.Observer.get_cpp_file_name(), exahype2.api.PDETerm.PDETerm.implementation, peano4.api.output.ActionSet.ActionSet.implementation, and peano4.api.output.ActionSet.ActionSet.operations.
Referenced by peano4.api.output.ActionSet.ActionSet.generate(), and peano4.api.output.Observer.Observer.generate().


|
private |
Definition at line 94 of file ActionSet.py.
References peano4.api.output.ActionSet.ActionSet.include_files.
|
private |
outputfile points to file, operation to an operation object as added by the solver step
Definition at line 111 of file ActionSet.py.
References peano4.api.output.ActionSet.ActionSet.__get_operation_arguments(), exahype2.api.PDETerm.PDETerm.implementation, and peano4.api.output.ActionSet.ActionSet.implementation.

|
private |
Definition at line 127 of file ActionSet.py.
References peano4.api.output.ActionSet.ActionSet.classname, peano4.api.output.Jinja2TemplatedHeaderFile.Jinja2TemplatedHeaderFile.classname, peano4.api.output.Jinja2TemplatedHeaderImplementationFilePair.Jinja2TemplatedHeaderImplementationFilePair.classname, peano4.api.output.Jinja2TemplateStringHeaderImplementationFilePair.Jinja2TemplateStringHeaderImplementationFilePair.classname, peano4.api.output.Observer.Observer.classname, peano4.api.output.TemplatedHeaderFile.TemplatedHeaderFile.classname, peano4.api.output.TemplatedHeaderImplementationFilePair.TemplatedHeaderImplementationFilePair.classname, peano4.api.datamodel.DoF.DoF.namespace, peano4.api.datamodel.Model.Model.namespace, peano4.api.output.ActionSet.ActionSet.namespace, peano4.api.output.Jinja2TemplatedHeaderFile.Jinja2TemplatedHeaderFile.namespace, peano4.api.output.Jinja2TemplatedHeaderImplementationFilePair.Jinja2TemplatedHeaderImplementationFilePair.namespace, peano4.api.output.Jinja2TemplateStringHeaderImplementationFilePair.Jinja2TemplateStringHeaderImplementationFilePair.namespace, peano4.api.output.Observer.Observer.namespace, peano4.api.output.TemplatedHeaderFile.TemplatedHeaderFile.namespace, peano4.api.output.TemplatedHeaderImplementationFilePair.TemplatedHeaderImplementationFilePair.namespace, peano4.api.Project.Project.namespace, and peano4.api.solversteps.Step.Step.namespace.
Referenced by peano4.api.output.ActionSet.ActionSet.__generate_implementation().

|
private |
Definition at line 97 of file ActionSet.py.
Referenced by peano4.api.output.ActionSet.ActionSet.__generate_implementation(), and peano4.api.output.ActionSet.ActionSet.__generate_operation().

| peano4.api.output.ActionSet.ActionSet.add_operation | ( | self, | |
| name, | |||
| signature | |||
| ) |
signature is a long tuple.
The first entry is the name of the routine, the second entry is the result type. From thereon, one entry gives the name of an attribute, the second one the type.
Definition at line 86 of file ActionSet.py.
References peano4.api.output.ActionSet.ActionSet.operations.
| peano4.api.output.ActionSet.ActionSet.generate | ( | self, | |
| overwrite, | |||
| directory | |||
| ) |
Definition at line 261 of file ActionSet.py.
References peano4.api.output.ActionSet.ActionSet.__generate_header(), peano4.api.output.Observer.Observer.__generate_header(), peano4.api.output.ActionSet.ActionSet.__generate_implementation(), peano4.api.output.Observer.Observer.__generate_implementation(), exahype2.api.Project.Project.subdirectory(), api.Project.Project.subdirectory(), peano4.api.datamodel.DoF.DoF.subdirectory, peano4.api.datamodel.Model.Model.subdirectory, peano4.api.datamodel.Model.Model.subdirectory(), peano4.api.output.ActionSet.ActionSet.subdirectory, peano4.api.output.InvokeExternalTool.InvokeExternalTool.subdirectory, peano4.api.output.Jinja2TemplatedHeaderFile.Jinja2TemplatedHeaderFile.subdirectory, peano4.api.output.Jinja2TemplatedHeaderImplementationFilePair.Jinja2TemplatedHeaderImplementationFilePair.subdirectory, peano4.api.output.Jinja2TemplateStringHeaderImplementationFilePair.Jinja2TemplateStringHeaderImplementationFilePair.subdirectory, peano4.api.output.Observer.Observer.subdirectory, peano4.api.output.TemplatedHeaderFile.TemplatedHeaderFile.subdirectory, peano4.api.output.TemplatedHeaderImplementationFilePair.TemplatedHeaderImplementationFilePair.subdirectory, peano4.api.Project.Project.subdirectory, peano4.api.Project.Project.subdirectory(), and peano4.api.solversteps.Step.Step.subdirectory.
Referenced by peano4.api.Project.Project.build().


| peano4.api.output.ActionSet.ActionSet.get_cpp_file_name | ( | self | ) |
Definition at line 209 of file ActionSet.py.
References peano4.api.output.ActionSet.ActionSet.classname, peano4.api.output.Jinja2TemplatedHeaderFile.Jinja2TemplatedHeaderFile.classname, peano4.api.output.Jinja2TemplatedHeaderImplementationFilePair.Jinja2TemplatedHeaderImplementationFilePair.classname, peano4.api.output.Jinja2TemplateStringHeaderImplementationFilePair.Jinja2TemplateStringHeaderImplementationFilePair.classname, peano4.api.output.Observer.Observer.classname, peano4.api.output.TemplatedHeaderFile.TemplatedHeaderFile.classname, peano4.api.output.TemplatedHeaderImplementationFilePair.TemplatedHeaderImplementationFilePair.classname, exahype2.api.Project.Project.subdirectory(), api.Project.Project.subdirectory(), peano4.api.datamodel.DoF.DoF.subdirectory, peano4.api.datamodel.Model.Model.subdirectory, peano4.api.datamodel.Model.Model.subdirectory(), peano4.api.output.ActionSet.ActionSet.subdirectory, peano4.api.output.InvokeExternalTool.InvokeExternalTool.subdirectory, peano4.api.output.Jinja2TemplatedHeaderFile.Jinja2TemplatedHeaderFile.subdirectory, peano4.api.output.Jinja2TemplatedHeaderImplementationFilePair.Jinja2TemplatedHeaderImplementationFilePair.subdirectory, peano4.api.output.Jinja2TemplateStringHeaderImplementationFilePair.Jinja2TemplateStringHeaderImplementationFilePair.subdirectory, peano4.api.output.Observer.Observer.subdirectory, peano4.api.output.TemplatedHeaderFile.TemplatedHeaderFile.subdirectory, peano4.api.output.TemplatedHeaderImplementationFilePair.TemplatedHeaderImplementationFilePair.subdirectory, peano4.api.Project.Project.subdirectory, peano4.api.Project.Project.subdirectory(), and peano4.api.solversteps.Step.Step.subdirectory.
Referenced by peano4.api.output.ActionSet.ActionSet.__generate_implementation(), and peano4.api.output.Observer.Observer.generate().


|
private |
Definition at line 143 of file ActionSet.py.
Referenced by peano4.api.output.ActionSet.ActionSet.__generate_implementation(), solvers.aderdg.ADERDG.ADERDG.__str__(), solvers.aderdg.LagrangeBasis.LagrangeBasis.__str__(), solvers.elliptic.AMRMarker.AMRMarker.__str__(), solvers.elliptic.ConstrainedPoissonEquationForMarkerOnCells.ConstrainedPoissonEquationForMarkerOnCells.__str__(), solvers.fv.FV.FV.__str__(), solvers.LagrangeBasisWithDiagonalMassMatrix.LagrangeBasisWithDiagonalMassMatrix.__str__(), solvers.rkdg.RungeKuttaDG.RungeKuttaDG.__str__(), exahype2.api.Solver.Solver.__str__(), tarch.plotter.api.filters.Filter.Filter.__str__(), solvers.aderdg.ADERDG.ADERDG.add_implementation_files_to_project(), solvers.api.CollocatedMG.CollocatedMG.add_implementation_files_to_project(), api.solvers.CollocatedLowOrderDiscretisation.CollocatedLowOrderDiscretisation.add_implementation_files_to_project(), api.solvers.DiscontinuousGalerkinDiscretisation.DiscontinuousGalerkinDiscretisation.add_implementation_files_to_project(), solvers.api.CollocatedDLinearDiscretisationWithPointJacobi.CollocatedDLinearDiscretisationWithPointJacobi.add_implementation_files_to_project(), solvers.api.ContinuousGalerkinDiscretisationGaussLobattoWithBlockJacobi.ContinuousGalerkinDiscretisationGaussLobattoWithBlockJacobi.add_implementation_files_to_project(), and exahype2.api.PDETerm.PDETerm.generator().
| peano4.api.output.ActionSet.ActionSet.classname |
Definition at line 75 of file ActionSet.py.
Referenced by peano4.api.output.ActionSet.ActionSet.__generate_header(), peano4.api.output.Observer.Observer.__generate_header(), peano4.api.output.ActionSet.ActionSet.__generate_implementation(), peano4.api.output.ActionSet.ActionSet.__get_full_qualified_class_name(), peano4.api.output.Jinja2TemplatedHeaderFile.Jinja2TemplatedHeaderFile.generate(), peano4.api.output.Jinja2TemplatedHeaderImplementationFilePair.Jinja2TemplatedHeaderImplementationFilePair.generate(), peano4.api.output.Jinja2TemplateStringHeaderImplementationFilePair.Jinja2TemplateStringHeaderImplementationFilePair.generate(), peano4.api.output.Observer.Observer.generate(), peano4.api.output.TemplatedHeaderFile.TemplatedHeaderFile.generate(), peano4.api.output.TemplatedHeaderImplementationFilePair.TemplatedHeaderImplementationFilePair.generate(), peano4.api.output.ActionSet.ActionSet.get_cpp_file_name(), and peano4.api.output.Observer.Observer.get_cpp_file_name().
| peano4.api.output.ActionSet.ActionSet.implementation |
Definition at line 84 of file ActionSet.py.
Referenced by peano4.api.output.ActionSet.ActionSet.__generate_header(), peano4.api.output.ActionSet.ActionSet.__generate_implementation(), and peano4.api.output.ActionSet.ActionSet.__generate_operation().
| peano4.api.output.ActionSet.ActionSet.include_files |
Definition at line 82 of file ActionSet.py.
Referenced by peano4.api.output.ActionSet.ActionSet.__generate_includes().
| peano4.api.output.ActionSet.ActionSet.namespace |
Definition at line 76 of file ActionSet.py.
Referenced by peano4.api.output.Observer.Observer.__generate_header(), peano4.api.output.ActionSet.ActionSet.__get_full_qualified_class_name(), peano4.api.datamodel.Model.Model.add_cell(), peano4.api.datamodel.Model.Model.add_face(), peano4.api.datamodel.Model.Model.add_global_object(), peano4.api.Project.Project.add_subproject(), peano4.api.datamodel.Model.Model.add_vertex(), peano4.api.datamodel.DoF.DoF.configure(), and peano4.api.datamodel.DoF.DoF.get_full_qualified_type().
| peano4.api.output.ActionSet.ActionSet.operations |
Definition at line 78 of file ActionSet.py.
Referenced by peano4.api.output.ActionSet.ActionSet.__generate_implementation(), and peano4.api.output.ActionSet.ActionSet.add_operation().
| peano4.api.output.ActionSet.ActionSet.subdirectory |
Definition at line 77 of file ActionSet.py.
Referenced by peano4.api.output.ActionSet.ActionSet.__generate_header(), peano4.api.output.Observer.Observer.__generate_header(), peano4.api.datamodel.Model.Model.add_cell(), peano4.api.datamodel.Model.Model.add_face(), peano4.api.datamodel.Model.Model.add_global_object(), peano4.api.datamodel.Model.Model.add_vertex(), peano4.api.output.ActionSet.ActionSet.generate(), peano4.api.output.InvokeExternalTool.InvokeExternalTool.generate(), peano4.api.output.Jinja2TemplatedHeaderFile.Jinja2TemplatedHeaderFile.generate(), peano4.api.output.Jinja2TemplatedHeaderImplementationFilePair.Jinja2TemplatedHeaderImplementationFilePair.generate(), peano4.api.output.Jinja2TemplateStringHeaderImplementationFilePair.Jinja2TemplateStringHeaderImplementationFilePair.generate(), peano4.api.output.Observer.Observer.generate(), peano4.api.output.TemplatedHeaderFile.TemplatedHeaderFile.generate(), peano4.api.output.TemplatedHeaderImplementationFilePair.TemplatedHeaderImplementationFilePair.generate(), peano4.api.output.ActionSet.ActionSet.get_cpp_file_name(), peano4.api.output.Observer.Observer.get_cpp_file_name(), and peano4.api.datamodel.DoF.DoF.subnamespace().
| peano4.api.output.ActionSet.ActionSet.typedefs |
Definition at line 83 of file ActionSet.py.