OpenRadioss を使ってみる

2022年11月19日

はじめに

OpenRadioss とは、Altair 社の構造解析ソフト Radioss のオープンソース版である。

バージョン

  • OpenRadioss 20221114
  • Red Hat Enterprise Linux 8.3

インストール

ここ からバイナリパッケージを入手する。

展開。

$ unzip OpenRadioss_linux64.zip

適当な場所に設置する。ダウンロードしたビルドの日付を名前にしておいたほうがよさそう。

/opt/OpenRadioss/20221114

設定

~/.bashrc

export OPENRADIOSS_PATH=/opt/OpenRadioss/20221114
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
export PATH=$OPENRADIOSS_PATH/exec:$PATH

並列計算用に Open MPI をインストールする。

$ sudo yum install openmpi

~/.bashrc

export OPENMPI_PATH=/usr/lib64/openmpi
export LD_LIBRARY_PATH=$OPENMPI_PATH/lib:$LD_LIBRARY_PATH
export PATH=$OPENMPI_PATH/bin:$PATH

計算の実行

実行

Spring-back の例を実行してみる。

$ mkdir SpringBack
$ cd SpringBack

$ unzip ~/SpringBack.zip
$ cp -r Explicit_spring-back Explicit_spring-back_serial
$ cd Explicit_spring-back_serial

$ starter_linux64_gf -i *_0000.rad
$ engine_linux64_gf -i *_0001.rad
$ engine_linux64_gf -i *_0002.rad
$ engine_linux64_gf -i *_0003.rad

実行が面倒なので、スクリプトにしておくとよいかもしれない。

run_serial

#!/bin/sh
starter_linux64_gf -i *_0000.rad
engine_linux64_gf -i *_0001.rad
engine_linux64_gf -i *_0002.rad
engine_linux64_gf -i *_0003.rad

スレッド並列 run_thread

#!/bin/sh
N=2
export OMP_NUM_THREADS=$N
starter_linux64_gf -i *_0000.rad
engine_linux64_gf -i *_0001.rad
engine_linux64_gf -i *_0002.rad
engine_linux64_gf -i *_0003.rad

あるいは

#!/bin/sh
N=2
starter_linux64_gf -i *_0000.rad -nt $N
engine_linux64_gf -i *_0001.rad -nt $N
engine_linux64_gf -i *_0002.rad -nt $N
engine_linux64_gf -i *_0003.rad -nt $N

MPI 並列 run_mpi

#!/bin/sh
N=2
starter_linux64_gf -i *_0000.rad -np $N
mpirun -n $N engine_linux64_gf_ompi -i *_0001.rad
mpirun -n $N engine_linux64_gf_ompi -i *_0002.rad
mpirun -n $N engine_linux64_gf_ompi -i *_0003.rad

MPI + スレッド並列 run_mpi_thread

#!/bin/sh
N=2
M=2
export OMP_NUM_THREADS=$M
starter_linux64_gf -i *_0000.rad -np $N
mpirun -n $N engine_linux64_gf_ompi -i *_0001.rad
mpirun -n $N engine_linux64_gf_ompi -i *_0002.rad
mpirun -n $N engine_linux64_gf_ompi -i *_0003.rad

この例では、スレッド並列を使うとかえって時間がかかった。

ポスト

計算結果を VTK および CSV (時系列データ) に変換する。

post (ちょっといい加減だが...)

#!/bin/sh
for FILE in *A???; do
    echo $FILE
    anim_to_vtk_linux64_gf $FILE > $FILE.vtk
done

for FILE in *T??; do
    echo $FILE
    th_to_csv_linux64_gf $FILE > $FILE.csv
done

ParaView で確認する。

これは "*A???" の形式のアニメーションファイルが出力されている場合であり、.h3d で結果が出力されるケースもある。HyperView か HyperView Palyer で見れそう。

クリーン

計算結果を削除。

clean (これもちょっとテキトー)

#!/bin/sh
rm -f *.rst
rm -f *.out
rm -f *A???
rm -f *T??
rm -f *.tmp

参考