Functions for tracking locations through a mesh. More...
Functions | |
| void | stationaryTetReverseTransform (const polyMesh &mesh, const label celli, const label facei, const label faceTrii, vector ¢re, scalar &detA, barycentricTensor &T) |
| Get the reverse transform associated with the current tet. The. More... | |
| void | movingTetReverseTransform (const polyMesh &mesh, const label celli, const label facei, const label faceTrii, const scalar startStepFraction, const scalar endStepFraction, Pair< vector > ¢re, FixedList< scalar, 4 > &detA, FixedList< barycentricTensor, 3 > &T) |
| Get the reverse transformation associated with the current,. More... | |
| Tuple2< label, scalar > | toStationaryTri (const polyMesh &mesh, const vector &displacement, const scalar fraction, barycentric &coordinates, label &celli, label &facei, label &faceTrii, scalar &stepFraction, scalar &stepFractionBehind, label &nTracksBehind, const string &debugPrefix=NullObjectRef< string >()) |
| See toTri. For a stationary mesh. More... | |
| Tuple2< label, scalar > | toStationaryTri (const polyMesh &mesh, const Pair< vector > &displacement, const scalar fraction, barycentric &coordinates, label &celli, label &facei, label &faceTrii, scalar &stepFraction, scalar &stepFractionBehind, label &nTracksBehind, const string &debugPrefix=NullObjectRef< string >()) |
| See toTri. Second order. For a stationary mesh. More... | |
| Tuple2< label, scalar > | toMovingTri (const polyMesh &mesh, const vector &displacement, const scalar fraction, barycentric &coordinates, label &celli, label &facei, label &faceTrii, scalar &stepFraction, scalar &stepFractionBehind, label &nTracksBehind, const string &debugPrefix=NullObjectRef< string >()) |
| See toTri. For a moving mesh. More... | |
| Tuple2< label, scalar > | toMovingTri (const polyMesh &mesh, const Pair< vector > &displacement, const scalar fraction, barycentric &coordinates, label &celli, label &facei, label &faceTrii, scalar &stepFraction, scalar &stepFractionBehind, label &nTracksBehind, const string &debugPrefix=NullObjectRef< string >()) |
| See toTri. Second order. For a moving mesh. Not implemented. More... | |
| template<class Displacement > | |
| Tuple2< label, scalar > | toTri (const polyMesh &mesh, const Displacement &displacement, const scalar fraction, barycentric &coordinates, label &celli, label &facei, label &faceTrii, scalar &stepFraction, scalar &stepFractionBehind, label &nTracksBehind, const string &debugPrefix=NullObjectRef< string >()) |
| Track along the displacement for a given fraction of the overall. More... | |
| Pair< vector > | operator* (const scalar f, const Pair< vector > &displacement) |
| Scale a second-order displacement. More... | |
| void | reflect (barycentric &coordinates) |
| Reflection transform. Corrects the coordinates when the track moves. More... | |
| void | rotate (const bool reverse, barycentric &coordinates) |
| Rotation transform. Corrects the coordinates when the track moves. More... | |
| void | changeFaceTri (const polyMesh &mesh, const label tetTrii, barycentric &coordinates, const label celli, label &facei, label &faceTrii) |
| Change face-triangle within a cell. Called after a tet-triangle is hit. More... | |
| void | changeFace (const polyMesh &mesh, const label tetTrii, barycentric &coordinates, const label celli, label &facei, label &faceTrii) |
| Change face within a cell. Called (if necessary) by changeFaceTri. More... | |
| point | position (const polyMesh &mesh, const barycentric &coordinates, const label celli, const label facei, const label faceTrii, const scalar stepFraction) |
| Return the position given the coordinates and tet topology. More... | |
| barycentric | coordinates (const polyMesh &mesh, const point &position, const label celli, const label facei, const label faceTrii, const scalar stepFraction) |
| Return the coordinates given the position and tet topology. More... | |
| Pair< vector > | faceNormalAndDisplacement (const polyMesh &mesh, const barycentric &coordinates, const label celli, const label facei, const label faceTrii, const scalar stepFraction) |
| Return the normal of the corresponding point on the associated face and. More... | |
| template<class Displacement > | |
| Tuple2< bool, scalar > | toFace (const polyMesh &mesh, const Displacement &displacement, const scalar fraction, barycentric &coordinates, label &celli, label &facei, label &faceTrii, scalar &stepFraction, scalar &stepFractionBehind, label &nTracksBehind, const string &debugPrefix=NullObjectRef< string >()) |
| Track along the displacement for a given fraction of the overall. More... | |
| template<class Displacement > | |
| Tuple2< bool, scalar > | toCell (const polyMesh &mesh, const Displacement &displacement, const scalar fraction, barycentric &coordinates, label &celli, label &facei, label &faceTrii, scalar &stepFraction, scalar &stepFractionBehind, label &nTracksBehind, const string &debugPrefix=NullObjectRef< string >()) |
| As toFace, except that if the track ends on an internal face then this. More... | |
| template<class Displacement > | |
| Tuple2< bool, scalar > | toBoundary (const polyMesh &mesh, const Displacement &displacement, const scalar fraction, barycentric &coordinates, label &celli, label &facei, label &faceTrii, scalar &stepFraction, scalar &stepFractionBehind, label &nTracksBehind, const string &debugPrefix=NullObjectRef< string >()) |
| As toFace, except that the track continues across multiple cells until. More... | |
| bool | locate (const polyMesh &mesh, const point &position, barycentric &coordinates, label &celli, label &facei, label &faceTrii, const scalar stepFraction, const string &debugPrefix=NullObjectRef< string >()) |
| Initialise the location at the given position. Returns whether or not a. More... | |
| void | crossInternalFace (const polyMesh &mesh, barycentric &coordinates, label &celli, label &facei, label &faceTrii) |
| Cross an internal face. More... | |
| void | crossWedge (const wedgePolyPatch &inPatch, barycentric &coordinates, label &celli, label &facei, label &faceTrii, const scalar stepFraction) |
| Cross a wedge patch. More... | |
| void | crossCyclic (const cyclicPolyPatch &inPatch, barycentric &coordinates, label &celli, label &facei, label &faceTrii) |
| Cross a cyclic patch. More... | |
| void | inProcessor (const processorPolyPatch &inPatch, label &celli, label &facei) |
| Initialise crossing of a processor patch. Breaks the topology in order. More... | |
| void | outProcessor (const processorPolyPatch &outPatch, barycentric &coordinates, label &celli, label &facei, label &faceTrii) |
| Complete crossing of a processor patch. Restore the topology. More... | |
| void | stationaryTetGeometry (const polyMesh &mesh, const label celli, const label facei, const label faceTrii, vector ¢re, vector &base, vector &vertex1, vector &vertex2) |
| Get the vertices of the current tet. More... | |
| barycentricTensor | stationaryTetTransform (const polyMesh &mesh, const label celli, const label facei, const label faceTrii) |
| Get the transformation associated with the current tet. This. More... | |
| void | movingTetGeometry (const polyMesh &mesh, const label celli, const label facei, const label faceTrii, const scalar startStepFraction, const scalar endStepFraction, Pair< vector > ¢re, Pair< vector > &base, Pair< vector > &vertex1, Pair< vector > &vertex2) |
| Get the vertices of the current moving tet. Two values are. More... | |
| Pair< barycentricTensor > | movingTetTransform (const polyMesh &mesh, const label celli, const label facei, const label faceTrii, const scalar startStepFraction, const scalar endStepFraction) |
| Get the transformation associated with the current, moving, tet. More... | |
Variables | |
| static const label | maxNTracksBehind = 48 |
| The counter nTracksBehind is the number of tracks carried out that. More... | |
| void stationaryTetReverseTransform | ( | const polyMesh & | mesh, |
| const label | celli, | ||
| const label | facei, | ||
| const label | faceTrii, | ||
| vector & | centre, | ||
| scalar & | detA, | ||
| barycentricTensor & | T | ||
| ) |
Get the reverse transform associated with the current tet. The.
conversion is detA*y = (x - centre) & T. The variables x, y and centre have the same meaning as for the forward transform. T is the transposed inverse of the forward transform tensor, A, multiplied by its determinant, detA. This separation allows the barycentric tracking algorithm to function on inverted or degenerate tetrahedra.
Definition at line 243 of file tracking.C.
References Foam::saturationModels::A, mesh, stationaryTetTransform(), and Foam::T().
Referenced by coordinates(), and toStationaryTri().
| void movingTetReverseTransform | ( | const polyMesh & | mesh, |
| const label | celli, | ||
| const label | facei, | ||
| const label | faceTrii, | ||
| const scalar | startStepFraction, | ||
| const scalar | endStepFraction, | ||
| Pair< vector > & | centre, | ||
| FixedList< scalar, 4 > & | detA, | ||
| FixedList< barycentricTensor, 3 > & | T | ||
| ) |
Get the reverse transformation associated with the current,.
moving, tet. This is of the same form as for the static case. As with the moving geometry, a function of the tracking fraction is returned for each component. The functions are higher order than for the forward transform; the determinant is cubic, and the tensor is quadratic.
Definition at line 276 of file tracking.C.
References Foam::saturationModels::A, b, Foam::constant::universal::c, mesh, movingTetTransform(), and Foam::T().
Referenced by coordinates(), and toMovingTri().
| Foam::Tuple2< Foam::label, Foam::scalar > toStationaryTri | ( | const polyMesh & | mesh, |
| const vector & | displacement, | ||
| const scalar | fraction, | ||
| barycentric & | coordinates, | ||
| label & | celli, | ||
| label & | facei, | ||
| label & | faceTrii, | ||
| scalar & | stepFraction, | ||
| scalar & | stepFractionBehind, | ||
| label & | nTracksBehind, | ||
| const string & | debugPrefix = NullObjectRef<string>() |
||
| ) |
See toTri. For a stationary mesh.
Definition at line 344 of file tracking.C.
References b, Foam::cmptSum(), coordinates(), debugIndent, DebugInfo, Foam::endl(), Foam::Info, Foam::mag(), Foam::max(), mesh, Foam::constant::physicoChemical::mu, Foam::nl, Foam::notNull(), position(), VectorSpace< Form, Cmpt, Ncmpts >::replace(), stationaryTetGeometry(), stationaryTetReverseTransform(), Foam::T(), and Foam::y0().
| Foam::Tuple2< Foam::label, Foam::scalar > toStationaryTri | ( | const polyMesh & | mesh, |
| const Pair< vector > & | displacement, | ||
| const scalar | fraction, | ||
| barycentric & | coordinates, | ||
| label & | celli, | ||
| label & | facei, | ||
| label & | faceTrii, | ||
| scalar & | stepFraction, | ||
| scalar & | stepFractionBehind, | ||
| label & | nTracksBehind, | ||
| const string & | debugPrefix = NullObjectRef<string>() |
||
| ) |
See toTri. Second order. For a stationary mesh.
Definition at line 511 of file tracking.C.
References b, Foam::cmptSum(), coordinates(), debugIndent, DebugInfo, Foam::endl(), Pair< Type >::first(), forAll, Foam::Info, Foam::mag(), Foam::max(), mesh, Foam::constant::physicoChemical::mu, Foam::nl, Foam::notNull(), position(), VectorSpace< Form, Cmpt, Ncmpts >::replace(), Pair< Type >::second(), stationaryTetGeometry(), stationaryTetReverseTransform(), Foam::T(), and Foam::y0().
| Foam::Tuple2< Foam::label, Foam::scalar > toMovingTri | ( | const polyMesh & | mesh, |
| const vector & | displacement, | ||
| const scalar | fraction, | ||
| barycentric & | coordinates, | ||
| label & | celli, | ||
| label & | facei, | ||
| label & | faceTrii, | ||
| scalar & | stepFraction, | ||
| scalar & | stepFractionBehind, | ||
| label & | nTracksBehind, | ||
| const string & | debugPrefix = NullObjectRef<string>() |
||
| ) |
See toTri. For a moving mesh.
Definition at line 718 of file tracking.C.
References b, Foam::cmptSum(), coordinates(), debugIndent, DebugInfo, Foam::endl(), Foam::exit(), Foam::FatalError, FatalErrorInFunction, forAll, Foam::Info, Foam::mag(), Foam::max(), mesh, movingTetGeometry(), movingTetReverseTransform(), Foam::constant::physicoChemical::mu, Foam::name(), Foam::nl, Foam::notNull(), position(), VectorSpace< Form, Cmpt, Ncmpts >::replace(), Foam::sqr(), Foam::T(), cubicEqn::value(), and Foam::y0().
| Foam::Tuple2< Foam::label, Foam::scalar > toMovingTri | ( | const polyMesh & | mesh, |
| const Pair< vector > & | displacement, | ||
| const scalar | fraction, | ||
| barycentric & | coordinates, | ||
| label & | celli, | ||
| label & | facei, | ||
| label & | faceTrii, | ||
| scalar & | stepFraction, | ||
| scalar & | stepFractionBehind, | ||
| label & | nTracksBehind, | ||
| const string & | debugPrefix = NullObjectRef<string>() |
||
| ) |
See toTri. Second order. For a moving mesh. Not implemented.
Definition at line 955 of file tracking.C.
References Foam::exit(), Foam::FatalError, and FatalErrorInFunction.
| Tuple2<label, scalar> Foam::tracking::toTri | ( | const polyMesh & | mesh, |
| const Displacement & | displacement, | ||
| const scalar | fraction, | ||
| barycentric & | coordinates, | ||
| label & | celli, | ||
| label & | facei, | ||
| label & | faceTrii, | ||
| scalar & | stepFraction, | ||
| scalar & | stepFractionBehind, | ||
| label & | nTracksBehind, | ||
| const string & | debugPrefix = NullObjectRef< string >() |
||
| ) |
Track along the displacement for a given fraction of the overall.
time-step. End when the track is complete or when a tet triangle is hit. Return the index of the tet triangle that was hit, or -1 if the end position was reached. Also return the proportion of the displacement still to be completed.
Referenced by locate().
| Foam::Pair< Foam::vector > operator* | ( | const scalar | f, |
| const Pair< vector > & | displacement | ||
| ) |
Scale a second-order displacement.
Definition at line 1013 of file tracking.C.
References f().
| void reflect | ( | barycentric & | coordinates | ) |
Reflection transform. Corrects the coordinates when the track moves.
between two tets which share a base vertex, but for which the other two non cell-centre vertices are reversed. All hits which retain the same face behave this way, as do face hits.
Definition at line 1028 of file tracking.C.
References Barycentric< Cmpt >::c(), coordinates(), Barycentric< Cmpt >::d(), and Foam::Swap().
Referenced by changeFace(), changeFaceTri(), LRR< BasicMomentumTransportModel >::correct(), crossCyclic(), crossInternalFace(), and outProcessor().
| void rotate | ( | const bool | reverse, |
| barycentric & | coordinates | ||
| ) |
Rotation transform. Corrects the coordinates when the track moves.
between two tets with different base vertices, but are otherwise similarly oriented. Hits which change the face within the cell make use of both this and the reflect transform.
Definition at line 1034 of file tracking.C.
References Barycentric< Cmpt >::b(), Barycentric< Cmpt >::c(), coordinates(), Barycentric< Cmpt >::d(), and Foam::reverse().
Referenced by changeFace(), CrankNicolson::solve(), Newmark::solve(), and symplectic::solve().
| void changeFaceTri | ( | const polyMesh & | mesh, |
| const label | tetTrii, | ||
| barycentric & | coordinates, | ||
| const label | celli, | ||
| label & | facei, | ||
| label & | faceTrii | ||
| ) |
Change face-triangle within a cell. Called after a tet-triangle is hit.
Definition at line 1053 of file tracking.C.
References changeFace(), coordinates(), Foam::exit(), polyMesh::faceOwner(), polyMesh::faces(), Foam::FatalError, FatalErrorInFunction, mesh, reflect(), and List< T >::size().
| void changeFace | ( | const polyMesh & | mesh, |
| const label | tetTrii, | ||
| barycentric & | coordinates, | ||
| const label | celli, | ||
| label & | facei, | ||
| label & | faceTrii | ||
| ) |
Change face within a cell. Called (if necessary) by changeFaceTri.
Definition at line 1136 of file tracking.C.
References primitiveMesh::cells(), coordinates(), Foam::exit(), face::faceEdge(), polyMesh::faceOwner(), polyMesh::faces(), Foam::FatalError, FatalErrorInFunction, forAll, Foam::max(), mesh, Foam::min(), edge::otherVertex(), reflect(), rotate(), List< T >::size(), and polyMesh::tetBasePtIs().
Referenced by changeFaceTri().
|
inline |
Return the position given the coordinates and tet topology.
Definition at line 223 of file trackingI.H.
References coordinates(), mesh, polyMesh::moving(), movingTetTransform(), and stationaryTetTransform().
Referenced by DSMCCloud< ParcelType >::addNewParcel(), SprayParcel< ParcelType >::calcAtomisation(), cellPointWeight::cellPointWeight(), multiValveEngine::pistonObject::clearance(), coordinates(), random::decompose(), particle::deviationFromMeshCentre(), multiValveEngine::pistonObject::displacement(), nonConformalCyclicLagrangianPatch::evaluate(), nonConformalProcessorCyclicLagrangianPatch::evaluate(), InjectionModel< CloudType >::findCellAtPosition(), cellPointWeight::findTetrahedron(), cellPointWeight::findTriangle(), particle::hitNonConformalCyclicPatch(), MomentumParcel< ParcelType >::hitWallPatch(), interpolationCellPoint< Type >::interpolate(), interpolationCellPointFace< Type >::interpolate(), interpolationPointMVC< Type >::interpolate(), interpolation< Foam::Vector >::interpolation(), locate(), particle::locate(), findCellParticle::move(), streamlinesParticle::move(), pointMVCWeight::pointMVCWeight(), multiValveEngine::pistonObject::position(), LagrangianMesh::position(), particle::position(), polyLine::position(), blockEdge::position(), particle::prepareForInteractionListReferral(), springRenumber::renumber(), probes::sample(), sampledSets::sampleLocalType(), molecule::setSitePositions(), sampledSetParticle::store(), sampledSetParticle::storeCell(), toMovingTri(), ConeInjection< CloudType >::topoChange(), toStationaryTri(), LagrangianMesh::track(), multiValveEngine::pistonObject::updatePoints(), and multiValveEngine::valveObject::updatePoints().
| Foam::barycentric coordinates | ( | const polyMesh & | mesh, |
| const point & | position, | ||
| const label | celli, | ||
| const label | facei, | ||
| const label | faceTrii, | ||
| const scalar | stepFraction | ||
| ) |
Return the coordinates given the position and tet topology.
Definition at line 1258 of file tracking.C.
References mesh, polyMesh::moving(), movingTetReverseTransform(), position(), stationaryTetReverseTransform(), and Foam::T().
Referenced by cellPointLagrangianAccumulator::accumulate(), Dual< Type >::add(), triSurface::boundingSpheres(), ThermoParcel< ParcelType >::calcHeatTransfer(), ThermoParcel< ParcelType >::calcSurfaceValues(), changeFace(), changeFaceTri(), collection::coordinates(), particle::correctAfterInteractionListReferral(), crossCyclic(), crossInternalFace(), crossWedge(), faceNormalAndDisplacement(), LagrangianInjection::filter(), InjectionModel< CloudType >::findCellAtPosition(), Foam::tracking::toCell< Foam::Pair< Foam::vector > >(), Foam::tracking::toFace< Foam::Pair< Foam::vector > >(), LagrangianMesh::inject(), InjectionModel< CloudType >::inject(), InjectionModel< CloudType >::injectSteadyState(), Dual< Type >::interpolate(), interpolation< Foam::Vector >::interpolate(), interpolationCellPoint< Type >::interpolate(), fieldInterpolation< Type, InterpolationType >::interpolate(), locate(), diskInjection::modify(), manualInjection::modify(), pointInjection::modify(), interpolation< Foam::Vector >::New(), LagrangianSubMesh::nf(), outProcessor(), position(), reflect(), rotate(), MomentumParcel< ParcelType >::setCellValues(), ReactingParcel< ParcelType >::setCellValues(), ThermoParcel< ParcelType >::setCellValues(), patchInjectionBase::setPositionAndCell(), CellZoneInjection< CloudType >::setPositionAndCell(), ConeInjection< CloudType >::setPositionAndCell(), FieldActivatedInjection< CloudType >::setPositionAndCell(), ManualInjection< CloudType >::setPositionAndCell(), MomentumLookupTableInjection< CloudType >::setPositionAndCell(), PatchFlowRateInjection< CloudType >::setPositionAndCell(), PatchInjection< CloudType >::setPositionAndCell(), ReactingLookupTableInjection< CloudType >::setPositionAndCell(), ReactingMultiphaseLookupTableInjection< CloudType >::setPositionAndCell(), ThermoLookupTableInjection< CloudType >::setPositionAndCell(), LagrangianMesh::size(), toMovingTri(), toStationaryTri(), LagrangianSubMesh::Uf(), and RelativeVelocity< CloudType >::write().
| Foam::Pair< Foam::vector > faceNormalAndDisplacement | ( | const polyMesh & | mesh, |
| const barycentric & | coordinates, | ||
| const label | celli, | ||
| const label | facei, | ||
| const label | faceTrii, | ||
| const scalar | stepFraction | ||
| ) |
Return the normal of the corresponding point on the associated face and.
the displacement of that point over the time-step
Definition at line 1301 of file tracking.C.
References Barycentric< Cmpt >::b(), Barycentric< Cmpt >::c(), coordinates(), Barycentric< Cmpt >::d(), mesh, polyMesh::moving(), movingTetGeometry(), stationaryTetGeometry(), and Foam::Zero.
Referenced by LagrangianSubMesh::nf(), particle::patchData(), LagrangianMesh::track(), and LagrangianSubMesh::Uf().
| Tuple2<bool, scalar> Foam::tracking::toFace | ( | const polyMesh & | mesh, |
| const Displacement & | displacement, | ||
| const scalar | fraction, | ||
| barycentric & | coordinates, | ||
| label & | celli, | ||
| label & | facei, | ||
| label & | faceTrii, | ||
| scalar & | stepFraction, | ||
| scalar & | stepFractionBehind, | ||
| label & | nTracksBehind, | ||
| const string & | debugPrefix = NullObjectRef< string >() |
||
| ) |
Track along the displacement for a given fraction of the overall.
time-step. End when the track is complete or when a face is hit. Return whether or not a face was hit (true) or the track completed (false) and the proportion of the displacement still to be completed. Displacement can be a single vector, d, in which case the path is linear and equal to x0 + lambda*d, where x0 is the starting position and lambda is the local coordinate along the path. Or, displacement can be a pair of vectors, d1 and d2, in which case the path is parabolic and equal to x0 + lambda*d1 + lambda*lambda*d2.
Referenced by Foam::tracking::toCell< Foam::Pair< Foam::vector > >(), Foam::tracking::toFace< Foam::Pair< Foam::vector > >(), LagrangianMesh::track(), and particle::trackToFace().
| Tuple2<bool, scalar> Foam::tracking::toCell | ( | const polyMesh & | mesh, |
| const Displacement & | displacement, | ||
| const scalar | fraction, | ||
| barycentric & | coordinates, | ||
| label & | celli, | ||
| label & | facei, | ||
| label & | faceTrii, | ||
| scalar & | stepFraction, | ||
| scalar & | stepFractionBehind, | ||
| label & | nTracksBehind, | ||
| const string & | debugPrefix = NullObjectRef< string >() |
||
| ) |
As toFace, except that if the track ends on an internal face then this.
face will be crossed
Referenced by particle::trackToCell().
| Tuple2<bool, scalar> Foam::tracking::toBoundary | ( | const polyMesh & | mesh, |
| const Displacement & | displacement, | ||
| const scalar | fraction, | ||
| barycentric & | coordinates, | ||
| label & | celli, | ||
| label & | facei, | ||
| label & | faceTrii, | ||
| scalar & | stepFraction, | ||
| scalar & | stepFractionBehind, | ||
| label & | nTracksBehind, | ||
| const string & | debugPrefix = NullObjectRef< string >() |
||
| ) |
As toFace, except that the track continues across multiple cells until.
it ends or until a boundary face is hit
Referenced by crossWedge(), locate(), and particle::track().
| bool locate | ( | const polyMesh & | mesh, |
| const point & | position, | ||
| barycentric & | coordinates, | ||
| label & | celli, | ||
| label & | facei, | ||
| label & | faceTrii, | ||
| const scalar | stepFraction, | ||
| const string & | debugPrefix = NullObjectRef<string>() |
||
| ) |
Initialise the location at the given position. Returns whether or not a.
boundary was hit. The cell index should be initialised to -1, or the index of the cell.
Definition at line 1592 of file tracking.C.
References Foam::constant::universal::c, primitiveMesh::cellCentres(), primitiveMesh::cells(), polyMesh::cellTree(), coordinates(), Foam::exit(), f(), polyMesh::faces(), Foam::FatalError, FatalErrorInFunction, Tuple2< Type1, Type2 >::first(), forAll, mesh, position(), Tuple2< Type1, Type2 >::second(), toBoundary(), and toTri().
Referenced by particle::correctAfterNonConformalCyclicTransfer(), Cloud< ParticleType >::distribute(), nonConformalCyclicLagrangianPatch::evaluate(), nonConformalProcessorCyclicLagrangianPatch::evaluate(), LagrangianMesh::locate(), particle::locate(), Cloud< ParticleType >::mapMesh(), and Cloud< ParticleType >::topoChange().
| void crossInternalFace | ( | const polyMesh & | mesh, |
| barycentric & | coordinates, | ||
| label & | celli, | ||
| label & | facei, | ||
| label & | faceTrii | ||
| ) |
Cross an internal face.
Definition at line 1680 of file tracking.C.
References coordinates(), polyMesh::faceNeighbour(), polyMesh::faceOwner(), mesh, and reflect().
Referenced by LagrangianMesh::crossFaces(), Foam::tracking::toCell< Foam::Pair< Foam::vector > >(), Foam::tracking::toFace< Foam::Pair< Foam::vector > >(), and particle::hitFace().
| void crossWedge | ( | const wedgePolyPatch & | inPatch, |
| barycentric & | coordinates, | ||
| label & | celli, | ||
| label & | facei, | ||
| label & | faceTrii, | ||
| const scalar | stepFraction | ||
| ) |
Cross a wedge patch.
Definition at line 1699 of file tracking.C.
References polyPatch::boundaryMesh(), polyMesh::bounds(), wedgePolyPatch::centreNormal(), coordinates(), boundBox::mag(), polyBoundaryMesh::mesh(), mesh, and toBoundary().
Referenced by wedgeLagrangianPatch::evaluate().
| void crossCyclic | ( | const cyclicPolyPatch & | inPatch, |
| barycentric & | coordinates, | ||
| label & | celli, | ||
| label & | facei, | ||
| label & | faceTrii | ||
| ) |
Cross a cyclic patch.
Definition at line 1735 of file tracking.C.
References polyPatch::boundaryMesh(), coordinates(), polyMesh::faceOwner(), polyMesh::faces(), polyBoundaryMesh::mesh(), mesh, cyclicPolyPatch::nbrPatch(), reflect(), List< T >::size(), and polyPatch::start().
Referenced by cyclicLagrangianPatch::evaluate(), and particle::hitCyclicPatch().
| void inProcessor | ( | const processorPolyPatch & | inPatch, |
| label & | celli, | ||
| label & | facei | ||
| ) |
Initialise crossing of a processor patch. Breaks the topology in order.
to store the destination patch face in advance of communication.
Definition at line 1761 of file tracking.C.
References polyPatch::start().
Referenced by processorLagrangianPatch::initEvaluate(), and particle::prepareForProcessorTransfer().
| void outProcessor | ( | const processorPolyPatch & | outPatch, |
| barycentric & | coordinates, | ||
| label & | celli, | ||
| label & | facei, | ||
| label & | faceTrii | ||
| ) |
Complete crossing of a processor patch. Restore the topology.
Definition at line 1776 of file tracking.C.
References polyPatch::boundaryMesh(), coordinates(), polyPatch::faceCells(), polyMesh::faces(), polyBoundaryMesh::mesh(), mesh, reflect(), List< T >::size(), and polyPatch::start().
Referenced by particle::correctAfterProcessorTransfer(), and processorLagrangianPatch::evaluate().
|
inline |
Get the vertices of the current tet.
Definition at line 105 of file trackingI.H.
References primitiveMesh::cellCentres(), mesh, and polyMesh::points().
Referenced by faceNormalAndDisplacement(), stationaryTetTransform(), and toStationaryTri().
|
inline |
Get the transformation associated with the current tet. This.
will convert a barycentric position within the tet to a cartesian position in the global coordinate system. The conversion is x = A & y, where x is the cartesian position, y is the barycentric position and A is the transformation tensor.
Definition at line 128 of file trackingI.H.
References mesh, and stationaryTetGeometry().
Referenced by position(), and stationaryTetReverseTransform().
|
inline |
Get the vertices of the current moving tet. Two values are.
returned for each vertex. The first is a constant, and the second is a linear coefficient of the track fraction.
Definition at line 153 of file trackingI.H.
References primitiveMesh::cellCentres(), mesh, polyMesh::oldCellCentres(), polyMesh::oldPoints(), and polyMesh::points().
Referenced by faceNormalAndDisplacement(), movingTetTransform(), and toMovingTri().
|
inline |
Get the transformation associated with the current, moving, tet.
This is of the same form as for the static case. As with the moving geometry, a linear function of the tracking fraction is returned for each component.
Definition at line 187 of file trackingI.H.
References mesh, and movingTetGeometry().
Referenced by movingTetReverseTransform(), and position().
|
static |
The counter nTracksBehind is the number of tracks carried out that.
ended in a step fraction less than the maximum reached so far. Once this reaches maxNTracksBehind, tracking is abandoned for the current step.
This is needed because when tetrahedra are inverted a straight trajectory can form a closed loop through regions of overlapping positive and negative space. Without this break clause, such loops can result in a valid track which never ends.
Because the test is susceptible to round off error, a track of zero length will also increment the counter. As such, it is important that maxNTracksBehind is set large enough so that valid small tracks do not result in the track being abandoned. The largest number of valid small tracks that are likely to be performed sequentially is equal to the number of tetrahedra that can meet at a point. An estimate of this number is therefore used to set maxNTracksBehind.
Definition at line 106 of file tracking.C.