OS-T:5040 レールジョイント

本チュートリアルでは、レールジョイントの形状最適化を行います。レールジョイントはシェル要素から成り、1つの荷重ケースを有します。ジョイントの形状は、質量を最小化すると同時に応力の制約条件を満たすよう修正されます。

形状最適化では、構造物をどのような形状に変更したいかの情報が必要となります。これには、応力集中を減らすために最適形状を見出すことや、特定の設計要件に見合うよう断面を変更することなどが含まれる場合があります。したがって、形状の変化を反映する形状修正と節点の移動を定義する必要があります。形状最適化には、2つのカードDESVARDVGRIDの使用が必要です。これらはHyperMorphを使って定義できます。2つのカードは定義後、目的関数および制約条件と共に、形状最適化の実行用OptiStruct入力ファイルに含まれます。

rail_joint
図 1. レールジョイント
本チュートリアルにおける最適化問題の設定は以下の通りです:
目的関数
質量の最小化
制約条件
ジョイントのフォンミーゼス応力の最大値 < 200 MPa
設計変数
形状変数

HyperMeshの起動とOptiStructユーザープロファイルの設定

  1. HyperMeshを起動します。
    User Profilesダイアログが現れます。
  2. OptiStructを選択し、OKをクリックします。
    これで、ユーザープロファイルが読み込まれます。ユーザープロファイルには、適切なテンプレート、マクロメニュー、インポートリーダーが含まれており、OptiStructモデルの生成に関連したもののみにHyperMeshの機能を絞っています。

モデルのオープン

  1. File > Open > Modelをクリックします。
  2. optistruct.zipファイルから自身の作業ディレクトリに保存したrail_joint_original.hmファイルを開きます。モデルファイルへのアクセスをご参照ください。
  3. Openをクリックします。
    rail_joint_original.hmデータベースが現在のHyperMeshセッションに読み込まれます。

ジョブのサブミット

  1. AnalysisページからOptiStructパネルをクリックします。

    OS_1000_13_17
    図 2. OptiStructパネルへのアクセス
  2. save asをクリックします。
  3. Save Asダイアログで、OptiStructモデルファイルを書き出す場所を指定し、ファイル名としてrail_joint_originalと入力します。
    OptiStruct入力ファイルには、拡張子 .femが推奨されます。
  4. Saveをクリックします。
    入力ファイル欄には、Save Asダイアログで指定されたファイル名と場所が表示されます。
  5. export optionsのトグルをallにセットします。
  6. run optionsのトグルをanalysisにセットします。
  7. memory optionsのトグルはmemory defaultにセットします。
  8. OptiStructをクリックし、OptiStructジョブを開始します。
ジョブが成功した場合、rail_joint_original.femが書き出されたディレクトリに新しい結果ファイルがあるはずです。何らかのエラーがある場合、rail_joint_original.outファイルはデバッグを手助けするエラーメッセージを探すのに良い場所です。

結果の表示

HyperViewは有限要素解析(FEA)、マルチボディシステムシミュレーション、ビデオと工学データのための完全なポストプロセッシングと表示の環境です。
  1. OptiStructパネルから、HyperViewをクリックします。
    HyperViewHyperMesh Desktop内で起動し、結果ファイルを読み込みます。
  2. ResultsツールバーでresultsContour-24をクリックし、Contour panelを開きます。
  3. Result typeをElement Stresses [2D & 3D] (t)およびvon Misesに設定します。
  4. Applyをクリックします。
    ジョイントのMaximum von Mises Stressをメモします。

    5040_von_mises
    図 3. 初期設定のvon Mises応力
  5. Page ControlsツールバーでpageDelete-24をクリックし、HyperViewクライアントでページを削除します。
    現在、HyperMeshクライアントのPage 1にいるはずです。
  6. return をクリックしてパネルを終了します。

モデルのセットアップ

節点IDの表示

  1. Toolページからnumbersパネルをクリックします。
  2. <uicontrol>File</uicontrol>nodesby setsをクリックします。
  3. node setを選択します。
  4. selectをクリックします。
    16個の節点がハイライト表示されます。
  5. onをクリックし、節点IDをすべて表示させます。
  6. returnをクリックします。

レール上の2Dドメインの作成

  1. ModelブラウザのComponentフォルダーでPSHELLを右クリックし、コンテキストメニューからIsolateを選択します。
    見やすくするために、PSHELL以外のコンポーネントはすべて表示をオフにします。
  2. Analysisページからパネルoptimizationをクリックします。
  3. HyperMorphパネルをクリックします。
  4. domainsパネルをクリックします。
  5. 分割の設定を編集します。
    1. partitioningサブパネルを選択します。
    2. domain angle =に50と入力します。
    3. curve tolerance =に8.0000と入力します。
  6. ドメインを作成します。
    1. createサブパネルを選択します。
    2. global domainsを2D domainsに切り替えます。
    3. all elementsをelemsに切り替えます。
    4. elems > by setsをクリックします。
    5. rail_set1rail_set2を選択し、selectをクリック します。
    6. createをクリックします。

    rail_domains
    図 4. レールドメイン

レール開口部周りの円形エッジドメインの分割

ここでは、2つの円形のドメインを4つの湾曲したエッジドメインに分割します。
  1. edit edgesサブパネルを選択します。
  2. 一番上のセレクターをsplitに設定します。
  3. 1つ目の円形のエッジドメインを分割します。
    1. ドメインセレクターを使って、節点1300、1305、1311、1316を通る円形のエッジドメインを選択します。
    2. 節点セレクターを使って、節点1311を選択します。
    3. splitをクリックします。
      円形のドメインが節点1311で分割され、新しいハンドルが節点1311の位置に作成されます。
    4. ドメインセレクターを使って、節点1311ともう一つのハンドルの間の円形のエッジを選択します。
    5. 節点セレクターを使って、節点1316を選択します。
    6. splitをクリックします。
    7. 節点1305と1300の位置の湾曲したエッジを分割します。
  4. もう一方のレール上の4つの節点を使用し、円形のドメインを分割します
    1. ドメインセレクターを使って、節点931、926、937、942を通る円形のエッジドメインを選択します。
    2. 節点セレクターを使って、節点931を選択します。
    3. splitをクリックします。
    4. ドメインセレクターを使って、節点931ともう一つのハンドルの間の円形のエッジを選択します。
    5. 節点セレクターを使って、節点926を選択します。
    6. splitをクリックします。
    7. 節点937と942の位置の湾曲したエッジを分割します。

rail_circular
図 5. 円形エッジ分割後のレールドメイン

エッジドメインの結合

レール上の各円形ドメインは4つの節点位置で分割され、それぞれのドメインに4つのハンドルが新たに追加されました。この操作の結果、レールの円形ドメインのそれぞれに、5つの湾曲したエッジドメインが作成されています。目的は4つのドメインのみを得ることです。このステップでは、ドメインを結合します。
  1. edit edgesサブパネルで、splitからmergeに切り替えます。
  2. 節点926と924の間のドメインを結合します。
    1. ドメインセレクターを使って、既存のハンドルから節点926に至る外側の赤いカーブを選択します。
    2. 既存のハンドルから節点942に至る外側の赤いカーブを選択します。
    3. retain handlesからチェックを外します。
    4. mergeをクリックします。
    既存のハンドルが消去されます。
  3. 節点1316と1300の間のドメインを結合します。

rail_merged
図 6. ドメインがいくつか結合された後のレールドメイン

チューブ上の2Dドメインの作成

  1. ModelブラウザのComponentフォルダーでPSHELL.1を右クリックし、コンテキストメニューからShowを選択します。
  2. domainsパネルで、createサブパネルを選択します。
  3. 一番上のセレクターを2D domainsに設定します。
  4. 要素セットelem_set1にドメインを作成します。
    1. elems > by setsをクリックします。
    2. elem_set1を選択し、selectをクリックします。
    3. createをクリックします。
  5. セットelem_set2、elem_set3、elem_set4内の要素にそれぞれ2次元ドメインをあと3つ作成します。
  6. returnをクリックし、HyperMorphモジュールに戻ります。

domains_rail
図 7. レールとチューブジョイント上のドメイン

シェイプの作成

ここでは、作成されたドメインとハンドルを使用して形状を作成します。
  1. morphパネルをクリックします。
  2. 1つ目の形状について、選択されたエッジドメインの曲率を修正します。
    1. alter dimensionsサブパネルを選択します。
      alter dimensionsサブパネルは、選択されたエッジドメインの曲率を修正に使用できます。
    2. 最初のスイッチをcurve ratioにセットします。
    3. center calculationをby edgesに設定します。
    4. edges only:の下のドメインセレクターで、スイッチをhold endsにセットします。
      選択したエッジドメインの2つの終端をホールドすることにより、その端点を変えることなく選択したエッジの曲率を変更できます。
    5. その他の設定はデフォルトのままとします。
    6. ドメインセレクターを使って、赤いエッジドメインを選択します。
      ヒント: 選択しやすいようにズームインする必要があるかもしれません。
      全部で8つのエッジドメインが選択され、ハイライト表示されています。

      morph_edge
      図 8. エッジドメインのモーフィング
    7. curve ratio =欄に20と入力します。
    8. morphをクリックします。
    選択された8つのエッジドメインに、新しい曲率が適用されます。
  3. 形状sh1を保存します。
    1. save shapeサブパネルを選択します。
    2. shape=欄にsh1と入力します。
    3. トグルをas handle perturbationsからas node perturbationに切り替えます。
    4. colorをクリックして形状ベクトルの色を変更する、もしくはデフォルトのカラー設定をそのまま使用します。
    5. saveをクリックします。
    形状ベクトル(矢印)が選択した色で作成されます。

    rail_sh1
    図 9. 形状変数sh1
  4. undo allをクリックし、次の形状を作成する準備に入ります。
  5. ModelブラウザShapeを右クリックし、コンテキストメニューから<uicontrol>Representation</uicontrol>Hideを選択します。
  6. alter dimensionsサブパネルを選択します。
  7. ドメインセレクターの横のリセットをクリックし、それ以前の選択をすべてリセット、削除します。
  8. 1つ目の形状について、選択されたエッジドメインの曲率を修正します。
    1. ドメインセレクターを使って、赤いエッジカーブを選択します。

      morph_2nd
      図 10. 2つ目の形状用のエッジドメインのモーフィング
    2. morphをクリックします。
    選択された8つのエッジドメインに、新しい曲率が適用されます。
  9. 形状sh2を保存します。
    1. save shapeサブパネルを選択します。
    2. shape=欄にsh2と入力します。
    3. トグルをas handle perturbationsからas node perturbationに切り替えます。
    4. colorをクリックして形状ベクトルの色を変更する、もしくはデフォルトのカラー設定をそのまま使用します。
    5. saveをクリックします。

    rail_sh2
    図 11. 形状変数sh2
  10. undo allをクリックし、次の形状を作成する準備に入ります。
  11. ModelブラウザShapeを右クリックし、コンテキストメニューから<uicontrol>Representation</uicontrol>Hideを選択します。
  12. 既存形状の線形結合として新しい形状を作成します。
    1. apply shapesサブパネルを選択します。
    2. 形状セレクターを使用し、 sh1sh2を選択します。
    3. multiplier=欄に1.0と入力します。
    4. applyをクリックします。
  13. 形状sh3を保存します。
    1. save shapeサブパネルを選択します。
    2. shape=欄にsh3と入力します。
    3. トグルをas node perturbationからas handle perturbationに切り替えます。
    4. colorをクリックして形状ベクトルの色を変更する、もしくはデフォルトのカラー設定をそのまま使用します。
    5. saveをクリックします。
    新しい形状sh3には、sh1とsh2の両方の形状からの影響が含まれます。

    rail_sh3
    図 12. 形状変数sh3. 3つ目の形状sh3はチューブを正方形の断面に変更します。

注意:
この時点でundo allをクリックしないでください。この3番目の形状変更に基づき、形状をもう1つ作成するためです。

  1. ModelブラウザShapeを右クリックし、コンテキストメニューから<uicontrol>Representation</uicontrol>Hideを選択します。
  2. ModelブラウザのComponentフォルダーでPSHELLを右クリックし、コンテキストメニューからHideをクリックします。
    見やすくするために、このコンポーネントは表示をオフにします。
  3. 1つ目の形状について、選択されたエッジドメインの曲率を修正します。
    1. alter dimensionsサブパネルを選択します。
    2. ドメインセレクターの横のリセットをクリックし、それ以前の選択をすべてリセット、削除します。
    3. 1つ目のセレクターをcurve ratioからdistanceに変更します。
      この機能では、選択されたドメイン間の距離を短くすることができます。
    4. end aをnodes and handlesに設定します。
    5. node aおよびnode bセレクターを使って、図 13に示す節点を選択します。

      set_up_4
      図 13.
      節点aと節点bが選択されると、その間の距離を自動的に計算し、distance =の欄に表示します。節点aと節点bの間の距離は約43です。
    6. followers (end a)の下のハンドルセレクターを使って、図 13で下向き矢印により示される8つのハンドルを選択します。
    7. followers (end a)の下のハンドルセレクターを使って、チューブの反対側のフェイスの近くにある8つのハンドルを選択します。
    8. 下部のセレクターをhold middleにセットします。
      これらのコンポーネントは、視認性を良くするために、オンにします。
    9. distance=欄に20と入力します。
    10. morphをクリックします。
    矩形の形状がジョイントに現れます。
  4. 形状sh4を保存します。
    1. save shapeサブパネルを選択します。
    2. shape=欄にsh4と入力します。
    3. トグルをas handle perturbationsからas node perturbationに切り替えます。
    4. colorをクリックして形状ベクトルの色を変更する、もしくはデフォルトのカラー設定をそのまま使用します。
    5. saveをクリックします。

    rail_4
    図 14. 形状変数sh4
  5. undo allをクリックし、元のメッシュに戻します。
  6. ModelブラウザShapeを右クリックし、コンテキストメニューから<uicontrol>Representation</uicontrol>Hideを選択します。
  7. returnを3回クリックし、メインメニューに戻ります。

最適化のセットアップ

形状設計変数の定義とアニメーションによる確認

  1. Analysisページからパネルoptimizationをクリックします。
  2. shapeパネルをクリックします。
  3. desvarcreateサブパネルを選択します。
  4. single desvarからmultiple desvarsに切り替えます。
  5. 形状設計変数を作成します。
    1. 形状セレクターを使用し、 sh1sh2sh3およびsh4を選択します。
    2. initial value =欄に0.0と入力します。
    3. lower bound欄に-1.0と入力します。
    4. upper bound欄に1.0と入力します。
    5. createをクリックします。
    同じ初期値、下限、上限を有する4つの設計変数が作成されます。HyperMeshは自動的に、設計変数を各形状にそれぞれリンクし、その関連付けされた形状と同じ名前を割り当てます。
  6. 形状をアニメーション表示します。
    1. animateをクリックします。
    2. simulation=をクリックしSHAPE-sh1(1)を選択します。
    3. data type=をPerturbation vectorに設定します。
    4. modalをクリックします。
    5. next、続いてanimateをクリックして次の形状を確認し、同様に、すべてについて確認します。
  7. returnを3回クリックし、Optimization panelに戻ります。

最適化の応答の作成

  1. Analysisページからoptimizationをクリックします。
  2. Responsesをクリックします。
  3. モデルの全体積について定義される質量の応答を作成します。
    1. responses=欄に、massと入力します。
    2. response typeの下で、massを選択します。
    3. regional selectionをとno regionidに設定します。
    4. createをクリックします。
  4. 静的応力の応答を作成します。
    1. responses=欄に、Stressと入力します。
    2. response typeをstatic stressに設定します。
    3. プロパティセレクターを使って、PSHELL.1を選択します。
    4. response セレクターをvon misesにセットします。
    5. von misesの下で、both surfacesを選択します。
    6. createをクリックします。
  5. returnをクリックし、Optimization panelに戻ります。

目的関数の定義

  1. objectiveパネルをクリックします。
  2. minが選択されていることを確認します。
  3. responseをクリックし、Massを選択します。
  4. createをクリックします。
  5. returnを2回クリックし、Optimization panelを終了します。

設計制約条件の作成

  1. dconstraintsパネルをクリックします。
  2. constraints=欄にconと入力します。
  3. response =をクリックしStressを選択します。
  4. upper boundの横のボックスにチェックマークを入れ、200と入力します。
  5. 荷重ステップセレクターを使って、STEPを選択します。
  6. createをクリックします。
  7. returnをクリックし、Optimization panelに戻ります。

形状最適化のコントロールカードの定義

このコントロールカードが定義されていないと、最適化は品質チェックにより停止されてしまい、収束結果を得ることができません。
  1. Analysisページからパネルcontrol cardsをクリックします。
  2. Card Imageダイアログで、PARAMをクリックします。
  3. CHECKELを選択します。
  4. CHECKEL_V1をNOに設定します。
  5. returnを2回クリックします。

最適化の実行

  1. AnalysisページからOptiStructをクリックします。
  2. save asをクリックします。
  3. Save Asダイアログで、OptiStructモデルファイルを書き出す場所を指定し、ファイル名としてrail_joint_optと入力します。
    OptiStruct入力ファイルには、拡張子 .femが推奨されます。
  4. Saveをクリックします。
    入力ファイル欄には、Save Asダイアログで指定されたファイル名と場所が表示されます。
  5. export optionsのトグルをallにセットします。
  6. run optionsのトグルをoptimizationにセットします。
  7. memory optionsのトグルはmemory defaultにセットします。
  8. OptiStructをクリックして最適化を実行します。
    ジョブが完了すると、ウィンドウ内に次のようなメッセージが現れます:
    OPTIMIZATION HAS CONVERGED.
    FEASIBLE DESIGN (ALL CONSTRAINTS SATISFIED).
    エラーがある場合、OptiStructはエラーメッセージも出します。エラーに関する詳細は、テキストエディタでファイル rail_joint_opt.outを開いて確認することができます。このファイルは同じディレクトリ内に.femファイルとして書き出されます。
  9. Closeをクリックします。

結果の表示

形状最適化結果の確認

  1. OptiStructパネルから、HyperViewをクリックします。
    HyperViewが起動され、結果が読み込まれます。HyperViewにモデルと結果が正しく読み込まれたことを示すメッセージウィンドウが現われます。
  2. ResultsツールバーでresultsContour-16をクリックし、Contour panelを開きます。
  3. Result typeをShape Change [v]およびmagに設定します。
    Shape Change [v]は、rail_joint_opt_des.h3dファイル内の唯一の結果タイプです。
  4. Applyをクリックします。
    形状変化が表示されます。コンターはすべて青色となっています。これは、結果が最初の設計ステップまたは反復計算0であるためです。
  5. Resultsブラウザから、最終反復計算を選択します。
    モデル内の各要素に、選択された反復計算についての各要素の密度値を示すレジェンドカラーが割り当てられます。形状最適化の結果はモデルに適用されます。

    5040_converged
    図 15.

    5040_converged2
    図 16. 収束した形状変化(Scale 2x)

応力のコンタープロットの表示

  1. アプリケーションの上部右側でをクリックし、page 2に移動します。
  2. ResultsツールバーでresultsContour-16をクリックし、Contour panelを開きます。
  3. Result typeをElement Stresses [2D & 3D] [t]およびvon Misesに設定します。
  4. Resultsブラウザから、最終反復計算を選択します。
  5. Applyをクリックします。
応力コンターが、モデルに加えられた形状変化に重ねて表示されます。この値が指定した制約値に近いかどうか検証してください。

5040_von_mises_last_iter

5040_von_mises_max
図 17. 最終反復計算のvon Mises応力(Max < 200 MPa)

結果の確認

体積を最小化するという設計の目的は達成されましたか?されていない場合、どうしてでしょうか?

設計制約条件は満たされていますか?

この問題設定で最も影響の大きかったのはどのシェイプですか?

コンプライアンスの減少率はどの位ですか?

寸法最適化はジョイントに導入されましたか?