mirror of
https://develop.openfoam.com/Development/openfoam.git
synced 2025-11-28 03:28:01 +00:00
Merge remote branch 'OpenCFD/master' into olesenm
Conflicts: src/finiteVolume/fields/fvPatchFields/derived/timeVaryingMappedFixedValue/timeVaryingMappedFixedValueFvPatchField.C
This commit is contained in:
@ -28,6 +28,7 @@ License
|
||||
#include "dictionary.H"
|
||||
#include "labelIOList.H"
|
||||
#include "processorPolyPatch.H"
|
||||
#include "processorCyclicPolyPatch.H"
|
||||
#include "fvMesh.H"
|
||||
#include "OSspecific.H"
|
||||
#include "Map.H"
|
||||
@ -108,7 +109,8 @@ Foam::domainDecomposition::domainDecomposition(const IOobject& io)
|
||||
procNeighbourProcessors_(nProcs_),
|
||||
procProcessorPatchSize_(nProcs_),
|
||||
procProcessorPatchStartIndex_(nProcs_),
|
||||
cyclicParallel_(false)
|
||||
procProcessorPatchSubPatchIDs_(nProcs_),
|
||||
procProcessorPatchSubPatchStarts_(nProcs_)
|
||||
{
|
||||
decompositionDict_.readIfPresent("distributed", distributed_);
|
||||
}
|
||||
@ -339,12 +341,42 @@ bool Foam::domainDecomposition::writeDecomposition()
|
||||
const labelList& curProcessorPatchStarts =
|
||||
procProcessorPatchStartIndex_[procI];
|
||||
|
||||
const labelListList& curSubPatchIDs =
|
||||
procProcessorPatchSubPatchIDs_[procI];
|
||||
|
||||
const labelListList& curSubStarts =
|
||||
procProcessorPatchSubPatchStarts_[procI];
|
||||
|
||||
const polyPatchList& meshPatches = boundaryMesh();
|
||||
|
||||
|
||||
// Count the number of inter-proc patches
|
||||
label nInterProcPatches = 0;
|
||||
forAll(curSubPatchIDs, procPatchI)
|
||||
{
|
||||
//Info<< "For processor " << procI
|
||||
// << " have to destination processor "
|
||||
// << curNeighbourProcessors[procPatchI] << endl;
|
||||
//
|
||||
//forAll(curSubPatchIDs[procPatchI], i)
|
||||
//{
|
||||
// Info<< " from patch:" << curSubPatchIDs[procPatchI][i]
|
||||
// << " starting at:" << curSubStarts[procPatchI][i]
|
||||
// << endl;
|
||||
//}
|
||||
|
||||
nInterProcPatches += curSubPatchIDs[procPatchI].size();
|
||||
}
|
||||
|
||||
//Info<< "For processor " << procI
|
||||
// << " have " << nInterProcPatches
|
||||
// << " patches to neighbouring processors" << endl;
|
||||
|
||||
|
||||
List<polyPatch*> procPatches
|
||||
(
|
||||
curPatchSizes.size()
|
||||
+ curProcessorPatchSizes.size(),
|
||||
+ nInterProcPatches, //curProcessorPatchSizes.size(),
|
||||
reinterpret_cast<polyPatch*>(0)
|
||||
);
|
||||
|
||||
@ -381,23 +413,84 @@ bool Foam::domainDecomposition::writeDecomposition()
|
||||
|
||||
forAll(curProcessorPatchSizes, procPatchI)
|
||||
{
|
||||
procPatches[nPatches] =
|
||||
new processorPolyPatch
|
||||
(
|
||||
word("procBoundary") + Foam::name(procI)
|
||||
+ word("to")
|
||||
+ Foam::name(curNeighbourProcessors[procPatchI]),
|
||||
curProcessorPatchSizes[procPatchI],
|
||||
curProcessorPatchStarts[procPatchI],
|
||||
nPatches,
|
||||
procMesh.boundaryMesh(),
|
||||
procI,
|
||||
curNeighbourProcessors[procPatchI]
|
||||
);
|
||||
const labelList& subPatchID = curSubPatchIDs[procPatchI];
|
||||
const labelList& subStarts = curSubStarts[procPatchI];
|
||||
|
||||
nPatches++;
|
||||
label curStart = curProcessorPatchStarts[procPatchI];
|
||||
|
||||
forAll(subPatchID, i)
|
||||
{
|
||||
label size =
|
||||
(
|
||||
i < subPatchID.size()-1
|
||||
? subStarts[i+1] - subStarts[i]
|
||||
: curProcessorPatchSizes[procPatchI] - subStarts[i]
|
||||
);
|
||||
|
||||
//Info<< "From processor:" << procI << endl
|
||||
// << " to processor:" << curNeighbourProcessors[procPatchI]
|
||||
// << endl
|
||||
// << " via patch:" << subPatchID[i] << endl
|
||||
// << " start :" << curStart << endl
|
||||
// << " size :" << size << endl;
|
||||
|
||||
if (subPatchID[i] == -1)
|
||||
{
|
||||
// From internal faces
|
||||
procPatches[nPatches] =
|
||||
new processorPolyPatch
|
||||
(
|
||||
word("procBoundary") + Foam::name(procI)
|
||||
+ "to"
|
||||
+ Foam::name(curNeighbourProcessors[procPatchI]),
|
||||
size,
|
||||
curStart,
|
||||
nPatches,
|
||||
procMesh.boundaryMesh(),
|
||||
procI,
|
||||
curNeighbourProcessors[procPatchI]
|
||||
);
|
||||
}
|
||||
else
|
||||
{
|
||||
// From cyclic
|
||||
const word& referPatch =
|
||||
boundaryMesh()[subPatchID[i]].name();
|
||||
|
||||
procPatches[nPatches] =
|
||||
new processorCyclicPolyPatch
|
||||
(
|
||||
word("procBoundary") + Foam::name(procI)
|
||||
+ "to"
|
||||
+ Foam::name(curNeighbourProcessors[procPatchI])
|
||||
+ "through"
|
||||
+ referPatch,
|
||||
size,
|
||||
curStart,
|
||||
nPatches,
|
||||
procMesh.boundaryMesh(),
|
||||
procI,
|
||||
curNeighbourProcessors[procPatchI],
|
||||
referPatch
|
||||
);
|
||||
}
|
||||
|
||||
curStart += size;
|
||||
|
||||
nPatches++;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//forAll(procPatches, patchI)
|
||||
//{
|
||||
// Pout<< " " << patchI
|
||||
// << '\t' << "name:" << procPatches[patchI]->name()
|
||||
// << '\t' << "type:" << procPatches[patchI]->type()
|
||||
// << '\t' << "size:" << procPatches[patchI]->size()
|
||||
// << endl;
|
||||
//}
|
||||
|
||||
// Add boundary patches
|
||||
procMesh.addPatches(procPatches);
|
||||
|
||||
@ -663,11 +756,7 @@ bool Foam::domainDecomposition::writeDecomposition()
|
||||
|
||||
forAll(procMesh.boundaryMesh(), patchi)
|
||||
{
|
||||
if
|
||||
(
|
||||
procMesh.boundaryMesh()[patchi].type()
|
||||
== processorPolyPatch::typeName
|
||||
)
|
||||
if (isA<processorPolyPatch>(procMesh.boundaryMesh()[patchi]))
|
||||
{
|
||||
const processorPolyPatch& ppp =
|
||||
refCast<const processorPolyPatch>
|
||||
@ -745,11 +834,7 @@ bool Foam::domainDecomposition::writeDecomposition()
|
||||
// (= identity map for original patches, -1 for processor patches)
|
||||
label nMeshPatches = curPatchSizes.size();
|
||||
labelList procBoundaryAddressing(identity(nMeshPatches));
|
||||
procBoundaryAddressing.setSize
|
||||
(
|
||||
nMeshPatches+curProcessorPatchSizes.size(),
|
||||
-1
|
||||
);
|
||||
procBoundaryAddressing.setSize(nMeshPatches+nProcPatches, -1);
|
||||
|
||||
labelIOList boundaryProcAddressing
|
||||
(
|
||||
|
||||
Reference in New Issue
Block a user