# Triply periodic minimal surfaces _topology

Frequently occuring in nature, minimal surfaces are defined as surfaces with zero mean curvature. These surfaces originally arose as surfaces that minimized total surface area subject to some constraint. Physical models of area-minimizing minimal surfaces can be made by dipping a wire frame into a soap solution, forming a soap film, which is a minimal surface whose boundary is the wire frame.

The thin membrane that spans the wire boundary is a minimal surface of all possible surfaces that span the boundary, it is the one with minimal energy. One way to think of this “minimal energy” is that to imagine the surface as an elastic rubber membrane: the minimal shape is the one that in which the rubber membrane is the most relaxed.

A minimal surface parametrized as x=(u,v,h(u,v)) therefore satisfies Lagrange`s equation

(1+h(v)^2)*h(uu)-2*h(u)*h(v)*h(uv)+(1+h(u)^2)*h(vv)=0

*(Gray 1997, p.399)*

This year`s research focuses on triply periodic minimal surfaces (TPMS). A TPMS is a type of minimal surface which is invariant under a rank-3 lattice of translations. In other words, a TPMS is a surfaces which, through mirroring and rotating in 3D space, can form an infinite labyrinth. TPMS are of particular relevance in natural sciences, having been observed in observed as biological membranes, as block copolymers, equipotential surfaces in crystals, etc.

From a mathematical standpoint, a TPMS is the most interesting type of surface, as all connected RPMS have genus >=3, and in every lattice there exist orientable embedded TPMS of every genus >=3. Embedded TPMS are orientable and divide space into disjoint sub-volumes. If they are congruent the surface is said to be a balance surface.

The first examples of TPMS were the surfaces described by Schwarz in 1865, followed by a surface described by his student Neovius in 1883. In 1970 Alan Schoen, a then NASA scientist, described 12 more TPMS, and in 1989 H. Karcher proved their existence.

The first part of my research focuses on understanding TPMS geometry using a generation method that uses a marching cubes algorithm to find the results of the implicit equtions describing each particular type of TMPS. The resulting points form a mesh that describes the geometry.

**Schwartz_P surface**

**Neovius surface**

**Gyroid surface**

Generated from mathematical equations, these diagrams show the plotting of functions with different domains. Above, the diagrams on the left illustrate the process of forming a closed TMPS, starting from a domain of 0.5, which generates an elementary cell, which is mirrored and rotate 7 times to form a closed TPMS. A closed TMPS can also be approximated by changing the domain of the function to 1.

The diagrams below show some examples generating a TMPS from a function with a domain of 2. The views are front, top and axonometric.

**FRD surface**

dd = 8 * Math.Cos(px) * Math.Cos(py) * Math.Cos(pz) + Math.Cos(2 * px) * Math.Cos(2 * py) * Math.Cos(2 * pz) – Math.Cos(2 * px) * Math.Cos(2 * py) – Math.Cos(2 * py) * Math.Cos(2 * pz) – Math.Cos(2 * pz) * Math.Cos(2 * px)

**D Prime surface**

dd = 0.5 * (Math.Sin(px) * Math.Sin(py) * Math.Sin(pz) + Math.Cos(px) * Math.Cos(py) * Math.Cos(pz)) – 0.5 * (Math.Cos(2 * px) * Math.Cos(2 * py) + Math.Cos(2 * py) * Math.Cos(2 * pz) + Math.Cos(2 * pz) * Math.Cos(2 * px)) – 0.2

**FRD Prime surface**

dd = 4 * Math.Cos(px) * Math.Cos(py) * Math.Cos(pz) – Math.Cos(2 * px) * Math.Cos(2 * py) – Math.Cos(2 * pz) * Math.Cos(2 * py) – Math.Cos(2 * px) * Math.Cos(2 * pz)

**Double Gyroid surface**

dd = 2.75 * (Math.Sin(2 * px) * Math.Sin(pz) * Math.Cos(py) + Math.Sin(2 * py) * Math.Sin(px) * Math.Cos(pz) + Math.Sin(2 * pz) * Math.Sin(py) * Math.Cos(px)) – 1 * (Math.Cos(2 * px) * Math.Cos(2 * py) + Math.Cos(2 * py) * Math.Cos(2 * pz) + Math.Cos(2 * pz) * Math.Cos(2 * px))

**Gyroid surface**

dd = Math.Cos(px) * Math.Sin(py) + Math.Cos(py) * Math.Sin(pz) + Math.Cos(pz) * Math.Sin(px)

This method of approximating a TPMS is high versatile, useful in understanding the geometry, offsetting the surfaces and changing the bounding box of the lattice in which the surface is generated. In other words, trimming the surface and isolating parts of the surface. However, the resulting topology is unsuitable for fabrication purposes, as the generated mesh is unclean, being composed of irregular polygons consisting of triangulations, quads and hexagons.

The following diagrams show the mesh topology for a Gyroid surface, offset studies and trimming studies.

For fabrication purposes, my proposed method for computationally simulating a TPMS is derived from discrete differential geometry, relying on the use of Kangaroo Physics, a Grasshopper plugin for modeling tensile membranes. Bearing in mind that a TPMS has 6 edge conditions, a planar hexagonal mesh is placed within the space defined by a certain TPMS`s edge conditions. The edge conditions are interpreted as Nurbs curves. Constructed from 6 predefined faces, the initial planar hexagonal mesh, together with the curves defining the surface boundaries are split into the same number of subdivisions. The subdivision algorithm used on the mesh is WeaveBird`s triangular subdivision. The points resulted from the curve division are ordered so that they match the subdivided mesh`s edges, or its naked vertices. The naked vertices are then moved in the corresponding points on the curve, resulting in a new mesh describing a triply periodic surface, but not a minimal one. From this point, Kangaroo Physics is used to find the minimal surface for the given mesh parameters, resulting in a TPMS.

Sequential diagram showing the generation of a Schwartz_P surfaces using the above method.

A Gyroid surface approximated with the above method

This approach towards approximating a TPMS leads to a study in the change of boundary conditions, gaining control over the geometry. The examples below present various gyroid distorsions generated by changing the boundary conditions.

Being able to control the boundary conditions defining a gyroid, or any TPMS, opens up to form optimization through genetic algorithms. Here, various curvatures for the edge conditions have been tested with regards to solar gain, using Galapagos for Grasshopper.

The following examples show some patterns generated by different topologies of the starting mesh.