【Radioss技巧】又上線啦!本期我們來講講Radioss模型優化RADOPT及實例。

自從HyperWorks 13.0版本更新後,就有了RADOPT的功能,它調用了OptiStruct中的優化功能來對Radioss模型進行優化。
RADOPT優化介紹
在Radioss中的RADOPT功能給用戶提供了比較簡單的方法來設置優化問題。
它通過定義優化檔<name>.radopt ,然後OptiStruct 產生對應的.fem尾碼的Bulk格式的優化檔。
通常Radioss的模型一般涉及到許多非線性的問題,那麼OptiStruct使用等效靜載法ESLM(Equivalent Static Load Method)來對Radioss模型進行相應的轉換。
ESLM是由漢陽大學Park博士提出的,它是一種適用於動態荷載作用下的優化設計的技術。等效靜載荷是指在給定的時間步長下產生與動力/非線性分析相同的響應場的載荷。

如上圖所示,計算出與該時間歷程中的每個時間步長相對應的等效靜態負載,從而在靜態環境中複製該系統的動態/非線性行為。分析計算的等效靜荷載(如上面所解釋的)被認為是單獨的荷載情況,並且這些多個荷載情況用於線性回應優化迴圈中。然後,將優化迴圈的更新設計傳遞給分析以用於驗證和計算總體收斂。

等效靜載法ESLM在OptiStruct中是回應瞬態優化的一種有效方法,它是動態和非線性的解決方案。更多的關於等效靜載法ESLM的內容參見OptiStruct的使用者手冊。
RADOPT的優化流程
首先進行RADOPT除了常規的Radioss模型的starter輸入檔和engine輸入檔,還需要一個用於定義優化問題的名為<name>.radopt文件。

在RADOPT中優化的步驟是:
1
首先將名為 <name>.radopt的優化檔傳遞給OptiStruct。然後根據名字<name> OptiStruct可以自動識別在同一目錄下的相應的Radioss的模型輸入檔(<name>_0000.rad 和 <name>_0001.rad)。
2
OptiStruct將Radioss模型轉換成相應的.fem尾碼的OptiStruct的優化檔,並且運行優化計算。
3
然後OptiStruct將優化設計變數轉換到相應的Radioss模型檔中,形成新的Radioss模型:
新的starter 檔 <name>_rad_s#_i###_0000.rad
新的engine 檔 <name>_rad_s#_i###_0001.rad
然後讓Radioss計算新的Radioss模型(這就是外部迴圈)。與此相對的運行OptiStruct稱為內部迴圈(Inner loop)。在第一個外部迴圈中Radioss將首先計算原有Radioss模型,這樣可以作為結果比對的基礎。

4
在運行完 Radioss 的外部迴圈後,OptiStruct 讀取 Radioss 結果值。
5
如果Radioss結果值比上一次結果值要差或不滿足優化設計的約束等,也就是優化不收斂,那麼OptiStruct 的優化過程繼續,產生新的設計變數後迴圈步驟3、4、5直到優化設計收斂。
6
最後RADOPT優化設計結束並輸出優化後的相應的 Radioss模型檔。
RADOPT優化檔的定義
在一個優化設計中有:
-
優化目標
-
優化約束
-
優化設計變數
每一個優化設計都會有一個優化的目標,它可以是結構減重(品質最小化) ,或是性能提高(應變最小化,或內能最大化),或是體積最小化等等。在RADOPT中使用卡片/DESOBJ來描述。type=0或1來選擇最大化還是最小化。

在卡片中用優化響應(/DRESP1)來定義目標描述的是什麼。是品質,還是體積等等。然後用type=0或1來選擇最大化還是最小化回應。

▇ 優化的約束
優化的約束定義了優化回應的上下限。比如對某一構件我們定義了減重(品質最小化)的目標,但是構件減重後的其他性能比如受力時最大變形必須仍然滿足一定的條件(比如結構某點的位移不超過某個數值),那麼這個條件就是我們需要的優化的約束,用卡片/DCONSTR來定義。
▇ 優化的變數
優化的變數通常和實際模型有關,比如它可以是模型中單元屬性,比如殼單元的厚度等。它可以用/DVAPREL1卡片定義,它還可以是在:
-
尺寸優化(size optimization)中的/DESVAR中定義,
-
拓撲優化(topology optimization)的/DTPL卡片中定義,
-
形貌優化(topography optimization)的/DTPG卡片中,
-
自由尺寸優化( free-size optimization)的/DSIZE卡片中,
-
自由形狀優化(Free-shape optimization)的/DSHAPE卡片中
(關於如何定義上面這些不同類型的優化可以參見OptiStruct 用戶手冊)
實際上上面的這些Radioss優化卡片非常類似OptiStruct相應的卡片,比如/DTPL類似OptiStruct中的DTPL卡片。
另外如果你已經是OptiStruct的用戶,你甚至可以使用/BULK, /BULKFMT, /BULKPROP, /BULKMAT以及/BULK/IO卡片將OptiStruct中的bulk格式的優化語句直接用在RADOPT的優化檔<name>.radopt中。
運行RADOPT優化
有兩種方法運行RADOPT優化,一種是使用求解器視窗(Solver GUI)運行RADOPT。如下圖所示只要輸入檔選擇<name>.radopt的優化檔,然後選擇 “-radopt”點擊“運行”就可以了。

還有一種方法是使用命令列運行RADOPT優化。那麼首先需要確認設置好了環境變數。比如:
▇ Linux (bash):
export RADIOSS_STARTER=$ALTAIR_HOME/hwsolvers/radios/bin/linux64/<radioss_starter executable>
export RADIOSS_ENGINE=$ALTAIR_HOME/hwsolvers/radios/bin/linux64/<radioss_engine executable>
▇ Windows:
set RADIOSS_STARTER=%ALTAIR_HOME%\hwsolvers\radioss\bin\win64\<radioss_starter executable>
set RADIOSS_ENGINE=%ALTAIR_HOME%\hwsolvers\radioss\bin\win64\<radioss_engine executable>
比如下圖所示在windows中設置RADIOSS_STARTER 環境變數:

然後運行RADOPT優化的命令為:
直接使用命令
▇ Linux (bash):
[optistruct@host~]$ $ALTAIR_HOME/hwsolvers/optistruct/bin/linux64/<optistruct_executable> <name>.radopt –radopt
▇ Windows:
[optistruct@host~]$ $ALTAIR_HOME/hwsolvers/optistruct/bin/win64/<optistruct_executable> <name>.radopt -radopt
使用腳本
▇ Windows中使用OptiStruct腳本
[optistruct@host~]$ $ALTAIR_HOME/hwsolvers/scripts/optistruct.bat <name>.radopt –radopt
▇ Windows中使用Radioss腳本
[optistruct@host~]$ $ALTAIR_HOME/hwsolvers/scripts/radioss.bat <name>.radopt -radopt
Using direct calls to executable (Windows machines)
這兩種方法各有所長,前一個因為使用求解器介面所以比較容易操作,後一種使用命令的方法可以很方便的使用在自己編寫的其他腳本中。這裡再次提醒需要將Radioss模型檔和<name>.radopt的優化檔放在同一工作目錄下。
實例分享: Radioss實體單元拓撲優化 (Topology Optimization) |
在Radioss中使用/DTPL可以設置拓撲優化。與典型的優化問題一樣,在Radioss拓撲優化也有三個要素:
-
目標(在本例中最小化結構的體積)
-
約束(本例中最大位移小於5mm)
-
設計變數(鉤實例拓撲優化設計)
在Radioss中設置優化需要增加一個單獨的尾碼為radopt的檔,並且檔案名必須與starter 和engine檔案名相同。在這個尾碼為radopt的檔中可以定義優化的目標,優化的約束等等。
更多關於Radioss優化參見工具書中的 Design Optimization。

概要
▇ 實例目標
這個實例的目標是介紹如何在實體單元中設置拓撲優化。
▇ 實例介紹
在鉤狀結構的頂部設置rigid body,並施加向下的集中力。選擇下圖中紅色部分為優化設計的區域。
Units: mm, s, ton, N, and MPa
▇ 優化設置
- 優化目標:最小化紅色優化區域的體積积
- 優化約束:Node group 120的最大位移小於5.0 [mm]

問題描述
▇ 拓撲優化:
- 使用優化品質控制 MEMBSIZ=1
- 定義拔模方向 DRAW=1
優化設計詳細介紹

Radioss 優化設置
▇ 優化目標
/DESOBJ 卡片用於定義優化的目標。在這個實例中優化的目標是最小化(type=0 min)優化設計回應#10 (即體積). 在/DRESP1/10中定義的RTYPE=3 即為體積(這個可以參見工具書)。PTYPE=3 以及 grpart=4即定義group part ID 為 4 是優化區域。

優化目標設置
(點擊圖片可查看高清大圖)
▇ 優化約束
在這個實例中定義鉤狀結構在集中力的作用下最終位移少於5.0mm以保障結構品質。所有需要使用/DCONSTR卡片和/DRESPS1卡片來定義這個優化約束。
在/DRESPS1卡片中定義優化回應是node group ID=120的總位移。然後將這個回應#11使用到約束/DCONSTR中,並且定義最大值cmax為5.0,即node group ID=120的總位移不能超過5.0mm。

優化約束設置
▇ 拓撲優化
/DTPL卡片支援下面的拓撲優化設計:
-
TMIN: 最小化厚度
-
STRESS: 應力約束
-
MEMBSIZ: 構件尺寸約束
-
MESH: 網格類型
-
DRAW:拔模方向約束
-
EXTR: 擠壓方向約束
-
PATRN: 多模鑄造約束
-
PATREP: 多模鑄造重複約束
更多的關於拓撲優化的設計可以參見工具書/DTPL卡片。

在這個拓撲優化實例中使用了:
▇ 構件尺寸約束(設置 MEMBSIZ=1)
拓撲優化中,構件尺寸約束其實更是一種品質控制的方法。在這個例子中我們設置最小直徑(MINDIM)是1。
其實我們建議MINDIM為單元平均網格的3倍到12倍。在這個例子中優化區域的固體單元的網格約0.7mm。所以MINDIM將在優化中自動調整到單元平均尺寸的3倍。
▇ 拔模方向定義 (設置 DRAW=1)
在拓撲優化中允許定義拔模方向以便允許模具沿給定方向滑動。
DTYP用於定義模的類型,在這個實例中使用DTYP=1 即single die的類型,這個類型用於3D優化設計。
拔模的方向可以有兩種不同的方法來定義。一個使用節點ID(從DAID到DFID的方向)。還有一種方法是使用座標(從(XDA,YDA,ZDA)到(XDF,YDF,ZDF)的方向)。
不同的拔模方向會得出不同的拓撲優化結果。比如下圖中顯示的左邊優化結構是拔模方向為垂直厚度方向,和右邊優化結果是拔模方向沿著z方向。

不同拔模方向的拓撲優化結果
模擬結果及結論

運行Radioss優化的模型後在結果檔中需要檢查以下幾點:
1
檢查是否最後一個設計為最優設計,並且是否是可行的(feasible)設計。在*.out 檔 (在這個實例中是hook_opt.out) 中的每一個內部反覆運算中最後是否有下面的資訊:
“FEASIBLE DESIGN (ALL CONSTRAINTS SATISFIED).“ –這個表面得到的設計是好的。
“INFEASIBLE DESIGN (AT LEAST ONE CONSTRAINT VIOLATED).” -這個表明得到的設計還需進一步優化。
以上資訊也可以在hwsolver.mesg檔中得到。
2
在 *.out 文件 (hook_opt.out)中, 檢查每次優化的定義以及結果. 比如通過搜索“Objective Function: Minimize VOLUM”, “Run Type: Topology Optimization” 等等關鍵字。
3
在運行Radioss優化時,會自動有一個相應的OptiStruct模型(*.fem)產生,這個模型中是hook_opt.fem。如果用戶熟悉OptiStruct的,可以同時檢查相應的優化設置在自動產生出的*.fem檔中是否與*.radopt中定義的相一致。
在這個實例中,在比如*.eslout (hook_opt.eslout)中顯示其中的一次優化反覆運算的結果:
還可以在每個ANIM (*.h3d), T01 檔中使用HV和HG直觀的觀察每個優化反覆運算的結果。
最終在這個實例中優化區域的體積變化:
- 優化前,體積是 324.715
- 拓撲優化後,體積是 230.202

構件體積優化的反覆運算過程
下圖顯示了在優化過程中總位移一直得到了很好的控制(小於5mm):

構件優化反覆運算過程中的最大位移約束的控制