diff --git a/src/dynamicFvMesh/dynamicMotionSolverFvMesh/dynamicMotionSolverFvMesh.C b/src/dynamicFvMesh/dynamicMotionSolverFvMesh/dynamicMotionSolverFvMesh.C index bf5b0a97663a4b3f72c400ffd92899ac8c15e35b..76b2b825eb6590dfcfbc6b2a93cf9ea0ed488084 100644 --- a/src/dynamicFvMesh/dynamicMotionSolverFvMesh/dynamicMotionSolverFvMesh.C +++ b/src/dynamicFvMesh/dynamicMotionSolverFvMesh/dynamicMotionSolverFvMesh.C @@ -92,10 +92,11 @@ bool Foam::dynamicMotionSolverFvMesh::update() { fvMesh::movePoints(motionPtr_->newPoints()); - if (foundObject<volVectorField>("U")) + volVectorField* Uptr = getObjectPtr<volVectorField>("U"); + + if (Uptr) { - volVectorField& U = lookupObjectRef<volVectorField>("U"); - U.correctBoundaryConditions(); + Uptr->correctBoundaryConditions(); } return true; diff --git a/src/dynamicFvMesh/dynamicMultiMotionSolverFvMesh/dynamicMultiMotionSolverFvMesh.C b/src/dynamicFvMesh/dynamicMultiMotionSolverFvMesh/dynamicMultiMotionSolverFvMesh.C index 591a8fef72002393d8844d523268bce2ab36064e..baf7e9259439feb4af83d945503568829e716f0f 100644 --- a/src/dynamicFvMesh/dynamicMultiMotionSolverFvMesh/dynamicMultiMotionSolverFvMesh.C +++ b/src/dynamicFvMesh/dynamicMultiMotionSolverFvMesh/dynamicMultiMotionSolverFvMesh.C @@ -26,7 +26,7 @@ License #include "dynamicMultiMotionSolverFvMesh.H" #include "addToRunTimeSelectionTable.H" #include "volFields.H" -#include "boolList.H" +#include "bitSet.H" #include "syncTools.H" // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // @@ -69,7 +69,10 @@ Foam::dynamicMultiMotionSolverFvMesh::dynamicMultiMotionSolverFvMesh zoneIDs_.setSize(dynamicMeshCoeffs.size()); motionPtr_.setSize(dynamicMeshCoeffs.size()); pointIDs_.setSize(dynamicMeshCoeffs.size()); - label zoneI = 0; + + label zonei = 0; + + bitSet movePts; for (const entry& dEntry : dynamicMeshCoeffs) { @@ -79,9 +82,9 @@ Foam::dynamicMultiMotionSolverFvMesh::dynamicMultiMotionSolverFvMesh const word zoneName(subDict.get<word>("cellZone")); - zoneIDs_[zoneI] = cellZones().findZoneID(zoneName); + zoneIDs_[zonei] = cellZones().findZoneID(zoneName); - if (zoneIDs_[zoneI] == -1) + if (zoneIDs_[zonei] == -1) { FatalIOErrorInFunction(dynamicMeshCoeffs) << "Cannot find cellZone named " << zoneName @@ -94,7 +97,7 @@ Foam::dynamicMultiMotionSolverFvMesh::dynamicMultiMotionSolverFvMesh motionPtr_.set ( - zoneI, + zonei, motionSolver::New ( *this, @@ -102,75 +105,55 @@ Foam::dynamicMultiMotionSolverFvMesh::dynamicMultiMotionSolverFvMesh ) ); + // Collect points of cell zone. - const cellZone& cz = cellZones()[zoneIDs_[zoneI]]; - boolList movePts(nPoints(), false); + movePts.reset(); + movePts.resize(nPoints()); - forAll(cz, i) + for (const label celli : cellZones()[zoneIDs_[zonei]]) { - label cellI = cz[i]; - const cell& c = cells()[cellI]; - forAll(c, j) + for (const label facei : cells()[celli]) { - const face& f = faces()[c[j]]; - forAll(f, k) - { - label pointI = f[k]; - movePts[pointI] = true; - } + movePts.set(faces()[facei]); // set multiple points } } - syncTools::syncPointList(*this, movePts, orEqOp<bool>(), false); - - DynamicList<label> ptIDs(nPoints()); - forAll(movePts, i) - { - if (movePts[i]) - { - ptIDs.append(i); - } - } + syncTools::syncPointList + ( + *this, movePts, orEqOp<unsigned int>(), 0u + ); - pointIDs_[zoneI].transfer(ptIDs); + pointIDs_[zonei] = movePts.sortedToc(); - Info<< "Applying motionSolver " << motionPtr_[zoneI].type() + Info<< "Applying motionSolver " << motionPtr_[zonei].type() << " to " - << returnReduce(pointIDs_[zoneI].size(), sumOp<label>()) + << returnReduce(pointIDs_[zonei].size(), sumOp<label>()) << " points of cellZone " << zoneName << endl; - zoneI++; + ++zonei; } } - zoneIDs_.setSize(zoneI); - motionPtr_.setSize(zoneI); - pointIDs_.setSize(zoneI); + zoneIDs_.setSize(zonei); + motionPtr_.setSize(zonei); + pointIDs_.setSize(zonei); } -// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // - -Foam::dynamicMultiMotionSolverFvMesh::~dynamicMultiMotionSolverFvMesh() -{} - - // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // bool Foam::dynamicMultiMotionSolverFvMesh::update() { pointField transformedPts(points()); - forAll(motionPtr_, zoneI) + forAll(motionPtr_, zonei) { - tmp<pointField> tnewPoints(motionPtr_[zoneI].newPoints()); + tmp<pointField> tnewPoints(motionPtr_[zonei].newPoints()); const pointField& newPoints = tnewPoints(); - const labelList& zonePoints = pointIDs_[zoneI]; - forAll(zonePoints, i) + for (const label pointi : pointIDs_[zonei]) { - label pointI = zonePoints[i]; - transformedPts[pointI] = newPoints[pointI]; + transformedPts[pointi] = newPoints[pointi]; } } @@ -178,9 +161,11 @@ bool Foam::dynamicMultiMotionSolverFvMesh::update() static bool hasWarned = false; - if (foundObject<volVectorField>("U")) + volVectorField* Uptr = getObjectPtr<volVectorField>("U"); + + if (Uptr) { - lookupObjectRef<volVectorField>("U").correctBoundaryConditions(); + Uptr->correctBoundaryConditions(); } else if (!hasWarned) { diff --git a/src/dynamicFvMesh/dynamicMultiMotionSolverFvMesh/dynamicMultiMotionSolverFvMesh.H b/src/dynamicFvMesh/dynamicMultiMotionSolverFvMesh/dynamicMultiMotionSolverFvMesh.H index b2525708ea7744e30f847bb8841859c876b4f94b..e7178ca4069ebf6af6f83d0f060fa13b8e3fba0a 100644 --- a/src/dynamicFvMesh/dynamicMultiMotionSolverFvMesh/dynamicMultiMotionSolverFvMesh.H +++ b/src/dynamicFvMesh/dynamicMultiMotionSolverFvMesh/dynamicMultiMotionSolverFvMesh.H @@ -85,11 +85,11 @@ public: // Constructors //- Construct from IOobject - dynamicMultiMotionSolverFvMesh(const IOobject& io); + explicit dynamicMultiMotionSolverFvMesh(const IOobject& io); //- Destructor - ~dynamicMultiMotionSolverFvMesh(); + ~dynamicMultiMotionSolverFvMesh() = default; // Member Functions