經典仿真案例教程 | 06 - 梁的設計優化全步驟

經典仿真案例教程 | 06 - 梁的設計優化全步驟


介紹

本教程的目的是介紹一種利用ANSYS解決設計優化問題的方法。這將涉及使用所有變量的參數創建幾何圖形,決定將哪些變量用作設計、狀態和目標變量,并為問題設置正確的公差,以便在最短的時間內獲得精確收斂的解。本教程還將介紹如何使用硬點在直線中間應用力/約束。

梁的作用力為1000N,如下所示。該優化問題的目的是在不超過容許應力的情況下使梁的重量最小化。為了使梁的重量最小化,有必要求出梁的橫截面尺寸。但梁的寬度和高度不能小于10mm。梁中任何地方的最大應力不得超過200 MPa。橫梁由彈性模量為200 GPa的鋼制成。

1.png


預處理:定義問題

     1、給例子一個標題

Utility Menu > File > Change Title ... 

/title, Design Optimization

     2、輸入變量的初始估計值

為了解決ANSYS中的優化問題,需要為所有設計變量定義參數。

{ 選擇:工具菜單>參數>標量參數Utility Menu > Parameters > Scalar Parameters

{ 在出現的窗口中(如下所示),在“選擇”部分鍵入W=20

  

2.png

{ 單擊“Accept”。“標量參數”窗口將保持打開狀態。

{ 現在在“Selection”部分輸入H=20

{ 單擊“Accep”

{ 在“標量參數Scalar Parameters”窗口中單擊“關閉”。

注:ANSYS中定義的變量不允許有負值。

     3、定義關鍵點

Preprocessor > Modeling > Create > Keypoints > In Active CS

K、 #,x,y

我們將為該梁定義兩個關鍵點,如下表所示:

3.png

     4、創建線條

Preprocessor > Modeling > Create > Lines > Lines > In Active Coord

L、 1,2

創建連接關鍵點1和2的線

     5、創建硬關鍵點

當需要在不存在關鍵點的位置應用約束或加載時,通常使用硬點。在這種情況下,我們要對梁施加3/4的力。因為這里沒有任何關鍵點,而且我們不能確定其中一個節點會在這里,所以我們需要指定一個硬點

{ 選擇“預處理器”>“建模”>“創建”>“關鍵點”>“在線硬點”>“按比率硬點”

Preprocessor > Modeling > Create > Keypoints > Hard PT on line > Hard PT by ratio。

這將允許我們通過定義點位置的比率在線路上創建一個硬點以線的大小

{ 提示時選擇行

{ 在出現的“按比率創建硬盤Create HardPT by Ratio”窗口中輸入0.75的比率。

現在,您已經在梁的下方創建了一個標記為“keypoint 3”3/4的關鍵點。

   6、定義單元類型

Preprocessor > Element Type > Add/Edit/Delete

對于這個問題,我們將使用BEAM3(梁2D彈性)單元。此單元有3個自由度(沿X和Y軸平移,繞Z軸旋轉)。

     7、定義實常數

Preprocessor > Real Constants... > Add

在“BEAM3的實常數Real Constants for BEAM3”窗口中,輸入以下幾何屬性:(注意

“**”代替“^”表示指數)

i、 橫截面積:W*H

ii、面積慣性矩IZZ:(W*H**3)/12

iii、沿Y軸厚度:H

注:使用自變量來定義因變量(如轉動慣量)是很重要的。在優化過程中,每次迭代的寬度和高度都會發生變化。因此,必須根據寬度和高度定義其他變量。

     8、定義單元材質屬性

預處理器>材質屬性>材質模型>結構>線性>彈性>各向同性

Preprocessor > Material Props > Material Models > Structural > Linear > Elastic > Isotropic

在出現的窗口中,輸入以下鋼的幾何特性:

i、 楊氏模量EX:200000

ii、泊松比PRXY:0.3

     9、定義網格大小

Preprocessor > Meshing > Size Cntrls > ManualSize > Lines > All Lines

對于本例,我們將指定單元邊緣長度為100 mm(沿直線10個單元劃分)。

10將框架網格化

預處理程序>網格>網格>線>單擊“全部拾取”

Preprocessor > Meshing > Mesh > Lines > click 'Pick All'

LMESH,All


解決方案階段:分配荷載和求解

     1、定義分析類型

解決方案>分析類型>新建分析>靜態

Solution > Analysis Type > New Analysis > Static

ANTYPE,0

     2、應用約束

解決方案>定義載荷>應用>結構>位移>關鍵點

Solution > Define Loads > Apply > Structural > Displacement > On Keypoints

鎖定關鍵點1(即UX、UY約束)并在Y方向約束關鍵點2。

     3、施加荷載

解決方案>定義載荷>應用>結構>力/力矩>在關鍵點上

Solution > Define Loads > Apply > Structural > Force/Moment > On Keypoints

在關鍵點3處應用-2000N的垂直(FY)點載荷

應用的載荷和約束現在應該如下圖所示。

  

4.png

     4、解決系統問題

      Solution > Solve > Current LS SOLVE


后處理:查看結果

提取信息作為參數:

為了進行優化,我們必須提取所需的信息。

在這個問題中,我們希望找出梁和體積中的最大應力,作為寬度和高度變量的結果。

     1、定義體積

{ 選擇General Postproc > Element Table > Define Table... > Add

{ 將出現以下窗口。如圖所示填充,以獲得梁的體積。

  

5.png

請注意,這是每個單元的體積。如果你要列出單元表,你會得到每個單元的體積。因此,必須將圖元值相加,才能獲得梁的總體積。請按照以下說明進行操作。

{ 選擇General Postproc > Element Table > Sum of Each Item.

{ 將出現一個小窗口,通知您將計算每個單元表的表格式和。單擊“確定”

您將獲得一個窗口,通知您EVolume現在是400000 mm2

     2、將數據(卷)存儲為參數

{ 選擇Utility Menu > Parameters > Get Scalar Data

{ 在出現的窗口中,選擇“Results Data”和“Elem table sums”

{ 將出現以下窗口。選擇顯示的項目以將體積存儲為參數。

  

6.png

現在,如果您查看參數((Utility Menu > Parameters > Scalar Parameters.),您將看到卷已添加。

     3 、定義梁中每個構件的i節點處的最大應力

{ 選擇General Postproc > Element Table > Define Table... > Add

{ 將出現以下窗口。如圖所示填充,以獲得

每個單元并將其存儲為“SMAX_I”。

  

7.png

注意nmisc,1是最大應力。有關詳細信息,請在命令行中鍵入Help beam3

現在我們需要對應力進行降序排序,找出最大應力

{ 選擇General Postproc>List Results>Sorted Listing>Sort Elems

{ 完成如下所示的窗口,按降序對“SMAX_I”中的數據進行排序

  

8.png

     4、將數據(最大應力)存儲為參數

{ 選擇 Utility Menu > Parameters > Get Scalar Data

{ 在出現的窗口中,選擇“Results Data”和“Other operations”

在出現的窗口中,按所示填充以獲得最大值。

  

9.png

     5、定義梁的每個構件j節點處的最大應力 

{ 選擇General Postproc > Element Table > Define Table... > Add

{ 如前所述填寫此表,但進行以下更改:

? 將數據保存為“SMAX_J”(代替“SMAX_I”)

? 單元表數據輸入NMISC,3(代替NMISC,1)。這將得到j節點處的最大應力。

{ 選擇General Postproc>List Results>Sorted Listing>Sort Elems以降序對應力進行排序。

{ 但是,在項目、組件選擇框中選擇“SMAX_J”

    6、將數據(最大應力)存儲為參數

{ 選擇Utility Menu > Parameters > Get Scalar Data

{ 在出現的窗口中,選擇“結果數據”和“其他操作”

{ 在出現的中,按照前面所示填充它,但是,將參數命名為“SMaxJ”。

     7、選擇SMAXJ和SMAXI中最大的一個

{ 在命令行中鍵入SMAX=SMAXI>SMAXJ

這將把2個值中的最大值設置為SMAX。在這種情況下,每種方法的最大值都是相同的。然而,情況并非總是如此。

     8、查看參數化數據

Utility Menu > Parameters > Scalar Parameters

注意最大應力為281.25,遠大于允許應力200MPa

設計優化

現在我們已經根據我們的初始寬度和高度尺寸在ANSYS中參數化地設置了問題,現在我們可以解決優化問題了。

     1、寫入命令文件

有必要將我們的問題大綱寫入ANSYS命令文件。這使得ANSYS可以基于我們將定義的變量的不同值迭代運行我們的問題的解決方案。

{ 選擇實用程序菜單>文件>寫入數據庫日志文件Utility Menu > File > Write DB Log File

{ 在出現的窗口中,鍵入命令文件的名稱,例如optimize.txt,單擊“OK”。

如果你在一個類似于記事本的文件編輯器中打開它:

10.png
11.png

在開始優化之前,需要對此文件進行一些小的更改。如果您使用命令行代碼創建了幾何圖形等,則大部分更改都已經完成。但是,如果你在這里用圖形設備創建圖形文件。因此,需要輸入所選的實際項目。代碼“P51X”表示圖形選擇。要修改文件,只需使用記事本打開文件并進行必要的更改。完成所有必需的更改后,保存并關閉文件。以下是需要對此文件(使用GUI方法創建的)進行的更改的列表

{ Line 32 - DK,P51X, ,0, ,0,UX,UY, , , , ,

將其更改為: DK,1, ,0, ,0,UX,UY,

這將指定關鍵點1處的約束

{ Line 37 - DK,P51X, ,0, ,0,UY, , , , , ,

改為:DK,2, ,0, ,0,UY,

這將指定關鍵點2處的約束

{ Line 42 - FK,P51X,FY,-2000

改為:FK,3,FY,-2000

這將指定施加在梁上的力

還有幾行可以從這個文件中刪除。如果熟悉命令行編碼,應該刪除確定不需要的行。

     2、將命令文件分配給優化 

{ 選擇主菜單>設計選項>分析文件>分配Main Menu > Design Opt > Analysis File > Assign

{ 在出現的文件列表中,選擇編寫命令文件時創建的文件名。單擊“OK”。

     3、定義變量和公差

ANSYS需要知道哪些變量對優化至關重要。為了定義變量,我們需要知道哪些變量對要最小化的變量有影響。在這個例子中,我們的目標是最小化與梁的重量直接相關的梁的體積。

ANSYS將設計優化的三種變量分類:

設計變量(DVs)

直接影響設計目標的獨立變量。在本例中,梁的寬度和高度為DVs。改變任何一個變量都會直接影響問題的解決。

狀態變量(SVs)

因變量的改變而改變的因變量。這些變量是約束設計所必需的。在本例中,SV是梁中的最大應力。如果沒有這個SV,我們的優化將繼續,直到寬度和高度都為零。這將使權重最小化到零,這不是一個有用的結果。

目標變量(OV)

目標變量是優化中需要最小化的一個變量。在我們的問題中,我們將最小化光束的體積。

注:如前所述,ANSYS中定義的變量不允許有負值。

既然我們已經決定了我們的設計變量,我們需要為每個變量定義范圍和公差。對于寬度和高度,我們將分別選擇10到50 mm的范圍。因為寬度或高度的微小變化會對梁的體積產生深遠影響,因此我們將選擇0.01mm的公差。公差是必要的,因為它們告訴ANSYS在問題收斂之前變量可以經歷的最大變化量。

對于應力變量,我們將選擇195至200MPa的范圍,公差為0.01MPa。

因為體積變量是目標變量,我們不需要定義一個允許的范圍。我們將公差設置為200m3。之所以選擇該公差,是因為它明顯小于400000m3(20mm×20mm×1000mm)的初始體積。

                   a、 梁的高度和寬度(定義設計變量)

? 選擇Main Menu > Design Opt > Design Variables... > Add

? 完成如下所示的窗口,以指定梁的高度。

  

12.png

? 重復上述步驟以指定梁寬度的可變限制(與高度規范相同)

                   b、 定義狀態變量

·選擇Main Menu > Design Opt > State Variables... > Add

·在窗口中填寫以下部分

? 在“參數名稱”部分選擇“SMAX”。

? 輸入:下限(MIN=195)

? 上限(MAX=200)

? 可行性公差Feasibility Tolerance(TOLER=0.001)

                   c、 定義目標變量

? 選擇Main Menu > Design Opt > Objective

? 在“參數名稱Parameter Name”部分選擇“卷VOLUME”。

? 在“收斂公差Convergence Tolerance”下,輸入200。

     4、定義優化方法

ANSYS可以使用幾種不同的方法來解決優化問題。為了確保您不會在局部最小值處找到解決方案,建議使用不同的解決方法。如果你在使一個特定的問題收斂時遇到困難,最好嘗試另一種解決方法,看看可能出了什么問題。

對于這個問題,我們將使用一階解的方法。

{ 選擇Main Menu > Design Opt > Method / Tool

{ 在“指定優化方法Specify Optimization Method”窗口中選擇“第一順序”

{ 單擊“OK”

{ 輸入:最大迭代次數(NITR=30),步長大小百分比=100,正向差異百分比DELTA=0.2{單擊“OK”。

注:以上變量的意義解釋如下:

NITR:最大迭代次數。默認為10。

SIZE:%應用于每個行搜索步驟的大小。默認為100%

DELTA:應用于用于計算梯度的設計變量范圍的正向差(%)。默認為2%

     5、運行優化

{ 選擇Main Menu > Design Opt > Run

{ 在“開始執行運行Begin Execution of Run”窗口中,確認分析文件、方法/類型和最大迭代次數是否正確。{單擊“OK”。

優化問題的求解在收斂之前可能需要一段時間。這個問題需要大約15分鐘的時間,并且要經過19次迭代。

查看結果

    1、查看最終參數

Utility Menu > Parameters > Scalar Parameters

看到寬度=13.24mm,高度=29.16mm,應力等于199.83MPa,體積為386100mm2

     2、在求解過程中查看每個變量的圖形結果

{ 選擇Main Menu > Design Opt > Design Sets > Graphs / Tables

{ 完成如圖所示的窗口,以獲得梁的高度和寬度隨每次迭代而變化的圖形

A、 對于“X-variable parameter”,請選擇“Set number”。

B、 對于“Y變量參數”,選擇“H”和“W”。

C、 確保選擇了“Graph”(與“List”相對)

  

13.png

現在為X和Y軸指定標題

{ 選擇Utility Menu > Plot Ctrls > Style > Graphs > Modify Axes

{ 在窗口中,為“X軸標簽”部分輸入“迭代次數”。{為“Y軸標簽”輸入“寬度和高度(mm)”。

{ 單擊“OK”

{ 選擇Utility Menu > PlotCtrls

在圖形窗口中,您將看到整個優化過程中的寬度和高度圖形。可以通過選擇Utility Menu > PlotCtrls > Hard Copy

  

14.png

您可以按照上述步驟繪制設計中其他變量的圖形。不要對y軸標簽和變量使用寬度和高度,而是使用任何需要的變量來繪制。

或者,您可以通過選擇Main Menu > Design Opt > Design Sets > List,列出數據。此外,所有的結果數據(即應力、位移、彎矩)可從一般的后處理菜單中獲得。


解決方案的命令文件模式

利用ANSYS的圖形用戶界面(GUI)對上述實例進行了求解。此問題也已使用您可能要瀏覽的解決。打開文件并將其保存到計算機。

***重要點***

運行此代碼之前,請選擇 Main Menu > Design Opt > Opt Database > Clear & Reset以清除優化數據庫。然后選擇Utility Menu > File > Clear & Start New。現在轉到File > Read input from,然后選擇該文件。


-END-

斯姆勒數值仿真技術研究院

雅典娜仿真技術共享云平臺

登錄后免費查看全文
立即登錄
App下載
技術鄰APP
工程師必備
  • 項目客服
  • 培訓客服
  • 平臺客服

TOP