Phase 1:円筒ソリッド

ここでは、ソリッドモデルの線形静解析モデルを作成します。

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

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

モデルの読み込み

  1. File > Import > Solver Deckをクリックします。
    Importタブがタブメニューに追加されます。
  2. File typeにOptiStructを選択します。
  3. Filesアイコンfiles_panelを選択します。
    Select OptiStruct Fileブラウザが開きます。
  4. 自身の作業ディレクトリに保存したCylinder.femファイルを選択します。モデルファイルへのアクセスをご参照ください。
  5. Openをクリックします。
  6. Import、続いてCloseをクリックし、Importタブを閉じます。

モデルのセットアップ

材料特性の作成

コンポーネントコレクターの生成前に材料およびプロパティコレクターを生成します。

  1. Modelブラウザ内で右クリックし、Create > Materialを選択します。
    デフォルトのMATUSR 材料がエンティティエディターに表示されます。
  2. NemeにMATUSRと入力します。
  3. USUBIDを選択し、値1を入力します。
    さまざまなタイプの材料特性を定義できます。この値は、ユーザーサブルーチン内の変数iduに対応します。
  4. NDEPVARを選択し、値1を入力します。
    ユーザー定義の状態変数の数です。この値は、ユーザーサブルーチン内の変数nstate(*)に対応します。
    ヒント: このモデルでは熱荷重がないため、EXPANの前のボックスはチェックしないままにしてください。EXPANパラメータを定義すると、最後の1つ(ISO)、最後の3つ(ORTHO)、または最後の6つ(ANISO)のPROPi値が、対応する熱膨張係数として使用されます。デフォルトはISOです。
  5. GROUPを選択し、GRPと入力します。

    LOADLIBエントリのグループ引数で指定されるユーザー定義のグループ。このフィールドを使用して、対応するファイル(.dllまたは.so)を読み込むためのLOADLIBエントリを特定します。

  6. TMATUSR_PROPERTYに2を入力します。
    以下のようなテーブルが生成されます。


    図 1. MATUSR プロパティ
  7. 1行目に、[E] ヤング率として2.1E+05を入力します。
  8. 2行目に、[Nu] ポアソン比として0.3を入力します。


    図 2. MATUSR Entity Editor

ユーザー材料の定義

このステップでは、2つの材料プロパティ(EおよびNU)を受け入れ、解析で使用する構成材料モデルマトリックスを作成するよう、smatusrサブルーチンを設定します。詳細については、ユーザーズガイドユーザー定義の構造材料をご参照ください。
重要:
  1. Fortranコードの記述の際は、ガイドラインとシンタックスに適切に従う必要があります。
  2. SMATUSRサブルーチンは、問題が線形またはSMDISPである場合にのみ使用されます。
警告: サブルーチンや関数の名前および引数は変更しないでください。
  1. サンプルのフォルダーに移動し、umat_barebones.F Fortranファイルを開きます。
    これにより、usermaterialサブルーチンのプレースホルダーコード(このチュートリアルには無関係)と、必要最小限の初期smatusrサブルーチンが提供されます。以下のように、umat_barebones.Fファイルには、smatusrの必要最小限のサブルーチン定義が含まれているはずです。
    subroutine smatusr(  idu, nprop, prop, ndi, nshear, ntens,
         $                        smat, ieuid )
          !DEC$ ATTRIBUTES DLLEXPORT :: smatusr
          implicit none
    c----------------
    c --- Arguments 
    c----------------      
          integer igroup, nprop,idu, ieuid
          integer ndi, nshear, ntens     
          double precision prop(nprop), smat (*)
    c---------------------      
    c --- Local variables
    c--------------------- 
          integer i,j, iii, k
          double precision pe, pnu, pmu, rlamda
          double precision cjac(ntens,ntens
    重要: サブルーチンはsmatusrという名前にすることが重要です。
    このサブルーチンで使用される変数、パラメータ、および引数について、以下に説明します。
    !DEC$ ATTRIBUTES DLLEXPORT
    この属性のディレクティブオプションDLLEXPORTは、ダイナミックリンクライブラリの、それを使用するプロセスのためのインターフェースです。DLLEXPORTは、プロシージャまたはデータが別のアプリケーションまたはダイナミックライブラリにエクスポートされることを示します。
    implicit none
    IMPLICITステートメントは、指定内に出現する任意の文字(単一の文字、または文字の範囲)で始まる、すべてのユーザー定義名のタイプおよびサイズを指定します。IMPLICITステートメントでは、組み込み関数のタイプは変更されません。implicit noneステートメントは、デフォルトでi、j、k、l、m、およびnの文字で始まるすべての変数を整数として扱い、その他の変数を実引数として扱う、非常に古いFortranの機能を禁止するために使用されます。
    引数
    上で示したとおり、コードで使用されるデータ型に従って宣言されます。ローカル変数は、要件に応じて自由に変更、追加、削除、および使用できます。
    サブルーチンに渡される引数とその重要性については、で説明します。詳細については、ユーザー定義の構造材料をご参照ください。
    表 1. サブルーチン内の引数の説明
    引数 タイプ 入力 / 出力 詳細
    idu 整数 入力 (オプション)MATUSRバルクデータエントリのUSUBIDパラメータを介して定義されます。この引数は、同じユーザーサブルーチン内の異なるタイプの材料間で選択、定義するために使用されます。
    props ダブル(テーブル) 入力 このテーブルには、MATUSRエントリのPROPERTY継続行からのユーザー定義材料プロパティ情報がすべて含まれます。
    nprops 整数 入力 MATUSRエントリのPROPERTY継続行で定義された材料プロパティの総数。
    ndi 整数 入力 垂直応力成分の数(ソリッド要素の場合は3、シェル要素の場合は2)。
    nshear 整数 入力 せん断応力成分の数(ソリッド要素の場合は3、シェル要素の場合は1)。
    ntens 整数 入力 テンソル成分の数(ntens = ndi + nshear)。
    ieuid 整数 入力 要素ID。このサブルーチンは、各要素の積分点毎にコールされます。
    smat ダブル(テーブル) 出力 1D配列(21項)。これはcdevの対称部分です。これらはソリューション中に計算され、OptiStructに出力されて剛性マトリックスを形成します。
  2. ここで、MATUSRカードを使用して渡される入力材料プロパティ(PROPi)が、ローカル変数に割り当てられます。
          if(nprop.lt.2)then
             write(*,*)'*** ERROR in smatusr: nprop.lt.2 ***',nprop
          endif
    
          pe = prop(1)
          pnu = prop(2)
          pmu = 0.5d0*pe/(1.0d0+pnu)
          rlambda =(pe*pnu)/((1.0d0+pnu)*(1.0d0-2*pnu))
    1. このモデルでは、ユーザー定義の入力材料プロパティ(PROPi)は、2未満にすることはできません。2未満の場合、エラーが発生します。
    2. MATUSRPROPiを介して定義されたプロパティは、prop(i)変数を通じてサブルーチンで使用できます。したがって、peはヤング率として割り当てられ、pnuはポアソン比として割り当てられます。

      続いてラメ定数[lambda]および[mu]が算出されます。連続体力学において、ラメ定数は、応力とひずみの関係で生じる λ μ で示される2つの材料依存量です。 ラメ定数は、弾性定数Eと ポアソン比 v MathType@MTEF@5@5@+= feaagKart1ev2aaatCvAUfeBSjuyZL2yd9gzLbvyNv2CaerbuLwBLn hiov2DGi1BTfMBaeXatLxBI9gBaerbd9wDYLwzYbItLDharqqtubsr 4rNCHbGeaGqipu0Je9sqqrpepC0xbbL8F4rqqrFfpeea0xe9Lq=Jc9 vqaqpepm0xbba9pwe9Q8fs0=yqaqpepae9pg0FirpepeKkFr0xfr=x fr=xb9adbaqaaeGaciGaaiaabeqaamaabaabaaGcbaGaamODaaaa@36D1@ に依存します。一般に、 λ μ はそれぞれ、ラメの第1定数、第2定数と呼ばれます。

  3. 次に、ひずみの2次導関数に対する応力の2次導関数である構成モデルのヤコビアンマトリックス(cjacマトリックス)を初期化および定式化する必要があります。
    do i=1,ntens
             do j=1,ntens
                 cjac(i,j)=0
             enddo
             enddo
             do i=1,ndi
             do j=1,ndi
                 cjac(i,j)=rlambda
             enddo
             enddo
             do i=1,ndi
                 cjac(i,i)=cjac(i,i)+2.0d0*pmu
             enddo
    	  
             do i=ndi+1,ntens
                 cjac(i,i)=pmu
             enddo
    1. ソリッド要素の場合、ntens = 6(上記のとおり)、ヤコビアンマトリックスはcjac(6,6)になります。
    2. cjacマトリックスは対称であり、ラメ定数を使用して定式化されます。cjacマトリックスは、以下のようになります。
      (1) Cjac=[ λ+2μ λ λ 0 0 0 λ λ+2μ λ 0 0 0 λ λ λ+2μ 0 0 0 0 0 0 μ 0 0 0 0 0 0 μ 0 0 0 0 0 0 μ ] MathType@MTEF@5@5@+= feaagKart1ev2aaatCvAUfeBSjuyZL2yd9gzLbvyNv2CaerbuLwBLn hiov2DGi1BTfMBaeXatLxBI9gBaerbd9wDYLwzYbItLDharqqtubsr 4rNCHbGeaGqiVu0Je9sqqrpepC0xbbL8F4rqqrFfpeea0xe9Lq=Jc9 vqaqpepm0xbba9pwe9Q8fs0=yqaqpepae9pg0FirpepeKkFr0xfr=x fr=xb9adbaqaaeGaciGaaiaabeqaamaabaabaaGcbaGaam4qaiaadQ gacaWGHbGaam4yaiabg2da9maadmaabaqbaeqabyGbaaaaaeaacqaH 7oaBcqGHRaWkcaaIYaGaeqiVd0gabaGaeq4UdWgabaGaeq4UdWgaba GaaGimaaqaaiaaicdaaeaacaaIWaaabaGaeq4UdWgabaGaeq4UdWMa ey4kaSIaaGOmaiabeY7aTbqaaiabeU7aSbqaaiaaicdaaeaacaaIWa aabaGaaGimaaqaaiabeU7aSbqaaiabeU7aSbqaaiabeU7aSjabgUca RiaaikdacqaH8oqBaeaacaaIWaaabaGaaGimaaqaaiaaicdaaeaaca aIWaaabaGaaGimaaqaaiaaicdaaeaacqaH8oqBaeaacaaIWaaabaGa aGimaaqaaiaaicdaaeaacaaIWaaabaGaaGimaaqaaiaaicdaaeaacq aH8oqBaeaacaaIWaaabaGaaGimaaqaaiaaicdaaeaacaaIWaaabaGa aGimaaqaaiaaicdaaeaacqaH8oqBaaaacaGLBbGaayzxaaaaaa@6C8D@
      ここで、
      μ= E 2( 12ν ) MathType@MTEF@5@5@+= feaagKart1ev2aaatCvAUfeBSjuyZL2yd9gzLbvyNv2CaerbuLwBLn hiov2DGi1BTfMBaeXatLxBI9gBaerbd9wDYLwzYbItLDharqqtubsr 4rNCHbGeaGqiVu0Je9sqqrpepC0xbbL8F4rqqrFfpeea0xe9Lq=Jc9 vqaqpepm0xbba9pwe9Q8fs0=yqaqpepae9pg0FirpepeKkFr0xfr=x fr=xb9adbaqaaeGaciGaaiaabeqaamaabaabaaGcbaGaeqiVd0Maey ypa0ZaaSaaaeaacaWGfbaabaGaaGOmamaabmaabaGaaGymaiabgkHi TiaaikdacqaH9oGBaiaawIcacaGLPaaaaaaaaa@3FED@
      λ= Eν ( 1+ν )( 12ν ) MathType@MTEF@5@5@+= feaagKart1ev2aaatCvAUfeBSjuyZL2yd9gzLbvyNv2CaerbuLwBLn hiov2DGi1BTfMBaeXatLxBI9gBaerbd9wDYLwzYbItLDharqqtubsr 4rNCHbGeaGqiVu0Je9sqqrpepC0xbbL8F4rqqrFfpeea0xe9Lq=Jc9 vqaqpepm0xbba9pwe9Q8fs0=yqaqpepae9pg0FirpepeKkFr0xfr=x fr=xb9adbaqaaeGaciGaaiaabeqaamaabaabaaGcbaGaeq4UdWMaey ypa0ZaaSaaaeaacaWGfbGaeqyVd4gabaWaaeWaaeaacaaIXaGaey4k aSIaeqyVd4gacaGLOaGaayzkaaWaaeWaaeaacaaIXaGaeyOeI0IaaG Omaiabe27aUbGaayjkaiaawMcaaaaaaaa@45C5@
      E
      ヤング率
      v MathType@MTEF@5@5@+= feaagKart1ev2aaatCvAUfeBSjuyZL2yd9gzLbvyNv2CaerbuLwBLn hiov2DGi1BTfMBaeXatLxBI9gBaerbd9wDYLwzYbItLDharqqtubsr 4rNCHbGeaGqipu0Je9sqqrpepC0xbbL8F4rqqrFfpeea0xe9Lq=Jc9 vqaqpepm0xbba9pwe9Q8fs0=yqaqpepae9pg0FirpepeKkFr0xfr=x fr=xb9adbaqaaeGaciGaaiaabeqaamaabaabaaGcbaGaamODaaaa@36D1@
      ポアソン比
  4. この場合、ヤコビアン構成マトリックスは対称であるため、以下に示すように、21要素の下三角マトリックスがsmat配列に格納されます。
        k=0
          do j=1,ntens
          do i=j,ntens
                k=k+1
                smat(k)=cjac(i,j)
          enddo
          enddo
          
          return
          end
    注: サブルーチンは、最後に、さらなる計算のためにOptiStructsmat配列を返します。

外部ライブラリの構築

WindowsまたはLinuxで、Fortranコードの外部ダイナミックライブラリをエクスポートするには、ユーザーズガイド外部ライブラリの構築をご参照ください。
注:
  1. 必要なときに簡単にアクセスできるよう、.dllまたは.soファイルは同じリポジトリに保存します。
  2. ダイナミックライブラリのパスは、LOADLIBカードに記載されているものと同じにする必要があります。
  3. 問題を解析する前に、ライブラリパス、名前、および拡張子が正しいことを確認します。ライブラリがコンパイルされ、問題と適切にリンクされていることも確認します。
以下に、LinuxでのGNU Fortran Complierを使用したumat.Fファイルのコンパイルの例を示します。
# rename the Fortran file for convenience
mv umat_barebones.F umat.F   # optional       
# compile and create object files
f95 -fPIC -c umat.F -o umat.o
# create the final shared library
ld -shared umat.o -o umat.so
# The shared library “umat.so” can now be used via LOADLIB entry in the OptiStruct run

PSOLIDプロパティの作成

  1. Modelブラウザ内で右クリックし、Create > Propertyを選択します。
    デフォルトのPSOLIDプロパティがエンティティエディターに表示されます。
  2. NameにPSOLIDと入力します。
  3. Card ImageにPSOLIDを選択し、確認のYesをクリックします。
  4. Materialに、Unspecified > Materialをクリックします。
  5. Select Materialダイアログで、MATUSRを選択します。
  6. OKをクリックします。
    MATUSRシェルプロパティがPSOLIDとして生成されました。材料情報はこのプロパティに関連付けられています。


    図 3. PSOLID要素のプロパティ

SPC荷重コレクターの作成

このステップでは、2つの荷重コレクターが作成されます。

  1. Modelブラウザ内で右クリックし、Create > Load Collectorを選択します。
    デフォルトの荷重コレクターテンプレートがエンティティエディターに表示されます。
  2. Nameにspcと入力します。
  3. Colorをクリックし、カラーパレットから色を選択します。
    新しい荷重コレクターspcが生成されます。
  4. 2つ目の荷重コレクターの名前forceをNameに入力します。
  5. Colorをクリックし、カラーパレットから色を選択します。
    新しい荷重コレクターforceが生成されます。


    図 4. 荷重コレクターの作成

拘束の作成

ここでは、円筒の一端に拘束を作成します。

  1. Modelブラウザspcを右クリックしてMake Currentを選択します。
  2. BCs > Create > Constraintsをクリックします。
    Constraintsパネルが開きます。
  3. entity selectionスイッチをクリックし、メニューからnodesを選択します。
  4. 円筒の一端(下部)の節点を選択し、nodes > by faceをクリックします。
    節点が選択されています。


    図 5. 円筒の下部の拘束に対する節点の選択
  5. すべての自由度をアクティブにするか、拘束します。
    注: チェックの付いた自由度が拘束されます。
  6. createを選択します。
    拘束が作成されます。2つの拘束の記号(三角)がグラフィックエリアの選択された節点の所に現われます。拘束の記号の横には数字が書かれていますが、これは拘束された自由度を示しています。
  7. size欄に1.0と入力します。
    注: グラフィックス領域内の拘束の記号の大きさが変わります。
  8. returnをクリックし、メインメニューに進みます。

荷重の付与

このステップでは、円筒の他方の端に荷重を付与する方法を示します。

  1. Modelブラウザforceを右クリックしてMake Currentを選択します。
  2. BCs > Create > Forcesをクリックします。
    Forceパネルが開きます。
  3. entity selectionスイッチをクリックし、メニューからnodesを選択します。
  4. 円筒の他方の端の節点を選択し、nodes > by faceをクリックします。
    節点が選択されています。


    図 6. 円筒の上部の荷重に対する節点の選択
  5. coordinatesにglobal systemを選択し、Y-axisを選択します。
  6. magnitude =に10と入力します。
  7. load types =にFORCEを選択します。


    図 7. 選択した節点の荷重の大きさとベクトルの選択
  8. relative size欄に100.0と入力します。
    注: グラフィックス領域内の拘束の記号の大きさが変わります。
  9. returnをクリックし、メインメニューに進みます。

線形荷重ステップの作成

ここでは、OptiStructサブケース(荷重ステップとも呼ばれる)を作成します。

  1. Modelブラウザ内で右クリックし、Create > Load Stepを選択します。
    デフォルトの荷重ステップテンプレートがエンティティエディターに表示されます。
  2. NameにLinearと入力します。
  3. Analysis typeを展開し、Linear Staticを選択します。
  4. SPCにUnspecified > Loadcolをクリックします。


    図 8. 線形静解析荷重ステップ
  5. Select Loadcolダイアログでを選択し、OKをクリックします。
  6. LOADにUnspecified > Loadcolをクリックします。
  7. Select Loadcolダイアログでを選択し、OKをクリックします。

共有ライブラリの選択

  1. AnalysisページからControl Cardsをクリックします。
  2. Control CardsにLOADLIBを選択します。


    図 9. LOADLIBカードの割り当て
  3. Number_Of_Loadlibsに1を入力します。
  4. TYPEにMATUSRを選択します。
  5. GROUPにgrpと入力します。
  6. 上記のように、.dllまたは.soファイルの場所を入力します。

ジョブのサブミット

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

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

結果の表示

変位と応力の結果は、線形静解析ではデフォルトでOptiStructから出力されます。続くステップでは結果をどのようにHyperViewに表示させるかを記します。

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

  1. メッセージANALYSIS COMPLETEDHyperWorksSolver Viewウィンドウに表示されたら、Resultsをクリックします。
    HyperViewが起動され、結果が読み込まれます。
  2. Animation ModeをLinearanimationLinear-24に設定します。
  3. ContourツールバーアイコンresultsContour-16をクリックします。
  4. 変位を選択します。表示する成分を選択し、Applyをクリックします。
  5. 結果をプロットします。
  6. ContourツールバーアイコンresultsContour-16をクリックします。
  7. Result typeの下の1つ目のプルダウンメニューで、Element Stresses (2D & 3D) (t)を選択します。
  8. Result typeの下の2つ目のプルダウンメニューを選び、vonMisesを選択します。
  9. Averaging methodにSimpleを選択し、Applyをクリックします。


    図 11. Result typeとしてElemental Stresses、Averaging methodとしてSimpleを選択したコンター
    2つの材料モデリングアプローチ(MAT1MATUSR)の間で良い一致が得られています。


    図 12. MATUSRカード(左)とMAT1カード(右)との比較結果のアイソメトリックビュー
  10. File > Exitをクリックし、HyperViewを離れます。