The sub-loops of the solution control are now named more consistently, with ambiguously named methods such as finalIter replaced with ones like finalPimpleIter, so that it is clear which loop they represent. In addition, the final logic has been improved so that it restores state after a sub-iteration, and so that sub-iterations can be used on their own without an outer iteration in effect. Previously, if the non-orthogonal loop were used outside of a pimple/piso iteration, the final iteration would not execute with final settings.
132 lines
3.5 KiB
C++
132 lines
3.5 KiB
C++
/*---------------------------------------------------------------------------*\
|
|
========= |
|
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
|
\\ / O peration | Website: https://openfoam.org
|
|
\\ / A nd | Copyright (C) 2018-2019 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::pimpleLoop
|
|
|
|
Description
|
|
Pimple loop class. Implements the logic which controls the pimple loop
|
|
generically for a given corrector convergence control. Can therefore be
|
|
used be either single- or multi-region control classes.
|
|
|
|
SourceFiles
|
|
pimpleLoopI.H
|
|
pimpleLoop.C
|
|
|
|
\*---------------------------------------------------------------------------*/
|
|
|
|
#ifndef pimpleLoop_H
|
|
#define pimpleLoop_H
|
|
|
|
#include "correctorConvergenceControl.H"
|
|
|
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
|
|
|
namespace Foam
|
|
{
|
|
|
|
/*---------------------------------------------------------------------------*\
|
|
Class pimpleLoop Declaration
|
|
\*---------------------------------------------------------------------------*/
|
|
|
|
class pimpleLoop
|
|
{
|
|
protected:
|
|
|
|
// Protected data
|
|
|
|
//- Reference to the solution control
|
|
const solutionControl& control_;
|
|
|
|
//- Maximum number of pimple correctors
|
|
label nCorrPimple_;
|
|
|
|
//- Current pimple corrector
|
|
label corrPimple_;
|
|
|
|
//- Flag to indicate convergence of the pimple loop
|
|
bool converged_;
|
|
|
|
|
|
// Protected Member Functions
|
|
|
|
//- Read controls
|
|
virtual bool read();
|
|
|
|
|
|
public:
|
|
|
|
// Static data members
|
|
|
|
//- Run-time type information
|
|
TypeName("pimpleLoop");
|
|
|
|
|
|
// Constructors
|
|
|
|
//- Construct from a solution control
|
|
pimpleLoop(const solutionControl& control);
|
|
|
|
|
|
//- Destructor
|
|
virtual ~pimpleLoop();
|
|
|
|
|
|
// Member Functions
|
|
|
|
// Access
|
|
|
|
//- Maximum number of pimple correctors
|
|
inline label nCorrPimple() const;
|
|
|
|
//- Flat to indicate any pimple iteration
|
|
inline bool anyPimpleIter() const;
|
|
|
|
//- Flag to indicate the first pimple iteration
|
|
inline bool firstPimpleIter() const;
|
|
|
|
//- Flag to indicate the last pimple iteration
|
|
inline bool finalPimpleIter() const;
|
|
|
|
|
|
// Evolution
|
|
|
|
//- Pimple loop
|
|
bool loop(correctorConvergenceControl& convergence);
|
|
};
|
|
|
|
|
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
|
|
|
} // End namespace Foam
|
|
|
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
|
|
|
#include "pimpleLoopI.H"
|
|
|
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
|
|
|
#endif
|
|
|
|
// ************************************************************************* //
|