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.
74 lines
1.3 KiB
C++
74 lines
1.3 KiB
C++
/*--------------------------------*- C++ -*----------------------------------*\
|
|
========= |
|
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
|
\\ / O peration | Website: https://openfoam.org
|
|
\\ / A nd | Version: dev
|
|
\\/ M anipulation |
|
|
\*---------------------------------------------------------------------------*/
|
|
FoamFile
|
|
{
|
|
format ascii;
|
|
class dictionary;
|
|
object blockMeshDict;
|
|
}
|
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
|
|
|
convertToMeters 1;
|
|
|
|
vertices
|
|
(
|
|
(0 0 0)
|
|
(1 0 0)
|
|
(1 1 0)
|
|
(0 1 0)
|
|
(0 0 1)
|
|
(1 0 1)
|
|
(1 1 1)
|
|
(0 1 1)
|
|
);
|
|
|
|
blocks
|
|
(
|
|
hex (0 1 2 3 4 5 6 7) (20 20 30) simpleGrading (1 1 1)
|
|
);
|
|
|
|
boundary
|
|
(
|
|
stationaryWalls
|
|
{
|
|
type wall;
|
|
faces
|
|
(
|
|
(0 3 2 1)
|
|
(2 6 5 1)
|
|
(1 5 4 0)
|
|
(3 7 6 2)
|
|
(0 4 7 3)
|
|
);
|
|
}
|
|
|
|
atmosphere
|
|
{
|
|
type patch;
|
|
faces
|
|
(
|
|
(4 5 6 7)
|
|
);
|
|
}
|
|
|
|
floatingObject
|
|
{
|
|
type wall;
|
|
faces ();
|
|
}
|
|
|
|
internal
|
|
{
|
|
type internal;
|
|
faces ();
|
|
}
|
|
);
|
|
|
|
|
|
// ************************************************************************* //
|