moveMesh.C
Go to the documentation of this file.
1 /*---------------------------------------------------------------------------*\
2  ========= |
3  \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
4  \\ / O peration | Website: https://openfoam.org
5  \\ / A nd | Copyright (C) 2023 OpenFOAM Foundation
6  \\/ M anipulation |
7 -------------------------------------------------------------------------------
8 License
9  This file is part of OpenFOAM.
10 
11  OpenFOAM is free software: you can redistribute it and/or modify it
12  under the terms of the GNU General Public License as published by
13  the Free Software Foundation, either version 3 of the License, or
14  (at your option) any later version.
15 
16  OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
17  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
18  FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
19  for more details.
20 
21  You should have received a copy of the GNU General Public License
22  along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
23 
24 \*---------------------------------------------------------------------------*/
25 
27 #include "fvCorrectPhi.H"
28 #include "fvcMeshPhi.H"
29 #include "geometricZeroField.H"
30 
31 // * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * //
32 
34 {
36  {
37  // Move the mesh
38  mesh_.move();
39  }
40 }
41 
42 
44 {
45  if (pimple.firstIter() || pimple.moveMeshOuterCorrectors())
46  {
47  if (mesh.changing())
48  {
49  if (correctPhi || mesh.topoChanged())
50  {
51  // Calculate absolute flux
52  // from the mapped surface velocity
53  phic_ = mesh.Sf() & Ucf();
54 
55  correctUphiBCs(Uc_, phic_, true);
56 
58  (
59  phic_,
60  Uc,
61  p,
65  pimple
66  );
67 
68  // Make the flux relative to the mesh motion
69  fvc::makeRelative(phic_, Uc);
70  }
71 
72  meshCourantNo();
73  }
74  }
75 }
76 
77 
78 // ************************************************************************* //
An auto-pointer similar to the STL auto_ptr but with automatic casting to a reference to the type and...
Definition: autoPtr.H:51
bool move()
Move the mesh.
Definition: fvMesh.C:653
bool moveMeshOuterCorrectors() const
Switch to move the mesh at the start of every PIMPLE.
bool firstIter() const
Flag to indicate the first iteration.
Provides controls for the pressure reference in closed-volume simulations.
pimpleNoLoopControl pimple
PIMPLE inner-loop controls.
Definition: solver.H:107
fvMesh & mesh_
Region mesh.
Definition: solver.H:62
virtual void moveMesh()
Called at the start of the PIMPLE loop to move the mesh.
Definition: moveMesh.C:33
virtual void motionCorrector()
Corrections that follow mesh motion.
Definition: moveMesh.C:43
pimpleControl pimple(mesh)
Flux correction functions to ensure continuity.
Calculate the mesh motion flux and convert fluxes from absolute to relative and back.
void correctPhi(surfaceScalarField &phi, const volVectorField &U, const volScalarField &p, const autoPtr< volScalarField > &rAU, const autoPtr< volScalarField > &divU, const pressureReference &pressureReference, nonOrthogonalSolutionControl &pcorrControl)
Definition: fvCorrectPhi.C:32
void makeRelative(surfaceScalarField &phi, const volVectorField &U)
Make the given flux relative.
Definition: fvcMeshPhi.C:89
void correctUphiBCs(volVectorField &U, surfaceScalarField &phi, const bool evaluateUBCs)
If the mesh is moving correct the velocity BCs on the moving walls to.
correctPhi
volScalarField & p