/*---------------------------------------------------------------------------*\ ========= | \\ / 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 . Class Foam::domainDecomposition Description Automatic domain decomposition class for finite-volume meshes SourceFiles domainDecomposition.C decomposeMesh.C \*---------------------------------------------------------------------------*/ #ifndef domainDecomposition_H #define domainDecomposition_H #include "fvMesh.H" #include "volFields.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // namespace Foam { /*---------------------------------------------------------------------------*\ Class domainDecomposition Declaration \*---------------------------------------------------------------------------*/ class domainDecomposition { // Private Data //- Reference to the complete mesh const fvMesh& mesh_; //- Number of processors in decomposition const label nProcs_; //- Optional: points at the facesInstance autoPtr facesInstancePointsPtr_; //- Is the decomposition data to be distributed for each processor bool distributed_; // Processor mesh to complete mesh addressing //- Labels of points for each processor labelListList procPointAddressing_; //- Labels of faces for each processor // Note: Face turning index is stored as the sign on addressing // Only the processor boundary faces are affected: if the sign of // the index is negative, the processor face is the reverse of the // original face. In order to do this properly, all face // indices will be incremented by 1 and the decremented as // necessary to avoid the problem of face number zero having no // sign. List> procFaceAddressing_; //- Labels of cells for each processor labelListList procCellAddressing_; //- Processor times PtrList