Files
OpenFOAM-12/src/parallel/parallel/multiDomainDecomposition.H
Will Bainbridge 77eec2cda3 MultiRegionRefs, MultiRegionUList, MultiRegionList: Centralised region prefixing
These classes permit any PtrList of region-associated objects (meshes,
solvers, domainDecompositions, ...) to prefix the region name to the log.

At present these classes are used by decomposePar and reconstructPar
only. The foamMultiRun solver still handles its own prefixing.
2023-11-23 10:35:18 +00:00

131 lines
3.9 KiB
C++

/*---------------------------------------------------------------------------*\
========= |
\\ / 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::multiDomainDecomposition
Description
...
SourceFiles
multiDomainDecomposition.C
\*---------------------------------------------------------------------------*/
#ifndef multiDomainDecomposition_H
#define multiDomainDecomposition_H
#include "domainDecomposition.H"
#include "MultiRegionList.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
namespace Foam
{
/*---------------------------------------------------------------------------*\
Class multiDomainDecomposition Declaration
\*---------------------------------------------------------------------------*/
class multiDomainDecomposition
:
public MultiRegionList<domainDecomposition>
{
// Private Data
//- Run times
const processorRunTimes& runTimes_;
// Private Member Functions
//- Initialise and return the list of regions
static Foam::PtrList<domainDecomposition> init
(
const processorRunTimes& runTimes,
const wordList& regionNames
);
public:
//- Runtime type information
TypeName("multiDomainDecomposition");
// Constructors
//- Construct from processor run times and region names
multiDomainDecomposition
(
const processorRunTimes& procRunTimes,
const wordList& regionNames
);
//- Destructor
virtual ~multiDomainDecomposition();
// Member Functions
//- Return the number of processors in the decomposition
inline label nProcs() const
{
return runTimes_.nProcs();
}
//- Read in the complete mesh. Read the processor meshes if they are
// available and up to date relative to the complete mesh, or
// decompose if not. Return whether or not decomposition happened.
bool readDecompose(const bool doSets);
//- Read in the processor meshes. Read the complete mesh if it is
// available and up to date relative to the processor meshes, or
// reconstruct if not. Return whether or not reconstruction happened.
bool readReconstruct(const bool doSets);
//- Read-update for decomposition
fvMesh::readUpdateState readUpdateDecompose();
//- Read-update for reconstruction
fvMesh::readUpdateState readUpdateReconstruct();
//- Write the decomposed meshes and associated data
void writeComplete(const bool doSets) const;
//- Write the decomposed meshes and associated data
void writeProcs(const bool doSets) const;
};
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
} // End namespace Foam
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
#endif
// ************************************************************************* //