63 os <<
"v " << pt.x() <<
' ' << pt.y() <<
' ' << pt.z() <<
nl;
85 pointStream <<
"l " <<
e.start() + 1 <<
' ' <<
e.end() + 1 <<
nl;
100 Info<<
"Writing mesh points and edges to " << fName <<
endl;
112 label celli = cellLabels[i];
122 const auto e0Fnd = pointToObj.cfind(
e[0]);
132 pointToObj.insert(
e[0], v0);
137 const auto e1Fnd = pointToObj.cfind(
e[1]);
147 pointToObj.insert(
e[1], v1);
151 str <<
"l " << v0+1 <<
' ' << v1+1 <<
nl;
171 Info<<
"Writing mesh points and edges to " << fName <<
endl;
188 /
"meshFaceCentres_" +
timeName +
".obj" 191 Info<<
"Writing mesh face centres to " << faceFile <<
endl;
209 Info<<
"Writing mesh cell centres to " << cellFile <<
endl;
220 void writePatchCentres
237 Info<<
"Writing patch face centres to " << faceFile <<
endl;
264 /
"patchFaces_" +
pp.name() +
'_' +
timeName +
".obj" 267 Info<<
"Writing patch faces to " << faceFile <<
endl;
280 patchFaceStream<<
'f';
284 patchFaceStream <<
' ' <<
f[fp]+1;
286 patchFaceStream <<
nl;
292 void writePatchBoundaryEdges
307 /
"patchEdges_" +
pp.name() +
'_' +
timeName +
".obj" 310 Info<<
"Writing patch edges to " << edgeFile <<
endl;
325 patchEdgeStream<<
"l " <<
e[0]+1 <<
' ' <<
e[1]+1 <<
nl;
347 allEdges.insert(cEdges);
354 /
"pointEdges_" +
timeName +
'_' +
name(pointi) +
".obj" 357 Info<<
"Writing pointEdges to " << pFile <<
endl;
363 for (
const label edgei : allEdges)
369 pointStream<<
"l " << vertI-1 <<
' ' << vertI <<
nl;
375 int main(
int argc,
char *argv[])
379 "For mesh debugging: write mesh as separate OBJ files" 386 "Write patch faces edges" 391 "Write patch boundary edges" 397 "Write points for the specified cell" 403 "Write specified face" 409 "Write specified point" 415 "Write points for specified cellSet" 421 "Write points for specified faceSet" 430 const bool patchFaces =
args.
found(
"patchFaces");
431 const bool patchEdges =
args.
found(
"patchEdges");
433 const bool doPoint =
args.
found(
"point");
435 const bool doCellSet =
args.
found(
"cellSet");
436 const bool doFaceSet =
args.
found(
"faceSet");
439 Info<<
"Writing mesh objects as .obj files such that the object" 440 <<
" numbering" <<
endl 441 <<
"(for points, faces, cells) is consistent with" 442 <<
" Foam numbering (starting from 0)." <<
endl <<
endl;
468 const label celli =
args.
get<label>(
"cell");
474 const label pointi =
args.
get<label>(
"point");
480 const label facei =
args.
get<label>(
"face");
492 Info<<
"Writing mesh points and edges to " << fName <<
endl;
502 const word setName =
args[
"cellSet"];
506 Info<<
"Read " <<
cells.
size() <<
" cells from set " << setName
513 const word setName =
args[
"faceSet"];
517 Info<<
"Read " << faces.size() <<
" faces from set " << setName
530 Info<<
"Writing mesh points and edges to " << fName <<
endl;
const List< face_type > & localFaces() const
Return patch faces addressing into local point list.
const labelListList & cellEdges() const
static void noFunctionObjects(bool addWithOption=false)
Remove '-noFunctionObjects' option and ignore any occurrences.
static void addNote(const string ¬e)
Add extra notes for the usage information.
void size(const label n)
Older name for setAddressableSize.
fileName path() const
Return path = rootPath/caseName. Same as TimePaths::path()
A class for handling file names.
A face is a list of labels corresponding to mesh vertices.
const Field< point_type > & localPoints() const
Return pointField of points in patch.
Output to file stream as an OSstream, normally using std::ofstream for the actual output...
constexpr char nl
The newline '\n' character (0x0a)
Ostream & endl(Ostream &os)
Add newline and flush stream.
label nInternalEdges() const
Number of internal edges.
static void addBoolOption(const word &optName, const string &usage="", bool advanced=false)
Add a bool option to validOptions with usage information.
const cellList & cells() const
const Time & time() const
Return the top-level database.
virtual const pointField & points() const
Return raw points.
#define forAll(list, i)
Loop across all elements in list.
List< face > faceList
List of faces.
const dimensionedScalar e
Elementary charge.
word name(const expressions::valueTypeCode typeCode)
A word representation of a valueTypeCode. Empty for expressions::valueTypeCode::INVALID.
virtual readUpdateState readUpdate()
Update the mesh based on the mesh files saved in time.
An edge is a list of two vertex labels. This can correspond to a directed graph edge or an edge on a ...
const polyBoundaryMesh & boundaryMesh() const noexcept
Return boundary mesh.
A class for handling words, derived from Foam::string.
const Field< point_type > & faceCentres() const
Return face centres for patch.
static void addOption(const word &optName, const string ¶m="", const string &usage="", bool advanced=false)
Add an option to validOptions with usage information.
const labelListList & edgeFaces() const
Return edge-face addressing.
const edgeList & edges() const
Return list of edges, address into LOCAL point list.
virtual void setTime(const Time &t)
Reset the time and time-index to those of the given time.
virtual const faceList & faces() const
Return raw faces.
const vectorField & cellCentres() const
const labelListList & pointCells() const
A polyBoundaryMesh is a polyPatch list with registered IO, a reference to the associated polyMesh...
An Ostream is an abstract base class for all output systems (streams, files, token lists...
label nEdges() const
Number of edges in patch.
A Vector of values with scalar precision, where scalar is float/double depending on the compilation f...
static word timeName(const scalar t, const int precision=precision_)
Return a time name for the given scalar time value formatted with the given precision.
OBJstream os(runTime.globalPath()/outputName)
static instantList select0(Time &runTime, const argList &args)
Return the set of times selected based on the argList options and also set the runTime to the first i...
const edgeList & edges() const
Return mesh edges. Uses calcEdges.
const vectorField & faceCentres() const
T get(const label index) const
Get a value from the argument at index.
A cell is defined as a list of faces with extra functionality.
A collection of cell labels.
const polyBoundaryMesh & patches
messageStream Info
Information stream (stdout output on master, null elsewhere)
Inserts points at locations specified in a pointFile into the surfaces to be conformed to of the conf...
Mesh consisting of general polyhedral cells.
readUpdateState
Enumeration defining the state of the mesh after a read update.
A patch is a list of labels that address the faces in the global face list.
Foam::argList args(argc, argv)
bool found(const word &optName) const
Return true if the named option is found.
static void addOptions(const bool constant=true, const bool withZero=false)
Add timeSelector options to argList::validOptions.
uindirectPrimitivePatch pp(UIndirectList< face >(mesh.faces(), faceLabels), mesh.points())