Nektar++
Static Public Member Functions | Static Public Attributes | Protected Member Functions | Protected Attributes | Friends | List of all members
Nektar::MovingFrameFar Class Reference

#include <MovingFrameFar.h>

Inheritance diagram for Nektar::MovingFrameFar:
[legend]

Static Public Member Functions

static IncBaseConditionSharedPtr create (const LibUtilities::SessionReaderSharedPtr pSession, Array< OneD, MultiRegions::ExpListSharedPtr > pFields, Array< OneD, SpatialDomains::BoundaryConditionShPtr > cond, Array< OneD, MultiRegions::ExpListSharedPtr > exp, int nbnd, int spacedim, int bnddim)
 

Static Public Attributes

static std::string className
 

Protected Member Functions

 MovingFrameFar (const LibUtilities::SessionReaderSharedPtr pSession, Array< OneD, MultiRegions::ExpListSharedPtr > pFields, Array< OneD, SpatialDomains::BoundaryConditionShPtr > cond, Array< OneD, MultiRegions::ExpListSharedPtr > exp, int nbnd, int spacedim, int bnddim)
 
 ~MovingFrameFar () override=default
 
void v_Initialise (const LibUtilities::SessionReaderSharedPtr &pSession) override
 
void v_Update (const Array< OneD, const Array< OneD, NekDouble > > &fields, const Array< OneD, const Array< OneD, NekDouble > > &Adv, std::map< std::string, NekDouble > &params) override
 
- Protected Member Functions inherited from Nektar::IncBaseCondition
 IncBaseCondition (const LibUtilities::SessionReaderSharedPtr pSession, Array< OneD, MultiRegions::ExpListSharedPtr > pFields, Array< OneD, SpatialDomains::BoundaryConditionShPtr > cond, Array< OneD, MultiRegions::ExpListSharedPtr > exp, int nbnd, int spacedim, int bnddim)
 
virtual void v_Initialise (const LibUtilities::SessionReaderSharedPtr &pSession)
 
virtual void v_Update (const Array< OneD, const Array< OneD, NekDouble > > &fields, const Array< OneD, const Array< OneD, NekDouble > > &Adv, std::map< std::string, NekDouble > &params)
 
void ExtrapolateArray (const int numCalls, Array< OneD, Array< OneD, Array< OneD, NekDouble > > > &array)
 
void RollOver (Array< OneD, Array< OneD, Array< OneD, NekDouble > > > &input)
 
void AddVisPressureBCs (const Array< OneD, const Array< OneD, NekDouble > > &fields, Array< OneD, Array< OneD, NekDouble > > &N, std::map< std::string, NekDouble > &params)
 
void AddRigidBodyAcc (Array< OneD, Array< OneD, NekDouble > > &N, std::map< std::string, NekDouble > &params, int npts0)
 
void RigidBodyVelocity (Array< OneD, Array< OneD, NekDouble > > &velocities, std::map< std::string, NekDouble > &params, int npts0)
 
void InitialiseCoords (std::map< std::string, NekDouble > &params)
 
void SetNumPointsOnPlane0 (int &npointsPlane0)
 

Protected Attributes

std::vector< LibUtilities::Equationm_definedVels
 
- Protected Attributes inherited from Nektar::IncBaseCondition
int m_spacedim
 
int m_bnddim
 bounday dimensionality More...
 
int m_nbnd
 
int m_numCalls
 
int m_intSteps
 
std::map< int, SpatialDomains::BoundaryConditionShPtrm_BndConds
 
std::map< int, MultiRegions::ExpListSharedPtrm_BndExp
 
int m_npoints
 
Array< OneD, Array< OneD, NekDouble > > m_coords
 
MultiRegions::ExpListSharedPtr m_bndElmtExps
 
MultiRegions::ExpListSharedPtr m_field
 
Array< OneD, Array< OneD, Array< OneD, NekDouble > > > m_viscous
 
int m_pressure
 
std::string classname
 

Friends

class MemoryManager< MovingFrameFar >
 

Additional Inherited Members

- Public Member Functions inherited from Nektar::IncBaseCondition
virtual ~IncBaseCondition ()=default
 
void Initialise (const LibUtilities::SessionReaderSharedPtr &pSession)
 
void Update (const Array< OneD, const Array< OneD, NekDouble > > &fields, const Array< OneD, const Array< OneD, NekDouble > > &Adv, std::map< std::string, NekDouble > &params)
 
- Static Protected Attributes inherited from Nektar::IncBaseCondition
static NekDouble StifflyStable_Betaq_Coeffs [3][3]
 
static NekDouble StifflyStable_Alpha_Coeffs [3][3]
 
static NekDouble StifflyStable_Gamma0_Coeffs [3]
 

Detailed Description

Definition at line 48 of file MovingFrameFar.h.

Constructor & Destructor Documentation

◆ MovingFrameFar()

Nektar::MovingFrameFar::MovingFrameFar ( const LibUtilities::SessionReaderSharedPtr  pSession,
Array< OneD, MultiRegions::ExpListSharedPtr pFields,
Array< OneD, SpatialDomains::BoundaryConditionShPtr cond,
Array< OneD, MultiRegions::ExpListSharedPtr exp,
int  nbnd,
int  spacedim,
int  bnddim 
)
protected

Definition at line 46 of file MovingFrameFar.cpp.

53 : IncBaseCondition(pSession, pFields, cond, exp, nbnd, spacedim, bnddim)
54{
55 classname = "MovingFrameFar";
56 for (size_t i = 0; i < m_spacedim; ++i)
57 {
58 m_BndConds[i] = cond[i];
59 if (cond[i]->GetUserDefined() == classname)
60 {
61 m_BndExp[i] = exp[i];
62 }
63 }
64}
std::map< int, MultiRegions::ExpListSharedPtr > m_BndExp
IncBaseCondition(const LibUtilities::SessionReaderSharedPtr pSession, Array< OneD, MultiRegions::ExpListSharedPtr > pFields, Array< OneD, SpatialDomains::BoundaryConditionShPtr > cond, Array< OneD, MultiRegions::ExpListSharedPtr > exp, int nbnd, int spacedim, int bnddim)
std::map< int, SpatialDomains::BoundaryConditionShPtr > m_BndConds

References Nektar::IncBaseCondition::classname, Nektar::IncBaseCondition::m_BndConds, Nektar::IncBaseCondition::m_BndExp, and Nektar::IncBaseCondition::m_spacedim.

◆ ~MovingFrameFar()

Nektar::MovingFrameFar::~MovingFrameFar ( )
overrideprotecteddefault

Member Function Documentation

◆ create()

static IncBaseConditionSharedPtr Nektar::MovingFrameFar::create ( const LibUtilities::SessionReaderSharedPtr  pSession,
Array< OneD, MultiRegions::ExpListSharedPtr pFields,
Array< OneD, SpatialDomains::BoundaryConditionShPtr cond,
Array< OneD, MultiRegions::ExpListSharedPtr exp,
int  nbnd,
int  spacedim,
int  bnddim 
)
inlinestatic

Definition at line 53 of file MovingFrameFar.h.

59 {
62 pSession, pFields, cond, exp, nbnd, spacedim, bnddim);
63 p->Initialise(pSession);
64 return p;
65 }
static std::shared_ptr< DataType > AllocateSharedPtr(const Args &...args)
Allocate a shared pointer from the memory pool.
std::shared_ptr< IncBaseCondition > IncBaseConditionSharedPtr

References Nektar::MemoryManager< DataType >::AllocateSharedPtr(), and CellMLToNektar.cellml_metadata::p.

◆ v_Initialise()

void Nektar::MovingFrameFar::v_Initialise ( const LibUtilities::SessionReaderSharedPtr pSession)
overrideprotectedvirtual

Reimplemented from Nektar::IncBaseCondition.

Definition at line 66 of file MovingFrameFar.cpp.

68{
70 m_definedVels.clear();
71 for (int k = 0; k < m_spacedim; ++k)
72 {
73 m_definedVels.push_back(
74 std::static_pointer_cast<
75 SpatialDomains::DirichletBoundaryCondition>(m_BndConds[k])
76 ->m_dirichletCondition);
77 }
78}
virtual void v_Initialise(const LibUtilities::SessionReaderSharedPtr &pSession)
std::vector< LibUtilities::Equation > m_definedVels

References Nektar::IncBaseCondition::m_BndConds, m_definedVels, Nektar::IncBaseCondition::m_spacedim, and Nektar::IncBaseCondition::v_Initialise().

◆ v_Update()

void Nektar::MovingFrameFar::v_Update ( const Array< OneD, const Array< OneD, NekDouble > > &  fields,
const Array< OneD, const Array< OneD, NekDouble > > &  Adv,
std::map< std::string, NekDouble > &  params 
)
overrideprotectedvirtual

Reimplemented from Nektar::IncBaseCondition.

Definition at line 80 of file MovingFrameFar.cpp.

84{
85 int nptsPlane0 = 0;
86 SetNumPointsOnPlane0(nptsPlane0);
87 if (0 == nptsPlane0)
88 {
89 return;
90 }
91 NekDouble time = 0.;
92 if (params.find("Time") != params.end())
93 {
94 time = params["Time"];
95 }
96 Array<OneD, NekDouble> vels(m_spacedim, 0.0);
97 for (int i = 0; i < m_spacedim; ++i)
98 {
99 vels[i] = m_definedVels[i].Evaluate(0., 0., 0., time);
100 }
101 if (params.find("Theta_z") != params.end())
102 {
103 NekDouble v0 = vels[0], v1 = vels[1];
104 NekDouble c = cos(params["Theta_z"]), s = sin(params["Theta_z"]);
105 vels[0] = v0 * c + v1 * s;
106 vels[1] = -v0 * s + v1 * c;
107 }
108 for (auto &it : m_BndExp)
109 {
110 int k = it.first;
111 if (it.second->GetExpType() == MultiRegions::e2DH1D)
112 {
113 Array<OneD, NekDouble> tmpvel =
114 it.second->GetPlane(0)->UpdatePhys();
115 Vmath::Fill(nptsPlane0, vels[k], tmpvel, 1);
116 it.second->GetPlane(0)->FwdTransBndConstrained(
117 tmpvel, it.second->GetPlane(0)->UpdateCoeffs());
118 }
119 else
120 {
121 Array<OneD, NekDouble> tmpvel = it.second->UpdatePhys();
122 Vmath::Fill(nptsPlane0, vels[k], tmpvel, 1);
123 it.second->FwdTransBndConstrained(tmpvel,
124 it.second->UpdateCoeffs());
125 }
126 }
127}
void SetNumPointsOnPlane0(int &npointsPlane0)
double NekDouble
void Fill(int n, const T alpha, T *x, const int incx)
Fill a vector with a constant value.
Definition: Vmath.hpp:54

References Nektar::MultiRegions::e2DH1D, Vmath::Fill(), Nektar::IncBaseCondition::m_BndExp, m_definedVels, Nektar::IncBaseCondition::m_spacedim, and Nektar::IncBaseCondition::SetNumPointsOnPlane0().

Friends And Related Function Documentation

◆ MemoryManager< MovingFrameFar >

friend class MemoryManager< MovingFrameFar >
friend

Definition at line 1 of file MovingFrameFar.h.

Member Data Documentation

◆ className

std::string Nektar::MovingFrameFar::className
static
Initial value:
=
"MovingFrameFar", MovingFrameFar::create,
"Far field boundary condition of moving reference frame")
tKey RegisterCreatorFunction(tKey idKey, CreatorFunction classCreator, std::string pDesc="")
Register a class with the factory.
static IncBaseConditionSharedPtr create(const LibUtilities::SessionReaderSharedPtr pSession, Array< OneD, MultiRegions::ExpListSharedPtr > pFields, Array< OneD, SpatialDomains::BoundaryConditionShPtr > cond, Array< OneD, MultiRegions::ExpListSharedPtr > exp, int nbnd, int spacedim, int bnddim)
IncBCFactory & GetIncBCFactory()

Definition at line 67 of file MovingFrameFar.h.

◆ m_definedVels

std::vector<LibUtilities::Equation> Nektar::MovingFrameFar::m_definedVels
protected

Definition at line 70 of file MovingFrameFar.h.

Referenced by v_Initialise(), and v_Update().