Design Optimization
Design Optimization
Introduction
This tutorial was completed using ANSYS 7.0 The purpose of this tutorial is to
introduce a method of solving design optimization problems using ANSYS. This
will involve creating the geometry utilizing parameters for all the variables,
deciding which variables to use as design, state and objective variables and setting
the correct tolerances for the problem to obtain an accurately converged solution in
a minimal amount of time. The use of hardpoints to apply forces/constraints in the
middle of lines will also be covered in this tutorial.
A beam has a force of 1000N applied as shown below. The purpose of this
optimization problem is to minimize the weight of the beam without exceeding the
allowable stress. It is necessary to find the cross sectional dimensions of the beam
in order to minimize the weight of the beam. However, the width and height of the
beam cannot be smaller than 10mm. The maximum stress anywhere in the beam
cannot exceed 200 MPa. The beam is to be made of steel with a modulus of
elasticity of 200 GPa.
3. Define Keypoints
Preprocessor > Modeling > Create > Keypoints > In Active CS...
K,#,x,y
4. Create Lines
Preprocessor > Modeling > Create > Lines > Lines > In Active Coord
L,1,2
Hardpoints are often used when you need to apply a constraint or load at a
location where a keypoint does not exist. For this case, we want to apply a
force 3/4 of the way down the beam. Since there are not any keypoints here
and we can't be certain that one of the nodes will be here we will need to
specify a hardpoint
You have now created a keypoint labelled 'Keypoint 3' 3/4 of the way down
the beam.
For this problem we will use the BEAM3 (Beam 2D elastic) element.
This element has 3 degrees of freedom (translation along the X and Y
axes, and rotation about the Z axis).
Preprocessor > Material Props > Material Models > Structural >
Linear > Elastic > Isotropic
Preprocessor > Meshing > Size Cntrls > ManualSize > Lines > All
Lines...
Preprocessor > Meshing > Mesh > Lines > click 'Pick All'
LMESH,ALL
2. Apply Constraints
Solution > Define Loads > Apply > Structural > Displacement > On
Keypoints
3. Apply Loads
Solution > Define Loads > Apply > Structural > Force/Moment > On
Keypoints
The applied loads and constraints should now appear as shown in the figure
below.
In this problem, we would like to find the maximum stress in the beam and the
volume as a result of the width and height variables.
You will obtain a window notifying you that the EVolume is now
400000 mm2
Now if you view the parameters (Utility Menu > Parameters > Scalar
Parameters...) you will see that Volume has been added.
3. Define the maximum stress at the i node of each element in the beam
o Select General Postproc > Element Table > Define Table...
> Add...
o The following window will appear. Fill it in as shown to obtain the
maximum stress at the i node of each element and store it as
'SMAX_I'.
Now we will need to sort the stresses in descending order to find the
maximum stress
o Select General Postproc > List Results > Sorted Listing > Sort
Elems
o Complete the window as shown below to sort the data from
'SMAX_I' in descending order
5. Define maximum stress at the j node of each element for the beam
o Select General Postproc > Element Table > Define Table...
> Add...
o Fill this table as done previously, however make the following
changes:
save the data as 'SMAX_J' (instead of 'SMAX_I')
The element table data enter NMISC,3 (instead of NMISC,1).
This will give you the max stress at the j node.
o Select General Postproc > List Results > Sorted Listing > Sort
Elems to sort the stresses in descending order.
o However, select 'SMAX_J' in the Item, Comp selection box
6. Store the data (Max Stress) as a parameter
o Select Utility Menu > Parameters > Get Scalar Data...
o In the window which appears select 'Results Data' and 'Other
operations'
o In the that appears, fill it in as shown previously , however, name the
parameter 'SMaxJ'.
7. Select the largest of SMAXJ and SMAXI
o Type SMAX=SMAXI>SMAXJ into the command line
This will set the largest of the 2 values equal to SMAX. In this case
the maximum values for each are the same. However, this is not
always the case.
Note that the maximum stress is 281.25 which is much larger than the
allowable stress of 200MPa
Design Optimization
Now that we have parametrically set up our problem in ANSYS based on our
initial width and height dimensions, we can now solve the optimization problem.
If you open the command file in a text editor such as Notepad, it should
similar to this:
/BATCH
! /COM,ANSYS RELEASE 7.0 UP20021010 16:10:03 05/26/2003
/input,start70,ans,'C:\Program Files\Ansys
Inc\v70\ANSYS\apdl\',,,,,,,,,,,,,,,,1
/title, Design Optimization
*SET,W , 20
*SET,H , 20
/PREP7
K,1,0,0,,
K,2,1000,0,,
L, 1, 2
!*
HPTCREATE,LINE,1,0,RATI,0.75,
!*
ET,1,BEAM3
!*
!*
R,1,W*H,(W*H**3)/12,H, , , ,
!*
!*
MPTEMP,,,,,,,,
MPTEMP,1,0
MPDATA,EX,1,,200000
MPDATA,PRXY,1,,.3
!*
LESIZE,ALL,100, , , ,1, , ,1,
LMESH, 1
FINISH
/SOL
!*
ANTYPE,0
FLST,2,1,3,ORDE,1
FITEM,2,1
!*
/GO
DK,P51X, , , ,0,UX,UY, , , , ,
FLST,2,1,3,ORDE,1
FITEM,2,2
!*
/GO
DK,P51X, , , ,0,UY, , , , , ,
FLST,2,1,3,ORDE,1
FITEM,2,3
!*
/GO
FK,P51X,FY,-2000
! /STATUS,SOLU
SOLVE
FINISH
/POST1
AVPRIN,0,0,
ETABLE,EVolume,VOLU,
!*
SSUM
!*
*GET,Volume,SSUM, ,ITEM,EVOLUME
AVPRIN,0,0,
ETABLE,SMax_I,NMISC, 1
!*
ESORT,ETAB,SMAX_I,0,1, ,
!*
*GET,SMaxI,SORT,,MAX
AVPRIN,0,0,
ETABLE,SMax_J,NMISC, 3
!*
ESORT,ETAB,SMAX_J,0,1, ,
!*
*GET,SMaxJ,SORT,,MAX
*SET,SMAX,SMAXI>SMAXJ
! LGWRITE,optimization,,C:\Temp\,COMMENT
Several small changes need to be made to this file prior to commencing the
optimization. If you created the geometry etc. using command line code,
most of these changes will already be made. However, if you used GUI to
create this file there are several occasions where you used the graphical
picking device. Therefore, the actual items that were chosen need to be
entered. The code 'P51X' symbolizes the graphical selection. To modify the
file simply open it using notepad and make the required changes. Save and
close the file once you have made all of the required changes. The following
is a list of the changes which need to be made to this file (which was created
using the GUI method)
There are also several lines which can be removed from this file. If you are
comfortable with command line coding, you should remove the lines which
you are certain are not required.
Now that we have decided our design variables, we need to define ranges
and tolerances for each variable. For the width and height, we will select a
range of 10 to 50 mm for each. Because a small change in either the width
or height has a profound effect on the volume of the beam, we will select a
tolerance of 0.01mm. Tolerances are necessary in that they tell ANSYS the
largest amount of change that a variable can experience before convergence
of the problem.
For the stress variable, we will select a range of 195 to 200 MPa with a
tolerance of 0.01MPa.
Repeat the above steps to specify the variable limits for the
width of the beam (identical to specifications for height)
o Define the State Variables
Select Main Menu > Design Opt > State Variables... >
Add...
In the window fill in the following sections
Select 'SMAX' in the ‘Parameter Name’ section.
Enter: Lower Limit (MIN = 195)
Upper Limit (MAX = 200)
Feasibility Tolerance (TOLER = 0.001)
o Define the Objective Variable
Select Main Menu > Design Opt > Objective...
Select ‘VOLUME’ in the ‘Parameter Name’ section.
Under Convergence Tolerance, enter 200.
b. Define the Optimization Method
There are several different methods that ANSYS can use to solve an
optimization problem. To ensure that you are not finding a solution at a
local minimum, it is advisable to use different solution methods. If you have
trouble with getting a particular problem to converge it would be a good
idea to try a different method of solution to see what might be wrong.
NITR
Max number of iterations. Defaults to 10.
SIZE
% that is applied to the size of each line search step. Defaults to 100%
DELTA
forward difference (%) applied to the design variable range that is used to
compute the gradient. Defaults to 0.2%
You will probably see that the width=13.24 mm, height=29.16 mm,
and the stress is equal to 199.83 MPa with a volume of 386100mm 2.
Now you may wish to specify titles for the X and Y axes
o Select Utility Menu > Plot Ctrls > Style > Graphs > Modify Axes...
o In the window, enter ‘Number of Iterations’ for the ‘X-axis label’
section.
o Enter ‘Width and Height (mm)’ for the ‘Y-axis label’.
o Click 'OK'
o Select Utility Menu > PlotCtrls
In the graphics window, you will see a graph of width and height throughout
the optimization. You can print the plot by selecting Utility Menu >
PlotCtrls > Hard Copy...
You can plot graphs of the other variables in the design by following the above
steps. Instead of using width and height for the y-axis label and variables, use
whichever variable is necessary to plot. Alternatively, you could list the data by
selecting Main Menu > Design Opt > Design Sets > List... . In addition, all of the
results data (ie stress, displacement, bending moments) are available from the
General Postproc menu.