Vega FEM Library

NEW: Vega FEM 3.1 released on Nov 17, 2016. This is a minor release (described below). Vega FEM 3.0 was released on Aug 18, 2016. This was a major release, with several new features (below).

Vega is a computationally efficient and stable C/C++ physics library for three-dimensional deformable object simulation. It is designed to model large deformations, including geometric and material nonlinearities, and can also efficiently simulate linear systems. Vega contains about 120,000 lines of code, and is open-source and free. It is released under the 3-clause BSD license, which means that it can be used freely both in academic research and in commercial applications.

Vega implements several widely used methods for simulation of large deformations of 3D solid deformable objects:

Method Description Citations
co-rotational linear FEM (optional: exact tangent stiffness matrix) large deformations, uses polar decomposition of the deformation gradient to extract large rotations, linear strain-stress relationship [MG04]; exact matrix: [Bar12] (similar to [CPSS10])
co-rotational orthotropic (anisotropic) FEM elasticity same as above, but the strain-stress relationship is orthotropic, i.e., models anisotropic materials with different stiffnesses in three orthogonal directions [LB14]
invertible isotropic nonlinear FEM large deformations, nonlinear isotropic strain-stress relationship, e.g., Saint-Venant Kirchhoff, neo-Hookean, Mooney-Rivlin models; includes a mechanism to handle element inversions [ITF04], [TSIF05]
Saint-Venant Kirchhoff FEM deformable model large deformations, Green-Lagrange strain, linear strain-stress relationship, informally referred to as isotropic geometrically nonlinear FEM [Bar07]
linear FEM elasticity standard small-deformation FEM, linear Cauchy strain, linear strain-stress relationship [Sha90]
mass-spring system standard 3D mass-spring code; optionally, the network can be built as edges of a tet mesh many

For any 3D tetrahedral or cubic mesh, Vega can compute the elastic energy, the internal elastic forces and their gradients (tangent stiffness matrix), in any deformed configuration. Different parts of the mesh can be assigned arbitrary material properties. Vega can also timestep these models in time under any user-specified forces, using several provided integrators: implicit backward Euler [BW98], implicit Newmark [Wri02], explicit central differences [Wri02] and symplectic Euler. All models include support for multi-core computing. In addition to linear materials, Vega provides neo-Hookean and Mooney-Rivlin nonlinear material models; arbitrary nonlinear material models can be added to Vega. For isotropic hyperelastic materials, this is as easy as defining an energy function, and its first and second derivatives.

Since version 2.0, Vega FEM also supports model reduction [BJ05], cloth simulation (Baraff-Witkin cloth solver, [BW98]), and rigid body dynamics. Isotropic materials now also include (optional) compression resistance ([KTY09] and several prior references), which makes it possible to simulate very soft materials undergoing large compression in a stable way.

Since version 2.1, Vega FEM also supports orthotropic materials [LB14], i.e., anisotropic materials that exhibit different stiffnesses in three orthogonal directions. Also included is a binary .vegb format, faster loading of volumetric meshes with many regions, and support for the clang compiler (Mac). We also fixed known bugs and made numerous code improvements.

Vega FEM 2.2 was a minor release, fixing a few minor issues and memory leaks.

Vega FEM 3.0 provides elastic energy functions for all the materials in Vega, improved cloth implementation [BW98], signed distance field calculation from manifold meshes, or from general ``polygon soups'' [XB14], marching cubes with topological guarantees (similar to [LLVT03,Che95]), quality triangular meshing of distance field level sets [ORY05], Delaunay tetrahedralization of an arbitrary point set in 3D [BOW81], (including efficiently adding new points), constrained Delaunay 3D tet meshing with refinement [Si08,SG11] (experimental feature), calculating the winding number for triangle meshes [JKSH13], Laplacian matrix of a tet mesh [XLCB15], calculating eigenmodes of a 3D mesh under constraints [HX16], improved PARDISO solver wrapper, and bug fixes.

Vega FEM 3.1 is a minor release. Changes include positive-definite invertible materials, improved Delaunay mesher and tet mesher, improved code style, and bug fixes.

Vega is a middleware physics library. It is aimed at researchers and engineers with some preexisting knowledge in numerical simulation, computer graphics and/or solid mechanics, who can integrate Vega into their projects. The strength of Vega lies in its many C/C++ libraries which depend minimally on each other, and are in most cases independently reusable. Vega contains about 120,000 lines of C/C++ code. It compiles under Windows, Linux and Mac OS X, and has no required external dependencies. Optionally, the built-in conjugate gradient solver can be replaced for an external sparse linear system solver such as Intel MKL or SPOOLES.

Most of Vega was written by Jernej Barbič. Other code contributors include Fun Shing Sin, Daniel Schroeder, Andy Pierce, Yuyu Xu, Yijing Li, Hongyi Xu, Yili Zhao, Bohan Wang, Danyong Zhao, Christopher Twigg and Somya Sharma.

References

 
  • [BJ05] Jernej Barbič, Doug L. James: Real-Time Subspace Integration for St.Venant-Kirchhoff Deformable Models, ACM Transactions on Graphics 24(3) (SIGGRAPH 2005), pages 982-990, August 2005
  • [Bar07] Jernej Barbič. Real-time Reduced Large-Deformation Models and Distributed Contact for Computer Graphics and Haptics. PhD thesis, Carnegie Mellon University, August 2007.
  • [Bar12] Jernej Barbič. Exact Corotational Linear FEM Stiffness Matrix. Technical report, University of Southern California, 2012.
  • [Bow81] A. Bowyer. Computing dirichlet tessellations. Computer Journal, 24(2):162–166, 1981.
  • [BW98] David Baraff and Andrew P. Witkin. Large Steps in Cloth Simulation. In Proc. of ACM SIGGRAPH 98, pages 43–54, July 1998.
  • [BW08] Javier Bonet and Richard D. Wood. Nonlinear Continuum Mechanics for Finite Element Analysis, 2nd Ed. Cambridge University Press, 2008.
  • [Che95] E. V. Chernyaev. Marching Cubes 33: construction of topologically correct isosurfaces. Technical report, Technical Report CERN CN 9517, 1995.
  • [CPSS10] Isaac Chao, Ulrich Pinkall, Patrick Sanan, and Peter Schroeder. A Simple Geometric Model for Elastic Deformations. ACM Transactions on Graphics, 29(3) (SIGGRAPH 2010), 38:1–38:6, 2010.
  • [Han11] Hang Si. TetGen: A Quality Tetrahedral Mesh Generator and a 3D Delaunay Triangulator, 2011.
  • [HX16] Jernej Barbic, Hongyi Xu. Pose-space subspace dynamics. ACM Trans. on Graphics (SIGGRAPH 2016), 35(4), 2016.
  • [ITF04] Geoffrey Irving, Joseph Teran, and Ronald Fedkiw. Invertible Finite Elements for Robust Simulation of Large Deformation. In Symp. on Computer Animation (SCA), pages 131–140, 2004.
  • [JKSH13] Alec Jacobson, Ladislav Kavan, and Olga Sorkine-Hornung. Robust inside-outside segmentation using generalized winding numbers. ACM Transactions on Graphics, 32(4):33:1–33:12, 2013.
  • [KTY09] Ryo Kikuuwe, Hiroaki Tabuchi, and Motoji Yamamoto. An edge-based computationally efficient formulation of Saint Venant-Kirchhoff tetrahedral finite elements. ACM Trans. on Graphics, 28(1):1–13, 2009.
  • [Kli08] Matthew Klingner. Improving Tetrahedral Meshes. PhD thesis, Department of Electrical Engineering and Computer Sciences, University of California, Berkeley, 2008. 38
  • [KS09] Matthew Klingner and Jonathan Richard Shewchuk. Stellar: A tetrahedral mesh improvement program, 2009.
  • [LB14] Yijing Li, Jernej Barbič: Stable Orthotropic Materials, In Symp. on Computer Animation (SCA), pages 41–46, 2014.
  • [LLVT03] T. Lewiner, H. Lopes, A. W. Vieira, and G. Tavares. Efficient implementation of Marching Cubes’ cases with topological guarantees. Journal of Graphics Tools, 8(2):1–15, 2003.
  • [MG04] Matthias Müller and Markus Gross. Interactive Virtual Materials. In Proc. of Graphics Interface 2004, pages 239–246, 2004.
  • [ORY05] Steve Oudot, Laurent Rineau, and Mariette Yvinec. Meshing volumes bounded by smooth surfaces. In Proc. of 14th International Meshing Roundtable, pages 203–220, 2005.
  • [PAR] PARDISO: Parallel Direct Sparse Solver Interface. Pardiso project, www.pardiso-project.org and Intel MKL, software.intel.com/en-us/articles/intel-mkl.
  • [Sha90] Ahmed A. Shabana. Theory of Vibration, Volume II: Discrete and Continuous Systems. Springer–Verlag, 1990.
  • [She94] Jonathan Richard Shewchuk. An introduction to the conjugate gradient method without the agonizing pain, 1994.
  • [Si08] Hang Si. Adaptive tetrahedral mesh generation by constrained Delaunay refinement. International Journal for Numerical Methods in Engineering, 75:856–880, 2008.
  • [SG11] Hang Si and Klaus Gartner. 3d boundary recovery by constrained delaunay tetrahedralization. International Journal for Numerical Methods in Engineering, 85(11):1341–1364, 2011.
  • [SSB13] Fun Shing Sin, Daniel Schroeder, and Jernej Barbič: Vega: Nonlinear FEM Deformable Object Simulator. Computer Graphics Forum, 32(1), 2013, p. 38-50
  • [SPO] SPOOLES: SParse Object Oriented Linear Equations Solver. Boeing Phantom Works. www.netlib.org/linalg/spooles/spooles.2.2.html.
  • [TSIF05] Joseph Teran, Eftychios Sifakis, Geoffrey Irving, and Ronald Fedkiw. Robust Quasistatic Finite Elements and Flesh Simulation. In Symp. on Computer Animation (SCA), pages 181–190, 2005.
  • [XB14] Hongyi Xu and Jernej Barbic. Signed distance fields for polygon soup meshes. In Proc. of Graphics Interface, pages 35–41, 2014.
  • [XLCB15] Hongyi Xu, Yijing Li, Yong Chen, and Jernej Barbic. Interactive material design using model reduction. ACM Trans. on Graphics, 34(2), 2015.
  • [Wri02] Peter Wriggers. Computational Contact Mechanics. John Wiley & Sons, Ltd., 2002.