54 #include "surfaceInterpolate.H" 66 void Foam::fvMesh::clearGeomNotOldVol()
99 void Foam::fvMesh::updateGeomNotOldVol()
101 bool haveV = (VPtr_ !=
nullptr);
102 bool haveSf = (SfSlicePtr_ !=
nullptr || SfPtr_ !=
nullptr);
103 bool haveMagSf = (magSfSlicePtr_ !=
nullptr || magSfPtr_ !=
nullptr);
104 bool haveCP = (CSlicePtr_ !=
nullptr || CPtr_ !=
nullptr);
105 bool haveCf = (CfSlicePtr_ !=
nullptr || CfPtr_ !=
nullptr);
107 clearGeomNotOldVol();
133 void Foam::fvMesh::clearGeom()
140 clearGeomNotOldVol();
162 TopologicalMeshObject,
171 TopologicalMeshObject,
180 meshObject::clear<fvMesh, TopologicalMeshObject>(*this);
181 meshObject::clear<lduMesh, TopologicalMeshObject>(*this);
194 void Foam::fvMesh::storeOldVol(
const scalarField& V)
201 <<
" Storing old time volumes since from time " << curTimeIndex_
202 <<
" and time now " << time().timeIndex()
207 if (V00Ptr_ && V0Ptr_)
216 V0Ptr_->scalarField::operator=(V);
221 V0Ptr_ =
new DimensionedField<scalar, volMesh>
245 <<
" Stored old time volumes V0:" << V0Ptr_->size()
250 <<
" Stored oldold time volumes V00:" << V00Ptr_->size()
275 calculatedFvsPatchLabelField::typeName
282 if (isA<nonConformalFvPatch>(fvp))
284 wantedPatchTypes[
patchi] =
285 nonConformalCalculatedFvsPatchLabelField::typeName;
289 return wantedPatchTypes;
295 if (!polyFacesBfPtr_)
300 return *polyFacesBfPtr_;
315 data(static_cast<const objectRegistry&>(*
this)),
316 boundary_(*
this, boundaryMesh()),
318 topoChanger_(
nullptr),
319 distributor_(
nullptr),
322 polyFacesBfPtr_(
nullptr),
323 polyBFaceOffsetsPtr_(
nullptr),
324 polyBFaceOffsetPatchesPtr_(
nullptr),
325 polyBFaceOffsetPatchFacesPtr_(
nullptr),
326 polyBFacePatchesPtr_(
nullptr),
327 polyBFacePatchFacesPtr_(
nullptr),
332 SfSlicePtr_(
nullptr),
334 magSfSlicePtr_(
nullptr),
338 CfSlicePtr_(
nullptr),
348 if (stitch != stitchType::none)
350 stitcher_->connect(
false, stitch == stitchType::geometric,
true);
410 const word& defaultBoundaryPatchName,
411 const word& defaultBoundaryPatchType,
423 defaultBoundaryPatchName,
424 defaultBoundaryPatchType,
428 data(static_cast<const objectRegistry&>(*
this)),
429 boundary_(*
this, boundaryMesh()),
431 topoChanger_(
nullptr),
432 distributor_(
nullptr),
435 polyFacesBfPtr_(
nullptr),
436 polyBFaceOffsetsPtr_(
nullptr),
437 polyBFaceOffsetPatchesPtr_(
nullptr),
438 polyBFaceOffsetPatchFacesPtr_(
nullptr),
439 polyBFacePatchesPtr_(
nullptr),
440 polyBFacePatchFacesPtr_(
nullptr),
445 SfSlicePtr_(
nullptr),
447 magSfSlicePtr_(
nullptr),
451 CfSlicePtr_(
nullptr),
478 std::move(allNeighbour),
482 data(static_cast<const objectRegistry&>(*
this)),
483 boundary_(*
this, boundaryMesh()),
485 topoChanger_(
nullptr),
486 distributor_(
nullptr),
489 polyFacesBfPtr_(
nullptr),
490 polyBFaceOffsetsPtr_(
nullptr),
491 polyBFaceOffsetPatchesPtr_(
nullptr),
492 polyBFaceOffsetPatchFacesPtr_(
nullptr),
493 polyBFacePatchesPtr_(
nullptr),
494 polyBFacePatchFacesPtr_(
nullptr),
499 SfSlicePtr_(
nullptr),
501 magSfSlicePtr_(
nullptr),
505 CfSlicePtr_(
nullptr),
534 data(static_cast<const objectRegistry&>(*
this)),
537 topoChanger_(
nullptr),
538 distributor_(
nullptr),
541 polyFacesBfPtr_(
nullptr),
542 polyBFaceOffsetsPtr_(
nullptr),
543 polyBFaceOffsetPatchesPtr_(
nullptr),
544 polyBFaceOffsetPatchFacesPtr_(
nullptr),
545 polyBFacePatchesPtr_(
nullptr),
546 polyBFacePatchFacesPtr_(
nullptr),
551 SfSlicePtr_(
nullptr),
553 magSfSlicePtr_(
nullptr),
557 CfSlicePtr_(
nullptr),
580 return topoChanger_->dynamic() || mover_->dynamic();
586 if (!conformal()) stitcher_->disconnect(
true,
true);
588 const bool hasV00 = V00Ptr_;
597 topoChanged_ =
false;
598 bool updated = topoChanger_->update();
599 topoChanged_ = updated;
607 updated = distributor_->
update() || updated;
627 if (!conformal()) stitcher_->disconnect(
true,
true);
632 const bool moved = mover_->
update();
634 curTimeIndex_ = time().timeIndex();
636 stitcher_->connect(
true,
true,
false);
645 const bool validBoundary
651 <<
" boundary already exists" 656 addPatches(p, validBoundary);
657 boundary_.addPatches(boundaryMesh());
670 boundary_.setSize(0);
686 clearAddressing(
true);
691 boundary_.setSize(boundaryMesh().size());
696 if (isA<processorPolyPatch>(boundaryMesh()[
patchi]))
726 boundary_.readUpdate(boundaryMesh());
732 && stitch != stitchType::none
736 stitcher_->disconnect(
false, stitch == stitchType::geometric);
743 Info<<
"Boundary and topological update" <<
endl;
752 Info<<
"Topological update" <<
endl;
761 Info<<
"Point motion update" <<
endl;
777 && stitch != stitchType::none
781 stitcher_->connect(
false, stitch == stitchType::geometric,
true);
789 && stitcher_->stitches()
819 return !(polyFacesBfPtr_ && SfPtr_);
841 if (!polyFacesBfPtr_)
848 polyFacesPatchTypes(),
849 boundaryMesh().types()
855 (*polyFacesBfPtr_)[
patchi] =
860 return *polyFacesBfPtr_;
867 if (!polyBFacePatchesPtr_)
869 const label nPolyBFaces = nFaces() - nInternalFaces();
872 polyBFaceOffsetsPtr_ =
new labelList(nPolyBFaces + 1, 0);
873 labelList& offsets = *polyBFaceOffsetsPtr_;
878 const label polyBFacei =
881 ? (*polyFacesBfPtr_)[
patchi][patchFacei]
886 offsets[polyBFacei + 1] ++;
889 for (
label polyBFacei = 0; polyBFacei < nPolyBFaces; ++ polyBFacei)
891 offsets[polyBFacei + 1] += offsets[polyBFacei];
897 polyBFaceOffsetPatchFacesPtr_ =
new labelList(offsets.
last());
899 labelUList& patchFaces = *polyBFaceOffsetPatchFacesPtr_;
904 const label polyBFacei =
907 ? (*polyFacesBfPtr_)[
patchi][patchFacei]
911 patches[offsets[polyBFacei]] =
patchi;
912 patchFaces[offsets[polyBFacei]] = patchFacei;
913 offsets[polyBFacei] ++;
920 label polyBFacei = nPolyBFaces - 1;
925 offsets[polyBFacei + 1] = offsets[polyBFacei];
930 polyBFacePatchesPtr_ =
932 polyBFacePatchFacesPtr_ =
936 return *polyBFacePatchesPtr_;
943 if (!polyBFacePatchFacesPtr_)
948 return *polyBFacePatchFacesPtr_;
960 return topoChanger_();
966 return distributor_();
982 <<
" nCells:" << nCells()
984 <<
" nFaces:" << nFaces()
997 <<
"polyTopoChangeMap does not correspond to the old mesh." 998 <<
" nCells:" << nCells()
1001 <<
" nFaces:" << nFaces()
1011 #define mapVolFieldType(Type, nullArg) \ 1012 MapGeometricFields<Type, fvPatchField, fvMeshMapper, volMesh>(fvMap); 1016 #define mapSurfaceFieldType(Type, nullArg) \ 1017 MapGeometricFields<Type, fvsPatchField, fvMeshMapper, surfaceMesh> \ 1022 #define mapVolInternalFieldType(Type, nullArg) \ 1023 MapDimensionedFields<Type, fvMeshMapper, volMesh>(fvMap); 1031 #define mapPointFieldType(Type, nullArg) \ 1032 MapGeometricFields \ 1055 boundary_.movePoints();
1058 meshObject::movePoints<fvMesh>(*this);
1059 meshObject::movePoints<lduMesh>(*this);
1061 const_cast<Time&
>(time()).functionObjects().movePoints(*
this);
1099 if (phiPtr_->timeIndex() != time().timeIndex())
1109 scalar rDeltaT = 1.0/time().deltaTValue();
1126 phibf[
patchi] *= rDeltaT;
1135 updateGeomNotOldVol();
1139 boundary_.movePoints();
1142 meshObject::movePoints<fvMesh>(*this);
1143 meshObject::movePoints<lduMesh>(*this);
1145 const_cast<Time&
>(time()).functionObjects().movePoints(*
this);
1160 if (V0Ptr_ && !V0Ptr_->registered())
1166 if (VPtr_ && (VPtr_->size() != map.
nOldCells()))
1169 <<
"V:" << V().size()
1170 <<
" not equal to the number of old cells " 1175 if (V0Ptr_ && (V0Ptr_->size() != map.
nOldCells()))
1178 <<
"V0:" << V0Ptr_->size()
1179 <<
" not equal to the number of old cells " 1186 clearGeomNotOldVol();
1189 if (V0Ptr_ && !V0Ptr_->registered())
1200 if (cellMap[i] > -1)
1202 V0[i] = savedV0[cellMap[i]];
1218 label celli = -index-2;
1220 V0[celli] += savedV0[oldCelli];
1228 Info<<
"Mapping old time volume V0. Merged " 1229 << nMerged <<
" out of " << nCells() <<
" cells" <<
endl;
1240 clearAddressing(
true);
1242 meshObject::topoChange<fvMesh>(*
this, map);
1243 meshObject::topoChange<lduMesh>(*
this, map);
1245 const_cast<Time&
>(time()).functionObjects().topoChange(map);
1247 if (topoChanger_.valid())
1249 topoChanger_->topoChange(map);
1252 if (distributor_.valid())
1254 distributor_->topoChange(map);
1259 mover_->topoChange(map);
1270 clearGeomNotOldVol();
1276 clearAddressing(
true);
1278 meshObject::mapMesh<fvMesh>(*
this, map);
1279 meshObject::mapMesh<lduMesh>(*
this, map);
1281 const_cast<Time&
>(time()).functionObjects().mapMesh(map);
1283 topoChanger_->mapMesh(map);
1284 distributor_->mapMesh(map);
1285 mover_->mapMesh(map);
1295 clearGeomNotOldVol();
1301 clearAddressing(
true);
1303 meshObject::distribute<fvMesh>(*
this, map);
1304 meshObject::distribute<lduMesh>(*
this, map);
1306 topoChanger_->distribute(map);
1307 distributor_->distribute(map);
1308 mover_->distribute(map);
1315 clearGeomNotOldVol();
1321 clearAddressing(
true);
1328 phiRef().oldTime(i) = phi.
oldTime(i);
1344 clearGeomNotOldVol();
1350 clearAddressing(
true);
1359 polyFacesBfRef() == polyFacesBf;
1363 magSfRef() ==
mag(Sf);
1393 if (isA<processorFvPatch>(CBf[
patchi].patch()))
1410 if (isA<processorFvPatch>(CBf[
patchi].patch()))
1415 refCast<const processorFvPatch>(CBf[
patchi].patch())
1429 phiRef().oldTime(i) = phi.
oldTime(i);
1437 const label insertPatchi,
1440 const word& defaultPatchFieldType,
1441 const bool validBoundary
1449 clearGeomNotOldVol();
1455 clearAddressing(
true);
1458 const label sz = boundary_.size();
1465 defaultPatchFieldType,
1469 boundary_.setSize(sz+1);
1475 boundaryMesh()[insertPatchi],
1481 AddPatchFields<volScalarField>
1486 defaultPatchFieldType,
1489 AddPatchFields<volVectorField>
1494 defaultPatchFieldType,
1497 AddPatchFields<volSphericalTensorField>
1502 defaultPatchFieldType,
1505 AddPatchFields<volSymmTensorField>
1510 defaultPatchFieldType,
1513 AddPatchFields<volTensorField>
1518 defaultPatchFieldType,
1524 AddPatchFields<surfaceScalarField>
1529 defaultPatchFieldType,
1532 AddPatchFields<surfaceVectorField>
1537 defaultPatchFieldType,
1540 AddPatchFields<surfaceSphericalTensorField>
1545 defaultPatchFieldType,
1548 AddPatchFields<surfaceSymmTensorField>
1553 defaultPatchFieldType,
1556 AddPatchFields<surfaceTensorField>
1561 defaultPatchFieldType,
1570 const bool validBoundary
1575 boundary_.shuffle(newToOld, validBoundary);
1578 ReorderPatchFields<volScalarField>(db, newToOld);
1579 ReorderPatchFields<volVectorField>(db, newToOld);
1580 ReorderPatchFields<volSphericalTensorField>(db, newToOld);
1581 ReorderPatchFields<volSymmTensorField>(db, newToOld);
1582 ReorderPatchFields<volTensorField>(db, newToOld);
1584 ReorderPatchFields<surfaceScalarField>(db, newToOld);
1585 ReorderPatchFields<surfaceVectorField>(db, newToOld);
1586 ReorderPatchFields<surfaceSphericalTensorField>(db, newToOld);
1587 ReorderPatchFields<surfaceSymmTensorField>(db, newToOld);
1588 ReorderPatchFields<surfaceTensorField>(db, newToOld);
1619 if (!isA<nonConformalFvPatch>(fvp))
1625 ok = ok & polyFaces.
write(write);
1630 ok = ok && phiPtr_->write(write);
1636 ok = ok && V0Ptr_->write(write);
1639 if (topoChanger_.valid())
1641 topoChanger_->write(write);
1644 if (distributor_.valid())
1646 distributor_->write(write);
1651 mover_->write(write);
1666 Foam::fvMesh::validComponents<Foam::sphericalTensor>()
const 1674 if (!fvSchemes_.valid())
1685 if (!fvSolution_.valid())
const fvPatchList & patches
const scalarField & oldCellVolumes() const
virtual void reorderPatches(const labelUList &newToOld, const bool validBoundary)
Reorder and trim existing patches. If validBoundary the new.
void clearOut()
Clear all geometry and addressing.
const fvMeshTopoChanger & topoChanger() const
Return the topo-changer function class.
Surface integrate surfaceField creating a volField. Surface sum a surfaceField creating a volField...
Field< label > labelField
Specialisation of Field<T> for label.
void mapClouds(const objectRegistry &db, const polyTopoChangeMap &mapper)
Generic Geometric field mapper.
#define mapVolInternalFieldType(Type, nullArg)
virtual tmp< scalarField > movePoints(const pointField &)
Move points, returns volumes swept by faces in motion.
#define forAll(list, i)
Loop across all elements in list.
Class containing mesh-to-mesh mapping information after a mesh distribution where we send parts of me...
void clearAddressing()
Clear topological data.
const GeometricField< Type, PatchField, GeoMesh > & oldTime() const
Return old time field.
void removeFvBoundary()
Remove boundary patches. Warning: fvPatchFields hold ref to.
bool update()
Update the mesh for topology change, mesh to mesh mapping.
virtual void distribute(const polyDistributionMap &map)
Redistribute or update using the given distribution map.
const fvSchemes & schemes() const
Return the fvSchemes.
fvMesh(const IOobject &io, const bool changers=true, const stitchType stitch=stitchType::geometric)
Construct from IOobject.
errorManipArg< error, int > exit(error &err, const int errNo=1)
const labelList & faceMap() const
Old face map.
A list of keyword definitions, which are a keyword followed by any number of values (e...
void addFvPatches(const List< polyPatch *> &, const bool validBoundary=true)
Add boundary patches. Constructor helper.
#define FatalErrorInFunction
Report an error message using Foam::FatalError.
const Boundary & boundaryField() const
Return const-reference to the boundary field.
virtual void addPatch(const label insertPatchi, const polyPatch &patch, const dictionary &patchFieldDict, const word &defaultPatchFieldType, const bool validBoundary)
Add/insert single patch. If validBoundary the new situation.
T & ref() const
Return non-const reference or generate a fatal error.
bool isFile(const fileName &, const bool checkVariants=true, const bool followLink=true)
Does the name exist as a file in the file system?
void clearOut()
Clear all geometry and addressing unnecessary for CFD.
virtual void reorderPatches(const labelUList &newToOld, const bool validBoundary)
Reorder and trim existing patches. If validBoundary the new.
const fvMeshDistributor & distributor() const
Return the distributor function class.
void size(const label)
Override size to be inconsistent with allocated storage.
Reconstruct volField from a face flux field.
void unconform(const GeometricBoundaryField< label, fvsPatchField, surfaceMesh > &polyFacesBf, const surfaceVectorField &Sf, const surfaceVectorField &Cf, const surfaceScalarField &phi=NullObjectRef< surfaceScalarField >(), const bool sync=true)
Unconform the fvMesh from the polyMesh.
Mesh manipulator that uses the intersection provided by the cyclic non-conformal poly patches to crea...
void reset(const fvMesh &)
Reset mesh.
void reset(const polyMesh &)
Reset mesh.
Ostream & endl(Ostream &os)
Add newline and flush stream.
Abstract base class for fvMesh movers.
A finiteVolume patch using a polyPatch and a fvBoundaryMesh.
#define mapPointFieldType(Type, nullArg)
Traits class for primitives.
bool movePoints()
Do what is necessary if the mesh has moved.
Class holds all the necessary information for mapping fields associated with pointMesh.
labelList identity(const label len)
Create identity map (map[i] == i) of given length.
const fvSolution & solution() const
Return the fvSchemes.
static label nRequests()
Get number of outstanding requests.
GeometricBoundaryField< Type, PatchField, GeoMesh > Boundary
Type of the boundary field.
const dimensionSet dimless
Cell to surface interpolation scheme. Included in fvMesh.
label nOldTimes() const
Return the number of old time fields stored.
virtual bool writeObject(IOstream::streamFormat fmt, IOstream::versionNumber ver, IOstream::compressionType cmp, const bool write=true) const
Write the underlying polyMesh.
virtual bool write(const bool write=true) const
Write mesh using IO settings from time.
readOption
Enumeration defining the read options.
Class holds all the necessary information for mapping fields associated with fvMesh.
Class to control time during OpenFOAM simulations that is also the top-level objectRegistry.
static bool found(const polyMesh &mesh)
Return true if this MeshObject is found in the mesh registry.
virtual void topoChange(const polyTopoChangeMap &map)
Update mesh corresponding to the given map.
virtual bool writeObject(IOstream::streamFormat fmt, IOstream::versionNumber ver, IOstream::compressionType cmp, const bool write=true) const
Write the underlying polyMesh and other data.
const labelList & cellMap() const
Old cell map.
virtual ~fvMesh()
Destructor.
bool operator!=(const fvMesh &) const
void mapFields(const polyTopoChangeMap &map)
Map all fields in time using given map.
const dimensionSet dimTime
stitchType
Extent to which to stitch on read and readUpdate. By default, a.
void evaluate()
Evaluate boundary conditions.
bool conformal() const
Return whether the fvMesh is conformal with the polyMesh.
static autoPtr< fvMeshTopoChanger > New(fvMesh &, const dictionary &dict)
Select, construct and return the fvMeshTopoChanger.
A class for handling words, derived from string.
const GeometricBoundaryField< label, fvsPatchField, surfaceMesh > & polyFacesBf() const
Return face-poly-face addressing.
Class containing mesh-to-mesh mapping information after a change in polyMesh topology.
Field< scalar > scalarField
Specialisation of Field<T> for scalar.
virtual const lduAddressing & lduAddr() const
Return ldu addressing.
static void clearUpto(objectRegistry &)
Clear all meshObject derived from FromType up to (but not including)
virtual void addPatch(const label insertPatchi, const polyPatch &patch, const dictionary &patchFieldDict, const word &defaultPatchFieldType, const bool validBoundary)
Add/insert single patch. If validBoundary the new situation.
streamFormat
Enumeration for the format of data in the stream.
List< label > labelList
A List of labels.
const fileOperation & fileHandler()
Get current file handler.
faceListList boundary(nPatches)
virtual void setPoints(const pointField &)
Reset the points.
void conform(const surfaceScalarField &phi=NullObjectRef< surfaceScalarField >())
Conform the fvMesh to the polyMesh.
errorManip< error > abort(error &err)
A 1D vector of objects of type <T>, where the size of the vector is known and can be used for subscri...
virtual void topoChange(const polyTopoChangeMap &)
Update topology using the given map.
compressionType
Enumeration for the format of data in the stream.
virtual void distribute(const polyDistributionMap &map)
Redistribute or update using the given distribution map.
void removeBoundary()
Remove boundary patches.
Foam::fvMeshLduAddressing.
Internal::FieldType & primitiveFieldRef()
Return a reference to the internal field.
bool move()
Move the mesh.
defineTypeNameAndDebug(combustionModel, 0)
Database for solution and other reduced data.
virtual void mapMesh(const polyMeshMap &)
Update from another mesh using the given map.
static pointMesh & New(polyMesh &mesh)
Abstract base class for fvMesh movers.
static void waitRequests(const label start=0)
Wait until all requests (from start onwards) have finished.
const labelList & reverseCellMap() const
Reverse cell map.
Generic Geometric field mapper. For "real" mapping, add template specialisations for mapping of inter...
Generic GeometricBoundaryField class.
bool notNull(const T &t)
Return true if t is not a reference to the nullObject of type T.
static const GeometricField< Type, PatchField, GeoMesh > & null()
Return a null geometric field.
static commsTypes defaultCommsType
Default commsType.
void setSize(const label)
Reset size of List.
Template functions to aid in the implementation of demand driven data.
static bool & parRun()
Is this a parallel run?
const UCompactListList< label > & polyBFacePatchFaces() const
Return poly-bFace-patch-face addressing.
Unallocated base class of CompactListList.
Boundary & boundaryFieldRef()
Return a reference to the boundary field.
#define mapSurfaceFieldType(Type, nullArg)
Selector class for finite volume solution solution. fvMesh is derived from fvSolution so that all fie...
void clearOut()
Clear all geometry and addressing.
const UCompactListList< label > & polyBFacePatches() const
Return poly-bFace-patch addressing.
A templated 1D list of pointers to objects of type <T>, where the size of the array is known and used...
bool operator==(const fvMesh &) const
prefixOSstream Pout(cout, "Pout")
Selector class for finite volume differencing schemes. fvMesh is derived from fvSchemes so that all f...
Mesh data needed to do the Finite Volume discretisation.
const fvMeshMover & mover() const
Return the mover function class.
label start() const
Return start label of this patch in the polyMesh face list.
Field with dimensions and associated with geometry type GeoMesh which is used to size the field and a...
bool update(const point &, const FvWallInfoDataBase< WallInfo, Type, Derived > &w2, const scalar tol, TrackingData &td)
Evaluate distance to point. Update distSqr, origin from whomever.
bool dynamic() const
Is this mesh dynamic?
virtual void mapMesh(const polyMeshMap &)
Update from another mesh using the given map.
const dimensionSet dimVolume
const fvMeshStitcher & stitcher() const
Return the stitcher function class.
SubField< scalar > subField
Declare type of subField.
static autoPtr< fvMeshMover > New(fvMesh &)
Select, construct and return the fvMeshMover.
FOR_ALL_FIELD_TYPES(DefineFvWallInfoType)
dimensioned< scalar > mag(const dimensioned< Type > &)
The class contains the addressing required by the lduMatrix: upper, lower and losort.
static autoPtr< fvMeshStitcher > New(fvMesh &, bool changing)
Select, construct and return the fvMeshStitcher.
Mesh consisting of general polyhedral cells.
static autoPtr< fvPatch > New(const polyPatch &, const fvBoundaryMesh &)
Return a pointer to a new patch created on freestore from polyPatch.
readUpdateState
Enumeration defining the state of the mesh after a read update.
#define mapVolFieldType(Type, nullArg)
virtual bool write(const bool write=true) const
Write using setting from DB.
IOobject polyFacesBfIO(IOobject::readOption r) const
Get the poly faces IO object.
A class for managing temporary objects.
readUpdateState readUpdate()
Update the mesh based on the mesh files saved in.
GeometricField< scalar, fvsPatchField, surfaceMesh > surfaceScalarField
Registry of regIOobjects.
A patch is a list of labels that address the faces in the global face list.
virtual void setPoints(const pointField &)
Reset the points.
Class containing mesh-to-mesh mapping information.
T & last()
Return the last element of the list.
virtual bool isFile(const fileName &, const bool checkVariants=true, const bool followLink=true) const =0
Does the name exist as a file in the file system?
static autoPtr< fvMeshDistributor > New(fvMesh &)
Select, construct and return the fvMeshDistributor.
void deleteDemandDrivenData(DataPtr &dataPtr)
IOobject defines the attributes of an object for which implicit objectRegistry management is supporte...
label nOldFaces() const
Number of old faces.
label nOldCells() const
Number of old cells.
Abstract base class for fvMesh movers.
dimensionSet transform(const dimensionSet &)
const fvBoundaryMesh & boundary() const
Return reference to boundary mesh.