55 cellProcAddressing_[proci]
65 procFields[0].dimensions(),
95 procMeshes_[proci].time().timeName(),
106 return reconstructFvVolumeInternalField
110 fieldIoObject.
name(),
111 mesh_.time().timeName(),
144 cellProcAddressing_[proci]
151 const label curBPatch = boundaryProcAddressing_[proci][
patchi];
155 procField.
mesh().boundary()[
patchi].patchSlice
157 faceProcAddressing_[proci]
165 if (!patchFields(curBPatch))
173 mesh_.boundary()[curBPatch],
177 mesh_.boundary()[curBPatch].size()
183 const label curPatchStart =
184 mesh_.boundaryMesh()[curBPatch].start();
194 <<
"Processor " << proci
198 <<
" originates from reversed face since " 205 reverseAddressing[facei] = cp[facei] - 1 - curPatchStart;
209 patchFields[curBPatch].rmap
226 label curF = cp[facei] - 1;
229 if (curF >= mesh_.nInternalFaces())
231 label curBPatch = mesh_.boundaryMesh().whichPatch(curF);
233 if (!patchFields(curBPatch))
240 mesh_.boundary()[curBPatch].type(),
241 mesh_.boundary()[curBPatch],
250 [curBPatch].whichFace(curF);
252 patchFields[curBPatch][curPatchFace] =
265 isType<emptyFvPatch>(mesh_.boundary()[
patchi])
291 procFields[0].dimensions(),
312 forAll(procMeshes_, proci)
321 fieldIoObject.
name(),
322 procMeshes_[proci].time().timeName(),
332 return reconstructFvVolumeField
336 fieldIoObject.
name(),
337 mesh_.time().timeName(),
362 forAll(procMeshes_, proci)
379 labelList curAddr(procInternalField.size());
381 forAll(procInternalField, addrI)
383 curAddr[addrI] =
mag(faceMap[addrI])-1;
384 if (faceMap[addrI] < 0)
386 procInternalField[addrI] = -procInternalField[addrI];
391 internalField.rmap(procInternalField, curAddr);
398 const label curBPatch = boundaryProcAddressing_[proci][
patchi];
402 procMeshes_[proci].boundary()[
patchi].patchSlice
404 faceProcAddressing_[proci]
412 if (!patchFields(curBPatch))
420 mesh_.boundary()[curBPatch],
424 mesh_.boundary()[curBPatch].size()
430 const label curPatchStart =
431 mesh_.boundaryMesh()[curBPatch].start();
439 reverseAddressing[facei] = cp[facei] - 1 - curPatchStart;
442 patchFields[curBPatch].rmap
457 label curF = cp[facei] - 1;
463 if (curF >= mesh_.nInternalFaces())
466 mesh_.boundaryMesh().whichPatch(curF);
468 if (!patchFields(curBPatch))
475 mesh_.boundary()[curBPatch].type(),
476 mesh_.boundary()[curBPatch],
486 [curBPatch].whichFace(curF);
488 patchFields[curBPatch][curPatchFace] =
494 internalField[curF] = curProcPatch[facei];
507 isType<emptyFvPatch>(mesh_.boundary()[
patchi])
533 procFields[0].dimensions(),
554 forAll(procMeshes_, proci)
563 fieldIoObject.
name(),
564 procMeshes_[proci].time().timeName(),
574 return reconstructFvSurfaceField
578 fieldIoObject.
name(),
579 mesh_.time().timeName(),
602 Info<<
" Reconstructing " << fieldClassName <<
"s\n" <<
endl;
608 selectedFields.
empty()
609 || selectedFields.
found(fieldIter()->
name())
612 Info<<
" " << fieldIter()->name() <<
endl;
614 reconstructFvVolumeInternalField<Type>(*fieldIter())().
write();
631 const word& fieldClassName =
638 Info<<
" Reconstructing " << fieldClassName <<
"s\n" <<
endl;
644 selectedFields.
empty()
645 || selectedFields.
found(fieldIter()->
name())
648 Info<<
" " << fieldIter()->name() <<
endl;
650 reconstructFvVolumeField<Type>(*fieldIter())().
write();
667 const word& fieldClassName =
674 Info<<
" Reconstructing " << fieldClassName <<
"s\n" <<
endl;
680 selectedFields.
empty()
681 || selectedFields.
found(fieldIter()->
name())
684 Info<<
" " << fieldIter()->name() <<
endl;
686 reconstructFvSurfaceField<Type>(*fieldIter())().
write();
A HashTable with keys but without contents.
#define forAll(list, i)
Loop across all elements in list.
intWM_LABEL_SIZE_t label
A label is an int32_t or int64_t as specified by the pre-processor macro WM_LABEL_SIZE.
const word & name() const
Return name.
List of IOobjects with searching and retrieving facilities.
tmp< GeometricField< Type, fvPatchField, volMesh > > reconstructFvVolumeField(const IOobject &fieldIoObject, const PtrList< GeometricField< Type, fvPatchField, volMesh >> &) const
Reconstruct volume field.
errorManipArg< error, int > exit(error &err, const int errNo=1)
#define FatalErrorInFunction
Report an error message using Foam::FatalError.
const Boundary & boundaryField() const
Return const-reference to the boundary field.
void reconstructFvSurfaceFields(const IOobjectList &objects, const HashSet< word > &selectedFields)
Read, reconstruct and write all/selected surface fields.
bool empty() const
Return true if the hash table is empty.
Ostream & endl(Ostream &os)
Add newline and flush stream.
Abstract base class with a fat-interface to all derived classes covering all possible ways in which t...
const Internal::FieldType & primitiveField() const
Return a const-reference to the internal field.
Generic GeometricField class.
label size() const
Return number of elements in table.
Pair< int > faceMap(const label facePi, const face &faceP, const label faceNi, const face &faceN)
multivariateSurfaceInterpolationScheme< scalar >::fieldTable fields
A List obtained as a section of another List.
bool found(const Key &) const
Return true if hashedEntry is found in table.
Pre-declare SubField and related Field type.
A class for handling words, derived from string.
forAllConstIter(PtrDictionary< phaseModel >, mixture.phases(), phase)
const volScalarField & cp
const Mesh & mesh() const
Return mesh.
Mapper for sizing only - does not do any actual mapping.
const Field< Type > & field() const
word name(const complex &)
Return a string representation of a complex.
IOobjectList lookupClass(const word &className) const
Return the list for all IOobjects of a given class.
void rmap(const UList< Type > &mapF, const labelUList &mapAddressing)
1 to 1 reverse-map from the given field
Foam::emptyFvsPatchField.
A templated 1D list of pointers to objects of type <T>, where the size of the array is known and used...
Field with dimensions and associated with geometry type GeoMesh which is used to size the field and a...
dimensioned< scalar > mag(const dimensioned< Type > &)
virtual Ostream & write(const token &)=0
Write next token to stream.
tmp< DimensionedField< Type, volMesh > > reconstructFvVolumeInternalField(const IOobject &fieldIoObject, const PtrList< DimensionedField< Type, volMesh >> &procFields) const
Reconstruct volume internal field.
This boundary condition provides an 'empty' condition for reduced dimensions cases, i.e. 1- and 2-D geometries. Apply this condition to patches whose normal is aligned to geometric directions that do not constitue solution directions.
void reconstructFvVolumeFields(const IOobjectList &objects, const HashSet< word > &selectedFields)
Read, reconstruct and write all/selected volume fields.
A class for managing temporary objects.
label size() const
Return the number of elements in the UList.
IOobject defines the attributes of an object for which implicit objectRegistry management is supporte...
An abstract base class with a fat-interface to all derived classes covering all possible ways in whic...
void reconstructFvVolumeInternalFields(const IOobjectList &objects, const HashSet< word > &selectedFields)
Read, reconstruct and write all/selected volume internal fields.
tmp< GeometricField< Type, fvsPatchField, surfaceMesh > > reconstructFvSurfaceField(const IOobject &fieldIoObject, const PtrList< GeometricField< Type, fvsPatchField, surfaceMesh >> &) const
Reconstruct surface field.