35 #ifndef NEKTAR_SOLVERUTILS_DIFFUSION
36 #define NEKTAR_SOLVERUTILS_DIFFUSION
41 #include <boost/core/ignore_unused.hpp>
54 typedef std::function<
void (
55 const Array<OneD, Array<OneD, NekDouble> > &,
56 const Array<OneD, Array<OneD, Array<OneD, NekDouble> > >&,
57 Array<OneD, Array<OneD, Array<OneD, NekDouble> > >&)>
60 typedef std::function<
void (
66 typedef std::function<
void (
72 typedef std::function<
void (
89 const std::size_t nConvectiveFields,
100 template<
typename FuncPo
interT,
typename ObjectPo
interT>
104 func, obj, std::placeholders::_1, std::placeholders::_2,
105 std::placeholders::_3);
113 template<
typename FuncPo
interT,
typename ObjectPo
interT>
117 func, obj, std::placeholders::_1, std::placeholders::_2,
118 std::placeholders::_3);
126 template<
typename FuncPo
interT,
typename ObjectPo
interT>
130 func, obj, std::placeholders::_1, std::placeholders::_2,
131 std::placeholders::_3);
158 boost::ignore_unused(pSession, pFields);
162 const std::size_t nConvectiveFields,
172 boost::ignore_unused(deriv);
#define SOLVER_UTILS_EXPORT
Provides a generic Factory class.
void SetFluxVectorNS(DiffusionFluxVecCBNS fluxVector)
void SetFluxPenaltyNS(FuncPointerT func, ObjectPointerT obj)
void SetHomoDerivs(Array< OneD, Array< OneD, NekDouble > > &deriv)
virtual void v_Diffuse(const std::size_t nConvectiveFields, const Array< OneD, MultiRegions::ExpListSharedPtr > &fields, const Array< OneD, Array< OneD, NekDouble > > &inarray, Array< OneD, Array< OneD, NekDouble > > &outarray, const Array< OneD, Array< OneD, NekDouble > > &pFwd=NullNekDoubleArrayofArray, const Array< OneD, Array< OneD, NekDouble > > &pBwd=NullNekDoubleArrayofArray)=0
void SetFluxPenaltyNS(DiffusionFluxPenaltyNS flux)
virtual void v_InitObject(LibUtilities::SessionReaderSharedPtr pSession, Array< OneD, MultiRegions::ExpListSharedPtr > pFields)
void SetFluxVector(DiffusionFluxVecCB fluxVector)
virtual SOLVER_UTILS_EXPORT ~Diffusion()
virtual Array< OneD, Array< OneD, Array< OneD, NekDouble > > > & v_GetFluxTensor()
SOLVER_UTILS_EXPORT void FluxVec(Array< OneD, Array< OneD, Array< OneD, NekDouble > > > &fluxvector)
DiffusionFluxVecCBNS m_fluxVectorNS
void SetFluxVectorNS(FuncPointerT func, ObjectPointerT obj)
void SetFluxVector(FuncPointerT func, ObjectPointerT obj)
SOLVER_UTILS_EXPORT void InitObject(LibUtilities::SessionReaderSharedPtr pSession, Array< OneD, MultiRegions::ExpListSharedPtr > pFields)
virtual void v_SetHomoDerivs(Array< OneD, Array< OneD, NekDouble > > &deriv)
SOLVER_UTILS_EXPORT void Diffuse(const std::size_t nConvectiveFields, const Array< OneD, MultiRegions::ExpListSharedPtr > &fields, const Array< OneD, Array< OneD, NekDouble > > &inarray, Array< OneD, Array< OneD, NekDouble > > &outarray, const Array< OneD, Array< OneD, NekDouble > > &pFwd=NullNekDoubleArrayofArray, const Array< OneD, Array< OneD, NekDouble > > &pBwd=NullNekDoubleArrayofArray)
DiffusionFluxPenaltyNS m_fluxPenaltyNS
virtual Array< OneD, Array< OneD, Array< OneD, NekDouble > > > & GetFluxTensor()
DiffusionFluxVecCB m_fluxVector
std::shared_ptr< SessionReader > SessionReaderSharedPtr
std::shared_ptr< Diffusion > DiffusionSharedPtr
A shared pointer to an EquationSystem object.
std::function< void(const Array< OneD, Array< OneD, NekDouble > > &, const Array< OneD, Array< OneD, Array< OneD, NekDouble > > > &, Array< OneD, Array< OneD, Array< OneD, NekDouble > > > &)> DiffusionFluxVecCB
std::function< void(const Array< OneD, Array< OneD, NekDouble > > &, Array< OneD, NekDouble > &)> DiffusionArtificialDiffusion
DiffusionFactory & GetDiffusionFactory()
std::function< void(const Array< OneD, Array< OneD, NekDouble > > &, Array< OneD, Array< OneD, Array< OneD, NekDouble > > > &, Array< OneD, Array< OneD, Array< OneD, NekDouble > > > &)> DiffusionFluxVecCBNS
LibUtilities::NekFactory< std::string, Diffusion, std::string > DiffusionFactory
Datatype of the NekFactory used to instantiate classes derived from the Diffusion class.
std::function< void(const Array< OneD, Array< OneD, NekDouble > > &, const Array< OneD, Array< OneD, NekDouble > > &, Array< OneD, Array< OneD, NekDouble > > &)> DiffusionFluxPenaltyNS
static Array< OneD, Array< OneD, NekDouble > > NullNekDoubleArrayofArray