Professional Documents
Culture Documents
Peregrine User Manual: Technology Preview
Peregrine User Manual: Technology Preview
Technology Preview
v3.5
ii
4.3.5 Directional Support (DirectionalS) ...................................................................................... 26
4.4 Domain ................................................................................................................................................... 27
4.4.1 Design Domain ........................................................................................................................... 27
4.4.2 Material (Mat) ............................................................................................................................. 28
4.5 Solve ........................................................................................................................................................ 30
4.5.1 Problem Specification .............................................................................................................. 30
4.5.2 LPSolver ........................................................................................................................................ 31
4.6 PostProcess........................................................................................................................................... 34
4.6.1 Rationalization (Rationalize) .................................................................................................. 34
4.6.2 Simplification............................................................................................................................... 36
4.6.3 Create Crossover (Crossover) ............................................................................................... 39
4.6.4 Filter ............................................................................................................................................... 41
4.6.5 Merge Node (Merge) ................................................................................................................ 42
4.6.6 Reduce Complexity (Complexity) ......................................................................................... 44
4.7 View ......................................................................................................................................................... 46
4.7.1 Gallery Setting (Gallery) .......................................................................................................... 46
4.7.2 Solution Viewer .......................................................................................................................... 48
4.7.3 Structural Details (Details) ..................................................................................................... 50
4.8 Tool ........................................................................................................................................................... 51
4.8.1 Unique Solution (Unique) ........................................................................................................ 51
4.9 About....................................................................................................................................................... 52
4.9.1 Version: 3 ...................................................................................................................................... 52
5 Appendix ......................................................................................................................................................... 54
5.1 Installation and Licensing................................................................................................................. 54
5.1.1 Prerequisites ............................................................................................................................... 54
5.1.2 Installation ................................................................................................................................... 54
5.1.3 Licensing ....................................................................................................................................... 54
5.2 Theory ..................................................................................................................................................... 54
5.2.1 Layout Optimization ................................................................................................................. 54
5.2.2 Geometry Optimization .......................................................................................................... 56
5.2.3 Joint Costs .................................................................................................................................... 57
5.2.4 Example Problem ....................................................................................................................... 57
iii
5.3 Known Issues........................................................................................................................................ 58
6 References ...................................................................................................................................................... 59
List of Figures
Figure 1 – The Peregrine Tab on the Grasshopper Component Panel (Ribbon) ................................. 3
Figure 2 – The Peregrine Component - No License Present ..................................................................... 3
Figure 3 – Design Domain – Geometry Defined Within Grasshopper .................................................. 4
Figure 4 – Definition of the Design Domain within Grasshopper ........................................................... 5
Figure 5 – Specification of the Design Domain .............................................................................................. 5
Figure 6 – The Material Properties Dialog ...................................................................................................... 6
Figure 7 – A Point Load Added as a Loadcase................................................................................................. 7
Figure 8 – The Problem Specification and LPSolver Components .......................................................... 7
Figure 9 – Visualizing a Solution ......................................................................................................................... 8
Figure 10 – Optimized Solution (Displayed in Rhino) .................................................................................. 8
Figure 11 – A Design Domain Geometry Defined in Rhino ....................................................................... 9
Figure 12 – Optimized Structure Using Rhino Defined Domain ............................................................. 9
Figure 13 – Rhino/Grasshopper Unit Inconsistency Warning ............................................................... 11
Figure 14 – Optimized Solution ....................................................................................................................... 11
Figure 15 – The Line Structure (LineStruct) Icon ....................................................................................... 13
Figure 16 – The Line Structure (LineStruct) Component ........................................................................ 13
Figure 17 – The Surface Net Structure (SurfStruct) Icon ........................................................................ 14
Figure 18 – The Surface Net Structure (SurfStruct) Component ......................................................... 15
Figure 19 – The Construct Topology Icon ..................................................................................................... 16
Figure 20 - The Construct Topology Component....................................................................................... 16
Figure 21 – The Construct Topology Dialog ................................................................................................ 17
Figure 22 – The Loadcase Icon ......................................................................................................................... 18
Figure 23 – The Loadcase Component .......................................................................................................... 18
Figure 24 – The Line Load (LineL) Icon........................................................................................................... 18
Figure 25 – The Line Load (LineL) Component ........................................................................................... 19
Figure 26 – The Point Load (PointL) Icon ...................................................................................................... 19
Figure 27 – The Point Load (PointL) Component ....................................................................................... 19
iv
Figure 28 – The Point Load (PointL) Dialog .................................................................................................. 20
Figure 29 – The Surface Load (SurfaceL) Icon ............................................................................................. 20
Figure 30 – The Surface Load (SurfaceL) Component .............................................................................. 21
Figure 31 – The Supports Icon .......................................................................................................................... 21
Figure 32 – The Supports Component ........................................................................................................... 22
Figure 33 – The Point Support (PointS) Icon................................................................................................ 22
Figure 34 – The Point Support (PointS) Component ................................................................................ 23
Figure 35 – The Plane Support (PlaneS) Icon .............................................................................................. 23
Figure 36 – The Plane Support (PlaneS) Component ............................................................................... 24
Figure 37 – The Plane SupportXYZ (PlaneSXYZ) Icon ............................................................................. 25
Figure 38 – The Plane SupportXYZ (PlaneSXYZ) Component .............................................................. 25
Figure 39 – The Directional Support (DirectionS) Icon ........................................................................... 26
Figure 40 – The Directional Support (DirectionS) Component ............................................................ 26
Figure 41 – The Design Domain (Domain) Icon .......................................................................................... 27
Figure 42 – The Design Domain (Domain) Component ........................................................................... 27
Figure 43 – The Material (Mat) Icon ............................................................................................................... 28
Figure 44 – The Material (Mat) Component ................................................................................................ 28
Figure 45 – The Material (Mat) Dialog........................................................................................................... 29
Figure 46 – The Problem Specification (ProbSpec) Icon ......................................................................... 30
Figure 47 – The Problem Specification (ProbSpec) Component .......................................................... 30
Figure 48 – The ProbSpec Double-Click Dialog ......................................................................................... 31
Figure 49 – The LPSolver Icon .......................................................................................................................... 31
Figure 50 – The LPSolver Component ........................................................................................................... 31
Figure 51 – The LPSolver Double-Click Dialog........................................................................................... 33
Figure 52 – The Simple2D Problem in Rhino. Nodes Previewed in Green. ....................................... 34
Figure 53 – The Rationalization (Rationalize) Icon .................................................................................... 34
Figure 54 – The Rationalization (Rationalize) Component ..................................................................... 34
Figure 55 – The Rationalize Component Used to Reduce the Complexity of a Solution ............. 36
Figure 56 – The Simplification Icon................................................................................................................. 36
Figure 57 – The Simplification Component.................................................................................................. 36
Figure 58 – The Simplification Component Dialog .................................................................................... 37
Figure 59 – Simplification of a Truss Structure ........................................................................................... 38
v
Figure 60 – The Create Crossover Icon ......................................................................................................... 39
Figure 61 – The Create Crossover Component .......................................................................................... 39
Figure 62 – An Example of the Results from the Create Crossovers Functionality ....................... 40
Figure 63 – The Filter Icon ................................................................................................................................. 41
Figure 64 – The Filter Component .................................................................................................................. 41
Figure 65 – Filtering the Output from LPSolver Stage (Right = Original, Left = Filtered)............ 42
Figure 66 – The Merge Node Icon ................................................................................................................... 42
Figure 67 – The Merge Node Component .................................................................................................... 43
Figure 68 – A Node Merge (Left = Original Solution, Right = Node Merge) ..................................... 44
Figure 69 – The Reduce Complexity Icon ..................................................................................................... 44
Figure 70 – The Reduce Complexity Component ...................................................................................... 44
Figure 71 – Reducing the Complexity of the Solution (Left = Refined, Right = Original) ............. 46
Figure 72 - The Gallery Setting (Gallery) Icon ............................................................................................. 46
Figure 73 – The Gallery Setting (Gallery) Component ............................................................................. 46
Figure 74 – The Gallery Setting (Gallery) Dialog ........................................................................................ 47
Figure 75 – An Example of Gallery Output .................................................................................................. 48
Figure 76 – The Solution Viewer Icon ............................................................................................................ 48
Figure 77 – The Solution Viewer Component ............................................................................................. 49
Figure 78 – The Structural Details Icon ......................................................................................................... 50
Figure 79 – The Structural Details (Details) Component ........................................................................ 50
Figure 80 – The Details Dialog ......................................................................................................................... 51
Figure 81 – The Unique Solution (Unique) Icon .......................................................................................... 51
Figure 82 – The Unique solution (Unique) Component ........................................................................... 52
Figure 83 – The About Icon................................................................................................................................ 52
Figure 84 – The About Component ................................................................................................................ 52
Figure 85 – Example Layout Optimization ................................................................................................... 55
Figure 86 –Rationalization of a Cantilever Truss (a) by using (b) Joint Cost and GO (c) GO ....... 58
vi
1 - Introduction
1 Introduction
Peregrine was originally developed in association with the University of Sheffield, Arup and
other partners as part of the UK government-funded BUILD-OPT research project. This
collaborative research project involved the Universities of Sheffield, Bath and Edinburgh,
AECOM, Arup, BuroHappold, Expedition Engineering, IStructE, Ramboll and the Steel
Construction Institute.
1.3 Disclaimer
Peregrine undergoes a wide array of tests before release. Notwithstanding this, bugs may exist
and therefore no guarantee can be given that the results generated are correct. Use of
Peregrine is therefore at the user’s own risk. Please refer to the license agreement for further
details.
1.4 Referencing
To reference this document, please use:
1
1 - Introduction
2
2 - Quickstart
2 Quickstart
If no icons are visible under the Peregrine tab, select “Draw All Components” in the
Grasshopper “View” menu.
Instructions for installing and licensing Peregrine are provided in Appendix Section 5.1.
The installation can be tested by dragging the About Peregrine component on to the canvas. If
the component is highlighted in red, this means that there is an issue with the license.
Alternatively, when opening an existing file, if the LPSolver component is highlighted in red
then this may indicate that there is an issue with the license - check this by clicking the
“Remark” bubble at the top right of the component (e.g. see Figure 2).
The components within Peregrine allow these features to be quickly defined and used as the
basis of an optimization problem. Further functionality then allows the refinement and editing
3
2 - Quickstart
of the output from the optimization, in order to assist the user in realizing a structure that is
potentially more practically useful for their needs.
2.3.1.1 Geometry
In the Rhino environment, a cantilever problem with a rectangular design domain will have
been generated (but no optimized solution exists as yet). The cantilever is supported on the left
edge and loaded on the right (Figure 3).
We shall more closely examine the way in which the domain was generated.
> Within Grasshopper, zoom into the area containing the Geometry component (top
left, Figure 4).
4
2 - Quickstart
You will see that four points (Vector > Construct Point) have been specified. Each point is
defined by an X and Y co-ordinate (Z is omitted in this instance) and these are controlled by
length and height sliders. The co-ordinates are then combined as the input to define a 4 Point
Surface (accessed from the Freeform group in the Surface Component panel). In this way, the size
of the design domain can be altered by adjusting the sliders alone.
Tracking the output (S) from the 4 Point Surface (Srf4Pt) it can be seen that the resultant Surface
is used as The Mesh input into the Domain. Other inputs include the Material Properties (Mat).
The Material has no externally controllable properties. Instead, they are defined manually in
the Material dialog.
> Double-click the title (or icon) in the Mat component. This will bring up the Material
dialogue for specifying the individual material properties (Figure 6).
5
2 - Quickstart
The different material properties and how they affect the results of the optimization are
discussed in detail in the Component Reference section (Section 4).
> Click “Cancel” to close the dialog without changing any properties.
2.3.1.3 Supports
Another input into the Domain is the Supports. In this particular problem, the supported
locations correspond to the two points that define the left boundary of the Design Domain [(0,
0) and (0, 50)]. As such, the input to each Point Support (PointS) is the output from one of these
original Point (Pt) components.
The remaining variable inputs are Boolean operators representing the restraint provided by
that support for each of the Cartesian directions. By default, restraint is assumed to be set to
True and therefore, as there is no additional input to change this state, the two Point Supports
are assumed fully fixed. The output from the Supports component is then used as input into the
Supports channel of the Domain component.
The final input into the Domain component is a slider that outlines the number of nodes used in
the optimization problem – represented by the number of equally spaced divisions (Div) into
which the Domain is divided in the diagonal of its bounding box.
2.3.2 Loading
Loading in Peregrine can be applied at a Point (PointL), across a Surface (SurfaceL) or along a
Line (LineL). Individual loads, or groups of loads, can be made into separate Loadcases.
6
2 - Quickstart
The Point Load (PointL) accepts a Position (Pos) and a Magnitude (Mag). In this problem, a PointL
of unit magnitude is applied in the downwards (negative) Y direction at mid-height on the right
edge of the design domain. The controls for this are situated in the “Point load” group and take
further input from the Geometry settings.
All the necessary aspects of the problem are now present. We have defined:
The listed features are combined as input into the Problem Specification (ProbSpec) component
(as the Domain and Loadcase). The output from this component is then used as the ProbSpec
input into the LPSolver component (Figure 8). It is this latter component which controls the
optimization. A toggle is added to the Enable input, which can then be used as a switch to turn
on (and off) the optimizer kernel. Other input (e.g. Jcost%) are optional controls on the problem
setup and are explained later in this document.
7
2 - Quickstart
Once the problem has been solved (which should take less than a second), the optimized truss
layout can be displayed in Rhino. This occurs by connecting the Solution (Sol) output from the
LPSolver component to the Solution Viewer (Figure 9). It should be observed that the connector
turns from dark orange to gray, to signify that a valid solution is available and is being
displayed. The resultant structural geometry can be highlighted in Rhino by selecting the
Solution Viewer component in Grasshopper (Figure 10). It is possible to determine the
numerical solution (volume of the truss) by hovering over the Vol output of either the LPSolver
or Solution Viewer components.
8
2 - Quickstart
The problem will solve automatically and the resulting optimized structure shown in Rhino
(Figure 12):
9
2 - Quickstart
> In Grasshopper, explore the components to get an overview of how the problem is
constructed
The geometry (Mesh) for the Design Domain can be seen to originate from a Brep component.
This, in-turn, references the geometry that is present in Rhino.
We have just disassociated the geometry from the design domain. Notice that the Peregrine
workflow now contains a number of components showing warnings (orange). To associate the
Brep geometry once more:
> Right-click the Brep component and select “Set Multiple Breps”
> In Rhino, right-click and draw a box around the entire geometry (the Breps will turn
yellow)
The geometry will now be associated with the Peregrine problem again. The optimization will
run and a solution will be presented.
To solve the optimization problem, you will need to connect the two relays between the large
yellow panels.
10
2 - Quickstart
Note, if the warning is not displayed, it is likely that the units in Rhino are already set to metres,
which is not the default.
1. OK - Use the units from Rhino. This will change the units of the Peregrine optimization
accordingly.
2. Cancel – Use the units from the Grasshopper file. If this option is chosen, you will need
to:
a. Enter the Rhino environment and set the units there to metres (File > Properties
> Units).
b. Back in the Grasshopper environment, press F5 to update all the components.
> Follow the steps above to set the units in Rhino and update the Grasshopper
components (the ProbSpec component will change from orange to grey if this is
successful)
11
3 - Basic Concepts
3 Basic Concepts
3.1 Workflow
Peregrine is designed to work in a logical left-to-right manner across the Component Panel.
The following are the subsections that appear in the Peregrine category:
12
4 - Component Reference
4 Component Reference
4.1 Structure
4.1.1.1 Icon
4.1.1.2 Component
4.1.1.3 Description
4.1.1.4 Summary
The Line Structure (LineStruct) component accepts a range of input and constructs a line or line
structure from these, for use within the optimization (e.g. as an element for loading, or to
represent a pre-existing structural component or frame that can be utilized within the
optimization process).
The Line input accepts a Line (Ln) element or elements (double-click in free space and type
“line” to bring up a list of line components – select the option titled “Line” with the “create a line
between two points” tooltip.)
Divisions (Div) is an integer specifying how many equally sized divisions the line(s) should be
divided into for the purpose of e.g. applying load.
Min Area (MinA) is a floating point number describing the minimum cross-sectional area to
ascribe to the elements
13
4 - Component Reference
Move Direction (MDir) is a vector describing the direction (if any) that the line element can
move in.
If Rigid is set to True, the line element ignores the stress constraints defined in the Mat
component. By default this value is set to False.
Bending Capacity (Bending) accepts values of 0 or 1, as well as intermediate values. When set to
zero (default) it is assumed that the line elements are rigid and cannot bend. When the value is
set to 1, the bending capacity of each line is finite, calculated based on the available cross-
section, taking due account of the presence of axial load. Note that due to the relative
inefficiency of bending as a load transmission mechanism, the finite bending capacity may not
be utilized in the optimal structure.
In: Line (a line or collection of lines from which to build the line structure)
In: Div (the number of equally sized sections to divide the line element(s) into)
In: MinA (the minimum cross-sectional area to be assigned to the specified line
element(s))
In: MDir (a vector describing the direction that the line is permitted to move in)
In: Rigid (specifies whether the line element is assumed to act as a rigid body)
In: Bending (a measure of the bending capacity of the line structure that can be
realized)
Out: LineStruct (a line structure combining all the input information for use e.g. in
definition of a Line Load)
4.1.2.1 Icon
14
4 - Component Reference
4.1.2.2 Component
4.1.2.3 Description
4.1.2.4 Summary
The Surface Structure (SurfStruct) component is very similar in operation to the LineStruct
component. It accepts a range of input and constructs a surface structure from these, for use
within the optimization (e.g. as an object for loading).
Min Area (MinA) is a floating point number describing the minimum cross-sectional area to
ascribe to the elements of the mesh.
Move Direction (MDir) is a vector describing the direction (if any) that the mesh element can
move in.
If Rigid is set to True, the surface ignores the stress constraints defined in the Mat component.
By default this value is set to False.
Bending Capacity (Bending) accepts values of 0 or 1, as well as intermediate values. When set to
zero (default) it is assumed that the surface elements are rigid and cannot bend. When the
value is set to 1, the bending capacity of each element on the surface is finite, calculated based
on the available cross-section, taking due account of the presence of axial load. Note that due
to the relative inefficiency of bending as a load transmission mechanism, the finite bending
capacity may not be utilized in the optimal structure.
In: Mesh (a mesh or collection of meshes from which to build the surface structure)
In: MinA (the minimum cross-sectional area to be assigned to the specified mesh
element(s))
15
4 - Component Reference
In: MDir (a vector describing the direction that the surface is permitted to move in)
In: Rigid (specifies whether the surface is assumed to act as a rigid body)
In: Bending (a measure of the bending capacity of the surface structure that can be
realized)
Out: SurfStruct (a surface structure, combining all the input information for use e.g. in
definition of a Surface Load)
4.1.3.1 Icon
4.1.3.2 Component
4.1.3.3 Description
4.1.3.4 Summary
The Construct Topology component allows the user to define a 2D structure within Rhino and to
determine its efficiency, as well as to perform post-optimization steps to ascertain whether the
layout can be improved upon.
The component accepts a Problem Specification (ProbSpec) and a topology as a series of Lines (or
Polylines). The Lines can e.g. be imported via the use of a Curve (Crv) component into which the
topology is passed through the use of the “Set multiple curves” command.
A Volume (Vol), which is the volume of material consumed by the proposed structure.
16
4 - Component Reference
The Solution (Sol) output packages together all the required data relating to the optimization
problem and optimal (least volume) structure in a form that can be used as input into the
PostProcess stages or displayed within the Rhino environment.
For an example of a Peregrine problem containing a Construct Topology component, run the
Structure_ConstructTopology.gh file.
Double-clicking on the component label brings up the dialog shown in Figure 21:
The Show Segments checkbox sets Rhino to display the user-defined elements as segmented
3D objects when the Construct Topology component is selected within Grasshopper.
The Tolerance is measured relative to the size of the domain bounding box and is used in
calculations involving node merging, moving etc.
17
4 - Component Reference
4.2 Load
4.2.1.1 Icon
4.2.1.2 Component
4.2.1.3 Description
4.2.1.4 Summary
The Loadcase component accepts one or more loads (PointL, SurfaceL, LineL) and outputs a
Loadcase. Several Loadcases can be combined and used as input into the Problem Specification
(ProbSpec).
For an example of a Peregrine problem containing multiple load cases, run the
ProbSpec_MultipleLoadCases2.gh file.
4.2.2.1 Icon
18
4 - Component Reference
4.2.2.2 Component
4.2.2.3 Description
Line load
4.2.2.4 Summary
The LineL component accepts a LineStruct as the definition of its geometry and either a force
in kN per unit length (Pres) or a total force in kN (Force) to define the magnitude of the load
imparted. The output is a loaded line (LineL).
For an example of a Peregrine problem containing a line load, run the Structure_LineStruct.gh
file.
4.2.3.1 Icon
4.2.3.2 Component
19
4 - Component Reference
4.2.3.3 Description
Point load.
4.2.3.4 Summary
The PointL component is used as input into a Loadcase. It accepts {xyz} coordinates in Cartesian
space (Pos) and a magnitude (Mag) in kN. The output is a Point Load (PointL).
For an example of a Peregrine problem containing a line load, run the Simple2D.gh file.
In: Pos (a point load position, generally defined using a Construct Point)
In: Mag (point load magnitude in kN, generally defined using a Vector)
Out: PointL (point load)
Double-clicking on the PointL label brings up the dialog shown in Figure 28:
Checking the “Attach arrow tip” option moves the load arrow in Rhino such that the tip touches
the point of loading. If left un-checked, the tail of the arrow will emanate from the point of
loading instead.
4.2.4.1 Icon
20
4 - Component Reference
4.2.4.2 Component
4.2.4.3 Description
Surface load.
4.2.4.4 Summary
The SurfaceL component is used as input into a Loadcase. It accepts a Surface Net Structure
(SurfStruct) and either a either a force in kN per unit area (Pres) or a total force in kN (Force) to
define the magnitude of the load imparted. The output is a Surface Load (SurfaceL).
For an example of a Peregrine problem containing a surface load, run the Structure_SurfStruct.gh
file.
4.3 Support
4.3.1 Supports
4.3.1.1 Icon
21
4 - Component Reference
4.3.1.2 Component
4.3.1.3 Description
4.3.1.4 Summary
The Supports component accepts one or more support objects (PointS, PlaneS, DirectionalS or
Struct), combines them and outputs them as Supports that can then be used as input into the
Design Domain (Domain).
In: PointS (a point where support is provided in the x and/or y and/or z directions)
In: PlaneS (a plane along which support is provided)
In: DirectionalS (support provided to specified points, in specified directions e.g. normal
direction support provided to mesh vertices)
In. Struct (support provided by a specified pre-existing object)
Out: Supports (supports)
4.3.2.1 Icon
22
4 - Component Reference
4.3.2.2 Component
4.3.2.3 Description
4.3.2.4 Summary
The PointS component is used as input into Supports. It accepts a Construct Point (Pt) for its
position and a toggle (Boolean operator) to specify whether support is provided at the location
in either the X, Y or Z direction. By default, all three directions are provided with support (True),
thus the user only need add extra controls if they wish to allow freedom of movement in one of
the directions. The output is a Point Support (PointS).
For an example of a Peregrine problem containing a line load, run the Simple2D.gh file.
4.3.3.1 Icon
23
4 - Component Reference
4.3.3.2 Component
4.3.3.3 Description
4.3.3.4 Summary
The PlaneS component is used to specify plane or face support surfaces to be used as input into
Supports. It accepts a Plane (e.g. XY) and a number of options to specify how the nodes on the
surface behave.
The Move (Mov) input is a Boolean toggle (False by default) to specify whether the nodes that
lie on the surface of the supported plane (i.e. the points of support) are allowed to move around
that plane during any Geometry Optimization stage(s).
The Support Direction(s) (Dir) input is a vector specifying the direction of support at the plane.
The Use Plane Normal Support (Plane) input is a Boolean toggle (False by default) to specify
whether support is provided to the plane in the normal (perpendicular) direction.
24
4 - Component Reference
4.3.4.1 Icon
4.3.4.2 Component
4.3.4.3 Description
4.3.4.4 Summary
The PlaneSXYZ component is similar in nature to the PlaneS component. It is used to specify
plane or face support surfaces with restraint in one or more of the {xyz} directions, to be used
as input into Supports. It accepts a Plane and a number of options to specify how the nodes on
the surface behave.
The Move (Mov) input is a Boolean toggle (False by default) to specify whether the nodes that
lie on the surface of the supported plane (i.e. the points of support) are allowed to move around
that plane during any Geometry Optimization stage(s).
The X, Y and Z inputs are Boolean toggles (True by default) to specify whether restraint is
provided in the direction specified.
For an example of a Peregrine problem containing a Plane XYZ support, run the
ProbSpec_MultipleLoadCases1.gh file.
25
4 - Component Reference
In: Mov (a Boolean to specify whether the nodes on the plane can move during
geometry Optimization – set to False by default)
In: X, Y, Z (Booleans to specify whether support is provided to the plane in the Cartesian
direction specified – set to True by default)
Out: PlaneSXYZ (a plane supported in one or more of the three Cartesian directions)
4.3.5.1 Icon
4.3.5.2 Component
4.3.5.3 Description
4.3.5.4 Summary
The DirectionalS component is used to specify support positions with restraint in a particular
direction. It is used as input into the Supports component. It accepts a list of Vertices that
describe the support Positions (Pos) and a similarly sized list of Vectors to describe the Direction
(Dir) afforded to those positions. Using this component, it is possible to e.g. specify support to
the vertices of a pre-defined mesh, in a direction normal to the mesh.
In: Pos (a list of positions to be supported e.g. mesh vertices or constructed points)
In: Dir (a list of direction vectors along which support is to be provided – must be the
same size as Pos)
Out: DirectionalS (a list of vertices (points) and associated support directions)
26
4 - Component Reference
4.4 Domain
4.4.1.1 Icon
4.4.1.2 Component
4.4.1.3 Description
4.4.1.4 Summary
The Domain component is used to collate the Geometry, Material and Support data for entry into
the Problem Specification (ProbSpec).
The Domain Mesh (Mesh) input defines the geometry of the Design Domain. It takes a
triangulated mesh, which can come from a variety of sources.
The Material (Mat) input accepts a user-defined set of material properties from a Mat
component.
The Nodal Division (Div) input accepts a number and defines the density of nodes assigned to
the problem. It identifies and divides the diagonal of the design bounding box into the specified
number of divisions and sets up a regular nodal grid in all three directions based upon this.
For an example of a Peregrine problem containing a domain component, run the Simple2D.gh
file.
27
4 - Component Reference
4.4.2.1 Icon
4.4.2.2 Component
4.4.2.3 Description
4.4.2.4 Summary
The Material (Mat) component is used to define all the material properties for the problem.
These are used by the optimization and analysis algorithms. There is no input into the
component; instead the user double-clicks on the label to bring up the material specification
dialog.
The output is a Material (Mat), which is then used as an input for a Design Domain (Domain)
component.
For an example of a Peregrine problem containing a Material component, run the Simple2D.gh
file.
In: Nothing
Out: Mat (a material to be assigned to the Design Domain)
28
4 - Component Reference
Double-clicking on the Mat label brings up the dialog shown in Figure 45:
29
4 - Component Reference
4.5 Solve
4.5.1.1 Icon
4.5.1.2 Component
4.5.1.3 Description
Problem specification.
4.5.1.4 Summary
The Problem Specification (ProbSpec) component combines a Domain and the applied Loading
for input into the LPSolver component. The output is a Problem (ProbSpec) and the Units of the
problem.
For an example of a Peregrine problem containing the ProbSpec component, run the
Simple2D.gh file.
In: Domain (a Design Domain within which the optimized structure will exist)
In: Loadcase (a set of one or more Loadcases applied to the Design Domain)
Out: ProbSpec (a combination of a Design Domain and Loadcases i.e. everything required
for the specification of the optimization problem)
Out: Units (the units of the problem (e.g. millimetres)
Double-clicking on the ProbSpec label brings up the dialog shown in Figure 48:
30
4 - Component Reference
The Euler Buckling checkbox is used to specify that Euler buckling of the elements in the
optimized structure is taken into consideration. It should be noted that in the current version
of the software this only comes into effect during Rationalization of the structure. i.e. it has no
effect on the structural topology identified by the layout optimization.
The Effective Length factor is used in the Euler buckling formulation to account for differences
in end supports of the elements in the structure. The Effective Length factor is the multiplier on
the length of the column required to cause it to buckle as a ‘pinned-pinned’ column. Here, as
the nature of all element end conditions is not known in advance, a blanket factor is applied to
all.
4.5.2 LPSolver
4.5.2.1 Icon
4.5.2.2 Component
31
4 - Component Reference
4.5.2.3 Description
4.5.2.4 Summary
The LPSolver component takes the problem input, conducts an optimization and presents the
output in a number of formats.
Optimization is toggled on or off using the Enable function. When enabled, the LPSolver takes
the Problem Specification (ProbSpec) and performs a linear programming layout optimization on
it (see Section 5.2.1 for more details).
While the nodal discretization within the problem is generally defined as part of setting up the
Design Domain, one can override this in the LPSolver by providing a list of nodes at specific
positions via the User Nodes (UserNodes) input. For an example of a Peregrine problem
containing User Nodes, run the LPSolver_UserNodes.gh file
By specifying a Joint Cost (Jcost%), the solver will add a penalty to elements in the optimum
layout (in the form of a fictional additional length). This may in some cases help to generate
simpler layouts with reduced complexity (as fewer elements mean a lower total penalization).
However, the volume will be increased as a result. By specifying a number of Joint Costs as
input, a number of different solutions can be found. More about Joint Costs in the layout
optimization formulation is provided in Section 5.2.3. For an example of a Peregrine problem
containing Joint Costs, run the LPSolver_JointCost.gh file
The output from the LPSolver component relates to the problem and optimum Solution (Sol):
The Preview Nodes (Preview Nd) output provides a list of all the nodes in the problem. It can e.g.
be connected to a Panel to view the nodes as a set of Cartesian coordinates.
The Volume (Vol) output supplies the volume (mm3) of the optimum structure at the end of the
optimization stage.
The Topology output delivers a representation of the optimum structure as line elements.
The Solution (Sol) output packages together all the required data relating to the optimization
problem and optimal, least volume, structure in a form that can be used as input into the
PostProcess stages or displayed within the Rhino environment.
The Solution Log (Log) output can be connected to e.g. a Panel in order to display information
relating to the LPSolver iterations (Iteration Number, Nodes, Members and Volume).
For an example of a Peregrine problem containing an LPSolver component, run the Simple2D.gh
file
32
4 - Component Reference
Double-clicking on the LPSolver label brings up the dialog shown in Figure 51:
With the Preview Nodes option checked (the default state), the nodes used in the optimization
problem will be displayed in the Rhino environment (for example, see Figure 52).
33
4 - Component Reference
4.6 PostProcess
4.6.1.1 Icon
4.6.1.2 Component
4.6.1.3 Description
34
4 - Component Reference
4.6.1.4 Summary
The Maximum Number of Input Nodes Allowed (Limit) is an integer describing the upper limit on
the number of nodes that are allowed in a structure that is to undergo Rationalization. If the
input Solution (Sol) contains more nodes than this value, a warning will be shown. By default,
the limit is set to 100.
The Maximum Number of Iterations (Iter) is an integer that sets the number of geometry
optimization iterations that are allowed to take place before the solution is returned. If
convergence occurs before this value is hit, the geometry optimization will be curtailed. By
default, the limit is set to 5.
The Solution (Sol) output packages together all the required data relating to the optimization
problem and optimal structure in a form that can be used as input into further PostProcess
stages or displayed within the Rhino environment using the SolutionViewer.
The Solution Log (Log) can be connected to e.g. a Panel in order to display information relating
to the LPSolve iterations (Iteration Number, Nodes, Members and Volume).
In: Sol (data relating to the problem setup and optimum structure post layout
optimization)
In: Limit (the maximum number of nodes allowed in the structure before geometry
optimization occurs)
In: Iter (the maximum number of geometry optimization iterations before the solution
is output)
Out: Vol (the volume of the structure at the end of the rationalization)
Out: Sol (data relating to the problem setup and optimum structure following
rationalization)
Out: Log (geometry optimization iteration information)
4.6.1.6 Example
35
4 - Component Reference
4.6.2 Simplification
4.6.2.1 Icon
4.6.2.2 Component
4.6.2.3 Description
36
4 - Component Reference
4.6.2.4 Summary
The Simplification component takes the output (Sol) from an optimization or rationalization and
attempts to reduce the number of elements that connect at the joints.
The user specifies a permissible Volume Increase (VolInc%) in the volume of the structure that
can be traded for this reduced complexity. A smooth Heaviside formulation is used to e.g.,
reduce the number of elements, while still possessing a volume that is below the permissible
value.
The Solution (Sol) output packages together all the required data relating to the optimization
problem and optimal structure in a form that can be used as input into further PostProcess
stages or displayed within the Rhino environment using the SolutionViewer.
The Solution Log (Log) can be connected to e.g. a Panel in order to display information relating
to the LPSolve iterations (Iteration Number, Nodes, Members and Volume).
In: Sol (data relating to the problem setup and optimum structure post layout
optimization or rationalization)
In: VolInc% (the maximum increase in volume that can be traded for a reduced
structural complexity)
Out: Vol (the volume of the structure at the end of the simplification)
Out: Sol (data relating to the problem setup and optimum structure following
simplification)
Out: Log (optimization iteration information)
Clicking on the Simplification component label brings up the dialog shown in Figure 58:
37
4 - Component Reference
1. All members – seeks to reduce the total number of members in the structure while
keeping the volume within the specified percentage of volume increase (VolInc%)
2. Joint complexity – examines each joint within the optimum structure and attempts to
reduce the number of elements meeting towards the specified value (Num), while
keeping the volume within the specified percentage of volume increase (VolInc%)
3. Most complex joint - examines the most complex joint within the optimum structure and
attempts to reduce the number of elements meeting at it towards the specified value
(Num), while keeping the volume within the specified percentage of volume increase
(VolInc%)
The Num setting accepts an integer and is used as input in the joint simplification routines.
4.6.2.7 Example
Please note that the Simplification component can sometimes produce truss configurations
that are asymmetrical, despite having a symmetrical problem definition. This can generally be
addressed by passing the output through a Rationalize component and increasing the Iteration
(Iter) count as necessary. For an example of a problem containing a Simplification component,
see the PostProcess_SimplificationJointComplexity.gh file.
4.6.2.8 Example
38
4 - Component Reference
4.6.3.1 Icon
4.6.3.2 Component
4.6.3.3 Description
4.6.3.4 Summary
The user specifies a permissible Volume Increase Limit (Limit) (default of 100%). Above this
value, the crossovers will not be generated.
The Crossover Distance Ratio (Dist) is a measure of the proximity of members below which a
crossover will be created. The longest diagonal of the model bounding box is determined and
the ratio value is the percentage of this measure which is used as the “search area” for
crossovers. For example, in a 3D model with a 100mm bounding box, a value of “Dist=1” will
ensure that elements with center lines that pass within 1mm of each other are checked and a
crossover node added if required.
The Enable input is connected to a toggle, to allow the selective enabling and disabling of this
component functionality. If changes are to be made to the Limit or Dist inputs, it is
recommended that the component is left disabled while this is done.
The Solution (Sol) output packages together all the required data relating to the optimization
problem and optimal structure in a form that can be used as input into further PostProcess
39
4 - Component Reference
stages or displayed within the Rhino environment using the SolutionViewer. It is generally
recommended that a Rationalize step is undertaken after crossovers are created.
The Volume Increase (Increase) output is a measure of the increase in structural volume
encountered as a result of the create crossover functionality being undertaken.
The Solution Log (Log) can be connected to e.g. a Panel in order to display information relating
to the component actions.
For an example of a Peregrine problem containing the Crossover component, run the
PostProcess_Crossover.gh file.
4.6.3.5 Example
Here, the leftmost solution is the result of a normal LPSolve step. Crossovers are created in the
center image (note that the volume remains unchanged) and the resulting structure passed to
the Rationalize component, which moves joints to more optimal positions.
40
4 - Component Reference
4.6.4 Filter
4.6.4.1 Icon
4.6.4.2 Component
4.6.4.3 Description
Filter small elements (and may also reposition nodes to restore equilibrium).
4.6.4.4 Summary
The Filter functionality takes a Solution (Sol) from an optimization or post-process step and
removes the elements with a cross-sectional area below a specified Filter Threshold %
(Threshold).
The value of the Threshold is a user-specified percentage of the cross-sectional area of the
largest element that exists in the solution. The component will attempt to remove elements
with cross-sections below that which this relates to.
The Volume Increase Limit (Limit) is the percentage increase in structural volume that is allowed
to occur as a result of the Filter functionality. By default, the limit is set to 100.
The Enable input is connected to a toggle, to allow the selective enabling and disabling of this
component functionality. If changes are to be made to the Limit or Threshold inputs, it is
recommended that the component is left disabled while this is done.
41
4 - Component Reference
4.6.4.6 Example
Figure 65 – Filtering the Output from LPSolver Stage (Right = Original, Left = Filtered)
On the right is the original solution. On the left is a filtered version, where a filter Threshold of
3% has been specified and a Rationalize stage carried out after the filter. It can be seen that the
resulting structure is both simpler and lower in volume.
4.6.5.1 Icon
42
4 - Component Reference
4.6.5.2 Component
4.6.5.3 Description
Merge nodes.
4.6.5.4 Summary
The Merge Node (Merge) functionality accepts a Solution (Sol) from an optimization or post-
process step and combines nodes (joints) within the structure that lie within a prescribed
Merge Radius Ratio (Radius).
The value of the Radius (default = 5) is a measure of the proximity of nodes, below which a
merge will be attempted. The longest diagonal of the model bounding box is determined and
the ratio value is the percentage of this measure which is used as the “search area”. For
example, in a model with a 100mm bounding box, a value of “Radius = 5” will ensure that nodes
which lie within 5mm of each other are checked and an attempt made to merge them.
By removing nodes and elements, the equilibrium of forces may be compromised to some
extent. The Merge function will therefore attempt to also restore equilibrium where necessary,
using a supplementary geometry optimization step.
The Volume Increase Limit (Limit) is the percentage increase in structural volume that is allowed
to occur as a result of the Filter functionality. By default, the limit is set to 100.
The Enable input is connected to a toggle, to allow the selective enabling and disabling of this
component functionality. If changes are to be made to the Limit or Radius inputs, it is
recommended that the component is left disabled while this is done.
43
4 - Component Reference
In: Limit (the maximum increase in volume that can be accepted during the merge
stage; default = 100%)
In: Radius (user-specified percentage of the longest diagonal of the model bounding
box. Used to define the area in which node merging will be attempted)
Out: Vol (the volume of the structure at the end of the filter stage)
Out: Sol (data relating to the problem setup and optimum structure following filtering)
Out: Increase (the increase in structural volume as a result of the operation being
performed)
Out: Log (optimization iteration information)
4.6.5.6 Example
4.6.6.1 Icon
4.6.6.2 Component
4.6.6.3 Description
Reduce complexity.
44
4 - Component Reference
4.6.6.4 Summary
The Reduce Complexity (Complexity) component accepts a Solution (Sol) from an optimization
or post-process step and attempts to reduce the number of elements according to a user-
specified directive on the method used, plus an allowable increase in structural volume.
Note that in general the Simplification component, which is based on a different numerical
approach, is likely to produce superior results and is therefore preferred.
The value of the Maximum number of members at joint (Bar no. at joint) (default = 8) defines the
greatest number of members that can join at any one location (joint). The Complexity
functionality will then attempt to identify the minimum volume structure that conforms to this
requirement. By removing nodes and elements, the equilibrium of forces may be compromised
to some extent. The Complexity function will therefore attempt to also restore equilibrium
where necessary, using a supplementary geometry optimization step.
The Volume Increase Limit (Limit) is the percentage increase in structural volume that is allowed
to occur as a result of the operation of the Complexity functionality. By default, the limit is set
to 100.
The Enable input is connected to a toggle, to allow the selective enabling and disabling of this
component functionality. If changes are to be made to the Max bar no. or Bar no. at joints inputs,
it is recommended that the component is left disabled while this is done.
The output is a new optimal Solution (Sol) along with data relating to its generation.
For an example of a Peregrine problem containing the Complexity component, run the
PostProcess_Complexity.gh file.
45
4 - Component Reference
4.6.6.6 Example
On the right is the original solution. On the left is a modified version, where a complexity
threshold of 6 members per node has been specified and a Rationalize stage carried out after
the filter. It can be seen that the resulting structure is simpler but has a comparable volume.
Figure 71 – Reducing the Complexity of the Solution (Left = Refined, Right = Original)
4.7 View
4.7.1.1 Icon
4.7.1.2 Component
4.7.1.3 Description
46
4 - Component Reference
4.7.1.4 Summary
The Gallery component is used to control the display of multiple solutions in the Solution
Viewer component. It accepts a Reference Volume (Ref Vol), against which the optimized
volumes can be compared. By default, this volume is set to zero and no comparison is
undertaken. The output from the Gallery are a number of display settings.
For an example of a Peregrine problem containing the Gallery component, run the
LPSolver_JointCost.gh file.
Double-clicking on the Gallery label brings up the dialog shown in Figure 74:
The Sort Volume and Sort Complexity fields accept integers and assign relative weights
(importance) to the property named when displaying them in the gallery. A larger number
corresponds to a higher importance and this will be used to order the display of output from
the optimizations. Note that, in order for these settings to have an effect, both values need to
be 1 or greater.
The Column Num field specifies the number of columns to present in the gallery.
The View Plan dropdown indicates the direction in which the gallery is propagated (e.g. XY will
display the output in the XY plane).
47
4 - Component Reference
Label Num sets the number of labels to display below each image in the gallery, where a label
corresponds to a LPSolve / rationalize step etc.
In: Ref Vol (a volume against which the volume of the solution structures will be
compared)
Out: Gallery (settings for the Solution Viewer)
4.7.1.7 Example
4.7.2.1 Icon
48
4 - Component Reference
4.7.2.2 Component
4.7.2.3 Description
Visualize a solution.
4.7.2.4 Summary
The Solution Viewer component accepts a Solution (Sol) from an optimization or post-process
step, an optional ID (to highlight a particular solution) and a set of Gallery parameters which
outline how the solution(s) are displayed in Rhino.
The output from the component can be passed to other components for further processing.
However, the central function of the component is to display the structure(s) within the Rhino
environment.
The Volume (Vol) is the volume(s) of the structures passed into the component.
The Bars are a list of the elements in the various layouts, as BREPs.
The Solution (Sol) is data relating to the problem setup and optimum structures.
For an example of a Peregrine problem containing the Solution Viewer component, run the
LPSolver_JointCost.gh file.
49
4 - Component Reference
4.7.3.1 Icon
4.7.3.2 Component
4.7.3.3 Description
4.7.3.4 Summary
The Structural Details (Details) component accepts a Solution (Sol) from an optimization or post-
process step and an integer representing the Loadcase that the user wishes to determine the
details for.
The output from the component comprises a range of information relating to the optimum
structure for the specified Loadcase:
Bars is a list of the members in the optimum structure – with each being defined as a BREP.
Size is a list of section dimensions – either the outer radius for CHS or the edge length for SHS.
50
4 - Component Reference
For an example of a Peregrine problem containing the Details component, run the
ProbSpec_MultipleLoadCases1.gh file.
Double-clicking on the Details label brings up the dialog shown in Figure 80:
The dropdown allows the user to specify whether tension elements are displayed in blue
(default) or red.
4.8 Tool
4.8.1.1 Icon
51
4 - Component Reference
4.8.1.2 Component
4.8.1.3 Description
4.8.1.4 Summary
The Unique Solutions (Unique) component accepts a series of Solutions (Sol) and removes
repeated instances (i.e. those with the same layout and optimal volume as an existing one). This
is especially useful when e.g. comparing the effect of various levels of joint cost penalization.
4.9 About
4.9.1.1 Icon
4.9.1.2 Component
52
4 - Component Reference
4.9.1.3 Description
The description of the About component includes information relating to the specific version of
the software, as well as links to pertinent websites.
53
5 - Appendix
5 Appendix
5.1.1 Prerequisites
If a copy of Rhino is not already installed, it can be downloaded from the Rhino3D website
(rhino3d.com); a fully functional trial version is available. Grasshopper is integrated into Rhino
6 and above, obviating the need to download it separately.
5.1.2 Installation
5.1.3 Licensing
Peregrine license files have a .lic extension. To use them, they need to be placed in the “license”
folder within the Rhino plug-ins directory. The default location would be:
If a valid license is present in the correct location, the LPSolver component will function
correctly (see Section 2.1).
5.2 Theory
The LPSolver component undertakes a layout optimization of the problem. Layout optimization
is a numerical approach utilized to design (near-) optimal truss structures. It directly identifies
the optimal connectivity of nodes in a design domain.
1. Firstly, a design domain is specified along with load and support conditions;
2. Secondly, this design domain is discretized using nodes;
54
5 - Appendix
An example of a layout optimization is provided in Figure 85. Here, the design space is shown in
(a), while the optimized structure is shown in (b).
It should be noted that a ‘ground structure’ normally contains a very large number of potential
truss layouts, permitting highly efficient, though not necessarily practical, solutions to be
found.
5.2.1.1 Formulation
The LP formulation for layout optimization was first proposed by Dorn et al. (1964) and more
recently was made efficient for single and multiple load cases problems respectively by Gilbert
and Tyas (2003) and Pritchard et al. (2005). The formulation used here is:
min 𝑉 = 𝐥T 𝐚
Subject to:
𝐁𝐪∝ = 𝐟 ∝
for all 𝛼 ∈ 𝔽 { −
−𝜎 𝐚 ≤ 𝐪𝛼 ≤ 𝜎 + 𝐚
𝐚≥0
where V is structural volume, l and a are vectors of member lengths and areas, respectively. B is
an equilibrium matrix comprising direction cosines; q is a vector containing the internal bar
forces and f is a vector containing the external forces. Also and are limiting tensile and
compressive stresses respectively, 𝔽 = {1, 2, …, p} is a load case set, where is the load case
identifier and p represents the total number of load cases.
55
5 - Appendix
To improve computational efficiency of layout optimization, Gilbert and Tyas (2003) proposed
an adaptive solution scheme. It starts with a ‘ground structure’ containing only a few potential
members, and then gradually adds new members into the ‘reduced’ optimization problem. It is
important to note that the adaptive solution scheme has no impact on the structural efficiency
of the outcome truss layout, i.e., it is mathematically guaranteed that the structural volume
obtained is the same as that derived using the fully connected formulation. For more
information on this, the reader is referred to the original paper. A Python implementation of
this method is also freely available; see He et al. (2019).
The raw solution derived from layout optimization may contain a considerable number of thin
members. Most of these are not structurally important and can be deleted from the design. For
this reason, a threshold ‘filter’ number is used to select only the important members from the
raw solution. This ‘filter’ number will be validated so the resulting layout is as efficient as the
raw solution.
The Rationalization component seeks to both simplify and improve on the solution that it is
passed. It does this by undertaking a geometry optimization (GO). Here, the joint positions of
the structure as provided are moved to reduce the volume of the structure. As part of this
process, it is possible that joints may be merged. A description of the Geometry Optimization
process is provided in He and Gilbert (2015).
When considering the geometry optimization process in isolation, for a problem involving a
single load case, without self-weight, the optimization problem is written as:
Subject to:
𝐁(𝐱,𝐲) 𝐪 = 𝐟
−𝜎 −𝐚 ≤ 𝐪 ≤ 𝜎 +𝐚
𝐚≥0
Where l is a vector containing the lengths of the truss bars. The optimization variables
in this case are x, y, a and q. It is evident that the objective function and equality
constraint are both now non-linear (c.f. the layout optimization problem). Without loss
of generality, the GO can be categorized as a non-linear, non-convex optimization
problem.
56
5 - Appendix
For more information on the GO problem and the practicalities involved in its
implementation, the reader is referred to the original paper.
Joint costs are a rationalization technique proposed by Parkes (1975). According to his
formulation, a notional joint length, s, is added to the length of each bar. Thus, the computed
volume of the truss structure under consideration becomes:
𝑉 = ̃𝐥T 𝐚
Where ̃𝐥 is a vector containing modified truss bar lengths (i.e. {l1 + s,l2 + s, ..., lm + s}, for a problem
involving m bars).
Note that though this can simplify the truss layout, the calculated structural volume will clearly
always increase because of the inclusion of additional joint lengths. However, after the
optimization has been completed, the ‘standard’ volume can be calculated by summing up the
volumes of all bars, excluding the joint lengths from this calculation (all volumes reported
herein were calculated in this way).
The updated layout optimization problem, now including joint lengths and also self-weight, can
be stated as:
min 𝑉 = 𝐥̃T 𝐚
Subject to:
𝐁𝐪∝ + 𝐖𝐚 = 𝐟 ∝
for all 𝛼 ∈ 𝔽 { −
−𝜎 𝐚 ≤ 𝐪𝛼 ≤ 𝜎 + 𝐚
The following example considers both geometry optimization (GO) and joint length
rationalization of a problem. It is taken from He and Gilbert (2015).
The example was first considered by Hemp (1974). The problem involves application of a point
load at mid-height between two pinned supports. Hemp quoted the analytical volume to be
4.34P L/σ, but Lewinski (2005) repeated the calculations using greater precision to obtain a
more accurate solution, 4.32168P L/σ.
A sample layout optimization solution and corresponding rationalized solutions are also shown
in Figure 86. It is evident that both rationalization techniques allow simplified solutions to be
obtained when compared to the original layout optimization solution (a). However, whereas
the volume associated with the solution obtained using joint length rationalization (b) is 1.49 %
57
5 - Appendix
above the exact value, the solution obtained using geometry optimization rationalization (c) is
only 0.23 % above the exact value, a significant improvement on the original layout
optimization error of 0.75 %.
Figure 86 –Rationalization of a Cantilever Truss (a) by using (b) Joint Cost and GO (c) GO
• Buckling is not yet considered during the layout optimization process, though can be
included in the geometry optimization step (set in the Problem Specification property).
A partial workaround is to lower the compressive stress limit in the Mat component.
58
6 - References
6 References
Dorn W (1964). Automatic design of optimal structures. Journal de Mecanique, 3:25–52.
Gilbert M and Tyas A (2003), Layout optimization of large-scale pin-jointed frames. Engineering
Computations, 20(8):1044-1064.
He L, Gilbert M and Song X (2019), A Python script for adaptive layout optimization of
trusses. Structural and Multidisciplinary Optimization, 60(2):835–847.
Hemp WS (1974), Michell frameworks for uniform load between fixed supports. Engineering
Optimization 1:61–69.
Parkes EW (1975), Joints in optimum frameworks. International Journal of Solids and Structures,
11(9):1017–1022.
Pritchard T, Gilbert M and Tyas A (2005) Plastic layout optimization of large-scale frameworks
subject to multiple load cases, member self-weight and with joint length penalties. Proc of 6th
World Congresses of Structural and Multidisciplinary Optimization, Rio de Janeiro, Brazil.
59
The Innovation Centre
217 Portobello
Sheffield, S1 4DP
United Kingdom
limitstate3d.com/peregrine
3d@limitstate.com
+44 (0) 114 224 2240