diff --git a/applications/solvers/multiphase/twoPhaseEulerFoam/twoPhaseSystem/BlendedInterfacialModel/blendingMethods/noBlending/noBlending.C b/applications/solvers/multiphase/twoPhaseEulerFoam/twoPhaseSystem/BlendedInterfacialModel/blendingMethods/noBlending/noBlending.C index 37c543a8..f83cdd55 100644 --- a/applications/solvers/multiphase/twoPhaseEulerFoam/twoPhaseSystem/BlendedInterfacialModel/blendingMethods/noBlending/noBlending.C +++ b/applications/solvers/multiphase/twoPhaseEulerFoam/twoPhaseSystem/BlendedInterfacialModel/blendingMethods/noBlending/noBlending.C @@ -88,7 +88,7 @@ Foam::tmp Foam::blendingMethods::noBlending::f1 ( "f", dimless, - phase1.name() == continuousPhase_ + phase2.name() != continuousPhase_ ) ) ); @@ -101,7 +101,28 @@ Foam::tmp Foam::blendingMethods::noBlending::f2 const phaseModel& phase2 ) const { - return f1(phase1, phase2); + const fvMesh& mesh(phase1.mesh()); + + return + tmp + ( + new volScalarField + ( + IOobject + ( + "f", + mesh.time().timeName(), + mesh + ), + mesh, + dimensionedScalar + ( + "f", + dimless, + phase1.name() == continuousPhase_ + ) + ) + ); } diff --git a/applications/utilities/miscellaneous/foamHelp/helpTypes/Make/options b/applications/utilities/miscellaneous/foamHelp/helpTypes/Make/options index 8b00d9a6..01b25c79 100644 --- a/applications/utilities/miscellaneous/foamHelp/helpTypes/Make/options +++ b/applications/utilities/miscellaneous/foamHelp/helpTypes/Make/options @@ -1,7 +1,7 @@ EXE_INC = \ -I$(LIB_SRC)/finiteVolume/lnInclude -EXE_LIBS = \ +LIB_LIBS = \ -lfiniteVolume \ -lincompressibleTurbulenceModel \ -lcompressibleTurbulenceModel \ diff --git a/applications/utilities/parallelProcessing/decomposePar/domainDecomposition.H b/applications/utilities/parallelProcessing/decomposePar/domainDecomposition.H index 9487aefe..21bc8e61 100644 --- a/applications/utilities/parallelProcessing/decomposePar/domainDecomposition.H +++ b/applications/utilities/parallelProcessing/decomposePar/domainDecomposition.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2014 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -130,7 +130,7 @@ class domainDecomposition //- Append single element to list static void append(labelList&, const label); - //- Add face to interProcessor patch. + //- Add face to inter-processor patch void addInterProcFace ( const label facei, @@ -141,6 +141,19 @@ class domainDecomposition List > >& ) const; + //- Generate sub patch info for processor cyclics + template + void processInterCyclics + ( + const polyBoundaryMesh& patches, + List > >& interPatchFaces, + List >& procNbrToInterPatch, + List& subPatchIDs, + List& subPatchStarts, + bool owner, + BinaryOp bop + ) const; + public: @@ -187,6 +200,12 @@ public: } // End namespace Foam +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#ifdef NoRepository + #include "domainDecompositionTemplates.C" +#endif + // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // #endif diff --git a/applications/utilities/parallelProcessing/decomposePar/domainDecompositionMesh.C b/applications/utilities/parallelProcessing/decomposePar/domainDecompositionMesh.C index 14512332..f5a76722 100644 --- a/applications/utilities/parallelProcessing/decomposePar/domainDecompositionMesh.C +++ b/applications/utilities/parallelProcessing/decomposePar/domainDecompositionMesh.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2014 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -32,9 +32,7 @@ Description #include "domainDecomposition.H" #include "IOstreams.H" -#include "SLPtrList.H" #include "boolList.H" -#include "primitiveMesh.H" #include "cyclicPolyPatch.H" // * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // @@ -209,10 +207,11 @@ void Foam::domainDecomposition::decomposeMesh() // Done internal bits of the new mesh and the ordinary patches. - // Per processor, from neighbour processor to the interprocessorpatch that - // communicates with that neighbour. + // Per processor, from neighbour processor to the inter-processor patch + // that communicates with that neighbour List > procNbrToInterPatch(nProcs_); - // Per processor the faces per interprocessorpatch. + + // Per processor the faces per inter-processor patch List > > interPatchFaces(nProcs_); // Processor boundaries from internal faces @@ -248,95 +247,73 @@ void Foam::domainDecomposition::decomposeMesh() subPatchStarts[procI].setSize(nInterfaces, labelList(1, label(0))); } - // Processor boundaries from split cyclics - forAll(patches, patchi) - { - if (isA(patches[patchi])) - { - const cyclicPolyPatch& pp = refCast - ( - patches[patchi] - ); - // cyclic: check opposite side on this processor - const labelUList& patchFaceCells = pp.faceCells(); - const labelUList& nbrPatchFaceCells = - pp.neighbPatch().faceCells(); + // Special handling needed for the case that multiple processor cyclic + // patches are created on each local processor domain, e.g. if a 3x3 case + // is decomposed using the decomposition: + // + // | 1 | 0 | 2 | + // cyclic left | 2 | 0 | 1 | cyclic right + // | 2 | 0 | 1 | + // + // - processors 1 and 2 will both have pieces of both cyclic left- and + // right sub-patches present + // - the interface patch faces are stored in a single list, where each + // sub-patch is referenced into the list using a patch start index and + // size + // - if the patches are in order (in the boundary file) of left, right + // - processor 1 will send: left, right + // - processor 1 will need to receive in reverse order: right, left + // - similarly for processor 2 + // - the sub-patches are therefore generated in 4 passes of the patch lists + // 1. add faces from owner patch where local proc i < nbr proc i + // 2. add faces from nbr patch where local proc i < nbr proc i + // 3. add faces from owner patch where local proc i > nbr proc i + // 4. add faces from nbr patch where local proc i > nbr proc i - // Store old sizes. Used to detect which inter-proc patches - // have been added to. - labelListList oldInterfaceSizes(nProcs_); - forAll(oldInterfaceSizes, procI) - { - labelList& curOldSizes = oldInterfaceSizes[procI]; + processInterCyclics + ( + patches, + interPatchFaces, + procNbrToInterPatch, + subPatchIDs, + subPatchStarts, + true, + lessOp