Classes | Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes | Friends | List of all members
wallBoundedParticle Class Reference

Particle class that tracks on triangles of boundary faces. Use trackToEdge similar to trackToFace on particle. More...

Inheritance diagram for wallBoundedParticle:
Inheritance graph
[legend]
Collaboration diagram for wallBoundedParticle:
Collaboration graph
[legend]

Classes

class  iNew
 Factory class to read-construct particles used for. More...
 
class  TrackingData
 Class used to pass tracking data to the trackToFace function. More...
 

Public Member Functions

 wallBoundedParticle (const polyMesh &c, const vector &position, const label celli, const label tetFacei, const label tetPtI, const label meshEdgeStart, const label diagEdge)
 Construct from components. More...
 
 wallBoundedParticle (const polyMesh &c, Istream &is, bool readFields=true)
 Construct from Istream. More...
 
 wallBoundedParticle (const wallBoundedParticle &p)
 Construct copy. More...
 
autoPtr< particleclone () const
 Construct and return a clone. More...
 
label meshEdgeStart () const
 -1 or label of mesh edge More...
 
label diagEdge () const
 -1 or diagonal edge More...
 
template<class TrackData >
scalar trackToEdge (TrackData &td, const vector &endPosition)
 Equivalent of trackToFace. More...
 
InfoProxy< wallBoundedParticleinfo () const
 Return info proxy. More...
 
template<class TrackData >
Foam::scalar trackToEdge (TrackData &td, const vector &endPosition)
 
- Public Member Functions inherited from particle< Type >
 TypeName ("particle")
 Runtime type information. More...
 
 particle (const polyMesh &mesh, const vector &position, const label celli, const label tetFacei, const label tetPtI)
 Construct from components. More...
 
 particle (const polyMesh &mesh, const vector &position, const label celli, bool doCellFacePt=true)
 Construct from components, tetFacei_ and tetPtI_ are not. More...
 
 particle (const polyMesh &mesh, Istream &, bool readFields=true)
 Construct from Istream. More...
 
 particle (const particle &p)
 Construct as a copy. More...
 
 particle (const particle &p, const polyMesh &mesh)
 Construct as a copy with refernce to a new mesh. More...
 
virtual ~particle ()
 Destructor. More...
 
label getNewParticleID () const
 Get unique particle creation id. More...
 
const polyMeshmesh () const
 Return the mesh database. More...
 
const vectorposition () const
 Return current particle position. More...
 
vectorposition ()
 Return current particle position. More...
 
labelcell ()
 Return current cell particle is in. More...
 
label cell () const
 Return current cell particle is in. More...
 
labeltetFace ()
 Return current tet face particle is in. More...
 
label tetFace () const
 Return current tet face particle is in. More...
 
labeltetPt ()
 Return current tet face particle is in. More...
 
label tetPt () const
 Return current tet face particle is in. More...
 
tetIndices currentTetIndices () const
 Return the indices of the current tet that the. More...
 
tetPointRef currentTet () const
 Return the geometry of the current tet that the. More...
 
vector normal () const
 Return the normal of the tri on tetFacei_ for the. More...
 
vector oldNormal () const
 Return the normal of the tri on tetFacei_ for the. More...
 
labelface ()
 Return current face particle is on otherwise -1. More...
 
label face () const
 Return current face particle is on otherwise -1. More...
 
bool softImpact () const
 Return the impact model to be used, soft or hard (default). More...
 
scalar currentTime () const
 Return the particle current time. More...
 
void initCellFacePt ()
 Check the stored cell value (setting if necessary) and. More...
 
bool onBoundary () const
 Is the particle on the boundary/(or outside the domain)? More...
 
bool internalFace (const label facei) const
 Is this global face an internal face? More...
 
bool boundaryFace (const label facei) const
 Is this global face a boundary face? More...
 
label patch (const label facei) const
 Which patch is particle on. More...
 
label patchFace (const label patchi, const label facei) const
 Which face of this patch is this particle on. More...
 
scalar & stepFraction ()
 Return the fraction of time-step completed. More...
 
scalar stepFraction () const
 Return the fraction of time-step completed. More...
 
label origProc () const
 Return const access to the originating processor id. More...
 
labelorigProc ()
 Return the originating processor id for manipulation. More...
 
label origId () const
 Return const access to the particle id on originating processor. More...
 
labelorigId ()
 Return the particle id on originating processor for manipulation. More...
 
template<class TrackData >
label track (const vector &endPosition, TrackData &td)
 Track particle to end of trajectory. More...
 
template<class TrackData >
scalar trackToFace (const vector &endPosition, TrackData &td)
 Track particle to a given position and returns 1.0 if the. More...
 
label faceInterpolation () const
 Return the index of the face to be used in the interpolation. More...
 
virtual void transformProperties (const tensor &T)
 Transform the physical properties of the particle. More...
 
virtual void transformProperties (const vector &separation)
 Transform the physical properties of the particle. More...
 
virtual scalar wallImpactDistance (const vector &n) const
 The nearest distance to a wall that. More...
 
template<class TrackData >
void prepareForParallelTransfer (const label patchi, TrackData &td)
 Convert global addressing to the processor patch. More...
 
template<class TrackData >
void correctAfterParallelTransfer (const label patchi, TrackData &td)
 Convert processor patch addressing to the global equivalents. More...
 
void writePosition (Ostream &) const
 Write the particle position and cell. More...
 
template<class TrackData >
Foam::label track (const vector &endPosition, TrackData &td)
 
template<class TrackData >
Foam::scalar trackToFace (const vector &endPosition, TrackData &td)
 

Static Public Member Functions

template<class CloudType >
static void readFields (CloudType &)
 Read. More...
 
template<class CloudType >
static void writeFields (const CloudType &)
 Write. More...
 
- Static Public Member Functions inherited from particle< Type >
static string propertyList ()
 
template<class CloudType >
static void readFields (CloudType &c)
 Read the fields associated with the owner cloud. More...
 
template<class CloudType >
static void writeFields (const CloudType &c)
 Write the fields associated with the owner cloud. More...
 

Protected Member Functions

edge currentEdge () const
 Construct current edge. More...
 
void crossEdgeConnectedFace (const edge &meshEdge)
 Check if inside current tet. More...
 
void crossDiagonalEdge ()
 Cross diagonal edge into different triangle on same face,cell. More...
 
scalar trackFaceTri (const vector &endPosition, label &minEdgeI)
 Track through single triangle. More...
 
bool isTriAlongTrack (const point &endPosition) const
 Is current triangle in the track direction. More...
 
template<class TrackData >
void patchInteraction (TrackData &td, const scalar trackFraction)
 Do all patch interaction. More...
 
template<class TrackData >
bool hitPatch (const polyPatch &, TrackData &td, const label patchi, const scalar trackFraction, const tetIndices &tetIs)
 Overridable function to handle the particle hitting a patch. More...
 
template<class TrackData >
void hitWedgePatch (const wedgePolyPatch &, TrackData &td)
 Overridable function to handle the particle hitting a wedge. More...
 
template<class TrackData >
void hitSymmetryPlanePatch (const symmetryPlanePolyPatch &, TrackData &td)
 Overridable function to handle the particle hitting a. More...
 
template<class TrackData >
void hitSymmetryPatch (const symmetryPolyPatch &, TrackData &td)
 Overridable function to handle the particle hitting a. More...
 
template<class TrackData >
void hitCyclicPatch (const cyclicPolyPatch &, TrackData &td)
 Overridable function to handle the particle hitting a cyclic. More...
 
template<class TrackData >
void hitProcessorPatch (const processorPolyPatch &, TrackData &td)
 
template<class TrackData >
void hitWallPatch (const wallPolyPatch &, TrackData &td, const tetIndices &)
 Overridable function to handle the particle hitting a wallPatch. More...
 
template<class TrackData >
void hitPatch (const polyPatch &, TrackData &td)
 Overridable function to handle the particle hitting a polyPatch. More...
 
- Protected Member Functions inherited from particle< Type >
void findTris (const vector &position, DynamicList< label > &faceList, const tetPointRef &tet, const FixedList< vector, 4 > &tetAreas, const FixedList< label, 4 > &tetPlaneBasePtIs, const scalar tol) const
 Find the tet tri faces between position and tet centre. More...
 
scalar tetLambda (const vector &from, const vector &to, const label triI, const vector &tetArea, const label tetPlaneBasePtI, const label celli, const label tetFacei, const label tetPtI, const scalar tol) const
 Find the lambda value for the line to-from across the. More...
 
scalar movingTetLambda (const vector &from, const vector &to, const label triI, const vector &tetArea, const label tetPlaneBasePtI, const label celli, const label tetFacei, const label tetPtI, const scalar tol) const
 Find the lambda value for a moving tri face. More...
 
void tetNeighbour (label triI)
 Modify the tet owner data by crossing triI. More...
 
void crossEdgeConnectedFace (const label &celli, label &tetFacei, label &tetPtI, const edge &e)
 Cross the from the given face across the given edge of the. More...
 
template<class CloudType >
void hitWallFaces (const CloudType &td, const vector &from, const vector &to, scalar &lambdaMin, tetIndices &closestTetIs)
 
template<class TrackData >
void hitFace (TrackData &td)
 Overridable function to handle the particle hitting a face. More...
 
template<class TrackData >
bool hitPatch (const polyPatch &, TrackData &td, const label patchi, const scalar trackFraction, const tetIndices &tetIs)
 Overridable function to handle the particle hitting a. More...
 
template<class TrackData >
void hitWedgePatch (const wedgePolyPatch &, TrackData &td)
 Overridable function to handle the particle hitting a wedgePatch. More...
 
template<class TrackData >
void hitSymmetryPlanePatch (const symmetryPlanePolyPatch &, TrackData &td)
 Overridable function to handle the particle hitting a. More...
 
template<class TrackData >
void hitSymmetryPatch (const symmetryPolyPatch &, TrackData &td)
 Overridable function to handle the particle hitting a. More...
 
template<class TrackData >
void hitCyclicPatch (const cyclicPolyPatch &, TrackData &td)
 Overridable function to handle the particle hitting a cyclicPatch. More...
 
template<class TrackData >
void hitCyclicAMIPatch (const cyclicAMIPolyPatch &, TrackData &td, const vector &direction)
 Overridable function to handle the particle hitting a cyclicAMIPatch. More...
 
template<class TrackData >
void hitProcessorPatch (const processorPolyPatch &, TrackData &td)
 Overridable function to handle the particle hitting a. More...
 
template<class TrackData >
void hitWallPatch (const wallPolyPatch &, TrackData &td, const tetIndices &tetIs)
 Overridable function to handle the particle hitting a wallPatch. More...
 
template<class TrackData >
void hitPatch (const polyPatch &, TrackData &td)
 Overridable function to handle the particle hitting a. More...
 

Protected Attributes

label meshEdgeStart_
 Particle is on mesh edge: More...
 
label diagEdge_
 Particle is on diagonal edge: More...
 
- Protected Attributes inherited from particle< Type >
const polyMeshmesh_
 Reference to the polyMesh database. More...
 
vector position_
 Position of particle. More...
 
label celli_
 Index of the cell it is in. More...
 
label facei_
 Face index if the particle is on a face otherwise -1. More...
 
scalar stepFraction_
 Fraction of time-step completed. More...
 
label tetFacei_
 Index of the face that owns the decomposed tet that the. More...
 
label tetPtI_
 Index of the point on the face that defines the decomposed. More...
 
label origProc_
 Originating processor id. More...
 
label origId_
 Local particle id on originating processor. More...
 

Friends

Ostreamoperator<< (Ostream &, const wallBoundedParticle &)
 
Ostreamoperator<< (Ostream &, const InfoProxy< wallBoundedParticle > &)
 

Additional Inherited Members

- Static Public Attributes inherited from particle< Type >
static string propertyList_ = Foam::particle::propertyList()
 String representation of properties. More...
 
static label particleCount_ = 0
 Cumulative particle counter - used to provode unique ID. More...
 
static const scalar trackingCorrectionTol = 1e-5
 Fraction of distance to tet centre to move a particle to. More...
 
static const scalar lambdaDistanceToleranceCoeff = 1e3*SMALL
 Fraction of the cell volume to use in determining tolerance values. More...
 
static const scalar minStepFractionTol = 1e5*SMALL
 Minimum stepFraction tolerance. More...
 

Detailed Description

Particle class that tracks on triangles of boundary faces. Use trackToEdge similar to trackToFace on particle.

Source files

Definition at line 60 of file wallBoundedParticle.H.

Constructor & Destructor Documentation

wallBoundedParticle ( const polyMesh c,
const vector position,
const label  celli,
const label  tetFacei,
const label  tetPtI,
const label  meshEdgeStart,
const label  diagEdge 
)
wallBoundedParticle ( const polyMesh c,
Istream is,
bool  readFields = true 
)

Construct copy.

Definition at line 354 of file wallBoundedParticle.C.

Member Function Documentation

Foam::edge currentEdge ( ) const
protected
void crossEdgeConnectedFace ( const edge meshEdge)
protected

Check if inside current tet.

void checkInside() const;Check if on current edge

void checkOnEdge() const;Check if point on triangle

void checkOnTriangle(const point&) const;Cross mesh edge into different face on same cell

Definition at line 68 of file wallBoundedParticle.C.

References Foam::abort(), particle< Type >::cell(), particle< Type >::crossEdgeConnectedFace(), wallBoundedParticle::diagEdge_, f(), particle< Type >::face(), polyMesh::faces(), Foam::FatalError, FatalErrorInFunction, Foam::findIndex(), wallBoundedParticle::info(), particle< Type >::mesh_, wallBoundedParticle::meshEdgeStart_, face::nextLabel(), UList< T >::rcIndex(), particle< Type >::tetFace(), and particle< Type >::tetPt().

Referenced by wallBoundedParticle::currentEdge(), and wallBoundedParticle::TrackingData< Cloud< wallBoundedStreamLineParticle > >::TrackingData().

Here is the call graph for this function:

Here is the caller graph for this function:

void crossDiagonalEdge ( )
protected
Foam::scalar trackFaceTri ( const vector endPosition,
label minEdgeI 
)
protected
bool isTriAlongTrack ( const point endPosition) const
protected
void patchInteraction ( TrackData &  td,
const scalar  trackFraction 
)
protected

Do all patch interaction.

Definition at line 32 of file wallBoundedParticleTemplates.C.

References polyPatch::boundaryMesh(), p, patchi, and wallBoundedParticle::trackToEdge().

Referenced by wallBoundedParticle::TrackingData< Cloud< wallBoundedStreamLineParticle > >::TrackingData().

Here is the call graph for this function:

Here is the caller graph for this function:

bool hitPatch ( const polyPatch ,
TrackData &  td,
const label  patchi,
const scalar  trackFraction,
const tetIndices tetIs 
)
protected

Overridable function to handle the particle hitting a patch.

Executed before other patch-hitting functions

Definition at line 386 of file wallBoundedParticleTemplates.C.

References wallBoundedParticle::hitWedgePatch().

Referenced by wallBoundedParticle::hitWallPatch(), wallBoundedParticle::TrackingData< Cloud< wallBoundedStreamLineParticle > >::TrackingData(), and wallBoundedParticle::trackToEdge().

Here is the call graph for this function:

Here is the caller graph for this function:

void hitWedgePatch ( const wedgePolyPatch pp,
TrackData &  td 
)
protected

Overridable function to handle the particle hitting a wedge.

Definition at line 401 of file wallBoundedParticleTemplates.C.

References wallBoundedParticle::hitSymmetryPlanePatch().

Referenced by wallBoundedParticle::hitPatch(), and wallBoundedParticle::TrackingData< Cloud< wallBoundedStreamLineParticle > >::TrackingData().

Here is the call graph for this function:

Here is the caller graph for this function:

void hitSymmetryPlanePatch ( const symmetryPlanePolyPatch pp,
TrackData &  td 
)
protected

Overridable function to handle the particle hitting a.

symmetry plane

Definition at line 413 of file wallBoundedParticleTemplates.C.

References wallBoundedParticle::hitSymmetryPatch().

Referenced by wallBoundedParticle::hitWedgePatch(), and wallBoundedParticle::TrackingData< Cloud< wallBoundedStreamLineParticle > >::TrackingData().

Here is the call graph for this function:

Here is the caller graph for this function:

void hitSymmetryPatch ( const symmetryPolyPatch pp,
TrackData &  td 
)
protected

Overridable function to handle the particle hitting a.

symmetry patch

Definition at line 425 of file wallBoundedParticleTemplates.C.

References wallBoundedParticle::hitCyclicPatch().

Referenced by wallBoundedParticle::hitSymmetryPlanePatch(), and wallBoundedParticle::TrackingData< Cloud< wallBoundedStreamLineParticle > >::TrackingData().

Here is the call graph for this function:

Here is the caller graph for this function:

void hitCyclicPatch ( const cyclicPolyPatch pp,
TrackData &  td 
)
protected

Overridable function to handle the particle hitting a cyclic.

Definition at line 437 of file wallBoundedParticleTemplates.C.

References wallBoundedParticle::hitProcessorPatch().

Referenced by wallBoundedParticle::hitSymmetryPatch(), and wallBoundedParticle::TrackingData< Cloud< wallBoundedStreamLineParticle > >::TrackingData().

Here is the call graph for this function:

Here is the caller graph for this function:

void hitProcessorPatch ( const processorPolyPatch pp,
TrackData &  td 
)
protected

Overridable function to handle the particle hitting a processorPatch

Definition at line 449 of file wallBoundedParticleTemplates.C.

References f(), wallBoundedParticle::hitWallPatch(), and List< T >::size().

Referenced by wallBoundedParticle::hitCyclicPatch(), and wallBoundedParticle::TrackingData< Cloud< wallBoundedStreamLineParticle > >::TrackingData().

Here is the call graph for this function:

Here is the caller graph for this function:

void hitWallPatch ( const wallPolyPatch wpp,
TrackData &  td,
const tetIndices  
)
protected

Overridable function to handle the particle hitting a wallPatch.

Definition at line 478 of file wallBoundedParticleTemplates.C.

References wallBoundedParticle::hitPatch().

Referenced by wallBoundedParticle::hitProcessorPatch(), and wallBoundedParticle::TrackingData< Cloud< wallBoundedStreamLineParticle > >::TrackingData().

Here is the call graph for this function:

Here is the caller graph for this function:

void hitPatch ( const polyPatch wpp,
TrackData &  td 
)
protected

Overridable function to handle the particle hitting a polyPatch.

Definition at line 488 of file wallBoundedParticleTemplates.C.

autoPtr<particle> clone ( ) const
inlinevirtual

Construct and return a clone.

Reimplemented from particle< Type >.

Reimplemented in wallBoundedStreamLineParticle.

Definition at line 253 of file wallBoundedParticle.H.

References particle< Type >::mesh_, and wallBoundedParticle::wallBoundedParticle().

Here is the call graph for this function:

label meshEdgeStart ( ) const
inline
label diagEdge ( ) const
inline
scalar trackToEdge ( TrackData &  td,
const vector endPosition 
)

Equivalent of trackToFace.

Referenced by wallBoundedParticle::diagEdge(), wallBoundedStreamLineParticle::move(), and wallBoundedParticle::patchInteraction().

Here is the caller graph for this function:

InfoProxy<wallBoundedParticle> info ( ) const
inline

Return info proxy.

Used to print particle information to a stream

Definition at line 316 of file wallBoundedParticle.H.

Referenced by wallBoundedParticle::crossDiagonalEdge(), wallBoundedParticle::crossEdgeConnectedFace(), wallBoundedParticle::currentEdge(), wallBoundedParticle::diagEdge(), and wallBoundedParticle::isTriAlongTrack().

Here is the caller graph for this function:

void readFields ( CloudType c)
static
void writeFields ( const CloudType c)
static
Foam::scalar trackToEdge ( TrackData &  td,
const vector endPosition 
)

Friends And Related Function Documentation

Ostream& operator<< ( Ostream ,
const wallBoundedParticle  
)
friend
Ostream& operator<< ( Ostream ,
const InfoProxy< wallBoundedParticle > &   
)
friend

Member Data Documentation

label meshEdgeStart_
protected

Particle is on mesh edge:

const face& f = mesh.faces()[tetFace()] const edge e(f[meshEdgeStart_], f.nextLabel(meshEdgeStart_)); Note that this real edge is also one of the edges of the face-triangle (from tetFace()+tetPt()).

Definition at line 110 of file wallBoundedParticle.H.

Referenced by wallBoundedParticle::crossDiagonalEdge(), wallBoundedParticle::crossEdgeConnectedFace(), wallBoundedParticle::currentEdge(), wallBoundedParticle::meshEdgeStart(), Foam::operator<<(), wallBoundedParticle::trackFaceTri(), wallBoundedParticle::TrackingData< Cloud< wallBoundedStreamLineParticle > >::TrackingData(), and wallBoundedParticle::wallBoundedParticle().

label diagEdge_
protected

Particle is on diagonal edge:

const face& f = mesh.faces()[tetFace()] label faceBasePtI = mesh.tetBasePtIs()[facei]; label diagPtI = (faceBasePtI+diagEdge_)f.size(); const edge e(f[faceBasePtI], f[diagPtI]);

Definition at line 117 of file wallBoundedParticle.H.

Referenced by wallBoundedParticle::crossDiagonalEdge(), wallBoundedParticle::crossEdgeConnectedFace(), wallBoundedParticle::currentEdge(), wallBoundedParticle::diagEdge(), Foam::operator<<(), wallBoundedParticle::trackFaceTri(), wallBoundedParticle::TrackingData< Cloud< wallBoundedStreamLineParticle > >::TrackingData(), and wallBoundedParticle::wallBoundedParticle().


The documentation for this class was generated from the following files: