入力ファイル
ポリゴン
|
メッシュ生成Triangle :: ポリゴンポリゴンファイル (*.poly) についてr有限要素法に使うメッシュジェネレーター Triangle で使われるポリゴンファイルについて説明します. 目次はじめにポリゴンファイル (*.poly) は,Triange の計算領域をしているファイルです. ポリゴンファイルの書き方計算領域Triangle によりメッシュを生成する領域を,図1に示します.計算領域は,二つのセグメント [1] と [2],一つの穴 (hole) [3] で構成されています.これらのセグメントは,セグメント境界ライン {1} — {11} で定義されます.境界ラインは 1 — 9 の頂点で定義されます.
ポリゴンファイル (*.poly)前節の図1に示した計算領域をメッシュ分割するための Triangle の入寮kファイルをリスト 1 に示します.ナンバーサイン「#」があると,行末までがコメントです.ここでは使っていませんが,空行もリストに含めることができます.これもコメント行と同じ扱いになります. 001 #========== difinition: nodes ======================== 002 9 2 2 1 003 #----------------------------------------------------- 004 1 2.0 2.0 56.234 2.34 -1 005 2 2.0 10.0 99.876 9.86 -2 006 3 8.0 10.0 1.2e-5 6.5e6 -3 007 4 8.0 2.0 1.3454 6.129 0 008 5 14.5 6.0 -9.876 -23.4 0 009 6 7.0 6.0 1.5678 -1.2e3 0 010 7 5.0 4.0 3.56 3.1415 0 011 8 3.0 6.0 4.67 2.7182 1 012 9 5.0 8.0 5.78 -0.341 1 013 # 014 # 015 #========== difinition: Segment lines ================ 016 11 1 017 #----------------------------------------------------- 018 # segment [1] 019 1 1 2 10 020 2 2 3 10 021 3 3 4 99 022 4 4 1 10 023 # 024 # segment [2] 025 5 4 3 99 026 6 3 5 10 027 7 5 4 10 028 # 029 # segment [3] 030 8 6 7 20 031 9 7 8 20 032 10 8 9 20 033 11 9 6 20 034 # 035 # 036 #========== difinition: holes ======================= 037 1 038 #----------------------------------------------------- 039 1 5.0 6.0 040 # 041 # 042 #========== difinition: Optional ==================== 043 2 2 044 #----------------------------------------------------- 045 1 3.0 3.0 1.0 0.2 046 2 11.0 6.0 20.98 0.5 このリストの構造やその内容は,次のとおりです. 頂点の定義セグメントは複数の頂点を直線で結んだ閉じた領域です.これらの頂点を,リスト 1 の 002—012 で定義します.002 は引き続く頂点リストの情報,004—012 は頂点リストです. ここでの頂点の情報は,Triangle のアウトプットファイル「*.n.node」に書かれます. 頂点リスト情報頂点リスト情報は,1行で以下の数値のリスト(1行)です. <頂点の数> <次元> <属性の数> <頂点マーカー> その内容は,以下のとおりです.
頂点リスト頂点リストは,各行に以下の数値並んでいます.頂点の数だけ行があります. <頂点番号> <X座標> <Y座標> [属性] … [境界マーカー] その内容は,以下のとおりです.
境界ラインの定義境界マーカーの値は,Triangle のアウトプットファイル「*.n.edge」に書かれます.これには,全ての三角形エレメントの辺のマーカー値が書かれています.境界ラインリストで定義されていない三角形の辺のマーカーの値は,「0」になります. 境界ラインリスト情報
境界ラインリスト
穴 (hole) の定義穴 (hole) リスト情報
穴 (hole) リスト
オプションの定義オプションで指定したセグメントの属性は,Triangle のアウトプットファイル「*.n.ele」に書かれます.このファイルの各行がエレメントを表し,そこに属性が書かれています. セグメントリスト情報
セグメントリスト
メッシュ生成結果以下のコマンドで,メッシュを生成します. $ triangle -pqenaA sample
英語マニュアルの翻訳ここでは,英文のマニュアルを日本語化します.最初は Google 翻訳で日本語化しました.少しずつ修正をていますが,まだ Google 翻訳のままのところはおかしな日本語です.雰囲気はわかると思います[英語の原文]. .poly ファイルは,いくつかの追加情報を加えた PSLG ファイルです. PSLG は計算幾何学者になじみの平面直線グラフを表します.その定義により,PSLG は頂点と線分のリストだけです..polyファイルには,三角形の面積の穴や凹部だけでなく,セグメントの属性と制約についての情報を含めることができます.
最初のセクション (頂点の定義) では,セグメントの頂点のリストを記述します.そのリストの形式は,Triangle の 出力である .node ファイルファイルと同一です. <頂点の#>は頂点が別々の.nodeファイルのファイルに記載されていることを示すためにゼロに設定することができます.トライアングルによって生成.polyファイルは常にこの形式を持っています.このように表す頂点集合は,それが容易に(.polyまたは.nodeファイルのファイルが読み込まれているかどうかに応じて)セグメントまたはなしで三角ことができるという利点を有します. 2番目のセクションでは,セグメント境界のラインを定義します.セグメント境界ラインは,三角エレメント分解(各セグメントは小さい三角形エレメントに細分することができるが)の時に使われる,三角形の辺にもなります.各セグメント境界ラインは,2つの端点のノード番号を指定することによって定義します.ひとつのセグメントは,それを構成するノードの一筆書きのリストになります.各セグメントは,境界マーカを指定することもできます. -q,-a,-u,及び-sが選択されていない場合,三角形は,各セグメントは,三角測量で,単一のエッジとして現れる制約ドロネー三角形分割(CDT)を,生成されます. -q,-a,-u,または-sが選択された場合,三角形は,セグメントが小さいエッジに細分することができる,適合拘束ドロネー三角形分割を生成します. -Dが同様に選択された場合,トライアングルは,準拠ドロネー三角形分割を生成しますので,すべての三角形はドロネーで,ちょうどドロネーを拘束されません. (-cが選択されている場合,および凹部) 3番目のセクションには,三角測量に穴を示しています.穴は,各穴の内側の点を識別することによって指定されています.三角測量が形成された後,トライアングルはその進行状況がPSLGセグメントによってブロックされるまで,各穴の点から広がる,三角形を食べることによって穴を作成します.あなたは,セグメント内の各穴を囲むように注意する必要があります,またはあなたの全体の三角測量を離れて食べている可能性があります.セグメントに当接する二つの三角形が食べている場合は,セグメント自体も食べられます.セグメント上に直接穴を置かないでください.あなたが行う場合は,トライアングルは任意のセグメントの一方の側を選択します. オプションの第四節で,地域属性(リージョン内のすべての三角形に割り当てられるため),最大三角形の面積に関する地域制約.トライアングルは -A スイッチが使用されているか,-a スイッチは,それを次の番号なしで使用され,-rスイッチを使用しない場合にのみ,このセクションをお読みます.地域属性とエリア制約は穴と同じように伝播されます.あなたはそれぞれの属性および/または制約のためのポイントを指定し,属性および/または制約が点を含む (セグメントで囲まれた) 全領域に影響を与えます.二つの値がx座標とy座標の後の行に書かれている場合は,最初のそのような値は,地域の属性であると仮定される(ただし,-Aスイッチが選択されている場合にのみ適用される),及び第2の値があると仮定されます地域の面積制約(-aスイッチが選択されている場合にのみ適用されます).あなたは,スイッチの選択に応じて,属性と面積制約の両方として機能することができる座標,後に一つだけの値を指定することもできます.あなたが -A を使用していると -a が同時に切り替わり,エリア制約を課すことなく,いくつかの領域に属性を割り当てたい場合は,負の最大領域を使用します. 空白行と「#」で始まるコメントは,どこにでも配置することができます.頂点とセグメント,穴,領域を表す番号は 1 またはゼロから始まる連続する整数で指定します. (1または0から番号付けを開始する選択は,すべてのオブジェクト間で一貫している必要があります.) 三角測量が.polyファイルから作成されたときは,入力された頂点集合の凸包を囲むれ,PSLGセグメントにおいて三角形分割する領域全体を囲む,または-cスイッチを使用する必要があります.あなたは-cスイッチを使用しない場合は,トライアングルは,セグメントによって囲まれていないすべての三角形を食べるようになります.あなたが注意されていない場合,あなたの全体の三角測量を侵食することができます.あなたは-cスイッチを使用する場合,あなたはまだだけで凸包内の穴の適切な配置により凹部を生成することができます. 理想的な PSLG は,あなたがあなたの.polyファイルが理想的にするために必要とされない(.もちろん,除いて,各セグメントのエンドポイント)が交差するセグメント,またセグメント上に横たわる任意の頂点を持っていませんが,あなたが行くことができるかを認識する必要があります違う.セグメントの交点は,比較的安全である - トライアングルはあなたのための交点を計算し,三角測量に追加されます - 限り,あなたのマシンの浮動小数点精度が問題にならないように.あなたが同じ場所で交差する3つのセグメントがある場合は運命を誘惑し,交点がどこにある三角形を把握することを期待しています.トライアングルは,小さな三角形を絞り込むしようとしない限り,機械精度の最後のビットを使用しています - 浮動小数点丸め誤差のおかげで,トライアングルは,おそらく3セグメントが異なる3点で交差し,あなたの出力に微小三角形を見つけることを決定します,およびすべてで終了しません.あなたは,入力ファイルの交点を入れて,手で二つに各セグメントを分割する方がいいでしょう.あなたはセグメントの中央に頂点を置き,トライアングルがその頂点でセグメントを分割することを願っていた場合も,あなたは幸運を得るかもしれません.一方,三角形は頂点がライン上に正確に位置しないことを決めるかもしれません,あなたはあなたの出力の針のように鋭い三角形があります - あなたは品質のメッシュを生成している場合や,小さな三角形がたくさん. トライアングルが.polyファイルを読み込むと,それはまた,入力セグメントのサブセグメントエッジをすべて含ん.polyファイルを,書き込みます.-c スイッチが使用される場合,出力.polyファイルは凸包上のエッジの全てが含まれます.したがって,出力.polyファイルが入力されたセグメントに関連エッジを見つけ,有限要素シミュレーションにおける境界条件を設定するのに便利です.あなたは出力メッシュを精製することを計画,およびセグメントは,後で三角形分割で不足しているしたくない場合はさらに重要なのは,あなたがそれを必要とします. ページ作成情報参考資料
更新履歴
|