25#include "vertexdata/{{SOLVER_NAME}}PETScData.h"
26#include "facedata/{{SOLVER_NAME}}PETScData.h"
27#include "celldata/{{SOLVER_NAME}}PETScData.h"
33{%
for item in NAMESPACE -%}
34 namespace {{ item }} {
39{%
for item in NAMESPACE -%}
45class {{NAMESPACE | join(
"::")}}::{{CLASSNAME}} {
47 static constexpr double MinH = {{MIN_H}};
48 static constexpr double MaxH = {{MAX_H}};
50 static const double QuadraturePointsInUnitInterval[];
52 static const double GaussianIntegrationPoints[];
53 static const double GaussianIntegrationWeights[];
55 static constexpr int Order = {{POLYNOMIAL_DEGREE}};
56 static constexpr int CellUnknowns = {{CELL_UNKNOWNS}};
57 static constexpr int FaceUnknowns = {{FACE_UNKNOWNS}};
59 static constexpr int FacesPerCell = 2 * Dimensions;
62 static constexpr int NodesPerCell = (Order+1) * (Order+1);
63 static constexpr int NodesPerFace = (Order+1);
65 static constexpr int NodesPerCell = (Order+1) * (Order+1) * (Order+1);
66 static constexpr int NodesPerFace = (Order+1) * (Order+1);
69 static constexpr int DoFsPerCell = CellUnknowns * NodesPerCell;
72 virtual ~{{CLASSNAME}}();
77 virtual void initNode(
80 {%
if CELL_UNKNOWNS==1 %}
91 double EvalGaussianIntegral(
double val );
97 virtual vertexdata::{{SOLVER_NAME}}PETScData::Type getVertexType(
119 virtual facedata::{{SOLVER_NAME}}PETScData::Type getFaceType(
134 virtual celldata::{{SOLVER_NAME}}PETScData::Type getCellType(
148 void finishAssembly();
155 {%
if CELL_CELL_LHS_MATRIX==[] %} = 0 {% endif %};
162 {%
if CELL_CELL_RHS_MATRIX==[] %} = 0 {% endif %};
169 {%
if CELL_TO_FACE_MATRIX==[] %} = 0 {% endif %};
176 {%
if FACE_TO_CELL_MATRIX==[] %} = 0 {% endif %};
183 {%
if FACE_FACE_RIEMANN_PROBLEM_MATRIX==[] %} = 0 {% endif %};
Class to capture all of the PETSc objects needed by some experiements.