36 #ifndef NEKTAR_SOLVERUTILS_FORCINGMOVINGREFERENCEFRAME
37 #define NEKTAR_SOLVERUTILS_FORCINGMOVINGREFERENCEFRAME
50 namespace SolverUtils {
61 const std::weak_ptr<EquationSystem> &pEquation,
63 const unsigned int &pNumForcingFields,
64 const TiXmlElement *pForce) {
67 p->InitObject(pFields, pNumForcingFields, pForce);
78 const unsigned int &pNumForcingFields,
79 const TiXmlElement *pForce);
107 const std::weak_ptr<EquationSystem> &pEquation);
#define SOLVER_UTILS_EXPORT
General purpose memory allocation routines with the ability to allocate from thread specific memory p...
static std::shared_ptr< DataType > AllocateSharedPtr(const Args &...args)
Allocate a shared pointer from the memory pool.
Defines a forcing term to be explicitly applied.
static std::string classNameBody
Name of the class.
virtual SOLVER_UTILS_EXPORT void v_InitObject(const Array< OneD, MultiRegions::ExpListSharedPtr > &pFields, const unsigned int &pNumForcingFields, const TiXmlElement *pForce)
Initialise the forcing module.
void addRotation(int npoints, const Array< OneD, Array< OneD, NekDouble > > &inarray0, NekDouble angVelScale, const Array< OneD, Array< OneD, NekDouble > > &inarray1, Array< OneD, Array< OneD, NekDouble > > &outarray)
outarray = inarray0 + angVelScale Omega x inarray1
ForcingMovingReferenceFrame(const LibUtilities::SessionReaderSharedPtr &pSession, const std::weak_ptr< EquationSystem > &pEquation)
virtual SOLVER_UTILS_EXPORT void v_Apply(const Array< OneD, MultiRegions::ExpListSharedPtr > &fields, const Array< OneD, Array< OneD, NekDouble > > &inarray, Array< OneD, Array< OneD, NekDouble > > &outarray, const NekDouble &time)
Adds the body force, -Omega X u.
virtual SOLVER_UTILS_EXPORT void v_PreApply(const Array< OneD, MultiRegions::ExpListSharedPtr > &fields, const Array< OneD, Array< OneD, NekDouble > > &inarray, Array< OneD, Array< OneD, NekDouble > > &outarray, const NekDouble &time)
static std::string classNameField
virtual ~ForcingMovingReferenceFrame(void)
std::map< int, LibUtilities::EquationSharedPtr > m_frameFunction
static SOLVER_UTILS_EXPORT ForcingSharedPtr create(const LibUtilities::SessionReaderSharedPtr &pSession, const std::weak_ptr< EquationSystem > &pEquation, const Array< OneD, MultiRegions::ExpListSharedPtr > &pFields, const unsigned int &pNumForcingFields, const TiXmlElement *pForce)
Creates an instance of this class.
void Update(const NekDouble &time)
Updates the forcing array with the current required forcing.
std::map< int, NekDouble > m_frameVelocity
Array< OneD, Array< OneD, NekDouble > > m_coords
std::shared_ptr< SessionReader > SessionReaderSharedPtr
SOLVER_UTILS_EXPORT typedef std::shared_ptr< Forcing > ForcingSharedPtr
A shared pointer to an EquationSystem object.
The above copyright notice and this permission notice shall be included.