diff --git a/applications/solvers/modules/Allwmake b/applications/solvers/modules/Allwmake index f423e8414f..cdf0b27d32 100755 --- a/applications/solvers/modules/Allwmake +++ b/applications/solvers/modules/Allwmake @@ -4,6 +4,7 @@ cd ${0%/*} || exit 1 # Run from this directory # Parse arguments for library compilation . $WM_PROJECT_DIR/wmake/scripts/AllwmakeParseArguments +wmake $targetType movingMesh wmake $targetType fluidSolver wmake $targetType incompressibleFluid wmake $targetType isothermalFluid diff --git a/applications/solvers/modules/movingMesh/Make/files b/applications/solvers/modules/movingMesh/Make/files new file mode 100644 index 0000000000..d3e09a1968 --- /dev/null +++ b/applications/solvers/modules/movingMesh/Make/files @@ -0,0 +1,3 @@ +movingMesh.C + +LIB = $(FOAM_LIBBIN)/libmovingMesh diff --git a/applications/solvers/modules/movingMesh/Make/options b/applications/solvers/modules/movingMesh/Make/options new file mode 100644 index 0000000000..71b7873964 --- /dev/null +++ b/applications/solvers/modules/movingMesh/Make/options @@ -0,0 +1,5 @@ +EXE_INC = \ + -I$(LIB_SRC)/finiteVolume/lnInclude + +LIB_LIBS = \ + -lfiniteVolume diff --git a/applications/solvers/modules/movingMesh/movingMesh.C b/applications/solvers/modules/movingMesh/movingMesh.C new file mode 100644 index 0000000000..08b88c36e3 --- /dev/null +++ b/applications/solvers/modules/movingMesh/movingMesh.C @@ -0,0 +1,111 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | Website: https://openfoam.org + \\ / A nd | Copyright (C) 2023 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see . + +\*---------------------------------------------------------------------------*/ + +#include "movingMesh.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +namespace Foam +{ +namespace solvers +{ + defineTypeNameAndDebug(movingMesh, 0); + addToRunTimeSelectionTable(solver, movingMesh, fvMesh); +} +} + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::solvers::movingMesh::movingMesh(fvMesh& mesh) +: + solver(mesh), + maxDeltaT_ + ( + runTime.controlDict().lookupOrDefault("maxDeltaT", vGreat) + ) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::solvers::movingMesh::~movingMesh() +{} + + +// * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * // + +Foam::scalar Foam::solvers::movingMesh::maxDeltaT() const +{ + return maxDeltaT_; +} + + +void Foam::solvers::movingMesh::preSolve() +{ + // Update the mesh for topology change, mesh to mesh mapping + mesh.update(); +} + + +bool Foam::solvers::movingMesh::moveMesh() +{ + if (pimple.firstIter() || pimple.moveMeshOuterCorrectors()) + { + mesh.move(); + + return true; + } + + return false; +} + + +void Foam::solvers::movingMesh::prePredictor() +{} + + +void Foam::solvers::movingMesh::momentumPredictor() +{} + + +void Foam::solvers::movingMesh::thermophysicalPredictor() +{} + + +void Foam::solvers::movingMesh::pressureCorrector() +{} + + +void Foam::solvers::movingMesh::postCorrector() +{} + + +void Foam::solvers::movingMesh::postSolve() +{} + + +// ************************************************************************* // diff --git a/applications/solvers/modules/movingMesh/movingMesh.H b/applications/solvers/modules/movingMesh/movingMesh.H new file mode 100644 index 0000000000..3cebeb7ec6 --- /dev/null +++ b/applications/solvers/modules/movingMesh/movingMesh.H @@ -0,0 +1,131 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | Website: https://openfoam.org + \\ / A nd | Copyright (C) 2023 OpenFOAM Foundation + \\/ M anipulation | +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM is free software: you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OpenFOAM is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with OpenFOAM. If not, see . + +Class + Foam::solvers::movingMesh + +Description + Solver module to move the mesh. + + Executes the mover, topoChanger and distributor specified in the + dynamicMeshDict. + +SourceFiles + movingMesh.C + +\*---------------------------------------------------------------------------*/ + +#ifndef movingMesh_H +#define movingMesh_H + +#include "solver.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ +namespace solvers +{ + +/*---------------------------------------------------------------------------*\ + Class movingMesh Declaration +\*---------------------------------------------------------------------------*/ + +class movingMesh +: + public solver +{ + // Control parameters + + //- Maximum time-step + scalar maxDeltaT_; + + +public: + + //- Runtime type information + TypeName("movingMesh"); + + + // Constructors + + //- Construct from region mesh + movingMesh(fvMesh& mesh); + + //- Disallow default bitwise copy construction + movingMesh(const movingMesh&) = delete; + + + //- Destructor + virtual ~movingMesh(); + + + // Member Functions + + //- Return the current maximum time-step for stable solution + virtual scalar maxDeltaT() const; + + //- Called at the start of the time-step, before the PIMPLE loop + virtual void preSolve(); + + //- Called at the start of the PIMPLE loop to move the mesh + virtual bool moveMesh(); + + //- Called at the beginning of the PIMPLE loop + virtual void prePredictor(); + + //- Construct and optionally solve the momentum equation + virtual void momentumPredictor(); + + //- Construct and solve the energy equation, + // convert to temperature + // and update thermophysical and transport properties + virtual void thermophysicalPredictor(); + + //- Construct and solve the pressure equation in the PISO loop + virtual void pressureCorrector(); + + //- Correct the thermophysical transport modelling + virtual void postCorrector(); + + //- Called after the PIMPLE loop at the end of the time-step + virtual void postSolve(); + + + // Member Operators + + //- Disallow default bitwise assignment + void operator=(const movingMesh&) = delete; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace solvers +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* // diff --git a/applications/utilities/mesh/manipulation/moveMesh/Make/files b/applications/utilities/mesh/manipulation/moveMesh/Make/files deleted file mode 100644 index 44c56fea13..0000000000 --- a/applications/utilities/mesh/manipulation/moveMesh/Make/files +++ /dev/null @@ -1,5 +0,0 @@ -moveMesh.C -../checkMesh/checkGeometry.C -../checkMesh/checkTools.C - -EXE = $(FOAM_APPBIN)/moveMesh diff --git a/applications/utilities/mesh/manipulation/moveMesh/Make/options b/applications/utilities/mesh/manipulation/moveMesh/Make/options deleted file mode 100644 index 6803aa1800..0000000000 --- a/applications/utilities/mesh/manipulation/moveMesh/Make/options +++ /dev/null @@ -1,10 +0,0 @@ -EXE_INC = \ - -I$(LIB_SRC)/fileFormats/lnInclude \ - -I$(LIB_SRC)/meshTools/lnInclude \ - -I$(LIB_SRC)/sampling/lnInclude \ - -I$(LIB_SRC)/finiteVolume/lnInclude \ - -I../checkMesh - -EXE_LIBS = \ - -lmeshTools \ - -lsampling diff --git a/applications/utilities/mesh/manipulation/moveMesh/moveMesh.C b/applications/utilities/mesh/manipulation/moveMesh/moveMesh.C deleted file mode 100644 index c8d30036eb..0000000000 --- a/applications/utilities/mesh/manipulation/moveMesh/moveMesh.C +++ /dev/null @@ -1,115 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | Website: https://openfoam.org - \\ / A nd | Copyright (C) 2011-2022 OpenFOAM Foundation - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - OpenFOAM is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with OpenFOAM. If not, see . - -Application - moveMesh - -Description - Mesh motion and topological mesh change utility. - - Executes the mover, topoChanger and distributor specified in the - dynamicMeshDict in a time-loop. - -\*---------------------------------------------------------------------------*/ - -#include "argList.H" -#include "Time.H" -#include "fvMesh.H" -#include "pimpleControl.H" -#include "vtkSurfaceWriter.H" -#include "PatchTools.H" -#include "checkGeometry.H" - -using namespace Foam; - -// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // - -int main(int argc, char *argv[]) -{ - #include "addRegionOption.H" - #include "setRootCase.H" - #include "createTime.H" - - Foam::word regionName; - - if (args.optionReadIfPresent("region", regionName)) - { - Foam::Info - << "Create mesh " << regionName << " for time = " - << runTime.name() << Foam::nl << Foam::endl; - } - else - { - regionName = Foam::fvMesh::defaultRegion; - Foam::Info - << "Create mesh for time = " - << runTime.name() << Foam::nl << Foam::endl; - } - - Foam::fvMesh mesh - ( - Foam::IOobject - ( - regionName, - runTime.name(), - runTime, - Foam::IOobject::MUST_READ - ) - ); - - pimpleControl pimple(mesh); - - while (runTime.run()) - { - // Update the mesh for topology change, mesh to mesh mapping - mesh.update(); - - runTime++; - - Info<< "Time = " << runTime.userTimeName() << endl; - - while (pimple.loop()) - { - if (pimple.firstPimpleIter() || pimple.moveMeshOuterCorrectors()) - { - // Move the mesh - mesh.move(); - } - } - - mesh.checkMesh(true); - - runTime.write(); - - Info<< "ExecutionTime = " << runTime.elapsedCpuTime() << " s" - << " ClockTime = " << runTime.elapsedClockTime() << " s" - << nl << endl; - } - - Info<< "End\n" << endl; - - return 0; -} - - -// ************************************************************************* // diff --git a/bin/moveDynamicMesh b/bin/moveDynamicMesh index 08be515cae..6f61fe26d0 100755 --- a/bin/moveDynamicMesh +++ b/bin/moveDynamicMesh @@ -3,7 +3,7 @@ # ========= | # \\ / F ield | OpenFOAM: The Open Source CFD Toolbox # \\ / O peration | Website: https://openfoam.org -# \\ / A nd | Copyright (C) 2022 OpenFOAM Foundation +# \\ / A nd | Copyright (C) 2023 OpenFOAM Foundation # \\/ M anipulation | #------------------------------------------------------------------------------ # License @@ -26,12 +26,21 @@ # moveDynamicMesh # # Description -# Script to inform the user that the moveDynamicMesh solver -# has been renamed moveMesh. +# Script to inform the user that moveDynamicMesh has been superseded +# and replaced by the more general movingMesh solver module +# executed by the foamRun application. # #------------------------------------------------------------------------------ -echo "The moveDynamicMesh utility has been renamed moveMesh, \ -replacing the original moveMesh" +cat <. +# +# Script +# moveMesh +# +# Description +# Script to inform the user that moveMesh has been superseded +# and replaced by the more general movingMesh solver module +# executed by the foamRun application. +# +#------------------------------------------------------------------------------ + +cat <