35#ifndef NEKTAR_SOLVERUTILS_FORCINGABSORPTION
36#define NEKTAR_SOLVERUTILS_FORCINGABSORPTION
40#include <boost/geometry.hpp>
41#include <boost/geometry/geometries/point.hpp>
42#include <boost/geometry/index/rtree.hpp>
50namespace bg = boost::geometry;
51namespace bgi = boost::geometry::index;
63 const std::weak_ptr<EquationSystem> &pEquation,
65 const unsigned int &pNumForcingFields,
const TiXmlElement *pForce)
70 p->InitObject(pFields, pNumForcingFields, pForce);
78 typedef bg::model::point<NekDouble, 3, bg::cs::cartesian>
BPoint;
80 typedef bgi::rtree<BPointPair, bgi::rstar<16>>
BRTree;
97 const unsigned int &pNumForcingFields,
98 const TiXmlElement *pForce)
override;
116 const std::weak_ptr<EquationSystem> &pEquation);
121 const TiXmlElement *pForce);
#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.
bg::model::point< NekDouble, 3, bg::cs::cartesian > BPoint
SOLVER_UTILS_EXPORT void v_InitObject(const Array< OneD, MultiRegions::ExpListSharedPtr > &pFields, const unsigned int &pNumForcingFields, const TiXmlElement *pForce) override
SOLVER_UTILS_EXPORT void v_ApplyCoeff(const Array< OneD, MultiRegions::ExpListSharedPtr > &fields, const Array< OneD, Array< OneD, NekDouble > > &inarray, Array< OneD, Array< OneD, NekDouble > > &outarray, const NekDouble &time) override
ForcingAbsorption(const LibUtilities::SessionReaderSharedPtr &pSession, const std::weak_ptr< EquationSystem > &pEquation)
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.
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) override
Array< OneD, Array< OneD, NekDouble > > m_Refflow
std::pair< BPoint, unsigned int > BPointPair
std::string m_funcNameTime
~ForcingAbsorption(void) override
bgi::rtree< BPointPair, bgi::rstar< 16 > > BRTree
void CalcAbsorption(const Array< OneD, MultiRegions::ExpListSharedPtr > &pFields, const TiXmlElement *pForce)
void CalculateForcing(const Array< OneD, MultiRegions::ExpListSharedPtr > &fields, const Array< OneD, Array< OneD, NekDouble > > &inarray, const NekDouble &time)
static std::string className
Name of the class.
std::shared_ptr< BRTree > m_rtree
std::vector< unsigned int > m_bRegions
Array< OneD, Array< OneD, NekDouble > > m_Absorption
Defines a forcing term to be explicitly applied.
std::shared_ptr< SessionReader > SessionReaderSharedPtr
SOLVER_UTILS_EXPORT typedef std::shared_ptr< Forcing > ForcingSharedPtr
A shared pointer to an EquationSystem object.