54 ? neighbour[addressing[i] - 1]
55 : owner[- addressing[i] - 1]
77 (
isFlux && addressing[i] < 0 ? -1 : +1)
78 *field[
mag(addressing[i]) - 1];
100 completeMesh_.time().name(),
111 forAll(procMeshes_, proci)
121 fieldIoObject.
name(),
122 procMeshes_[proci].time().name(),
151 fieldIoObject.
name(),
152 completeMesh_.time().name(),
163 forAll(procMeshes_, proci)
168 procMeshes_[proci].
boundary().size()
178 procMeshes_[proci].
boundary()[procPatchi],
192 fieldIoObject.
name(),
193 procMeshes_[proci].time().name(),
216 procMeshes_[proci].boundary()[procPatchi];
218 const label completePatchi = completePatchID(proci, procPatchi);
220 if (completePatchi == procPatchi)
230 patchFieldDecomposers_[proci][procPatchi]
234 else if (isA<processorCyclicFvPatch>(procPatch))
236 if (field.
boundaryField()[completePatchi].overridesConstraint())
239 str <<
"\nThe field \"" << field.
name()
240 <<
"\" on cyclic patch \""
242 <<
"\" cannot be decomposed as it is not a cyclic "
243 <<
"patch field. A \"patchType cyclic;\" setting has "
244 <<
"been used to override the cyclic patch type.\n\n"
245 <<
"Cyclic patches like this with non-cyclic boundary "
246 <<
"conditions should be confined to a single "
247 <<
"processor using decomposition constraints.";
253 const label nbrCompletePatchi =
254 refCast<const processorCyclicFvPatch>(procPatch)
255 .referPatch().nbrPatchIndex();
275 completeMesh_.lduAddr().patchAddr(nbrCompletePatchi),
277 faceProcAddressingBf_[proci][procPatchi]
280 else if (isA<processorFvPatch>(procPatch))
296 completeMesh_.owner(),
297 completeMesh_.neighbour(),
299 faceProcAddressingBf_[proci][procPatchi]
326 fieldIoObject.
name(),
327 completeMesh_.time().name(),
338 forAll(procMeshes_, proci)
342 faceProcAddressing_[proci],
343 procMeshes_[proci].nInternalFaces()
349 procMeshes_[proci].
boundary().size()
359 procMeshes_[proci].
boundary()[procPatchi],
374 procMeshes_[proci].time().name(),
401 procMeshes_[proci].boundary()[procPatchi];
403 const label completePatchi = completePatchID(proci, procPatchi);
405 if (completePatchi == procPatchi)
415 patchFieldDecomposers_[proci][procPatchi]
419 else if (isA<processorCyclicFvPatch>(procPatch))
431 faceProcAddressingBf_[proci][procPatchi],
437 else if (isA<processorFvPatch>(procPatch))
449 faceProcAddressingBf_[proci][procPatchi],
479 Info<<
nl <<
" Decomposing " << fieldClassName <<
"s" <<
nl <<
endl;
483 Info<<
" " << fieldIter()->name() <<
endl;
486 decomposeVolInternalField<Type>(*fieldIter());
490 procFields[proci].write();
509 Info<<
nl <<
" Decomposing " << fieldClassName <<
"s" <<
nl <<
endl;
513 Info<<
" " << fieldIter()->name() <<
endl;
516 decomposeVolField<Type>(*fieldIter());
520 procFields[proci].write();
539 Info<<
nl <<
" Decomposing " << fieldClassName <<
"s" <<
nl <<
endl;
543 Info<<
" " << fieldIter()->name() <<
endl;
546 decomposeFvSurfaceField<Type>(*fieldIter());
550 procFields[proci].write();
#define forAll(list, i)
Loop across all elements in list.
#define forAllConstIter(Container, container, iter)
Iterate across all elements in the container object of type.
Field with dimensions and associated with geometry type GeoMesh which is used to size the field and a...
const dimensionSet & dimensions() const
Return dimensions.
const PrimitiveField< Type > & primitiveField() const
Return a const-reference to the primitive field.
Pre-declare SubField and related Field type.
Generic GeometricBoundaryField class.
const HashPtrTable< Source > & table() const
Access the underlying field table.
Generic GeometricField class.
const Boundary & boundaryField() const
Return const-reference to the boundary field.
const Sources & sources() const
Return const-reference to the sources.
Boundary & boundaryFieldRef()
Return a reference to the boundary field.
const Internal::FieldType & primitiveField() const
Return a const-reference to the primitive field.
List of IOobjects with searching and retrieving facilities.
IOobject defines the attributes of an object for which implicit objectRegistry management is supporte...
const word & name() const
Return name.
Output to memory buffer stream.
string str() const
Return the string.
A templated 1D list of pointers to objects of type <T>, where the size of the array is known and used...
bool set(const label) const
Is element set.
A List obtained as a section of another List.
label size() const
Return the number of elements in the UList.
This boundary condition is not designed to be evaluated; it is assumed that the value is assigned via...
Foam::calculatedFvsPatchField.
PtrList< SurfaceField< Type > > decomposeFvSurfaceField(const IOobject &fieldIoObject) const
Decompose a surface field.
void decomposeVolFields(const IOobjectList &objects)
Read, decompose and write all volume fields.
PtrList< VolField< Type > > decomposeVolField(const IOobject &fieldIoObject) const
Decompose a volume field.
void decomposeFvSurfaceFields(const IOobjectList &objects)
Read, decompose and write all surface fields.
void decomposeVolInternalFields(const IOobjectList &objects)
Read, decompose and write all volume internal fields.
PtrList< typename VolField< Type >::Internal > decomposeVolInternalField(const IOobject &fieldIoObject) const
Decompose a volume internal field.
Abstract base class with a fat-interface to all derived classes covering all possible ways in which t...
A finiteVolume patch using a polyPatch and a fvBoundaryMesh.
An abstract base class with a fat-interface to all derived classes covering all possible ways in whic...
Foam::processorCyclicFvsPatchField.
Foam::processorFvsPatchField.
A class for managing temporary objects.
T & ref() const
Return non-const reference or generate a fatal error.
A class for handling words, derived from string.
#define FatalErrorInFunction
Report an error message using Foam::FatalError.
volScalarField sf(fieldObject, mesh)
gmvFile<< "tracers "<< particles.size()<< nl;{ pointField positions(particles.size());label particlei=0;forAllConstIter(lagrangian::Cloud< passiveParticle >, particles, iter) { positions[particlei++]=iter().position(mesh);} for(i=0;i< pTraits< point >::nComponents;i++) { forAll(positions, particlei) { gmvFile<< component(positions[particlei], i)<< ' ';} gmvFile<< nl;}}forAll(lagrangianScalarNames, i){ const word &name=lagrangianScalarNames[i];IOField< scalar > fld(IOobject(name, runTime.name(), lagrangian::cloud::prefix, mesh, IOobject::MUST_READ, IOobject::NO_WRITE))
Info<< "Calculating turbulent flame speed field St\n"<< endl;volScalarField St(IOobject("St", runTime.name(), mesh, IOobject::NO_READ, IOobject::AUTO_WRITE), flameWrinkling->Xi() *Su);multivariateSurfaceInterpolationScheme< scalar >::fieldTable fields
string breakIntoIndentedLines(const string &str, const string::size_type nLength=80, const string::size_type nIndent=0)
Break a string up into indented lines.
errorManipArg< error, int > exit(error &err, const int errNo=1)
intWM_LABEL_SIZE_t label
A label is an int32_t or int64_t as specified by the pre-processor macro WM_LABEL_SIZE.
Ostream & endl(Ostream &os)
Add newline and flush stream.
errorManip< error > abort(error &err)
bool isFlux(const DimensionedField< Type, surfaceMesh > &df)
Check if surfaceField is a flux.
void mag(LagrangianPatchField< scalar > &f, const LagrangianPatchField< Type > &f1)
UList< label > labelUList
faceListList boundary(nPatches)