Topology Optimization Walk-through

In this example, we will learn how to perform Topology Optimization in nTop Platform. Topology Optimization (TopOpt) is a numerical design operation that determines the optimal shape of a part based on a set of objectives and constraints. TopOpt allows the user to design geometries that best achieve the desired objective while considering complex and multivariate design constraints.

This workflow and attached file demonstrate how to use TopOpt to design a lightweight bracket with minimal structural compliance. The workflow includes setup of an FE model with boundary conditions, the definition of TopOpt constraints and objectives, and post-processing of TopOpt results to create a final part design.

Following nTop best practices, blocks are appropriately renamed to describe their function by double-clicking on the block name. Also, blocks that are cross-referenced within the notebook should be made into variables by right-clicking the block header and selecting Make Variable.


Step 01: Create the Design Space from a CAD part

To begin, we need to define the design space that the optimization will be performed on. Start by importing a Base CAD Part (attached at the bottom) that we will then convert into the design space. In this example, we have a rectangular prism with three holes. We will create the following CAD variables to be used later in our model. 

  • The entire design space
  • The two outside hole faces, which will be the restrained interfaces
  • The center hole face, which will be the loaded interface

To extract the entire design space, double left click on the CAD model, right-click, and select Create CAD Body Variable.

To extract a CAD Face, single click on the desired face (highlighted in blue), right-click, and select Create CAD Face Variable. Hold CTRL to select multiple faces at once.

See Working With CAD Bodies for additional details.

Step 02: Define Material Properties

Define a material to be used in the TopOpt by creating an Isotropic Material block. Next, create an Isotropic Elastic Property block, insert Young's modulus and Poisson's ratio, and drag it into the properties' input.

Step 03: Create a Volume Mesh

Mesh the design space into volumetric FE elements. Note that the mesh size will impact the optimization process. Smaller mesh size will increase the level of detail in your design, but it will also increase computation time.

See How to Create an FE Mesh for additional details.

Step 04: Assemble an FE Model with Boundary Conditions

Assemble a finite element model by specifying the FE Volume Mesh and Material Properties defined above. Add boundary conditions using Force and Displacement Restraint blocks. The FE Face Boundary block is used to assign CAD faces to the boundary condition blocks.

Step 05: Specify Parameters for Topology Optimization

The first step in setting up TopOpt is to define its objective. The TopOpt objective is what property, or 'design response', we hope to minimize or maximize in our part. nTop supports several design responses, including structural compliance, volume fraction, displacement, and stress. Use the Optimization Objective block to specify the design response(s). In this example, the objective is to minimize structural compliance.

TopOpt also requires constraints to be provided by the user. An underconstrained TopOpt process will simply fill in or remove all volume from the design region because those results lead to the actual minimization or maximization of the design response. Therefore, TopOpt procedures must be properly constrained in order to achieve meaningful results. The most commonly used constraint simply applies a minimum or maximum bound to a design response, such as compliance, volume fraction, displacement, or stress. This TopOpt example is constrained such that the volume fraction of the final part is less than 0.2. In other words, the resulting optimized part will have a targeted volume of 20% of the whole design space. Notice that the volume fraction cutoff in the Design Response Constraint block is made into a variable for easy adjustment.

Step 06: Run the Topology Optimization

Create a Topology Optimization block, and fill it with the FE Model, Objective, and Constraints created above. The rest of the inputs can be left as default for this example. More information on these settings can be found in the block’s information panel. After completion of TopOpt processing, a window pops up in the Viewport with several options for visualizing the results.

The TopOpt process works by assigning a value between 0 and 1 to all of the elements of the mesh, where higher values are assigned to elements that most effectively contribute to the objective of the optimization. These values are referred to as the TopOpt density. For example, an element in the bottom corner of the design space, far away from the applied load, is given a density value close to 0, because placing material here does not contribute to the goal of minimizing structural compliance. On the other hand, elements close to the loaded center hole are given a density value close to 1, because having material there is necessary to support the load.

The Thresholded Elements option in the TopOpt viewing window allows the user to see what density values have been assigned to all elements in the design space. Use the Threshold slider to only view elements with a value higher than the specified threshold.


The Iso-contour view shows a single surface interpolated from all elements with TopOpt density values close to the specified threshold.


The Iteration slider allows you to see the evolution of the TopOpt throughout the optimization iterations.


Step 07: TopOpt Post-Processing

Once you have inspected your TopOpt results and found an acceptable threshold value, use the nTop Body from Topology Optimization block to convert the results.

The raw TopOpt output has artifacts on its surface from the mesh that can be removed using the Smoothen Body block. The surface artifacts are roughly the size of the FE mesh size, so in order to capture and remove them, a smoothening grid size of half the mesh size is used in the Smoothen Body block. This is done using a Divide block.

Step 08: Consolidate Part

The topology-optimized volume is now ready to be recombined with the interfaces of the original CAD geometry. To do so, create thickened nTop Bodies from the CAD faces of the interfaces, and then use the Boolean Union block to combine the bodies. 

Next, use the Boolean Union block to combine the TopOpt parts to the interface holes, and apply a blend radius to keep the transitions between bodies congruent.

Lastly, perform a Boolean Intersect operation with your part and the original CAD body to ensure that the interfaces of the original design space are preserved.

 Download the File

Base CAD File and Example File

Interested in learning more about Topology Optimization? Check out Topology Optimization: Settings

In use is nTop Version 2.4.5 - Methods and interface may have changed in different versions.

Was this article helpful?



Article is closed for comments.