Implicit Domain Meshing
概要
Implicit Domain Meshing[13]を使用したリメッシュでは、レベルセット関数を適用する領域のメッシュを、レベルセット関数のゼロ等位面に沿うように変形・再生成します。トポロジー最適化においては多くの場合、レベルセット関数のゼロ等位面が材料境界となるため、これは大まかに言いかえると「材料境界となる位置にちょうどメッシュの節点・エッジが配置されるようにリメッシュする」手法です。
EMSOptimizerにおいてはImplicit Domain Meshingの実行ツールとしてmmg(mmg2d_O3, mmg3d_O3)を使用します[15]。リメッシュ処理はmachine.yaml > use_implicit_domain_meshingコンフィグがTrueの時に自動実行されます。詳細な設定についてはユーザガイド > 機器設定(machine.yaml)をご覧ください。
mmg実行ファイルはEMSOptimizerのフォルダ直下に格納されています。
フォルダ外から実行する場合は環境変数MMG2D_EXE_PATH(2次元)およびMMG3D_EXE_PATH(3次元)にmmg実行ファイルへのパスを設定してください。
Implicit Domain Meshing利用時、プロジェクトに格納するメッシュファイルは三角形メッシュのみで構成されている必要があります。
また、Implicit Domain Meshingにて生成されるメッシュの境界線の再現精度は元のメッシュファイルの解像度(メッシュの細かさ)に依存します。材料境界をより正確に表現したい場合は、メッシュファイルの解像度を上げることを検討してください。
Implicit Domain Meshing適用例
トポロジー最適化(NGnet on/off法) Implicit Domain Meshing有のDmodel形状例。材料境界が滑らかであることが分かる。メッシュ節点数は約3000。

参考に、同じレベルセット関数に対するImplicit Domain Meshing無のDmodel形状例。材料分布は同様だが、固定メッシュに対して計算しているため材料境界が粗くジャギー。メッシュ節点数は約4000。

より詳細な説明
on/off法ベースのトポロジー最適化においては通常、固定されたメッシュの各要素に対して材料種のon/offを設定します。しかし、材料境界とメッシュの節点・エッジは必ずしも一致しないため、メッシュが粗いほどレベルセット関数の概形と結果形状との間に誤差が生じたり、材料境界がジャギーになりやすくなります。これを回避するには設計領域のメッシュを細かくすることが考えられますが、メッシュを細かくするほど計算時間は増大します。
一方、Implicit Domain Meshingを使用すると原理的に滑らかな材料境界が得られます[10]。要求精度以上に細かなメッシュを用いた解析が不要となるため、結果的に解析時間の短縮に繋がることもあります。代わりに、形状ごとにリメッシュ処理が必要であったり、EMSOptimizerにおいてはtarget_ids_and_onoffに2段階のレベルのみ設定可能であるといった制約事項があります。
また、レベルセット関数が複雑なゼロ等位面を含む場合、ゼロ等位面周りにメッシュが集中し、結果としてメッシュが細かくなりすぎる可能性があります。ただし、この現象はmachine.yaml > hausd_ratioおよびhmin_ratioを大きめの値に設定することによりある程度抑制可能です。