Evolver-Wolfram intersection​
​by Kurt W Swanson​
​Drexel University
Evolver Physics Based Modeling and Wolfram Physics are an intersection of two systems that can break down barriers in multiple fields of engineering, biology, microfluidics and physics. The overarching purpose of this project is to create an initial interoperability of the two system.
Evolver is a core standalone external program that can take an input Wolfram Language and other applications to create essential boundary conditions for objects that are created in the context of a physical space. Evolver operates on these boundary conditions using physical properties and energies. The general surface form is a simulated liquid meniscus. The surface evolves by motion according to its mean curvature and the motivating forces are surface tension, pressure and gravity. The output of this can be viewed from the Wolfram Language platform.

Integration of Evolver as Wolfram Language Utility

The initial effort of the project is to integrate the functionality of Evolver as a paclet within Wolfram Language. There are two principal sources of data for interaction and evolution: Wolfram and Evolver both are repositories of shapes that can expand knowledge and capabilities with a combined system. Wolfram has a vast repository of shapes and surfaces that can be exported for evolution. Evolver has sample data that provides a tutorial of surfaces and objects. The Evolver library is unique shows graphically the types of forms are evolved, or ‘evolveable’. This collection of surface forms can be computed without modification with Evolver language. Importantly, Evolver provides surface forms that have a computational imperative -- the forms must be computed. These Temporal Computational Objects (TCO), are temporal in nature, computed over time as the surface deforms, and rest in a minutum energy state. Shapes that are native to Wolfram Language can be exported in an .stl format . This file type, a union of triangles, forms a basis of data transfer with the common Evolver data format .fe. Wolfram Language objects, polyhedrons, spheres, pyramids, cones are available as are other shapes that result from Boolean operations on objects. The project has enabled the transfer of data, geometry, between the two domains.
​
Evolver has a library of surfaces that demonstrate a certain class of surfaces in a process of evolution . The process can be observed and managed and applied to other surfaces that a user may create. These seed files are useful in understanding the scope of surface forms that can be employed for design. Evolver library examples are not exhaustive but all of them would be additional to the current prismatic type surfaces polyhedrons, spheres, cylinders cubes that are common in Wolfram Language. From this starting point Evolver can 'evolve' many classes of minimal surfaces and can form a starting point for development. The surfaces that are present in the Wolfram catalog will required effort to morph the object into something else. Commands are available to modify and morph any object that can be tessellated in Wolfram Language. Evolver will morph any object in an energy minimization process driven by surface tension. The surface will contract to the extent that volume and other constraints allow. Ofter the surface forms are unstable as a liquid meniscus and the form degenerates.

Evolver Extends the Forms Available in Wolfram Language

​
Evolver has a library of surfaces that demonstrate a certain class of surfaces in a process of evolution . The process can be observed and managed and applied to other surfaces that a user may create. These seed files are useful in understanding the scope of surface forms that can be employed for design. Evolver library examples are not exhaustive but all of them would be additional to the current prismatic type surfaces polyhedrons, spheres, cylinders cubes that are common in Wolfram Language. From this starting point Evolver can ‘evolve’ many classes of minimal surfaces and can form a starting point for development. The surfaces that are present in the Wolfram catalog will required effort to morph the object into something else. Commands are available to modify and morph any object that can be tessellated in Wolfram Language. Evolver will morph any object in an energy minimization process driven by surface tension. The surface will contract to the extent that volume and other constraints allow. Ofter the surface forms are unstable as a liquid meniscus and the form degenerates. Minimal surfaces are a class of surfaces subject to significant study in mathematics. Many forms of early study are the class of minimal surfaces that are mathematically and topologically relevant . These surfaces can be simple or complex and form the basis of many common phenomena found in biologic forms.

Computational Minimal Surfaces are Different than Parametrized CAD surfaces

Many CAD applications provide generalized surface generation capability in addition to prismatic forms and sweeps of sections. These surfaces are categorized generally as Non Uniform Rational Bezier Spline Surfaces (NURBS). These surfaces have great utility in lofting of aircraft, ships cars and is nearly ubiquitous in CAD and the creation of man made objects. The fundamental difference with Evolver is that the objects are comprised of many individual facets that have motion according to the mean curvature of the surface in a computational process. The surface evolution is not a reversible process and not deterministic. This energy minimization process is very slow both in computation and in nature, the ability is for a much deeper capability. A NURBS assumes a homogeneous material (additional functionality of CAD systems handles composite materials) however a Evolved surface does not have an inherent restriction of a homogeneous material and modeling can extend to microstructures present in cancellous bone and other organs. The essential distinction is that Evolver surfaces are computed in a physics based modeling process using a gradient descent method of minimizing the energy of the system. Both surface forms have utility , specialization and limitation the translation between the two is rapid but not essential.

Evolver Temporal Computational Objects as Emergent Design

There is a continuing narrative here about Evolver and TCO’s that extend from the primitives discussed thus far. The remarkable thing about the process of Evolution, that Evolver demonstrates, is complexity. From very sparse information, just a few geometric curves and a general process of evolution, very complex object can be created. Studies show there is no correlation between the size of SIBS data and the final result. The important processes were the ability to subdivide and refine the mesh and the interaction of the surface form with an external environment. In some application the external evnironment is static and in other applications the environment changes and the shape responds accordingly. Also within the studies the surface itself is changing during the evolution where surface tension is decreasing or increasing and intersecting surfaces are interacting accordingly. There are additional attributes that are physical as certain regions of the surface may solidify and float on a liquid meniscus. The meaning of fixed and free and solid and liquid have real meaning in a physics based system. That meaning is different from the notion of fixed in a Cartesian coordinate system where objects are fixed, or free, relative to a coordinate system. The interplay of evolution (nearly the process of growth) a changing environment and the mutation of the surface form has nearly unlimited potential to describe in a very repeatable way many forms that are unattainable otherwise. The system is not dynamic in a kinetic sense, but is dynamic in an evolutionary sense and the product is complex but not random complex.​​
​​

Evolver - Wolfram Program Code

Description and operation of Wolfram Language Code

This Wolfram Language Notebook code provides an intitial interface between the two systems Wolfram Language and Evolver. To enable the code the user is required to place a complied version of the code that is freely available from either of two sources: [http://facstaff.susqu.edu/brakke/evolver/evolver.html, https://github.com/swansonk1/Evolver_SE ] . The latter github location will be maintained and updated. When this is accomplished Evolver will run in the background and accept commands that are particular to the program. The directory path will have to be updated in the following sections of code. The program is large with a great number of commands that are necessary to the successful morphing of an object. Not all capabilities are shown here only an initial capability is demonstrated.​Within Wolfram Language Note Book an object ‘spikey’ was selected as a test subject for evolution. Commands in Evolver were to fix the edges of the polyhedron and then to refine the mesh on the faces of the form. The refinement enables the mobility of the surface with a process of constrained optimization. After the initial operations of fixing the edges and refining the tessellation of the surface patches a makebody command is required. The body of the shape has a volume and the example shown will morph all of the individual patches on spikey as the target volume is increased or decreased. the command is ‘set body target 5.0’ after a ‘g 10’ command will deform the surfaces to the new target volume as shown here:​​
​​There are commands in Evolver to manage the mesh appearance and change facet color. These are not integrated well in the current interface code and the current utility is limited. In working with this example, spikey, and other volume examples are desired then the process should start over with the initial spikey shape. There are computational artifacts of evolution that have to be managed and are best avoided with this example.​This initial intersectional program is akin to ‘first light’. Its the first time that the co-joined utility has been turned on. The breadth and width of the programs are monumental and the applications are significant such as the Beijing Aquatic Center. There is much more to come as the truly intersectional capability is realized. Many more examples are available as a base tutorial of minimal surface forms. They can be located at https://github.com/swansonk1/Evolver_SE/. In particular the library of examples located in /evolver.1/fe provides about a hundred examples of minimal surfaces and various other forms computed within Evolver. The intent to to bring the library to Wolfram Language and make it accessible for the user in the future. The examples can be run in their current location and perhaps here with some additional coding.
Reads the string for the elements of the .fe file and prepares the strings for elements: vertices, edges, faces and bodies; in a .fe format.
parseFE[fe_ ? FileExistsQ] := parseFE[Import[fe, "String"]]​​​​parseFE[fe_String] := Association /@ Merge[Apply[Join]] @ StringCases[fe, ​​ "vertices" ~~ Shortest[___] ~~ "\n" ~~ Shortest[vs : (___ ~~ "\n") ~~ "\n"] :> <|​​ "Vertices" -> StringCases[vs,​​ i : DigitCharacter.. ~~ " ".. ~~​​ ns : Repeated[Except[WhitespaceCharacter].. ~~ " "..., {2, 3}] ~~ Shortest[___] ~~ "\n" :>​​ Interpreter["Integer"][i] -> PadRight[Interpreter[DelimitedSequence["Real"]][ns], 3]​​ ]​​ |>,​​ "edges" ~~ Shortest[___] ~~ "\n" ~~ es : Shortest[___ ~~ "\n"] ~~ "\n" :> <|​​ "Edges" -> StringCases[es,​​ i : DigitCharacter.. ~~ " ".. ~~​​ ns : Repeated[DigitCharacter.. ~~ " "..., {2}] ~~ Shortest[___] ~~ "\n" :>​​ Interpreter["Integer"][i] -> Interpreter[DelimitedSequence["Integer"]][ns]​​ ]​​ |>,​​ "faces" ~~ Shortest[___] ~~ "\n" ~~ fs : Shortest[___ ~~ "\n"] ~~ "\n" :> <|​​ "Faces" -> StringCases[fs,​​ i : DigitCharacter.. ~~ " ".. ~~​​ ns : Repeated["-" | "" ~~ DigitCharacter.. ~~ " "..., {3, 4}] ~~ Shortest[___] ~~ "\n" :>​​ Interpreter["Integer"][i] -> Interpreter[DelimitedSequence["Integer"]][ns]​​ ]​​ |>,​​ "bodies" ~~ Shortest[___] ~~ "\n" ~~ bs : Shortest[___ ~~ "\n"] ~~ "\n" :> <|​​ "Bodies" -> StringCases[bs,​​ i : DigitCharacter.. ~~ " ".. ~~​​ ns : Repeated["-" | "" ~~ DigitCharacter.. ~~ " "...] ~~ Shortest[___] ~~ "\n" :>​​ Interpreter["Integer"][i] -> Interpreter[DelimitedSequence["Integer"]][ns]​​ ]​​ |>​​,​​ IgnoreCase -> True​​]
Imports an .fe file and performs operations to delete duplicates and to orient all of the facets uniformly on the surface.
Export an .fe file that is readable as an Evolver input file.
Call the Surface Evolver routine:
Loads the converted .fe file and operates on the forms in the process prescribed by user impute commands that are recognized by the Evolver program.

Concluding remarks

Much work has been done to integrate Evolver in this project with Wolfram Language. This is only the start. There are many tasks that are left unattended and many explorations that can be conducted. The purpose here is to create the pipe of information between the systems and the next step is to widen that pipe. Much work has preceded this project. Evolved TCO objects have been fabricated and analyzed in FEA type applications, microfluidic properties have been examined and studied with Evolver and applications for Computer Aided Tissue Engineering and orthopedic implants have been studied. Evolver has been used to design buildings with bubbles forming the basis of enormous space frames. The application of NKS process has yet to commence in earnest but the initial steps of application have already begun.

Keywords

◼
  • Surface Evolver
  • ◼
  • Temporal Computational Objects.
  • ◼
  • Computer Aided Tissue Engineering (CATE)
  • ◼
  • Temporal Computational Objects (TCO)
  • Acknowledgment

    Ken Brakke, Univ. of Susquehanna, and Author of Evolver. ,
    Dave Breen, Drexel Univ. ,
    Hatem Elshatlawy,
    Nik Murzin,
    Michael Reed,
    Conner Gray,
    Christopher Wolfram
    Stephen Wolfram

    References

    ◼
  • The Surface Evolver [http://facstaff.susqu.edu/brakke/evolver/evolver.html , https://github.com/swansonk1/Evolver_SE ]
  • ◼
  • Physics-based Surface Modeling using Quasi-Static Liquids, K. Brakke, D.Breen, K.Swanson, Computer-Aided Design & Applications, 6(1-4), 2009, CAD09-066