37 void Foam::fvMeshAdder::MapVolField
39 const mapAddedPolyMesh& meshMap,
41 GeometricField<Type, fvPatchField, volMesh>&
fld,
42 const GeometricField<Type, fvPatchField, volMesh>& fldToAdd,
43 const bool fullyMapped
46 const fvMesh&
mesh =
fld.mesh();
53 Field<Type> oldInternalField(
fld.primitiveField());
56 Field<Type>& intFld =
fld.primitiveFieldRef();
58 intFld.setSize(
mesh.nCells());
60 intFld.rmap(oldInternalField, meshMap.oldCellMap());
61 intFld.rmap(fldToAdd.primitiveField(), meshMap.addedCellMap());
68 auto& bfld =
fld.boundaryFieldRef();
71 const labelList& oldPatchMap = meshMap.oldPatchMap();
72 const labelList& oldPatchStarts = meshMap.oldPatchStarts();
73 const labelList& oldPatchSizes = meshMap.oldPatchSizes();
77 label unusedPatchi = 0;
79 forAll(oldPatchMap, patchi)
81 label newPatchi = oldPatchMap[patchi];
89 label nUsedPatches = unusedPatchi;
94 forAll(oldPatchMap, patchi)
96 const label newPatchi = oldPatchMap[patchi];
100 oldToNew[patchi] = newPatchi;
104 oldToNew[patchi] = unusedPatchi++;
110 bfld.reorder(oldToNew);
112 bfld.setSize(
mesh.boundaryMesh().size());
116 label newPatchi = nUsedPatches;
117 newPatchi < bfld.size();
121 bfld.set(newPatchi,
nullptr);
128 forAll(oldPatchMap, patchi)
130 label newPatchi = oldPatchMap[patchi];
138 oldPatchStarts[patchi],
139 oldPatchSizes[patchi],
140 meshMap.oldFaceMap(),
141 mesh.boundaryMesh()[newPatchi],
146 directFvPatchFieldMapper patchMapper(newToOld);
152 patchMapper.hasUnmapped() =
false;
168 mesh.boundary()[newPatchi],
183 const labelList& addedPatchMap = meshMap.addedPatchMap();
186 forAll(addedPatchMap, patchi)
188 label newPatchi = addedPatchMap[patchi];
192 const polyPatch& newPatch =
mesh.boundaryMesh()[newPatchi];
193 const polyPatch& oldPatch =
194 fldToAdd.mesh().boundaryMesh()[patchi];
196 if (!bfld(newPatchi))
208 meshMap.addedFaceMap(),
214 directFvPatchFieldMapper patchMapper(newToAdded);
220 patchMapper.hasUnmapped() =
false;
228 fldToAdd.boundaryField()[patchi],
229 mesh.boundary()[newPatchi],
240 labelList addedToNew(oldPatch.size(), -1);
243 label addedFacei = oldPatch.start()+i;
244 label newFacei = meshMap.addedFaceMap()[addedFacei];
245 label patchFacei = newFacei-newPatch.start();
246 if (patchFacei >= 0 && patchFacei < newPatch.size())
248 addedToNew[i] = patchFacei;
254 fldToAdd.boundaryField()[patchi],
270 const bool fullyMapped
277 mesh.objectRegistry::lookupClass<fldType>()
282 meshToAdd.objectRegistry::lookupClass<fldType>()
292 fldType&
fld =
const_cast<fldType&
>(*fieldIter());
295 <<
"MapVolFields : Storing old time for " <<
fld.name()
304 fldType&
fld =
const_cast<fldType&
>(*fieldIter());
308 const fldType& fldToAdd = *fieldsToAdd[
fld.name()];
311 <<
"MapVolFields : mapping " <<
fld.name()
312 <<
" and " << fldToAdd.name() <<
endl;
314 MapVolField<Type>(meshMap,
fld, fldToAdd, fullyMapped);
319 <<
"Not mapping field " <<
fld.name()
320 <<
" since not present on mesh to add"
328 void Foam::fvMeshAdder::MapSurfaceField
334 const bool fullyMapped
340 auto& bfld =
fld.boundaryFieldRef();
365 label start = oldPatchStarts[patchi];
369 label newFacei = meshMap.
oldFaceMap()[start + i];
373 intFld[newFacei] = pf[i];
389 label unusedPatchi = 0;
391 forAll(oldPatchMap, patchi)
393 label newPatchi = oldPatchMap[patchi];
401 label nUsedPatches = unusedPatchi;
406 forAll(oldPatchMap, patchi)
408 const label newPatchi = oldPatchMap[patchi];
412 oldToNew[patchi] = newPatchi;
416 oldToNew[patchi] = unusedPatchi++;
422 bfld.reorder(oldToNew);
428 label newPatchi = nUsedPatches;
429 newPatchi < bfld.size();
433 bfld.set(newPatchi,
nullptr);
440 forAll(oldPatchMap, patchi)
442 label newPatchi = oldPatchMap[patchi];
450 oldPatchStarts[patchi],
451 oldPatchSizes[patchi],
458 directFvPatchFieldMapper patchMapper(newToOld);
464 patchMapper.hasUnmapped() =
false;
498 forAll(addedPatchMap, patchi)
500 label newPatchi = addedPatchMap[patchi];
505 const polyPatch& oldPatch =
506 fldToAdd.mesh().boundaryMesh()[patchi];
508 if (!bfld(newPatchi))
526 directFvPatchFieldMapper patchMapper(newToAdded);
532 patchMapper.hasUnmapped() =
false;
552 labelList addedToNew(oldPatch.size(), -1);
555 label addedFacei = oldPatch.start()+i;
557 label patchFacei = newFacei-newPatch.start();
558 if (patchFacei >= 0 && patchFacei < newPatch.size())
560 addedToNew[i] = patchFacei;
582 const bool fullyMapped
589 mesh.objectRegistry::lookupClass<fldType>()
594 meshToAdd.objectRegistry::lookupClass<fldType>()
604 fldType&
fld =
const_cast<fldType&
>(*fieldIter());
607 <<
"MapSurfaceFields : Storing old time for "
616 fldType&
fld =
const_cast<fldType&
>(*fieldIter());
620 const fldType& fldToAdd = *fieldsToAdd[
fld.name()];
623 <<
"MapSurfaceFields : mapping " <<
fld.name()
624 <<
" and " << fldToAdd.name() <<
endl;
626 MapSurfaceField<Type>(meshMap,
fld, fldToAdd, fullyMapped);
631 <<
"Not mapping field " <<
fld.name()
632 <<
" since not present on mesh to add"
640 void Foam::fvMeshAdder::MapDimField
674 mesh.objectRegistry::lookupClass<fldType>(
true)
679 meshToAdd.objectRegistry::lookupClass<fldType>(
true)
684 fldType&
fld =
const_cast<fldType&
>(*fieldIter());
688 const fldType& fldToAdd = *fieldsToAdd[
fld.name()];
691 <<
"MapDimFields : mapping " <<
fld.name()
692 <<
" and " << fldToAdd.name() <<
endl;
694 MapDimField<Type>(meshMap,
fld, fldToAdd);
699 <<
"Not mapping field " <<
fld.name()
700 <<
" since not present on mesh to add"