96 time().findInstance(meshDir(),
"points"),
105 time().findInstance(meshDir(),
"faces"),
112 MeshReference(this->storedIOFaces(), this->storedIOPoints()),
119 time().findInstance(meshDir(),
"surfZones"),
131 const word& surfName,
157 MeshReference(this->storedIOFaces(), this->storedIOPoints()),
203 MeshReference(this->storedIOFaces(), this->storedIOPoints()),
219 <<
"IOobject: " <<
io.path() <<
nl 220 <<
" name: " <<
io.name()
221 <<
" instance: " <<
io.instance()
222 <<
" local: " <<
io.local()
223 <<
" dbDir: " <<
io.db().dbDir() <<
nl 259 MeshReference(this->storedIOFaces(), this->storedIOPoints()),
275 <<
"IOobject: " <<
io.path() <<
nl 276 <<
" name: " <<
io.name()
277 <<
" instance: " <<
io.instance()
278 <<
" local: " <<
io.local()
279 <<
" dbDir: " <<
io.db().dbDir() <<
nl 280 <<
"creating surfMesh at instance " <<
instance() <<
nl 309 || this->nFaces() != faces.
size()
316 this->storedIOPoints() =
points;
317 this->storedIOFaces() = faces;
344 this->storedIOPoints() = surf.
points();
345 this->storedIOFaces() = surf.
faces();
372 this->storedIOPoints() = surf.
points();
373 this->storedIOFaces() = surf.
surfFaces();
387 MeshedSurface<face>& surf,
393 this->storedPoints().transfer(surf.storedPoints());
394 this->storedFaces().transfer(surf.storedFaces());
395 this->storedZones().transfer(surf.storedZones());
413 auto aptr = autoPtr<MeshedSurface<face>>
::New();
416 aptr->storedPoints().transfer(this->storedPoints());
417 aptr->storedFaces().transfer(this->storedFaces());
418 aptr->storedZones().transfer(this->storedZones());
428 return dbDir()/meshSubDir;
434 return this->storedIOPoints().instance();
440 return this->storedIOFaces().instance();
452 return this->faces().
size();
458 return this->storedIOPoints();
464 return this->storedIOFaces();
470 auto& zones = this->storedZones();
472 if (zones.
size() <= 1)
481 bool zonesTooBig(
false);
483 const label maxCount = this->nFaces();
486 for (surfZone& zn : zones)
490 if (start > maxCount)
493 zn.size() = (maxCount - zn.start());
494 start = (zn.start() + zn.size());
500 surfZone& zn = zones.back();
502 if ((zn.start() + zn.size()) < maxCount)
505 zn.size() += maxCount - zn.start();
510 <<
"Surface has more faces " << maxCount
511 <<
" than zone addressing ... extending final zone" <<
nl;
514 else if (zonesTooBig)
519 <<
"Surface has more zone addressing than faces " 521 <<
" ... trucated/resized accordingly" <<
nl;
539 surfZones_[zonei] = surfZone(zones[zonei], zonei);
552 fileName meshFilesPath = db().path()/instanceDir/meshSubDir;
554 rm(meshFilesPath/
"points");
555 rm(meshFilesPath/
"faces");
556 rm(meshFilesPath/
"surfZones");
562 removeFiles(instance());
580 const word& fileType,
590 ).
write(
name, fileType, streamOpt, options);
void updateRefs()
Update point/face references.
const fileName & facesInstance() const
Return the current instance directory for faces.
void size(const label n)
Older name for setAddressableSize.
A class for handling file names.
A list of keyword definitions, which are a keyword followed by a number of values (eg...
void write(const fileName &name, IOstreamOption streamOpt=IOstreamOption(), const dictionary &options=dictionary::null) const
Write to file, choosing writer based on its extension.
const fileName & pointsInstance() const
Return the current instance directory for points.
constexpr char nl
The newline '\n' character (0x0a)
faceList & storedFaces()
Non-const access to the faces.
Ostream & endl(Ostream &os)
Add newline and flush stream.
tmp< DimensionedField< TypeR, GeoMesh > > New(const tmp< DimensionedField< TypeR, GeoMesh >> &tf1, const word &name, const dimensionSet &dimensions, const bool initCopy=false)
Global function forwards to reuseTmpDimensionedField::New.
surfMesh(const surfMesh &)=delete
No copy construct.
A simple container for options an IOstream can normally have.
void addZones(const surfZoneList &zones, bool validate=true)
Add surface zones, optionally validating the zone coverage.
label checkZones(const polyMesh &mesh, const ZoneMesh< Zone, polyMesh > &zones, topoSet &set)
Abstract definition of a meshed surface defined by faces and points.
Wraps the normal objectRegistry with a local instance for surfaces.
#define forAll(list, i)
Loop across all elements in list.
StringType validate(const std::string &str, const UnaryPredicate &accept, const bool invert=false)
Return a copy of the input string with validated characters.
word ext() const
Return file name extension (part after last .)
Functions used by OpenFOAM that are specific to POSIX compliant operating systems and need to be repl...
void write(vtk::formatter &fmt, const Type &val, const label n=1)
Component-wise write of a value (N times)
word name(const expressions::valueTypeCode typeCode)
A word representation of a valueTypeCode. Empty for expressions::valueTypeCode::INVALID.
static word meshSubDir
Return the mesh sub-directory name (normally "surfMesh")
void clear()
Clear the list, i.e. set size to zero.
A class for handling words, derived from Foam::string.
virtual const faceList & faces() const
Return faces.
void transfer(MeshedSurface< face > &surf, bool validate=false)
Transfer the contents of the argument and annul the argument.
virtual label nPoints() const
Return the number of raw points.
const Field< point_type > & points() const noexcept
Return reference to global points.
virtual const faceList & faces() const =0
The faces used for the surface.
#define DebugInfo
Report an information message using Foam::Info.
A surface mesh consisting of general polygon faces that has IO capabilities and a registry for storin...
const List< Face > & surfFaces() const
Return const access to the faces.
void checkZones(const bool verbose=true)
Check the surface zone definitions.
defineTypeNameAndDebug(combustionModel, 0)
A proxy for writing MeshedSurface, UnsortedMeshedSurface and surfMesh to various file formats...
void removeFiles() const
Remove all files from mesh instance()
const fileName & instance() const noexcept
Read access to instance path component.
#define WarningInFunction
Report a warning using Foam::Warning.
A simple container of IOobject preferences. Can also be used for general handling of read/no-read/rea...
void shallowCopy(T *__restrict__ ptr, const label len) noexcept
Copy the pointer and size.
List< surfZone > surfZoneList
List of surfZone.
Pointer management similar to std::unique_ptr, with some additional methods and type checking...
virtual label nFaces() const
Return the number of raw faces.
virtual const pointField & points() const
Return points.
virtual ~surfMesh()
Destructor.
IOobject io("surfaceFilmProperties", mesh.time().constant(), mesh, IOobject::READ_IF_PRESENT, IOobject::NO_WRITE, IOobject::NO_REGISTER)
Registry of regIOobjects.
const surfZoneList & surfZones() const
Const access to the surface zones.
fileName meshDir() const
Return the local mesh directory (dbDir()/meshSubDir)
Defines the attributes of an object for which implicit objectRegistry management is supported...
autoPtr< MeshedSurface< face > > releaseGeom()
Release the geometry and return as a MeshedSurface<face>.
virtual const pointField & points() const =0
The points used for the surface.
bool rm(const fileName &file)
Remove a file (or its gz equivalent), returning true if successful.
void copySurface(const pointField &points, const faceList &faces, bool validate=false)
Update with new contents.