OpenRadioss對於CAE從業人員,真的是一個滿震撼的消息,所以我們在最後幾天決定臨時抽換想講的內容,請大家諒解(註1
)。
我理解大家對Altair此舉褒貶不一,都在猜測下一步棋。或許讓我們撇開各種揣測,靜心來看看這件事。
在做任何評判之前,我建議大家可以花點時間看看他們的公開信。
從我自己的角度來看,能夠有一個開源的顯式求解器可以使用,不是相當振奮人心嗎?
安裝的方法(註2
),我們採取下面作法:
OpenRadioss_linux64.zip
下載後並解壓縮,並將OpenRadioss
資料夾移至/home/user/
下。~/.bashrc
檔案。export OPENRADIOSS_PATH='/home/user/OpenRadioss'
export RAD_CFG_PATH=$OPENRADIOSS_PATH/hm_cfg_files
export OMP_STACKSIZE=400m
export LD_LIBRARY_PATH=$OPENRADIOSS_PATH/extlib/hm_reader/linux64/:$OPENRADIOSS_PATH/extlib/h3d/lib/linux64/:$LD_LIBRARY_PATH
run.sh
檔,並給予可執行的權限chmod +x run.sh
。#!/usr/bin/bash
#run.sh
~/OpenRadioss/exec/starter_linux64_gf -i BIRD_WINDSHIELD_v1_0000.rad
~/OpenRadioss/exec/engine_linux64_gf -i BIRD_WINDSHIELD_v1_0001.rad -nt 12
sh run.sh
。以META開啟動畫:
根據官方宣稱,OpenRadioss的一大特色,就是能夠直接求解*k檔。
哇勒,聽起來也太不可思議了吧,讓我們親手來驗證看看!
我們使用先前box-drop project所產生的k檔來進行測試。
ton/mm/sec
的話,需要於*k檔
中加上*CONTROL_UNITS
。所以我們將box_drop.k
改命名為main.k
,建立一個box_drop_openrs.k
來加上*CONTROL_UNITS
並include main.k
。run.sh
檔,並給予可執行的權限chmod +x run.sh
。#!/usr/bin/bash
~/OpenRadioss/exec/starter_linux64_gf -i box_drop_openrs.k
~/OpenRadioss/exec/engine_linux64_gf -i box_drop_openrs_0001.rad -nt 12
sh run.sh
。這邊要留意,.k檔
需要由starter
來吃,而OpenRadioss會自動幫我們產生engine
所需要的box_drop_openrs_0001.rad
。
以META開啟動畫:
詳細的數值就不研究了,不過看起來好像有模有樣呀!
既然OpenRadioss可以求解*.K檔
,那麼我們有一個大膽的想法,將OpenRadios作為LS-DYNA檔案的checker
。
這樣一來,在將job送進大型cluster前,我們可以藉由OpenRadios幫忙找出格式或低級的錯誤。
我們透過GitHub Actions來幫助我們完成CI/CD
(註3
)。
.github/workflows/github-actions.yaml
。yaml
內的行為,將於push
時執行。ubuntu-latest
為os
。checkout
下載repo。download OpenRadioss
下載OpenRadioss_linux64.zip
。unzip OpenRadioss
解壓縮OpenRadioss_linux64.zip
。mv OpenRadioss
將OpenRadioss資料夾
移至/tmp
。starter
執行OpenRadiossstartrt
。engine
執行OpenRadiossengine
。zip
將相關結果檔壓縮為box_drop.zip
。linode object storage
及Interact with object storage
,透過Linode討論區及前人寫好的s3 wrapper,將box_drop.zip
上傳至Linode object storage。#github-actions.yaml
name: OpenRadioss
on: [push]
jobs:
exec_OpenRadioss:
runs-on: ubuntu-latest
env:
OPENRADIOSS_PATH: /tmp/OpenRadioss
RAD_CFG_PATH: /tmp/OpenRadioss/hm_cfg_files
OMP_STACKSIZE: 400m
LD_LIBRARY_PATH: /tmp/OpenRadioss/extlib/hm_reader/linux64/:/tmp/OpenRadioss/extlib/h3d/lib/linux64/:$LD_LIBRARY_PATH
UNZIP_LOG: OpenRadioss_linux64_unzip.log
steps:
- name: checkout
uses: actions/checkout@v3
- name: download OpenRadioss
run: wget https://github.com/OpenRadioss/OpenRadioss/releases/download/latest-20220924/OpenRadioss_linux64.zip
- name: unzip OpenRadioss
run: unzip OpenRadioss_linux64.zip > $UNZIP_LOG
- name: mv OpenRadioss
run: mv OpenRadioss /tmp
- name: starter
run: $OPENRADIOSS_PATH/exec/starter_linux64_gf -i $GITHUB_WORKSPACE/box_drop_openrs.k
- name: engine
run: $OPENRADIOSS_PATH/exec/engine_linux64_gf -i $GITHUB_WORKSPACE/box_drop_openrs_0001.rad -nt 2
- name: zip
run: zip -j box_drop.zip $GITHUB_WORKSPACE/box_drop* $UNZIP_LOG
- name: linode object storage
uses: s3-actions/s3cmd@v1.2.0
with:
provider: linode
region: 'ap-south-1'
access_key: ${{ secrets.S3_ACCESS_KEY }}
secret_key: ${{ secrets.S3_SECRET_KEY }}
- name: Interact with object storage
run: |
s3cmd sync box_drop.zip s3://open-radioss-demo/box_drop.zip
註1:本來想好好聊聊lasso-python這些年帶給我們的啟發啊!
註2:
參考資料為:
註3:這邊展示的是checker
+求解的完整範例。