diff --git a/applications/utilities/parallelProcessing/decomposePar/lagrangianFieldDecomposer.C b/applications/utilities/parallelProcessing/decomposePar/lagrangianFieldDecomposer.C index 4392395af0394be1cb1cb6768a2905ccdc50d602..c9ab1ffbbe3f6091966be5e50543846d38b0abf6 100644 --- a/applications/utilities/parallelProcessing/decomposePar/lagrangianFieldDecomposer.C +++ b/applications/utilities/parallelProcessing/decomposePar/lagrangianFieldDecomposer.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2004-2010 OpenCFD Ltd. + \\ / A nd | Copyright (C) 2004-2011 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -100,7 +100,7 @@ Foam::lagrangianFieldDecomposer::lagrangianFieldDecomposer ( new passiveParticle ( - positions_, + procMesh, ppi.position(), procCelli, false @@ -112,7 +112,7 @@ Foam::lagrangianFieldDecomposer::lagrangianFieldDecomposer particleIndices_.setSize(pi); - IOPosition<passiveParticle>(positions_).write(); + IOPosition<Cloud<passiveParticle> >(positions_).write(); } diff --git a/applications/utilities/preProcessing/mapFields/mapLagrangian.C b/applications/utilities/preProcessing/mapFields/mapLagrangian.C index 36dd9817194a65bb2edc72a52fe04cfa25fd0083..97a999b62cbdfccb7328eaa3dc7e91d70f2fb44c 100644 --- a/applications/utilities/preProcessing/mapFields/mapLagrangian.C +++ b/applications/utilities/preProcessing/mapFields/mapLagrangian.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2004-2010 OpenCFD Ltd. + \\ / A nd | Copyright (C) 2004-2011 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -24,8 +24,7 @@ License \*---------------------------------------------------------------------------*/ #include "MapLagrangianFields.H" -#include "Cloud.H" -#include "passiveParticle.H" +#include "passiveParticleCloud.H" #include "meshSearch.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -44,7 +43,9 @@ static label findCell(const Cloud<passiveParticle>& cloud, const point& pt) label tetFaceI = -1; label tetPtI = -1; - cloud.findCellFacePt(pt, cellI, tetFaceI, tetPtI); + const polyMesh& mesh = cloud.pMesh(); + + mesh.findCellFacePt(pt, cellI, tetFaceI, tetPtI); if (cellI >= 0) { @@ -55,8 +56,6 @@ static label findCell(const Cloud<passiveParticle>& cloud, const point& pt) // See if particle on face by finding nearest face and shifting // particle. - const polyMesh& mesh = cloud.pMesh(); - meshSearch meshSearcher(mesh, false); label faceI = meshSearcher.findNearestBoundaryFace(pt); @@ -67,7 +66,7 @@ static label findCell(const Cloud<passiveParticle>& cloud, const point& pt) const point perturbPt = (1-perturbFactor)*pt+perturbFactor*cc; - cloud.findCellFacePt(perturbPt, cellI, tetFaceI, tetPtI); + mesh.findCellFacePt(perturbPt, cellI, tetFaceI, tetPtI); return cellI; } @@ -124,7 +123,7 @@ void mapLagrangian(const meshToMesh& meshToMeshInterp) Info<< nl << " processing cloud " << cloudDirs[cloudI] << endl; // Read positions & cell - Cloud<passiveParticle> sourceParcels + passiveParticleCloud sourceParcels ( meshSource, cloudDirs[cloudI], @@ -134,13 +133,15 @@ void mapLagrangian(const meshToMesh& meshToMeshInterp) << " parcels from source mesh." << endl; // Construct empty target cloud - Cloud<passiveParticle> targetParcels + passiveParticleCloud targetParcels ( meshTarget, cloudDirs[cloudI], IDLList<passiveParticle>() ); + particle::TrackingData<passiveParticleCloud> td(targetParcels); + label sourceParticleI = 0; // Indices of source particles that get added to targetParcels @@ -176,15 +177,14 @@ void mapLagrangian(const meshToMesh& meshToMeshInterp) ( new passiveParticle ( - targetParcels, + meshTarget, targetCc[targetCells[i]], targetCells[i] ) ); passiveParticle& newP = newPtr(); - scalar fraction = 0; - label faceI = newP.track(iter().position(), fraction); + label faceI = newP.track(iter().position(), td); if (faceI < 0 && newP.cell() >= 0) { @@ -246,7 +246,7 @@ void mapLagrangian(const meshToMesh& meshToMeshInterp) if (addParticles.size()) { - IOPosition<passiveParticle>(targetParcels).write(); + IOPosition<passiveParticleCloud>(targetParcels).write(); // addParticles now contains the indices of the sourceMesh // particles that were appended to the target mesh. diff --git a/src/mesh/autoMesh/autoHexMesh/meshRefinement/meshRefinementRefine.C b/src/mesh/autoMesh/autoHexMesh/meshRefinement/meshRefinementRefine.C index be26fe0988c4b40fd119357767778aaff7040564..c2e7a6ffd0b71e23b50de5be248825f6a30ea19d 100644 --- a/src/mesh/autoMesh/autoHexMesh/meshRefinement/meshRefinementRefine.C +++ b/src/mesh/autoMesh/autoHexMesh/meshRefinement/meshRefinementRefine.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2004-2010 OpenCFD Ltd. + \\ / A nd | Copyright (C) 2004-2011 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -283,7 +283,7 @@ Foam::label Foam::meshRefinement::markFeatureRefinement label tetFaceI = -1; label tetPtI = -1; - cloud.findCellFacePt(keepPoint, cellI, tetFaceI, tetPtI); + mesh_.findCellFacePt(keepPoint, cellI, tetFaceI, tetPtI); if (cellI != -1) { @@ -309,7 +309,7 @@ Foam::label Foam::meshRefinement::markFeatureRefinement ( new trackedParticle ( - cloud, + mesh_, keepPoint, cellI, tetFaceI, @@ -330,7 +330,7 @@ Foam::label Foam::meshRefinement::markFeatureRefinement labelList maxFeatureLevel(mesh_.nCells(), -1); // Database to pass into trackedParticle::move - trackedParticle::trackData td(cloud, maxFeatureLevel); + trackedParticle::trackingData td(cloud, maxFeatureLevel); // Track all particles to their end position (= starting feature point) cloud.move(td, GREAT); diff --git a/src/mesh/autoMesh/autoHexMesh/trackedParticle/trackedParticle.C b/src/mesh/autoMesh/autoHexMesh/trackedParticle/trackedParticle.C index 214e7d64401bbca14cef2c6e349f97644e56b832..607a65ebaa71417123669516152e4bef176c8dd7 100644 --- a/src/mesh/autoMesh/autoHexMesh/trackedParticle/trackedParticle.C +++ b/src/mesh/autoMesh/autoHexMesh/trackedParticle/trackedParticle.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2004-2010 OpenCFD Ltd. + \\ / A nd | Copyright (C) 2004-2011 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -29,7 +29,7 @@ License Foam::trackedParticle::trackedParticle ( - const Cloud<trackedParticle>& c, + const polyMesh& mesh, const vector& position, const label cellI, const label tetFaceI, @@ -40,7 +40,7 @@ Foam::trackedParticle::trackedParticle const label j ) : - Particle<trackedParticle>(c, position, cellI, tetFaceI, tetPtI), + particle(mesh, position, cellI, tetFaceI, tetPtI), end_(end), level_(level), i_(i), @@ -50,12 +50,12 @@ Foam::trackedParticle::trackedParticle Foam::trackedParticle::trackedParticle ( - const Cloud<trackedParticle>& c, + const polyMesh& mesh, Istream& is, bool readFields ) : - Particle<trackedParticle>(c, is, readFields) + particle(mesh, is, readFields) { if (readFields) { @@ -89,7 +89,7 @@ Foam::trackedParticle::trackedParticle bool Foam::trackedParticle::move ( - trackedParticle::trackData& td, + trackingData& td, const scalar trackedParticle ) { @@ -120,7 +120,7 @@ bool Foam::trackedParticle::move bool Foam::trackedParticle::hitPatch ( const polyPatch&, - trackedParticle::trackData& td, + trackingData& td, const label patchI, const scalar trackFraction, const tetIndices& tetIs @@ -130,23 +130,10 @@ bool Foam::trackedParticle::hitPatch } -bool Foam::trackedParticle::hitPatch -( - const polyPatch&, - int&, - const label, - const scalar trackFraction, - const tetIndices& tetIs -) -{ - return false; -} - - void Foam::trackedParticle::hitWedgePatch ( const wedgePolyPatch&, - trackedParticle::trackData& td + trackingData& td ) { // Remove particle @@ -154,18 +141,10 @@ void Foam::trackedParticle::hitWedgePatch } -void Foam::trackedParticle::hitWedgePatch -( - const wedgePolyPatch&, - int& -) -{} - - void Foam::trackedParticle::hitSymmetryPatch ( const symmetryPolyPatch&, - trackedParticle::trackData& td + trackingData& td ) { // Remove particle @@ -173,18 +152,10 @@ void Foam::trackedParticle::hitSymmetryPatch } -void Foam::trackedParticle::hitSymmetryPatch -( - const symmetryPolyPatch&, - int& -) -{} - - void Foam::trackedParticle::hitCyclicPatch ( const cyclicPolyPatch&, - trackedParticle::trackData& td + trackingData& td ) { // Remove particle @@ -192,18 +163,10 @@ void Foam::trackedParticle::hitCyclicPatch } -void Foam::trackedParticle::hitCyclicPatch -( - const cyclicPolyPatch&, - int& -) -{} - - void Foam::trackedParticle::hitProcessorPatch ( const processorPolyPatch&, - trackedParticle::trackData& td + trackingData& td ) { // Remove particle @@ -211,18 +174,10 @@ void Foam::trackedParticle::hitProcessorPatch } -void Foam::trackedParticle::hitProcessorPatch -( - const processorPolyPatch&, - int& -) -{} - - void Foam::trackedParticle::hitWallPatch ( const wallPolyPatch& wpp, - trackedParticle::trackData& td, + trackingData& td, const tetIndices& ) { @@ -231,19 +186,10 @@ void Foam::trackedParticle::hitWallPatch } -void Foam::trackedParticle::hitWallPatch -( - const wallPolyPatch& wpp, - int&, - const tetIndices& -) -{} - - void Foam::trackedParticle::hitPatch ( const polyPatch& wpp, - trackedParticle::trackData& td + trackingData& td ) { // Remove particle @@ -251,21 +197,13 @@ void Foam::trackedParticle::hitPatch } -void Foam::trackedParticle::hitPatch -( - const polyPatch& wpp, - int& -) -{} - - // * * * * * * * * * * * * * * * IOstream Operators * * * * * * * * * * * * // Foam::Ostream& Foam::operator<<(Ostream& os, const trackedParticle& p) { if (os.format() == IOstream::ASCII) { - os << static_cast<const Particle<trackedParticle>&>(p) + os << static_cast<const particle&>(p) << token::SPACE << p.end_ << token::SPACE << p.level_ << token::SPACE << p.i_ @@ -273,7 +211,7 @@ Foam::Ostream& Foam::operator<<(Ostream& os, const trackedParticle& p) } else { - os << static_cast<const Particle<trackedParticle>&>(p); + os << static_cast<const particle&>(p); os.write ( reinterpret_cast<const char*>(&p.end_), diff --git a/src/mesh/autoMesh/autoHexMesh/trackedParticle/trackedParticle.H b/src/mesh/autoMesh/autoHexMesh/trackedParticle/trackedParticle.H index bfe0d9b385e8ad719d20df81aad5309c6b9c2af0..256b056f0b63a4cd048a3e11c4872790a94b85d5 100644 --- a/src/mesh/autoMesh/autoHexMesh/trackedParticle/trackedParticle.H +++ b/src/mesh/autoMesh/autoHexMesh/trackedParticle/trackedParticle.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2004-2010 OpenCFD Ltd. + \\ / A nd | Copyright (C) 2004-2011 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -36,7 +36,7 @@ SourceFiles #ifndef trackedParticle_H #define trackedParticle_H -#include "Particle.H" +#include "particle.H" #include "autoPtr.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -52,7 +52,7 @@ class trackedParticleCloud; class trackedParticle : - public Particle<trackedParticle> + public particle { // Private data @@ -74,35 +74,26 @@ public: friend class Cloud<trackedParticle>; //- Class used to pass tracking data to the trackToFace function - class trackData + class trackingData + : + public particle::TrackingData<Cloud<trackedParticle> > { - //- Reference to the cloud containing this particle - Cloud<trackedParticle>& cloud_; - labelList& maxLevel_; public: - bool switchProcessor; - bool keepParticle; - // Constructors - trackData(Cloud<trackedParticle>& cloud, labelList& maxLevel) + trackingData(Cloud<trackedParticle>& cloud, labelList& maxLevel) : - cloud_(cloud), + particle::TrackingData<Cloud<trackedParticle> >(cloud), maxLevel_(maxLevel) {} // Member functions - Cloud<trackedParticle>& cloud() - { - return cloud_; - } - labelList& maxLevel() { return maxLevel_; @@ -116,7 +107,7 @@ public: //- Construct from components trackedParticle ( - const Cloud<trackedParticle>& c, + const polyMesh& mesh, const vector& position, const label cellI, const label tetFaceI, @@ -130,20 +121,39 @@ public: //- Construct from Istream trackedParticle ( - const Cloud<trackedParticle>& c, + const polyMesh& mesh, Istream& is, bool readFields = true ); //- Construct and return a clone - autoPtr<Particle<trackedParticle> > clone() const + autoPtr<particle> clone() const { - return autoPtr<Particle<trackedParticle> > - ( - new trackedParticle(*this) - ); + return autoPtr<particle>(new trackedParticle(*this)); } + //- Factory class to read-construct particles used for + // parallel transfer + class iNew + { + const polyMesh& mesh_; + + public: + + iNew(const polyMesh& mesh) + : + mesh_(mesh) + {} + + autoPtr<trackedParticle> operator()(Istream& is) const + { + return autoPtr<trackedParticle> + ( + new trackedParticle(mesh_, is, true) + ); + } + }; + // Member Functions @@ -170,7 +180,7 @@ public: // Tracking //- Track all particles to their end point - bool move(trackData&, const scalar); + bool move(trackingData&, const scalar); //- Overridable function to handle the particle hitting a patch @@ -178,30 +188,17 @@ public: bool hitPatch ( const polyPatch&, - trackedParticle::trackData& td, + trackingData& td, const label patchI, const scalar trackFraction, const tetIndices& tetIs ); - bool hitPatch - ( - const polyPatch&, - int&, - const label patchI, - const scalar trackFraction, - const tetIndices& tetIs - ); //- Overridable function to handle the particle hitting a wedge void hitWedgePatch ( const wedgePolyPatch&, - trackedParticle::trackData& td - ); - void hitWedgePatch - ( - const wedgePolyPatch&, - int& + trackingData& td ); //- Overridable function to handle the particle hitting a @@ -209,24 +206,14 @@ public: void hitSymmetryPatch ( const symmetryPolyPatch&, - trackedParticle::trackData& td - ); - void hitSymmetryPatch - ( - const symmetryPolyPatch&, - int& + trackingData& td ); //- Overridable function to handle the particle hitting a cyclic void hitCyclicPatch ( const cyclicPolyPatch&, - trackedParticle::trackData& td - ); - void hitCyclicPatch - ( - const cyclicPolyPatch&, - int& + trackingData& td ); //- Overridable function to handle the particle hitting a @@ -234,25 +221,14 @@ public: void hitProcessorPatch ( const processorPolyPatch&, - trackedParticle::trackData& td - ); - void hitProcessorPatch - ( - const processorPolyPatch&, - int& + trackingData& td ); //- Overridable function to handle the particle hitting a wallPatch void hitWallPatch ( const wallPolyPatch&, - trackedParticle::trackData& td, - const tetIndices& - ); - void hitWallPatch - ( - const wallPolyPatch&, - int&, + trackingData& td, const tetIndices& ); @@ -260,20 +236,13 @@ public: void hitPatch ( const polyPatch&, - trackedParticle::trackData& td - ); - void hitPatch - ( - const polyPatch&, - int& + trackingData& td ); // Ostream Operator friend Ostream& operator<<(Ostream&, const trackedParticle&); - - }; diff --git a/src/mesh/autoMesh/autoHexMesh/trackedParticle/trackedParticleCloud.C b/src/mesh/autoMesh/autoHexMesh/trackedParticle/trackedParticleCloud.C index 36f91db57decefac8d43a45866ac6677a6dacfc1..87f8f3b7a6ec300cd4368ee125ebd9d047eb9583 100644 --- a/src/mesh/autoMesh/autoHexMesh/trackedParticle/trackedParticleCloud.C +++ b/src/mesh/autoMesh/autoHexMesh/trackedParticle/trackedParticleCloud.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2004-2010 OpenCFD Ltd. + \\ / A nd | Copyright (C) 2004-2011 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -33,7 +33,7 @@ namespace Foam // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // -defineParticleTypeNameAndDebug(trackedParticle, 0); +//defineParticleTypeNameAndDebug(trackedParticle, 0); defineTemplateTypeNameAndDebug(Cloud<trackedParticle>, 0); // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/parallel/reconstruct/reconstruct/reconstructLagrangianPositions.C b/src/parallel/reconstruct/reconstruct/reconstructLagrangianPositions.C index 1e07fee6041008568eb036c099407c307d4a4cde..2de2f3b0c83e3bb3ba1ff2c156349d951581c6b3 100644 --- a/src/parallel/reconstruct/reconstruct/reconstructLagrangianPositions.C +++ b/src/parallel/reconstruct/reconstruct/reconstructLagrangianPositions.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2004-2010 OpenCFD Ltd. + \\ / A nd | Copyright (C) 2004-2011 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -25,8 +25,7 @@ License #include "reconstructLagrangian.H" #include "labelIOList.H" -#include "Cloud.H" -#include "passiveParticle.H" +#include "passiveParticleCloud.H" // * * * * * * * * * * * * * * * Global Functions * * * * * * * * * * * * * // @@ -39,7 +38,7 @@ void Foam::reconstructLagrangianPositions const PtrList<labelIOList>& cellProcAddressing ) { - Cloud<passiveParticle> lagrangianPositions + passiveParticleCloud lagrangianPositions ( mesh, cloudName, @@ -67,7 +66,7 @@ void Foam::reconstructLagrangianPositions ( new passiveParticle ( - lagrangianPositions, + mesh, ppi.position(), cellMap[ppi.cell()], false @@ -76,7 +75,7 @@ void Foam::reconstructLagrangianPositions } } - IOPosition<passiveParticle>(lagrangianPositions).write(); + IOPosition<Cloud<passiveParticle> >(lagrangianPositions).write(); } diff --git a/src/postProcessing/functionObjects/field/streamLine/streamLine.C b/src/postProcessing/functionObjects/field/streamLine/streamLine.C index 45c25fb61cb9517c65b5e1d5fb25dee176e0d6fa..52dd5288af6626de79a4bd427688497a4514517c 100644 --- a/src/postProcessing/functionObjects/field/streamLine/streamLine.C +++ b/src/postProcessing/functionObjects/field/streamLine/streamLine.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2004-2010 OpenCFD Ltd. + \\ / A nd | Copyright (C) 2004-2011 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -61,7 +61,7 @@ void Foam::streamLine::track() ( new streamLineParticle ( - particles, + mesh, seedPoints[i], seedPoints.cells()[i], lifeTime_ // lifetime @@ -215,7 +215,7 @@ void Foam::streamLine::track() } // additional particle info - streamLineParticle::trackData td + streamLineParticle::trackingData td ( particles, vsInterp, diff --git a/src/postProcessing/functionObjects/field/streamLine/streamLineParticle.C b/src/postProcessing/functionObjects/field/streamLine/streamLineParticle.C index 8b2127e9950ac4f61ae80d99afd785f87f45f5d0..f441b12bb7b2a6fc0fcc57505dd9e30172963cfe 100644 --- a/src/postProcessing/functionObjects/field/streamLine/streamLineParticle.C +++ b/src/postProcessing/functionObjects/field/streamLine/streamLineParticle.C @@ -30,16 +30,15 @@ License namespace Foam { - defineParticleTypeNameAndDebug(streamLineParticle, 0); +// defineParticleTypeNameAndDebug(streamLineParticle, 0); } // * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // -// Estimate dt to cross cell in a few steps Foam::scalar Foam::streamLineParticle::calcSubCycleDeltaT ( - streamLineParticle::trackData& td, + trackingData& td, const scalar dt, const vector& U ) const @@ -58,7 +57,7 @@ Foam::scalar Foam::streamLineParticle::calcSubCycleDeltaT Foam::vector Foam::streamLineParticle::interpolateFields ( - const streamLineParticle::trackData& td, + const trackingData& td, const point& position, const label cellI ) @@ -103,29 +102,27 @@ Foam::vector Foam::streamLineParticle::interpolateFields // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // -//- Construct from components Foam::streamLineParticle::streamLineParticle ( - const Cloud<streamLineParticle>& c, + const polyMesh& mesh, const vector& position, const label cellI, const label lifeTime ) : - Particle<streamLineParticle>(c, position, cellI), + particle(mesh, position, cellI), lifeTime_(lifeTime) {} -//- Construct from Istream Foam::streamLineParticle::streamLineParticle ( - const Cloud<streamLineParticle>& c, + const polyMesh& mesh, Istream& is, bool readFields ) : - Particle<streamLineParticle>(c, is, readFields) + particle(mesh, is, readFields) { if (readFields) { @@ -157,16 +154,15 @@ Foam::streamLineParticle::streamLineParticle } -// Construct copy Foam::streamLineParticle::streamLineParticle ( - const streamLineParticle& c + const streamLineParticle& p ) : - Particle<streamLineParticle>(c), - lifeTime_(c.lifeTime_), - sampledPositions_(c.sampledPositions_), - sampledScalars_(c.sampledScalars_) + particle(p), + lifeTime_(p.lifeTime_), + sampledPositions_(p.sampledPositions_), + sampledScalars_(p.sampledScalars_) {} @@ -174,15 +170,17 @@ Foam::streamLineParticle::streamLineParticle bool Foam::streamLineParticle::move ( - streamLineParticle::trackData& td, + trackingData& td, const scalar trackTime ) { + streamLineParticle& p = static_cast<streamLineParticle&>(*this); + td.switchProcessor = false; td.keepParticle = true; scalar tEnd = (1.0 - stepFraction())*trackTime; - scalar maxDt = cloud_.pMesh().bounds().mag(); + scalar maxDt = mesh_.bounds().mag(); while ( @@ -266,8 +264,7 @@ bool Foam::streamLineParticle::move if (debug) { Pout<< "streamLineParticle : Removing stagnant particle:" - << static_cast<Particle<streamLineParticle> >(*this) - << " sampled positions:" << sampledPositions_.size() + << p << " sampled positions:" << sampledPositions_.size() << endl; } td.keepParticle = false; @@ -281,13 +278,12 @@ bool Foam::streamLineParticle::move if (debug) { Pout<< "streamLineParticle : Removing particle:" - << static_cast<Particle<streamLineParticle> >(*this) - << " sampled positions:" << sampledPositions_.size() + << p << " sampled positions:" << sampledPositions_.size() << endl; } } - // Transfer particle data into trackData. + // Transfer particle data into trackingData. //td.allPositions_.append(sampledPositions_); td.allPositions_.append(vectorList()); vectorList& top = td.allPositions_.last(); @@ -316,7 +312,7 @@ bool Foam::streamLineParticle::move bool Foam::streamLineParticle::hitPatch ( const polyPatch&, - streamLineParticle::trackData& td, + trackingData& td, const label patchI, const scalar trackFraction, const tetIndices& tetIs @@ -327,24 +323,10 @@ bool Foam::streamLineParticle::hitPatch } -bool Foam::streamLineParticle::hitPatch -( - const polyPatch&, - int&, - const label, - const scalar, - const tetIndices& -) -{ - // Disable generic patch interaction - return false; -} - - void Foam::streamLineParticle::hitWedgePatch ( const wedgePolyPatch& pp, - streamLineParticle::trackData& td + trackingData& td ) { // Remove particle @@ -352,18 +334,10 @@ void Foam::streamLineParticle::hitWedgePatch } -void Foam::streamLineParticle::hitWedgePatch -( - const wedgePolyPatch&, - int& -) -{} - - void Foam::streamLineParticle::hitSymmetryPatch ( const symmetryPolyPatch& pp, - streamLineParticle::trackData& td + trackingData& td ) { // Remove particle @@ -371,18 +345,10 @@ void Foam::streamLineParticle::hitSymmetryPatch } -void Foam::streamLineParticle::hitSymmetryPatch -( - const symmetryPolyPatch&, - int& -) -{} - - void Foam::streamLineParticle::hitCyclicPatch ( const cyclicPolyPatch& pp, - streamLineParticle::trackData& td + trackingData& td ) { // Remove particle @@ -390,18 +356,10 @@ void Foam::streamLineParticle::hitCyclicPatch } -void Foam::streamLineParticle::hitCyclicPatch -( - const cyclicPolyPatch&, - int& -) -{} - - void Foam::streamLineParticle::hitProcessorPatch ( const processorPolyPatch&, - streamLineParticle::trackData& td + trackingData& td ) { // Switch particle @@ -409,18 +367,10 @@ void Foam::streamLineParticle::hitProcessorPatch } -void Foam::streamLineParticle::hitProcessorPatch -( - const processorPolyPatch&, - int& -) -{} - - void Foam::streamLineParticle::hitWallPatch ( const wallPolyPatch& wpp, - streamLineParticle::trackData& td, + trackingData& td, const tetIndices& ) { @@ -429,19 +379,10 @@ void Foam::streamLineParticle::hitWallPatch } -void Foam::streamLineParticle::hitWallPatch -( - const wallPolyPatch& wpp, - int&, - const tetIndices& -) -{} - - void Foam::streamLineParticle::hitPatch ( const polyPatch& wpp, - streamLineParticle::trackData& td + trackingData& td ) { // Remove particle @@ -449,14 +390,6 @@ void Foam::streamLineParticle::hitPatch } -void Foam::streamLineParticle::hitPatch -( - const polyPatch& wpp, - int& -) -{} - - void Foam::streamLineParticle::readFields(Cloud<streamLineParticle>& c) { if (!c.size()) @@ -464,6 +397,8 @@ void Foam::streamLineParticle::readFields(Cloud<streamLineParticle>& c) return; } + particle::readFields(c); + IOField<label> lifeTime ( c.fieldIOobject("lifeTime", IOobject::MUST_READ) @@ -495,7 +430,7 @@ void Foam::streamLineParticle::readFields(Cloud<streamLineParticle>& c) void Foam::streamLineParticle::writeFields(const Cloud<streamLineParticle>& c) { - Particle<streamLineParticle>::writeFields(c); + particle::writeFields(c); label np = c.size(); @@ -534,7 +469,7 @@ void Foam::streamLineParticle::writeFields(const Cloud<streamLineParticle>& c) Foam::Ostream& Foam::operator<<(Ostream& os, const streamLineParticle& p) { - os << static_cast<const Particle<streamLineParticle>&>(p) + os << static_cast<const particle&>(p) << token::SPACE << p.lifeTime_ << token::SPACE << p.sampledPositions_ << token::SPACE << p.sampledScalars_ diff --git a/src/postProcessing/functionObjects/field/streamLine/streamLineParticle.H b/src/postProcessing/functionObjects/field/streamLine/streamLineParticle.H index 085b49739322263d037c8f7955884e5cd963abf7..6a4d944d1e6b970e0caa5ccb1c43693ff3665e16 100644 --- a/src/postProcessing/functionObjects/field/streamLine/streamLineParticle.H +++ b/src/postProcessing/functionObjects/field/streamLine/streamLineParticle.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2004-2010 OpenCFD Ltd. + \\ / A nd | Copyright (C) 2004-2011 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -36,7 +36,7 @@ SourceFiles #ifndef streamLineParticle_H #define streamLineParticle_H -#include "Particle.H" +#include "particle.H" #include "autoPtr.H" #include "interpolationCellPoint.H" #include "vectorList.H" @@ -49,20 +49,20 @@ namespace Foam class streamLineParticleCloud; /*---------------------------------------------------------------------------*\ - Class streamLineParticle Declaration + Class streamLineParticle Declaration \*---------------------------------------------------------------------------*/ class streamLineParticle : - public Particle<streamLineParticle> + public particle { public: //- Class used to pass tracking data to the trackToFace function - class trackData + class trackingData : - public Particle<streamLineParticle>::trackData + public particle::TrackingData<Cloud<streamLineParticle> > { public: @@ -81,7 +81,7 @@ public: // Constructors - trackData + trackingData ( Cloud<streamLineParticle>& cloud, const PtrList<interpolationCellPoint<scalar> >& vsInterp, @@ -94,7 +94,7 @@ public: List<DynamicList<vectorList> >& allVectors ) : - Particle<streamLineParticle>::trackData(cloud), + particle::TrackingData<Cloud<streamLineParticle> >(cloud), vsInterp_(vsInterp), vvInterp_(vvInterp), UIndex_(UIndex), @@ -130,7 +130,7 @@ private: // steps. scalar calcSubCycleDeltaT ( - streamLineParticle::trackData& td, + trackingData& td, const scalar dt, const vector& U ) const; @@ -138,7 +138,7 @@ private: //- Interpolate all quantities; return interpolated velocity. vector interpolateFields ( - const streamLineParticle::trackData&, + const trackingData&, const point&, const label cellI ); @@ -151,7 +151,7 @@ public: //- Construct from components streamLineParticle ( - const Cloud<streamLineParticle>& c, + const polyMesh& c, const vector& position, const label cellI, const label lifeTime @@ -160,32 +160,49 @@ public: //- Construct from Istream streamLineParticle ( - const Cloud<streamLineParticle>& c, + const polyMesh& c, Istream& is, bool readFields = true ); //- Construct copy - streamLineParticle(const streamLineParticle& c); + streamLineParticle(const streamLineParticle& p); //- Construct and return a clone - autoPtr<Particle<streamLineParticle> > clone() const + autoPtr<particle> clone() const { - return autoPtr<Particle<streamLineParticle> > - ( - new streamLineParticle(*this) - ); + return autoPtr<particle>(new streamLineParticle(*this)); } + //- Factory class to read-construct particles used for + // parallel transfer + class iNew + { + const polyMesh& mesh_; - // Member Functions + public: + iNew(const polyMesh& mesh) + : + mesh_(mesh) + {} + autoPtr<streamLineParticle> operator()(Istream& is) const + { + return autoPtr<streamLineParticle> + ( + new streamLineParticle(mesh_, is, true) + ); + } + }; + + + // Member Functions // Tracking //- Track all particles to their end point - bool move(trackData&, const scalar trackTime); + bool move(trackingData&, const scalar trackTime); //- Overridable function to handle the particle hitting a patch @@ -193,31 +210,17 @@ public: bool hitPatch ( const polyPatch&, - streamLineParticle::trackData& td, + trackingData& td, const label patchI, const scalar trackFraction, const tetIndices& tetIs ); - bool hitPatch - ( - const polyPatch&, - int&, - const label, - const scalar, - const tetIndices& - ); - //- Overridable function to handle the particle hitting a wedge void hitWedgePatch ( const wedgePolyPatch&, - streamLineParticle::trackData& td - ); - void hitWedgePatch - ( - const wedgePolyPatch&, - int& + trackingData& td ); //- Overridable function to handle the particle hitting a @@ -225,24 +228,14 @@ public: void hitSymmetryPatch ( const symmetryPolyPatch&, - streamLineParticle::trackData& td - ); - void hitSymmetryPatch - ( - const symmetryPolyPatch&, - int& + trackingData& td ); //- Overridable function to handle the particle hitting a cyclic void hitCyclicPatch ( const cyclicPolyPatch&, - streamLineParticle::trackData& td - ); - void hitCyclicPatch - ( - const cyclicPolyPatch&, - int& + trackingData& td ); //- Overridable function to handle the particle hitting a @@ -250,25 +243,14 @@ public: void hitProcessorPatch ( const processorPolyPatch&, - streamLineParticle::trackData& td - ); - void hitProcessorPatch - ( - const processorPolyPatch&, - int& + trackingData& td ); //- Overridable function to handle the particle hitting a wallPatch void hitWallPatch ( const wallPolyPatch&, - streamLineParticle::trackData& td, - const tetIndices& - ); - void hitWallPatch - ( - const wallPolyPatch&, - int&, + trackingData& td, const tetIndices& ); @@ -276,12 +258,7 @@ public: void hitPatch ( const polyPatch&, - streamLineParticle::trackData& td - ); - void hitPatch - ( - const polyPatch&, - int& + trackingData& td ); @@ -297,8 +274,6 @@ public: // Ostream Operator friend Ostream& operator<<(Ostream&, const streamLineParticle&); - - }; diff --git a/src/sampling/sampledSet/face/faceOnlySet.C b/src/sampling/sampledSet/face/faceOnlySet.C index a9b574589fa82a72106ef361418d7b3645c21797..20ee0b56eb73c56c67aefc5c7f53c462571e425d 100644 --- a/src/sampling/sampledSet/face/faceOnlySet.C +++ b/src/sampling/sampledSet/face/faceOnlySet.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2004-2010 OpenCFD Ltd. + \\ / A nd | Copyright (C) 2004-2011 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -28,10 +28,6 @@ License #include "DynamicList.H" #include "polyMesh.H" -#include "Cloud.H" -#include "passiveParticle.H" -#include "IDLList.H" - #include "addToRunTimeSelectionTable.H" // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // @@ -45,11 +41,9 @@ namespace Foam // * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // - -// Sample singly connected segment. Returns false if end_ reached. bool Foam::faceOnlySet::trackToBoundary ( - Particle<passiveParticle>& singleParticle, + passiveParticleCloud& particles, DynamicList<point>& samplingPts, DynamicList<label>& samplingCells, DynamicList<label>& samplingFaces, @@ -61,6 +55,10 @@ bool Foam::faceOnlySet::trackToBoundary const vector smallVec = tol*offset; const scalar smallDist = mag(smallVec); + passiveParticle& singleParticle = *particles.first(); + + particle::TrackingData<passiveParticleCloud> trackData(particles); + // Alias const point& trackPt = singleParticle.position(); @@ -68,7 +66,7 @@ bool Foam::faceOnlySet::trackToBoundary { point oldPoint = trackPt; - singleParticle.trackToFace(end_); + singleParticle.trackToFace(end_, trackData); if (singleParticle.face() != -1 && mag(oldPoint - trackPt) > smallDist) { @@ -212,18 +210,20 @@ void Foam::faceOnlySet::calcSamples } // Initialize tracking starting from trackPt - Cloud<passiveParticle> particles(mesh(), IDLList<passiveParticle>()); + passiveParticleCloud particles(mesh()); passiveParticle singleParticle ( - particles, + mesh(), trackPt, trackCellI ); + particles.addParticle(&singleParticle); + bool reachedBoundary = trackToBoundary ( - singleParticle, + particles, samplingPts, samplingCells, samplingFaces, diff --git a/src/sampling/sampledSet/face/faceOnlySet.H b/src/sampling/sampledSet/face/faceOnlySet.H index e2d5ad65bee385b73c73feb36075a3b2416475bc..1bb86ba9c2cf42e93ba237b4bc1567ac47c8ea2c 100644 --- a/src/sampling/sampledSet/face/faceOnlySet.H +++ b/src/sampling/sampledSet/face/faceOnlySet.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2004-2010 OpenCFD Ltd. + \\ / A nd | Copyright (C) 2004-2011 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -36,16 +36,13 @@ SourceFiles #include "sampledSet.H" #include "DynamicList.H" +#include "passiveParticleCloud.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // namespace Foam { -// Forward declaration of classes -class passiveParticle; -template<class Type> class Particle; - /*---------------------------------------------------------------------------*\ Class faceOnlySet Declaration \*---------------------------------------------------------------------------*/ @@ -71,7 +68,7 @@ class faceOnlySet // reached bool trackToBoundary ( - Particle<passiveParticle>& singleParticle, + passiveParticleCloud& particles, DynamicList<point>& samplingPts, DynamicList<label>& samplingCells, DynamicList<label>& samplingFaces, diff --git a/src/sampling/sampledSet/midPoint/midPointSet.C b/src/sampling/sampledSet/midPoint/midPointSet.C index b7dab5e7456eb4e0f857e704442e0fcd56929c7b..bc108b9108eb75a80b9d1087e9d8977cee73fe34 100644 --- a/src/sampling/sampledSet/midPoint/midPointSet.C +++ b/src/sampling/sampledSet/midPoint/midPointSet.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2004-2010 OpenCFD Ltd. + \\ / A nd | Copyright (C) 2004-2011 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -38,8 +38,6 @@ namespace Foam // * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // -// Rework faceOnlySet samples. -// Take two consecutive samples void Foam::midPointSet::genSamples() { // Generate midpoints. @@ -112,6 +110,7 @@ void Foam::midPointSet::genSamples() ); } + // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // Foam::midPointSet::midPointSet diff --git a/src/sampling/sampledSet/midPoint/midPointSet.H b/src/sampling/sampledSet/midPoint/midPointSet.H index 14922ff394719959184edaf0670aa439e4d7049e..cf16de5932fafb1d6c810fdc17444b750e11c490 100644 --- a/src/sampling/sampledSet/midPoint/midPointSet.H +++ b/src/sampling/sampledSet/midPoint/midPointSet.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2004-2010 OpenCFD Ltd. + \\ / A nd | Copyright (C) 2004-2011 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -42,8 +42,6 @@ namespace Foam { // Forward declaration of classes -class passiveParticle; -template<class Type> class particle; class meshSearch; /*---------------------------------------------------------------------------*\ diff --git a/src/sampling/sampledSet/midPointAndFace/midPointAndFaceSet.H b/src/sampling/sampledSet/midPointAndFace/midPointAndFaceSet.H index a0c021c5c5cb4696c8c72995b61a896e950990b9..e0b405707072d7522db13a415e3a59a322f9cc39 100644 --- a/src/sampling/sampledSet/midPointAndFace/midPointAndFaceSet.H +++ b/src/sampling/sampledSet/midPointAndFace/midPointAndFaceSet.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2004-2010 OpenCFD Ltd. + \\ / A nd | Copyright (C) 2004-2011 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -42,8 +42,6 @@ namespace Foam { // Forward declaration of classes -class passiveParticle; -template<class Type> class particle; class meshSearch; /*---------------------------------------------------------------------------*\ diff --git a/src/sampling/sampledSet/polyLine/polyLineSet.C b/src/sampling/sampledSet/polyLine/polyLineSet.C index 6f347e1d82fdf584672deac831c5b94ce2944a55..d36b2c1fed1a32bf459851bd239a14423d1c99d9 100644 --- a/src/sampling/sampledSet/polyLine/polyLineSet.C +++ b/src/sampling/sampledSet/polyLine/polyLineSet.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2004-2010 OpenCFD Ltd. + \\ / A nd | Copyright (C) 2004-2011 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -28,10 +28,6 @@ License #include "DynamicList.H" #include "polyMesh.H" -#include "Cloud.H" -#include "passiveParticle.H" -#include "IDLList.H" - #include "addToRunTimeSelectionTable.H" // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // @@ -48,7 +44,7 @@ namespace Foam // Sample till hits boundary. bool Foam::polyLineSet::trackToBoundary ( - Particle<passiveParticle>& singleParticle, + passiveParticleCloud& particles, label& sampleI, DynamicList<point>& samplingPts, DynamicList<label>& samplingCells, @@ -56,6 +52,10 @@ bool Foam::polyLineSet::trackToBoundary DynamicList<scalar>& samplingCurveDist ) const { + passiveParticle& singleParticle = *particles.first(); + + particle::TrackingData<passiveParticleCloud> trackData(particles); + // Alias const point& trackPt = singleParticle.position(); @@ -70,7 +70,7 @@ bool Foam::polyLineSet::trackToBoundary do { singleParticle.stepFraction() = 0; - singleParticle.track(sampleCoords_[sampleI+1]); + singleParticle.track(sampleCoords_[sampleI+1], trackData); } while ( @@ -260,18 +260,18 @@ void Foam::polyLineSet::calcSamples // // Initialize tracking starting from sampleI - Cloud<passiveParticle> particles(mesh(), IDLList<passiveParticle>()); + passiveParticleCloud particles(mesh()); passiveParticle singleParticle ( - particles, + mesh(), trackPt, trackCellI ); bool bReached = trackToBoundary ( - singleParticle, + particles, sampleI, samplingPts, samplingCells, diff --git a/src/sampling/sampledSet/polyLine/polyLineSet.H b/src/sampling/sampledSet/polyLine/polyLineSet.H index 931904d70363458c3f25b5887a5ea8838c842ad8..fda8cbdb3629c9b06e0f75efa5e34e9ec3152b1c 100644 --- a/src/sampling/sampledSet/polyLine/polyLineSet.H +++ b/src/sampling/sampledSet/polyLine/polyLineSet.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2004-2010 OpenCFD Ltd. + \\ / A nd | Copyright (C) 2004-2011 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -37,16 +37,13 @@ SourceFiles #include "sampledSet.H" #include "DynamicList.H" +#include "passiveParticleCloud.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // namespace Foam { -// Forward declaration of classes -class passiveParticle; -template<class Type> class Particle; - /*---------------------------------------------------------------------------*\ Class polyLineSet Declaration \*---------------------------------------------------------------------------*/ @@ -68,7 +65,7 @@ class polyLineSet // Returns false if end of samples reached. bool trackToBoundary ( - Particle<passiveParticle>& singleParticle, + passiveParticleCloud& particles, label& sampleI, DynamicList<point>& samplingPts, DynamicList<label>& samplingCells, diff --git a/src/sampling/sampledSet/uniform/uniformSet.C b/src/sampling/sampledSet/uniform/uniformSet.C index 2964172e9fdfaebf5794562f103d34f078c8e602..8b99652c419f4a79538918ab25a29bcf1d94b3b8 100644 --- a/src/sampling/sampledSet/uniform/uniformSet.C +++ b/src/sampling/sampledSet/uniform/uniformSet.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2004-2010 OpenCFD Ltd. + \\ / A nd | Copyright (C) 2004-2011 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -28,10 +28,6 @@ License #include "DynamicList.H" #include "polyMesh.H" -#include "Cloud.H" -#include "passiveParticle.H" -#include "IDLList.H" - #include "addToRunTimeSelectionTable.H" // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // @@ -45,9 +41,6 @@ namespace Foam // * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // -// Finds along line (samplePt + t * offset) next sample beyond or equal to -// currentPt. -// Updates samplePt, sampleI bool Foam::uniformSet::nextSample ( const point& currentPt, @@ -82,10 +75,9 @@ bool Foam::uniformSet::nextSample } -// Sample singly connected segment. Returns false if end_ reached. bool Foam::uniformSet::trackToBoundary ( - Particle<passiveParticle>& singleParticle, + passiveParticleCloud& particles, point& samplePt, label& sampleI, DynamicList<point>& samplingPts, @@ -99,9 +91,13 @@ bool Foam::uniformSet::trackToBoundary const vector smallVec = tol*offset; const scalar smallDist = mag(smallVec); + passiveParticle& singleParticle = *particles.first(); + // Alias const point& trackPt = singleParticle.position(); + particle::TrackingData<passiveParticleCloud> trackData(particles); + while(true) { // Find next samplePt on/after trackPt. Update samplePt, sampleI @@ -161,7 +157,7 @@ bool Foam::uniformSet::trackToBoundary do { singleParticle.stepFraction() = 0; - singleParticle.track(samplePt); + singleParticle.track(samplePt, trackData); if (debug) { @@ -309,19 +305,16 @@ void Foam::uniformSet::calcSamples while(true) { + passiveParticleCloud particles(mesh()); + // Initialize tracking starting from trackPt - Cloud<passiveParticle> particles(mesh(), IDLList<passiveParticle>()); + passiveParticle singleParticle(mesh(), trackPt, trackCellI); - passiveParticle singleParticle - ( - particles, - trackPt, - trackCellI - ); + particles.addParticle(&singleParticle); bool reachedBoundary = trackToBoundary ( - singleParticle, + particles, samplePt, sampleI, samplingPts, diff --git a/src/sampling/sampledSet/uniform/uniformSet.H b/src/sampling/sampledSet/uniform/uniformSet.H index 65d919b24f4f6a2e8119dc011da0f6f37e1b3121..b03f2b3e149539055a784ff3d95bb8e3205d2185 100644 --- a/src/sampling/sampledSet/uniform/uniformSet.H +++ b/src/sampling/sampledSet/uniform/uniformSet.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2004-2010 OpenCFD Ltd. + \\ / A nd | Copyright (C) 2004-2011 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -34,6 +34,7 @@ SourceFiles #ifndef uniformSet_H #define uniformSet_H +#include "passiveParticleCloud.H" #include "sampledSet.H" #include "DynamicList.H" @@ -42,10 +43,6 @@ SourceFiles namespace Foam { -// Forward declaration of classes -class passiveParticle; -template<class Type> class Particle; - /*---------------------------------------------------------------------------*\ Class uniformSet Declaration \*---------------------------------------------------------------------------*/ @@ -85,7 +82,7 @@ class uniformSet // reached bool trackToBoundary ( - Particle<passiveParticle>& singleParticle, + passiveParticleCloud& particles, point& samplePt, label& sampleI, DynamicList<point>& samplingPts, diff --git a/src/sampling/sampledSurface/sampledTriSurfaceMesh/sampledTriSurfaceMesh.C b/src/sampling/sampledSurface/sampledTriSurfaceMesh/sampledTriSurfaceMesh.C index d14b0872ae290392e2a82b06a1743e5573377e65..66f7e31809eb51c18785e3d2452b1055813759e2 100644 --- a/src/sampling/sampledSurface/sampledTriSurfaceMesh/sampledTriSurfaceMesh.C +++ b/src/sampling/sampledSurface/sampledTriSurfaceMesh/sampledTriSurfaceMesh.C @@ -29,6 +29,7 @@ License #include "globalIndex.H" #include "treeDataCell.H" #include "treeDataFace.H" +#include "meshTools.H" #include "addToRunTimeSelectionTable.H"