Files
OpenFOAM-12/etc/caseDicts/annotated/decomposeParDict
Henry Weller 9c73d4d206 decomposeParDict: The 'delta' entry for geometric decomposition is no option and defaults to 0.001
When using 'simple' or 'hierarchical' decomposition it is useful to slightly rotate a
coordinate-aligned block-mesh to improve the processor boundaries by avoiding
irregular cell distribution at those boundaries.  The degree of slight rotation
is controlled by the 'delta' coefficient and a value of 0.001 is generally
suitable so to avoid unnecessary clutter in 'decomposeParDict' 'delta' now
defaults to this value.
2021-06-24 10:18:20 +01:00

211 lines
5.6 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;
note "mesh decomposition control dictionary";
object decomposeParDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
numberOfSubdomains 2;
// Optional decomposition constraints
/*
constraints
{
preserveBaffles
{
//- Keep owner and neighbour of baffles on same processor (i.e.
// keep it detectable as a baffle). Baffles are two boundary face
// sharing the same points
type preserveBaffles;
}
preserveFaceZones
{
//- Keep owner and neighbour on same processor for faces in zones
type preserveFaceZones;
zones (".*");
}
preservePatches
{
//- Keep owner and neighbour on same processor for faces in patches
// (only makes sense for cyclic patches. Not suitable for e.g.
// cyclicAMI since these are not coupled on the patch level. Use
// singleProcessorFaceSets for those)
type preservePatches;
patches (".*");
}
singleProcessorFaceSets
{
//- Keep all of faceSet on a single processor. This puts all cells
// connected with a point, edge or face on the same processor.
// (just having face connected cells might not guarantee a balanced
// decomposition)
// The processor can be -1 (the decompositionMethod chooses the
// processor for a good load balance) or explicitly provided (upsets
// balance)
type singleProcessorFaceSets;
singleProcessorFaceSets ((f1 -1));
}
refinementHistory
{
//- Decompose cells such that all cell originating from single cell
// end up on same processor
type refinementHistory;
}
}
*/
// Deprecated form of specifying decomposition constraints:
//- Keep owner and neighbour on same processor for faces in zones:
// preserveFaceZones (heater solid1 solid3);
//- Keep owner and neighbour on same processor for faces in patches:
// (makes sense only for cyclic patches. Not suitable for e.g. cyclicAMI
// since these are not coupled on the patch level. Use
// singleProcessorFaceSets for those)
// preservePatches (cyclic_half0 cyclic_half1);
//- Keep all of faceSet on a single processor. This puts all cells
// connected with a point, edge or face on the same processor.
// (just having face connected cells might not guarantee a balanced
// decomposition)
// The processor can be -1 (the decompositionMethod chooses the processor
// for a good load balance) or explicitly provided (upsets balance).
// singleProcessorFaceSets ((f0 -1));
//- Keep owner and neighbour of baffles on same processor (i.e. keep it
// detectable as a baffle). Baffles are two boundary face sharing the
// same points.
// preserveBaffles true;
//- Use the volScalarField named here as a weight for each cell in the
// decomposition. For example, use a particle population field to decompose
// for a balanced number of particles in a lagrangian simulation.
// weightField dsmcRhoNMean;
method scotch;
// method hierarchical;
// method simple;
// method metis;
// method manual;
// method multiLevel;
// method structured; // does 2D decomposition of structured mesh
multiLevelCoeffs
{
// Decomposition methods to apply in turn. This is like hierarchical but
// fully general - every method can be used at every level.
level0
{
numberOfSubdomains 64;
// method simple;
// simpleCoeffs
// {
// n (2 1 1);
// delta 0.001;
// }
method scotch;
}
level1
{
numberOfSubdomains 4;
method scotch;
}
}
simpleCoeffs
{
// Number of processor blocks in each coordinate direction
n (2 1 1);
// Coefficient of the slight rotation of the mesh to bias the decomposition
// to be deterministic in the case that the initial block mesh is coordinate
// aligned
delta 0.001;
}
hierarchicalCoeffs
{
// Number of processor blocks in each coordinate direction
n (1 2 1);
// Coordinate order of the hierarchical decomposition
order xyz;
// Coefficient of the slight rotation of the mesh to bias the decomposition
// to be deterministic in the case that the initial block mesh is coordinate
// aligned
delta 0.001;
}
metisCoeffs
{
/*
processorWeights
(
1
1
1
1
);
*/
}
scotchCoeffs
{
/*
processorWeights
(
1
1
1
1
);
writeGraph true;
strategy "b";
*/
}
manualCoeffs
{
dataFile "decompositionData";
}
structuredCoeffs
{
// Patches to do 2D decomposition on. Structured mesh only; cells have
// to be in 'columns' on top of patches.
patches (movingWall);
// Method to use on the 2D subset
method scotch;
}
// Is the case distributed? Note: command-line argument -roots takes
// precedence
// distributed yes;
// Per slave (so nProcs-1 entries) the directory above the case.
/*
roots
(
"/tmp"
"/tmp"
);
*/
// ************************************************************************* //