This tutorial demonstrates how to perform topography optimization of a plate under torsion. A finite element model of the design space with loads and constraints applied is shown in the image below. It is assumed that the part is to be formed using a stamping process. The objective is to minimize the displacement of the node where the force is applied in the positive z-direction. Only the shape of the plate can be changed to achieve the objective, not the thickness.
Finite element model of the design space with loads and constraints.
A finite element model (shown in the above figure) is loaded into HyperMesh. The constraints, load, material properties, and subcase (loadstep) of the model are already defined. Topography design variables and optimization parameters are defined and the OptiStruct software determines the optimal reinforcement patterns. The results are viewed as animations of the contours of shape changes of the design space. Finally, the use of the grouping patterns is shown; based on the shape changes suggested by OptiStruct, a possible pattern is chosen for ease of manufacturing.
The optimization problem for this tutorial is stated as:
Objective:
|
Minimize nodal displacement at grid point where loading is applied.
|
Design variables:
|
Shape variables generated automatically on the designable space aligned with the elements normal.
|
The exercises covered in this tutorial include:
• | Setting up a topography optimization in HyperMesh |
• | Post-processing topology optimization results |
• | Introducing a manufacturing constraint in the optimization process |
Exercise
Step 1: Launch the HyperMesh Desktop, Load the User Profile and Retrieve the File
1. | Launch HyperMesh Desktop. |
2. | Choose OptiStruct in the User Profiles dialog and click OK. This loads the OptiStruct 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. |
User Profiles can also be accessed from the Preferences menu on the toolbar.
3. | From the File menu, click Open |
4. | Select the torsion_plate.hm file you saved to your working directory from the optistruct.zip file. Refer to Accessing the Model Files. |
5. | Click Open. The torsion_plate.hm database is loaded into the current HyperMesh session, replacing any existing data. |
Step 2: Check the Thickness of the Component
1. | From the Model browser, expand the Property entities. |
2. | Right-click on design and select Card Edit. |
A PSHELL card image panel should appear. OptiStruct stores information regarding shell thicknesses on the PSHELL card.
3. | Ensure that the thickness, T, is set to the value 1.0. |
4. | Click return to go to the main menu. |
Setting Up a Topography Optimization in HyperMesh
Step 3: Define Design Variables for Topography Optimization
For topography optimization, a design space and a "bead" definition need to be defined. The following section outlines how this is done. For further information on "bead" definition, refer to the DTPG card in the Reference Guide.
1. | From the Analysis page, enter optimization the panel. |
2. | Select the topography panel. |
3. | Make sure the create subpanel is selected using the radio buttons on the left-hand side of the panel. |
4. | Click desvar= and enter topo. |
5. | Click the highlighted props. |
6. | Check the box next to design and click select. |
7. | Click create to create the shape design variables for the selected component. |
8. | A topography design space definition, topo, has been created. All elements organized into the 'design' component collector are now included in the design space. |
9. | Select the bead params subpanel using the radio buttons on the left-hand side of the panel. |
10. | The field next to desvar = should contain the name of the newly created design space by default. If it does not, click desvar = and select topo from the list of topographical design spaces. |
11. | Click minimum width= and enter 5.0. This parameter controls the width of the beads in the model. The recommended value is between 1.5 and 2.5 times the average element width. |
12. | Click draw angle= and enter 60.0 (this is the default). This parameter controls the angle of the sides of the beads. The recommended value is between 60 and 75 degrees. |
13. | Click draw height= and enter 4.0. This parameter sets the maximum height of the beads to be drawn. |
14. | Check the box next to buffer zone. This parameter establishes a buffer zone between elements in the design domain and elements outside the design domain. |
15. | Make sure the draw direction: toggle is set to normal to elements. |
This parameter defines the direction in which the shape variables are created.
16. | Make sure the boundary skip: switch is set to load & spc. This tells OptiStruct to leave nodes at which loads or constraints are applied out of the design space. |
A "bead" definition has been created for the design space topo. Based on this information, OptiStruct will automatically generate bead variable definitions throughout the design variable domain, as shown on the DTPG card of the Reference Guide.
18. | Select the bounds subpanel using the radio buttons on the left-hand side of the panel. |
19. | Ensure that topo is in the field next to desvar =. If it is not, click desvar = and select topo from the list of topographical design spaces. |
20. | Click upper bound and enter 1.0 (this is the default). Upper bound on variables controlling grid movement (Real > LB, default = 1.0). This sets the upper bound on grid movement equal to UB*HGT. |
21. | Click lower bound and enter 0.0 (this is the default). |
22. | Click update. The upper bound sets the upper bound on grid movement equal to UB*HGT and the lower bound sets the lower bound on grid movement equal to LB*HGT. |
23. | Click return to go to the optimization panel. |
Step 4: Define the Responses
A detailed description can be found in the User's Guide under Responses. Define one response for the objective: displacement at the node where the force is applied.
1. | Enter the responses panel. |
2. | Click response = and enter displace. |
3. | Select the switch below response type and select static displacement from the pop-up menu. |
4. | Click nodes and select by id from the extended entity selection menu that pops up. |
5. | Enter 2500 and press the ENTER key. The node where the force is applied is now selected. |
dof1, dof2, and dof3 refer to translation in the X, Y, and Z directions.
dof4, dof5, and dof6 refer to rotation about the X, Y, and Z axes.
total disp is the resultant of the translational displacements in x, y, and z directions.
total rotation is the resultant of the rotational displacements in x, y, and z directions.
7. | Click create. A response, displace, is defined for the z-displacement of node 2500. |
8. | Click return to go to the optimization panel. |
Step 5: Define the Objective
In this example, the objective is to minimize the displacement response defined in the previous section.
1. | Enter the objective panel from the optimization panel. |
2. | Click the switch in the upper-left corner of the panel, and select min from the pop-up menu. |
3. | Click response = and select displace from the response list. A loadstep button appears in the panel. |
4. | Click loadstep and select torsion from the subcase (loadstep) list. |
5. | Click create. The objective function is now defined. |
6. | Click return twice to go to the main menu. |
Step 6: Submit the Job
1. | From the Analysis page, enter the OptiStruct panel. |
2. | Click save as following the input file: field. |
3. | Select the directory where you would like to write the OptiStruct model file and enter the name for the model, torsion_plate.fem, in the File name: field. The .fem extension is suggested for OptiStruct input decks. |
The name and location of the torsion_plate.fem file displays in the input file: field.
5. | Set the export options toggle to all. |
6. | Set the run options toggle to optimization. |
7. | Set the memory toggle to memory default. |
8. | Click OptiStruct. This launches the OptiStruct job. |
If the job was successful, new results files can be seen in the directory where the OptiStruct model file was written. The torsion_plate.out file is a good place to look for error messages that will help to debug the input deck if any errors are present.
Important files for a topography optimization include:
torsion_plate.grid
|
An OptiStruct file where the perturbed grid data is written.
|
torsion_plate.hgdata
|
HyperGraph file containing data for the objective function, constraint functions, design variables, and response functions for each iteration.
|
torsion_plate.hist
|
An OptiStruct output file for xy plotting containing the iteration history of the objective function, maximum constraint violation, design variables, DRESP1 type responses, and DRESP2 type responses.
|
torsion_plate.html
|
HTML report of the optimization, giving a summary of the problem formulation and the results from the final iteration.
|
torsion_plate.out
|
The OptiStruct output file containing specific information on the file set up, the set up of the optimization problem, estimate for the amount of RAM and disk space required for the run, information for each optimization iteration, and compute time information. Review this file for warnings and errors that are flagged from processing the torsion_plate.fem file.
|
torsion_plate_des.h3d
|
HyperView binary results file for information on shape changes.
|
torsion_plate_s1_h3d
|
HyperView binary results file for displacement and stress results for subcase 1.
|
torsion_plate.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. The .sh file may be used to restart a run and, if necessary, run OSSmooth files for topology optimization.
|
torsion_plate.stat
|
Summary of analysis process, providing CPU information for each step during analysis process.
|
Post-processing Topology Optimization Results
Shape contour information is output from OptiStruct for all iterations. In addition, Displacement and Stress results are output for the first and last iteration by default. This section describes how to view those results using HyperView.
Step 7: View a Static Plot of Shape Contours
1. | From the OptiStruct panel, click the HyperView button. This launches HyperView within the HyperMesh Desktop and loads the torsion_plate_des.h3d and torsion_plate_s1.h3d files reading the model and optimization results. |
2. | Click Close to close the message window. |
3. | Click the Contour icon on the toolbar to enter the contour panel. |
4. | Set Result type: to Shape Change (v) and type to Mag. |
5. | Click to choose the last iteration from the Simulation list. A deformed plate appears. |
Is the max= field showing 4.0e + 00?
In this case, it is. If it is not, your optimization has not progressed far enough. Decrease the OBJTOL parameter (set in the opti control panel on the optimization panel). This value, 4.0e+00, comes from the draw height defined earlier.
Contour plot showing the reinforcement pattern at the last iteration (converged solution)
Step 8: View a Transient Animation of the Shape Contour Changes
A transient animation of contour shapes will give a good idea of the shape changes happening through different iteration.
1. | Verify that the animate mode menu is set to Transient . |
2. | Click to start the animation. |
3. | Click to open the Animation Controls panel. |
4. | With the animation running, use the slider bar below Max Frame Rate: on the left side of the panel to adjust the speed of the animation. |
5. | Click to pause the animation. |
Step 9: View the Deformed Structure
The displacement and stress results from the first and last iterations (default) are given in the torsion_plate_s1.h3d file.
1. | Click the forward arrow icon to go to the next page. This page has the subcase information from the torsion_plate_s1.h3d file. |
2. | Verify that the animate mode menu is set to Linear Static. For a better visual of what it happening with this model, turn on mesh lines and contour the results. |
3. | Click the Deformed icon on the toolbar to enter the panel. |
4. | Set Result type: to Displacement(v). |
5. | Select the first iteration (Iteration 0) in the Results browser, as shown below. |
6. | Set the animation mode to Linear Static . |
7. | Click to start the animation. |
8. | Click to go to the Animation Controls panel. |
9. | With the animation running, use the slider bar below Max Frame Rate: on the left side of the panel to adjust the speed of the animation. |
A deformation animation of the original model is shown in the graphics window.
Does the deformed shape look correct for the boundary conditions you applied to the mesh?
10. | Click to stop the animation. |
11. | Use the Page Delete icon contained within the page control toolbar to delete the HyperView page. |
Introducing a Manufacturing Constraint in the Optimization Process
Next, pattern grouping will be added as a constraint for manufacturability.
The configuration obtained in the previous example (see the contour plot showing the reinforcement pattern at the 17th iteration) might be difficult to manufacture. It does give an idea of what kinds of patterns are likely to optimize the structure (in this case -- to minimize the displacement at the selected node).
A possible pattern, suggested by the static contour plot obtained in the previous exercise, is to use channels parallel to a diagonal. In this example, you choose the diagonal emerging from the node where the load is applied.
Step 10: Add Pattern Grouping Constraint
1. | Once back at the HyperMesh page, click return to exit the OptiStruct panel. |
2. | From the Analysis page, click optimization to enter the panel. |
3. | Click topography to enter the panel. |
4. | Select the pattern grouping subpanel using the radio buttons on the left-hand side of the panel. |
5. | Click desvar = and choose topo from the list of topographical design spaces. |
6. | Click the pattern type: switch and select linear. |
7. | Make sure the sub-type: switch is set to basic. |
8. | Click anchor node and select the node at the corner where the load is applied by clicking on it in the graphics window. |
9. | HyperMesh automatically moves the blue halo around the first node; select the node in the opposite corner by clicking on it in the graphics window. |
Pattern grouping node location.
11. | Click return twice to go to the main menu. |
Step 11: Submitting the Job
1. | From the Analysis page, click OptiStruct to enter the panel. |
2. | Click save as following the input file: field. |
3. | Select the directory where you would like to write the OptiStruct model file and enter the name for the model, torsion_pattern.fem, in the File name: field. The .fem extension is suggested for OptiStruct input decks. |
The name and location of the torsion_pattern.fem file displays in the input file: field.
5. | Set the export options toggle to all. |
6. | Click the run options switch and select optimization. |
7. | Set the memory toggle to memory default. |
8. | Click OptiStruct. This launches the OptiStruct job. |
If the job was successful, new results files can be seen in the directory where the OptiStruct model file was written. The torsion_pattern.out file is a good place to look for error messages that will help to debug the input deck if any errors are present.
View the new results as before. Also check the objective value for the zero-th and last iteration in the .out file. How does the final value for the objective compare to the final value obtained using 'none' option for pattern grouping?
Step 12: View a Static Plot of Shape Contours
Repeat the steps in the previous exercise to view the contour plot of the shape change.
Contour plot showing the reinforcement pattern with pattern grouping constraint at the last iteration
See Also:
OptiStruct Tutorials