Isopod - implicit surface tools

So, spinodoids

Mixtures of liquids which do not dissolve into each other can separate spontaneously into two phases via what is known as a spinodal decomposition. In recent years the geometry of these decompositions has attracted some attention for use in metamaterials


(image from Spinodal Architectures – Mechanics and Materials Laboratory | ETH Zurich).

Similar to triply-periodic-minimal-surfaces (TPMS), the boundary surface separates space into two interpenetrating regions with a smooth surface instead of the sharp junctions which can cause stress concentrations in plate or beam structures.

TPMS are by definition periodic, which can make their mechanical properties sensitive to symmetry breaking imperfections and defects.

What’s more, we cannot easily produce TPMS which vary locally in scale and orientation. We can locally vary the shell thickness and the volume fraction as shown in some of the images further up in this thread, but if we have some alignment and/or scaling field we cannot simply morph a TPMS to fit it without a parametrisation of the volume matching that field, which is generally not possible except in a few simple cases such as a radial arrangement:
polargyroid

Spinodal metamaterials can overcome both these limitations of periodicity and spatial variation.

Instead of simulating the full physical evolution of spinodal decomposition, we can use a type of implicit surfaces known as spinodoids to model them. I’ll show how to do this here.

Let’s start with a simple sinusoidal plane wave. We can create a field whose value at any point in space is sin(distance to some given plane). The isosurface of this field is just a series of parallel planes:

If we take multiple such plane waves (with non parallel planes) and generate a new field summing their values together we start seeing interference patterns as the different waves cancel out or increase each other.
For some simple arrangements such as taking three planes on the faces of a cube this gives us TPMS we already know.

For larger numbers of randomly oriented and offset planes we get what is known as a Gaussian random field. The isosurface of this is a non periodic smooth surface dividing space into two continuous regions. It’s geometry has similarities to trabecular bone.

If instead of sampling a sphere isotropically to generate the plane normals we bias the random sampling so more of them have normals closer to vertical, we get a structure tending towards many horizontal plate-like regions:


If we take planes with normals distributed closer to a horizontal circle, we get a more vertical column-like structure:

We can vary this normal distribution of the plane waves to get anisotropy in any chosen direction. We can also change the wavelength to control the scale of the structure.

Here’s a first example file:
simple_global_spinodoid.gh (16.5 KB)

However, so far these changes in anisotropy or scale apply globally, as the plane waves extend infinitely.

If instead we apply a fall-off with distance, we can make the changes local but smoothly blending together. So we will weight each plane wave with a ‘bump function’, which is both smooth and compactly supported, meaning it goes to zero beyond some cutoff distance, so when evaluating the field at any point in space we only need to consider the plane waves within a certain range.

It’s perhaps a little easier to picture if we drop down a dimension for a moment and visualise it as a heightfield:


If we have a field of directions we can take planes at random points in it, their normals roughly aligned with the field and combine the plane waves as described above to get a spinodoid with plate-like regions perpendicular to the field.

We only want the directions roughly aligned because we need a bit of randomness to get connections between the plates of the structure, so we take the local field direction and add a small random vector.

To get more column like structures aligned with the direction field, we can take vectors perpendicular to the field, with some random rotation around it.

Also note that the input doesn’t have to be a smooth vector field, but can have 180 degree flips between adjacent points, as plane waves work similarly in either direction (I shared an example for generating such 2-rosy fields here).
image

To control the local scaling, we simply change the wavelength of the plane waves according to some scaling field.

So this set of field directions with scaling interpolated between sample points at the corners
image

gives us this:


aligned_spinodoid_example.gh (51.2 KB)

(these examples are all fairly flat just to make it easier to see, but this all works for volumes too, not just in 2d)


aligned_spinodoid_example2.gh (54.5 KB)

So there you have it, a way to generate stochastic curved surface structures with local alignment and scaling. These have potential applications in structurally optimised infill for lightweight parts, medical implants, heat exchangers…

This is all fairly new and experimental. Spinodoids are a relatively recent invention, and I’ve only recently made this implementation. The use of the bump function weights to combine point sampled inputs as a way of controlling the anisotropy is my own twist here.
A big part of the aim with Isopod was to make this sort of experimentation possible. I’d be interested to see how anyone applies or develops these ideas further.

A few more references:

image
(image from Machine learning unifies flexibility and efficiency of spinodal structure generation for stochastic biomaterial design | Scientific Reports)


(image from Data-driven topology optimization of spinodoid metamaterials with seamlessly
tunable anisotropy
)

https://www.researchgate.net/publication/322520818_3D_stochastic_bicontinuous_microstructures_Generation_topology_and_elasticity

https://www.nature.com/articles/s41524-020-0341-6

36 Likes