Base particle class. More...


Classes | |
| class | trackingData |
Public Member Functions | |
| TypeName ("particle") | |
| Runtime type information. More... | |
| particle (const polyMesh &mesh, const barycentric &coordinates, const label celli, const label tetFacei, const label tetPti, const label facei) | |
| Construct from components. More... | |
| particle (const polyMesh &mesh, const vector &position, const label celli, label &nLocateBoundaryHits) | |
| Construct from a position and a cell, searching for the rest of the. More... | |
| particle (Istream &, bool readFields=true) | |
| Construct from Istream. More... | |
| particle (const particle &p) | |
| Construct as a copy. More... | |
| virtual autoPtr< particle > | clone () const |
| Construct and return a clone. More... | |
| virtual | ~particle () |
| Destructor. More... | |
| label | getNewParticleIndex () const |
| Get unique particle creation id. More... | |
| const barycentric & | coordinates () const |
| Return current particle coordinates. More... | |
| label | cell () const |
| Return current cell particle is in. More... | |
| label | tetFace () const |
| Return current tet face particle is in. More... | |
| label | tetPt () const |
| Return current tet face particle is in. More... | |
| label | face () const |
| Return current face particle is on otherwise -1. More... | |
| label & | face () |
| Return current face particle is on otherwise -1. More... | |
| scalar | stepFraction () const |
| Return the fraction of time-step completed. More... | |
| scalar & | stepFraction () |
| Return the fraction of time-step completed. More... | |
| label | origProc () const |
| Return the originating processor ID. More... | |
| label & | origProc () |
| Return the originating processor ID. More... | |
| label | origId () const |
| Return the particle ID on the originating processor. More... | |
| label & | origId () |
| Return the particle ID on the originating processor. More... | |
| tetIndices | currentTetIndices (const polyMesh &mesh) const |
| Return the indices of the current tet that the. More... | |
| vector | normal (const polyMesh &mesh) const |
| Return the normal of the tri on tetFacei_ for the. More... | |
| bool | onFace () const |
| Is the particle on a face? More... | |
| bool | onInternalFace (const polyMesh &mesh) const |
| Is the particle on an internal face? More... | |
| bool | onBoundaryFace (const polyMesh &mesh) const |
| Is the particle on a boundary face? More... | |
| label | patch (const polyMesh &mesh) const |
| Return the index of patch that the particle is on. More... | |
| vector | position (const polyMesh &mesh) const |
| Return current particle position. More... | |
| void | reset (const scalar stepFraction) |
| Set the step fraction and clear the behind data in preparation. More... | |
| bool | locate (const polyMesh &mesh, const vector &position, label celli) |
| Locate the particle at the given position. More... | |
| scalar | track (const polyMesh &mesh, const vector &displacement, const scalar fraction) |
| Track along the displacement for a given fraction of the overall. More... | |
| scalar | trackToCell (const polyMesh &mesh, const vector &displacement, const scalar fraction) |
| As particle::track, but stops when a new cell is reached. More... | |
| scalar | trackToFace (const polyMesh &mesh, const vector &displacement, const scalar fraction) |
| As particle::track, but stops when a face is hit. More... | |
| template<class TrackCloudType > | |
| void | hitFace (const vector &displacement, const scalar fraction, TrackCloudType &cloud, trackingData &td) |
| Hit the current face. If the current face is internal than this. More... | |
| template<class TrackCloudType > | |
| scalar | trackToAndHitFace (const vector &displacement, const scalar fraction, TrackCloudType &cloud, trackingData &td) |
| Convenience function. Combines trackToFace and hitFace. More... | |
| vector | deviationFromMeshCentre (const polyMesh &mesh) const |
| Get the displacement from the mesh centre. Used to correct the. More... | |
| void | patchData (const polyMesh &mesh, vector &normal, vector &displacement) const |
| Get the normal and displacement of the current patch location. More... | |
| virtual void | transformProperties (const transformer &) |
| Transform the physical properties of the particle. More... | |
| template<class TrackCloudType > | |
| void | prepareForParallelTransfer (TrackCloudType &, trackingData &) |
| Make changes prior to a parallel transfer. Runs either. More... | |
| template<class TrackCloudType > | |
| void | correctAfterParallelTransfer (TrackCloudType &, trackingData &) |
| Make changes following a parallel transfer. Runs either. More... | |
| void | prepareForProcessorTransfer (trackingData &td) |
| Make changes prior to a transfer across a processor boundary. More... | |
| void | correctAfterProcessorTransfer (trackingData &td) |
| Make changes following a transfer across a processor boundary. More... | |
| void | prepareForNonConformalCyclicTransfer (const polyMesh &mesh, const label sendToPatch, const label sendToPatchFace, const vector &sendToPosition) |
| Make changes prior to a transfer across a non conformal cyclic. More... | |
| void | correctAfterNonConformalCyclicTransfer (const polyMesh &mesh, const label sendToPatch, labelList &patchNLocateBoundaryHits) |
| Make changes following a transfer across a non conformal cyclic. More... | |
| template<class TrackCloudType > | |
| bool | hitPatch (TrackCloudType &, trackingData &) |
| Overridable function to handle the particle hitting a patch. More... | |
| template<class TrackCloudType > | |
| void | hitWedgePatch (TrackCloudType &, trackingData &) |
| Overridable function to handle the particle hitting a wedgePatch. More... | |
| template<class TrackCloudType > | |
| void | hitSymmetryPlanePatch (TrackCloudType &, trackingData &) |
| Overridable function to handle the particle hitting a. More... | |
| template<class TrackCloudType > | |
| void | hitSymmetryPatch (TrackCloudType &, trackingData &) |
| Overridable function to handle the particle hitting a. More... | |
| template<class TrackCloudType > | |
| void | hitCyclicPatch (TrackCloudType &, trackingData &) |
| Overridable function to handle the particle hitting a. More... | |
| template<class TrackCloudType > | |
| bool | hitNonConformalCyclicPatch (const vector &displacement, const scalar fraction, const label patchi, TrackCloudType &cloud, trackingData &td) |
| Overridable function to handle the particle hitting an. More... | |
| template<class TrackCloudType > | |
| void | hitProcessorPatch (TrackCloudType &, trackingData &) |
| Overridable function to handle the particle hitting a. More... | |
| template<class TrackCloudType > | |
| void | hitWallPatch (TrackCloudType &, trackingData &) |
| Overridable function to handle the particle hitting a wallPatch. More... | |
| template<class TrackCloudType > | |
| void | hitBasicPatch (TrackCloudType &, trackingData &) |
| Overridable function to handle the particle hitting a basic. More... | |
| void | prepareForInteractionListReferral (const polyMesh &mesh, const transformer &transform) |
| Break the topology and store the cartesian position so that the. More... | |
| void | correctAfterInteractionListReferral (const polyMesh &mesh, const label celli) |
| Correct the topology after referral. Locates the particle. More... | |
| label | procTetPt (const polyMesh &mesh, const polyMesh &procMesh, const label procCell, const label procTetFace) const |
| Return the tet point appropriate for decomposition or. More... | |
| void | writePosition (Ostream &) const |
| Write the particle position and cell. More... | |
| template<class TrackCloudType > | |
| Foam::scalar | trackToAndHitFace (const vector &displacement, const scalar fraction, TrackCloudType &cloud, trackingData &td) |
Static Public Member Functions | |
| static string | propertyList () |
| static autoPtr< particle > | New (Istream &is) |
| Construct from Istream and return. More... | |
| template<class TrackCloudType > | |
| static void | readFields (TrackCloudType &c) |
| Read the fields associated with the owner cloud. More... | |
| template<class TrackCloudType > | |
| static void | writeFields (const TrackCloudType &c) |
| Write the fields associated with the owner cloud. More... | |
Static Public Attributes | |
| static string | propertyList_ = Foam::particle::propertyList() |
| String representation of properties. More... | |
| static label | particleCount = 0 |
| Cumulative particle counter - used to provide unique ID. More... | |
| static const bool | instantaneous = false |
| Particles are not instantaneous by default. More... | |
Friends | |
| Ostream & | operator<< (Ostream &, const particle &) |
| bool | operator== (const particle &pA, const particle &pB) |
| bool | operator!= (const particle &pA, const particle &pB) |
| particle | ( | const polyMesh & | mesh, |
| const barycentric & | coordinates, | ||
| const label | celli, | ||
| const label | tetFacei, | ||
| const label | tetPti, | ||
| const label | facei | ||
| ) |
Construct from components.
Definition at line 46 of file particle.C.
Referenced by particle::clone(), and particle::New().

| particle | ( | const polyMesh & | mesh, |
| const vector & | position, | ||
| const label | celli, | ||
| label & | nLocateBoundaryHits | ||
| ) |
Construct from a position and a cell, searching for the rest of the.
required topology
Definition at line 69 of file particle.C.
References particle::locate(), mesh, and particle::position().

Construct from Istream.
Definition at line 46 of file particleIO.C.
References IOstream::ASCII, IOstream::check(), IOstream::format(), Istream::read(), and particle::readFields().

Construct as a copy.
Definition at line 95 of file particle.C.
|
inlinevirtual |
Destructor.
Definition at line 255 of file particle.H.
| TypeName | ( | "particle" | ) |
Runtime type information.
|
inlinestatic |
Definition at line 203 of file particle.H.
Construct and return a clone.
Reimplemented in sampledSetParticle, trackedParticle, solidParticle, molecule, passiveParticle, streamlinesParticle, and findCellParticle.
Definition at line 242 of file particle.H.
References particle::particle().

Construct from Istream and return.
Definition at line 248 of file particle.H.
References particle::particle().

|
inline |
Get unique particle creation id.
Definition at line 33 of file particleI.H.
References Foam::endl(), Foam::labelMax, particle::particleCount, and WarningInFunction.

|
inline |
Return current particle coordinates.
Definition at line 48 of file particleI.H.
Referenced by solidParticle::move().

|
inline |
Return current cell particle is in.
Definition at line 54 of file particleI.H.
|
inline |
Return current tet face particle is in.
Definition at line 60 of file particleI.H.
|
inline |
Return current tet face particle is in.
Definition at line 66 of file particleI.H.
|
inline |
Return current face particle is on otherwise -1.
Definition at line 72 of file particleI.H.
|
inline |
Return current face particle is on otherwise -1.
Definition at line 78 of file particleI.H.
|
inline |
Return the fraction of time-step completed.
Definition at line 84 of file particleI.H.
Referenced by solidParticle::move().

|
inline |
Return the fraction of time-step completed.
Definition at line 90 of file particleI.H.
|
inline |
Return the originating processor ID.
Definition at line 96 of file particleI.H.
Referenced by Foam::operator==().

|
inline |
Return the originating processor ID.
Definition at line 102 of file particleI.H.
|
inline |
Return the particle ID on the originating processor.
Definition at line 108 of file particleI.H.
Referenced by Foam::operator==(), and particle::readFields().

|
inline |
Return the particle ID on the originating processor.
Definition at line 114 of file particleI.H.
|
inline |
Return the indices of the current tet that the.
particle occupies.
Definition at line 120 of file particleI.H.
Referenced by solidParticle::move().

|
inline |
Return the normal of the tri on tetFacei_ for the.
current tet.
Definition at line 129 of file particleI.H.
References mesh.
|
inline |
Is the particle on a face?
Definition at line 135 of file particleI.H.
Referenced by lineFace::calcSamples().

|
inline |
Is the particle on an internal face?
Definition at line 141 of file particleI.H.
References primitiveMesh::isInternalFace(), and mesh.

|
inline |
Is the particle on a boundary face?
Definition at line 147 of file particleI.H.
References primitiveMesh::isInternalFace(), and mesh.

|
inline |
Return the index of patch that the particle is on.
Definition at line 153 of file particleI.H.
References polyMesh::boundaryMesh(), mesh, and polyBoundaryMesh::whichPatch().

|
inline |
Return current particle position.
Definition at line 159 of file particleI.H.
References mesh, and Foam::tracking::position().
Referenced by nearWallFields::calcAddressing(), lineFace::calcSamples(), and particle::particle().


|
inline |
Set the step fraction and clear the behind data in preparation.
for a new track
Definition at line 174 of file particleI.H.
Locate the particle at the given position.
Definition at line 112 of file particle.C.
References Foam::tracking::locate(), mesh, Foam::name(), and Foam::tracking::position().
Referenced by particle::particle().


Track along the displacement for a given fraction of the overall.
step. End when the track is complete, or when a boundary is hit. On exit, stepFraction_ will have been incremented to the current position, and facei_ will be set to the index of the boundary face that was hit, or -1 if the track completed within a cell. The proportion of the displacement still to be completed is returned.
Definition at line 133 of file particle.C.
References Tuple2< Type1, Type2 >::first(), mesh, Foam::name(), Tuple2< Type1, Type2 >::second(), and Foam::tracking::toBoundary().

| Foam::scalar trackToCell | ( | const polyMesh & | mesh, |
| const vector & | displacement, | ||
| const scalar | fraction | ||
| ) |
As particle::track, but stops when a new cell is reached.
Definition at line 157 of file particle.C.
References Tuple2< Type1, Type2 >::first(), mesh, Foam::name(), Tuple2< Type1, Type2 >::second(), and Foam::tracking::toCell().

| Foam::scalar trackToFace | ( | const polyMesh & | mesh, |
| const vector & | displacement, | ||
| const scalar | fraction | ||
| ) |
As particle::track, but stops when a face is hit.
Definition at line 181 of file particle.C.
References Tuple2< Type1, Type2 >::first(), mesh, Foam::name(), Tuple2< Type1, Type2 >::second(), and Foam::tracking::toFace().
Referenced by lineFace::calcSamples(), and streamlinesParticle::move().


| void hitFace | ( | const vector & | displacement, |
| const scalar | fraction, | ||
| TrackCloudType & | cloud, | ||
| trackingData & | td | ||
| ) |
Hit the current face. If the current face is internal than this.
crosses into the next cell. If it is a boundary face then this will interact the particle with the relevant patch.
Definition at line 162 of file particleTemplates.C.
References polyMesh::boundaryMesh(), Foam::tracking::crossInternalFace(), forAll, particle::trackingData::mesh, Foam::onInternalFace, and p.

| scalar trackToAndHitFace | ( | const vector & | displacement, |
| const scalar | fraction, | ||
| TrackCloudType & | cloud, | ||
| trackingData & | td | ||
| ) |
Convenience function. Combines trackToFace and hitFace.
Referenced by solidParticle::move().

| Foam::vector deviationFromMeshCentre | ( | const polyMesh & | mesh | ) | const |
Get the displacement from the mesh centre. Used to correct the.
particle position in cases with reduced dimensionality. Returns a zero vector for three-dimensional cases.
Definition at line 205 of file particle.C.
References Foam::cmptMin(), Foam::meshTools::constrainToMeshCentre(), polyMesh::geometricD(), mesh, Foam::pos(), Foam::tracking::position(), and VectorSpace< Form, Cmpt, Ncmpts >::zero.

Get the normal and displacement of the current patch location.
Definition at line 182 of file particleI.H.
References Foam::exit(), Foam::tracking::faceNormalAndDisplacement(), Foam::FatalError, FatalErrorInFunction, Pair< Type >::first(), mesh, and Pair< Type >::second().

|
virtual |
Transform the physical properties of the particle.
according to the given transformation tensor
Reimplemented in solidParticle, molecule, and streamlinesParticle.
Definition at line 223 of file particle.C.
Referenced by molecule::transformProperties(), and solidParticle::transformProperties().

| void prepareForParallelTransfer | ( | TrackCloudType & | cloud, |
| trackingData & | td | ||
| ) |
Make changes prior to a parallel transfer. Runs either.
processor or nonConformalCyclic variant below.
Definition at line 107 of file particleTemplates.C.
References particle::trackingData::mesh, particle::trackingData::sendFromPatch, particle::trackingData::sendToPatchFace, and particle::trackingData::sendToPosition.
| void correctAfterParallelTransfer | ( | TrackCloudType & | cloud, |
| trackingData & | td | ||
| ) |
Make changes following a parallel transfer. Runs either.
processor or nonConformalCyclic variant below.
Definition at line 131 of file particleTemplates.C.
References polyMesh::boundaryMesh(), Foam::exit(), Foam::FatalError, FatalErrorInFunction, particle::trackingData::mesh, particle::trackingData::patchNLocateBoundaryHits, and particle::trackingData::sendToPatch.
Referenced by trackedParticle::correctAfterParallelTransfer(), and sampledSetParticle::correctAfterParallelTransfer().


| void prepareForProcessorTransfer | ( | trackingData & | td | ) |
Make changes prior to a transfer across a processor boundary.
Stores the local patch face index (in facei_) so that the mesh face index can be determined on the other side.
Definition at line 227 of file particle.C.
References polyMesh::boundaryMesh(), Foam::tracking::inProcessor(), particle::trackingData::mesh, and particle::trackingData::sendFromPatch.

| void correctAfterProcessorTransfer | ( | trackingData & | td | ) |
Make changes following a transfer across a processor boundary.
Converts the stored patch index to a mesh index. Accounts for the receiving face being reversed relative to the sending face.
Definition at line 239 of file particle.C.
References polyMesh::boundaryMesh(), particle::trackingData::mesh, Foam::tracking::outProcessor(), particle::trackingData::sendToPatch, processorPolyPatch::transform(), and transformer::transformsPosition().

| void prepareForNonConformalCyclicTransfer | ( | const polyMesh & | mesh, |
| const label | sendToPatch, | ||
| const label | sendToPatchFace, | ||
| const vector & | sendToPosition | ||
| ) |
Make changes prior to a transfer across a non conformal cyclic.
boundary. Stores the receiving patch face (in facei_). Breaks the topology and stores the cartesian position.
Definition at line 260 of file particle.C.
References polyMesh::boundaryMesh(), Foam::cmptSum(), mesh, nonConformalCyclicPolyPatch::nbrPatch(), nonConformalCyclicPolyPatch::transform(), transformer::transformsPosition(), Vector< Cmpt >::x(), Vector< Cmpt >::y(), and Vector< Cmpt >::z().

| void correctAfterNonConformalCyclicTransfer | ( | const polyMesh & | mesh, |
| const label | sendToPatch, | ||
| labelList & | patchNLocateBoundaryHits | ||
| ) |
Make changes following a transfer across a non conformal cyclic.
boundary. Locates the particle using the stored face index and cartesian position.
Definition at line 300 of file particle.C.
References polyMesh::boundaryMesh(), polyMesh::faceOwner(), Foam::tracking::locate(), mesh, nonConformalPolyPatch::origPatch(), and polyPatch::start().

| bool hitPatch | ( | TrackCloudType & | , |
| trackingData & | |||
| ) |
Overridable function to handle the particle hitting a patch.
Executed before other patch-hitting functions.
Definition at line 265 of file particleTemplates.C.
| void hitWedgePatch | ( | TrackCloudType & | cloud, |
| trackingData & | td | ||
| ) |
Overridable function to handle the particle hitting a wedgePatch.
Definition at line 272 of file particleTemplates.C.
References Foam::abort(), Foam::FatalError, and FatalErrorInFunction.

| void hitSymmetryPlanePatch | ( | TrackCloudType & | cloud, |
| trackingData & | td | ||
| ) |
Overridable function to handle the particle hitting a.
symmetryPlanePatch
Definition at line 283 of file particleTemplates.C.
| void hitSymmetryPatch | ( | TrackCloudType & | , |
| trackingData & | td | ||
| ) |
Overridable function to handle the particle hitting a.
symmetryPatch
Definition at line 294 of file particleTemplates.C.
References Foam::I, particle::trackingData::mesh, and transformer::rotation().

| void hitCyclicPatch | ( | TrackCloudType & | , |
| trackingData & | td | ||
| ) |
Overridable function to handle the particle hitting a.
cyclicPatch
Definition at line 302 of file particleTemplates.C.
References polyMesh::boundaryMesh(), Foam::tracking::crossCyclic(), particle::trackingData::mesh, cyclicPolyPatch::nbrPatch(), cyclicPolyPatch::transform(), and transformer::transformsPosition().
Referenced by streamlinesParticle::hitCyclicPatch().


| bool hitNonConformalCyclicPatch | ( | const vector & | displacement, |
| const scalar | fraction, | ||
| const label | patchi, | ||
| TrackCloudType & | cloud, | ||
| trackingData & | td | ||
| ) |
Overridable function to handle the particle hitting an.
Definition at line 325 of file particleTemplates.C.
References polyMesh::boundaryMesh(), remote::elementi, patchIdentifier::index(), particle::trackingData::mesh, UPstream::myProcNo(), cyclicPolyPatch::nbrPatchIndex(), nonConformalPolyPatch::origPatch(), patchi, particle::trackingData::patchNLocateBoundaryHits, Foam::tracking::position(), remote::proci, nonConformalCyclicPolyPatch::ray(), particle::trackingData::sendFromPatch, particle::trackingData::sendToPatch, particle::trackingData::sendToPatchFace, particle::trackingData::sendToPosition, particle::trackingData::sendToProc, and polyPatch::whichFace().
Referenced by streamlinesParticle::hitNonConformalCyclicPatch().


| void hitProcessorPatch | ( | TrackCloudType & | cloud, |
| trackingData & | td | ||
| ) |
Overridable function to handle the particle hitting a.
processorPatch
Definition at line 394 of file particleTemplates.C.
References polyMesh::boundaryMesh(), particle::trackingData::mesh, particle::trackingData::sendFromPatch, particle::trackingData::sendToPatch, particle::trackingData::sendToPatchFace, and particle::trackingData::sendToProc.
Referenced by findCellParticle::hitProcessorPatch(), sampledSetParticle::hitProcessorPatch(), and streamlinesParticle::hitProcessorPatch().


| void hitWallPatch | ( | TrackCloudType & | , |
| trackingData & | |||
| ) |
Overridable function to handle the particle hitting a wallPatch.
Definition at line 405 of file particleTemplates.C.
| void hitBasicPatch | ( | TrackCloudType & | , |
| trackingData & | td | ||
| ) |
Overridable function to handle the particle hitting a basic.
patch. Fall-through for the above.
Definition at line 410 of file particleTemplates.C.
References particle::trackingData::keepParticle.
| void prepareForInteractionListReferral | ( | const polyMesh & | mesh, |
| const transformer & | transform | ||
| ) |
Break the topology and store the cartesian position so that the.
particle can be referred.
Definition at line 334 of file particle.C.
References Foam::cmptSum(), Foam::inv(), mesh, Foam::pos(), Foam::tracking::position(), and Foam::transform().

Correct the topology after referral. Locates the particle.
relative to a nearby cell/tet. The particle may end up outside this cell/tet and cannot therefore be tracked.
Definition at line 359 of file particle.C.
References primitiveMesh::cells(), Foam::tracking::coordinates(), mesh, and Foam::pos().

| Foam::label procTetPt | ( | const polyMesh & | mesh, |
| const polyMesh & | procMesh, | ||
| const label | procCell, | ||
| const label | procTetFace | ||
| ) | const |
Return the tet point appropriate for decomposition or.
reconstruction to or from the given mesh.
Definition at line 388 of file particle.C.
References polyMesh::faceOwner(), polyMesh::faces(), mesh, and List< T >::size().

|
static |
Read the fields associated with the owner cloud.
Definition at line 42 of file particleTemplates.C.
References Foam::constant::universal::c, forAllIter, typeIOobject< Type >::headerOk(), IOobject::MUST_READ, particle::origId(), p, and Foam::blendedInterfacialModel::valid().
Referenced by findCellParticle::findCellParticle(), particle::particle(), passiveParticleCloud::passiveParticleCloud(), molecule::readFields(), solidParticle::readFields(), streamlinesParticle::readFields(), sampledSetCloud::sampledSetCloud(), sampledSetParticle::sampledSetParticle(), and trackedParticle::trackedParticle().


|
static |
Write the fields associated with the owner cloud.
Definition at line 75 of file particleTemplates.C.
References Foam::constant::universal::c, forAllConstIter, IOobject::NO_READ, IOPosition< CloudType >::write(), and regIOobject::write().
Referenced by molecule::writeFields(), solidParticle::writeFields(), and streamlinesParticle::writeFields().


| void writePosition | ( | Ostream & | os | ) | const |
Write the particle position and cell.
Definition at line 86 of file particleIO.C.
References IOstream::ASCII, IOstream::check(), IOstream::format(), token::SPACE, and Ostream::write().

| Foam::scalar trackToAndHitFace | ( | const vector & | displacement, |
| const scalar | fraction, | ||
| TrackCloudType & | cloud, | ||
| trackingData & | td | ||
| ) |
Definition at line 248 of file particleTemplates.C.
References f(), and particle::trackingData::mesh.

|
static |
String representation of properties.
Definition at line 203 of file particle.H.
|
static |
Cumulative particle counter - used to provide unique ID.
Definition at line 206 of file particle.H.
Referenced by particle::getNewParticleIndex().
|
static |
Particles are not instantaneous by default.
Definition at line 209 of file particle.H.