78 void mapConsistentMesh
85 meshToMesh meshToMeshInterp(meshSource, meshTarget);
88 <<
"Consistently creating and mapping fields for time "
97 MapConsistentVolFields<scalar>(objects, meshToMeshInterp);
98 MapConsistentVolFields<vector>(objects, meshToMeshInterp);
99 MapConsistentVolFields<sphericalTensor>(objects, meshToMeshInterp);
100 MapConsistentVolFields<symmTensor>(objects, meshToMeshInterp);
101 MapConsistentVolFields<tensor>(objects, meshToMeshInterp);
110 UnMapped<surfaceScalarField>(objects);
111 UnMapped<surfaceVectorField>(objects);
112 UnMapped<surfaceSphericalTensorField>(objects);
113 UnMapped<surfaceSymmTensorField>(objects);
114 UnMapped<surfaceTensorField>(objects);
118 UnMapped<pointScalarField>(objects);
119 UnMapped<pointVectorField>(objects);
120 UnMapped<pointSphericalTensorField>(objects);
121 UnMapped<pointSymmTensorField>(objects);
122 UnMapped<pointTensorField>(objects);
147 <<
"Mapping fields for time " << meshSource.
time().
timeName()
156 MapVolFields<scalar>(objects, meshToMeshInterp);
157 MapVolFields<vector>(objects, meshToMeshInterp);
158 MapVolFields<sphericalTensor>(objects, meshToMeshInterp);
159 MapVolFields<symmTensor>(objects, meshToMeshInterp);
160 MapVolFields<tensor>(objects, meshToMeshInterp);
169 UnMapped<surfaceScalarField>(objects);
170 UnMapped<surfaceVectorField>(objects);
171 UnMapped<surfaceSphericalTensorField>(objects);
172 UnMapped<surfaceSymmTensorField>(objects);
173 UnMapped<surfaceTensorField>(objects);
177 UnMapped<pointScalarField>(objects);
178 UnMapped<pointVectorField>(objects);
179 UnMapped<pointSphericalTensorField>(objects);
180 UnMapped<pointSymmTensorField>(objects);
181 UnMapped<pointTensorField>(objects);
188 void mapConsistentSubMesh
217 mapSubMesh(meshSource, meshTarget, patchMap, cuttingPatchTable.
toc());
229 forAll (cuttingPatches, i)
231 cuttingPatchTable.
insert(cuttingPatches[i], i);
240 !cuttingPatchTable.
found
255 return cuttingPatchTable.
toc();
261 int main(
int argc,
char *argv[])
276 runTimeTarget.system(),
284 mapFieldsDict.lookup(
"patchMap") >> patchMap;
286 mapFieldsDict.lookup(
"cuttingPatches") >> cuttingPatches;
289 if (parallelSource && !parallelTarget)
296 runTimeSource.system(),
303 int nProcs(
readInt(decompositionDict.lookup(
"numberOfSubdomains")));
305 Info<<
"Create target mesh\n" <<
endl;
311 fvMesh::defaultRegion,
312 runTimeTarget.timeName(),
319 for (
int procI=0; procI<nProcs; procI++)
321 Info<<
nl <<
"Source processor " << procI <<
endl;
325 Time::controlDictName,
336 fvMesh::defaultRegion,
337 runTimeSource.timeName(),
346 mapConsistentSubMesh(meshSource, meshTarget);
350 mapSubMesh(meshSource, meshTarget, patchMap, cuttingPatches);
354 else if (!parallelSource && parallelTarget)
361 runTimeTarget.system(),
368 int nProcs(
readInt(decompositionDict.lookup(
"numberOfSubdomains")));
370 Info<<
"Create source mesh\n" <<
endl;
378 fvMesh::defaultRegion,
379 runTimeSource.timeName(),
386 for (
int procI=0; procI<nProcs; procI++)
388 Info<<
nl <<
"Target processor " << procI <<
endl;
392 Time::controlDictName,
401 fvMesh::defaultRegion,
402 runTimeTarget.timeName(),
411 mapConsistentSubMesh(meshSource, meshTarget);
420 addProcessorPatches(meshTarget, cuttingPatches)
425 else if (parallelSource && parallelTarget)
432 runTimeSource.system(),
441 readInt(decompositionDictSource.lookup(
"numberOfSubdomains"))
450 runTimeTarget.system(),
459 readInt(decompositionDictTarget.lookup(
"numberOfSubdomains"))
465 for (
int procISource=0; procISource<nProcsSource; procISource++)
467 Info<<
nl <<
"Source processor " << procISource <<
endl;
471 Time::controlDictName,
482 fvMesh::defaultRegion,
483 runTimeSource.timeName(),
492 for (
int procITarget=0; procITarget<nProcsTarget; procITarget++)
496 !bbsTargetSet[procITarget]
498 bbsTargetSet[procITarget]
499 && bbsTarget[procITarget].overlaps(bbSource)
503 Info<<
nl <<
"Target processor " << procITarget <<
endl;
507 Time::controlDictName,
517 fvMesh::defaultRegion,
518 runTimeTarget.timeName(),
525 bbsTarget[procITarget] = meshTarget.
bounds();
526 bbsTargetSet[procITarget] =
true;
528 if (bbsTarget[procITarget].overlaps(bbSource))
532 mapConsistentSubMesh(meshSource, meshTarget);
541 addProcessorPatches(meshTarget, cuttingPatches)
559 fvMesh::defaultRegion,
560 runTimeSource.timeName(),
569 fvMesh::defaultRegion,
570 runTimeTarget.timeName(),
576 <<
"Target mesh size: " << meshTarget.
nCells() <<
nl <<
endl;
580 mapConsistentMesh(meshSource, meshTarget);
584 mapSubMesh(meshSource, meshTarget, patchMap, cuttingPatches);