Invoking SVR

Having built SVR as described, you can invoke it using:
~/svr-0.2.1/bin/svr
It may pay to put ~/svr-0.2.1/bin in your path; I henceforth assume you have done so. Then you can run
svr foo.node
To mesh the file foo.node.

Input and Output

The input and output formats are based on those of Shewchuk's Triangle program. The input can be either a .node file, or a .poly file. The output will be a .refined.node file describing the points in the output, and a .refined.ele file describing the elements (triangles in 2d, tetrahedra in 3d) in the output. The SVR distribution includes scripts ele-to-off to convert a pair of three-dimensional foo.node and foo.ele files to the Geomview OFF format, and ele-to-eps to convert a pair of two-dimensional files to EPS format. An input file consisting of just points produces the question of what the domain is that needs to be meshed. Whereas prior codes mesh the convex hull of the points, this opens them up to standard pathologies. Worse, it can create tiny features when points are very near the convex hull, but just barely inside it. SVR instead uses a bounding box of size sufficient to ignore boundary effects.

SVR can handle inputs in two or three dimensions. It is possible to slightly modify the source to run in one dimension. More substantial modifications would be required to run in four or higher dimensions.

Flags

Run svr --help to get a list of flags; nothing else will happen. Flags must be preceded by one or two dashes. If a flag takes an argument, it must be separated by an '=' sign. For example, we may run:
svr -rho=1.3 bunny.node
FlagArgument typeDescription
-rhodoubleRadius/edge quality of the output. Default is sqrt(2) in two dimensions, 2.0 in three dimensions, which is required for provable termination. Must be at least 1.0. Small (near 1.0) values of rho currently give rise to numerical error on some point-cloud inputs. Radius/edge relates to face angles according to rho = 1/(2 sin alpha) for acute angles, but is unrelated to dihedral angles in 3d.
-out'none' or 'quake'Output format. Choices are 'quake' (the default format, described above), or 'none', useful only for timings.
-nodeorder'id' or 'svr' or 'svr-nr'Order of nodes in the output .node file. Default 'id' retains the numbering from the input, with Steiner points coming after all input points. The setting 'svr' numbers based on the time that a vertex was inserted into the mesh by SVR. The setting 'svr-nr' gives the same numbering as 'id', but the same order in the output file as 'svr': the nodes will be out of numerical order.
-cleanupOn a watertight .poly input, remove the bounding box that SVR placed around the input. This would be disastrous on a non-watertight input.
-ignorepolyIgnore the PLC in a .poly file and mesh only the nodes.
-helpWrite a help message and exit.
-versionWrite the version number and exit.
There are also some less-used commands:
FlagArgument typeDescription
-sigmadoubleSliver constant. Tetrahedra with radius/radius ration worse than sigma will be labeled slivers and eliminated using the Li-Teng method. SVR is not guaranteed to work when sigma is set, but with a sigma of 15, it will often work and produce a mesh with no dihedral or face angle worse than 10 or 170 degrees. Smaller values give better bounds. An equilateral tetrahedron has sigma of 3.0; SVR rarely terminates with sigma set lower than 9.0. The default value of 0.0 means to entirely ignore the issue of slivers.
-bdoubleInternal constant for sliver removal. Must be larger than 1, default 4. See the papers.
-deltadoubleInternal constant for sliver removal. Must be between 0 and 1, default 0.1. See the papers.
-kdoubleShrinking parameter (see the papers). Must be between 0 and 1, default 0.9. Larger values normally give smaller meshes, at the cost of increased runtime. At exactly 1.0, numerical errors will occur.
-rhoprimedoubleIntermediate quality bound. Largely for research purposes.
-bbox-pointsintNumber of points per side of the meshing domain. Defaults to something that provably works.
-bbox-bufferdoubleSize of buffer between the meshing domain boundary and the input, as a multiple of the diameter of the input. Defaults to something that provably works.
-nooffcentersDisable offcenters in 2d.

Back to SVR home
Last modified by Benoît Hudson
Thu Oct 4 12:26:06 CDT 2007