91 int main(
int argc,
char *argv[])
98 "skip checking the mesh topology"
103 "include bounding box checks"
108 "include extra topology checks"
113 "read user-defined mesh quality criterions from system/meshQualityDict"
118 "reconstruct and write faceSets and cellSets of the problem faces"
124 "Format for faceSets and cellSets of the problem faces, defaults to vtk"
129 "reconstruct and write pointSets of the problem points"
135 "Format for pointSets of the problem points, defaults to vtk"
141 "Threshold in degrees "
142 "for reporting non-orthogonality errors, default: 70"
148 "Threshold for reporting non-orthogonality errors, default: 4"
163 word surfaceFormat(vtkSurfaceWriter::typeName);
169 scalar nonOrthThreshold = 70;
171 nonOrthThreshold =
degToRad(nonOrthThreshold);
173 scalar skewThreshold = 4;
178 Info<<
"Disabling all topology checks." <<
nl <<
endl;
182 Info<<
"Enabling all (cell, face, edge, point) topology checks."
187 Info<<
"Enabling all geometry checks." <<
nl <<
endl;
191 Info<<
"Enabling user-defined geometry checks." <<
nl <<
endl;
195 Info<<
"Reconstructing and writing surface representation of the "
196 <<
"faceSets and cellSets of problem faces in "
197 << surfaceFormat <<
" format" <<
nl <<
endl;
201 Info<<
"Reconstructing and writing the problem points in "
217 mesh.time().system(),
232 mesh.time().writeFormat(),
233 mesh.time().writeCompression()
243 mesh.time().writeFormat(),
244 mesh.time().writeCompression()
251 runTime.setTime(
timeDirs[timeI], timeI);
262 Info<<
"Time = " << runTime.userTimeName() <<
nl <<
endl;
269 label nFailedChecks = 0;
302 if (nFailedChecks == 0)
308 Info<<
"\nFailed " << nFailedChecks <<
" mesh checks.\n"
314 Info<<
"Time = " << runTime.userTimeName() <<
nl <<
endl;
335 Info<<
"\nFailed " << nFailedChecks <<
" mesh checks.\n"
#define forAll(list, i)
Loop across all elements in list.
Routines for checking mesh quality.
IOdictionary is derived from dictionary and IOobject to give the dictionary automatic IO functionalit...
IOobject defines the attributes of an object for which implicit objectRegistry management is supporte...
static void addOption(const word &opt, const string ¶m="", const string &usage="")
Add to an option to validOptions with usage information.
static void addBoolOption(const word &opt, const string &usage="")
Add to a bool option to validOptions with usage information.
bool optionFound(const word &opt) const
Return true if the named option is found.
bool optionReadIfPresent(const word &opt, T &) const
Read a value from the named option if present.
An auto-pointer similar to the STL auto_ptr but with automatic casting to a reference to the type and...
void reset(T *=nullptr)
If object pointer already set, delete object and set to given.
readUpdateState
Enumeration defining the state of the mesh after a read update.
Base class for writing coordinate sets with data.
static autoPtr< setWriter > New(const word &writeType, const IOstream::streamFormat writeFormat=IOstream::ASCII, const IOstream::compressionType writeCompression=IOstream::UNCOMPRESSED)
Select given write options.
Base class for surface writers.
static autoPtr< surfaceWriter > New(const word &writeType, const IOstream::streamFormat writeFormat, const IOstream::compressionType writeCompression)
Select given write options.
static void addOptions(const bool constant=true, const bool withZero=false)
Add the options handled by timeSelector to argList::validOptions.
static instantList select0(Time &runTime, const argList &args)
Return the set of times selected based on the argList options.
A class for handling words, derived from string.
int main(int argc, char *argv[])
static instantList timeDirs
Functions for checking mesh topology and geometry.
label checkTopology(const polyMesh &mesh, const bool allTopology, const autoPtr< surfaceWriter > &surfWriter, const autoPtr< setWriter > &setWriter)
Check the topology.
label checkGeometry(const polyMesh &mesh, const bool allGeometry, const scalar nonOrthThreshold, const scalar skewThreshold, const autoPtr< surfaceWriter > &, const autoPtr< setWriter > &)
Check the geometry.
void printMeshStats(const polyMesh &mesh, const bool allTopology)
Print mesh statistics.
scalar degToRad(const scalar deg)
Convert degrees to radians.
intWM_LABEL_SIZE_t label
A label is an int32_t or int64_t as specified by the pre-processor macro WM_LABEL_SIZE.
Ostream & endl(Ostream &os)
Add newline and flush stream.
label checkMeshQuality(const polyMesh &, const dictionary &, const autoPtr< surfaceWriter > &)
Foam::argList args(argc, argv)
word setFormat(propsDict.lookup< word >("setFormat"))