33 Foam::tensor Foam::molecule::rotationTensorX(scalar phi)
const 44 Foam::tensor Foam::molecule::rotationTensorY(scalar phi)
const 55 Foam::tensor Foam::molecule::rotationTensorZ(scalar phi)
const 80 v_ += 0.5*trackTime*a_;
82 pi_ += 0.5*trackTime*tau_;
84 else if (td.
part() == 1)
94 else if (td.
part() == 2)
100 if (!constProps.pointMolecule())
106 if (!constProps.linearMolecule())
125 if (!constProps.linearMolecule())
135 else if (td.
part() == 3)
140 scalar m = constProps.mass();
152 tau_ += (constProps.siteReferencePositions()[
s] ^ (Q_.
T() &
f));
155 v_ += 0.5*trackTime*a_;
157 pi_ += 0.5*trackTime*tau_;
159 if (constProps.pointMolecule())
166 if (constProps.linearMolecule())
176 << td.
part() <<
" is an invalid part of the integration method." 202 siteForces_ = T & siteForces_;
212 specialPosition_ += separation;
215 sitePositions_ = sitePositions_ + separation;
#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.
void hitProcessorPatch(const processorPolyPatch &, trackingData &td)
Overridable function to handle the particle hitting a processorPatch.
Class to hold molecule constant properties.
void setSitePositions(const constantProperties &constProps)
#define FatalErrorInFunction
Report an error message using Foam::FatalError.
scalar trackToFace(const vector &displacement, const scalar fraction)
As particle::track, but also stops on internal faces.
Tensor< Cmpt > T() const
Return transpose.
virtual void transformProperties(const tensor &T)
Transform the physical properties of the particle.
Neighbour processor patch.
vector normal() const
Return the normal of the tri on tetFacei_ for the.
CloudType & cloud()
Return a reference to the cloud.
const Field< vector > & siteReferencePositions() const
gmvFile<< "tracers "<< particles.size()<< nl;forAllConstIter(Cloud< passiveParticle >, particles, iter){ gmvFile<< iter().position().x()<< " ";}gmvFile<< nl;forAllConstIter(Cloud< passiveParticle >, particles, iter){ gmvFile<< iter().position().y()<< " ";}gmvFile<< nl;forAllConstIter(Cloud< passiveParticle >, particles, iter){ gmvFile<< iter().position().z()<< " ";}gmvFile<< nl;forAll(lagrangianScalarNames, i){ word name=lagrangianScalarNames[i];IOField< scalar > s(IOobject(name, runTime.timeName(), cloud::prefix, mesh, IOobject::MUST_READ, IOobject::NO_WRITE))
dimensionedScalar cos(const dimensionedScalar &ds)
void hitWallPatch(const wallPolyPatch &, trackingData &td, const tetIndices &)
Overridable function to handle the particle hitting a wallPatch.
bool move(trackingData &, const scalar trackTime)
Storage and named access for the indices of a tet which is part of the decomposition of a cell...
bool keepParticle
Flag to indicate whether to keep particle (false = delete)
virtual void transformProperties(const tensor &T)
Transform the physical properties of the particle.
errorManip< error > abort(error &err)
dimensionedScalar sin(const dimensionedScalar &ds)
void T(FieldField< Field, Type > &f1, const FieldField< Field, Type > &f2)
scalar stepFraction() const
Return the fraction of time-step completed.
void setSize(const label)
Reset size of List.
bool hitPatch(const polyPatch &, trackingData &td, const label patchi, const scalar trackFraction, const tetIndices &tetIs)
Overridable function to handle the particle hitting a patch.
#define R(A, B, C, D, E, F, K, M)
Class used to pass tracking data to the trackToFace function.
void setSiteSizes(label size)
dimensioned< scalar > mag(const dimensioned< Type > &)
const List< molecule::constantProperties > constProps() const
Calculates the inertia tensor and principal axes and moments of a polyhedra/cells/triSurfaces. Inertia can either be of the solid body or of a thin shell.
bool switchProcessor
Flag to switch processor.
A patch is a list of labels that address the faces in the global face list.
vector position() const
Return current particle position.
Tensor< scalar > tensor
Tensor of scalars.
dimensionSet transform(const dimensionSet &)