36namespace sixDoFRigidBodyMotionRestraints
60 refAttachmentPt_(Zero),
79 restraintPosition = motion.
transform(refAttachmentPt_);
80 restraintForce =
Zero;
81 restraintMoment =
Zero;
83 const vector r(restraintPosition - anchor_);
87 const scalar d = (wallNormal_/
mag(wallNormal_)) & r;
91 const scalar m = motion.
mass();
92 const scalar wn = 3.14/C_;
93 const scalar damping = psi_*2*wn*m;
94 const scalar stiffness =
sqr(wn)*m;
98 restraintForce = (-damping*(rDir & v) + stiffness*d)*rDir;
99 restraintMoment = restraintPosition^restraintForce;
104 Info<<
" restraintPosition: " << restraintPosition
105 <<
" restraintForce: " << restraintForce
106 <<
" restraintMoment: " << restraintMoment
122 sDoFRBMRCoeffs_.readEntry(
"anchor", anchor_);
123 sDoFRBMRCoeffs_.readEntry(
"refAttachmentPt", refAttachmentPt_);
124 sDoFRBMRCoeffs_.readEntry(
"wallNormal", wallNormal_);
125 sDoFRBMRCoeffs_.readEntry(
"psi", psi_);
126 sDoFRBMRCoeffs_.readEntry(
"C", C_);
137 os.writeEntry(
"anchor", anchor_);
138 os.writeEntry(
"refAttachmentPt", refAttachmentPt_);
139 os.writeEntry(
"wallNormal", wallNormal_);
140 os.writeEntry(
"psi", psi_);
141 os.writeEntry(
"C", C_);
Macros for easy insertion into run-time selection tables.
#define addToRunTimeSelectionTable(baseType, thisType, argNames)
Add to construction table with typeName as the key.
An Ostream is an abstract base class for all output systems (streams, files, token lists,...
virtual bool read()
Re-read model coefficients if they have changed.
Soft wall is a Damper-Linear spring restraint. Acts as a "soft" wall when the distance between 'ancho...
A list of keyword definitions, which are a keyword followed by a number of values (eg,...
virtual bool write()
Write the output fields.
Base class for defining restraints for sixDoF motions.
sixDoFRigidBodyMotionRestraints model. Soft wall.
virtual void restrain(const sixDoFRigidBodyMotion &motion, vector &restraintPosition, vector &restraintForce, vector &restraintMoment) const
Calculate the restraint position, force and moment.
virtual bool read(const dictionary &sDoFRBMRCoeff)
Update properties from given dictionary.
Six degree of freedom motion for a rigid body.
bool report() const
Return the report Switch.
point transform(const point &initialPoints) const
Transform the given initial state point by the current motion.
scalar mass() const
Return the mass.
point velocity(const point &pt) const
Return the velocity of a position.
A class for handling words, derived from Foam::string.
#define defineTypeNameAndDebug(Type, DebugSwitch)
Define the typeName and debug information.
OBJstream os(runTime.globalPath()/outputName)
dimensionedSymmTensor sqr(const dimensionedVector &dv)
messageStream Info
Information stream (stdout output on master, null elsewhere)
Ostream & endl(Ostream &os)
Add newline and flush stream.
dimensioned< typename typeOfMag< Type >::type > mag(const dimensioned< Type > &dt)
static constexpr const zero Zero
Global zero (0)
word name(const expressions::valueTypeCode typeCode)
A word representation of a valueTypeCode. Empty for INVALID.