fvMeshDistributors: New library for mesh redistribution and load-balancing

Basic support is now provided for dynamic mesh redistribution, particularly for
load-balancing.  The mesh distributor is selected in the optional 'distributor'
entry in dynamicMeshDict, for example in the
multiphase/interFoam/RAS/floatingObject tutorial case when run in parallel using
the new Allrun-parallel script

distributor
{
    type            decomposer;

    libs            ("libfvMeshDistributors.so");

    redistributionInterval  10;
}

in which the 'decomposer' form of redistribution is selected to call the mesh
decomposition method specified in decomposeParDict to re-decompose the mesh for
redistribution.  The redistributionInterval entry specifies how frequently mesh
redistribution takes place, in the above every 10th time-step.  An optional
maxImbalance entry is also provided to control redistribution based on the cell
distribution imbalance:

Class
    Foam::fvMeshDistributor::decomposer

Description
    Dynamic mesh redistribution using the decomposer

Usage
    Example of single field based refinement in all cells:
    \verbatim
    distributor
    {
        type            decomposer;

        libs            ("libfvMeshDistributors.so");

        // How often to redistribute
        redistributionInterval  10;

        // Maximum fractional cell distribution imbalance
        // before rebalancing
        maxImbalance    0.1;
    }
    \endverbatim

Currently mesh refinement/unrefinement and motion with redistribution is
supported but many aspects of OpenFOAM are not yet and will require further
development, in particular fvModels and Lagrangian.

Also only the geometry-based simple and hierarchical decomposition method are
well behaved for redistribution, scotch and ptScotch cause dramatic changes in
mesh distribution with a corresponding heavy communications overhead limiting
their usefulness or at least the frequency with which they should be called to
redistribute the mesh.
This commit is contained in:
Henry Weller
2021-12-09 14:06:45 +00:00
parent 9d6f708f4d
commit bf5f056296
22 changed files with 443 additions and 117 deletions

View File

@ -46,6 +46,7 @@ boundary
(0 4 7 3)
);
}
atmosphere
{
type patch;
@ -54,11 +55,18 @@ boundary
(4 5 6 7)
);
}
floatingObject
{
type wall;
faces ();
}
internal
{
type internal;
faces ();
}
);

View File

@ -16,7 +16,7 @@ FoamFile
numberOfSubdomains 8;
method scotch;
method hierarchical;
simpleCoeffs
{
@ -25,7 +25,7 @@ simpleCoeffs
hierarchicalCoeffs
{
n (2 2 1);
n (2 2 2);
order xyz;
}