メッシュ細分化
CUBITは、いくつかの方法を提供しています。 合意 既存のメッシュを分割する。 コンフォーマルなメッシュ細分化は細分化の後にメッシュにノードを吊るすことを許さず、むしろコンフォーマルなメッシュ細分化は既存のメッシュに移行する要素を提供します。 地元とグローバルメッシュ細分化の両方で操作が提供されます。
グローバルメッシュ細分化
細分化サーフェスと細分化ボリュームコマンドは、全サーフェスまたはボリュームメッシュをグローバルに細分化する能力を提供します。 グローバル細分化は、全体のボディがコマンドに含まれている場合にのみ使用されます。 この区別は、グローバルな細分化アルゴリズムが各要素を局所細分化よりも局所細分化より少ない要素に分けているため、重要であるかもしれない。 コマンドの合成は、
Refine Volume <range>numsplit<int>
Refine Surface <range>numsplit<int>
numsplit オプションは、何回要素を分割するかを指定します。 1の値は、それぞれの三角形と四角形を4つの部分に分け、それぞれのテトラヘドロンとヘクサヘドロンは8つの部分に分けます。 各要素のグローバル細分化の例は、以下に示されています。
|
オリジナルメッシュ |
NumSplit = 1 |
NumSplit = 2 |
|
オリジナルメッシュ |
NumSplit = 1 |
NumSplit = 2 |
|
オリジナルメッシュ |
NumSplit = 1 |
NumSplit = 2 |
|
オリジナルメッシュ |
NumSplit = 1 |
NumSplit = 2 |
図1 単一の細分化の例は、それぞれのメッシュのエンティティのために
細分化はジオメトリまたは「メッシュフィーチャ」で
CUBITはまた局所細分化の方法をジオメトリまたはメッシュの「フィーチャ」の周りに提供します。 個々の要素またはグループの要素は、以下の合成を使用してこの方法で精製することができます。
Refine {Node|Edge|Tri|Face|Tet|Hex} <range>
[NumSplit<int = 1>|Size <double> [Bias <double>]]
[Depth <int>|Radius <double>] [Sizing_Function]
[Smooth]Refine {Vertex|Curve|Surface} <range>
[NumSplit<int = 1>|Size <double> [Bias <double>]]
[Depth <int>|Radius <double>] [Sizing_Function]
[Smooth]
これらのコマンドを使用するには、まずメッシュまたはジオメトリのエンティティを選択し、細分化を実行したい。 細分化は、すべてのメッシュと関連するエンティティに適用され、またはそのエンティティの近くにあります。 すべてのキーワードは、モデル内のすべての要素を均一に細分化するために使用することができます。
以下は細分化のオプションの説明です。
細分化の操作が細分化地域の要素に適用される時数を定義する。 単一またはグローバルな細分化(細分化)の場合、モデル内のすべての要素が精製される場合、NumSplit 1 の値は、それぞれの三角形と四角形を4つの要素に分け、それぞれのテトラヘドロンとヘクサヘドロンは8つの要素に分けます。 2 の numsplit は、それぞれ 9 と 27 の ' 要素' を意味します。 単一の細分化の場合、要素の総数は次のとおりである。
- NE = NI * (NumSplit+1)^Dim
どこで ノー 「要素」の最終数は、 ニー 「要素」の最初の数と、 ディム 2Dと3Dの要素の2または3である。
細分化のために要素の一部のみが選ばれた場合、精製された要素と非精製された要素の間の境界にある要素は要素の大きさの移行を可能にするために分割されます。 移行パターンは、地元の「フィーチャ」と周囲の要素によって異なります。 ヘクサヘドルの不均一の細分化の場合、単一の細分化ゾーン内の各要素は、8ではなく27要素に分けられます。 これにより、精製された要素と未精製の要素の間の移行により柔軟性が高まります。
サイズとバイアスのオプションは、特定の要素サイズが知られている場所で望ましい場合に有用です。 これは頂点またはカーブの周りに地元で細分化するために使用されるかもしれない。 要素のサイズがモデル上の既存の要素サイズに合致するために変更される速度を定義するために「サイズオプション」を使用することができます。 図2では、サイズとバイアスのオプションを頂点の周りに使用する例を示しています。 Bias の有効な入力値は 1.0 を超え、要素サイズの最大変更を 1 要素から次の要素に表示します。 細分化は差別的な操作であるため、サイズとバイアスのオプションは、望ましい入力値にのみ近づくことができます。 これは要素の大きさにおける明らかな中断を引き起こす可能性があります。 デフォルトの柔らかいオプションを使用すると、この効果を軽減することができます。 また、サイズのオプションがNumSplitのオプションのみであることに留意する必要があります。 NumSplit または Size を指定することができますが、両方ではありません。
|
オリジナルメッシュ |
Bias=2.0 |
Bias=1.5 |
図2 サイズとバイアスのオプションを頂点で使用する例です。
深いオプションは、ユーザーが指定されたエンティティから遠く離れた要素の数を指定することを可能にします。 デフォルト深さは1です。 図3では、細分化がノードでオプションの深さを使用する例が示されています。
|
オリジナルメッシュ |
Depth=0 |
Depth=1 |
図3 例えば、ノードで細分化を広げるためにノードからどのくらいの距離をコントロールするために「深いオプション」を使用すること。
細分化をどのように広げるかを説明するために要素の数を指定する代わりに、実際の半径を入力することができます。 半径の効果は、指示された半径の範囲内にある「要素」が精製されることを除いて、図3に示されているものと同様である。 移行要素は、この地域の外で、既存の要素に移行するために入力されます。
細分化はsizing functionでも制御できます。CUBITはsizing functionを使用してメッシュの局所密度を制御します。Exodusファイルからscalar field dataをインポートする方法など、sizing functionを設定する複数のオプションがあります。このオプションを使用するには、細分化対象のsurfaceまたはvolumeへあらかじめsizing functionを指定する必要があります。次を参照してください: アダプティブメッシング サイズ機能を定義する方法について説明します。
細分化操作のデフォルトモードは、NOTがスムージングを実行し、要素を分割した後です。 多くの場合、品質を向上させるためにモデルにスムージングを行う必要があるかもしれません。 柔らかいオプションは、この能力を提供します。
三角形の細分化の定期性のチェック
三角形の細分化のデフォルト行動は、基本的な1>4テンプレートを使用して要素品質を最大化しようとする。 これは時には不規則なパターンに至る可能性があり、1つまたは複数のエッジが交換される場合があります。 三角形の細分化パターンの定期性を確保するために、品質に関係なく、フォロワー設定を使用することができる。
-
Set Triangle Refine Regular {on|OFF}
六面体細分化葉の入力で
細分化を六面体のメッシュを使用するためのいくつかのツールは、CUBITで利用できます。
ジオメトリフィーチャでの細分化
次のコマンドは、モデルの1つまたは複数のジオメトリの「フィーチャ」に関して、細分化に追加のコントロールを提供します。
既存の六面体メッシュは、次のコマンドを使用してジオメトリフィーチャ位置で細分化できます:
Refine Mesh Volume <id> Feature {Surface | Curve | Vertex | Node} <id_range> Interval <integer>
このコマンドは、特定の「フィーチャ」の周りにメッシュを精製し、六面体要素の葉を追加します。 これらの葉は、サーフェスのための飛行機、カーブのためのシリンダー、頂点のためのスペースとして一般化することができる。 ☆ ☆ ☆ ☆ interval キーワードは「フィーチャ」から遠く離れたインターバルの数を指定し、六面体要素の新しい表を入力します。 このコマンドには六面体要素の単一の葉が六面体のメッシュに挿入されます。
図4は、このコマンドの例を示し、その細分化が実行される「フィーチャ」がカーブである。 この場合、選ばれたインターバルは、2. これは、要素2インターバルがカーブから遠く離れていることを示した。

図4 細分化の例をカーブに
パスに沿った細分化
六面体メッシュは、特定のノードから、広がるパスに沿って、次のコマンドを使用して精製することができます。
Refine Mesh Start Node <id> Direction Edge <id> End Node <id> [Smooth]
図5はswept meshとその断面を示します。左側の断面図では、start nodeからend nodeまでメッシュ内を伝播したパスを示しています。このパスは、図5に示すdirection edgeで指定された方向へ、エッジチェーンに沿って投影されます。start nodeとend nodeは同じsweep layer上にある必要があります。また、この細分化手順ではボリュームのmeshing schemeをsweepに設定する必要があります。smoothキーワードを指定すると、細分化完了後にメッシュがスムージングされます。

Figure 5. Refining a Mesh Along a Path
細分化六面体要素シート
1つ以上のhex sheet内の要素を細分化するには、次のコマンドを使用できます:
Refine Mesh Sheet [Intersect] { Node <id_1> <id_2> | Edge <id_range> } { Factor <double> | Greater_than <size> } [Smooth] [in volume <id_range> [depth <num_layers]]
☆ ☆ ☆ ☆ node そして、 エッジ キーワードは六面体要素の表(s)を精製するために使用されます。 ノードのオプションが選択された場合、1つのノードのカップルだけを入力できます(図6を参照)。 エッジのオプションを選択した場合、1つまたは複数のエッジを入力できます(図7を参照)。

Figure 6. Refine mesh sheet node 796 782 greater_than 6

Figure 7. Refine mesh sheet edge 1584 1564 1533 1502 1471 greater_than 6
☆ ☆ ☆ ☆ 要因 そして、 greater_than これらのキーワードは、選択したhex sheetの細分化基準を指定します。factorキーワードを使用するとhex sheet内の最小エッジ長を求め、その長さ×factorより長いエッジを細分化します。greater_thanキーワードを使用すると、指定サイズより長いエッジを細分化します。
☆ ☆ ☆ ☆ intersect キーワードはオプションです。 それは、複数の六面体要素の葉をより簡単に定義するために使用されます。 インターセクトキーワードを入力すると、ノードとエッジキーワードは、シートの代わりにコードを定義するために使用されます(コードは3次元シートの2次元同等です)。 コードはノードまたはエッジと関連するサーフェスに限定され、コードを交差するすべての葉は細分化に選択されます(図8を参照)。 ノードキーワードがオプションと共に使用される場合、ノードはメッシュの「表面」にエッジを定義する必要があります。

Figure 8. Refine mesh sheet intersect edge 1499 greater_than 6
☆ ☆ ☆ ☆ smooth キーワードもオプションです。 柔らかいキーワードを入力すると、精製された要素は「要素品質」を改善しようとする試みで柔らかくなります。 図9は、柔らかいキーワードを追加して、図8と同じコマンドを表示します。 スムージングは、状況に応じて有益であるかもしれないし、有益ではないかもしれない。

Figure 9. Refine mesh sheet intersect edge 1499 greater_than 6 smooth
方向細分化
mesh sheet refinementは、特定方向にメッシュを細分化する用途にも使用できます。これにより異方性を制御できます。細分化に使用するsheetを指定するショートカットとして、次のコマンドを使用できます。
Refine Volumes <id_range> using {Plane <options> | Surface <id_range> | Curve <id_range> } [ Depth <num_layers> ] [ Smooth ]
指定されたボリュームは、どの六面体要素が精製できるかを示しています。 移行層は、指示されたボリュームを取り巻く六面体要素から作られます。 もし、The depth オプションが使用され、指定されたボリューム周辺の六面体要素の追加層が細分化地域に含まれる。 後ろは、 使用する オプションなら、 plane オプションは使用され、ボリュームのすべてのエッジが平面(小さな許容差)と並行して使用され、細分化の葉を指定するために使用されます。 もし、The surface あるいは curve オプションは代わりに使用され、サーフェスまたはカーブのすべてのエッジが使用されます。
たとえば、図10と11では方向細分化が平面のオプションを使用して表示されます。 メッシュを図10から図11に変換するために使用されたコマンドは以下の通りです。
refine vol 2 using plane xplane depth 1

Figure 10. Starting mesh

Figure 11. Directional result of refinement resulting from using the plane option on the refinement command.
方向細分化は、いかなるレベルの異方性を減らすか創造するために、反復的に使用することができる。 これは細分化コマンドの方向をイーテラティブに適用することによって行われます。 方向細分化の第二の「繰り返し」は、同じコマンドを再度発行することによって実施することができます。 しかし、「要素品質」を向上させるためには、平面と並行して細分化を実行することをしばしばお勧めします。 たとえば、図11のメッシュを入力として使用すると、次のコマンドが図12のメッシュを生成します。
refine mesh sheet edge ( at 4.5 5 5 ordinal 1 ) factor 0
refine vol 2 using plane xplane depth 1

Figure 12. A 2nd iteration of direction refinement is applied.
六面体要素レイアウト
hex meshの細分化は通常hex sheetの挿入によって行うため、指定sheetまたはsheet群を描画するツールが用意されています。
このコマンドは六面体要素の表を引き出し、エッジまたはノードのカップルによって定義されます。
Draw Sheet {Edge <id> |Node <id_1> <id_2>}[Mesh [List]] [Color <color_name>] [Gradient]
次のコマンドは、六面体要素を定義するために交差する3つの葉を引き出します。 これらの葉は緑、黄色、赤に描かれています。 特定の葉を描くには、その色をコマンドに記載します。
Draw Sheet Hex <id> [Green][Yellow][Red][Mesh [List]] [Gradient]
両コマンドの'gradient'キーワードは、sheetに平行な対向hex face間距離に応じてsheetをgradient shadingで描画します。
'mesh'キーワードはhex sheet内のhexを描画します。'list'キーワードも指定すると、sheet内のhex IDを一覧表示します。
局所細分化四面体要素、三角形、エッジ
局所細分化の四面体要素、三角形、およびエッジは、個々の細分化のエンティティまたは細分化によって利用可能な厚さ方向テストのユーザー指定数を保証するために提供されます。
単一エンティティの細分化
局所細分化の四面体要素、三角形、エッジが利用可能です。 細分化の三角形は三角形の入り口にノードを入力し、3つの新しい三角形がこのノードに接続されます。 オリジナル三角形が削除されました。 細分化の三角形へのコマンドは次のとおりです。
Refine Local Tri <tri_id_list>
細分化がエッジであるとき、ノードは、2つの三角形と4つの新しい三角形の間にオリジナルのエッジを分割し、新しいノードに接続します。 エッジを細分化するためのコマンドは以下の通りです。
Refine Local Edge <edge_id>
四面体要素をエッジに分けると、四面体要素はノードによって分けられ、その後、オリジナルのエッジに付属するすべての四面体要素は、新しいノードを通過する三角形を通じて2つに分けられます。 他のすべての隣接するノードとエッジは操作によって変更されません。 メッシュの内部に四面体要素のエッジは明確に表現されていないので、コマンドはエッジを定義するために2つのノードを取る。 四面体要素を細分化するためのコマンドはエッジです。
Refine Tet_edge Node <node1_id> <node2_id>
N四面体要素厚さ方向細分化
Cubitは、ユーザーによって指定された四面体要素厚さ方向の数を保証する能力を提供します。 この機能は、既存の四面体要素メッシュでメッシュ細分化を使用することを目的としています。 ユーザーは、薄い地域を定義するジオメトリまたはメッシュを指定し、望ましい四面体要素の厚さ方向の数と細分化アルゴリズムがこの基準を満たすまで実行されます。 この文脈における四面体要素厚さ方向の数はメッシュエッジ厚さ方向の数として解釈され、アルゴリズムは細分化を続けるまで、メッシュエッジパスは、より少ないメッシュを含む薄い地域を通して存在しない。 「エジ」は、ユーザーが指定した番号より。 これを行うためのコマンドは、
Refine min_through_thickness <val> source {surface|node|tri|nodeset|sideset|block} <id_range> target {surface|node|tri|nodeset|sideset|block} <id_range> [anisotropic] [single_iteration] [dont_fill_in_gaps]
さまざまなオプションが下記に記載されています。
異方性: このオプションを指定すると、sourceおよびtargetエンティティに対しておおむね法線方向のエッジだけを細分化します。その結果、異方性の細分化になります。通常、sourceとtarget上のメッシュは影響を受けません。このオプションを指定しない場合、細分化は等方的になり、より広く伝播しますが、細分化領域から非細分化領域への遷移は滑らかになりやすくなります。
dont_fill_in_gaps: このオプションを指定すると、アルゴリズムは細分化領域を拡張しません。領域を拡張すると、細分化されない小さなメッシュ領域(斑点状の残り)を避けやすくなります。この設定は等方細分化時("anisotropic"オプションを使用しない場合)のみ有効です。
single_iterationこのオプションがコマンドに指定された場合、アルゴリズムはmin_through_thicknessの基準が満たされていない場合でも、単一の「反復」のみを実行します。
四面体要素厚さ方向の最低数を問うための品質コマンドが見つかりました。 こちら.
以下は以下のコマンドを使用する例です。
細分化 min_through_thickness 4 ソースサーフ 1 ターゲットサーフ 2 異方性
細分化 min_through_thickness 4 ソースサーフ 7 ターゲットサーフ 13 3 14 異方性
サーフェス1と2は、緑のボリュームの薄い地域の反対側にある2つのサーフェスであり、サーフェス7 13 3 14は、黄色のボリュームの薄い地域の反対側にある2つのサーフェスである。

Figure 13. Before N through the thickness refinement.

Figure 14. After N through the thickness refinement.
一様メッシュ細分化
Uniform Mesh Refinement(UMR)ツールはExodus形式のメッシュを一様細分化し、各要素を複数sub-elementへ分割して、細分化メッシュを新しいExodusファイルへ書き出します。生成要素のedge長は元メッシュのおよそ半分です。低メモリで動作する効率的なstreaming pipelineを使用します。SSDを備えた近年のCPUでは、最大40億要素またはnode規模のメッシュを数分、数百万規模なら数秒以下で書き出せます。
UMRのアルファリリースでは、テトラヘドラ(4つのノード)と三角形(3つのノード)のブロックとサイドセットのみがサポートされています。 新しいノードからジオメトリまたはスムージングへのプロジェクションは行われていません。 それぞれのTET要素は、8つの新しいTET要素で生成され、それぞれのTRI要素は、4つの新しいTRI要素で生成されます。 ブロックとサイドセットの出力メッシュは、入力メッシュと同じIDを持っています。
現在の形式では、UMRはLANで利用可能な実行可能な形式として実行されます。 「h」のオプションで表示されるオプションは以下のとおりです。
使用:./build/extra/extra [OPTIONS] [INPUT] [OUTPUT]
| ポジション | |
| INPUT FILE</> | メッシュファイルを入力する(コアメッシュ)。 |
| OUTPUT FILE</> | 出力メッシュファイル(改良メッシュ) |
| オプション: | |
| -h,--help | この手助けのメッセージと出力を印刷する |
| -g,--geometry FILE | STEP形式で与えられたジオメトリへ境界をスナップ |
| -a,--associate | ジオメトリ関連を.exo ファイルにリリースする |
| -b,--boundary | 限界メッシュをOBJファイルとして出力する |
| -m,--metrics | 入力メッシュと出力に要素品質を印刷する |
| -j,--jobs N:UINT in [0 - 30] | 競合職の数。 0 は論理的なコアの最大数を意味します。 (デフォルト=0) |
| -v,--verbose N:INT in [0-3] | より多くの出力を書く(デフォルト=1) |
| -q,--quiet | 削除出力(同じように --verbose=0) |
| -d,--debug N:INT in [0 - 5] | 複数のデビュー出力を記録ファイル(デフォルト=0)に記入します。 |
| -V,--version | 印刷版情報 |
| -o,--optimize | リニューアル・リニューアル・リニューアル・リニューアルメッシュ |
| -r,--refine N in [1,10] | 細分化のメッシュは、範囲内のレベルの数を一貫して(1.10)。 (デフォルト=1) |
| -f,--force-wide | 強力な64ビットインデックスは、巨大なメッシュを可能にします。 (デフォルト=偽物) |
| -k,--keep-order | オリジナルのノードと要素の数を最適化中に保持します。 |
プロジェクトホームページ: https://cee-gitlab.sandia.gov/メッシング/extra

















