The topology optimization technique yields a new design and optimal material distribution. Topology optimization allows designers to start with a design that already has the advantage of optimal material distribution and is ready for design fine tuning with shape or size optimization.
In this tutorial, topology optimization is performed on a model to create a new topology for the structure, removing any unnecessary material. The resulting structure is lighter and satisfies all design constraints.
The optimization problem for this tutorial is stated as:
Objective:
|
Minimize volume fraction.
|
Constraints:
|
Translation in the y-axis for node A < 0.07mm.
Translation in the y-axis at node B > -0.07mm.
|
Design variables:
|
The density of each element in the design space.
|
In this tutorial, you will learn to:
• | Setup the model in HyperMesh |
• | Analyze the baseline model |
• | Post-process the optimization results |
Exercise
Set Up the Model in HyperMesh
Step 1: Launch HyperMesh Desktop and Set the User Profile
1. | Launch HyperMesh Desktop through the start menu. The User Profiles dialog appears. |
2. | Select OptiStruct and click OK. This loads the user profile. It includes the appropriate template, macro menu, and import reader, paring down the functionality of HyperMesh to what is relevant for generating models for OptiStruct. |
Step 2: Open the cclip.hm File
1. | From the File menu on the toolbar, select Open > Model. |
2. | Select the cclip.hm file you saved to your working directory from the optistruct.zip file. Refer to Accessing the Model Files. |
3. | Click Open. The cclip.hm database is loaded into the current HyperMesh session, replacing any existing data. The database only contains geometric data and the mesh. |
Step 3: Create Materials and Properties; Assign to Components
Since components need to reference a material, the materials collectors should be created first.
1. | In the Model browser, right-click and select Create > Material. |
2. | Enter the Name as Steel. |
3. | Select MAT1 as Card Image. |
4. | For E, enter the value 2.1E5. |
5. | For Nu, enter the value 0.3. |
6. | For RHO, enter the value 7.9E-9. |
7. | In the Model browser, right-click and select Create > Property. |
8. | For Name, enter prop_shell. |
9. | Select PSHELL as the Card Image. |
10. | For Material, click Unspecified > Material. |
11. | In the Select Material dialog, select Steel as the material and click OK to complete the material selection. |
12. | Activate the thickness field for the shell component by clicking T. This allows the field to be edited. Accept the default of 1.0. |
13. | Expand the Component folder to see the list of components. |
14. | Select the component comp_shell. |
15. | In the Entity Editor, for Property, click Unspecified > Property. |
16. | In the Select Property dialog, select prop_shell from the list of properties and click OK to complete the property selection. |
Step 4: Create Load Collectors
Next, you will create two load collectors (Constraints and Forces) and assign each a color. Follow these steps for each load collector.
1. | In the Model browser, right-click and select Create > Load Collector. |
2. | Enter the Name as Constraints. |
3. | Leave the Card Image field set to None. |
4. | Click Color, and select a color from the palette. |
5. | Using the same method, create the second load collector, named Forces. |
Step 5: Create Constraints
For the three nodes that show constraints in the following figure, you need to create the SPC constraints and assign them to the Constraints load collector, as outlined in the following steps.
1. | From the Model browser, expand Load Collector, right-click on Constraints, and click Make Current. |
2. | From the Analysis page, click constraints. |
3. | Select nodes and corresponding dofs, and click create to create constraints, as shown below. |
Mesh showing the boundary conditions applied on the c-clip.
Step 6: Create Forces
In this step, you will load the structure with two opposing forces of 100.0 N at the opposite tips of the opening of the c-clip.
1. | From the Model browser, expanded Load Collector, right-click on Forces, and click Make Current. |
2. | From Analysis page, click forces. |
3. | To create the force at the top of the opening, click on the node at the top of the opening (A) of the c-clip as in the figure below. |
Opposing forces created at the opening of the c-clip.
4. | Click magnitude=, enter 100.0, and press ENTER. |
5. | Set the switch below to y-axis. |
6. | Click create. An arrow, pointing up, appears at the node on the screen. |
7. | Similarly, to create the force at the bottom of the opening, click on the node at the bottom of the opening (B) of the c-clip. |
8. | Click magnitude=, enter -100.0, and press ENTER. |
9. | Verify that the y-axis is selected. |
10. | Click create. An arrow, pointing down, appears at the node on the screen. |
11. | To provide a separation between the arrows, select uniform size=, enter 7, and press ENTER. |
12. | Click return to go back to the Analysis page. |
Step 7: Create Load Cases
The last step in establishing boundary conditions is the creation of a loadstep.
1. | From the Analysis page, click loadsteps. |
2. | Click name=, enter opposing forces, and press ENTER. |
3. | Set type to linear static. |
4. | Check the box preceding SPC. An entry field appears to the right of SPC. |
5. | Click on the entry field and select Constraints from the list of load collectors. |
6. | Check the box preceding LOAD and select Forces from the list of load collectors. |
8. | Click return to go back to the Analysis page. |
Analyze the Baseline Model
Step 8: Run the Analysis
A linear static analysis of this C-clip is performed prior to the definition of the optimization process. An analysis identifies the responses of the structure before optimization to ensure that constraints defined for the optimization are reasonable.
1. | From the Analysis page, click OptiStruct. |
3. | Select the directory where you would like to write the OptiStruct model file and enter the name for the model, cclip.fem, in the File name: field. For OptiStruct input decks .fem is the recommended extension. |
The name and location of the cclip.fem file displays in the input file: field.
5. | Set the export options: toggle to all. |
6. | Click the run options: switch and select analysis. |
7. | Set the memory options: toggle to memory default. |
8. | Set the options: field to blank. |
Upon successful completion of the analysis, the message ANALYSIS COMPLETED will appear HyperWorks Solver View dialog.
10. Click Close in the HyperWorks Solver View dialog.
Step 9: View Displacement Contour
1. | From the OptiStruct panel, click HyperView. HyperView launches the cclip.mvw file which loads the model and the results files. |
2. | From the Results menu, click Plot and then click Contour. |
3. | Select Displacement as the Result type and set the menu below Displacement to Y. |
This shows the contour of Y displacements.
5. | Verify if the values are equivalent to those in the image above. |
6. | From the Page Control toolbar, click the page delete icon to delete the HyperView page, as seen in the figure below. |
7. | Back in HyperMesh, click return to exit the panel. |
Set Up the Optimization
The finite element model, consisting of shell elements, element properties, material properties, and loads and boundary conditions has been defined. Now a topology optimization will be performed with the goal of minimizing the amount of material to be used. Typically, removing the material in an existing volume with the same loads and boundary conditions makes the model less stiff and more prone to deformation. Therefore, you need to track the displacements (which represent the stiffness of the structure) and constrain the optimization process such that the least material necessary is used and overall stiffness is also achieved.
The forces in the structure are applied on the outer nodes of the opening of the clip, making those two nodes critical locations in the mesh where the maximum displacement is likely to occur. In this tutorial, you will apply a displacement constraint on the nodes so that they would not displace more than 0.07 in the y-axis.
Step 10: Create the Topology Design Variables
1. | From the Analysis page, click optimization. |
3. | Make sure the create subpanel is selected. |
4. | Click desvar=, enter d_shell, and press ENTER. |
5. | Click props and select prop_shell from the list of props; click select. |
7. | Verify that the base thickness is 0.0. |
A value of 0.0 implies that the thickness at a specific element can go to zero, and therefore becomes a void.
Step 11: Create a Volume Response
1. | Enter the Responses panel. |
2. | Click response= and enter volfrac. |
3. | Click the switch below response type switch and select volumefrac from the pop-up menu. |
Step 12: Create a Displacement Response
To create a displacement as a response, you need to supply a meaningful name for the response, set the response type to displacement, select the node for the response, and select the type of displacement (dof).
2. | Click response= and enter upperdis. |
3. | Change the response type: to static displacement. |
4. | Click the node labeled A (upper opening of the c-clip), as shown in the figure to select it. |
5. | Select dof2 for the node. |
7. | Click response= and enter lowerdis. |
8. | The response type: should be static displacement. |
9. | Click the node labeled B (lower opening of the c-clip), as shown in the figure to select it. |
10. | Select dof2 and create the response. |
11. | Click return to go back to the Optimization panel. |
Step 13: Create Constraints on Displacement Responses
In this step, the upper and lower bound constraint criteria for this analysis will be set.
1. | Select the Dconstraints panel. |
2. | Click constraint= and enter c_upper. |
3. | Check the box for upper bound only. |
4. | Click upper bound= and enter 0.07. |
5. | Select response= and set it to upperdis. |
7. | Check the box next to opposing forces. |
10. | Click constraint= and enter c_lower. |
11. | Check the box for lower bound only. |
12. | Click lower bound= and enter -0.07. |
13. | Select response= and set it to lowerdis. |
15. | Check the box next to opposing forces. |
17. | Click return to go back to the Optimization panel. |
Step 14: Define the Objective Function
2. | The switch on the left should be set to min. |
3. | Click response= and select volfrac. |
5. | Click return twice to exit the Optimization panel. |
Step 15: Run the Optimization Problem
1. | From the Analysis page, click control cards. |
3. | Click SCREEN and return. |
This will make OptiStruct output the optimization iterations to the output window.
4. | From the Analysis page, select OptiStruct. |
5. | Click save as, enter cclip_complete.fem as the file name, and click Save. |
6. | Click the run options: switch and select optimization. |
7. | Click OptiStruct to run the optimization. |
The message following message appears in the window at the completion of the job:
OPTIMIZATION HAS CONVERGED.
FEASIBLE DESIGN (ALL CONSTRAINTS SATISFIED).
OptiStruct also reports error messages if any exist. The file cclip_complete.out can be opened in a text editor to find details regarding any errors. This file is written to the same directory as the .fem file.
8. | Click Close to close the HyperWorks Solver View dialog. |
The default files that get written to your run directory include:
cclip_complete.res
|
HyperMesh binary results file.
|
cclip_complete.h3d
|
HyperView binary results file.
|
cclip_complete.HM.comp.cmf
|
HyperMesh command file used to organize elements into components based on their density result values. This file is only used with OptiStruct topology optimization runs.
|
cclip_complete.out
|
OptiStruct output file containing specific information on the file setup, the setup of the optimization problem, estimates for the amount of RAM and disk space required for the run, information for all optimization iterations, and compute time information. Review this file for warnings and errors that are flagged from processing the cclip_complete.fem file.
|
cclip_complete.sh
|
Shape file for the final iteration. It contains the material density, void size parameters and void orientation angle for each element in the analysis. This file may be used to restart a run.
|
cclip_complete.hgdata
|
HyperGraph file containing data for the objective function, percent constraint violations, and constraint for each iteration.
|
cclip_complete.oss
|
OSSmooth file with a default density threshold of 0.3. You may edit the parameters in the file to obtain the desired results.
|
cclip_complete_hist.mvw
|
Contains the iteration history of the objective, constraints, and the design variables. It can be used to plot curves in HyperGraph, HyperView, and MotionView.
|
cclip_complete.stat
|
Contains information about the CPU time used for the complete run and also the break-up of the CPU time for reading the input deck, assembly, analysis, convergence, etc.
|
Post-process the Optimization Results
OptiStruct provides element density information for all iterations, and also gives displacement and von Mises stress results (linear static analysis) for the starting and last iterations. This section describes how to view those results in HyperView.
Step 16: View an Iso Value Plot of Element Densities
This plot provides the information about the element density. Iso Value retains all of the elements at and above a certain density threshold. Pick the density threshold providing the structure that suits your needs.
1. | From the OptiStruct panel, click HyperView. This will launch HyperView inside the HyperMesh Desktop and open the session file cclip_complete.mvw which contains two pages with the results from two files: |
Page 2 - cclip_complete_des.h3d: Optimization history results (element density).
Page 3 - cclip_complete_s1.h3d: Subcase 1 results; initial and final (displacement stress).
2. | On page 2, click in the area of the Results browser circled below. |
3. | Select Design under the load case section and the last iteration listed. |
4. | From Results menu, click Plot > Iso. |
5. | In the panel area at the bottom of the GUI, select Element Densities as the Result type. |
6. | Click Top view orientation to set the correct view. |
8. | Set the Current Value: to 0.3. |
Iso value plot of element densities.
9. | Move the slider below Current value: to change the density threshold. |
You will see the iso value in the graphics window update interactively when you scroll to a new value. Use this tool to get a better look at the material layout and the load paths from OptiStruct.
Step 17: Compare Static Contour of Original to the Optimized Material Layout
1. | In HyperView, click the Next Page arrow toolbar icon to go to page 3. This will bring up the cclip_complete_s1.h3d file, which contains the static subcase results for the first and last iteration steps. |
2. | Divide this page into two vertical windows using the Page Layout toolbar icon . |
3. | Click Top view orientation to set the correct view. |
4. | From the Results menu, select Plot > Contour. |
5. | Select Displacement as the Result type, and set the menu below Displacement to Y. |
7. | Click the Deformed toolbar icon . |
8. | On the Deformed shape panel, change the scale value to 100, the undeformed shape to edges, and click Apply. |
9. | From the Edit menu, click Copy > Window, and then click on the empty window. |
10. | Again, from the Edit menu, click Paste > Window. |
11. | Switch the animation mode to Linear . |
12. | With the second window selected, select Iteration 28. |
13. | From the Edit menu, click Copy > Page. |
14. | Again, from the Edit menu, click Paste > Page. This will create a third page on this report. |
15. | Now click the first window and click the Contour icon . |
16. | Change the Result type to Element Stresses (2D & 3D) (t). |
17. | For Averaging method:, select Simple and click Apply. |
18. | Click with the right button on the first window; select Apply Style, then Current Page, and select Contour. |
These stress results can be used only as reference to help understanding how far from the limits the design is.
Remember that topologic optimization will show you a concept shape and the stress results should be validated during the next design phases.
See Also:
OptiStruct Tutorials