RadiossAcuSolveを用いたDC-FSI

DC-FSI問題を解くには、以下のワークフローを強く推奨します:
  1. Radioss構造モデルとAcuSolveのみの流体モデルを作成し、非連成解析が成功裏に実行できることを確認します。
  2. DC-FSIコマンドを含むスタンドアロンモデルを準備します。
  3. 解析を実行します。
  4. FSIの解のポストプロセスを行います。

このワークフローでは、RadiossAcuSolveモデルの両方が正しく定義されていることを連成シミュレーション実行前に確認しています。RadiossAcuSolveでは特定の単位系で解析実行を行う必要はありませんが、両方とも一貫した単位系を用いる必要があります。規則として、2つのソルバーの間で交換される全ての量は単位を持つ形式で、全てのベクトル量の成分はその内部フレームで解かれます。一貫性のため、RadiossAcuSolveで同じ内部フレームが選択される必要があります。

Radiossモデル

DC-FSIを含むRadiossモデルを以下の3ステップで準備します:
  1. Radiossの入力デックを作成
  2. インターフェース領域と交換される解の量を指定
  3. 通信スキームを定義
Radioss FSI 入力データのEngineキーワード/IMPL/DYNA/FSIを以下に示します:
/IMPL/DYNA/FSI
ESET SSET PORT MINX MAXX TAG DATA MSG WAIT INIT 
FTOL DTOL TTOL XTOL 

各データ項目について以下に示します。

減衰サーフェス

構造メッシュの減衰サーフェスは、Radioss FSI入力データで指定される必要があります。減衰サーフェスは要素グループかサーフェスのどちらかで指定できます。減衰サーフェス上の構造メッシュはインターフェースの流体メッシュと一致する必要はありません。AcuSolveは、流体インターフェースメッシュ上のCFD反力を内部的に一致しない構造メッシュの減衰サーフェスに投影します。節点力のマッピングは構造のビーム要素に対してもサポートされています。例えば、ロッド、パイプまたはブレードが構造メッシュ内の単純化されたビーム要素でモデル化できます。対応する流体メッシュではこれらのビーム要素の実際の3次元形状を含むことができます。

減衰サーフェスが要素グループ(ESET)で指定される場合、/GRBEAM/BEAM//GRSHEL/SHEL//GRSH3N/SH3N/をそれぞれ、ビーム、4節点シェル、3節点シェル要素に対して用います。ソリッドの減衰サーフェスはシェル要素で覆い、これらの要素に/MAT/LAW0データを用いたゼロ材料プロパティを割り当てることで指定できます。減衰サーフェスがビーム要素からなる場合、これらはビーム要素グループデータで指定される必要があります。要素グループのIDは、/IMPL/DYNA/FSIデータの最初の項目です。

減衰サーフェス(SSET)は、Radioss /SURFデータにより指定することもできます。/SURFには、サーフェス指定に用いられる多くのオプションがあります。このサーフェスはシェル構造のサーフェスかソリッドメッシュのサーフェスのどちらかです。サーフェス IDは/IMPL/DYNA/FSIデータの2番目の項目です。/SURFデータを使用してビーム要素を指定することはできません。
注: 減衰サーフェスは要素グループとサーフェスの組み合わせで定義できます。

一致する流体サーフェスはAcuSolveデータ内でEXTERNAL_CODE_SURFACEコマンドを用いて定義されます。

あるケースでは、構造の減衰サーフェスの一部は、AcuSolveAcuSolve境界面として関連付けられるように"タグ"をつける必要があります。これは、EXTERNAL_CODE_SURFACEデータ内のexternal_code_tagsパラメータでRadiossパート IDを指定して行います。

例:
EXTERNAL_CODE_SURFACE( "Drill" ) { 
    ... 
         external_code_tags = {"10"}
         ...
}

データはこのサーフェスがRadiossパートID10に対応することを指定するために用いられます。各サーフェスは同じパートIDを持つ要素で構成される必要があり、また個々のサーフェスはそれぞれ異なるパートIDを持つ要素で構成される必要があります。ソリッド構造のサーフェスであるタグを適用するには、ソリッドがシェル要素で覆われ、これらのシェル要素のプロパティIDがサーフェスタグとして使用されている必要があります。サーフェスタグの使用を指定する場合は、/IMPL/DYNA/FSI データの項目101に設定します。

AcuSolveモデル

このセクションではDC-FSI用のAcuSolveモデル準備のための概要を示します。コマンドの詳細については、AcuSolve Command Reference Manualをご参照ください。AcuSolveモデル準備のための3ステップ:
  1. 外部フィールドを含める解析パラメータを設定します。
  2. 解法のストラテジーを定義します。
  3. 外部サーフェスを定義します。

外部フィールドを含む解析パラメータの設定

EQUATIONコマンドを用いて、利用可能なソリューションフィールドを指定するか、問題に有る方程式の系を指定します。外部ソルバーで計算されるフィールドを含めるには、Radiossでは、external_code パラメータをONに設定します。

例えば、AcuSolveeが流れを計算し、Radiossが変位を計算する流体 - 構造解析を行う時、external_codeパラメータをONにし、 任意のメッシュ移動をmeshパラメータをarbitrary_lagrange_eulerianに設定することで可能にします。
EQUATION {
flow	= navier_stokes
mesh	= arbitrary_lagrange_eulerian
external_code	= on
}

解法のストラテジーの定義

この問題にソリューションフィールドが存在することを指定するEQUATIONと共に、TIME_SEQUENCESTAGGERコマンドを用いて時間ステップとスタッガリングのストラテジーを定義する必要があります。よく用いられる方法は AUTO_SOLUTION_STRATEGYコマンドを用いて AcuSolveが解法のストラテジーコマンドを生成する方法です。解法のストラテジーコマンドをハイライトさせるためには、TIME_SEQUENCESTAGGERコマンドをハイライトさせます。

TIME_SEQUENCEコマンドは時間ステップとスタッガリングのストラテジーを指定します。以下の例では、外部フィールドが構造の変位によって最初に解かれ、次に流体要が調整されてメッシュの変位(ALE)が続きます。次に流れと乱流方程式が解かれます。
TIME_SEQUENCE {
   min_time_steps                      = 1
   max_time_steps                      = 15
         :
   min_stagger_iterations              = 1
   max_stagger_iterations              = 20
   staggers                            = { "external_code",
"mesh_displacement",
"flow",
"turbulence" }
}
解かれるそれぞれのフィールドで(例えばそれぞれのスタッガーはTIME_SEQUENCEコマンドで定義されます)、非線形反復と線形ソルバーのパラメータをSTAGGERコマンドを用いて定義する必要があります。例えば、STAGGERコマンドは external_codemesh_displacementflow方程式に対して示されます。
STAGGER ( "external_code” ) {
   equation                            = external_code
   min_stagger_iterations              = 1
   max_stagger_iterations              = 10
}
 
STAGGER( "mesh_displacement" ) {
   equation                            = mesh_displacement
   min_stagger_iterations              = 1
   max_stagger_iterations              = 5
   convergence_tolerance               = 0.1
   linear_solver                       = conjugate_gradient
   min_linear_solver_iterations        = 10
   max_linear_solver_iterations        = 1000
   linear_solver_tolerance             = 0.001
   projection                          = off
}
 
STAGGER( "flow" ) {
   equation                            = flow
   min_stagger_iterations              = 1
   max_stagger_iterations              = 2
   convergence_tolerance               = 0.1
   lhs_update_frequency                = 1
   linear_solver                       = gmres
   linear_solver_tolerance             = 0.1
}

流体-構造インターフェースの定義

EXTERNAL_CODE_SURFACEコマンドを用い、流体と構造の間のインターフェースを定義します。コマンドはサーフェスのトポロジーと共に、インターフェースのプロパティを指定します。

以下は、3節点の3角形から構成される、MESH.DIRディレクトリに置かれたwall.ebcからインターフェーストポロジーを読み込んだ例です。velocity_typetemperature_type、およびmesh_displacement_typeはインターフェースのプロパティ(境界条件)を定義します。以下にこの内容について示します。
EXTERNAL_CODE_SURFACE( "wall" ) {
   surfaces	= Read( "MESH.DIR/wall.ebc" )
   shape            	= "three_node_triangle"
   element_set	= "tet fluid"
   velocity_type	= wall
   temperature_type	= tied
   mesh_displacement_type  	= tied
   gap	= 0
   gap_factor	= 0
   external_code_tags	= {}
}

インターフェースのプロパティまたは境界条件は、mesh_displacement_typevelocity_typeおよびtemperature_typeパラメータを介して指定されます。mesh_displacementパラメータは流体メッシュが固体メッシュに固定されているか、固体メッシュサーフェスに対して滑りを考慮できるかを定義します。mesh_displacement_type=tiedの設定で流体メッシュは固定メッシュに固定され、または mesh_displacement_type=slipで流体メッシュは固定サーフェスに対して滑りが可能になり、ガイドサーフェスとして作用します。

velocity_typeは構造メッシュ速度との関係で流体速度がどのように振舞うかを指定します。velocity_type=wallの設定で流体速度はメッシュ速度となり、velocity_type=slipの設定で流体速度の法線成分がソリッドメッシュ速度に対して固定されます。

mesh_displacementvelocity_typeパラメータ設定に基づいて4つのインターフェースの組み合わせが可能ですこれらを表 1にまとめます。

表 1. 直接流体-構造連成相互作用境界条件
流体 - ソリッドインターフェースの条件 メッシュの変位
タイド 滑り
速度タイプ x f l u i d = x s o l i d

u f l u i d = ( x f l u i d n + 1 x f l u i d n ) / Δ t

x f l u i d S s o l i d

u f l u i d n = ( x f l u i d n + 1 x f l u i d n ) / Δ t n

u f l u i d t i = ( x s o l i d n + 1 x s o l i d n ) / Δ t t i i = 1 , 2

滑り x f l u i d = x s o l i d

u f l u i d n = ( x f l u i d n + 1 x f l u i d n ) / Δ t n

x f l u i d S s o l i d

u f l u i d n = ( x f l u i d n + 1 x f l u i d n ) / Δ t n

固体メッシュに沿った流体の滑りが考慮できる場合、流体と固体のメッシュの間の隣接の検索が連続的に実行されます。gap_factorパラメータで次元の無い(要素面の長さに関する)最大許容ギャップパラメータを指定し、指定された寸法の最大ギャップの距離でAcuSolveサーフェスのそれぞれの積分点と最も近いRadiossで与えられたサーフェスのギャップをチェックします。距離がギャップよりも大きい場合、計算はエラーメッセージを出して停止します。