複数入力ファイルフォーマット

モデルの設定

Radiossマルチドメインテクニックでは、最初に複数入力フォーマット設定が導入されました。それぞれのサブドメインは分割された完全なRadiossモデルとして構成され、固有の完成された入力ファイルを用います。Radioss Engine計算間の連携は、各Radiossモデルで定義されているドメイン間の結合に基づくRAD2RADプログラムによって確実になります。


図 1.

ドメイン間の結合

2つのドメイン間の結合(またはリンク)は、必ず、相互に結合される対応する2つのメッシュに関連する2つの節点グループ、およびこの結合の種類によって定義されます。以下はRAD2RADで利用可能な結合タイプのリストです。

タイプ1: シェルとシェル(Schur Dual法)

これはLagrange乗数によるシェル要素メッシュのリンクに用いることができます。メッシュは適合か非適合で、インターフェースは開いているか閉じていることができます。


図 2.
注: 非適合メッシュと開いたインターフェースでは、2つの面の開始点と終了点は必ず一致している必要があります。同様にして、閉じたインターフェースの場合でも、2つの面の間で少なくとも少なくとも1つの共有点がある必要があります。

タイプ2: シェルとビーム(Schur Dual法)

このタイプのリンクはタイプ1と非常によく似ていますが、ビーム / シェル結合に適合します。
注: 非適合メッシュの場合、シェルパートに対する制限はタイプ1と同じです。


図 3.

タイプ4:節点と節点(Schur Primal法)

適合メッシュの場合、ドメイン間の結合は、単純な節点と節点の関係に縮退します。


図 4.

この方法は適合メッシュに対するタイプ1と厳密に等価ですが、マトリックスの重ね合わせもその逆行列が実行されないため大幅に少ないCPU時間消費で済みます。また、この場合は、節点データのみが必要となるため、どの種類の節点を結合するためにも使用できます(どの種類の要素にも結合される)。

注: シェルとソリッドの結合の場合、並進自由度成分のみに連続条件が作用します。

ドメイン間の接触

TYPE 5: 結合

人工表皮法を使用してドメイン間の接触を計算することもできます。RAD2RADでは接触は計算されませんが、2ドメインの1つの内部がメインドメインと呼ばれます。したがって、接触が関係するセカンダリドメインの一部はメインドメイン内に同じ密度とヤング率を持つボイド材料として複製される必要があります。接触はメインドメイン内部でRadiossによって通常に取り扱われ、節点と節点の固有の結合タイプ5 (結合タイプ4と同様)は人工表皮の節点とセカンダリドメインの対応する節点との結合に使用される必要があります。


図 5.
マルチドメインのメイン入力ファイルで、結合タイプ5の定義は、メインドメインでの節点(人工表皮の節点)が最初に宣言されなければならない点を除いて、他の結合と同様です:
/LINK/TYPE5
Main_Domain Link_Id1
Second_Domain Link_Id2
マルチドメインに適合するRadioss接触インターフェースは:
  • /INTER/TYPE5
  • /INTER/TYPE7
  • /INTER/TYPE10
  • /INTER/TYPE11
  • /INTER/TYPE18
  • /INTER/TYPE24 ((surf_ID1 > 0, surf_ID2 > 0)または(surf_ID1 > 0, surf_ID2 = 0)の場合)。(grnd_IDs > 0, surf_ID1= 0, surf_ID2 > 0)ではない場合。
注: RAD2RAD結合タイプ 5はLagrange乗数法定式化を用いた接触インターフェースと適合しません。

質量と節点剛性はRAD2RADの結合タイプ5によりセカンダリドメインから人工表皮へと伝達されます。したがって、メインドメインでの質量と節点時間ステップの修正が計算の最初で見られます。

マルチドメインのメイン入力ファイルで、結合タイプ5の定義は、メインドメインでの節点(人工表皮の節点)が最初に宣言されなければならない点を除いて、他の結合と同様です:
/LINK/TYPE5
Main_Domain Link_Id1
Second_Domain Link_Id2
運動学的拘束がセカンダリドメインのメインドメインに複製される部分に作用した場合、それは同様に複製されます。
  • 剛体の複製の場合には、そのメイン節点はRAD2RAD結合タイプ5に指定される必要があります。
  • インターフェースタイプ2の複製の場合、追加のフラグ/TIEDがRAD2RAD入力ファイル内で指定される必要があります。
注: 剛体またはインターフェースタイプ2では、セカンダリ節点はRAD2RAD結合から削除することができます。それらの挙動はそのメイン節点またはメイン要素で定義されます。これが、マルチドメインがそれらに何も影響を与えない理由です。

RAD2RAD はインターフェース/INTER/LAGMUL/TYPE2/RWALL/LAGMULのようなLagrange乗数法の運動条件とは適合しません。

データ入力

Starter入力ファイル

ドメイン間の結合(またはリンク)の定義:
/EXTERN/LINK/Link_ID
title
 gr_ID
ここで、
gr_ID
他のドメインとの境界の節点を定義する節点グループ識別子
Link_ID
リンク識別子

Radiossモデルの外部リンクの数には制限がありません。唯一の制限は、異なるリンクに共通の節点を含めないことです。それぞれのリンクは、現在のモデルと外界との間のインターフェースを定義します。

Engine入力ファイル

ドメインごとに1つのEngine入力ファイルが必要となります。連成をアクティブにするには、すべてのEngineファイルに次の命令が含まれている必要があります:
/RAD2RAD/ON
RAD2RAD入力ファイルはRAD2RADプログラムに必要ないくつかの付加情報を定義したテキストファイルです。RAD2RAD入力ファイルでは、結合するドメインの名前、およびドメイン間の結合を指定する必要があります。各結合について、結合されるリンクの識別子、および使用される結合タイプを指定する必要があります。いくつかのマルチドメイン特有のパラメータも入力する必要があります。
注: RAD2RAD入力ファイルに関するより詳しい情報は、マルチドメインのドキュメントをご参照ください。

CPUの割り当て

Radiossドメインは交互に取り扱われるため、同時に実行されるRadiossプロセスは1つだけになります。全てのCPUリソースはRAD2RADによって自動的に実行中Engineプロセスに割り当てられ、他のプロセスはCPUを消費しない待機モードになります。これは、利用可能な同じCPUリソースすべてをその計算中に各ドメインに割り当てる必要があることを意味します。

マルチドメイン解析の起動

マルチドメイン計算の起動には、マニュアルとスクリプトによる2つの方法があります。

SMPスクリプトの例
SPMDスクリプトの例
  1. マルチドメイン計算を起動するために、コマンドラインを用いて、個別のドメイン(_0000.rad_0001.rad)とマルチドメインメイン入力ファイル(input.dat)の入力ファイルを含む作業ディレクトリを確認します。
  2. コマンドを使ってそれぞれのドメインのStarterを端末で起動します:
    オプション
    内容
    Linux
    <install_dir>/hwsolvers/bin/linux64/s_version -i "filename"
    Windows
    <install_dir>\hwsolvers\bin\win64\s_version -i "filename"
  3. RAD2RADを端末でコマンドを使って起動します:
    オプション
    内容
    Linux
    <install_dir>/hwsolvers/bin/linux64/r2r_version input.dat
    Windows
    <install_dir>\hwsolvers\bin\win64\r2r_version input.dat
    RAD2RADはそれぞれのドメインからRadiossに接続されるのを待ちます。
  4. それぞれのドメインのEngineを別の端末で次のように起動します:
    オプション
    内容
    Linux
    <install_dir>/hwsolvers/bin/linux64/e_version -i "filename"
    Windows
    <install_dir>\hwsolvers\bin\win64\e_version -i "filename"
    全てのRadiossプロセスはこれで自動的にRAD2RADに接続されます。

より簡単なマルチドメイン計算の起動はスクリプトを用いることです。

  1. それぞれのドメインのStarterを上で記述したのと同じ方法で起動します。
  2. 作業ディレクトリでスクリプトにrun_SMPまたはrun_SPMDを加えます。
  3. スクリプトでは、入力ファイルの名前を変え、実行モジュールの場所(MPI、RAD2RADとRadioss Engine)とプロセッサの数を必要であれば指定します。
  4. 端末でスクリプトを実行します。
    SMPの例
    Linux : run_linux_SMP
    ./s_<versin> < PART1_0000.rad
    ./s_<version> < PART2_0000.rad
    ./e_<version> < PART1_0001.rad > out_1 &
    ./e_<version> < PART2_0001.rad > out_2 &
    ./r2r_<version> input.dat
    Windows : run_win_SMP.bat
    E:\Rad2rad\s_<version>.exe -i PART1_0000.rad
    E:\Rad2rad\s_<version>.exe -i PART2_0000.rad
    set KMP_STACKSIZE=64M
    start /B E:\Rad2rad\e_<version>.exe -i PART1_0001.rad > out1
    start /B E:\Rad2rad\e_<version>.exe -i PART2_0001.rad > out2
    start /B E:\Rad2rad\r2r_<version>.exe input.dat
    Windows (cygwin) : run_win_SMP
    ./s_<version>.exe < PART1_0000.rad;
    ./s_<version>.exe < PART2_0000.rad;
    ./e_<version>.exe < PART1_0001.rad > out1&
    ./e_<version>.exe < PART2_0001.rad > out2&
    ./r2r_<version>.exe data4.dat;
    SPMDの例
    Linux : run_linux_SPMD
    ./s_<version> < PART1_0000.rad
    ./s_<version> < PART2_0000.rad
    /opt/hpmpi/bin/mpirun -np 4 ./e_<version> < PART1_0001.rad > out_1 &
    /opt/hpmpi/bin/mpirun -np 4 ./e_<version> < PART2_0001.rad > out_2 &
    ../exec/r2r_<version>_impi data4.dat
    Windows : run_win_SPMD.bat
    E:\Rad2rad\s_<version>.exe -i PART1_0000.rad -n 4
    E:\Rad2rad\s_<version>.exe -i PART2_0000.rad -n 4
    set KMP_STACKSIZE=64M
    start /B mpiexec -n 4 E:\Rad2rad\e_<version>.exe -i PART1_0001.rad > out1
    start /B mpiexec -n 4 E:\Rad2rad\e_<version>.exe -i PART2_0001.rad > out2
    start /B E:\Rad2rad\r2r_<version>.exe input.dat
    Windows (cygwin) : run_win_SPMD
    ./s_<version>.exe < PART1_0000.rad;
    ./s_<version>.exe < PART2_0000.rad;
    mpiexec -n 4 ./e_<version>.exe < PART1_0001.rad > out1&
    mpiexec -n 4 ./e_<version>.exe < PART2_0001.rad > out2&
    ./r2r_<version>.exe data4.dat;

RAD2RAD並列化

マルチドメインインターフェースのサイズが大きい場合、RAD2RADでの連成力の計算に使われる時間が長くなり得ます。連成の計算タスクを複数のプロセッサに分割することで、時間の削減が可能になりました。単一入力ファイル設定とは異なり、複数入力ファイル設定の場合は、RAD2RADのSMP並列化のみを使用可能です。用いることのできるプロセッサの数は、RAD2RADが起動されたハードウェアのノードで可能なコア数よりも少ない数が用いられる必要があります。例えば、8コアのマシンでの6は良い値です。RAD2RADのスレッドの数は、Engineと同様にコマンドラインで-ntを使用して指定するか、RAD2RAD入力ファイルでキーワード/PROC/nthreadを使用して直接指定できます。
注: RAD2RADの並列化によるCPU時間上の効果は、RAD2RADで取り扱われるノードの数が少ない(< Cpu数 x 1000)場合、無視できる程度です。
注: RAD2RADがアクティブな場合は結合されたRadioss Engineが休止しているため、RAD2RADの並列化はEngineの並列化とは無関係になります。これは、あるプロセッサをRAD2RADに割り当てるだけでなく、あるプロセッサを全てのEngineに割り当てられることを意味します。それらは、順々に用いられます。

MPIの設定

マルチドメインとSPMD Engine実行モジュールを用いる時、以下のMPI環境変数がパフォーマンス改良のために用いられる必要があります。
  • HP-MPI: MPI_FLAGSy0に設定
  • Open-MPI: OMPI_MCA_mpi_yield_when_idleを1に設定
  • Intel-MPI: デフォルトの設定を用いることが可能

出力ファイル

  • Radioss: 別々の出力ファイルがそれぞれのRadiossプロセスにより生成されます。
  • RAD2RAD:rad2rad.outという名の特別な出力ファイルがRAD2RADにより生成されます。

現在のバージョンの制限

  • それぞれのサブドメインは、完全なものとして構成されます。それぞれの完全な入力ファイルを使って、Radiossモデルを分離します。
  • Radiossプロセスとメインプログラムの間のデータ通信には、通信のパイプシステム法を用います。全てのRadioss EnginesとRAD2RADは同じハードウエアノードで開始される必要があります。
  • ドメイン間の共通節点での運動条件は、結合TYPE5とのみ適合します。
  • RAD2RADプログラムは、複数入力ファイル設定の場合は並列化されません。このことで、大きなサブドメインが多くのCPU数で実行される時、マルチドメイン計算のパフォーマンスが下がる可能性があります。
  • 現在、マルチドメイン計算はメインプログラムから自動実行はされません。全てのRadioss StartersはRAD2RADプログラムが起動される前に実行される必要があります。バッチ計算は可能ですが、 RAD2RADと全てのRadioss Engineプロセスは1つのハードウエアノードで独立、並列に起動される必要があります。
  • それぞれのRadiossドメインでは、リンクの数は15に、CPUの数は128に制限されています。

例:RAD2RAD入力ファイル



図 6. モデル

RAD2RAD入力ファイル

$===============================================================
$ RAD2RAD R8 INPUT FILE :
$===============================================================
$ 1. PARTS DEFINITION
$===============================================================
/DOMAIN/PART1
1 2 3
/DOMAIN/PART2
4 5
/DOMAIN/PART3
9
$===============================================================
$ 2. INTERFACES  DEFINITION
$===============================================================
/LINK/TYPE1
PART1 2
PART2 5
/LINK/TYPE1
PART1 1PART2 4
/LINK/TYPE5
PART3 9
PART1 3
$===============================================================
$3 OPTIONS
$===============================================================
/MLTPS/ON
0.1 0.1
/MESHL/MORFIN
/RADIUS/1e-7
/END   $===============================================================