ENH: region-wise decomposition specification for decomposeParDict

Within decomposeParDict, it is now possible to specify a different
  decomposition method, methods coefficients or number of subdomains
  for each region individually.

  The top-level numberOfSubdomains remains mandatory, since this
  specifies the number of domains for the entire simulation.
  The individual regions may use the same number or fewer domains.

  Any optional method coefficients can be specified in a general
  "coeffs" entry or a method-specific one, eg "metisCoeffs".

  For multiLevel, only the method-specific "multiLevelCoeffs" dictionary
  is used, and is also mandatory.

----

ENH: shortcut specification for multiLevel.

  In addition to the longer dictionary form, it is also possible to
  use a shorter notation for multiLevel decomposition when the same
  decomposition method applies to each level.
This commit is contained in:
Mark Olesen
2017-11-09 12:30:24 +01:00
parent 69ea4976ac
commit a9ffcab5af
211 changed files with 2416 additions and 3933 deletions

View File

@ -25,7 +25,14 @@ Class
Foam::geomDecomp
Description
Geometrical domain decomposition
Base for geometrical domain decomposition methods
Base coefficients:
\table
Property | Description | Required | Default
n | (nx ny nz) | yes
delta | delta for rotation matrix | no | 0.001
\endtable
SourceFiles
geomDecomp.C
@ -42,36 +49,56 @@ namespace Foam
{
/*---------------------------------------------------------------------------*\
Class geomDecomp Declaration
Class geomDecomp Declaration
\*---------------------------------------------------------------------------*/
class geomDecomp
:
public decompositionMethod
{
// Private Member Functions
//- Read input values and initialize the rotDelta_
void readCoeffs();
protected:
// Protected data
const dictionary& geomDecomDict_;
//- Coefficients for all derived methods
const dictionary& coeffsDict_;
Vector<label> n_;
//- Default = 0.001
scalar delta_;
tensor rotDelta_;
public:
// Constructors
//- Construct given the decomposition dictionary
// and the derived type name
//- Construct for derived type name and decomposition dictionary
geomDecomp
(
const dictionary& decompositionDict,
const word& derivedType
const word& derivedType,
const dictionary& decompDict,
int select = selectionType::DEFAULT
);
//- Construct for derived type name, decomposition dictionary
//- and region name
geomDecomp
(
const word& derivedType,
const dictionary& decompDict,
const word& regionName,
int select = selectionType::DEFAULT
);
//- Return for every coordinate the wanted processor number.
virtual labelList decompose
(