OS-T:2070 DMIGを用いた縮退モデル

本チュートリアルでは、シンプルな片持ち梁をモデル化した既存の有限要素モデルを使用し、静的縮退を使って有限要素モデルを縮退する方法について説明します。また、その縮退モデルについてトポロジー最適化を実行します。


2070
図 1. 静的縮退なしの片持ち梁のフルモデル
最適化問題の設定は以下の通りです:
目的関数
コンプライアンスの最小化
制約条件
体積を現状の40%以下に
設計変数
設計空間内の各要素の密度

2070_2
図 2. 片持ち梁のフルモデルのトポロジー最適化結果

静的縮退によるモデル縮退テクニックで縮退すべきモデルのパートは、スーパーエレメントと呼ばれます。OptiStructでは、スーパーエレメントの境界自由度、すなわち、マトリックスの直接入力により置き換えられる縮退部コンポーネントと縮退されない部分との接合箇所の自由度のセットを示すには、ASETまたはASET1バルクデータエントリが必要です。ASETの数が多いほど、静的縮退の精度と解析コストは高くなります。例えば、静的縮退を用いることにより、解くべきマトリックスのサイズは小さくなりますが、縮退マトリックス(DMIG)が非常に密である場合、マトリックスが疎であるフルモデルの場合と比べて解析時間が長くかかります。したがって、DMIGを用いた効率的な解析を行うには、ASETエントリの選択が非常に重要となります。

縮退マトリックスが密となることを回避するには、設計空間と非設計空間の間の境界節点のすべてについてASETエントリを作成せず、ASETエントリを慎重に選びます(下の図参照)。本チュートリアルに使用される問題はサイズが小さいため、解析時間はASETエントリの選択に左右されないかもしれません。

2070_3
図 3. 片持ち梁モデルのASET

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

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

モデルのオープン

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

スーパーエレメントの作成

ASETs荷重コレクターの作成

  1. 荷重コレクターを作成します。
    1. Modelブラウザで右クリックしコンテキストメニューからCreate > Load Collectorを選択します。
      デフォルトの荷重コレクターがエンティティエディターに表示されます。
    2. NameにAsetsと入力します。
    3. Card ImageをNoneに設定します。
  2. 拘束条件を作成します。
    1. Analysisページからパネルconstraintsをクリックします。
    2. createサブパネルを選択します。
    3. 節点セレクターを使って、境界節点を選択します。

      2070_3
      図 4.
    4. すべての自由度を選択します。
      チェックマークのついている自由度がASETに割り当てられます。Dofs 1、2および3は、x、y、z方向の並進自由度を表します。Dof 4、5、6 はそれぞれ全体座標系の x、y、z 軸周りの回転自由度です。
    5. Load Type=をクリックしASETを選択します。
    6. createをクリックします。
  3. returnをクリックし、メインメニューに進みます。

後続の最適化で縮退されたない要素の削除

縮退剛性マトリックスおよび荷重ベクトルは、縮退される要素(スーパーエレメント)についてのみ生成されます。したがって、新規モデルは、スーパーエレメントパートとそのパートに直接適用される荷重および境界条件のみを有するよう作成される必要があります。
  1. キーボードのF2キーを押し、Delete panelに進みます。
  2. エンティティセレクターをelemsにセットし、elems > by windowをクリックします。
  3. 図 5に示す要素の周りにウィンドウを描きます。

    2070_4
    図 5.
  4. delete entityをクリックします。
  5. returnをクリックし、メインメニューに進みます。

縮退マトリックスを外部ファイルに書き出すためのパラメータの定義

縮退マトリックス生成プロセスをアクティブにするには、PARAM,EXTOUTバルクデータエントリが必要です。
このパラメータがアクティブになっていないと、入力ファイルは通常のジョブとして扱われ、縮退マトリックスが生成されません。このパラメータには、ASCIIフォーマットのマトリックスを.pchファイルに保存するDMIGPCHと、バイナリフォーマットのマトリックスを.dmgファイルに保存するDMIGBINという2つのオプションがあります。本チュートリアルでは、DMIGPCHを使用します。
  1. Analysisページからパネルcontrol cardsパネルをクリックします。
  2. Card Imageダイアログで、PARAMをクリックします。
  3. EXTOUTを選択します。
  4. card imageの上部、EXTOUTの下で、DMIGPCHを選択します。
  5. returnをクリックし、PARAMから抜けます。
  6. returnをクリックし、メインメニューに戻ります。

データベースの保存

  1. メニューバーFile > Save As > Modelをクリックします。
  2. Save Asダイアログでファイル名欄にcantilever_dmig.hmと入力し、自身の作業ディレクトリに保存します。

ジョブのサブミット

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

    OS_1000_13_17
    図 6. OptiStructパネルへのアクセス
  2. save asをクリックします。
  3. Save Asダイアログで、OptiStructモデルファイルを書き出す場所を指定し、ファイル名としてcantilever_dmigと入力します。
    OptiStruct入力ファイルには、拡張子 .femが推奨されます。
  4. Saveをクリックします。
    入力ファイル欄には、Save Asダイアログで指定されたファイル名と場所が表示されます。
  5. export optionsのトグルをallにセットします。
  6. run optionsのトグルをanalysisにセットします。
  7. memory optionsのトグルはmemory defaultにセットします。
  8. OptiStructをクリックし、OptiStructジョブを開始します。
ジョブが成功した場合、cantilever_dmig.femが書き出されたディレクトリに新しい結果ファイルがあるはずです。何らかのエラーがある場合、cantilever_dmig.outファイルはデバッグを手助けするエラーメッセージを探すのに良い場所です。
そのディレクトリに書かれるデフォルトのファイルは:
cantilever_dmig.out
ファイルの設定、最適化問題の設定、実行に必要なRAMおよびディスクスペースの推定量、各最適化反復計算の情報、解析時間等、特定の情報を含むOptiStructの出力ファイル。ワーニングおよびエラーに関しては、このファイルを確認すること。
cantilever_dmig.stat
解析のプロセスの間のそれぞれのステップでのCPU情報を提供する、解析のプロセスの要約。
cantilever_dmig_AX.pch
縮退マトリックス(DMIG)ファイル

マトリックスは、DMIGバルクデータエントリと同じフォーマットで.pchファイルに書き出されます。これらは、1つのヘッダーエントリと1つまたは複数のカラムエントリで定義されます。デフォルトでは、剛性マトリックスの名称はKAAX、質量はMAAX、荷重はPAXです。本チュートリアルでは質量マトリックスは使用されないため、.pchファイルには書き出されません。

I/O OptionのエントリのDMIGNAMEにより、マトリックスの名称をコントロールすることが可能です。

データベースの作成

メニューバーFile > Newをクリックします。
既存のHyperMeshデータベースが作成されます。

スーパーエレメントをモデルに含める

モデルのオープン

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

DMIGを使って縮退されたスーパーエレメントパートの削除

スーパーエレメントパートのマトリックスはDMIGによって置き換えられるため、節点および要素のバルクデータエントリ、およびスーパーエレメント内のすべての荷重と境界条件は削除する必要があります。
  1. キーボードのF2キーを押し、Delete panelに進みます。
  2. エンティティセレクターをelemsにセットし、elems > by windowをクリックします。
  3. 図 7に示す要素の周りにウィンドウを描きます。

    2070_5
    図 7.
  4. delete entityをクリックします。
  5. returnをクリックし、メインメニューに進みます。

DMIGを伴うトポロジー最適化のセットアップ

  1. Analysisページからパネルcontrol cardsパネルをクリックします。
  2. INCLUDE_BULKコントロールカードを定義します。
    1. Card Imageダイアログで、INCLUDE_BULKをクリックします。
    2. Include欄にファイル名cantilever_dmig_AX.pchを入力します。
      縮退マトリックス(DMIG)は、OptiStruct入力デックに含まれます。ここでは、トポロジー最適化がcantilever_dmig_AX.pchファイルと同じフォルダーで実行されることを前提とします。別のフォルダーで実行する場合は、このファイルのフルパスを定義してください。
    3. returnをクリックし、INCLUDE_BULKコントロールカードを終了します。
  3. K2GGコントロールカードを定義します。
    1. K2GGをクリックします。
    2. K2GG=欄に、KAAXと入力します。
      これは、KAAXという名称の縮退剛性マトリックス(cantilever_dmig_AX.pchファイルに格納されている)が使用されるべきということを指定します。
    3. returnをクリックし、K2GGコントロールカードを終了します。
  4. P2Gコントロールカードを定義します。
    1. P2Gをクリックします。
    2. P2G=欄に、PAXと入力します。
    3. returnをクリックし、P2Gコントロールカードを終了します。
  5. returnをクリックし、メインメニューに進みます。

最適化のセットアップ

トポロジー設計変数の作成

  1. Analysisページからoptimizationをクリックします。
  2. topologyをクリックします。
  3. createサブパネルを選択します。
  4. desvar=欄にtopoと入力します。
  5. type:をPSHELLにセットします。
  6. プロパティセレクターを使って、designを選択します。
  7. createをクリックします。
  8. 設計変数のパラメータを更新します。
    1. parametersサブパネルを選択します。
    2. minmemb offからmindim=に切り替え、1.2と入力します。
    3. updateをクリックします。
  9. returnをクリックします。

最適化の応答の作成

  1. Analysisページからoptimizationをクリックします。
  2. Responsesをクリックします。
  3. 体積率の応答を作成します。
    1. responses=欄に、Volfracと入力します。
    2. response typeの下で、volumefracを選択します。
    3. regional selectionをtotalno regionidに設定します。
    4. createをクリックします。
  4. コンプライアンスの応答を作成します。
    1. responses=欄に、Complと入力します。
    2. response typeの下で、complianceを選択します。
    3. regional selectionをとno regionidに設定します。
    4. createをクリックします。
  5. returnをクリックし、Optimization panelに戻ります。

設計制約条件の作成

  1. dconstraintsパネルをクリックします。
  2. constraints=欄にVFracと入力します。
  3. response =をクリックしVolfracを選択します。
  4. upper boundの横のボックスにチェックマークを入れ、0.4と入力します。
  5. createをクリックします。
  6. returnをクリックし、Optimization panelに戻ります。

目的関数の定義

  1. objectiveパネルをクリックします。
  2. minが選択されていることを確認します。
  3. response=をクリックし、Complを選択します。
  4. 荷重ステップセレクターを使って、stepを選択します。
  5. createをクリックします。
  6. returnを2回クリックし、Optimization panelを終了します。

データベースの保存

  1. メニューバーFile > Save As > Modelをクリックします。
  2. Save Asダイアログでファイル名欄にcantilever_opti.hmと入力し、自身の作業ディレクトリに保存します。

最適化の実行

  1. AnalysisページからOptiStructをクリックします。
  2. save asをクリックします。
  3. Save Asダイアログで、OptiStructモデルファイルを書き出す場所を指定し、ファイル名としてcantilever_optiと入力します。
    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はエラーメッセージも出します。エラーに関する詳細は、テキストエディタでファイル cantilever_opti.outを開いて確認することができます。このファイルは同じディレクトリ内に.femファイルとして書き出されます。
  9. Closeをクリックします。
ディレクトリ内に作成されるデフォルトのファイルは以下の通り:
cantilever_opti.hgdata
各反復計算における目的関数、制約条件の違反率が納められているHyperGraph形式のファイル。
cantilever_opti.HM.comp.tcl
密度の結果値に基づいて要素をコンポーネントに分類するために使用されるHyperMeshコマンドファイル。このファイルは、OptiStructのトポロジー最適化を実行した場合にのみ使用されます。
cantilever_opti.HM.ent.tcl
密度の結果値に基づいて要素をエンティティセットに分類するために使用されるHyperMeshコマンドファイル。このファイルは、OptiStructのトポロジー最適化を実行した場合にのみ使用されます。
cantilever_opti.html
問題設定と最終反復計算結果のサマリーを含むHTML形式の最適化レポート。
cantilever_opti.oss
デフォルトで密度のしきい値が0.3として定義されているOSSmooth用のファイル。このファイル内のパラメーターを調整することでユーザーの意図する結果を得ることができます。
cantilever_opti.out
ファイルのセットアップ、最適化のセットアップの情報、 実行に必要なRAMとディスクスペースの見積もり、それぞれの最適化の反復情報、計算時間の情報を含むOptiStruct出力ファイル。cantilever_opti.femファイルの処理を行う際にフラグが立つワーニングおよびエラーに関しては、このファイルを確認すること。
cantilever_opti.res
HyperMeshバイナリ結果ファイル。
cantilever_opti.sh
反復計算が終了した段階での形状データが納められているファイル。各要素の密度値、空孔の大きさと角度を含む。このファイルは、最適化計算のリスタートに使用することができます。
cantilever_opti.stat
計算を完全に終了するために使用されたCPU、また、入力デックの読み出し、アセンブリ、解析および収束等のCPU情報が含まれています。
cantilever_opti_des.h3d
最適化結果を含むHyperViewバイナリ結果ファイル。
cantilever_opti_s#.h3d
線形静解析からの結果を含むHyperViewバイナリ結果ファイル。

結果の表示

要素密度の結果はすべての反復計算について、OptiStructからcantilever_opti_des.h3dファイルに出力されます。また、変位および応力の結果は、デフォルトで最初と最後の反復計算の各サブケースについて、cantilever_opti_s#.h3dファイルに出力されます(#はサブケースID)。

密度結果のコンタープロットの表示

  1. OptiStructパネルから、HyperViewをクリックします。
  2. ResultsツールバーでresultsContour-24をクリックし、Contour panelを開きます。
  3. Result typeをElement Densities[s]およびDensityに設定します。
  4. Averaging MethodをSimpleに設定します。
  5. Applyをクリックし、密度のコンターを表示します。
  6. AnimationツールバーでanimationFastForwardEnd-24をクリックし、Simulationリストから最終反復計算を選択します。
コンター図は、適用されている荷重および境界条件から得られた要素密度が示されています。

os_2070_step18
図 8.

要素密度のアイソバリュープロットの表示

アイソバリュープロットは、要素密度についての情報を提供します。アイソバリューは、一定の密度しきい値以上の要素すべてを保持しています。ソリッド設計領域を有するモデルについて、本機能は、密度結果を解析するための強力なツールとなります。
  1. ResultsツールバーでresultsIso-24をクリックし、Iso Valueパネルを開きます。
  2. Result typeをElement Densitiesに設定します。
  3. Show valuesをAboveにセットします。
  4. Applyをクリックします。
  5. Clipped geometryの下で、FeaturesTransparentを選択します。
  6. 密度しきい値を変更します。
    • Current value欄に0.3と入力します。
    • Current valueの下のスライダーを動かします。
    密度のしきい値を更新すると、モデリングウィンドウに表示されているアイソバリューもインタラクティブに更新します。このツールを使用して、OptiStructからの材料レイアウトおよび荷重のパスを見易くしてください。

os_2070_step19
図 9.