37 #include "ac/pthread.h"
49 :
virtual public Elem {
84 MPI::Intracomm IndVelComm;
97 MPI::Datatype* pIndVelDataType;
100 #if defined(USE_MULTITHREAD) && defined(MBDYN_X_MT_ASSRES)
101 mutable pthread_mutex_t forces_mutex;
103 mutable pthread_mutex_t induced_velocity_mutex;
104 mutable pthread_cond_t induced_velocity_cond;
107 void Wait(
void)
const;
108 void Done(
void)
const;
109 #endif // USE_MULTITHREAD && MBDYN_X_MT_ASSRES
164 #if defined(USE_MULTITHREAD) && defined(MBDYN_X_MT_ASSRES)
166 #endif // USE_MULTITHREAD && MBDYN_X_MT_ASSRES
171 #if defined(USE_MULTITHREAD) && defined(MBDYN_X_MT_ASSRES)
173 #endif // USE_MULTITHREAD && MBDYN_X_MT_ASSRES
194 const Elem *pEl,
unsigned uPnt,
204 unsigned uLabel,
unsigned uPnt,
const Vec3& X)
const = 0;
243 connectedNodes.resize(1);
244 connectedNodes[0] =
pCraft;
249 void ExchangeLoads(
flag fWhat);
250 void InitializeIndVelComm(MPI::Intracomm*
Rot);
251 void ExchangeVelocity(
void);
virtual void GetConnectedNodes(std::vector< const Node * > &connectedNodes) const
virtual void AfterConvergence(const VectorHandler &X, const VectorHandler &XP)
virtual void ResetForce(void)
virtual ~InducedVelocity(void)
virtual doublereal dGetPrivData(unsigned int i) const
#define MBDYN_EXCEPT_ARGS_PASSTHRU
virtual const Vec3 & Force(void) const
#define MBDYN_EXCEPT_ARGS_DECL
virtual Elem::Type GetElemType(void) const =0
std::vector< Hint * > Hints
virtual const Vec3 & Moment(void) const
virtual const Vec3 & GetXCurr(void) const
virtual DofOrder::Order GetDofType(unsigned int i) const
virtual unsigned int iGetNumPrivData(void) const
virtual void AddSectionalForce(Elem::Type type, const Elem *pEl, unsigned uPnt, const Vec3 &F, const Vec3 &M, doublereal dW, const Vec3 &X, const Mat3x3 &R, const Vec3 &V, const Vec3 &W)
virtual bool bSectionalForces(void) const
virtual void AddForce(const Elem *pEl, const StructNode *pNode, const Vec3 &F, const Vec3 &M, const Vec3 &X)
virtual InducedVelocity::Type GetInducedVelocityType(void) const =0
InducedVelocity(unsigned int uL, const StructNode *pCraft, ResForceSet **ppres, flag fOut)
virtual Vec3 GetInducedVelocity(Elem::Type type, unsigned uLabel, unsigned uPnt, const Vec3 &X) const =0
virtual void SetInitialValue(VectorHandler &)
Mat3x3 Rot(const Vec3 &phi)
#define ASSERT(expression)
virtual const Vec3 & GetXCurr(void) const
virtual unsigned int iGetNumDof(void) const
virtual void SetValue(DataManager *pDM, VectorHandler &, VectorHandler &, SimulationEntity::Hints *ph=0)
ErrInfiniteMeanInducedVelocity(MBDYN_EXCEPT_ARGS_DECL)
virtual void WorkSpaceDim(integer *piNumRows, integer *piNumCols) const
virtual const Vec3 & GetMoments(void) const
virtual unsigned int iGetPrivDataIdx(const char *s) const
virtual const Vec3 & GetForces(void) const
virtual VariableSubMatrixHandler & AssJac(VariableSubMatrixHandler &WorkMat, doublereal dCoef, const VectorHandler &XCurr, const VectorHandler &XPrimeCurr)
const StructNode * pCraft