HS-4200: システム同定を使った材料の較正

弾塑性材料をモデル化するために使用されるRADIOSS材料則のパラメータを特性化する方法について学習します。

開始に先がけ、本チュートリアルで使用されるモデルファイルを<hst.zip>/HS-4200/から自身の作業ディレクトリにコピーします。

延性アルミニウム合金の特性がスタディされます。実際の引張試験を再現するためにRADIOSSシミュレーションを実施し、実験結果と合致するよう材料則のパラメータを決定します。

HS-1506: 曲線間面積を使った材料の較正 は、2つのカーブの差を測るためにHyperMathまたはPython関数を使ってこの問題をセットアップする代替の手法を紹介しています。

HS-1507: Data Source内のAreaツールを使った材料の較正 は、この問題をAreaツールを用いてセットアップする代替法を示しています。

モデルの定義

標準の引張試験片の1/4が、対称条件を使ってモデル化されます。試験片の左側の端点における速度を介して引張がかけられます。

単位は、mm、ms、g、N、MPaです。
1. 引張試験片の形状(試験片の1/4をモデル化)


2. 時刻歴用に保存されたセクションと節点


特性化される材料は6063 T7 アルミニウムです。これは、Johnson-Cookモデルによって損傷なく再現されることのできる等方性弾塑性の挙動を有し(RADIOSS Block Law2)、以下のとおり定義されます:


σ
応力レベル
ε p
塑性ひずみ
a
降伏応力
b
硬化係数
n
硬化指数
c
ひずみ速度係数
ε
ひずみ速度
ε 0
参照ひずみ速度
本チュートリアルでは、パラメータa、b、n、σmax(最大応力)およびヤング率を入力変数として定義します。実験テストによって得られた応力 / ひずみカーブは、図 3に示すとおりです。
3. 工学応力vs.工学ひずみカーブ(実試験結果)


シミュレーション結果については、工学ひずみは節点1の変位を参照長(75 mm)によって割ることで、工学応力はセクションのフォースを初期サーフェス(10.2 mm2で割ることで求められます。
4. 工学応力vs.ひずみのカーブ(シミュレーション結果)


ベース入力テンプレートの作成

このステップでは、HyperStudyでベース入力テンプレートを作成します。もしくは、スタディのDirectory(ディレクトリ)にあるベース入力テンプレートを使用します。

  1. HyperStudyを開始します。
  2. メニューバーからTools(ツール) > Editor(エディタ)をクリックします。
    エディタが開きます。
  3. File(ファイル)欄で作業ディレクトリに進み、TENSILE_TEST_0000.radファイルを開きます。
    注: RADIOSSは、プロパティに20文字の固定フィールドを使用します。
  4. Find(検索)領域で、/MAT/PLAS_JOHNS/1と入力し、をクリックします。
    HyperStudyは、TENSILE_TEST_0000.radファイル内の/MAT/PLAS_JOHNS/1をハイライト表示します。
    5.


  5. 行51の先頭からスタートして、最初の20のフィールドをハイライト表示させ、Eを選択します。
    ヒント: 20文字分の欄の選択をアシストするには、Controlを押してセレクター(20文字に設定されている)をアクティブにしてから、value(値)をクリックします。
    6.


  6. ハイライト表示された欄内を右クリックし、コンテキストメニューからCreate Parameter(パラメータの作成)を選択します。
    Parameter(パラメータ): varname_1ダイアログが開きます。
  7. Label(ラベル)欄にE_Youngと入力します。
  8. 境界値を変更します。
    • Lower bound(下限値):50000
    • Nominal(初期値):60400
    • Upper Bound(上限値):70000
  9. Format(フォーマット)欄に%20.5fと入力します。
  10. OKをクリックします。
    7.


  11. 表 1にある情報を用いて、あと4つの変数を定義します。
    注: 初期値の一部は元のファイル内の値と異なっています。
    1.
    変数 Label(ラベル) Lower Bound(下限値) Nominal(初期値) Upper Bound(上限値) Format(フォーマット)
    a a_PlasticityYieldStress 90 110 120 %20.5f
    b b_HardeningCoeff 100 125 160 %20.5f
    n n_HardeningExpo 0.1 0.2 0.3 %20.5f
    sigmax Sigma_Max 250 280 290 %20.5f
  12. OKをクリックし、Editor(エディタ)を閉じます。
  13. Save Template(テンプレートを保存)ダイアログで作業ディレクトリに進み、TENSILE_TEST_000.tplとしてファイルを保存します。

スタディのセットアップの実行

  1. 以下の方法で新規スタディを開始します:
    • メニューバーから、File(ファイル) > New(新規)をクリックします。
    • リボン上でをクリックします。
  2. Add Study(スタディの追加)ダイアログでスタディの名前を入力し、スタディの場所を選んでOKをクリックします。
  3. Define Models(モデルの定義)ステップに進みます。
  4. パラメータ化ファイルモデルを1つ追加します。
    1. Directory(ディレクトリ)から、TENSILE_TEST_0000.tplファイルをワークエリアにドラッグ&ドロップします。
      8.


    2. Solver input file(ソルバー入力ファイル)列にTENSILE_TEST_0000.radと入力します。
      これが、評価中にHyperStudyが書き出すソルバー入力ファイルの名称となります。
    3. Solver Execution Scrip(ソルバー実行スクリプト)列に、RADIOSS (radioss)を選択します。
    4. Solver input arguments(ソルバー引数)欄に$(file)と表示されていることを確認します。
      この引数は、衝突解析についてRADIOSSのStarterおよびEngineの両方を実行します。同時に、アニメーションファイルから.h3d結果ファイルが生成されることを阻止します。Xは、シミュレーションに使用されるCPUの数です。
  5. モデルの依存性を定義します。
    1. Model Resources(モデルリソース)をクリックします。
      Model Resources(モデルリソース)ダイアログが開きます。
    2. Model 1(m_1)を選択します。
    3. Resource Assistant(リソースアシスタント) > Add File(ファイルの追加)をクリックします。
    4. Select File(ファイルの選択)ダイアログで、作業ディレクトリに進み、TENSILE_TEST_0001.radファイルを開きます。
    5. Operation(操作)をCopyにセットします。
    6. Close(閉じる)をクリックします。
    9.


  6. Import Variables(変数のインポート)をクリックします。
    5つの入力変数がTENSILE_TEST_0000.tplリソースファイルからインポートされます。
  7. Define Input Variables(入力変数の定義)ステップに進みます。
  8. 入力変数の下限値と上限値を確認します。

ベースランの実行

  1. Test Models(モデルをテスト)ステップに進みます。
  2. Run Definition(計算実行)をクリックします。
    スタディのディレクトリ内に、approaches/setup_1-def/ディレクトリが作成されます。approaches/setup_1-def/run__00001/m_1には、ベースランの結果である入力ファイルが含まれます。

出力応答の作成と評価

このステップでは、RADIOSS応力-ひずみカーブを実験データと比較します。

この比較においては、カーブ上の3つの特定ポイントのみに着目します。この法則では損傷はモデル化されないため、Neckingポイント以降は比較は必要ありません。
  • Strain=0.02 (1)における実験応力とRADIOSSとの差
  • Neckingポイント(2)における実験ひずみとRADIOSSとの差
  • Neckingポイント(3)における実験応力とRADIOSSとの差
10.


  1. Define Output Responses(出力応答の定義)パネルに進みます。
  2. Disp_simとラベル付けされたデータソースを作成します。
    1. Data Sources(データソース)タブをクリックします。
    2. Directory(ディレクトリ)から、approaches/setup_1-def/run__00001/m_1にあるTENSILE_TEST01ファイルをワークエリアにドラッグ&ドロップします。
      Data Source Builder(データソースビルダー)が開きます
    3. Tool(ツール)にFile Source(ファイルソース)を選択します。
    4. 以下のオプション群を定義します:
      • TypeをNone/Node 1にセットします。
      • Requestを4 Node 1にセットします。
      • ComponentをDX-X Displacementにセットします。
    5. OKをクリックします。
      11.


    6. ワークエリアで、データソースのラベルをDisp_simに変更します。
      12.


  3. 2を繰り返し、Force_simとラベル付けした2つ目のデータソースを作成して、プロセス中に以下の変更を行います:
    1. TypeをSection/SECTION_2にセットします。
    2. Requestを2 section 1にセットします。
    3. ComponentをFT-Resultant Tangent Forceにセットします。
  4. 3つの出力応答を作成します。
    1. Define Output Responses(出力応答の定義)ステップをクリックします。
    2. Add Output Response(出力応答を追加)を3回クリックします。
    3. ワークエリアのLabel(ラベル)列で、3つの出力応答のラベルをそれぞれRadioss_Strain_0_2Radioss_Stress_NeckingRadioss_Strain_Neckingに変更します。
      13.


  5. Radioss_Strain_0_2出力応答を定義します。
    1. 出力応答Radioss_Strain_0_2のExpression(式)列で、(…) をクリックします。
      Expression Builder(式ビルダー)が開きます。
    2. Functions(関数)タブをクリックします。
    3. 関数のリストからlininterpを選択します。
    4. Insert Varname(変数名の挿入)をクリックします。
      関数lininterp(,,)がEvaluate Expression(式の評価)欄に現れます。
    5. Evaluate Expression(式の評価)欄で、 lininterp関数に(ds_1/75,ds_2/10.2,0.02)と入力します。
      この式は、Strain=0.02におけるひずみに対する応力を計算します。
      14.


    6. OKをクリックします。
  6. Radioss_Stress_Necking出力応答を定義します。
    1. 出力応答Radioss_Stress_NeckingのExpression(式)列で、(…) をクリックします。
      Expression Builder(式ビルダー)が開きます。
    2. Data Sources(データソース)タブをクリックします。
    3. データソースのリストからForce_simを選択します。
    4. Insert Varname(変数名の挿入)ドロップダウンメニューで、Maximum(最大)をクリックします。
      15.


    5. Insert Varname(変数名の挿入)をクリックします。
      関数max(ds_2)がEvaluate Expression(式の評価)欄に現れます。
    6. Evaluate Expression(式の評価)欄で、関数がmax(ds_2)/10.2となるよう編集します。
      これは、最小ひずみとForceの最大値におけるひずみとの間でトリムされたforce (ds_2)の最大値を、応力を求めるために10.2(サーフェス面積)で割ったものです。
      注: 同様のカーブフィッティング問題では、極限荷重後にデータをトリミングする必要があるかもしれません。これを行うための式は: max(ds_2[subrange(ds_1,min(m_1_ds_1),ds_1[indexofmax(ds_2)])])/10.2
    7. OKをクリックします。
  7. Radioss_Strain_Necking出力応答を定義します。
    1. 出力応答Radioss_Strain_NeckingのExpression(式)列で、(…) をクリックします。
      Expression Builder(式ビルダー)が開きます。
    2. Evaluate Expression(式の評価)欄にds_1[indexofmax(ds_2)]/75と入力します。
      これは、応力を求めるために、フォースの値の最大値における変位(ds_1)を75(参照長)で割ったものです。
      注: 同様のカーブフィッティング問題では、極限荷重後にデータをトリミングする必要があるかもしれません。これを行うための式は: ds_1[maxindex(subrange(ds_1,min(ds_1),ds_1[indexofmax(ds_2)]))]/75
    3. OKをクリックします。
  8. Evaluate(評価)をクリックして出力応答値を抽出します。

最適化の実行

  1. Optimization(最適化)を追加します。
    1. Explorer(エクスプローラ)内で右クリックし、コンテキストメニューからAdd(追加)を選択します。
    2. Add(追加)ダイアログでOptimization(最適化)を選択します。
    3. Definition from(定義元)に、Setup(セットアップ)を選択しOKをクリックします。
  2. Optimization 1 > Definition(定義) > Define Output Responses(出力応答の定義)ステップに進みます。
  3. Objectives/Constraints - Goals(目的 / 制約条件 - 目標)タブをクリックします。
  4. 目的関数を追加します。
    1. Add Goal(目標を追加)をクリックします。
    2. Apply On(応答)列で、Radioss_Strain_0_2を選択します。
    3. Type (タイプ)列に、Moreを選択します。
    4. 列1で、System Identification(システムの識別)を選択します。
    5. 列2に141.00000と入力します。
    16.
  5. Radioss_Stress_NeckingおよびRadioss_Strain_Necking出力応答に目的を適用します。
    1. Radioss_Stress_Neckingを以下のとおり設定します:
      • Type(タイプ):System Identification(システム同定)
      • Target Value(ターゲット値): 148.00000
    2. Radioss_Strain_Neckingを以下のとおり設定します:
      • Type(タイプ):System Identification(システム同定)
      • Target Value(ターゲット値):0.0800000
  6. Optimization(最適化) > Specifications(スタディ仕様)ステップに進みます。
  7. ワークエリア内でModes(モード)をAdaptive Response Surface Method (逐次更新型応答曲面法)(ARSM)にセットします。
    注: 問題の定式化に有効な手法のみが使用可能です。
  8. Apply(適用)をクリックします。
  9. Optimization(最適化) > Evaluate(評価)ステップに進みます。
  10. Evaluate Tasks(計算実行)をクリックして最適化を開始します。
  11. 反復計算の履歴を確認します。
    1. Iteration Plot(反復計算プロット)タブをクリックします。
    2. 各チャンネルをそれぞれのプロットで表示するために、をアクティブにします。
    3. Channel(チャンネル)セレクターで、3つの目的関数とObjective Function(目的関数)値を選択します。
      最初の3つの選択は、システム同定最適化問題で使用された実際の値です。目的関数の履歴で、それらの値が実際にそれぞれ対応するターゲット値に近づいていることを確認します。最後のプロットは、システム同定問題で使用されたスカラー目的関数で、実際の目的関数値とターゲット値との差分を二乗し正規化された和です。この組み合わせられた関数の値は、最適化を通して減少している点にご注目ください。
      17.