35#ifndef NEKTAR_LIBRARY_SOLVERUTILS_PYTHON_EQUATIONSYSTEM_H
36#define NEKTAR_LIBRARY_SOLVERUTILS_PYTHON_EQUATIONSYSTEM_H
50#pragma GCC visibility push(hidden)
67 PYBIND11_OVERRIDE_NAME(
void, T,
"InitObject",
v_InitObject,
74 dumpInitialConditions);
79 PYBIND11_OVERRIDE_NAME(
void, T,
"DoSolve",
v_DoSolve, );
83 bool dumpInitialConditions,
84 const int domain)
override
86 PYBIND11_OVERRIDE_NAME(
void, T,
"SetInitialConditions",
88 dumpInitialConditions, domain);
92 std::shared_ptr<EquationSystemWrap> eqsys,
unsigned int field,
95 py::gil_scoped_acquire gil;
96 py::function
override =
97 py::get_override(eqsys.get(),
"EvaluateExactSolution");
101 auto obj =
override(
field, time);
102 return py::cast<Array<OneD, NekDouble>>(obj);
106 eqsys->UpdateFields()[
field]->GetNpoints());
107 eqsys->EquationSystemWrap<T>::v_EvaluateExactSolution(
field, outfield,
115 py::gil_scoped_acquire gil;
116 py::function
override = py::get_override(eqsys.get(),
"LinfError");
120 return py::cast<NekDouble>(
override(
field));
123 return eqsys->EquationSystemWrap<T>::v_LinfError(
field);
129 py::gil_scoped_acquire gil;
130 py::function
override = py::get_override(eqsys.get(),
"L2Error");
134 return py::cast<NekDouble>(
override(
field));
137 return eqsys->EquationSystemWrap<T>::v_L2Error(
field);
140 using T::v_EvaluateExactSolution;
142 using T::v_LinfError;
144#pragma GCC visibility pop
149 using T::v_DoInitialise;
151 using T::v_EvaluateExactSolution;
152 using T::v_InitObject;
153 using T::v_SetInitialConditions;
std::shared_ptr< SessionReader > SessionReaderSharedPtr
std::shared_ptr< MeshGraph > MeshGraphSharedPtr
EquationSystem wrapper to handle virtual function calls in EquationSystem and its subclasses.
static NekDouble L2Error(std::shared_ptr< EquationSystemWrap > eqsys, unsigned int field)
void v_DoSolve() override
EquationSystemWrap(LibUtilities::SessionReaderSharedPtr session, SpatialDomains::MeshGraphSharedPtr graph)
Constructor, which is identical to Filter.
static Array< OneD, NekDouble > EvaluateExactSolution(std::shared_ptr< EquationSystemWrap > eqsys, unsigned int field, const NekDouble time)
void v_DoInitialise(bool dumpInitialConditions) override
static NekDouble LinfError(std::shared_ptr< EquationSystemWrap > eqsys, unsigned int field)
void v_SetInitialConditions(NekDouble initialtime, bool dumpInitialConditions, const int domain) override
void v_InitObject(bool declareField) override