Patches contributed by Mattijs Janssens:

splitMeshRegions: handle flipping of faces for surface fields

subsetMesh: subset dimensionedFields

decomposePar: use run-time selection of decomposition constraints. Used to
    keep cells on particular processors. See the decomposeParDict in

$FOAM_UTILITIES/parallel/decomposePar:
  - preserveBaffles: keep baffle faces on same processor
  - preserveFaceZones: keep faceZones owner and neighbour on same processor
  - preservePatches: keep owner and neighbour on same processor. Note: not
    suitable for cyclicAMI since these are not coupled on the patch level
  - singleProcessorFaceSets: keep complete faceSet on a single processor
  - refinementHistory: keep cells originating from a single cell on the
    same processor.

decomposePar: clean up decomposition of refinement data from snappyHexMesh

reconstructPar: reconstruct refinement data (refineHexMesh, snappyHexMesh)

reconstructParMesh: reconstruct refinement data (refineHexMesh, snappyHexMesh)

redistributePar:
  - corrected mapping surfaceFields
  - adding processor patches in order consistent with decomposePar

argList: check that slaves are running same version as master

fvMeshSubset: move to dynamicMesh library

fvMeshDistribute:
  - support for mapping dimensionedFields
  - corrected mapping of surfaceFields

parallel routines: allow parallel running on single processor

Field: support for
  - distributed mapping
  - mapping with flipping

mapDistribute: support for flipping

AMIInterpolation: avoid constructing localPoints
This commit is contained in:
Henry Weller
2016-05-15 16:36:48 +01:00
parent 274d1df8a4
commit ce0cd35185
93 changed files with 9230 additions and 2650 deletions

View File

@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation
\\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@ -36,8 +36,8 @@ SourceFiles
#define decompositionMethod_H
#include "polyMesh.H"
#include "pointField.H"
#include "CompactListList.H"
#include "decompositionConstraint.H"
namespace Foam
{
@ -56,6 +56,8 @@ protected:
const dictionary& decompositionDict_;
label nProcessors_;
//- Optional constraints
PtrList<decompositionConstraint> constraints_;
private:
@ -98,14 +100,7 @@ public:
// Constructors
//- Construct given the decomposition dictionary
decompositionMethod(const dictionary& decompositionDict)
:
decompositionDict_(decompositionDict),
nProcessors_
(
readLabel(decompositionDict.lookup("numberOfSubdomains"))
)
{}
decompositionMethod(const dictionary& decompositionDict);
//- Destructor
@ -226,6 +221,19 @@ public:
CompactListList<label>& cellCells
);
//- Helper: determine (local or global) cellCells and face weights
// from mesh agglomeration.
// Uses mag of faceArea as weights
static void calcCellCells
(
const polyMesh& mesh,
const labelList& agglom,
const label nLocalCoarse,
const bool parallel,
CompactListList<label>& cellCells,
CompactListList<scalar>& cellCellWeights
);
//- Helper: extract constraints:
// blockedface: existing faces where owner and neighbour on same
// proc
@ -241,6 +249,19 @@ public:
List<labelPair>& explicitConnections
);
//- Helper: apply constraints to a decomposition. This gives
// constraints opportunity to modify decomposition in case
// the native decomposition method has not obeyed all constraints
void applyConstraints
(
const polyMesh& mesh,
const boolList& blockedFace,
const PtrList<labelList>& specifiedProcessorFaces,
const labelList& specifiedProcessor,
const List<labelPair>& explicitConnections,
labelList& finalDecomp
);
// Decompose a mesh with constraints:
// - blockedFace : whether owner and neighbour should be on same
// processor