Coreform IGA for Abaqus
Coreform公式ドキュメントを基にした日本語版です。技術仕様・対応状況の最終的な基準は公式英語版です。

フィーチャに向けた局所細分化

局所細分化は現在、 実験的な 機能です。細分化設定はスクリプトインターフェースから作成します。Coreform IGA ツールセットには、将来グラフィカルな設定ダイアログを追加する予定です。

1 説明

この例題では、小さな幾何学的特徴の周辺に向けて immersed Coreform IGA mesh を局所的に細分化します。前の 穴あき薄板 例題をそのまま引き継ぐため、先にそちらを完了してください。モデル、メッシュ、ジョブを再利用します。

この薄板の応力集中は穴の縁で生じるため、そこにメッシュ分解能を集中させるのが効果的です。背景メッシュ全体を細かくすれば解は改善しますが、応力がほぼ一様な遠方場まで含め、全域で要素数が増えてしまいます。

局所細分化では、背景メッシュを 穴の近傍だけ細分化します。Abaqus/CAE で穴の surface に名前を付け、その set を参照する refinement を mesh に追加します。メッシャーは、その surface と交差する背景セルを、指定した分解能に達するまでレベルごとに細分化します。

2 局所細分化の仕組み

構成要素の関係は次のとおりです。

  1. Abaqus/CAE で、対象形状の face を含む 名前付き Assembly Set を作成します。
  2. 次に1つの refinement を Part の Coreform IGA mesh に追加し、その set 名を region として指定します。
  3. Coreform IGA job が <job>.cf ファイルを書き出すと、set と refinement の両方が、そのファイルの geometry 定義へ出力されます。
  4. Coreform IGA の meshing step はそれらを読み取り、階層的な spline basis を構築します。

refinement は mesh 定義の一部であり、model database に保存されます。そのため、 .cf ファイルを再生成したり job を再実行したりしても保持され、model database を保存して開き直した後の .cae ファイルにも残ります。

その後の trimming、Abaqus solve、可視化は、均一メッシュの場合と同じ流れで動作します。

3 Abaqus/CAE で対象形状に名前を付ける

穴あき薄板例題の model database を開きます。adaptivity 固有のモデル操作は Assembly moduleだけです。穴の内側の円筒面を含む set を作成します。

  1. model tree で Assembly を展開し、次に Sets をダブルクリックします.
  2. 続いて Create Set ダイアログで、名前に hole を入力し、 Continue をクリックします.
  3. をクリックします。viewport で穴の内側の円筒面を選択し、 Done をクリックします.

をクリックします。同等の scripting-interface コマンドでは、穴を含みつつ薄板外周面までは含まない bounding box を使って穴面を選択します。

inst = mdb.models["PWH-Kt"].rootAssembly.instances["Plate-1"]
hole_faces = inst.faces.getByBoundingBox(
    xMin=-1.1, xMax=1.1,   # the hole has radius 1 at the origin;
    yMin=-1.1, yMax=1.1,   # the plate's outer faces extend to x = +/-5, y = +/-2.5
    zMin=-1.0, zMax=1.0,
)
mdb.models["PWH-Kt"].rootAssembly.Set(faces=hole_faces, name="hole")

この set は Part ではなく Assemblyに作成してください。Assembly set は修飾されない名前(hole)で出力されます。一方、Part-level set には instance 名が前置されるため、 sets=["hole"] では一致しません。

4 refinement の追加

refinement は、元の例題で作成した Coreform IGA mesh に追加します。 Plate-1 instance は dependent なので、その mesh は Plate Part上にあります。Abaqus/CAE の command line interface で次を実行します。

from coreform.mesh import CadEntitiesRegion

mesh = mdb.models["PWH-Kt"].parts["Plate"].customData.CoreformIGA.mesh

mesh.Refinement(
    "hole_edge",
    level=2,
    region=CadEntitiesRegion(sets=["hole"], offset=0.1),
)
mesh.setValues(refinementBalance="two_to_one")
  • "hole_edge" は refinement の名前です。任意に決められますが、同一 mesh 内で一意でなければなりません。model file では instance 名が前置された refinement label になります(Plate-1_hole_edge).
  • level=2 は2レベルまで細分化します。各レベルで element size は半分になるため、穴縁の面内 element size は 0.3 から 0.075.
  • sets=["hole"] は対象 region を指定します。指定した名前付き CAD surface に接する cell を細分化します。複数の set を指定することもできます。
  • offset=0.1 は対象範囲を広げます。surface が横切る cell だけでなく、surface からその距離以内の cell も細分化します。背景 cell の約3分の1程度にすると、単独の粗い cell が surface にかすめるのを避けつつ、細分化帯を形状に沿わせやすくなります。surface に直接接する cell だけの帯にする場合は 0.0 を指定します。
  • refinementBalance="two_to_one" は 2:1 admissibility を強制します。region による細分化後、face を共有する隣接 element のレベル差が1を超えないよう必要な cell を追加細分化し、element size の遷移を滑らかにします。region の指定どおりの mesh をそのまま使う場合は "none" を指定します。

編集と削除も同様です。 mesh.setRefinementValues("hole_edge", level=3) は既存の refinement をその場で変更し、 mesh.refinementByName("hole_edge") は設定を読み戻し、 mesh.deleteRefinement("hole_edge") は refinement を削除します。

4.1 レベルごとの細分化範囲の調整

各 refinement は1つの region を持ち、その refinement 自身の level まで同じ region が適用されます。粗いレベルでは広く、最深レベルでは surface 近傍だけに絞りたい場合は、level ごとに refinement を1つずつ追加します。

mesh.Refinement("hole_L1", level=1, region=CadEntitiesRegion(sets=["hole"], offset=0.6))
mesh.Refinement("hole_L2", level=2, region=CadEntitiesRegion(sets=["hole"], offset=0.3))

4.2 その他の region

対象形状に使いやすい名前付き surface がない場合は、純粋に幾何学的な2種類の region を利用できます。

from coreform.mesh import SphereRegion, BoxRegion

SphereRegion(center=(0.0, 0.0, 0.0), radius=1.5)              # a ball
SphereRegion(center=(0.0, 0.0, 0.0), radius=1.5, inner_radius=0.8)  # a spherical shell
BoxRegion(min_corner=(-1.1, -1.1, -1.0), max_corner=(1.1, 1.1, 1.0))

5 メッシュ生成と解析

ジョブ Job-PWH-Kt を Coreform IGA for Abaqus Job Managerから実行します。元の例題と手順は同じです。job は refinement を .cf ファイルへ書き出し、meshing step が自動的に読み取ります。その後の interop、Abaqus solve、post-processing は均一メッシュの場合と同様に進みます。

meshing log には、各 Part の各 level で細分化された cell 数と、2:1 balancing により追加細分化された cell 数が報告されます。

6 期待される結果

細分化 mesh では、追加自由度が穴周辺の帯状領域に集中します。level-2 element が穴縁の応力勾配を解像しつつ、薄板の遠方場は粗い背景 mesh の分解能のまま維持されます。

局所細分化 mesh における穴近傍の von Mises 応力です。element 境界を見ると、2段階の balanced refinement が穴に沿って配置され、穴の上下に生じる応力集中が最細 element で解像されていることが分かります。

元の例題の line probe に沿う最大主応力を均一メッシュの結果と比較してください。局所細分化では、全域を同じ細かさにした場合より大幅に少ない要素数で、穴縁のピークをより鋭く捉えられます。