42 const UList<Face>& faces
46 label nConnectivity = 0;
47 for (
const Face&
f : faces)
49 nConnectivity +=
f.size();
63 for (
const Face&
f : faces)
100 <<
"Cannot read file " << filename <<
nl 115 "vtk::surfaceFormat",
117 IOobjectOption::NO_READ,
118 IOobjectOption::NO_WRITE,
119 IOobjectOption::NO_REGISTER
125 const faceList& faces = reader.faces();
130 for (
auto fieldName : {
"region",
"STLSolidLabeling" })
138 for (
const auto& region : *lptr)
140 zones[i++] = label(region);
151 for (
const auto& region : *sptr)
153 zones[i++] = label(region);
161 const label nZones =
max(zones)+1;
165 zoneNames[i] = surfZone::defaultName(i);
171 if (faceTraits<Face>::isTri())
173 for (
const face&
f : faces)
175 nTri +=
f.nTriangles();
179 DynamicList<label> dynElemId;
181 if (nTri > faces.size())
186 DynamicList<Face> dynFaces(nTri);
187 DynamicList<label> dynZones(nTri);
191 const face&
f = faces[facei];
192 for (label fp1 = 1; fp1 <
f.size() - 1; fp1++)
194 const label fp2 =
f.fcIndex(fp1);
196 dynFaces.append(Face{
f[0],
f[fp1],
f[fp2]});
197 dynZones.append(zones[facei]);
204 for (
const label zonei : dynZones)
209 this->sortFacesAndStore(dynFaces, dynZones, dynElemId, sorted);
212 this->addZones(zoneSizes, zoneNames);
216 DynamicList<Face> dynFaces(faces.size());
217 DynamicList<label> dynZones(std::move(zones));
219 for (
const face&
f : faces)
221 dynFaces.append(Face(
f));
226 for (
const label zonei : dynZones)
231 this->sortFacesAndStore(dynFaces, dynZones, dynElemId, sorted);
234 this->addZones(zoneSizes, zoneNames);
236 this->addZonesToFaces();
239 this->storedPoints().transfer(reader.points());
261 ? surfaceFormatsCore::oneZone(faceLst)
269 std::ofstream
os(filename, std::ios::binary);
278 label nConnectivity = 0;
279 for (
const Face&
f : faceLst)
281 nConnectivity +=
f.size();
296 const Face&
f = faceLst[
faceMap[faceIndex++]];
308 writePolys(
format(), faceLst);
312 if (zones.
size() > 1)
330 std::ofstream
os(filename, std::ios::binary);
IOField< label > labelIOField
IO for a Field of label.
A surface geometry mesh, in which the surface zone information is conveyed by the 'zoneId' associated...
void size(const label n)
Older name for setAddressableSize.
A class for handling file names.
static void writeHeader(Ostream &os, const word &fieldName)
autoPtr< formatter > newFormatter(std::ostream &os) const
Return new formatter based on the selected output options.
errorManipArg< error, int > exit(error &err, const int errNo=1)
error FatalError
Error stream (stdout output on all processes), with additional 'FOAM FATAL ERROR' header text and sta...
A list of keyword definitions, which are a keyword followed by a number of values (eg...
#define FatalErrorInFunction
Report an error message using Foam::FatalError.
label max(const labelHashSet &set, label maxValue=labelMin)
Find the max value in labelHashSet, optionally limited by second argument.
A surface zone on a MeshedSurface.
constexpr char nl
The newline '\n' character (0x0a)
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.
Reader for vtk UNSTRUCTURED_GRID legacy files. Supports single CELLS, POINTS etc. entry only...
void beginPolys(std::ostream &os, label nPolys, label nConnectivity)
Emit header for POLYGONS (with trailing newline).
A simple container for options an IOstream can normally have.
IOField< scalar > scalarIOField
IO for a Field of scalar.
const pointField & points() const noexcept
Return const access to the points.
const labelUList & faceMap() const noexcept
Const access to the faceMap, zero-sized when unused.
Pair< int > faceMap(const label facePi, const face &faceP, const label faceNi, const face &faceN)
#define forAll(list, i)
Loop across all elements in list.
Encapsulated combinations of output format options. This is primarily useful when defining the output...
bool useFaceMap() const noexcept
Can/should use faceMap?
Base class for mesh zones.
const UList< surfZone > & surfZones() const noexcept
Const access to the surface zones.
const Field< point_type > & points() const noexcept
Return reference to global points.
A 1D vector of objects of type <T>, where the size of the vector is known and can be used for subscri...
void writeList(vtk::formatter &fmt, const UList< uint8_t > &values)
Write a list of uint8_t values.
const List< Face > & surfFaces() const
Return const access to the faces.
virtual const labelList & zoneIds() const
Return const access to the zone ids.
OBJstream os(runTime.globalPath()/outputName)
A proxy for writing MeshedSurface, UnsortedMeshedSurface and surfMesh to various file formats...
Input from file stream as an ISstream, normally using std::ifstream for the actual input...
word format(conversionProperties.get< word >("format"))
List< word > wordList
List of word.
bool good() const noexcept
True if next operation might succeed.
Pointer management similar to std::unique_ptr, with some additional methods and type checking...
List< label > labelList
A List of labels.
Registry of regIOobjects.
const UList< Face > & surfFaces() const noexcept
Return const access to the faces.
Defines the attributes of an object for which implicit objectRegistry management is supported...
const dictionary formatOptions(propsDict.subOrEmptyDict("formatOptions", keyType::LITERAL))
static constexpr const zero Zero
Global zero (0)