36 #ifndef NEKTAR_SOLVERUTILS_DIFFUSION
37 #define NEKTAR_SOLVERUTILS_DIFFUSION
40 #include <boost/function.hpp>
53 typedef boost::function<
void (
56 const Array<OneD, Array<OneD, NekDouble> >&,
57 Array<OneD, Array<OneD, NekDouble> >&,
60 typedef boost::function<
void (
66 typedef boost::function<
void (
79 const int nConvectiveFields,
88 template<
typename FuncPo
interT,
typename ObjectPo
interT>
91 m_fluxVector = boost::bind(func, obj, _1, _2, _3, _4, _5);
99 template<
typename FuncPo
interT,
typename ObjectPo
interT>
105 template<
typename FuncPo
interT,
typename ObjectPo
interT>
145 const int nConvectiveFields,
void SetRiemannSolver(RiemannSolverSharedPtr riemann)
virtual Array< OneD, Array< OneD, Array< OneD, NekDouble > > > & GetFluxTensor()
void SetHomoDerivs(Array< OneD, Array< OneD, NekDouble > > &deriv)
DiffusionArtificialDiffusion m_ArtificialDiffusionVector
SOLVER_UTILS_EXPORT void InitObject(LibUtilities::SessionReaderSharedPtr pSession, Array< OneD, MultiRegions::ExpListSharedPtr > pFields)
virtual void v_Diffuse(const int nConvectiveFields, const Array< OneD, MultiRegions::ExpListSharedPtr > &fields, const Array< OneD, Array< OneD, NekDouble > > &inarray, Array< OneD, Array< OneD, NekDouble > > &outarray)=0
SOLVER_UTILS_EXPORT void FluxVec(Array< OneD, Array< OneD, Array< OneD, NekDouble > > > &fluxvector)
DiffusionFactory & GetDiffusionFactory()
DiffusionFluxVecCBNS m_fluxVectorNS
boost::shared_ptr< RiemannSolver > RiemannSolverSharedPtr
A shared pointer to an EquationSystem object.
boost::shared_ptr< SessionReader > SessionReaderSharedPtr
void SetFluxVectorVec(DiffusionFluxVecCB fluxVector)
RiemannSolverSharedPtr m_riemann
void SetFluxVector(FuncPointerT func, ObjectPointerT obj)
boost::shared_ptr< Diffusion > DiffusionSharedPtr
A shared pointer to an EquationSystem object.
SOLVER_UTILS_EXPORT void Diffuse(const int nConvectiveFields, const Array< OneD, MultiRegions::ExpListSharedPtr > &fields, const Array< OneD, Array< OneD, NekDouble > > &inarray, Array< OneD, Array< OneD, NekDouble > > &outarray)
boost::function< void(const Array< OneD, Array< OneD, NekDouble > > &, Array< OneD, Array< OneD, Array< OneD, NekDouble > > > &, Array< OneD, Array< OneD, Array< OneD, NekDouble > > > &)> DiffusionFluxVecCBNS
void SetFluxVectorNS(DiffusionFluxVecCBNS fluxVector)
boost::function< void(const Array< OneD, Array< OneD, NekDouble > > &, Array< OneD, NekDouble > &)> DiffusionArtificialDiffusion
#define SOLVER_UTILS_EXPORT
DiffusionFluxVecCB m_fluxVector
LibUtilities::NekFactory< std::string, Diffusion, std::string > DiffusionFactory
Datatype of the NekFactory used to instantiate classes derived from the Diffusion class...
void SetFluxVectorNS(FuncPointerT func, ObjectPointerT obj)
void SetArtificialDiffusionVector(FuncPointerT func, ObjectPointerT obj)
boost::function< void(const int, const int, const Array< OneD, Array< OneD, NekDouble > > &, Array< OneD, Array< OneD, NekDouble > > &, Array< OneD, Array< OneD, NekDouble > > &)> DiffusionFluxVecCB
virtual void v_InitObject(LibUtilities::SessionReaderSharedPtr pSession, Array< OneD, MultiRegions::ExpListSharedPtr > pFields)
virtual Array< OneD, Array< OneD, Array< OneD, NekDouble > > > & v_GetFluxTensor()
Provides a generic Factory class.
virtual void v_SetHomoDerivs(Array< OneD, Array< OneD, NekDouble > > &deriv)