Nektar++
|
#include <ForcingMovingBody.h>
Static Public Member Functions | |
static SolverUtils::ForcingSharedPtr | create (const LibUtilities::SessionReaderSharedPtr &pSession, const std::weak_ptr< SolverUtils::EquationSystem > &pEquation, const Array< OneD, MultiRegions::ExpListSharedPtr > &pFields, const unsigned int &pNumForcingFields, const TiXmlElement *pForce) |
Creates an instance of this class. More... | |
Static Public Member Functions inherited from Nektar::SolverUtils::Forcing | |
static SOLVER_UTILS_EXPORT std::vector< ForcingSharedPtr > | Load (const LibUtilities::SessionReaderSharedPtr &pSession, const std::weak_ptr< EquationSystem > &pEquation, const Array< OneD, MultiRegions::ExpListSharedPtr > &pFields, const unsigned int &pNumForcingFields=0) |
Static Public Attributes | |
static std::string | className |
Name of the class. More... | |
Protected Attributes | |
GlobalMapping::MappingSharedPtr | m_mapping |
Protected Attributes inherited from Nektar::SolverUtils::Forcing | |
LibUtilities::SessionReaderSharedPtr | m_session |
Session reader. More... | |
const std::weak_ptr< EquationSystem > | m_equ |
Weak pointer to equation system using this forcing. More... | |
Array< OneD, Array< OneD, NekDouble > > | m_Forcing |
Evaluated forcing function. More... | |
int | m_NumVariable |
Number of variables. More... | |
std::map< std::string, SolverUtils::SessionFunctionSharedPtr > | m_sessionFunctions |
Map of known SessionFunctions. More... | |
Private Member Functions | |
ForcingMovingBody (const LibUtilities::SessionReaderSharedPtr &pSession, const std::weak_ptr< SolverUtils::EquationSystem > &pEquation) | |
void | CheckIsFromFile (const TiXmlElement *pForce) |
void | InitialiseCableModel (const LibUtilities::SessionReaderSharedPtr &pSession, const Array< OneD, MultiRegions::ExpListSharedPtr > &pFields) |
void | InitialiseFilter (const LibUtilities::SessionReaderSharedPtr &pSession, const Array< OneD, MultiRegions::ExpListSharedPtr > &pFields, const TiXmlElement *pForce) |
void | Newmark_betaSolver (const Array< OneD, MultiRegions::ExpListSharedPtr > &pFields, Array< OneD, NekDouble > &FcePhysinArray, Array< OneD, NekDouble > &MotPhysinArray) |
void | EvaluateStructDynModel (const Array< OneD, MultiRegions::ExpListSharedPtr > &pFields, Array< OneD, NekDouble > &Hydroforces, NekDouble time) |
void | SetDynEqCoeffMatrix (const Array< OneD, MultiRegions::ExpListSharedPtr > &pFields) |
void | RollOver (Array< OneD, Array< OneD, NekDouble > > &input) |
Private Attributes | |
size_t | m_movingBodyCalls |
number of times the movbody have been called More... | |
size_t | m_np |
number of planes per processors More... | |
size_t | m_vdim |
vibration dimension More... | |
NekDouble | m_structrho |
mass of the cable per unit length More... | |
NekDouble | m_structdamp |
damping ratio of the cable More... | |
NekDouble | m_lhom |
length ratio of the cable More... | |
NekDouble | m_kinvis |
fluid viscous More... | |
NekDouble | m_timestep |
time step More... | |
LibUtilities::NektarFFTSharedPtr | m_FFT |
FilterMovingBodySharedPtr | m_MovBodyfilter |
Array< OneD, NekDouble > | m_Aeroforces |
storage for the cable's force(x,y) variables More... | |
Array< OneD, Array< OneD, NekDouble > > | m_MotionVars |
storage for the cable's motion(x,y) variables More... | |
Array< OneD, Array< OneD, Array< OneD, NekDouble > > > | m_fV |
fictitious velocity storage More... | |
Array< OneD, Array< OneD, Array< OneD, NekDouble > > > | m_fA |
fictitious acceleration storage More... | |
Array< OneD, DNekMatSharedPtr > | m_CoeffMat_A |
matrices in Newmart-beta method More... | |
Array< OneD, DNekMatSharedPtr > | m_CoeffMat_B |
matrices in Newmart-beta method More... | |
Array< OneD, std::string > | m_funcName |
[0] is displacements, [1] is velocities, [2] is accelerations More... | |
Array< OneD, std::string > | m_motion |
motion direction: [0] is 'x' and [1] is 'y' More... | |
Array< OneD, bool > | m_IsFromFile |
do determine if the the body motion come from an extern file More... | |
Array< OneD, Array< OneD, NekDouble > > | m_zta |
Store the derivatives of motion variables in x-direction. More... | |
Array< OneD, Array< OneD, NekDouble > > | m_eta |
Store the derivatives of motion variables in y-direction. More... | |
unsigned int | m_outputFrequency |
Friends | |
class | MemoryManager< ForcingMovingBody > |
Additional Inherited Members | |
Public Member Functions inherited from Nektar::SolverUtils::Forcing | |
virtual SOLVER_UTILS_EXPORT | ~Forcing () |
SOLVER_UTILS_EXPORT void | InitObject (const Array< OneD, MultiRegions::ExpListSharedPtr > &pFields, const unsigned int &pNumForcingFields, const TiXmlElement *pForce) |
Initialise the forcing object. More... | |
SOLVER_UTILS_EXPORT void | Apply (const Array< OneD, MultiRegions::ExpListSharedPtr > &fields, const Array< OneD, Array< OneD, NekDouble > > &inarray, Array< OneD, Array< OneD, NekDouble > > &outarray, const NekDouble &time) |
Apply the forcing. More... | |
SOLVER_UTILS_EXPORT void | PreApply (const Array< OneD, MultiRegions::ExpListSharedPtr > &fields, const Array< OneD, Array< OneD, NekDouble > > &inarray, Array< OneD, Array< OneD, NekDouble > > &outarray, const NekDouble &time) |
Change the advection velocity before applying the forcing. For example, subtracting the frame velocity from the advection velocity in the MovingRefercenceFrame. More... | |
SOLVER_UTILS_EXPORT void | ApplyCoeff (const Array< OneD, MultiRegions::ExpListSharedPtr > &fields, const Array< OneD, Array< OneD, NekDouble > > &inarray, Array< OneD, Array< OneD, NekDouble > > &outarray, const NekDouble &time) |
Apply the forcing. More... | |
SOLVER_UTILS_EXPORT const Array< OneD, const Array< OneD, NekDouble > > & | GetForces () |
SOLVER_UTILS_EXPORT Array< OneD, Array< OneD, NekDouble > > & | UpdateForces () |
Definition at line 49 of file ForcingMovingBody.h.
|
private |
Definition at line 48 of file ForcingMovingBody.cpp.
|
private |
Definition at line 1066 of file ForcingMovingBody.cpp.
References ASSERTL0, Nektar::LibUtilities::eFunctionTypeExpression, Nektar::LibUtilities::eFunctionTypeFile, m_funcName, m_IsFromFile, m_motion, and Nektar::SolverUtils::Forcing::m_session.
Referenced by v_InitObject().
|
inlinestatic |
Creates an instance of this class.
Definition at line 55 of file ForcingMovingBody.h.
References Nektar::MemoryManager< DataType >::AllocateSharedPtr(), Nektar::SolverUtils::ForcingSharedPtr, and CellMLToNektar.cellml_metadata::p.
|
private |
Definition at line 227 of file ForcingMovingBody.cpp.
References Vmath::Fill(), m_eta, m_fA, m_fV, m_motion, m_MotionVars, m_movingBodyCalls, m_np, Nektar::SolverUtils::Forcing::m_session, m_vdim, m_zta, Newmark_betaSolver(), RollOver(), Vmath::Smul(), Vmath::Svtvp(), and Vmath::Vcopy().
Referenced by v_Apply().
|
private |
Definition at line 679 of file ForcingMovingBody.cpp.
References ASSERTL0, Nektar::LibUtilities::NekFactory< tKey, tBase, tParam >::CreateInstance(), Nektar::LibUtilities::GetNektarFFTFactory(), m_fA, m_FFT, m_funcName, m_fV, m_IsFromFile, m_kinvis, m_lhom, m_motion, m_MotionVars, m_movingBodyCalls, m_np, Nektar::SolverUtils::Forcing::m_session, m_structdamp, m_structrho, m_timestep, m_vdim, Vmath::Sadd(), SetDynEqCoeffMatrix(), Vmath::Smul(), and Vmath::Vcopy().
Referenced by v_InitObject().
|
private |
Definition at line 1216 of file ForcingMovingBody.cpp.
References Nektar::MemoryManager< DataType >::AllocateSharedPtr(), ASSERTL0, Nektar::SolverUtils::Forcing::m_equ, and m_MovBodyfilter.
Referenced by v_InitObject().
|
private |
Definition at line 551 of file ForcingMovingBody.cpp.
References ASSERTL0, Blas::Dgemv(), m_CoeffMat_A, m_CoeffMat_B, m_FFT, Nektar::SolverUtils::Forcing::m_session, m_structrho, and Vmath::Vcopy().
Referenced by EvaluateStructDynModel().
Function to roll time-level storages to the next step layout. The stored data associated with the oldest time-level (not required anymore) are moved to the top, where they will be overwritten as the solution process progresses.
Definition at line 1048 of file ForcingMovingBody.cpp.
Referenced by EvaluateStructDynModel().
|
private |
Definition at line 943 of file ForcingMovingBody.cpp.
References Nektar::MemoryManager< DataType >::AllocateSharedPtr(), ASSERTL0, Nektar::LibUtilities::beta, m_CoeffMat_A, m_CoeffMat_B, m_lhom, Nektar::SolverUtils::Forcing::m_session, m_structdamp, m_structrho, and m_timestep.
Referenced by InitialiseCableModel().
|
overrideprotectedvirtual |
Implements Nektar::SolverUtils::Forcing.
Definition at line 103 of file ForcingMovingBody.cpp.
References ASSERTL0, EvaluateStructDynModel(), Nektar::SolverUtils::Forcing::GetFunction(), m_eta, m_funcName, m_IsFromFile, m_mapping, m_motion, m_MotionVars, m_MovBodyfilter, m_np, Nektar::SolverUtils::Forcing::m_session, m_vdim, m_zta, Vmath::Vadd(), Vmath::Vcopy(), and Vmath::Vsub().
|
overrideprotectedvirtual |
Implements Nektar::SolverUtils::Forcing.
Definition at line 55 of file ForcingMovingBody.cpp.
References ASSERTL0, CheckIsFromFile(), Nektar::MultiRegions::e3DH1D, InitialiseCableModel(), InitialiseFilter(), Nektar::GlobalMapping::Mapping::Load(), m_eta, m_mapping, Nektar::SolverUtils::Forcing::m_session, m_vdim, and m_zta.
|
friend |
Definition at line 1 of file ForcingMovingBody.h.
|
static |
Name of the class.
Definition at line 69 of file ForcingMovingBody.h.
storage for the cable's force(x,y) variables
Definition at line 129 of file ForcingMovingBody.h.
|
private |
matrices in Newmart-beta method
Definition at line 137 of file ForcingMovingBody.h.
Referenced by Newmark_betaSolver(), and SetDynEqCoeffMatrix().
|
private |
matrices in Newmart-beta method
Definition at line 139 of file ForcingMovingBody.h.
Referenced by Newmark_betaSolver(), and SetDynEqCoeffMatrix().
Store the derivatives of motion variables in y-direction.
Definition at line 149 of file ForcingMovingBody.h.
Referenced by EvaluateStructDynModel(), v_Apply(), and v_InitObject().
fictitious acceleration storage
Definition at line 135 of file ForcingMovingBody.h.
Referenced by EvaluateStructDynModel(), and InitialiseCableModel().
|
private |
Definition at line 125 of file ForcingMovingBody.h.
Referenced by InitialiseCableModel(), and Newmark_betaSolver().
[0] is displacements, [1] is velocities, [2] is accelerations
Definition at line 141 of file ForcingMovingBody.h.
Referenced by CheckIsFromFile(), InitialiseCableModel(), and v_Apply().
fictitious velocity storage
Definition at line 133 of file ForcingMovingBody.h.
Referenced by EvaluateStructDynModel(), and InitialiseCableModel().
do determine if the the body motion come from an extern file
Definition at line 145 of file ForcingMovingBody.h.
Referenced by CheckIsFromFile(), InitialiseCableModel(), and v_Apply().
|
private |
fluid viscous
Definition at line 122 of file ForcingMovingBody.h.
Referenced by InitialiseCableModel().
|
private |
length ratio of the cable
Definition at line 121 of file ForcingMovingBody.h.
Referenced by InitialiseCableModel(), and SetDynEqCoeffMatrix().
|
protected |
Definition at line 73 of file ForcingMovingBody.h.
Referenced by v_Apply(), and v_InitObject().
motion direction: [0] is 'x' and [1] is 'y'
Definition at line 143 of file ForcingMovingBody.h.
Referenced by CheckIsFromFile(), EvaluateStructDynModel(), InitialiseCableModel(), and v_Apply().
storage for the cable's motion(x,y) variables
Definition at line 131 of file ForcingMovingBody.h.
Referenced by EvaluateStructDynModel(), InitialiseCableModel(), and v_Apply().
|
private |
Definition at line 127 of file ForcingMovingBody.h.
Referenced by InitialiseFilter(), and v_Apply().
|
private |
number of times the movbody have been called
Definition at line 115 of file ForcingMovingBody.h.
Referenced by EvaluateStructDynModel(), and InitialiseCableModel().
|
private |
number of planes per processors
Definition at line 116 of file ForcingMovingBody.h.
Referenced by EvaluateStructDynModel(), InitialiseCableModel(), and v_Apply().
|
private |
Definition at line 151 of file ForcingMovingBody.h.
|
private |
damping ratio of the cable
Definition at line 120 of file ForcingMovingBody.h.
Referenced by InitialiseCableModel(), and SetDynEqCoeffMatrix().
|
private |
mass of the cable per unit length
Definition at line 119 of file ForcingMovingBody.h.
Referenced by InitialiseCableModel(), Newmark_betaSolver(), and SetDynEqCoeffMatrix().
|
private |
time step
Definition at line 123 of file ForcingMovingBody.h.
Referenced by InitialiseCableModel(), and SetDynEqCoeffMatrix().
|
private |
vibration dimension
Definition at line 117 of file ForcingMovingBody.h.
Referenced by EvaluateStructDynModel(), InitialiseCableModel(), v_Apply(), and v_InitObject().
Store the derivatives of motion variables in x-direction.
Definition at line 147 of file ForcingMovingBody.h.
Referenced by EvaluateStructDynModel(), v_Apply(), and v_InitObject().