From 2a686dc44c2bf7a3d29a4cc070b60c89765a942a Mon Sep 17 00:00:00 2001 From: mattijs Date: Thu, 8 Nov 2012 12:00:40 +0000 Subject: [PATCH] ENH: channel395: run in parallel. Tests processorCyclic. --- .../pimpleFoam/channel395/Allrun | 10 +- .../channel395/constant/polyMesh/boundary | 8 ++ .../channel395/system/decomposeParDict | 135 ++++++++++++++++++ 3 files changed, 152 insertions(+), 1 deletion(-) create mode 100644 tutorials/incompressible/pimpleFoam/channel395/system/decomposeParDict diff --git a/tutorials/incompressible/pimpleFoam/channel395/Allrun b/tutorials/incompressible/pimpleFoam/channel395/Allrun index 61c1b54530..7f75af44c2 100755 --- a/tutorials/incompressible/pimpleFoam/channel395/Allrun +++ b/tutorials/incompressible/pimpleFoam/channel395/Allrun @@ -8,7 +8,15 @@ cd ${0%/*} || exit 1 # run from this directory application=`getApplication` runApplication blockMesh -runApplication $application + +#- Run serial +#runApplication $application + +#- Run parallel +runApplication decomposePar -cellDist +runParallel $application 5 +runApplication reconstructPar + runApplication postChannel # ----------------------------------------------------------------- end-of-file diff --git a/tutorials/incompressible/pimpleFoam/channel395/constant/polyMesh/boundary b/tutorials/incompressible/pimpleFoam/channel395/constant/polyMesh/boundary index 655c5c0b54..12dc93fdc2 100644 --- a/tutorials/incompressible/pimpleFoam/channel395/constant/polyMesh/boundary +++ b/tutorials/incompressible/pimpleFoam/channel395/constant/polyMesh/boundary @@ -32,6 +32,7 @@ FoamFile sides1_half0 { type cyclic; + inGroups 1(cyclic); nFaces 1000; startFace 177700; matchTolerance 0.0001; @@ -40,6 +41,7 @@ FoamFile sides1_half1 { type cyclic; + inGroups 1(cyclic); nFaces 1000; startFace 178700; matchTolerance 0.0001; @@ -48,6 +50,7 @@ FoamFile sides2_half0 { type cyclic; + inGroups 1(cyclic); nFaces 1000; startFace 179700; matchTolerance 0.0001; @@ -56,6 +59,7 @@ FoamFile sides2_half1 { type cyclic; + inGroups 1(cyclic); nFaces 1000; startFace 180700; matchTolerance 0.0001; @@ -64,6 +68,7 @@ FoamFile inout1_half0 { type cyclic; + inGroups 1(cyclic); nFaces 750; startFace 181700; matchTolerance 0.0001; @@ -72,6 +77,7 @@ FoamFile inout1_half1 { type cyclic; + inGroups 1(cyclic); nFaces 750; startFace 182450; matchTolerance 0.0001; @@ -80,6 +86,7 @@ FoamFile inout2_half0 { type cyclic; + inGroups 1(cyclic); nFaces 750; startFace 183200; matchTolerance 0.0001; @@ -88,6 +95,7 @@ FoamFile inout2_half1 { type cyclic; + inGroups 1(cyclic); nFaces 750; startFace 183950; matchTolerance 0.0001; diff --git a/tutorials/incompressible/pimpleFoam/channel395/system/decomposeParDict b/tutorials/incompressible/pimpleFoam/channel395/system/decomposeParDict new file mode 100644 index 0000000000..9f0365f2de --- /dev/null +++ b/tutorials/incompressible/pimpleFoam/channel395/system/decomposeParDict @@ -0,0 +1,135 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | +| \\ / O peration | Version: dev | +| \\ / A nd | Web: www.OpenFOAM.org | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + note "mesh decomposition control dictionary"; + object decomposeParDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +numberOfSubdomains 5; + +//- 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) +//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)); + + +//- 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; + } +} + +// Desired output + +simpleCoeffs +{ + n (2 1 1); + delta 0.001; +} + +hierarchicalCoeffs +{ + n (1 2 1); + delta 0.001; + 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 (bottomPatch); +} + +//// 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" +//); + +// ************************************************************************* //