Skip to content

Commit

Permalink
solvers::movingMesh: New solver module to move the mesh
Browse files Browse the repository at this point in the history
Executes the mover, topoChanger and distributor specified in the
dynamicMeshDict.

Replaces the moveMesh and earlier moveDynamicMesh utilities.
  • Loading branch information
Henry Weller committed Jan 27, 2023
1 parent 06220b1 commit 260a850
Show file tree
Hide file tree
Showing 21 changed files with 314 additions and 136 deletions.
1 change: 1 addition & 0 deletions applications/solvers/modules/Allwmake
Expand Up @@ -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
Expand Down
3 changes: 3 additions & 0 deletions applications/solvers/modules/movingMesh/Make/files
@@ -0,0 +1,3 @@
movingMesh.C

LIB = $(FOAM_LIBBIN)/libmovingMesh
5 changes: 5 additions & 0 deletions applications/solvers/modules/movingMesh/Make/options
@@ -0,0 +1,5 @@
EXE_INC = \
-I$(LIB_SRC)/finiteVolume/lnInclude

LIB_LIBS = \
-lfiniteVolume
111 changes: 111 additions & 0 deletions 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 <http://www.gnu.org/licenses/>.
\*---------------------------------------------------------------------------*/

#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<scalar>("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()
{}


// ************************************************************************* //
131 changes: 131 additions & 0 deletions 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 <http://www.gnu.org/licenses/>.
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

// ************************************************************************* //
5 changes: 0 additions & 5 deletions applications/utilities/mesh/manipulation/moveMesh/Make/files

This file was deleted.

10 changes: 0 additions & 10 deletions applications/utilities/mesh/manipulation/moveMesh/Make/options

This file was deleted.

115 changes: 0 additions & 115 deletions applications/utilities/mesh/manipulation/moveMesh/moveMesh.C

This file was deleted.

0 comments on commit 260a850

Please sign in to comment.