LevelOpt Manual¶
Welcome to the Topology Optimization Plugin for Grasshopper and Rhino, where cutting-edge level set optimization technology meets the flexibility of Grasshopper. For those looking to generate high-performance concepts quickly, the plugin offers automated optimization, creating strong, efficient designs with ease.
But what truly sets this plugin apart is its customization capability. Built to complement Grasshopper’s computational design flexibility, the plugin lets you open the loop of optimization—interjecting design changes, incorporating starting designs, and fine-tuning settings at any stage. This gives you the freedom to adaptively adjust feature sizes, wall thicknesses, and preserved functional regions as optimization progresses, making it ideal for tailored, intricate designs. With this plugin, you’re not just optimizing; you’re crafting designs that push the boundaries of performance and adaptability.
Current Features
Optimization for Compliance: Maximize stiffness for a specified weight target.
Supports Both Isotropic and Orthotropic Materials
Component-Level Flexibility: Optimize individual components or maintain interface connectivity in assemblies.
Functional Region Preservation: Ensure critical zones remain intact during optimization.
Custom Optimization: Provide a starting design and adjust settings between iterations.
Grasshopper Block Documentation¶
LevelOpt Block |
|
---|---|
Input |
Advanced Settings Block |
|
---|---|
Input |
Settings Description¶
Regular Settings¶
Setting |
Description |
Recommended/Default Values |
Effect |
---|---|---|---|
Volume Fraction Constraint ( |
Sets the target volume of the final design as a fraction of the initial volume. |
user-defined based on design requirements (fraction of initial volume) defaults to 0.5 |
Lower values remove more material, resulting in lighter designs. |
Number of design iterations ( |
Sets the maximum number of iterations for the optimization process. Each iteration refines the design by updating the topology based on the objective function and constraints. |
|
Higher values allow for more refined designs but increase computation time. Lower values result in quicker completion, but the design may be less optimized. |
Resolution ( |
Sets the resolution of the finite element mesh used in the analysis. |
user-defined based on problem complexity |
Smaller values provide more accurate analysis but at a higher computational cost. Influences Level Set Cell Size. |
Starting Design Geometry ( |
Allows users to begin optimization from an existing design or custom geometry. |
User-defined |
Uses a starting point to refine or enhance an existing design, rather than starting from a blank slate. (See Example 🖼️) |
Advanced Settings¶
Advanced Setting |
Description |
Recommended/Default Values |
Effect |
---|---|---|---|
Level Set Cell Size ( |
Determines the size of the level set grid cells relative to the FEA grid. |
0.25 to 1.0 (fraction of FEA grid size), 0.5 default |
Smaller values create finer, more detailed features but slower convergence; larger values speed up the process. (See Example 🖼️) |
Move Limit ( |
Controls the extent of changes per optimization step, as a factor of the level set cell size. |
0.5 to 2.0 (factor of level set cell size), 1.0 default |
Higher values lead to faster convergence but may be unstable; lower values provide more gradual, stable changes. (See Example 🖼️) |
Smoothing Iterations ( |
Defines how often the geometry is smoothed during the optimization process. |
1 to 10 (iterations), 1 default |
Frequent smoothing (lower values) results in smoother designs; less frequent smoothing preserves finer details. (See Example 🖼️) |
Fix Thickness ( |
Specifies the width around load and boundary conditions that remains unchanged. |
Varies as needed (factor of level set cell size), 4 default |
Preserves critical regions around loads/supports, ensuring they are not altered during optimization. (See Example 🖼️) |
Retain Interfaces between Components ( |
Allows users to specify if the interface between the design domain (optimized) and non-design domain should be fully preserved. |
|
|
Examples¶
Below are examples which go over the LevelOpt workflow setup, post-processing, and results.
Example: GE Bracket Optimization¶
To download the demo files for this workflow download the zip file here.
GE Bracket Workflow
Intact’s LevelOpt workflow can be broken into three core steps:
Run an Intact stress simulation (See this documentation for more details/examples)
specify the component(s) geometry & material
reference the surfaces/meshes and specify inputs for restraints and loads
set the fidelity for the solver via the settings (resolution/cell size)
solve
(optional) visualize quantities such as displacement or von Mises stress
Specify the LevelOpt input parameters:
LevelOpt Advanced Settings block
level set cell size = 0.75
move limit = 1.0
smoothing period = 1
design domain component to optimize (from the stress simulation)
Intact stress simulation output
max iterations = 50 (1 iteration used in video starting from the final iteration for brevity)
volume fraction constraint = 0.25
Solve LevelOpt & post-process
click ‘solve’ after all inputs are connected
(optional) visualize velocities/sensitivities
(optional) bake/view final mesh in Rhino
(optional) view iteration log output to see volume fraction and compliance
Example: NASA EXCITE Bracket Assembly¶
To download the demo files for this workflow download the zip file here.
NASA EXCITE Bracket Workflow
Run an Intact stress simulation (See this documentation for more details/examples)
specify the component(s) geometry & material
reference the surfaces/meshes and specify inputs for restraints and loads
set the fidelity for the solver via the settings (resolution/cell size)
solve
(optional) visualize quantities such as displacement or von Mises stress
Specify the LevelOpt input parameters:
LevelOpt Advanced Settings block
level set cell size = 0.50
move limit = 1.0
smoothing period = 1
design domain component to optimize (from the stress simulation) note that this corresponds to the bracket geometry component, not the block component to which the load is applied
Intact stress simulation output
max iterations = 100 (1 iteration used in video starting from the final iteration for brevity)
volume fraction constraint = 0.20
Solve LevelOpt & post-process
click ‘solve’ after all inputs are connected
(optional) visualize velocities/sensitivities
(optional) bake/view final mesh in Rhino
(optional) view iteration log output to see volume fraction and compliance