Surface Evolver Documentation

Back to top of Surface Evolver documentation.       Index.

Surface Evolver Overview

General description

The Surface Evolver is an interactive program for the study of surfaces shaped by surface tension and other energies, and subject to various constraints. A surface is implemented as a simplicial complex, that is, a union of triangles. The user defines an initial surface in a datafile. The Evolver evolves the surface toward minimal energy by a gradient descent method. The aim can be to find a minimal energy surface, or to model the process of evolution by mean curvature, which was studied in [B1] for surface tension energy in the context of varifolds and geometric measure theory. The energy in the Evolver can be a combination of surface tension, gravitational energy, squared mean curvature, user-defined surface integrals, or knot energies. The Evolver can handle arbitrary topology (as seen in real soap bubble clusters), volume constraints, boundary constraints, boundary contact angles, prescribed mean curvature, crystalline integrands, gravity, and constraints expressed as surface integrals. The surface can be in an ambient space of arbitrary dimension, which can have a Riemannian metric, and the ambient space can be a quotient space under a group action. The user can interactively modify the surface to change its properties or to keep the evolution well-behaved. The Evolver was written for one and two dimensional surfaces, but it can do higher dimensional surfaces with some restrictions on the features available. Graphical output is available as screen graphics and in several file formats, including PostScript.

The Surface Evolver program is freely available and is in use by a number of researchers. Some of the applications of the Evolver so far include modelling the shape of fuel in rocket tanks in low gravity [Te], calculating areas for the Opaque Cube Problem [B4], computing capillary surfaces in cubes [MH] and in exotic containers [C], simulating grain growth [FT] [WM], studying grain boundaries pinned by inclusions, finding partitions of space more efficient than Kelvin's tetrakaidecahedra [WP] [KS1], foam rheology [KR1] [KR2], sphere eversion [FS], modelling the shape of molten solder on microcircuits [RSB], studying polymer chain packing, modelling cell membranes [MB], and classifying minimal surface singularities.

The strength of the Surface Evolver program is in the breadth of problems it handles, rather than optimal treatment of some specific problem. It is under continuing development, and users are invited to suggest new features.

This manual contains full operational details. A journal article description of the Evolver appeared in [B2].


The Evolver is written in portable C and has been run on several systems, including Microsoft Windows, Macintosh, Linux, and unix. It is meant to be easily portable to any system that has C.


The Evolver was written as part of the Geometry Supercomputing Project (later The Geometry Center, now defunct), sponsored by the National Science Foundation, the Department of Energy, Minnesota Technology, Inc., and the University of Minnesota. The program is available free of charge.

Back to top of Surface Evolver documentation.       Index.
Author's home page.
Susquehanna University assumes no responsibility for the content of this personal Web page. Please read the disclaimer.