Abalone is a plug-in for Grasshopper used to optimise the geometry of perforations in simply-supported thin plates subject to buckling under uniform compression. According to user-defined constraints, the buckling efficiency is optimised using shape annealing, a rule-based optimisation procedure which implements stochasticity. A pool of candidate designs is generated by changing the random seed and cooling function; the best result is a good indication of the global optimum. A mesh can be generated from this result to verify the predicted buckling efficiency using finite element analysis. An overview video of the plug-in can be found here .
Abalone is Grasshopper plug-in operating in Rhinoceros 3D by McNeel. It can be used to optimise the arrangement of rectangular perforations in simply-supported thin plates subject to buckling under uniform compression, such as the webs of rack sections. The plug-in was developed by Dr. Ioannis Mirtsopoulos (ETH Zurich, Switzerland – developer of Libra, a Grasshopper plug-in for rule-based design space exploration of truss structures), and Elenor Naraidoo (as part of her PhD at the University of Oxford). A tutorial video can be found here.
Fig. 1: All Abalone components.
Preferred operating system: Windows
Version: Rhinoceros 8
- Run the PackageManager command.
- Look for Abalone.
- Click install.
- Restart Rhino to load the plugin.
Tutorials will be uploaded in due course. In the meantime, this video provides a good introduction to the various components.
The optimisation of perforated plates subject to buckling typically requires computationally intensive parametric finite element (FE) studies. Shape annealing is a heuristic optimisation technique, where design variables are geometric shape parameters. This rule-based technique is a robust alternative to numerical optimisation, capable of finding near-optimal solutions without great computational effort. Based on simulated annealing, this method is intuitive, and results are interpretable. This greatly appeals to structural engineering, where optimisation can be deemed risky for its black-box nature.
In Abalone, an eligible rule is selected, and used to modify the design state
In order of their implementation, each of Abalone’s 6 components are briefly discussed. Abalone works well with Pterodactyl for graph visualisation.
Fig. 2: The Construct component.
The user inputs the dimensions of the plate (e.g. the dimensions of a rack section web):
-
$X$ : Length (mm) -
$Y$ : Width (mm) -
$t$ : Thickness (mm)
Please note that Abalone was developed for thin plates, i.e. those where
The user inputs the material properties:
-
$E$ : Young’s Modulus (MPa) -
$\nu$ : Poisson’s Ratio
Abalone finds the most optimal arrangement of rectangular perforations defined by a height
-
$h_0$ : The initial hole height (mm) -
$l_0$ : The initial hole length (mm) -
$l/h$ : The hole aspect ratio
Finally, the user inputs information about the initial number of columns (
The user may optionally input the initial number of rows (
-
$n_{c,o}$ : Initial number of columns -
$s_{x,0}$ : Initial column spacing (mm) -
$n_{r,0}$ : Initial number of rows -
$s_{y,0}$ : Initial row spacing (mm)
Fig. 3: The variables used in the components.
Fig. 4: The Constraints component.
When Abalone optimises the geometry and arrangement of perforations within the plate, it must not exceed limits imposed by the user:
-
$A_{min}$ : Minimum Hole Area ($mm^2$ ) -
$h_{min}$ : Minimum Hole Height (mm) -
$s_{x,min}$ : Minimum X-Spacing -
$s_{x,max}$ : Maximum X-Spacing -
$S_{xo}$ : X-Margin -
$s_{y,min}$ : Minimum Y-Spacing -
$s_{y,max}$ : Maximum Y-Spacing -
$S_{yo}$ : Y-Margin
The margin restricts how close to either edge the perforations may reach. It is recommended to set
Fig. 5: The Optimise component.
This is where shape annealing optimisation takes place. The user defines a list of rules that can be selected; Column (
-
$C$ : The addition of perforations in the$X$ -direction (i.e. an additional `column’ of perforations) -
$R$ : The addition of perforations in the$Y$ -direction (i.e. an additional `row’ of perforations) -
$G$ : An increase to the hole length by 10% (i.e. the perforation(s) `grows’) -
$S$ : A reduction to the hole length by 10% (i.e. the perforation(s) `shrinks’)
The cooling function can be (1) Linear, (2) Exponential, (3) Logarithmic, (4) Reciprocal or (5) Quadratic. These functions require the initial temperature (
- Linear
- Exponential
- Logarithmic
- Reciprocal
- Quadratic
Examples of these cooling functions are shown below. In these examples,
Fig. 6: Examples of different cooling functions.
Finally, the user must select the efficiency mode, i.e. how the objective function is defined. This is given as:
Where
By default,
And where
Fig. 7: The Undo component.
The user can examine the state of the output at every step with the Undo component. This takes the final optimised geometry and `steps back’ the desired number of steps. Then, the result can be fed into the Deconstruct component…
Fig. 8: The Deconstruct component.
An optimised geometry (be this the final result from the Optimise component, or a back-stepped result from the Undo component) can be `taken apart’ with the Deconstruct component.
This allows the user to record the geometry, efficiency, capacity, and rules selected at the chosen design state.
Fig. 9: The Mesh component.
The geometry output from the Optimise component, or the Undo component (at the desired step) is input to the Mesh component so that the geometry can be `baked' into the Rhino3D canvas. The user can select either a brep or a mesh (controlled by the
Abalone is particularly accurate for perforations with aspect ratios
Repeated use of shape annealing for perforation optimisation has determined a tendency for one row of tall perforations, particularly for
These observations are the findings of the paper entitled Shape-Annealing Optimisation of Perforations in Rack Sections Subject to Buckling, due to be published soon. This research makes reference to two papers by Elenor Naraidoo on approximating
See the GitHub link
-
E. Naraidoo, I. Mirtsopoulos, and B. Rossi. “Shape Annealing Optimisation of Perforations in Rack Sections Subject to Buckling”.
-
E. Naraidoo and B. Rossi. “The Prediction and Classification of Local Buckling for Plates with Tall Perforations.
-
E. Naraidoo and B. Rossi. “Local buckling load of a perforated plate- A computational study”. In: Thin-Walled Structures 215, Part A (Oct. 2025). url:http://dx.doi.org/10.1016/j.tws.2025.113445.
-
E. Naraidoo and B. Rossi. “An experimental, numerical and analytical study of local buckling in perforated plates”. In: Thin-Walled Structures 219 (Feb. 2026), p. 114269. url:http://dx.doi.org/10.1016/j.tws.2025.114269








