Nektar++
Public Member Functions | Static Public Member Functions | List of all members
EquationSystemWrap< T > Struct Template Reference

EquationSystem wrapper to handle virtual function calls in EquationSystem and its subclasses. More...

#include <EquationSystem.h>

Inheritance diagram for EquationSystemWrap< T >:
[legend]

Public Member Functions

 EquationSystemWrap (LibUtilities::SessionReaderSharedPtr session, SpatialDomains::MeshGraphSharedPtr graph)
 Constructor, which is identical to Filter. More...
 
void v_InitObject (bool declareField) override
 
void v_DoInitialise (bool dumpInitialConditions) override
 
void v_DoSolve () override
 
void v_SetInitialConditions (NekDouble initialtime, bool dumpInitialConditions, const int domain) override
 

Static Public Member Functions

static Array< OneD, NekDoubleEvaluateExactSolution (std::shared_ptr< EquationSystemWrap > eqsys, unsigned int field, const NekDouble time)
 
static NekDouble LinfError (std::shared_ptr< EquationSystemWrap > eqsys, unsigned int field)
 
static NekDouble L2Error (std::shared_ptr< EquationSystemWrap > eqsys, unsigned int field)
 

Detailed Description

template<typename T>
struct EquationSystemWrap< T >

EquationSystem wrapper to handle virtual function calls in EquationSystem and its subclasses.

Definition at line 52 of file Python/EquationSystem.h.

Constructor & Destructor Documentation

◆ EquationSystemWrap()

Constructor, which is identical to Filter.

Parameters
fieldInput field.

Definition at line 59 of file Python/EquationSystem.h.

61 : T(session, graph)
62 {
63 }

Member Function Documentation

◆ EvaluateExactSolution()

template<typename T >
static Array< OneD, NekDouble > EquationSystemWrap< T >::EvaluateExactSolution ( std::shared_ptr< EquationSystemWrap< T > >  eqsys,
unsigned int  field,
const NekDouble  time 
)
inlinestatic

Definition at line 91 of file Python/EquationSystem.h.

94 {
95 py::gil_scoped_acquire gil;
96 py::function override =
97 py::get_override(eqsys.get(), "EvaluateExactSolution");
98
99 if (override)
100 {
101 auto obj = override(field, time);
102 return py::cast<Array<OneD, NekDouble>>(obj);
103 }
104
105 Array<OneD, NekDouble> outfield(
106 eqsys->UpdateFields()[field]->GetNpoints());
107 eqsys->EquationSystemWrap<T>::v_EvaluateExactSolution(field, outfield,
108 time);
109 return outfield;
110 }

References FilterPython_Function::field.

◆ L2Error()

template<typename T >
static NekDouble EquationSystemWrap< T >::L2Error ( std::shared_ptr< EquationSystemWrap< T > >  eqsys,
unsigned int  field 
)
inlinestatic

Definition at line 126 of file Python/EquationSystem.h.

128 {
129 py::gil_scoped_acquire gil;
130 py::function override = py::get_override(eqsys.get(), "L2Error");
131
132 if (override)
133 {
134 return py::cast<NekDouble>(override(field));
135 }
136
137 return eqsys->EquationSystemWrap<T>::v_L2Error(field);
138 }

References FilterPython_Function::field.

◆ LinfError()

template<typename T >
static NekDouble EquationSystemWrap< T >::LinfError ( std::shared_ptr< EquationSystemWrap< T > >  eqsys,
unsigned int  field 
)
inlinestatic

Definition at line 112 of file Python/EquationSystem.h.

114 {
115 py::gil_scoped_acquire gil;
116 py::function override = py::get_override(eqsys.get(), "LinfError");
117
118 if (override)
119 {
120 return py::cast<NekDouble>(override(field));
121 }
122
123 return eqsys->EquationSystemWrap<T>::v_LinfError(field);
124 }

References FilterPython_Function::field.

◆ v_DoInitialise()

template<typename T >
void EquationSystemWrap< T >::v_DoInitialise ( bool  dumpInitialConditions)
inlineoverride

Definition at line 71 of file Python/EquationSystem.h.

72 {
73 PYBIND11_OVERRIDE_NAME(void, T, "DoInitialize", v_DoInitialise,
74 dumpInitialConditions);
75 }
void v_DoInitialise(bool dumpInitialConditions) override

References EquationSystemWrap< T >::v_DoInitialise().

Referenced by EquationSystemWrap< T >::v_DoInitialise().

◆ v_DoSolve()

template<typename T >
void EquationSystemWrap< T >::v_DoSolve ( void  )
inlineoverride

Definition at line 77 of file Python/EquationSystem.h.

78 {
79 PYBIND11_OVERRIDE_NAME(void, T, "DoSolve", v_DoSolve, );
80 }
void v_DoSolve() override

References EquationSystemWrap< T >::v_DoSolve().

Referenced by EquationSystemWrap< T >::v_DoSolve().

◆ v_InitObject()

template<typename T >
void EquationSystemWrap< T >::v_InitObject ( bool  declareField)
inlineoverride

Definition at line 65 of file Python/EquationSystem.h.

66 {
67 PYBIND11_OVERRIDE_NAME(void, T, "InitObject", v_InitObject,
68 declareField);
69 }
void v_InitObject(bool declareField) override

References EquationSystemWrap< T >::v_InitObject().

Referenced by EquationSystemWrap< T >::v_InitObject().

◆ v_SetInitialConditions()

template<typename T >
void EquationSystemWrap< T >::v_SetInitialConditions ( NekDouble  initialtime,
bool  dumpInitialConditions,
const int  domain 
)
inlineoverride

Definition at line 82 of file Python/EquationSystem.h.

85 {
86 PYBIND11_OVERRIDE_NAME(void, T, "SetInitialConditions",
87 v_SetInitialConditions, initialtime,
88 dumpInitialConditions, domain);
89 }
void v_SetInitialConditions(NekDouble initialtime, bool dumpInitialConditions, const int domain) override

References EquationSystemWrap< T >::v_SetInitialConditions().

Referenced by EquationSystemWrap< T >::v_SetInitialConditions().