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)
380 labelList curAddr(procInternalField.size());
382 forAll(procInternalField, i)
384 curAddr[i] =
mag(faceMap[i]) - 1;
387 procInternalField[i] = -procInternalField[i];
392 internalField.rmap(procInternalField, curAddr);
408 const label curBPatch = boundaryProcAddressing_[proci][
patchi];
412 procMeshes_[proci].boundary()[
patchi].patchSlice
414 faceProcAddressing_[proci]
422 if (!patchFields(curBPatch))
430 mesh_.boundary()[curBPatch],
434 mesh_.boundary()[curBPatch].size()
440 const label curPatchStart =
441 mesh_.boundaryMesh()[curBPatch].start();
449 reverseAddressing[facei] = cp[facei] - 1 - curPatchStart;
452 patchFields[curBPatch].rmap
467 label curF = cp[facei] - 1;
473 if (curF >= mesh_.nInternalFaces())
476 mesh_.boundaryMesh().whichPatch(curF);
478 if (!patchFields(curBPatch))
485 mesh_.boundary()[curBPatch].type(),
486 mesh_.boundary()[curBPatch],
496 [curBPatch].whichFace(curF);
498 patchFields[curBPatch][curPatchFace] =
504 internalField[curF] = curProcPatch[facei];
517 isType<emptyFvPatch>(mesh_.boundary()[
patchi])
543 procFields[0].dimensions(),
564 forAll(procMeshes_, proci)
573 fieldIoObject.
name(),
574 procMeshes_[proci].time().timeName(),
584 return reconstructFvSurfaceField
588 fieldIoObject.
name(),
589 mesh_.time().timeName(),
612 Info<<
" Reconstructing " << fieldClassName <<
"s\n" <<
endl;
618 selectedFields.
empty()
619 || selectedFields.
found(fieldIter()->
name())
622 Info<<
" " << fieldIter()->name() <<
endl;
624 reconstructFvVolumeInternalField<Type>(*fieldIter())().
write();
641 const word& fieldClassName =
648 Info<<
" Reconstructing " << fieldClassName <<
"s\n" <<
endl;
654 selectedFields.
empty()
655 || selectedFields.
found(fieldIter()->
name())
658 Info<<
" " << fieldIter()->name() <<
endl;
660 reconstructFvVolumeField<Type>(*fieldIter())().
write();
677 const word& fieldClassName =
684 Info<<
" Reconstructing " << fieldClassName <<
"s\n" <<
endl;
690 selectedFields.
empty()
691 || selectedFields.
found(fieldIter()->
name())
694 Info<<
" " << fieldIter()->name() <<
endl;
696 reconstructFvSurfaceField<Type>(*fieldIter())().
write();
A HashTable with keys but without contents.
Field< label > labelField
Specialisation of Field<T> for label.
#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.
Traits class for primitives.
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.