要素メッシュの可視化

要素メッシュのワイヤフレームの可視化は,ElementMeshの近似の可視化を作成する効率よい方法である.可視化は,線形要素を使ってメッシュを可視化する.メッシュをより完全に可視化するためには,ElementMeshMeshRegionに変換されなければならない.より高度な可視化には,HighlightMeshを使うことができる.

ElementMeshは通常ToBoundaryMeshToElementMeshを使って作成される.

パッケージを使うには,有限要素法のコンテキストがロードされなければならない.

ワイヤフレーム

要素メッシュを調べるためには,そのワイヤフレームを見ると便利である.

mesh["Wireframe"]ワイヤフレームを形成するエッジを表示する
mesh["Wireframe"[pos]]位置 pos のリストに対応する位置を持つ要素を示す
mesh["Wirefame"[ElementMarker m]]マーカー m に対応するElementMarkerを持つ要素を示す

ElementMeshワイヤフレームのコマンド.

埋込み次元によっては,ワイヤフレームの可視化はデフォルトではメッシュ要素を2Dのメッシュ要素で,そして境界要素を3Dで表示する.メッシュ要素を3Dで表示すると有用なこともあり,可能ではあるが,この可視化は境界要素を3Dで表示することほど有用ではないことが多い.

6つの三角要素とマーカーを持つ三角要素メッシュを作成する.
要素メッシュのワイヤフレームを可視化する.

このワイヤフレームはデフォルトではメッシュ要素を要素メッシュで表示することに注意する.

MeshRegionに変換する.
要素メッシュのワイヤフレームを緑色で可視化する.
要素メッシュを緑色で可視化する.
要素メッシュを緑色で,面を赤色で可視化する.
要素メッシュのワイヤフレームを要素識別番号(赤色)と一緒に可視化する.
要素メッシュのワイヤフレームを要素マーカー(青色)と一緒に可視化する.
0.9未満の質を持つ要素の位置を求める.

メッシュ品質についての詳細は,要素メッシュの生成のチュートリアルを参照するとよい.

それらのメッシュ要素だけをワイヤフレームとして可視化する.
さらに要素マーカーを青で強調する.
ある一定のマーカーを持つ要素の位置を求める.
それらのメッシュ要素だけをワイヤフレームとして可視化する.
マーカーを含むメッシュ要素を直接ワイヤフレームとして可視化する.

ここまで示したオプションは,"MeshElements""BoundaryElements""PointElements"というすべてのメッシュ要素に使える.この詳細は,ElementMeshのドキュメントを参照されたい.

2Dでは,デフォルトのワイヤフレームの可視化は,メッシュ要素を表示する.境界要素の可視化も可能である.

境界要素メッシュのワイヤフレームを可視化する.

異なるメッシュ要素マーカー間のインターフェースは内部境界を形成することに注意する.

境界要素メッシュのワイヤフレームを要素マーカー(青色)と一緒に可視化する.
点要素メッシュのワイヤフレームを可視化する.
要素メッシュのさまざまなアスペクトを組み合せて可視化する.

点要素については,境界インシデントのみが可視化されることに注意する.点要素が明示的に与えられない場合には,点要素は境界要素のインシデントから導き出される.

境界要素と点要素を調べる.

メッシュを可視化するもう一つの方法に,MeshRegionを使う方法がある.

MeshRegionHighlightMeshを可視化に使う.

特定の点要素が与えられる場合には,それが使われる.

メッシュ要素,境界要素,点要素を持つ要素メッシュを作成する.
メッシュの点要素を可視化する.

複合タイプの要素あるいは複数要素の場合には,要素の番号付けは,リスト内の位置に従って行われる.

要素マーカー付きの複合要素メッシュを作成する.
要素メッシュのワイヤフレームを要素の識別番号と一緒に可視化する.
要素メッシュのワイヤフレームを連続要素の識別番号とともに可視化する.
色付きのマーカーとともに,要素メッシュのワイヤフレームを可視化する.

要素メッシュに色付けを行う場合には,"MeshElementStyle"成分の数がマーカーの数にマッチしなければならない.

領域を作成する.
要素マーカーを含むメッシュを作成し,マーカーに色を付けて可視化する.

マーカーが境界メッシュの一部となる場合もある.

マーカー付きの2D境界メッシュを作成する.
境界要素の識別番号とマーカー,および点要素の識別番号とマーカーを可視化する.
1あるいは2のマーカーを持つ境界要素を可視化する.
完全なメッシュを作成する.
完全なメッシュの境界マーカーを可視化する.

3Dでは,描くデフォルトのワイヤフレームは,境界メッシュである.

円形の外周上に座標を構築する.
これらは線形のインシデントである.
六面体要素メッシュを作成する.

3Dでは,デフォルトでは境界要素が表示される.これは,デフォルトでメッシュ要素が表示される2Dの場合とは対照的である.

境界要素メッシュのワイヤフレームを可視化する.

メッシュ要素も可視化できる.

完全な要素メッシュのワイヤフレームを可視化する.

以下はオプションをまとめたものである.

"ContinuousElementID"連続番号とともに要素を表示する
"MeshElement"どのメッシュ要素を描くべきかを指定する
"MeshElementIDStyle"メッシュ要素の識別番号をどのスタイルで描くべきかを指定する
"MeshElementMarkerStyle"メッシュ要素マーカーをどのスタイルで描くべきかを指定する
"MeshElementStyle"メッシュ要素をどのスタイルで描くべきかを指定する

ElementMesh"Wireframe"可視化のオプション.

STLファイルは,境界要素メッシュとしてインポートすることができる.

STLファイルを境界要素メッシュとしてインポートし,ワイヤフレームを調べる.

3Dのワイヤフレームは,デフォルトですべての境界要素を表示する.境界メッシュの成分が細かく分解されている場合には,ワイヤフレームメッシュがその部分であまりにも密になりすぎるということもある.その対処法として,エッジフレームメッシュを3Dで使う方法がある.主要なエッジは,近傍の曲面が異なる法線を持つエッジである.

エッジフレームを可視化する.
異なる境界のグループ化閾値を持つエッジフレームと,それらのエッジの指示子を可視化する.

"Edgeframe"Graphics3Dと同じオプションに加えて,以下のオプションを持つ.

"BoundaryGroupingThreshold"法線の方向で境界のグループ分けを制御する
"EdgeframeDirective"どのようにエッジを描画するかを指定する

ElementMesh"Edgeframe"可視化のオプション.

境界マーカーも自動作成される.マーカーは,それぞれに別の色を割り当てることによって可視化できる.

領域を作成する.
境界ElementMeshを生成する.
境界マーカーを別々の色で表示して境界メッシュを可視化する.

ときには,境界マーカーあるいは点マーカーをスクロールして,境界条件を適用する特定の曲面あるいは境界点を見付けたい場合がある.

ブール領域から境界メッシュを生成する.
Manipulateを使って曲面をスクロールする.
Manipulateを使って境界点をスクロールする.
完全なメッシュを生成する.

完全な要素メッシュにおいて点マーカーをより制御したい場合には,オプション"PointMarkers""BoundaryDeduced"ToElementMeshに指定するとよい.

Manipulateを使って境界点をスクロールする.

もう一つのオプションとして,すべての曲面を表示し,凡例を加えることもできる.

メッシュにある点マーカーに別々の色を設定する.
曲面に色とラベルを付けた形状を可視かする.

同様の設定を境界点に行うこともできる.

3Dで複数の材料領域を作成し表示する例については,OpenCascadeLinkのドキュメントを参照されたい.

問題

ワイヤフレームの可視化の目的は,ElementMeshの近似の可視化を与えることにある.可視化は,線形要素を使ってメッシュを可視化する.

二次のElementMeshを作成する.
メッシュと境界点の一部を可視化する.

中間のノードはDiskの曲線上にあるが,ワイヤフレームの可視化は線形のみであるので,ノードが外側にあるように見えることに注意する.

変形の可視化

NDSolveを使って構造力学を解析する場合には,負荷のもとでのオブジェクトの変形が領域上で計算される.領域を負荷で変形されたかのように可視化すると便利なこともある.

この例における厳密な物理学は重要ではないが,NDSolveを使って有限要素法で計算された構造力学アプリケーションについては,従属変数の数が変形関数の数を指定する.

平面応力の演算子を定義する.
梁が左で固定されるように,境界条件を設定する.
方程式を解く.

NDSolveが2つの補間関数を返す.1つは, 方向の変形であり,もう一つは, 方向の変形である.変形された梁を示すためには,停止状態の梁の要素メッシュを作成しなければならない.この梁は,与えられた補間関数によって変形される.

変形されたメッシュを可視化する.

変形の量が小さいために変形が見た目では分からないような場合には,スケーリング因数を指定することができる.

スケーリング因数が1であるとスケールしない.デフォルトではAutomaticスケーリングが使われる.自動スケーリング因数の計算には最小のよく使われる長さと最大の変形の間の関係が使われる.

使用されたAutomaticのスケーリング因数を計算する:

以下のオプションが使える.

"ScalingFactor"因数でメッシュ変形をスケールする

ElementMeshElementMeshDeformation可視化のオプション.

ElementMeshDeformationは2Dと3Dの両方で使える.

ElementMeshの変換

可視化のために,ElementMeshをさまざまな形式に変換することが可能である.MeshRegionへの変換は以下のように行われる.

例のメッシュを作成し,それをMeshRegionに変換する.

ElementMeshGraphicsComplexに変換することも可能である.

ElementMeshGraphicsComplexに変換する.

特別の指示子を与えることができる.

グラフィックスの複合体の指示子を指定する.

GraphicsComplexのオプションを指定することができる.

グラフィックスの複合体のオプションを指定する.