## Variational Polygonal/Polyhedral Shape Functions (Version 1.00)

links executables usage compilation changes

This software supports finite-elements-type calculations over polygonal and polyhedral meshes. Supported applications include:

- [
**–xForm**<*linear transform*>] - This 2×2 (resp. 3×3) set of floating point values describes the entries of the linear transformation initially applied to the solid. The default values spcify the identity transformation.
- [
**–lock**] - If enabled, this flag specifies that the values on the
*y*-axis (resp.*yz*-plane) should be locked during the course of the animation. - [
**–gravity**<*gravitational force*>] - This floating point value describes the force of gravity acting on the solid. (Note that without the
**–lock**parameter, using a non-zero value for gravity will have the solid fall off the screen.) The default value for this parameter is -500,000,000. - [
**–mg**] - If enabled, this flag specifies that a multigrid solver should be used (instead of the default sparse Cholesky solver).
- [
**–vCycles**<*number of v-cycles per animation step*>] - If a multigrid solver is used, ths integer value specifies the number of v-cycles to be performed at each step of the animation. The default value for this parameter is 1.
- [
**–gsIters**<*number of Gauss-Seidel iterations per level*>] - If a multigrid solver is used, ths integer value specifies the number of Gauss-Seidel iterations to be done within each level of the v-cycle. The default value for this parameter is 5.
**–in**<*input polygonal/polyhedral mesh*>- This string specifies the the name of the mesh.
For 2D simulations, the input polygonal mesh is assumed to be in PLY format, giving the set of vertices with the x-, y-, and z-coordinates of the positions encoded by the properties
*x*,*y*, and*z*and the set of polygons encoded by a list of vertex indices. For 3D simulations, the input polyhedral mesh is assumed to be in OVM format. - [
**–mg**] - If enabled, this flag specifies that a multigrid solver should be used (instead of the default sparse Cholesky solver).
- [
**–vCycles**<*number of v-cycles per animation step*>] - If a multigrid solver is used, ths integer value specifies the number of v-cycles to be performed at each step of the animation. The default value for this parameter is 3.
- [
**–gsIters**<*number of Gauss-Seidel iterations per level*>] - If a multigrid solver is used, ths integer value specifies the number of Gauss-Seidel iterations to be done within each level of the v-cycle. The default value for this parameter is 5.
**–in**<*input polygonal mesh*>- This string specifies the the name of the mesh.
The input polygonal mesh is assumed to be in PLY format, giving the set of vertices with the x-, y-, and z-coordinates of the positions encoded by the properties
*x*,*y*, and*z*and the set of polygons encoded by a list of vertex indices. - [
**–time**<*diffusion time*>] - This floating point values specifies the time for diffusing the source delta function . The default value for this parameter is 1e-3.
- [
**–mg**] - If enabled, this flag specifies that a multigrid solver should be used (instead of the default sparse Cholesky solver).
- [
**–vCycles**<*number of v-cycles per animation step*>] - If a multigrid solver is used, ths integer value specifies the number of v-cycles to be performed at each step of the animation. The default value for this parameter is 1.
- [
**–gsIters**<*number of Gauss-Seidel iterations per level*>] - If a multigrid solver is used, ths integer value specifies the number of Gauss-Seidel iterations to be done within each level of the v-cycle. The default value for this parameter is 5.
**–in**<*input polygonal mesh*>- This string specifies the the name of the input polygonal mesh.
The polygonal mesh is assumed to be in PLY format, giving the set of vertices with the x-, y-, and z-coordinates of the positions encoded by the properties
*x*,*y*, and*z*and the set of polygons encoded by a list of vertex indices. **[–out**<*output polygonal mesh*>]- This string specifies the the name of the output (processed) polygonal mesh.
The polygonal mesh is assumed to be in PLY format, giving the set of vertices with the x-, y-, and z-coordinates of the positions encoded by the properties
*x*,*y*, and*z*and the set of polygons encoded by a list of vertex indices. - [
**–gWeight**<*gradient interpolation weight*>] - This floating point value specifies the weight that should be given to gradient interpolation. The default value for this parameter is 1e-5.
- [
**–gScale**<*gradient dampening/amplification factor*>] - This floating point value specifies the scale that is to be appled to the gradients. The default value for this parameter is 1, specifying unmodified output.
- [
**–mg**] - [
**–vCycles**<*number of v-cycles per animation step*>] - If a multigrid solver is used, ths integer value specifies the number of v-cycles to be performed at each step of the animation. The default value for this parameter is 3.
- [
**–gsIters**<*number of Gauss-Seidel iterations per level*>] - [
**–color**] - If enabled and the mesh contains per-vertex color information, this flag specifies that the color at the vertices, not the position, should be processed.
- The Windows executables require both the
**glew**and**glut**dynamically linked libraries to run. These can be found here and should be included either in the directory with the executables, or in the directory from which the executables are run. - Compiling under Windows requires both the
**glew**and**glut**libraries. These can be found here and should be placed in the output directory for linkage.

**Papers:**[Bunge, Herholz, Sorkine-Hornung, Botsch, and Kazhdan, 2022], [Crane, Weischedel, and Wardetzky, 2013]

**Executables:**Win64

**Source Code:**ZIP GitHub

**Data:**ZIP

**Older Versions:**

- format, giving the set of vertices with the x-, y-, and z-coordinates of the positions encoded by the properties

*x*,

*y*, and

*z*and the set of polygons encoded by a list of vertex indices. For 3D simulations, the input polyhedral mesh is assumed to be in OVM format.

##
**FrankeTest2D/FrankeTest3D**:
Supports the evaluation of function space quality by solving a Poisson equation over the unit square/cube, with boundary values fixed to the analytic values of the Franke test function. The executable takes in geometry, and outputs the RMS of the solution (compared to the analytic solution).

##
**GeodesicsInHeat**:
Supports the interactive visualization of single-source geodesics on the surface of polygonal mesh using the heat method.
Left-clicking while holding down the [SHIFT] key selects the source.

##
**GradientDomainProcessing**:
Supports the gradient domain smoothing and sharpening of surface geometry by solving a screened Poisson equation where the target values are given by the input geometry and the the target gradients are given by the dampened/amplified gradients of the input.

**USAGE EXAMPLES (WITH SAMPLE DATA)**
For testing purposes, a number of polgonal/polyhedral models are provided (using the .ply and .ovm extensions respectively).