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.
To solve an optimization problem in ANSYS, parameters need to be defined for all design variables.
NOTE: None of the variables defined in ANSYS are allowed to have negative values.
We are going to define 2 Keypoints for this beam as given in the following table:
Create a line joining Keypoints 1 and 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).
In the 'Real Constants for BEAM3' window, enter the following geometric properties: (Note that '**' is used instead '^' for exponents)
NOTE: It is important to use independent variables to define dependent variables such as the moment of inertia. During the optimization, the width and height will change for each iteration. As a result, the other variables must be defined in relation to the width and height.
In the window that appears, enter the following geometric properties for steel:
For this example we will specify an element edge length of 100 mm (10 element divisions along the line).
Pin Keypoint 1 (ie UX, UY constrained) and constrain Keypoint 2 in the Y direction.
Apply a vertical (FY) point load of -2000N at Keypoint 3
The applied loads and constraints should now appear as shown in the figure below.
To perform an optimization, we must extract the required information.
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.
Note that this is the volume of each element. If you were to list the element table you would get a volume for each element. Therefore, you have to sum the element values together to obtain the total volume of the beam. Follow the instructions below to do this.
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.
Note that nmisc,1 is the maximum stress. For further information type Help beam3 into the command line
Now we will need to sort the stresses in descending order to find the maximum stress
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
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.
It is necessary to write the outline of our problem to an ANSYS command file. This is so that ANSYS can iteratively run solutions to our problem based on different values for the variables that we will define.
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.
ANSYS needs to know which variables are critical to the optimization.
To define variables, we need to know which variables have an effect on the variable to be minimized.
In this example our objective is to minimize the volume of a beam which is directly related to the weight of the beam.
ANSYS categorizes three types of variables for design optimization:
NOTE: As previously stated, none of the variables defined in ANSYS are allowed to have negative values.
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.
Because the volume variable is the objective variable, we do not need to define an allowable range. We will set the tolerance to 200mm3. This tolerance was chosen because it is significantly smaller than the initial magnitude of the volume of 400000mm3 (20mm x 20mm x 1000mm).
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.
For this problem we will use a First-Order Solution method.
Note: the significance of the above variables is explained below:
The solution of an optimization problem can take awhile before convergence. This problem will take about 15 minutes and run through 19 iterations.
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 386100mm2.
Now you may wish to specify titles for the X and Y axes
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.