diff --git a/applications/test/hexRef8/Test-hexRef8.C b/applications/test/hexRef8/Test-hexRef8.C index 19bf5ff71e..589cc77a72 100644 --- a/applications/test/hexRef8/Test-hexRef8.C +++ b/applications/test/hexRef8/Test-hexRef8.C @@ -201,7 +201,7 @@ int main(int argc, char *argv[]) } else if (action == 1 || action == 2) { - // Mesh changing engine. + // Mesh topo-change engine. polyTopoChange meshMod(mesh); if (action == 1) @@ -290,16 +290,13 @@ int main(int argc, char *argv[]) Info<< nl<< "-- Mesh : moving:" << mesh.moving() << " topoChanged:" << mesh.topoChanged() - << " changing:" << mesh.changing() << endl; - Info<< "Writing fields" << nl << endl; runTime.write(); - // Check mesh volume conservation if (mesh.moving()) { diff --git a/src/OpenFOAM/db/objectRegistry/objectRegistry.H b/src/OpenFOAM/db/objectRegistry/objectRegistry.H index 4f70e6ec77..5db1919a80 100644 --- a/src/OpenFOAM/db/objectRegistry/objectRegistry.H +++ b/src/OpenFOAM/db/objectRegistry/objectRegistry.H @@ -118,8 +118,11 @@ public: const label nIoObjects = 128 ); + //- Move constructor + objectRegistry(objectRegistry&&) = default; + //- Disallow default bitwise copy construction - objectRegistry(const objectRegistry&); + objectRegistry(const objectRegistry&) = delete; //- Destructor diff --git a/src/OpenFOAM/meshes/data/data.H b/src/OpenFOAM/meshes/data/data.H index 768b949cb7..fff3518bf0 100644 --- a/src/OpenFOAM/meshes/data/data.H +++ b/src/OpenFOAM/meshes/data/data.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | Website: https://openfoam.org - \\ / A nd | Copyright (C) 2011-2020 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2022 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -53,15 +53,6 @@ class data : public IOdictionary { - // Private Member Functions - - //- Disallow default bitwise copy construction - data(const data&) = delete; - - //- Disallow default bitwise assignment - void operator=(const data&) = delete; - - public: //- Type information @@ -72,6 +63,15 @@ public: //- Construct for objectRegistry data(const objectRegistry& obr); + + //- Move constructor + data(data&&) = default; + + //- Disallow default bitwise copy construction + data(const data&) = delete; + + //- Disallow default bitwise assignment + void operator=(const data&) = delete; }; diff --git a/src/OpenFOAM/meshes/polyMesh/polyBoundaryMesh/polyBoundaryMesh.H b/src/OpenFOAM/meshes/polyMesh/polyBoundaryMesh/polyBoundaryMesh.H index b5211defa1..a0d37463fd 100644 --- a/src/OpenFOAM/meshes/polyMesh/polyBoundaryMesh/polyBoundaryMesh.H +++ b/src/OpenFOAM/meshes/polyMesh/polyBoundaryMesh/polyBoundaryMesh.H @@ -83,12 +83,6 @@ class polyBoundaryMesh //- Calculate the geometry for the patches (transformation tensors etc.) void calcGeometry(); - //- Disallow default bitwise copy construction - polyBoundaryMesh(const polyBoundaryMesh&); - - //- Disallow default bitwise assignment - void operator=(const polyBoundaryMesh&); - public: @@ -126,6 +120,12 @@ public: const polyPatchList& ); + //- Move constructor + polyBoundaryMesh(polyBoundaryMesh&&) = default; + + //- Disallow default bitwise copy construction + polyBoundaryMesh(const polyBoundaryMesh&) = delete; + //- Destructor ~polyBoundaryMesh(); @@ -266,6 +266,9 @@ public: //- Return reference to polyPatch by name. polyPatch& operator[](const word&); + //- Disallow default bitwise assignment + void operator=(const polyBoundaryMesh&) = delete; + // Ostream operator diff --git a/src/OpenFOAM/meshes/polyMesh/polyMesh.C b/src/OpenFOAM/meshes/polyMesh/polyMesh.C index c5a47502d5..49f2efc67a 100644 --- a/src/OpenFOAM/meshes/polyMesh/polyMesh.C +++ b/src/OpenFOAM/meshes/polyMesh/polyMesh.C @@ -668,6 +668,35 @@ Foam::polyMesh::polyMesh } +Foam::polyMesh::polyMesh(polyMesh&& mesh) +: + objectRegistry(move(mesh)), + primitiveMesh(move(mesh)), + points_(move(mesh.points_)), + faces_(move(mesh.faces_)), + owner_(move(mesh.owner_)), + neighbour_(move(mesh.neighbour_)), + clearedPrimitives_(mesh.clearedPrimitives_), + boundary_(move(mesh.boundary_)), + bounds_(move(mesh.bounds_)), + comm_(mesh.comm_), + geometricD_(mesh.geometricD_), + solutionD_(mesh.solutionD_), + tetBasePtIsPtr_(move(mesh.tetBasePtIsPtr_)), + cellTreePtr_(move(mesh.cellTreePtr_)), + pointZones_(move(mesh.pointZones_)), + faceZones_(move(mesh.faceZones_)), + cellZones_(move(mesh.cellZones_)), + globalMeshDataPtr_(move(mesh.globalMeshDataPtr_)), + curMotionTimeIndex_(mesh.curMotionTimeIndex_), + oldPointsPtr_(move(mesh.oldPointsPtr_)), + oldCellCentresPtr_(move(mesh.oldCellCentresPtr_)), + storeOldCellCentres_(mesh.storeOldCellCentres_), + moving_(mesh.moving_), + topoChanged_(mesh.topoChanged_) +{} + + void Foam::polyMesh::resetPrimitives ( pointField&& points, diff --git a/src/OpenFOAM/meshes/polyMesh/polyMesh.H b/src/OpenFOAM/meshes/polyMesh/polyMesh.H index bdd2c8c9aa..9152d86637 100644 --- a/src/OpenFOAM/meshes/polyMesh/polyMesh.H +++ b/src/OpenFOAM/meshes/polyMesh/polyMesh.H @@ -388,8 +388,11 @@ public: const bool syncPar = true ); + //- Move constructor + polyMesh(polyMesh&&); + //- Disallow default bitwise copy construction - polyMesh(const polyMesh&); + polyMesh(const polyMesh&) = delete; //- Destructor @@ -528,13 +531,14 @@ public: return moving_; } - //- Has the mesh topology changed + //- Has the mesh topology changed this time-step bool topoChanged() const { return topoChanged_; } - //- Is mesh changing (topology changing and/or moving) + //- Is mesh changing + // Moving or mesh topology changed this time-step) bool changing() const { return moving() || topoChanged(); diff --git a/src/OpenFOAM/meshes/polyMesh/polyMeshFromShapeMesh.C b/src/OpenFOAM/meshes/polyMesh/polyMeshFromShapeMesh.C index c54c4f9f1f..11d1cd0fbc 100644 --- a/src/OpenFOAM/meshes/polyMesh/polyMeshFromShapeMesh.C +++ b/src/OpenFOAM/meshes/polyMesh/polyMeshFromShapeMesh.C @@ -811,8 +811,7 @@ Foam::polyMesh::polyMesh oldPointsPtr_(nullptr), oldCellCentresPtr_(nullptr), storeOldCellCentres_(false), - moving_(false), - topoChanged_(false) + moving_(false) { if (debug) { diff --git a/src/OpenFOAM/meshes/polyMesh/zones/MeshZones/MeshZones.H b/src/OpenFOAM/meshes/polyMesh/zones/MeshZones/MeshZones.H index e734be5d46..e2952ec183 100644 --- a/src/OpenFOAM/meshes/polyMesh/zones/MeshZones/MeshZones.H +++ b/src/OpenFOAM/meshes/polyMesh/zones/MeshZones/MeshZones.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | Website: https://openfoam.org - \\ / A nd | Copyright (C) 2011-2021 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2022 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -79,9 +79,6 @@ class MeshZones //- Read if IOobject flags set. Return true if read. bool read(); - //- Disallow default bitwise copy construction - MeshZones(const MeshZones&); - //- Disallow default bitwise assignment void operator=(const MeshZones&); @@ -117,6 +114,12 @@ public: const PtrList& ); + //- Move constructor + MeshZones(MeshZones&&) = default; + + //- Disallow default bitwise copy construction + MeshZones(const MeshZones&) = delete; + //- Destructor ~MeshZones(); diff --git a/src/OpenFOAM/meshes/primitiveMesh/primitiveMesh.H b/src/OpenFOAM/meshes/primitiveMesh/primitiveMesh.H index 7479f52997..ddc4ed654b 100644 --- a/src/OpenFOAM/meshes/primitiveMesh/primitiveMesh.H +++ b/src/OpenFOAM/meshes/primitiveMesh/primitiveMesh.H @@ -443,8 +443,11 @@ public: const label nCells ); + //- Move constructor + primitiveMesh(primitiveMesh&&) = default; + //- Disallow default bitwise copy construction - primitiveMesh(const primitiveMesh&); + primitiveMesh(const primitiveMesh&) = delete; //- Destructor diff --git a/src/finiteVolume/fvMesh/fvBoundaryMesh/fvBoundaryMesh.H b/src/finiteVolume/fvMesh/fvBoundaryMesh/fvBoundaryMesh.H index e3b0c543dc..6983a189aa 100644 --- a/src/finiteVolume/fvMesh/fvBoundaryMesh/fvBoundaryMesh.H +++ b/src/finiteVolume/fvMesh/fvBoundaryMesh/fvBoundaryMesh.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | Website: https://openfoam.org - \\ / A nd | Copyright (C) 2011-2020 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2022 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -85,8 +85,11 @@ public: //- Construct from polyBoundaryMesh fvBoundaryMesh(const fvMesh&, const polyBoundaryMesh&); + //- Move constructor + fvBoundaryMesh(fvBoundaryMesh&&) = default; + //- Disallow default bitwise copy construction - fvBoundaryMesh(const fvBoundaryMesh&); + fvBoundaryMesh(const fvBoundaryMesh&) = delete; // Member Functions diff --git a/src/finiteVolume/fvMesh/fvMesh.C b/src/finiteVolume/fvMesh/fvMesh.C index 329aca4eef..f361ba57ac 100644 --- a/src/finiteVolume/fvMesh/fvMesh.C +++ b/src/finiteVolume/fvMesh/fvMesh.C @@ -580,6 +580,47 @@ Foam::fvMesh::fvMesh } +Foam::fvMesh::fvMesh(fvMesh&& mesh) +: + polyMesh(Foam::move(mesh)), + surfaceInterpolation(Foam::move(mesh)), + data(static_cast(*this)), + boundary_(Foam::move(mesh.boundary_)), + stitcher_(Foam::move(mesh.stitcher_)), + topoChanger_(Foam::move(mesh.topoChanger_)), + distributor_(Foam::move(mesh.distributor_)), + mover_(Foam::move(mesh.mover_)), + lduPtr_(Foam::move(mesh.lduPtr_)), + polyFacesBfPtr_(Foam::move(mesh.polyFacesBfPtr_)), + polyBFaceOffsetsPtr_(Foam::move(mesh.polyBFaceOffsetsPtr_)), + polyBFaceOffsetPatchesPtr_(Foam::move(mesh.polyBFaceOffsetPatchesPtr_)), + polyBFaceOffsetPatchFacesPtr_ + ( + Foam::move(mesh.polyBFaceOffsetPatchFacesPtr_) + ), + polyBFacePatchesPtr_(Foam::move(mesh.polyBFacePatchesPtr_)), + polyBFacePatchFacesPtr_(Foam::move(mesh.polyBFacePatchFacesPtr_)), + curTimeIndex_(mesh.curTimeIndex_), + VPtr_(Foam::move(mesh.VPtr_)), + V0Ptr_(Foam::move(mesh.V0Ptr_)), + V00Ptr_(Foam::move(mesh.V00Ptr_)), + SfSlicePtr_(Foam::move(mesh.SfSlicePtr_)), + SfPtr_(Foam::move(mesh.SfPtr_)), + magSfSlicePtr_(Foam::move(mesh.magSfSlicePtr_)), + magSfPtr_(Foam::move(mesh.magSfPtr_)), + CSlicePtr_(Foam::move(mesh.CSlicePtr_)), + CPtr_(Foam::move(mesh.CPtr_)), + CfSlicePtr_(Foam::move(mesh.CfSlicePtr_)), + CfPtr_(Foam::move(mesh.CfPtr_)), + phiPtr_(Foam::move(mesh.phiPtr_)) +{ + if (debug) + { + Pout<< FUNCTION_NAME << "Moving fvMesh" << endl; + } +} + + // * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // Foam::fvMesh::~fvMesh() @@ -590,6 +631,12 @@ Foam::fvMesh::~fvMesh() // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // +bool Foam::fvMesh::topoChanging() const +{ + return topoChanger_->dynamic(); +} + + bool Foam::fvMesh::dynamic() const { return topoChanger_->dynamic() || mover_->dynamic(); diff --git a/src/finiteVolume/fvMesh/fvMesh.H b/src/finiteVolume/fvMesh/fvMesh.H index 7f31992bcd..0fa7ed7adc 100644 --- a/src/finiteVolume/fvMesh/fvMesh.H +++ b/src/finiteVolume/fvMesh/fvMesh.H @@ -370,8 +370,11 @@ public: const bool syncPar = true ); + //- Move constructor + fvMesh(fvMesh&&); + //- Disallow default bitwise copy construction - fvMesh(const fvMesh&); + fvMesh(const fvMesh&) = delete; //- Destructor @@ -532,6 +535,9 @@ public: // Edit + //- Does the mesh topology change? + bool topoChanging() const; + //- Is this mesh dynamic? bool dynamic() const;