2

次のコードを使用して、PyGmsh を使用して有限要素メッシュを生成しようとしています。

import pygmsh

geom = pygmsh.opencascade.Geometry(
    characteristic_length_min=0.1,
    characteristic_length_max=0.1,
    )

rectangle = geom.add_rectangle([-1.0, -1.0, 0.0], 2.0, 2.0)
disk1 = geom.add_disk([-1.2, 0.0, 0.0], 0.5)
disk2 = geom.add_disk([+1.2, 0.0, 0.0], 0.5)
disk3 = geom.add_disk([0.0, -0.9, 0.0], 0.5)
disk4 = geom.add_disk([0.0, +0.9, 0.0], 0.5)

union = geom.boolean_union([rectangle, disk1, disk2])
diff = geom.boolean_difference([union], [disk3, disk4])

mesh = pygmsh.generate_mesh(geom, dim=2)

次のメッシュを生成できます。

ここに画像の説明を入力

ただし、次のようなメッシュにクラックを追加したいと思います。

ここに画像の説明を入力

ここでの亀裂は単なる例であり、メッシュ プロセスの前に定義する必要があります。2 つの点 ( geom.add_point()) と線 ( geom.add_line()) を作成してgeom.boolean_difference()から、最終的なジオメトリと線/クラックの間を作成しようとしましたが、うまくいきません。

どんな助けでも大歓迎です。

編集

このタイプのメッシュ生成の目的は、ボディの物理的な亀裂をシミュレートすることです。メッシング プロセスでは、メッシュの要素接続によって亀裂をモデル化できます (つまり、要素は亀裂面を作成するために異なる節点を持つ必要があります)。例: 荷重を適用する前に、クラックが閉じられます。

ここに画像の説明を入力

荷重を適用した後、要素の接続性により次のことが可能になるため、亀裂が開きます。

ここに画像の説明を入力

4

2 に答える 2

1

これは、その領域で非常に狭い長方形をモデル化することで実現できます。1e-10 のような次元を簡単に指定できます。非常に小さな円をモデル化することで、ノードを 1 点で崩壊させるクラックの先端もモデル化しました。それはかなりうまくいきます。

また、現在これのためのプラグインがあります。指定したクラック ライン/サーフェスでノードを自動的に分離します。

于 2021-04-09T09:04:49.143 に答える