diff --git a/applications/utilities/mesh/manipulation/moveMesh/moveMesh.C b/applications/utilities/mesh/manipulation/moveMesh/moveMesh.C index 34b7d0744b..56c9539a31 100644 --- a/applications/utilities/mesh/manipulation/moveMesh/moveMesh.C +++ b/applications/utilities/mesh/manipulation/moveMesh/moveMesh.C @@ -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 @@ -55,7 +55,8 @@ int main(int argc, char *argv[]) ) ); - autoPtr motionPtr = motionSolver::New(mesh, dynamicMeshDict); + autoPtr motionPtr = + motionSolver::New("motionSolver", mesh, dynamicMeshDict); while (runTime.loop()) { diff --git a/src/OpenFOAM/containers/Dictionaries/PtrDictionary/PtrDictionary.C b/src/OpenFOAM/containers/Dictionaries/PtrDictionary/PtrDictionary.C index 1a8153fe34..b6d3a26612 100644 --- a/src/OpenFOAM/containers/Dictionaries/PtrDictionary/PtrDictionary.C +++ b/src/OpenFOAM/containers/Dictionaries/PtrDictionary/PtrDictionary.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | Website: https://openfoam.org - \\ / A nd | Copyright (C) 2011-2019 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2022 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -63,6 +63,4 @@ Foam::PtrDictionary::PtrDictionary(Istream& is) {} -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - // ************************************************************************* // diff --git a/src/dynamicMesh/motionSolvers/componentDisplacement/componentDisplacementMotionSolver.C b/src/dynamicMesh/motionSolvers/componentDisplacement/componentDisplacementMotionSolver.C index 002695f58e..adb5b10865 100644 --- a/src/dynamicMesh/motionSolvers/componentDisplacement/componentDisplacementMotionSolver.C +++ b/src/dynamicMesh/motionSolvers/componentDisplacement/componentDisplacementMotionSolver.C @@ -68,12 +68,13 @@ Foam::direction Foam::componentDisplacementMotionSolver::cmpt Foam::componentDisplacementMotionSolver::componentDisplacementMotionSolver ( + const word& name, const polyMesh& mesh, const dictionary& dict, const word& type ) : - motionSolver(mesh, dict, type), + motionSolver(name, mesh, dict, type), cmptName_(coeffDict().lookup("component")), cmpt_(cmpt(cmptName_)), points0_ diff --git a/src/dynamicMesh/motionSolvers/componentDisplacement/componentDisplacementMotionSolver.H b/src/dynamicMesh/motionSolvers/componentDisplacement/componentDisplacementMotionSolver.H index 651d20c875..d289d4d3cd 100644 --- a/src/dynamicMesh/motionSolvers/componentDisplacement/componentDisplacementMotionSolver.H +++ b/src/dynamicMesh/motionSolvers/componentDisplacement/componentDisplacementMotionSolver.H @@ -92,6 +92,7 @@ public: //- Construct from polyMesh and dictionary and type componentDisplacementMotionSolver ( + const word& name, const polyMesh&, const dictionary&, const word& type diff --git a/src/dynamicMesh/motionSolvers/componentVelocity/componentVelocityMotionSolver.C b/src/dynamicMesh/motionSolvers/componentVelocity/componentVelocityMotionSolver.C index f28c3f790f..e999d84df6 100644 --- a/src/dynamicMesh/motionSolvers/componentVelocity/componentVelocityMotionSolver.C +++ b/src/dynamicMesh/motionSolvers/componentVelocity/componentVelocityMotionSolver.C @@ -68,12 +68,13 @@ Foam::direction Foam::componentVelocityMotionSolver::cmpt Foam::componentVelocityMotionSolver::componentVelocityMotionSolver ( + const word& name, const polyMesh& mesh, const dictionary& dict, const word& type ) : - motionSolver(mesh, dict, type), + motionSolver(name, mesh, dict, type), cmptName_(coeffDict().lookup("component")), cmpt_(cmpt(cmptName_)), pointMotionU_ diff --git a/src/dynamicMesh/motionSolvers/componentVelocity/componentVelocityMotionSolver.H b/src/dynamicMesh/motionSolvers/componentVelocity/componentVelocityMotionSolver.H index 3557252005..b5f74a013a 100644 --- a/src/dynamicMesh/motionSolvers/componentVelocity/componentVelocityMotionSolver.H +++ b/src/dynamicMesh/motionSolvers/componentVelocity/componentVelocityMotionSolver.H @@ -89,6 +89,7 @@ public: //- Construct from mesh and dictionary componentVelocityMotionSolver ( + const word& name, const polyMesh&, const dictionary&, const word& type diff --git a/src/dynamicMesh/motionSolvers/displacement/displacement/displacementMotionSolver.C b/src/dynamicMesh/motionSolvers/displacement/displacement/displacementMotionSolver.C index 89df5a0e5b..3941b41853 100644 --- a/src/dynamicMesh/motionSolvers/displacement/displacement/displacementMotionSolver.C +++ b/src/dynamicMesh/motionSolvers/displacement/displacement/displacementMotionSolver.C @@ -37,12 +37,13 @@ namespace Foam Foam::displacementMotionSolver::displacementMotionSolver ( + const word& name, const polyMesh& mesh, const dictionary& dict, const word& type ) : - points0MotionSolver(mesh, dict, type), + points0MotionSolver(name, mesh, dict, type), pointDisplacement_ ( IOobject diff --git a/src/dynamicMesh/motionSolvers/displacement/displacement/displacementMotionSolver.H b/src/dynamicMesh/motionSolvers/displacement/displacement/displacementMotionSolver.H index ad9a45f6e9..4c60f8f97f 100644 --- a/src/dynamicMesh/motionSolvers/displacement/displacement/displacementMotionSolver.H +++ b/src/dynamicMesh/motionSolvers/displacement/displacement/displacementMotionSolver.H @@ -72,6 +72,7 @@ public: //- Construct from mesh and dictionary displacementMotionSolver ( + const word& name, const polyMesh&, const dictionary&, const word& type diff --git a/src/dynamicMesh/motionSolvers/displacement/layeredSolver/displacementLayeredMotionMotionSolver.C b/src/dynamicMesh/motionSolvers/displacement/layeredSolver/displacementLayeredMotionMotionSolver.C index 15dd37e245..345168a1de 100644 --- a/src/dynamicMesh/motionSolvers/displacement/layeredSolver/displacementLayeredMotionMotionSolver.C +++ b/src/dynamicMesh/motionSolvers/displacement/layeredSolver/displacementLayeredMotionMotionSolver.C @@ -490,11 +490,12 @@ void Foam::displacementLayeredMotionMotionSolver::cellZoneSolve Foam::displacementLayeredMotionMotionSolver:: displacementLayeredMotionMotionSolver ( + const word& name, const polyMesh& mesh, const dictionary& dict ) : - displacementMotionSolver(mesh, dict, typeName) + displacementMotionSolver(name, mesh, dict, typeName) {} diff --git a/src/dynamicMesh/motionSolvers/displacement/layeredSolver/displacementLayeredMotionMotionSolver.H b/src/dynamicMesh/motionSolvers/displacement/layeredSolver/displacementLayeredMotionMotionSolver.H index 314902cde9..c98e49c7c3 100644 --- a/src/dynamicMesh/motionSolvers/displacement/layeredSolver/displacementLayeredMotionMotionSolver.H +++ b/src/dynamicMesh/motionSolvers/displacement/layeredSolver/displacementLayeredMotionMotionSolver.H @@ -122,6 +122,7 @@ public: //- Construct from polyMesh and dictionary displacementLayeredMotionMotionSolver ( + const word& name, const polyMesh&, const dictionary& ); diff --git a/src/dynamicMesh/motionSolvers/displacement/linearSolver/displacementLinearMotionMotionSolver.C b/src/dynamicMesh/motionSolvers/displacement/linearSolver/displacementLinearMotionMotionSolver.C index d6577f8bd8..04487cc854 100644 --- a/src/dynamicMesh/motionSolvers/displacement/linearSolver/displacementLinearMotionMotionSolver.C +++ b/src/dynamicMesh/motionSolvers/displacement/linearSolver/displacementLinearMotionMotionSolver.C @@ -46,11 +46,12 @@ namespace Foam Foam::displacementLinearMotionMotionSolver:: displacementLinearMotionMotionSolver ( + const word& name, const polyMesh& mesh, const dictionary& dict ) : - points0MotionSolver(mesh, dict, typeName), + points0MotionSolver(name, mesh, dict, typeName), axis_(normalised(vector(coeffDict().lookup("axis")))), xFixed_(coeffDict().lookup("xFixed")), xMoving_(coeffDict().lookup("xMoving")), diff --git a/src/dynamicMesh/motionSolvers/displacement/linearSolver/displacementLinearMotionMotionSolver.H b/src/dynamicMesh/motionSolvers/displacement/linearSolver/displacementLinearMotionMotionSolver.H index 8ed6f30004..bb2184d77b 100644 --- a/src/dynamicMesh/motionSolvers/displacement/linearSolver/displacementLinearMotionMotionSolver.H +++ b/src/dynamicMesh/motionSolvers/displacement/linearSolver/displacementLinearMotionMotionSolver.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | Website: https://openfoam.org - \\ / A nd | Copyright (C) 2018-2021 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2018-2022 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -101,6 +101,7 @@ public: //- Construct from polyMesh and dictionary displacementLinearMotionMotionSolver ( + const word& name, const polyMesh&, const dictionary& ); diff --git a/src/dynamicMesh/motionSolvers/displacement/points0/points0MotionSolver.C b/src/dynamicMesh/motionSolvers/displacement/points0/points0MotionSolver.C index 7aaaf2856d..7b589db463 100644 --- a/src/dynamicMesh/motionSolvers/displacement/points0/points0MotionSolver.C +++ b/src/dynamicMesh/motionSolvers/displacement/points0/points0MotionSolver.C @@ -110,12 +110,13 @@ Foam::pointVectorField Foam::points0MotionSolver::readPoints0 Foam::points0MotionSolver::points0MotionSolver ( + const word& name, const polyMesh& mesh, const dictionary& dict, const word& type ) : - motionSolver(mesh, dict, type), + motionSolver(name, mesh, dict, type), points0_(readPoints0(mesh)) { if (points0_.size() != mesh.nPoints()) diff --git a/src/dynamicMesh/motionSolvers/displacement/points0/points0MotionSolver.H b/src/dynamicMesh/motionSolvers/displacement/points0/points0MotionSolver.H index 53fe73bba7..fa12bb6011 100644 --- a/src/dynamicMesh/motionSolvers/displacement/points0/points0MotionSolver.H +++ b/src/dynamicMesh/motionSolvers/displacement/points0/points0MotionSolver.H @@ -73,6 +73,7 @@ public: //- Construct from mesh and dictionary points0MotionSolver ( + const word& name, const polyMesh&, const dictionary&, const word& type diff --git a/src/dynamicMesh/motionSolvers/displacement/solidBody/interpolatingSolidBodyMotionSolver/interpolatingSolidBodyMotionSolver.C b/src/dynamicMesh/motionSolvers/displacement/solidBody/interpolatingSolidBodyMotionSolver/interpolatingSolidBodyMotionSolver.C index 8e8c7fc34c..56a0e889ed 100644 --- a/src/dynamicMesh/motionSolvers/displacement/solidBody/interpolatingSolidBodyMotionSolver/interpolatingSolidBodyMotionSolver.C +++ b/src/dynamicMesh/motionSolvers/displacement/solidBody/interpolatingSolidBodyMotionSolver/interpolatingSolidBodyMotionSolver.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | Website: https://openfoam.org - \\ / A nd | Copyright (C) 2018-2019 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2018-2022 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -47,11 +47,12 @@ namespace Foam Foam::interpolatingSolidBodyMotionSolver::interpolatingSolidBodyMotionSolver ( + const word& name, const polyMesh& mesh, const dictionary& dict ) : - points0MotionSolver(mesh, dict, typeName), + points0MotionSolver(name, mesh, dict, typeName), SBMFPtr_(solidBodyMotionFunction::New(coeffDict(), mesh.time())), patches_(wordReList(coeffDict().lookup("patches"))), patchSet_(mesh.boundaryMesh().patchSet(patches_)), diff --git a/src/dynamicMesh/motionSolvers/displacement/solidBody/interpolatingSolidBodyMotionSolver/interpolatingSolidBodyMotionSolver.H b/src/dynamicMesh/motionSolvers/displacement/solidBody/interpolatingSolidBodyMotionSolver/interpolatingSolidBodyMotionSolver.H index 0ebaee6296..30cdfa1fd0 100644 --- a/src/dynamicMesh/motionSolvers/displacement/solidBody/interpolatingSolidBodyMotionSolver/interpolatingSolidBodyMotionSolver.H +++ b/src/dynamicMesh/motionSolvers/displacement/solidBody/interpolatingSolidBodyMotionSolver/interpolatingSolidBodyMotionSolver.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | Website: https://openfoam.org - \\ / A nd | Copyright (C) 2018-2020 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2018-2022 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -87,6 +87,7 @@ public: //- Construct from polyMesh and dictionary interpolatingSolidBodyMotionSolver ( + const word& name, const polyMesh&, const dictionary& dict ); diff --git a/src/dynamicMesh/motionSolvers/displacement/solidBody/multiSolidBodyMotionSolver/multiSolidBodyMotionSolver.C b/src/dynamicMesh/motionSolvers/displacement/solidBody/multiSolidBodyMotionSolver/multiSolidBodyMotionSolver.C index 9e96e5535a..5becf1cf5f 100644 --- a/src/dynamicMesh/motionSolvers/displacement/solidBody/multiSolidBodyMotionSolver/multiSolidBodyMotionSolver.C +++ b/src/dynamicMesh/motionSolvers/displacement/solidBody/multiSolidBodyMotionSolver/multiSolidBodyMotionSolver.C @@ -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 @@ -48,11 +48,12 @@ namespace Foam Foam::multiSolidBodyMotionSolver::multiSolidBodyMotionSolver ( + const word& name, const polyMesh& mesh, const dictionary& dict ) : - points0MotionSolver(mesh, dict, typeName) + points0MotionSolver(name, mesh, dict, typeName) { zoneIDs_.setSize(coeffDict().size()); SBMFs_.setSize(coeffDict().size()); diff --git a/src/dynamicMesh/motionSolvers/displacement/solidBody/multiSolidBodyMotionSolver/multiSolidBodyMotionSolver.H b/src/dynamicMesh/motionSolvers/displacement/solidBody/multiSolidBodyMotionSolver/multiSolidBodyMotionSolver.H index 2fc3573a84..2c98db5418 100644 --- a/src/dynamicMesh/motionSolvers/displacement/solidBody/multiSolidBodyMotionSolver/multiSolidBodyMotionSolver.H +++ b/src/dynamicMesh/motionSolvers/displacement/solidBody/multiSolidBodyMotionSolver/multiSolidBodyMotionSolver.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 @@ -75,6 +75,7 @@ public: //- Construct from mesh and dictionary multiSolidBodyMotionSolver ( + const word& name, const polyMesh&, const dictionary& ); diff --git a/src/dynamicMesh/motionSolvers/displacement/solidBody/solidBodyMotionSolver/solidBodyMotionSolver.C b/src/dynamicMesh/motionSolvers/displacement/solidBody/solidBodyMotionSolver/solidBodyMotionSolver.C index d1b4361fc9..76d0d8d596 100644 --- a/src/dynamicMesh/motionSolvers/displacement/solidBody/solidBodyMotionSolver/solidBodyMotionSolver.C +++ b/src/dynamicMesh/motionSolvers/displacement/solidBody/solidBodyMotionSolver/solidBodyMotionSolver.C @@ -50,11 +50,12 @@ namespace Foam Foam::solidBodyMotionSolver::solidBodyMotionSolver ( + const word& name, const polyMesh& mesh, const dictionary& dict ) : - points0MotionSolver(mesh, dict, typeName), + points0MotionSolver(name, mesh, dict, typeName), SBMFPtr_(solidBodyMotionFunction::New(coeffDict(), mesh.time())), pointIDs_(), moveAllCells_(false), diff --git a/src/dynamicMesh/motionSolvers/displacement/solidBody/solidBodyMotionSolver/solidBodyMotionSolver.H b/src/dynamicMesh/motionSolvers/displacement/solidBody/solidBodyMotionSolver/solidBodyMotionSolver.H index 02b2e7b7b3..bb45a7ae60 100644 --- a/src/dynamicMesh/motionSolvers/displacement/solidBody/solidBodyMotionSolver/solidBodyMotionSolver.H +++ b/src/dynamicMesh/motionSolvers/displacement/solidBody/solidBodyMotionSolver/solidBodyMotionSolver.H @@ -78,6 +78,7 @@ public: //- Construct from mesh and dictionary solidBodyMotionSolver ( + const word& name, const polyMesh&, const dictionary& ); diff --git a/src/dynamicMesh/motionSolvers/motionSolver/motionSolver.C b/src/dynamicMesh/motionSolvers/motionSolver/motionSolver.C index ec358cb2b9..0298ab8dc1 100644 --- a/src/dynamicMesh/motionSolvers/motionSolver/motionSolver.C +++ b/src/dynamicMesh/motionSolvers/motionSolver/motionSolver.C @@ -41,11 +41,13 @@ namespace Foam Foam::motionSolver::motionSolver ( + const word& name, const polyMesh& mesh, const dictionary& dict, const word& type ) : + name_(name), mesh_(mesh), coeffDict_(dict.optionalSubDict(type + "Coeffs")) {} @@ -62,66 +64,43 @@ Foam::autoPtr Foam::motionSolver::clone() const Foam::autoPtr Foam::motionSolver::New ( + const word& name, const polyMesh& mesh, const dictionary& solverDict ) { - if (solverDict.found("motionSolvers")) + const word solverTypeName = solverDict.lookup("motionSolver"); + + Info<< "Selecting motion solver: " << solverTypeName << endl; + + libs.open + ( + solverDict, + "motionSolverLibs", + dictionaryConstructorTablePtr_ + ); + + if (!dictionaryConstructorTablePtr_) { - return autoPtr(new motionSolverList(mesh, solverDict)); + FatalErrorInFunction + << "solver table is empty" + << exit(FatalError); } - else + + dictionaryConstructorTable::iterator cstrIter = + dictionaryConstructorTablePtr_->find(solverTypeName); + + if (cstrIter == dictionaryConstructorTablePtr_->end()) { - const word solverTypeName = solverDict.lookup("motionSolver"); - - Info<< "Selecting motion solver: " << solverTypeName << endl; - - libs.open - ( - solverDict, - "motionSolverLibs", - dictionaryConstructorTablePtr_ - ); - - if (!dictionaryConstructorTablePtr_) - { - FatalErrorInFunction - << "solver table is empty" - << exit(FatalError); - } - - dictionaryConstructorTable::iterator cstrIter = - dictionaryConstructorTablePtr_->find(solverTypeName); - - if (cstrIter == dictionaryConstructorTablePtr_->end()) - { - FatalErrorInFunction - << "Unknown solver type " - << solverTypeName << nl << nl - << "Valid solver types are:" << endl - << dictionaryConstructorTablePtr_->sortedToc() - << exit(FatalError); - } - - return autoPtr(cstrIter()(mesh, solverDict)); + FatalErrorInFunction + << "Unknown solver type " + << solverTypeName << nl << nl + << "Valid solver types are:" << endl + << dictionaryConstructorTablePtr_->sortedToc() + << exit(FatalError); } -} - -Foam::motionSolver::iNew::iNew(const polyMesh& mesh) -: - mesh_(mesh) -{} - - -Foam::autoPtr Foam::motionSolver::iNew::operator() -( - Istream& is -) const -{ - dictionaryEntry dict(dictionary::null, is); - - return motionSolver::New(mesh_, dict); + return autoPtr(cstrIter()(name, mesh, solverDict)); } diff --git a/src/dynamicMesh/motionSolvers/motionSolver/motionSolver.H b/src/dynamicMesh/motionSolvers/motionSolver/motionSolver.H index d74b43e710..96b76d91ac 100644 --- a/src/dynamicMesh/motionSolvers/motionSolver/motionSolver.H +++ b/src/dynamicMesh/motionSolvers/motionSolver/motionSolver.H @@ -58,6 +58,9 @@ class motionSolver { // Private Data + //- Name of coordinate system + word name_; + //- Reference to mesh const polyMesh& mesh_; @@ -78,27 +81,24 @@ public: autoPtr, motionSolver, dictionary, - (const polyMesh& mesh, const dictionary& dict), - (mesh, dict) + ( + const word& name, + const polyMesh& mesh, + const dictionary& dict + ), + (name, mesh, dict) ); // Selectors //- Select constructed from polyMesh and dictionary - static autoPtr New(const polyMesh&, const dictionary&); - - //- Class used for the construction of PtrLists of motionSolvers - class iNew - { - const polyMesh& mesh_; - - public: - - iNew(const polyMesh& mesh); - - autoPtr operator()(Istream& is) const; - }; + static autoPtr New + ( + const word& name, + const polyMesh&, + const dictionary& + ); // Constructors @@ -106,6 +106,7 @@ public: //- Construct from polyMesh and dictionary and type. motionSolver ( + const word& name, const polyMesh& mesh, const dictionary&, const word& type @@ -121,6 +122,18 @@ public: // Member Functions + //- Return name + const word& name() const + { + return name_; + } + + //- Return keyword + const word& keyword() const + { + return name(); + } + //- Return reference to mesh const polyMesh& mesh() const { diff --git a/src/dynamicMesh/motionSolvers/motionSolverList/motionSolverList.C b/src/dynamicMesh/motionSolvers/motionSolverList/motionSolverList.C index 7801e286df..5eb4fe08c5 100644 --- a/src/dynamicMesh/motionSolvers/motionSolverList/motionSolverList.C +++ b/src/dynamicMesh/motionSolvers/motionSolverList/motionSolverList.C @@ -45,17 +45,30 @@ namespace Foam Foam::motionSolverList::motionSolverList ( + const word& name, const polyMesh& mesh, const dictionary& dict ) : - motionSolver(mesh, dict, typeName), - motionSolvers_ - ( - dict.lookup("solvers"), - motionSolver::iNew(mesh) - ) -{} + motionSolver(name, mesh, dict, typeName) +{ + const dictionary& solversDict = dict.subDict("solvers"); + + forAllConstIter(dictionary, solversDict, iter) + { + if (iter().isDict()) + { + const word& name = iter().keyword(); + const dictionary& dict = iter().dict(); + + motionSolvers_.insert + ( + name, + motionSolver::New(name, mesh, dict).ptr() + ); + } + } +} // * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // @@ -71,11 +84,11 @@ Foam::tmp Foam::motionSolverList::curPoints() const if (motionSolvers_.size()) { // Accumulated displacement - pointField disp(motionSolvers_[0].curPoints() - mesh().points()); + pointField disp(mesh().nPoints(), Zero); - for (label i = 1; i < motionSolvers_.size(); i++) + forAllConstIter(PtrDictionary, motionSolvers_, iter) { - disp += motionSolvers_[i].curPoints() - mesh().points(); + disp += iter().curPoints() - mesh().points(); } return mesh().points() + disp; @@ -89,27 +102,27 @@ Foam::tmp Foam::motionSolverList::curPoints() const void Foam::motionSolverList::solve() { - forAll(motionSolvers_, i) + forAllIter(PtrDictionary, motionSolvers_, iter) { - motionSolvers_[i].solve(); + iter().solve(); } } void Foam::motionSolverList::topoChange(const polyTopoChangeMap& map) { - forAll(motionSolvers_, i) + forAllIter(PtrDictionary, motionSolvers_, iter) { - motionSolvers_[i].topoChange(map); + iter().topoChange(map); } } void Foam::motionSolverList::mapMesh(const polyMeshMap& map) { - forAll(motionSolvers_, i) + forAllIter(PtrDictionary, motionSolvers_, iter) { - motionSolvers_[i].mapMesh(map); + iter().mapMesh(map); } } @@ -119,18 +132,18 @@ void Foam::motionSolverList::distribute const polyDistributionMap& map ) { - forAll(motionSolvers_, i) + forAllIter(PtrDictionary, motionSolvers_, iter) { - motionSolvers_[i].distribute(map); + iter().distribute(map); } } void Foam::motionSolverList::movePoints(const pointField& points) { - forAll(motionSolvers_, i) + forAllIter(PtrDictionary, motionSolvers_, iter) { - motionSolvers_[i].movePoints(points); + iter().movePoints(points); } } diff --git a/src/dynamicMesh/motionSolvers/motionSolverList/motionSolverList.H b/src/dynamicMesh/motionSolvers/motionSolverList/motionSolverList.H index 2c9cf0e139..047af08001 100644 --- a/src/dynamicMesh/motionSolvers/motionSolverList/motionSolverList.H +++ b/src/dynamicMesh/motionSolvers/motionSolverList/motionSolverList.H @@ -40,6 +40,7 @@ SourceFiles #define motionSolverList_H #include "motionSolver.H" +#include "PtrDictionary.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -56,7 +57,7 @@ class motionSolverList { // Private Data - PtrList motionSolvers_; + PtrDictionary motionSolvers_; public: @@ -68,7 +69,12 @@ public: // Constructors //- Construct from mesh and dictionary - motionSolverList(const polyMesh&, const dictionary&); + motionSolverList + ( + const word& name, + const polyMesh&, + const dictionary& + ); //- Disallow default bitwise copy construction motionSolverList(const motionSolverList&) = delete; diff --git a/src/dynamicMesh/motionSolvers/velocity/velocityMotionSolver.C b/src/dynamicMesh/motionSolvers/velocity/velocityMotionSolver.C index 0eebbd71e1..70381a29c0 100644 --- a/src/dynamicMesh/motionSolvers/velocity/velocityMotionSolver.C +++ b/src/dynamicMesh/motionSolvers/velocity/velocityMotionSolver.C @@ -38,12 +38,13 @@ namespace Foam Foam::velocityMotionSolver::velocityMotionSolver ( + const word& name, const polyMesh& mesh, const dictionary& dict, const word& type ) : - motionSolver(mesh, dict, type), + motionSolver(name, mesh, dict, type), pointMotionU_ ( IOobject diff --git a/src/dynamicMesh/motionSolvers/velocity/velocityMotionSolver.H b/src/dynamicMesh/motionSolvers/velocity/velocityMotionSolver.H index ebb230f6c8..1583e34583 100644 --- a/src/dynamicMesh/motionSolvers/velocity/velocityMotionSolver.H +++ b/src/dynamicMesh/motionSolvers/velocity/velocityMotionSolver.H @@ -75,6 +75,7 @@ public: //- Construct from mesh and dictionary velocityMotionSolver ( + const word& name, const polyMesh&, const dictionary&, const word& type diff --git a/src/fvMeshMovers/motionSolver/fvMeshMoversMotionSolver.C b/src/fvMeshMovers/motionSolver/fvMeshMoversMotionSolver.C index 51e90b913f..d04604ca73 100644 --- a/src/fvMeshMovers/motionSolver/fvMeshMoversMotionSolver.C +++ b/src/fvMeshMovers/motionSolver/fvMeshMoversMotionSolver.C @@ -44,7 +44,7 @@ namespace fvMeshMovers Foam::fvMeshMovers::motionSolver::motionSolver(fvMesh& mesh) : fvMeshMover(mesh), - motionPtr_(Foam::motionSolver::New(mesh, dict())), + motionPtr_(Foam::motionSolver::New("motionSolver", mesh, dict())), velocityMotionCorrection_(mesh, dict()) {} diff --git a/src/fvMotionSolver/fvMotionSolvers/componentDisplacement/componentLaplacian/displacementComponentLaplacianFvMotionSolver.C b/src/fvMotionSolver/fvMotionSolvers/componentDisplacement/componentLaplacian/displacementComponentLaplacianFvMotionSolver.C index ec45b657c2..0c3982cc52 100644 --- a/src/fvMotionSolver/fvMotionSolvers/componentDisplacement/componentLaplacian/displacementComponentLaplacianFvMotionSolver.C +++ b/src/fvMotionSolver/fvMotionSolvers/componentDisplacement/componentLaplacian/displacementComponentLaplacianFvMotionSolver.C @@ -50,11 +50,12 @@ namespace Foam Foam::displacementComponentLaplacianFvMotionSolver:: displacementComponentLaplacianFvMotionSolver ( + const word& name, const polyMesh& mesh, const dictionary& dict ) : - componentDisplacementMotionSolver(mesh, dict, type()), + componentDisplacementMotionSolver(name, mesh, dict, type()), fvMotionSolver(mesh), cellDisplacement_ ( diff --git a/src/fvMotionSolver/fvMotionSolvers/componentDisplacement/componentLaplacian/displacementComponentLaplacianFvMotionSolver.H b/src/fvMotionSolver/fvMotionSolvers/componentDisplacement/componentLaplacian/displacementComponentLaplacianFvMotionSolver.H index 07b1825de1..fb8c40945f 100644 --- a/src/fvMotionSolver/fvMotionSolvers/componentDisplacement/componentLaplacian/displacementComponentLaplacianFvMotionSolver.H +++ b/src/fvMotionSolver/fvMotionSolvers/componentDisplacement/componentLaplacian/displacementComponentLaplacianFvMotionSolver.H @@ -90,6 +90,7 @@ public: //- Construct from polyMesh and dictionary displacementComponentLaplacianFvMotionSolver ( + const word& name, const polyMesh&, const dictionary& ); diff --git a/src/fvMotionSolver/fvMotionSolvers/componentVelocity/componentLaplacian/velocityComponentLaplacianFvMotionSolver.C b/src/fvMotionSolver/fvMotionSolvers/componentVelocity/componentLaplacian/velocityComponentLaplacianFvMotionSolver.C index ce3bb34352..e35aabc387 100644 --- a/src/fvMotionSolver/fvMotionSolvers/componentVelocity/componentLaplacian/velocityComponentLaplacianFvMotionSolver.C +++ b/src/fvMotionSolver/fvMotionSolvers/componentVelocity/componentLaplacian/velocityComponentLaplacianFvMotionSolver.C @@ -49,11 +49,12 @@ namespace Foam Foam::velocityComponentLaplacianFvMotionSolver:: velocityComponentLaplacianFvMotionSolver ( + const word& name, const polyMesh& mesh, const dictionary& dict ) : - componentVelocityMotionSolver(mesh, dict, typeName), + componentVelocityMotionSolver(name, mesh, dict, typeName), fvMotionSolver(mesh), cellMotionU_ ( diff --git a/src/fvMotionSolver/fvMotionSolvers/componentVelocity/componentLaplacian/velocityComponentLaplacianFvMotionSolver.H b/src/fvMotionSolver/fvMotionSolvers/componentVelocity/componentLaplacian/velocityComponentLaplacianFvMotionSolver.H index 1986e9712f..3b26650f3b 100644 --- a/src/fvMotionSolver/fvMotionSolvers/componentVelocity/componentLaplacian/velocityComponentLaplacianFvMotionSolver.H +++ b/src/fvMotionSolver/fvMotionSolvers/componentVelocity/componentLaplacian/velocityComponentLaplacianFvMotionSolver.H @@ -76,6 +76,7 @@ public: //- Construct from polyMesh and dictionary velocityComponentLaplacianFvMotionSolver ( + const word& name, const polyMesh&, const dictionary& ); diff --git a/src/fvMotionSolver/fvMotionSolvers/displacement/SBRStress/displacementSBRStressFvMotionSolver.C b/src/fvMotionSolver/fvMotionSolvers/displacement/SBRStress/displacementSBRStressFvMotionSolver.C index d2f95f33c5..a6e0f4caea 100644 --- a/src/fvMotionSolver/fvMotionSolvers/displacement/SBRStress/displacementSBRStressFvMotionSolver.C +++ b/src/fvMotionSolver/fvMotionSolvers/displacement/SBRStress/displacementSBRStressFvMotionSolver.C @@ -53,11 +53,12 @@ namespace Foam Foam::displacementSBRStressFvMotionSolver::displacementSBRStressFvMotionSolver ( + const word& name, const polyMesh& mesh, const dictionary& dict ) : - displacementMotionSolver(mesh, dict, typeName), + displacementMotionSolver(name, mesh, dict, typeName), fvMotionSolver(mesh), cellDisplacement_ ( diff --git a/src/fvMotionSolver/fvMotionSolvers/displacement/SBRStress/displacementSBRStressFvMotionSolver.H b/src/fvMotionSolver/fvMotionSolvers/displacement/SBRStress/displacementSBRStressFvMotionSolver.H index 90a0ba9797..2ecbb659d7 100644 --- a/src/fvMotionSolver/fvMotionSolvers/displacement/SBRStress/displacementSBRStressFvMotionSolver.H +++ b/src/fvMotionSolver/fvMotionSolvers/displacement/SBRStress/displacementSBRStressFvMotionSolver.H @@ -76,6 +76,7 @@ public: //- Construct from polyMesh and dictionary displacementSBRStressFvMotionSolver ( + const word& name, const polyMesh&, const dictionary& ); diff --git a/src/fvMotionSolver/fvMotionSolvers/displacement/laplacian/displacementLaplacianFvMotionSolver.C b/src/fvMotionSolver/fvMotionSolvers/displacement/laplacian/displacementLaplacianFvMotionSolver.C index e01bc122ae..80f2ebf116 100644 --- a/src/fvMotionSolver/fvMotionSolvers/displacement/laplacian/displacementLaplacianFvMotionSolver.C +++ b/src/fvMotionSolver/fvMotionSolvers/displacement/laplacian/displacementLaplacianFvMotionSolver.C @@ -51,11 +51,12 @@ namespace Foam Foam::displacementLaplacianFvMotionSolver::displacementLaplacianFvMotionSolver ( + const word& name, const polyMesh& mesh, const dictionary& dict ) : - displacementMotionSolver(mesh, dict, typeName), + displacementMotionSolver(name, mesh, dict, typeName), fvMotionSolver(mesh), cellDisplacement_ ( diff --git a/src/fvMotionSolver/fvMotionSolvers/displacement/laplacian/displacementLaplacianFvMotionSolver.H b/src/fvMotionSolver/fvMotionSolvers/displacement/laplacian/displacementLaplacianFvMotionSolver.H index dac9599fb9..7d227d6d1d 100644 --- a/src/fvMotionSolver/fvMotionSolvers/displacement/laplacian/displacementLaplacianFvMotionSolver.H +++ b/src/fvMotionSolver/fvMotionSolvers/displacement/laplacian/displacementLaplacianFvMotionSolver.H @@ -84,6 +84,7 @@ public: //- Construct from polyMesh and dictionary displacementLaplacianFvMotionSolver ( + const word& name, const polyMesh&, const dictionary& ); diff --git a/src/fvMotionSolver/fvMotionSolvers/velocity/laplacian/velocityLaplacianFvMotionSolver.C b/src/fvMotionSolver/fvMotionSolvers/velocity/laplacian/velocityLaplacianFvMotionSolver.C index 0bbffe9f97..6a0ee824b4 100644 --- a/src/fvMotionSolver/fvMotionSolvers/velocity/laplacian/velocityLaplacianFvMotionSolver.C +++ b/src/fvMotionSolver/fvMotionSolvers/velocity/laplacian/velocityLaplacianFvMotionSolver.C @@ -48,11 +48,12 @@ namespace Foam Foam::velocityLaplacianFvMotionSolver::velocityLaplacianFvMotionSolver ( + const word& name, const polyMesh& mesh, const dictionary& dict ) : - velocityMotionSolver(mesh, dict, typeName), + velocityMotionSolver(name, mesh, dict, typeName), fvMotionSolver(mesh), cellMotionU_ ( diff --git a/src/fvMotionSolver/fvMotionSolvers/velocity/laplacian/velocityLaplacianFvMotionSolver.H b/src/fvMotionSolver/fvMotionSolvers/velocity/laplacian/velocityLaplacianFvMotionSolver.H index d056352221..94abfaf1cb 100644 --- a/src/fvMotionSolver/fvMotionSolvers/velocity/laplacian/velocityLaplacianFvMotionSolver.H +++ b/src/fvMotionSolver/fvMotionSolvers/velocity/laplacian/velocityLaplacianFvMotionSolver.H @@ -76,6 +76,7 @@ public: //- Construct from polyMesh and dictionary velocityLaplacianFvMotionSolver ( + const word& name, const polyMesh&, const dictionary& ); diff --git a/src/mesh/snappyHexMesh/externalDisplacementMeshMover/displacementMeshMoverMotionSolver.C b/src/mesh/snappyHexMesh/externalDisplacementMeshMover/displacementMeshMoverMotionSolver.C index e83461b912..f4c6326f86 100644 --- a/src/mesh/snappyHexMesh/externalDisplacementMeshMover/displacementMeshMoverMotionSolver.C +++ b/src/mesh/snappyHexMesh/externalDisplacementMeshMover/displacementMeshMoverMotionSolver.C @@ -46,11 +46,12 @@ namespace Foam Foam::displacementMeshMoverMotionSolver::displacementMeshMoverMotionSolver ( + const word& name, const polyMesh& mesh, const dictionary& dict ) : - displacementMotionSolver(mesh, dict, typeName) // read pointDisplacement + displacementMotionSolver(name, mesh, dict, typeName) {} diff --git a/src/mesh/snappyHexMesh/externalDisplacementMeshMover/displacementMeshMoverMotionSolver.H b/src/mesh/snappyHexMesh/externalDisplacementMeshMover/displacementMeshMoverMotionSolver.H index 058a0c0060..0785305f96 100644 --- a/src/mesh/snappyHexMesh/externalDisplacementMeshMover/displacementMeshMoverMotionSolver.H +++ b/src/mesh/snappyHexMesh/externalDisplacementMeshMover/displacementMeshMoverMotionSolver.H @@ -66,13 +66,18 @@ public: // Constructors //- Construct from polyMesh and dictionary - displacementMeshMoverMotionSolver(const polyMesh&, const dictionary&); + displacementMeshMoverMotionSolver + ( + const word& name, + const polyMesh&, + const dictionary& + ); //- Disallow default bitwise copy construction displacementMeshMoverMotionSolver ( const displacementMeshMoverMotionSolver& - ); + ) = delete; //- Destructor diff --git a/src/rigidBodyMeshMotion/rigidBodyMeshMotion/rigidBodyMeshMotion.C b/src/rigidBodyMeshMotion/rigidBodyMeshMotion/rigidBodyMeshMotion.C index c0098bcfbf..53eaab3576 100644 --- a/src/rigidBodyMeshMotion/rigidBodyMeshMotion/rigidBodyMeshMotion.C +++ b/src/rigidBodyMeshMotion/rigidBodyMeshMotion/rigidBodyMeshMotion.C @@ -135,11 +135,12 @@ Foam::rigidBodyMeshMotion::bodyMesh::bodyMesh Foam::rigidBodyMeshMotion::rigidBodyMeshMotion ( + const word& name, const polyMesh& mesh, const dictionary& dict ) : - displacementMotionSolver(mesh, dict, typeName), + displacementMotionSolver(name, mesh, dict, typeName), RBD::rigidBodyMotion ( coeffDict(), diff --git a/src/rigidBodyMeshMotion/rigidBodyMeshMotion/rigidBodyMeshMotion.H b/src/rigidBodyMeshMotion/rigidBodyMeshMotion/rigidBodyMeshMotion.H index 05ac402dc6..77f4a6942a 100644 --- a/src/rigidBodyMeshMotion/rigidBodyMeshMotion/rigidBodyMeshMotion.H +++ b/src/rigidBodyMeshMotion/rigidBodyMeshMotion/rigidBodyMeshMotion.H @@ -149,6 +149,7 @@ public: //- Construct from polyMesh and dictionary rigidBodyMeshMotion ( + const word& name, const polyMesh&, const dictionary& dict ); @@ -157,7 +158,7 @@ public: rigidBodyMeshMotion ( const rigidBodyMeshMotion& - ); + ) = delete; //- Destructor diff --git a/src/rigidBodyMeshMotion/rigidBodyMeshMotionSolver/rigidBodyMeshMotionSolver.C b/src/rigidBodyMeshMotion/rigidBodyMeshMotionSolver/rigidBodyMeshMotionSolver.C index 75f056a20b..560fdc3c02 100644 --- a/src/rigidBodyMeshMotion/rigidBodyMeshMotionSolver/rigidBodyMeshMotionSolver.C +++ b/src/rigidBodyMeshMotion/rigidBodyMeshMotionSolver/rigidBodyMeshMotionSolver.C @@ -69,11 +69,12 @@ Foam::rigidBodyMeshMotionSolver::bodyMesh::bodyMesh Foam::rigidBodyMeshMotionSolver::rigidBodyMeshMotionSolver ( + const word& name, const polyMesh& mesh, const dictionary& dict ) : - motionSolver(mesh, dict, typeName), + motionSolver(name, mesh, dict, typeName), RBD::rigidBodyMotion ( coeffDict(), @@ -108,6 +109,7 @@ Foam::rigidBodyMeshMotionSolver::rigidBodyMeshMotionSolver ( motionSolver::New ( + name, mesh, IOdictionary ( diff --git a/src/rigidBodyMeshMotion/rigidBodyMeshMotionSolver/rigidBodyMeshMotionSolver.H b/src/rigidBodyMeshMotion/rigidBodyMeshMotionSolver/rigidBodyMeshMotionSolver.H index abfb2794e1..2427c12494 100644 --- a/src/rigidBodyMeshMotion/rigidBodyMeshMotionSolver/rigidBodyMeshMotionSolver.H +++ b/src/rigidBodyMeshMotion/rigidBodyMeshMotionSolver/rigidBodyMeshMotionSolver.H @@ -130,6 +130,7 @@ public: //- Construct from polyMesh and dictionary rigidBodyMeshMotionSolver ( + const word& name, const polyMesh&, const dictionary& dict ); @@ -138,7 +139,7 @@ public: rigidBodyMeshMotionSolver ( const rigidBodyMeshMotionSolver& - ); + ) = delete; //- Destructor diff --git a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionSolver/sixDoFRigidBodyMotionSolver.C b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionSolver/sixDoFRigidBodyMotionSolver.C index 39710d4c93..1216d8e436 100644 --- a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionSolver/sixDoFRigidBodyMotionSolver.C +++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionSolver/sixDoFRigidBodyMotionSolver.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | Website: https://openfoam.org - \\ / A nd | Copyright (C) 2013-2021 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2013-2022 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -52,11 +52,12 @@ namespace Foam Foam::sixDoFRigidBodyMotionSolver::sixDoFRigidBodyMotionSolver ( + const word& name, const polyMesh& mesh, const dictionary& dict ) : - displacementMotionSolver(mesh, dict, typeName), + displacementMotionSolver(name, mesh, dict, typeName), sixDoFRigidBodyMotion ( coeffDict(), diff --git a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionSolver/sixDoFRigidBodyMotionSolver.H b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionSolver/sixDoFRigidBodyMotionSolver.H index 424a01afad..e1de01ed1b 100644 --- a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionSolver/sixDoFRigidBodyMotionSolver.H +++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionSolver/sixDoFRigidBodyMotionSolver.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | Website: https://openfoam.org - \\ / A nd | Copyright (C) 2013-2020 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2013-2022 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -99,6 +99,7 @@ public: //- Construct from polyMesh and dictionary sixDoFRigidBodyMotionSolver ( + const word& name, const polyMesh&, const dictionary& dict ); @@ -107,7 +108,7 @@ public: sixDoFRigidBodyMotionSolver ( const sixDoFRigidBodyMotionSolver& - ); + ) = delete; //- Destructor