65 std::move(mappedField)
75 const bool allowUnknownPatchFields
83 forAll(boundaryAddressing_, patchi)
91 procMesh_.boundary()[patchi],
105 procMesh_.thisDb().time().timeName(),
116 VolFieldType& resF = tresF.
ref();
117 resF.oriented() =
field().oriented();
123 auto& bf = resF.boundaryFieldRef();
127 if (patchFieldDecomposerPtrs_.set(patchi))
134 field.boundaryField()[boundaryAddressing_[patchi]],
135 procMesh_.boundary()[patchi],
137 patchFieldDecomposerPtrs_[patchi]
141 else if (isA<processorCyclicFvPatch>(procMesh_.boundary()[patchi]))
148 procMesh_.boundary()[patchi],
152 field.primitiveField(),
153 processorVolPatchFieldDecomposerPtrs_[patchi]
158 else if (isA<processorFvPatch>(procMesh_.boundary()[patchi]))
165 procMesh_.boundary()[patchi],
169 field.primitiveField(),
170 processorVolPatchFieldDecomposerPtrs_[patchi]
175 else if (allowUnknownPatchFields)
182 procMesh_.boundary()[patchi],
213 procMesh_.nInternalFaces()
224 field.primitiveField(),
237 allFaceField[i] =
field.primitiveField()[i];
244 const label patchStart =
field.mesh().boundaryMesh()[patchi].start();
248 allFaceField[patchStart + i] =
p[i];
256 forAll(boundaryAddressing_, patchi)
264 procMesh_.boundary()[patchi],
277 procMesh_.thisDb().time().timeName(),
288 SurfaceFieldType& resF = tresF.
ref();
289 resF.oriented() =
field().oriented();
294 auto& bf = resF.boundaryFieldRef();
296 forAll(boundaryAddressing_, patchi)
298 if (patchFieldDecomposerPtrs_.set(patchi))
305 field.boundaryField()[boundaryAddressing_[patchi]],
306 procMesh_.boundary()[patchi],
308 patchFieldDecomposerPtrs_[patchi]
312 else if (isA<processorCyclicFvPatch>(procMesh_.boundary()[patchi]))
319 procMesh_.boundary()[patchi],
324 processorSurfacePatchFieldDecomposerPtrs_[patchi]
329 if (resF.oriented()())
331 bf[patchi] *= faceSign_[patchi];
334 else if (isA<processorFvPatch>(procMesh_.boundary()[patchi]))
341 procMesh_.boundary()[patchi],
346 processorSurfacePatchFieldDecomposerPtrs_[patchi]
351 if (resF.oriented()())
353 bf[patchi] *= faceSign_[patchi];
368template<
class GeoField>
Info<< nl<< "Wrote faMesh in vtk format: "<< writer.output().name()<< nl;}{ vtk::lineWriter writer(aMesh.points(), aMesh.edges(), fileName(aMesh.mesh().time().globalPath()/"finiteArea-edges"));writer.writeGeometry();writer.beginCellData(4);writer.writeProcIDs();{ Field< scalar > fld(faMeshTools::flattenEdgeField(aMesh.magLe(), true))
Field with dimensions and associated with geometry type GeoMesh which is used to size the field and a...
Generic templated field type.
Generic GeometricField class.
Defines the attributes of an object for which implicit objectRegistry management is supported,...
A list of pointers to objects of type <T>, with allocation/deallocation management of the pointers....
const T * set(const label i) const
A List obtained as a section of another List.
static word timeName(const scalar t, const int precision=precision_)
This boundary condition is not designed to be evaluated; it is assmued that the value is assigned via...
Foam::calculatedFvsPatchField.
This boundary condition provides an 'empty' condition for reduced dimensions cases,...
tmp< DimensionedField< Type, volMesh > > decomposeField(const DimensionedField< Type, volMesh > &field) const
Decompose internal field.
void decomposeFields(const PtrList< GeoField > &fields) const
Decompose list of fields.
virtual const objectRegistry & thisDb() const
Return the object registry - resolve conflict polyMesh/lduMesh.
Abstract base class with a fat-interface to all derived classes covering all possible ways in which t...
An abstract base class with a fat-interface to all derived classes covering all possible ways in whic...
const Time & time() const noexcept
Return time registry.
This boundary condition enables processor communication across cyclic patches.
Foam::processorCyclicFvsPatchField.
This boundary condition enables processor communication across patches.
Foam::processorFvsPatchField.
A class for managing temporary objects.
#define FatalErrorInFunction
Report an error message using Foam::FatalError.
errorManip< error > abort(error &err)
tmp< DimensionedField< TypeR, GeoMesh > > New(const tmp< DimensionedField< TypeR, GeoMesh > > &tdf1, const word &name, const dimensionSet &dimensions)
Global function forwards to reuseTmpDimensionedField::New.
multivariateSurfaceInterpolationScheme< scalar >::fieldTable fields
#define forAll(list, i)
Loop across all elements in list.