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)
378 labelList curAddr(procInternalField.size());
380 forAll(procInternalField, addrI)
382 curAddr[addrI] =
mag(faceMap[addrI])-1;
383 if (faceMap[addrI] < 0)
385 procInternalField[addrI] = -procInternalField[addrI];
390 internalField.rmap(procInternalField, curAddr);
397 const label curBPatch = boundaryProcAddressing_[proci][
patchi];
401 procMeshes_[proci].boundary()[
patchi].patchSlice
403 faceProcAddressing_[proci]
411 if (!patchFields(curBPatch))
419 mesh_.boundary()[curBPatch],
423 mesh_.boundary()[curBPatch].size()
429 const label curPatchStart =
430 mesh_.boundaryMesh()[curBPatch].start();
438 reverseAddressing[facei] = cp[facei] - 1 - curPatchStart;
441 patchFields[curBPatch].rmap
456 label curF = cp[facei] - 1;
462 if (curF >= mesh_.nInternalFaces())
465 mesh_.boundaryMesh().whichPatch(curF);
467 if (!patchFields(curBPatch))
474 mesh_.boundary()[curBPatch].type(),
475 mesh_.boundary()[curBPatch],
485 [curBPatch].whichFace(curF);
487 patchFields[curBPatch][curPatchFace] =
493 internalField[curF] = curProcPatch[facei];
506 isType<emptyFvPatch>(mesh_.boundary()[
patchi])
532 procFields[0].dimensions(),
553 forAll(procMeshes_, proci)
562 fieldIoObject.
name(),
563 procMeshes_[proci].time().timeName(),
573 return reconstructFvSurfaceField
577 fieldIoObject.
name(),
578 mesh_.time().timeName(),
601 Info<<
" Reconstructing " << fieldClassName <<
"s\n" <<
endl;
607 selectedFields.
empty()
608 || selectedFields.
found(fieldIter()->
name())
611 Info<<
" " << fieldIter()->name() <<
endl;
613 reconstructFvVolumeInternalField<Type>(*fieldIter())().
write();
630 const word& fieldClassName =
637 Info<<
" Reconstructing " << fieldClassName <<
"s\n" <<
endl;
643 selectedFields.
empty()
644 || selectedFields.
found(fieldIter()->
name())
647 Info<<
" " << fieldIter()->name() <<
endl;
649 reconstructFvVolumeField<Type>(*fieldIter())().
write();
666 const word& fieldClassName =
673 Info<<
" Reconstructing " << fieldClassName <<
"s\n" <<
endl;
679 selectedFields.
empty()
680 || selectedFields.
found(fieldIter()->
name())
683 Info<<
" " << fieldIter()->name() <<
endl;
685 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.