稜線抽出コマンド advautomesh_h_tri2d_edge2

要約

edge2コマンドは、メッシュからすべての要素稜線を重複なく抽出します。

目的

edge2コマンドは、稜線抽出を行います。 稜線抽出とは、メッシュの要素稜線を重複無くすべて取り出すことです。

稜線とは、この場合、要素稜線あるいは要素の辺のことです。 各要素稜線は、その2つの端点上の節点により一意に認識されます。 また、これらの端点は要素頂点に対応します。

三角形要素の場合、要素ごとに3つの辺があり、 したがって3つの要素稜線が存在します。 しかし、これらの要素稜線は、メッシュ境界にあるものを除き、 その全てが隣り合う2つの要素から共有されます。

稜線抽出では、隣接要素間での要素稜線の重複を除き、 メッシュ全体での要素稜線を数え挙げ、 それらの情報を順に出力します。 ここで出力される要素稜線は、 メッシュの境界および内部のものすべてです。 各要素稜線には、0から始まるユニークな稜線IDが設定されます。

用途

要素稜線情報はそれ自体にはあまり意味はありませんが、 隣接要素情報、メッシュ境界情報、輪郭フレーム、および節点位相判定など 他の多くの有用なデータ処理のために必要とされるデータです。

要素稜線情報はプレポスト処理において、 ほぼどのような用途のためにも必要とされる、きわめて基本的なデータの一つです。 したがって、与えられたメッシュデータごとに、 本コマンドを実行してあらかじめその要素稜線情報を用意しておくことを お勧めします。

利用の準備

本コマンドを利用するには、メッシュデータ、すなわち、 節点座標ファイル (node_file、*.nodeファイル) と 要素コネクティビティファイル (element_file、*.elementファイル) とが 必要となります。

実行方法

本コマンドをコマンドライン引数無しで実行すると、 以下のようなヘルプメッセージが出力されます。

 Usage : 
 advautomesh_h_tri2d_edge2  node_file  element_file 
        edge_file_OUT  edge_vertex_file_OUT  element_edge_file_OUT

コマンドライン引数は5つで、 始めの2つが入力ファイル、 終りの3つが出力ファイルとなります。

node_file
  入力ファイルとして読み込まれる、
  節点座標ファイル (node_file、*.nodeファイル) の
  ファイル名を指定する。
  詳しくは、マニュアルのファイルフォーマット、
  manual/file_format/node_file.txtを参照。
node_file.txt
element_file
  入力ファイルとして読み込まれる、
  要素コネクティビティファイル (element_file、*.elementファイル) の
  ファイル名を指定する。
  詳しくは、マニュアルのファイルフォーマット、
  manual/file_format/element_file.txtを参照。
edge_file_OUT
  出力ファイルとして書き出される、
  稜線の隣接要素ファイル (edge_file、*.edgeファイル)の
  ファイル名を指定する。
  詳しくは、マニュアルのファイルフォーマット、
  manual/file_format/edge_file.txtを参照。
edge_vertex_file_OUT
  出力ファイルとして書き出される、
  稜線の端点節点ファイル (edge_vertex_file、*.ed_vtファイル)の
  ファイル名を指定する。
  詳しくは、マニュアルのファイルフォーマット、
  manual/file_format/edge_vertex_file.txtを参照。
element_edge_file_OUT
  出力ファイルとして書き出される、
  要素の隣接稜線ファイル (element_edge_file、*.el_edファイル)の
  ファイル名を指定する。
  詳しくは、マニュアルのファイルフォーマット、
  manual/file_format/element_edge_file.txtを参照。

使い方の例

まず、以下のファイルがすでにあるとします。

入力ファイル

  (メッシュデータ)
  aaa.node     : node_file (*.node) 節点座標
  aaa.element  : element_file (*.element) 要素コネクティビティ

これらは、edge2の入力ファイルとなります。 ここで、コマンドラインから以下のように入力します。

% advautomesh_h_tri2d_edge2 aaa.node aaa.element aaa.edge aaa.ed_vt aaa.el_ed

なお、引数リストが長いので、印刷の都合上ここでは改行しています。 コマンドラインでは改行せずに入力します。 あるいは、もしこれをシェルスクリプト中に記述する場合は、 改行の直前にバックスラッシュ記号\をいれます。

これにより、以下の出力ファイルが新たに生成されます。

出力ファイル

  (稜線データ)
  aaa.edge   : edge_file (*.edge) 稜線の隣接要素
  aaa.ed_vt  : edge_vertex_file (*.ed_vt) 稜線の端点節点
  aaa.el_ed  : element_edge_file (*.el_ed) 要素の隣接稜線

なお、より詳細なサンプル例としては、 サンプルの情報抽出、sample/information/edgeを参照。

実装

edge2コマンドのソースコードは、 autores_command/advautomesh_h_tri2d_edge2.cです。 この実装には、ハッシュ検索を用いるために、 AutoRESource「おとりそうさ」ヘタレ版ライブラリを用いています。

edge2コマンドは、要素稜線の重複チェックを高速に行うため、 ハッシュ検索を用いています。 これにより、ほぼ要素数に比例する計算時間で稜線抽出を行うことができます。

なお、コマンドadvautomesh_h_tri2d_edge2の簡略実装版として、 コマンドadvautomesh_h_tri2d_edgeがあります。

edgeコマンドのソースコードは、 command/advautomesh_h_tri2d_edge.cです。 この実装は、他のどのライブラリやコマンドにも依存していません。

edgeコマンドは実行速度が遅いことを除いて、 edge2コマンドと同じ動作をします。 このedgeコマンドは線形検索を行っているので、 要素数の二乗に比例する検索時間がかかります。 したがって、大規模なメッシュでは、edge2コマンドを利用して下さい。

関連するファイルフォーマット

派生出力ファイル

  element_neighbor_file (*.el_nb) : 要素の隣接要素
    neighborコマンドにより生成される、隣接要素データ。
    詳しくは、マニュアルのファイルフォーマット、
    manual/file_format/element_neighbor_file.txtを参照。
  frame_file (*.frame) : 輪郭フレームの端点座標
    frameコマンドにより生成される、輪郭フレームデータ。
    詳しくは、マニュアルのファイルフォーマット、
    manual/file_format/frame_file.txtを参照。
  node_topology_file (*.nd_topology) : 節点の位相タイプ
    topologyコマンドにより生成される、節点位相タイプデータ。
    詳しくは、マニュアルのファイルフォーマット、
    manual/file_format/node_topology_file.txtを参照。

関連するコマンド

入力ファイルの準備

  特になし

出力ファイルの利用

  advautomesh_h_tri2d_neighbor : 隣接要素関係抽出
    各要素ごとに、隣接要素情報を生成する。
    詳しくは、マニュアルのコマンド、
    manual/command/advautomesh_h_tri2d_neighbor.txtを参照。
  advautomesh_h_tri2d_frame : 輪郭フレーム抽出
    メッシュ境界を構成する輪郭フレーム情報を抽出する。
    詳しくは、マニュアルのコマンド、
    manual/command/advautomesh_h_tri2d_frame.txtを参照。
  advautomesh_h_tri2d_topology : 節点位相タイプ判定
    各節点ごとに、位相タイプを判定する。
    詳しくは、マニュアルのコマンド、
    manual/command/advautomesh_h_tri2d_topology.txtを参照。

関連するビューア

入力ファイルの準備

  advautomesh_h_tri2d_mesh_view : メッシュビューア
    メッシュを表示する。
    詳しくは、マニュアルのビューア、
    manual/viewer/advautomesh_h_tri2d_mesh_view.txtを参照。

出力ファイルの利用

  特になし