45 rigidBodyMeshMotionSolver,
53 Foam::rigidBodyMeshMotionSolver::bodyMesh::bodyMesh
58 const dictionary& dict
64 patchSet_(mesh.boundaryMesh().patchSet(patches_))
80 "rigidBodyMotionState",
84 ).typeHeaderOk<IOdictionary>(
true)
89 "rigidBodyMotionState",
114 "rigidBodyMotionSolver:meshSolver",
115 mesh.time().constant(),
124 if (rhoName_ ==
"rhoInf")
144 if (bodyDict.
found(
"patches"))
151 <<
"Body " << iter().keyword()
152 <<
" has been merged with another body" 153 " and cannot be assigned a set of patches" 183 return meshSolverPtr_->curPoints();
194 <<
"The number of points in the mesh seems to have changed." <<
endl 195 <<
"In constant/polyMesh there are " << meshSolver_.
points0().
size()
196 <<
" points; in the current mesh there are " <<
mesh().
nPoints()
220 for (
label i=0; i<nIter; i++)
240 forcesDict.
add(
"type", functionObjects::forces::typeName);
241 forcesDict.
add(
"patches", bodyMeshes_[bi].patches_);
242 forcesDict.
add(
"rhoInf", rhoInf_);
243 forcesDict.
add(
"rho", rhoName_);
265 status(bodyMeshes_[bi].bodyID_);
279 .patchInternalField(meshSolver_.
points0())
286 bodyMeshes_[bi].bodyID_,
293 meshSolverPtr_->solve();
299 meshSolverPtr_->movePoints(points);
305 meshSolverPtr_->updateMesh(mpm);
315 "rigidBodyMotionState",
328 dict.regIOobject::writeObject
332 mesh().time().writeCompression(),
void newTime()
Store the motion state at the beginning of the time-step.
Template class for intrusive linked lists.
virtual vector momentEff() const
Return the total moment.
void append(T *)
Append an element at the end of the list.
bool found(const word &, bool recursive=false, bool patternMatch=true) const
Search dictionary for given keyword.
Virtual base class for displacement motion solver.
virtual bool write() const
Write motion state information for restart.
#define forAll(list, i)
Loop across all elements in list.
intWM_LABEL_SIZE_t label
A label is an int32_t or int64_t as specified by the pre-processor macro WM_LABEL_SIZE.
errorManipArg< error, int > exit(error &err, const int errNo=1)
A list of keyword definitions, which are a keyword followed by any number of values (e...
#define FatalErrorInFunction
Report an error message using Foam::FatalError.
const Boundary & boundaryField() const
Return const-reference to the boundary field.
rigidBodyMeshMotionSolver(const polyMesh &, const dictionary &dict)
Construct from polyMesh and dictionary.
tmp< pointField > transformPoints(const label bodyID, const pointField &initialPoints) const
Transform the given initial pointField of the specified body.
To & refCast(From &r)
Reference type cast template function.
void size(const label)
Override size to be inconsistent with allocated storage.
Ostream & endl(Ostream &os)
Add newline and flush stream.
void status(const label bodyID) const
Report the status of the motion of the given body.
A simple wrapper around bool so that it can be read as a word: true/false, on/off, yes/no, y/n, t/f, or none/any.
static bool master(const label communicator=0)
Am I the master process.
bool foundObject(const word &name) const
Is the named Type found?
virtual bool write() const
Optionally write motion state information for restart.
static autoPtr< motionSolver > New(const polyMesh &, const dictionary &)
Select constructed from polyMesh and dictionary.
Virtual base class for mesh motion solver.
virtual vector forceEff() const
Return the total force.
static word timeName(const scalar, const int precision=precision_)
Return time name of given scalar time.
virtual tmp< pointField > curPoints() const
Return point location obtained from the current motion field.
label nBodies() const
Return the number of bodies in the model (bodies().size())
const dictionary & coeffDict() const
Const access to the coefficients dictionary.
const rigidBodyModelState & state() const
Return the motion state.
const Type & lookupObject(const word &name) const
Lookup and return the object of the given Type.
Class to control time during OpenFOAM simulations that is also the top-level objectRegistry.
virtual void movePoints(const pointField &)
Update local data for geometry changes.
Class containing mesh-to-mesh mapping information after a change in polyMesh topology.
Macros for easy insertion into run-time selection tables.
bool add(entry *, bool mergeEntry=false)
Add a new entry.
IOdictionary is derived from dictionary and IOobject to give the dictionary automatic IO functionalit...
const dictionary & subDict(const word &) const
Find and return a sub-dictionary.
Templated function that returns the corresponding 1 (one).
pointVectorField & pointDisplacement()
Return reference to the point motion displacement field.
Six degree of freedom motion for a rigid body.
stressControl lookup("compactNormalStress") >> compactNormalStress
virtual Type value(const scalar x) const =0
Return value as a function of scalar x.
Pre-declare SubField and related Field type.
A class for handling words, derived from string.
Field< scalar > scalarField
Specialisation of Field<T> for scalar.
SpatialVector< scalar > spatialVector
SpatialVector of scalars.
void write(dictionary &dict) const
Write to dictionary.
scalar deltaTValue() const
Return time step value.
const Type & value() const
Return const reference to value.
virtual void calcForcesMoment()
Calculate the forces and moments.
virtual void updateMesh(const mapPolyMesh &)
Update local data for topology changes.
forAllConstIter(PtrDictionary< phaseModel >, mixture.phases(), phase)
addToRunTimeSelectionTable(ensightPart, ensightPartCells, istream)
void solve(const scalar t, const scalar deltaT, const scalarField &tau, const Field< spatialVector > &fx)
Integrate velocities, orientation and position.
const Time & time() const
Return time.
defineTypeNameAndDebug(combustionModel, 0)
label nDoF() const
Return the number of degrees of freedom of the model.
const vector & g() const
Return the acceleration due to gravity.
word name(const complex &)
Return a string representation of a complex.
label timeIndex() const
Return current time index.
static const versionNumber currentVersion
Current version number.
Boundary & boundaryFieldRef()
Return a reference to the boundary field.
label bodyID(const word &name) const
Return the ID of the body with the given name.
Mesh consisting of general polyhedral cells.
List< wordRe > wordReList
A List of wordRe (word or regular expression)
Calculates the forces and moments by integrating the pressure and skin-friction forces over a given l...
const polyMesh & mesh() const
Return reference to mesh.
A class for managing temporary objects.
pointField & points0()
Return reference to the reference field.
~rigidBodyMeshMotionSolver()
Destructor.
virtual void solve()
Solve for motion.
IOobject defines the attributes of an object for which implicit objectRegistry management is supporte...
motionSolver(const polyMesh &mesh, const dictionary &, const word &type)
Construct from polyMesh and dictionary and type.
bool report() const
Return the report Switch.
static const Vector< scalar > zero
static autoPtr< Function1< Type > > New(const word &name, const dictionary &dict)
Selector.
ITstream & lookup(const word &, bool recursive=false, bool patternMatch=true) const
Find and return an entry data stream.