/*--------------------------------*- C++ -*----------------------------------*\ | ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / O peration | Version: v1806 | | \\ / A nd | Web: www.OpenFOAM.com | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ FoamFile { version 2.0; format ascii; class dictionary; note "mesh decomposition control dictionary"; object decomposeParDict; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // //- The total number of domains (mandatory) numberOfSubdomains 256; //- The decomposition method (mandatory) method scotch; // method hierarchical; // method simple; // method metis; // method manual; // method multiLevel; // method structured; // does 2D decomposition of structured mesh //- Optional region-wise decomposition. // Can specify a different method. // The number of subdomains can be less than the top-level numberOfSubdomains. regions { water { numberOfSubdomains 128; method metis; } ".*solid" { numberOfSubdomains 4; method metis; } heater { numberOfSubdomains 1; method none; } } // Coefficients for the decomposition method are either as a // general "coeffs" dictionary or method-specific "Coeffs". // For multiLevel, using multiLevelCoeffs only. multiLevelCoeffs { // multiLevel decomposition methods to apply in turn. // This is like hierarchical but fully general // - every method can be used at every level. // Only sub-dictionaries containing the keyword "method" are used. // level0 { numberOfSubdomains 16; method scotch; } level1 { numberOfSubdomains 2; method scotch; coeffs { n (2 1 1); delta 0.001; } } level2 { numberOfSubdomains 8; // method simple; method scotch; } } multiLevelCoeffs { // Compact multiLevel specification, activated by the presence of the // keywords "method" and "domains" method scotch; domains (16 2 8); //// Or with implicit '16' for the first level with numberOfSubdomains=256 //domains (2 8); } // Other example coefficients simpleCoeffs { n (2 1 1); // delta 0.001; //< default value = 0.001 } hierarchicalCoeffs { n (1 2 1); // delta 0.001; //< default value = 0.001 // order xyz; //< default order = xyz } 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; } //- 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; //// 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" //); // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // 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; // ************************************************************************* //