diff --git a/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionTwoPhaseEulerFoam/fluid/solveFluid.H b/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionTwoPhaseEulerFoam/fluid/solveFluid.H index 10d3c5bcae..d6df2d7535 100644 --- a/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionTwoPhaseEulerFoam/fluid/solveFluid.H +++ b/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionTwoPhaseEulerFoam/fluid/solveFluid.H @@ -1,6 +1,6 @@ if (finalIter) { - mesh.data::add("finalIteration", true); + mesh.data().add("finalIteration", true); } if (frozenFlow) @@ -35,5 +35,5 @@ else if (finalIter) { - mesh.data::remove("finalIteration"); + mesh.data().remove("finalIteration"); } diff --git a/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionTwoPhaseEulerFoam/solid/solveSolid.H b/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionTwoPhaseEulerFoam/solid/solveSolid.H index 791e0d6405..d046d28521 100644 --- a/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionTwoPhaseEulerFoam/solid/solveSolid.H +++ b/applications/solvers/heatTransfer/chtMultiRegionFoam/chtMultiRegionTwoPhaseEulerFoam/solid/solveSolid.H @@ -1,6 +1,6 @@ if (finalIter) { - mesh.data::add("finalIteration", true); + mesh.data().add("finalIteration", true); } { @@ -35,5 +35,5 @@ if (finalIter) if (finalIter) { - mesh.data::remove("finalIteration"); + mesh.data().remove("finalIteration"); } diff --git a/applications/solvers/heatTransfer/chtMultiRegionFoam/fluid/solveFluid.H b/applications/solvers/heatTransfer/chtMultiRegionFoam/fluid/solveFluid.H index d111ffd366..ea3a7a808b 100644 --- a/applications/solvers/heatTransfer/chtMultiRegionFoam/fluid/solveFluid.H +++ b/applications/solvers/heatTransfer/chtMultiRegionFoam/fluid/solveFluid.H @@ -1,6 +1,6 @@ if (finalIter) { - mesh.data::add("finalIteration", true); + mesh.data().add("finalIteration", true); } if (frozenFlow) @@ -36,5 +36,5 @@ else if (finalIter) { - mesh.data::remove("finalIteration"); + mesh.data().remove("finalIteration"); } diff --git a/applications/solvers/heatTransfer/chtMultiRegionFoam/solid/solveSolid.H b/applications/solvers/heatTransfer/chtMultiRegionFoam/solid/solveSolid.H index 913d20bce6..c79a486657 100644 --- a/applications/solvers/heatTransfer/chtMultiRegionFoam/solid/solveSolid.H +++ b/applications/solvers/heatTransfer/chtMultiRegionFoam/solid/solveSolid.H @@ -25,7 +25,7 @@ if (finalIter) { - mesh.data::add("finalIteration", true); + mesh.data().add("finalIteration", true); } hEqn.solve(mesh.solver(h.select(finalIter))); @@ -39,7 +39,7 @@ if (finalIter) { - mesh.data::remove("finalIteration"); + mesh.data().remove("finalIteration"); } } } diff --git a/src/OpenFOAM/fields/GeometricFields/GeometricField/GeometricField.C b/src/OpenFOAM/fields/GeometricFields/GeometricField/GeometricField.C index e2a8b0ab72..88ec19035f 100644 --- a/src/OpenFOAM/fields/GeometricFields/GeometricField/GeometricField.C +++ b/src/OpenFOAM/fields/GeometricFields/GeometricField/GeometricField.C @@ -31,7 +31,7 @@ License #include "demandDrivenData.H" #include "dictionary.H" #include "localIOdictionary.H" -#include "data.H" +#include "meshState.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -1155,7 +1155,7 @@ void Foam::GeometricField::relax() if ( - this->mesh().data::template getOrDefault + this->mesh().data().template getOrDefault ( "finalIteration", false diff --git a/src/OpenFOAM/meshes/polyMesh/polyMesh.C b/src/OpenFOAM/meshes/polyMesh/polyMesh.C index 4f203daa53..27077ae7a6 100644 --- a/src/OpenFOAM/meshes/polyMesh/polyMesh.C +++ b/src/OpenFOAM/meshes/polyMesh/polyMesh.C @@ -173,6 +173,7 @@ Foam::polyMesh::polyMesh(const IOobject& io, const bool doInit) : objectRegistry(io), primitiveMesh(), + data_(static_cast(*this)), points_ ( IOobject @@ -380,6 +381,7 @@ Foam::polyMesh::polyMesh : objectRegistry(io), primitiveMesh(), + data_(static_cast(*this)), points_ ( IOobject @@ -533,6 +535,7 @@ Foam::polyMesh::polyMesh : objectRegistry(io), primitiveMesh(), + data_(static_cast(*this)), points_ ( IOobject diff --git a/src/OpenFOAM/meshes/polyMesh/polyMesh.H b/src/OpenFOAM/meshes/polyMesh/polyMesh.H index 4ce8270ebc..de90d6792b 100644 --- a/src/OpenFOAM/meshes/polyMesh/polyMesh.H +++ b/src/OpenFOAM/meshes/polyMesh/polyMesh.H @@ -58,6 +58,7 @@ SourceFiles #include "pointZoneMesh.H" #include "faceZoneMesh.H" #include "cellZoneMesh.H" +#include "meshState.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -117,6 +118,9 @@ private: // Primitive mesh data + //- Mesh data + meshState data_; + //- Points pointIOField points_; @@ -304,6 +308,7 @@ private: labelHashSet* setPtr ) const; + public: // Public Typedefs @@ -429,6 +434,12 @@ public: // Access + //- Return a reference to the mesh data + virtual meshState& data() noexcept {return data_;} + + //- Return a const reference to the mesh data + virtual const meshState& data() const noexcept {return data_;} + //- Return raw points virtual const pointField& points() const; diff --git a/src/OpenFOAM/meshes/polyMesh/polyMeshFromShapeMesh.C b/src/OpenFOAM/meshes/polyMesh/polyMeshFromShapeMesh.C index 4f0af868b4..871713605b 100644 --- a/src/OpenFOAM/meshes/polyMesh/polyMeshFromShapeMesh.C +++ b/src/OpenFOAM/meshes/polyMesh/polyMeshFromShapeMesh.C @@ -452,6 +452,7 @@ Foam::polyMesh::polyMesh : objectRegistry(io), primitiveMesh(), + data_(static_cast(*this)), points_ ( IOobject @@ -733,6 +734,7 @@ Foam::polyMesh::polyMesh : objectRegistry(io), primitiveMesh(), + data_(static_cast(*this)), points_ ( IOobject diff --git a/src/finiteArea/faMatrices/faMatrix/faMatrixSolve.C b/src/finiteArea/faMatrices/faMatrix/faMatrixSolve.C index f718dcf652..4de12f14cb 100644 --- a/src/finiteArea/faMatrices/faMatrix/faMatrixSolve.C +++ b/src/finiteArea/faMatrices/faMatrix/faMatrixSolve.C @@ -162,7 +162,7 @@ Foam::SolverPerformance Foam::faMatrix::solve psi.correctBoundaryConditions(); - psi.mesh().setSolverPerformance(psi.name(), solverPerfVec); + psi.mesh().data().setSolverPerformance(psi.name(), solverPerfVec); return solverPerfVec; } diff --git a/src/finiteArea/faMatrices/faScalarMatrix/faScalarMatrix.C b/src/finiteArea/faMatrices/faScalarMatrix/faScalarMatrix.C index d8a5ff4c7b..f9d39a7d00 100644 --- a/src/finiteArea/faMatrices/faScalarMatrix/faScalarMatrix.C +++ b/src/finiteArea/faMatrices/faScalarMatrix/faScalarMatrix.C @@ -96,7 +96,7 @@ Foam::solverPerformance Foam::faMatrix::solve psi.correctBoundaryConditions(); - psi.mesh().setSolverPerformance(psi.name(), solverPerf); + psi.mesh().data().setSolverPerformance(psi.name(), solverPerf); return solverPerf; } diff --git a/src/finiteArea/faMesh/faMesh.C b/src/finiteArea/faMesh/faMesh.C index 9da63cb09c..da2c40492d 100644 --- a/src/finiteArea/faMesh/faMesh.C +++ b/src/finiteArea/faMesh/faMesh.C @@ -345,7 +345,6 @@ Foam::faMesh::faMesh faSchemes(mesh()), edgeInterpolation(*this), faSolution(mesh()), - data(faMesh::thisDb()), // Always NO_READ, NO_WRITE faceLabels_ ( IOobject @@ -468,7 +467,6 @@ Foam::faMesh::faMesh faSchemes(mesh(), io.readOpt()), edgeInterpolation(*this), faSolution(mesh(), io.readOpt()), - data(faMesh::thisDb()), // Always NO_READ, NO_WRITE faceLabels_ ( IOobject @@ -551,11 +549,6 @@ Foam::faMesh::faMesh mesh(), static_cast(baseMesh) ), - data - ( - faMesh::thisDb(), - static_cast(baseMesh) - ), faceLabels_ ( IOobject diff --git a/src/finiteArea/faMesh/faMesh.H b/src/finiteArea/faMesh/faMesh.H index 8cbd45231e..10ecd62e25 100644 --- a/src/finiteArea/faMesh/faMesh.H +++ b/src/finiteArea/faMesh/faMesh.H @@ -73,7 +73,6 @@ Author #include "faGlobalMeshData.H" #include "faSchemes.H" #include "faSolution.H" -#include "data.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -96,8 +95,7 @@ class faMesh public lduMesh, public faSchemes, public edgeInterpolation, // may need input from faSchemes - public faSolution, - public data + public faSolution { // Private (internal) classes/structures @@ -647,6 +645,10 @@ public: //- Return the current instance directory for faces const fileName& facesInstance() const; + const meshState& data() const noexcept { return mesh().data(); } + + meshState& data() noexcept { return const_cast(mesh()).data(); } + // Parallel diff --git a/src/finiteVolume/cfdTools/general/solutionControl/loopControl/loopControl.C b/src/finiteVolume/cfdTools/general/solutionControl/loopControl/loopControl.C index 8a19ccb166..b46d4b2cdb 100644 --- a/src/finiteVolume/cfdTools/general/solutionControl/loopControl/loopControl.C +++ b/src/finiteVolume/cfdTools/general/solutionControl/loopControl/loopControl.C @@ -112,7 +112,8 @@ bool Foam::loopControl::checkConverged() const if (!meshPtr) continue; const fvMesh& regionMesh = *meshPtr; - const dictionary& solverDict = regionMesh.solverPerformanceDict(); + const dictionary& solverDict = + regionMesh.data().solverPerformanceDict(); for (const entry& dataDictEntry : solverDict) { const word& variableName = dataDictEntry.keyword(); diff --git a/src/finiteVolume/cfdTools/general/solutionControl/pimpleControl/pimpleControl.C b/src/finiteVolume/cfdTools/general/solutionControl/pimpleControl/pimpleControl.C index 91c237ac8b..9c4a49104d 100644 --- a/src/finiteVolume/cfdTools/general/solutionControl/pimpleControl/pimpleControl.C +++ b/src/finiteVolume/cfdTools/general/solutionControl/pimpleControl/pimpleControl.C @@ -72,7 +72,7 @@ bool Foam::pimpleControl::criteriaSatisfied() bool achieved = true; bool checked = false; // safety that some checks were indeed performed - const dictionary& solverDict = mesh_.solverPerformanceDict(); + const dictionary& solverDict = mesh_.data().solverPerformanceDict(); for (const entry& solverPerfDictEntry : solverDict) { const word& fieldName = solverPerfDictEntry.keyword(); @@ -219,7 +219,7 @@ bool Foam::pimpleControl::loop() } corr_ = 0; - mesh_.data::remove("finalIteration"); + mesh_.data().remove("finalIteration"); return false; } @@ -231,7 +231,7 @@ bool Foam::pimpleControl::loop() Info<< algorithmName_ << ": converged in " << corr_ - 1 << " iterations" << endl; - mesh_.data::remove("finalIteration"); + mesh_.data().remove("finalIteration"); corr_ = 0; converged_ = false; @@ -242,7 +242,7 @@ bool Foam::pimpleControl::loop() Info<< algorithmName_ << ": iteration " << corr_ << endl; storePrevIterFields(); - mesh_.data::add("finalIteration", true); + mesh_.data().add("finalIteration", true); converged_ = true; } } @@ -250,7 +250,7 @@ bool Foam::pimpleControl::loop() { if (finalIter()) { - mesh_.data::add("finalIteration", true); + mesh_.data().add("finalIteration", true); } if (corr_ <= nCorrPIMPLE_) diff --git a/src/finiteVolume/cfdTools/general/solutionControl/simpleControl/simpleControl.C b/src/finiteVolume/cfdTools/general/solutionControl/simpleControl/simpleControl.C index 325bc79f88..b98cd2f981 100644 --- a/src/finiteVolume/cfdTools/general/solutionControl/simpleControl/simpleControl.C +++ b/src/finiteVolume/cfdTools/general/solutionControl/simpleControl/simpleControl.C @@ -56,7 +56,7 @@ bool Foam::simpleControl::criteriaSatisfied() bool achieved = true; bool checked = false; // safety that some checks were indeed performed - const dictionary& solverDict = mesh_.solverPerformanceDict(); + const dictionary& solverDict = mesh_.data().solverPerformanceDict(); for (const entry& solverPerfDictEntry : solverDict) { const word& fieldName = solverPerfDictEntry.keyword(); diff --git a/src/finiteVolume/cfdTools/general/solutionControl/solutionControl/solutionControl.C b/src/finiteVolume/cfdTools/general/solutionControl/solutionControl/solutionControl.C index 69d8234d92..d9d456b8cf 100644 --- a/src/finiteVolume/cfdTools/general/solutionControl/solutionControl/solutionControl.C +++ b/src/finiteVolume/cfdTools/general/solutionControl/solutionControl/solutionControl.C @@ -193,12 +193,12 @@ void Foam::solutionControl::setFirstIterFlag if (force || (check && corr_ <= 1 && corrNonOrtho_ == 0)) { DebugInfo<< "solutionControl: set firstIteration flag" << endl; - mesh_.data::set("firstIteration", true); + mesh_.data().set("firstIteration", true); } else { DebugInfo<< "solutionControl: remove firstIteration flag" << endl; - mesh_.data::remove("firstIteration"); + mesh_.data().remove("firstIteration"); } } diff --git a/src/finiteVolume/functionObjects/fieldSelections/solverFieldSelection/solverFieldSelection.C b/src/finiteVolume/functionObjects/fieldSelections/solverFieldSelection/solverFieldSelection.C index 0772590deb..be72d514f5 100644 --- a/src/finiteVolume/functionObjects/fieldSelections/solverFieldSelection/solverFieldSelection.C +++ b/src/finiteVolume/functionObjects/fieldSelections/solverFieldSelection/solverFieldSelection.C @@ -59,7 +59,7 @@ bool Foam::functionObjects::solverFieldSelection::updateSelection() const fvMesh& mesh = static_cast(obr_); - const dictionary& solverDict = mesh.solverPerformanceDict(); + const dictionary& solverDict = mesh.data().solverPerformanceDict(); const wordList solvedFieldNames(solverDict.sortedToc()); diff --git a/src/finiteVolume/fvMatrices/fvMatrix/fvMatrix.C b/src/finiteVolume/fvMatrices/fvMatrix/fvMatrix.C index d570187911..431553ac93 100644 --- a/src/finiteVolume/fvMatrices/fvMatrix/fvMatrix.C +++ b/src/finiteVolume/fvMatrices/fvMatrix/fvMatrix.C @@ -1257,7 +1257,7 @@ void Foam::fvMatrix::relax() { word name = psi_.select ( - psi_.mesh().data::template getOrDefault + psi_.mesh().data().template getOrDefault ("finalIteration", false) ); @@ -1534,7 +1534,7 @@ const Foam::dictionary& Foam::fvMatrix::solverDict() const ( psi_.select ( - psi_.mesh().data::template getOrDefault + psi_.mesh().data().template getOrDefault ("finalIteration", false) ) ); diff --git a/src/finiteVolume/fvMatrices/fvMatrix/fvMatrixSolve.C b/src/finiteVolume/fvMatrices/fvMatrix/fvMatrixSolve.C index b5188075f0..6522f4d0cf 100644 --- a/src/finiteVolume/fvMatrices/fvMatrix/fvMatrixSolve.C +++ b/src/finiteVolume/fvMatrices/fvMatrix/fvMatrixSolve.C @@ -241,7 +241,7 @@ Foam::SolverPerformance Foam::fvMatrix::solveSegregated psi.correctBoundaryConditions(); - psi.mesh().setSolverPerformance(psi.name(), solverPerfVec); + psi.mesh().data().setSolverPerformance(psi.name(), solverPerfVec); return solverPerfVec; } @@ -308,7 +308,7 @@ Foam::SolverPerformance Foam::fvMatrix::solveCoupled psi.correctBoundaryConditions(); - psi.mesh().setSolverPerformance(psi.name(), solverPerf); + psi.mesh().data().setSolverPerformance(psi.name(), solverPerf); return solverPerf; } diff --git a/src/finiteVolume/fvMatrices/fvScalarMatrix/fvScalarMatrix.C b/src/finiteVolume/fvMatrices/fvScalarMatrix/fvScalarMatrix.C index 591450e206..a8d87158f8 100644 --- a/src/finiteVolume/fvMatrices/fvScalarMatrix/fvScalarMatrix.C +++ b/src/finiteVolume/fvMatrices/fvScalarMatrix/fvScalarMatrix.C @@ -155,7 +155,7 @@ Foam::solverPerformance Foam::fvMatrix::fvSolver::solve psi.correctBoundaryConditions(); - psi.mesh().setSolverPerformance(psi.name(), solverPerf); + psi.mesh().data().setSolverPerformance(psi.name(), solverPerf); return solverPerf; } @@ -317,7 +317,11 @@ Foam::solverPerformance Foam::fvMatrix::solveSegregated ); localPsi.correctBoundaryConditions(); - localPsi.mesh().setSolverPerformance(localPsi.name(), solverPerf); + localPsi.mesh().data().setSolverPerformance + ( + localPsi.name(), + solverPerf + ); } return solverPerf; diff --git a/src/finiteVolume/fvMesh/fvMesh.C b/src/finiteVolume/fvMesh/fvMesh.C index 6425e3516c..6e175c400a 100644 --- a/src/finiteVolume/fvMesh/fvMesh.C +++ b/src/finiteVolume/fvMesh/fvMesh.C @@ -246,7 +246,6 @@ Foam::fvMesh::fvMesh(const IOobject& io, const bool doInit) fvSchemes(static_cast(*this)), surfaceInterpolation(*this), fvSolution(static_cast(*this)), - data(static_cast(*this)), boundary_(*this, boundaryMesh()), lduPtr_(nullptr), curTimeIndex_(time().timeIndex()), @@ -384,7 +383,6 @@ Foam::fvMesh::fvMesh fvSchemes(static_cast(*this)), surfaceInterpolation(*this), fvSolution(static_cast(*this)), - data(static_cast(*this)), boundary_(*this), lduPtr_(nullptr), curTimeIndex_(time().timeIndex()), @@ -421,7 +419,6 @@ Foam::fvMesh::fvMesh fvSchemes(static_cast(*this)), surfaceInterpolation(*this), fvSolution(static_cast(*this)), - data(static_cast(*this)), boundary_(*this), lduPtr_(nullptr), curTimeIndex_(time().timeIndex()), @@ -496,11 +493,6 @@ Foam::fvMesh::fvMesh static_cast(*this), static_cast(baseMesh) ), - data - ( - static_cast(*this), - static_cast(baseMesh) - ), boundary_(*this), lduPtr_(nullptr), curTimeIndex_(time().timeIndex()), @@ -514,6 +506,9 @@ Foam::fvMesh::fvMesh phiPtr_(nullptr) { DebugInFunction << "Constructing fvMesh as copy and primitives" << endl; + + // Reset mesh data + data().reset(baseMesh.data()); } @@ -546,11 +541,6 @@ Foam::fvMesh::fvMesh static_cast(*this), static_cast(baseMesh) ), - data - ( - static_cast(*this), - static_cast(baseMesh) - ), boundary_(*this), lduPtr_(nullptr), curTimeIndex_(time().timeIndex()), @@ -564,6 +554,9 @@ Foam::fvMesh::fvMesh phiPtr_(nullptr) { DebugInFunction << "Constructing fvMesh as copy and primitives" << endl; + + // Reset mesh data + data().reset(baseMesh.data()); } diff --git a/src/finiteVolume/fvMesh/fvMesh.H b/src/finiteVolume/fvMesh/fvMesh.H index 5d7adc7abe..258401694f 100644 --- a/src/finiteVolume/fvMesh/fvMesh.H +++ b/src/finiteVolume/fvMesh/fvMesh.H @@ -57,7 +57,6 @@ SourceFiles #include "surfaceInterpolation.H" #include "fvSchemes.H" #include "fvSolution.H" -#include "data.H" #include "volFieldsFwd.H" #include "surfaceFieldsFwd.H" #include "pointFieldsFwd.H" @@ -87,8 +86,7 @@ class fvMesh public lduMesh, public fvSchemes, public surfaceInterpolation, // needs input from fvSchemes - public fvSolution, - public data + public fvSolution { protected: diff --git a/src/functionObjects/utilities/runTimeControl/runTimeCondition/equationInitialResidualCondition/equationInitialResidualCondition.C b/src/functionObjects/utilities/runTimeControl/runTimeCondition/equationInitialResidualCondition/equationInitialResidualCondition.C index f1f6aa6f15..6df577ab9e 100644 --- a/src/functionObjects/utilities/runTimeControl/runTimeCondition/equationInitialResidualCondition/equationInitialResidualCondition.C +++ b/src/functionObjects/utilities/runTimeControl/runTimeCondition/equationInitialResidualCondition/equationInitialResidualCondition.C @@ -125,7 +125,7 @@ equationInitialResidualCondition::apply() } const fvMesh& mesh = refCast(obr_); - const dictionary& solverDict = mesh.solverPerformanceDict(); + const dictionary& solverDict = mesh.data().solverPerformanceDict(); const auto& selection = fieldSelection_.selection(); List result(selection.size(), -VGREAT); diff --git a/src/functionObjects/utilities/runTimeControl/runTimeCondition/equationMaxIterCondition/equationMaxIterCondition.C b/src/functionObjects/utilities/runTimeControl/runTimeCondition/equationMaxIterCondition/equationMaxIterCondition.C index 33e2350910..756e2552b1 100644 --- a/src/functionObjects/utilities/runTimeControl/runTimeCondition/equationMaxIterCondition/equationMaxIterCondition.C +++ b/src/functionObjects/utilities/runTimeControl/runTimeCondition/equationMaxIterCondition/equationMaxIterCondition.C @@ -97,7 +97,7 @@ bool Foam::functionObjects::runTimeControls::equationMaxIterCondition::apply() } const fvMesh& mesh = refCast(obr_); - const dictionary& solverDict = mesh.solverPerformanceDict(); + const dictionary& solverDict = mesh.data().solverPerformanceDict(); List