Mesh¶
- class Mesh(*args)¶
GetFEM Meshオブジェクト
このオブジェクトは,異なる次元の要素を混在させても,任意の次元の任意の要素を格納できます.
Meshオブジェクトの汎用的なコンストラクタ
M = Mesh('empty', int dim)
新しい空のメッシュを作成します.M = Mesh('cartesian', vec X[, vec Y[, vec Z,..]])
四角形や立方体などの規則的なメッシュを素早く作成します.M = Mesh('pyramidal', vec X[, vec Y[, vec Z,..]])
ピラミッドなどの規則的なメッシュを素早く作成します.M = Mesh('cartesian Q1', vec X, vec Y[, vec Z,..])
Q1要素で四角形や立方体などの規則的なメッシュを素早く作成します.M = Mesh('triangles grid', vec X, vec Y)
三角形の規則的なメッシュを素早く作成します.これは非常に限定された関数であり,何らかの理由で廃止された関数です(
Mesh('ptND')
,Mesh('regular simplices')
とMesh('cartesian')
も参照).M = Mesh('regular simplices', vec X[, vec Y[, vec Z,...]]['degree', int k]['noised'])
単純なメッシュ(三角形,四面体など)によるn元の平行四面体を作成します.オプションの次数を使用して,非線形幾何変換でメッシュを構築できます.
M = Mesh('curved', Mesh m, vec F)
n次元のメッシュ m から曲 (n+1)次元のメッシュを構築します.新しいメッシュの点には,ベクトル F によって与えられる追加の座標が1つあります.これを使用して,シェルのメッシュを取得できます. m はMeshFemオブジェクトも指定可能です.その場合はリンクされたメッシュが使用されます.
M = Mesh('prismatic', Mesh m, int nl[, int degree])
Mesh M から角柱Mesh M を押し出します.付加次元には,
0
から1
に分布する要素の nl 層があります.オプションのパラメータ degree にデフォルト値1
より大きい値を指定すると,対応する次数の非線形変換が押し出し方向で考慮されます.M = Mesh('pt2D', mat P, imat T[, int n])
2次元三角形分割からメッシュを構築します.P の各列は点座標を含み, T の各列は三角形の点インデックスを含みます. n はオプションであり,領域番号です. n が指定された場合,領域番号 n のみが変換されます(この場合, T には4つの行があり,4行目には領域番号が入ります).
M = Mesh('ptND', mat P, imat T)
n次元 "triangulation" からメッシュを構築します.T で与えられた三角形分割と P で与えられた点のリストから単体メッシュを構築する 'pt2D' と同様の関数.メッシュの次元は P の行数であり,単体の次元は T の行数です.
M = Mesh('load', string filename)
GetFEM ASCIIメッシュファイルからメッシュをロードします.Mesh.save(string filename)
も参照してください.M = Mesh('from string', string s)
string descriptionからメッシュをロードします.例えば,
Mesh.char()
が返す文字列.M = Mesh('import', string format, string filename)
メッシュをインポートします.format には次のいずれかを指定できます.
'gmsh' は Gmsh で作成されたメッシュを表します.
Gmsh で作成され,メッシュよりも低次元の要素を含むメッシュの 'gmsh_with_lower_dim_elt'
'gid' は GiD で作成されたメッシュを表します.
'cdb' は ANSYS で作成されたメッシュを表します.
'am_fmt' は EMC2 で作成されたメッシュを表します.
M = Mesh('clone', Mesh m2)
メッシュのコピーを作成します.M = Mesh('generate', MesherObject mo, scalar h[, int K = 1[, mat vertices]])
mo はGetfemの実験的幾何メッシャーを指します.作成したメッシュの整合性は制御してください.配列 vertices にアプリオリに頂点を追加して,メッシュの次元nをn
,点の数をm
として,サイズをn x m
とすることで,メッシャーを支援できます. h は要素のおおよその直径です. K はメッシュの次数(>1 曲線境界の場合)です.メッシャは要素の品質を最適化しようとします.この操作には時間がかかる場合があります.メッシュの生成が失敗した場合は,使用されたランダムプロシージャのために必ずしも同じ結果が得られないため,再度実行できます.メッシュ生成によってコンソールに送信されるメッセージは, gf_util('trace level', 2) を使って非アクティブにすることができる.より詳しい情報は gf_util('trace level', 4) で得ることができる.ジオメトリを記述するためにジオメトリプリミティブを操作するには,MesherObject
を参照してください.
- add_convex(GT, PTS)¶
メッシュに新しい凸を追加します.
凸(三角形,プリズム,...)は GT ( GeoTrans('...') で取得されます)によって与えられ,その点は PTS の列によって与えられます.返される CVID には凸の #idが含まれます. PTS は複数の凸(またはFortranの次数に従って正しく形成された2次元配列)を挿入するための3次元配列の場合もあります.
- add_point(PTS)¶
メッシュに新しい点を挿入し,その #id を返します.
PTS は
nxm
行列でなければなりません.ここでn
はメッシュの次元,m
はメッシュに追加される点の数です.出力では, PID にこれらの新しい点の点番号IDが含まれます.注: (
1e-8
程度の小さな許容範囲で)既にメッシュの一部になっている点がある場合,それらの点は再挿入されず, PIDs には以前に割り当てられた #id の点が含まれます.
- adjacent_face(cvid, fid)¶
存在する場合,隣接する要素の凸面を返します.凸が面
f
(例えば,3次元で要素を抑制することを考える)に対して相対的に隣接する面を複数持つ場合,最初に見つかった面を返します.
- all_faces(CVIDs=None)¶
CVID(CVIDが省略されている場合,すべてのメッシュで)での面の集合を返します.2つの隣接する要素が共有する面が2回表示されることに注意してください.
- boundaries()¶
非推奨関数です.代わりに 'regions' を使用してください.
- boundary()¶
非推奨関数です.代わりに 'regions' を使用してください.
- char()¶
メッシュのstring descriptionを出力します.
- convex_area(CVIDs=None)¶
各凸の面積の推定値を返します.
- convex_radius(CVIDs=None)¶
各凸の半径の推定値を返します.
- convexes_in_box(pmin, pmax)¶
コーナー点 pmin と pmax で定義されたボックス内に完全に収まる凸集合を返します.
出力される CVID は二行行列で,最初の行には凸の#idがリストされ,次の行には面の番号(凸のローカル番号)がリストされます. CVID が指定された場合, CVID にリストされた#idによって定義される凸集合の境界の一部を返します.
- curved_edges(N, CVLST=None)¶
[廃止される関数! 将来のリリースで削除される予定です]
EとCを返します.曲線要素用に設計された Mesh.edges() のより洗練されたバージョン.これは(曲がった)エッジのN(N>=2)点を返します.N==2の場合,これは Mesh.edges() と同等です.点は常にメッシュの一部ではないため, [ mesh_dim x 2 x nb_edges ] 配列である配列Eで,点の番号の代わりに座標が返されます.オプションの出力引数Cを指定すると,各エッジに関連付けられた凸の番号が含まれます.
- cvid()¶
すべての凸#idのリストを返します.
番号付けは,特にメッシュからいくつかの点が削除された場合は,0から Mesh.nbcvs()-1 まで連続していないことに注意してください. Mesh.optimize_structure() を使用すると,連続した番号付けが行われます.
- cvid_from_pid(PIDs, share=False)¶
PIDs で指定された点 #ids に関連する凸 #ids を戻します.
share=False の場合は,頂点#idsが PIDs にある凸を検索します. share=True の場合は, PIDs で指定された点 #ids を共有する凸 #ids を検索します. CVIDs は(空である可能性がある)ベクトルです.
- cvstruct(CVIDs=None)¶
凸構造の配列を返します.
CVIDs が指定されていない場合,すべての凸が考慮されます.各凸構造は S に1つずつ記載されており, CV2S は CVIDs の凸のインデックスを S の構造インデックスにマップしています.
- del_convex(CVIDs)¶
メッシュから1つまたは複数の凸を削除します.
CVIDs には 'add convex' コマンドで返されるような凸 #id を含める必要があります.
- del_convex_of_dim(DIMs)¶
DIMs に表示されている次元の凸をすべて削除します.
例えば
Mesh.del_convex_of_dim([1,2])
はすべての線区分,三角形,四角形を削除します.
- del_point(PIDs)¶
メッシュから1つまたは複数の点を削除します.
PIDs は 'add point' コマンドで返される点である #ids などを指定する必要があります.
- delete_boundary(rnum, CVFIDs)¶
非推奨関数です.代わりに 'delete region' を使用してください.
- delete_region(RIDs)¶
RIDs にリストされている領域 #id を削除します.
- dim()¶
メッシュの次元を取得します(2次元メッシュに対して2など).
- display()¶
Meshオブジェクトの簡単な概要を表示します.
- edges(CVLST=None, *args)¶
概要: [E,C] = Mesh.edges(self [, CVLST][, 'merge'])
[廃止される関数! 将来のリリースで削除される予定です]
行ベクトルCVLSTにリストされている凸のメッシュMのエッジのリストを返します.Eは点インデックスを含む 2 x nb_edges 行列です.CVLSTを省略すると,すべての凸のエッジが返されます.CVLSTに2つの行がある場合,最初の行には凸の数が含まれ,2番目の行には面の数が返されます. 'merge' が指定されている場合,凸のすべての共通エッジが単一エッジにマージされます.オプションの出力引数Cを指定すると,各エッジに関連付けられた凸の番号が含まれます.
- export_to_dx(filename, *args)¶
概要: Mesh.export_to_dx(self, string filename, ... [,'ascii'][,'append'][,'as',string name,[,'serie',string serie_name]][,'edges'])
メッシュをOpenDXファイルに書き出します.
MeshFem.export_to_dx(), Slice.export_to_dx() も参照してください.
- export_to_pos(filename, name=None)¶
メッシュをPOSファイルに書き出します.
MeshFem.export_to_pos(), Slice.export_to_pos() も参照してください.
- export_to_vtk(filename, *args)¶
概要: Mesh.export_to_vtk(self, string filename, ... [,'ascii'][,'quality'])
メッシュをVTKファイルに書き出します.
'quality' が指定された場合,各凸の品質の見積りがファイルに書き込まれます.
See also MeshFem.export_to_vtk(), Slice.export_to_vtk().
- export_to_vtu(filename, *args)¶
概要: Mesh.export_to_vtu(self, string filename, ... [,'ascii'][,'quality'])
メッシュをVTK (XML) ファイルにエクスポートします.
'quality' が指定された場合,各凸の品質の見積りがファイルに書き込まれます.
See also MeshFem.export_to_vtu(), Slice.export_to_vtu().
- extend_region(rnum, CVFIDs)¶
領域番号 rnum で識別される領域を拡張して,マトリックス CVFIDs に与えられた凸または凸面あるいはその両方の集合を含めます.
Mesh.(set region)
も参照.
- faces_from_cvid(CVIDs=None, *args)¶
概要: CVFIDs = Mesh.faces_from_cvid(self[, ivec CVIDs][, 'merge'])
凸 #id のリストから凸面のリストを返します.
CVFIDs は2行の行列で,最初の行には凸の#idがリストされ,2番目の行には面番号(凸のローカル番号)がリストされます. CVIDs が指定されていない場合,すべての凸が対象となります.オプションの引数 'merge' は CVIDs の凸が共有している面を結合します.
- faces_from_pid(PIDs)¶
頂点 #ids が PIDs にある凸面を返します.
CVFIDs は2行の行列で,最初の行には凸の#idがリストされ,2番目の行には面番号(凸のローカル番号)がリストされます.凸面を返すには,その各点を PIDs にリストする必要があります.
- geotrans(CVIDs=None)¶
幾何変換の配列を返します.
Mesh.cvstruct() も参照してください.
- inner_faces(CVIDs=None)¶
CVIDの2つ以上の要素が共有する面の集合を返します.各面は1回だけ表示され,2つの隣接エレメントの間で任意に選択されます.
- max_cvid()¶
メッシュ内のすべての凸の最大#idを返します( 'max pid' を参照してください.).
- max_pid()¶
メッシュ内のすべての点の最大 #id を返します( 'max cvid' を参照してください).
- memsize()¶
メッシュが使用するメモリの量(バイト単位)を返します.
- merge(m2, tol=None)¶
メッシュ m2 とマージします.
許容半径 tol 内の重複点は複製されません. m2 がMeshFemオブジェクトの場合は,そのリンクされたメッシュが使用されます.
- nbcvs()¶
メッシュの凸の数を取得します.
- nbpts()¶
メッシュの点数を取得します.
- normal_of_face(cv, f, nfpt=None)¶
面の nfpt 点で凸の cv ,面 f の法線ベクトルを返します.
nfpt が指定されていない場合,法線は面の各ジオメトリノードで評価されます.
- normal_of_faces(CVFIDs)¶
凸の(面の中心の)法線ベクトルの行列を返します.
CVFIDは2行の行列を想定しており,最初の行は凸の #id をリストし,2番目の行は面番号(凸のローカル番号)をリストしています.
- optimize_structure(with_renumbering=None)¶
点および凸の番号付けをリセットします.
最適化後,点 (resp. convexes) には連続して
0
からMesh.max_pid()-1
(resp.Mesh.max_cvid()-1
) まで番号が付けられます.
- orphaned_pid()¶
凸にリンクされていない点 #id を返す.
- outer_faces(dim=None, *args)¶
概要: CVFIDs = Mesh.outer_faces(self[, dim][, CVIDs])
2つの要素で共有されていない面の集合を返します.
出力される CVFIDs は2行の行列で,最初の行は凸 #ids をリストし,2番目の行は面番号(凸の局所数)をリストします. dim が指定されている場合,この関数は強制的に次元 dim を持つ要素の面を検出します.たとえば, dim =2の場合,3次元メッシュに属するサーフェス要素のエッジを検出します. CVID が与えられない場合,全ての凸が考慮され,この関数は基本的にメッシュ境界を返します. CVIDs を指定すると, CVIDs に #ids が列挙されている凸集合の境界を返します.
- outer_faces_in_ball(center, radius, dim=None, *args)¶
概要: CVFIDs = Mesh.outer_faces_in_ball(self, vec center, scalar radius[, dim][, CVIDs])
2つの凸形によって共有されておらず,対応する center と radius の球内にある面の集合を返します.
出力される CVFIDs は2行の行列であり,最初の行は凸の #ids をリストし,2番目の行は面番号(凸の局所番号)をリストします.引数 dim は outer_faces() と同様に機能します. CVIDs が指定された場合, CVIDs にリストされた #id によって定義される凸集合の境界の一部を返します.
- outer_faces_in_box(pmin, pmax, dim=None, *args)¶
概要: CVFIDs = Mesh.outer_faces_in_box(self, vec pmin, vec pmax[, dim][, CVIDs])
2つの凸によって共有されておらず,コーナー点 pmin と pmax によって定義されるボックス内にある面の集合を返します.
出力される CVFIDs は2行の行列であり,最初の行は凸の #ids をリストし,2番目の行は面番号(凸の局所番号)をリストします.引数 dim は outer_faces() と同様に機能します. CVIDs が指定された場合, CVIDs にリストされた #id によって定義される凸集合の境界の一部を返します.
- outer_faces_with_direction(v, angle, dim=None, *args)¶
概要: CVFIDs = Mesh.outer_faces_with_direction(self, vec v, scalar angle[, dim][, CVIDs])
2つの凸によって共有されておらず,平均外向きベクトルがベクトル v からの角度 angle (ラジアン)内にある面の集合を返します.
出力される CVFIDs は2行の行列であり,最初の行は凸の #ids をリストし,2番目の行は面番号(凸の局所番号)をリストします.引数 dim は outer_faces() と同様に機能します. CVIDs が指定された場合, CVIDs にリストされた #id によって定義される凸集合の境界の一部を返します.
- pid()¶
メッシュの点 #id のリストを返します.
番号付けは,0から Mesh.nbpts()-1 まで連続していないことに注意してください. Mesh.optimize_structure() を使用すると,連続した番号付けが行われます.
- pid_from_coords(PTS, radius=0)¶
座標が PTS にリストされている点 #id を戻す.
PTS は,点の座標のリストを含む配列です.返される PIDs は, eps の範囲内で見つかった各点の点 #id です.メッシュ内で見つからなかった場合には -1 が返されます.
- pid_from_cvid(CVIDs=None)¶
メッシュの各凸に取り付けられた点を返します.
CVIDs ( CVIDs = Mesh.max_cvid() と同じです)を省略すると,すべての凸が対象となります. IDx はベクトルであり, length(IDx) = length(CVIDs)+1 です. Pid は CVIDs における各凸の点の #id の連結リストを含むベクトルです. IDx の各エントリは, Pid の対応する凸点リストの位置です.したがって,例えば,第2凸の点の #id のリストは Pid[IDx(2):IDx(3)] です.
CVIDs にメッシュに存在しない凸の#idが含まれている場合,点リストは空になります.
- pid_in_cvids(CVIDs)¶
CVIDs にリストされている点 #id を戻す.
PIDs は点 #id を含むベクトルです.
- pid_in_faces(CVFIDs)¶
CVFIDs にリストされている点 #id を戻す.
CVFIDs は2行の行列で,最初の行には凸の #id がリストされ,2番目の行には面の番号がリストされます.返される PIDs は,点#idを含むベクトルです.
- pid_in_regions(RIDs)¶
RIDs にリストされている点 #id を戻す.
PIDs は点 #id を含むベクトルです.
- pts(PIDs=None)¶
メッシュの点の座標リストを返します.
返されるマトリックスの各列には,各点の座標が含まれます.オプションの引数 PIDs が指定された場合,このベクトルに #id がリストされている点のみが返されます.それ以外の場合,返されるマトリックスはMesh.max_pid() 列になります.(メッシュの一部の点が破棄され, Mesh.optimize_structure() が呼び出されていない場合) Mesh.nbpts() より大きい可能性があります.削除された点に対応する列はNaNで埋められます.そのような空の点を取り除くには Mesh.pid() を使用します.
- pts_from_cvid(CVIDs=None)¶
CVID にリストされている点の検索.
Pts と IDx を返します. CVIDs ( CVIDs = Mesh.max_cvid() と同じです)を省略すると,すべての凸が考慮されます. IDx はベクトルであり,length(IDx) = length(CVIDs)+1 です. Pts は CVIDs における各凸の点の連結リストを含むベクトルです. IDx の各エントリは Pts の対応する凸点リストの位置です.したがって,例えば,第2凸の点のリストは Pts[:,IDx[2]:IDx[3]] となります.
CVIDs にメッシュに存在しない凸の#idが含まれている場合,点リストは空になります.
- quality(CVIDs=None)¶
各凸の品質の推定値を返します (\(0 \leq Q \leq 1\)) .
- refine(CVIDs=None)¶
メッシュの改善には Bank の方法を使用します.
CVIDs が指定されていない場合,メッシュ全体が洗練されます.このメッシュにリンクされたMeshFemオブジェクトとMeshImオブジェクトの領域,有限要素法,および積分法は,自動的に洗練されます.
- region(RIDs)¶
領域 RIDs 上の凸/面のリストを返します.
CVFIDs は2行の行列で,最初の行には凸の #id がリストされ,2番目の行には面番号(凸のローカル番号)がリストされます.(凸全体が領域内にある場合は -1 です).
- region_intersect(r1, r2)¶
領域番号 r1 を領域番号 r2 との交差部分に置き換えます.
- region_merge(r1, r2)¶
領域番号 r2 を領域番号 r1 にマージします.
- region_subtract(r1, r2)¶
領域番号 r1 を領域番号 r2 との差分に置き換えます.
- regions()¶
メッシュに保存されている有効な領域のリストを返します.
- save(filename)¶
メッシュオブジェクトをASCIIファイルに保存します.
このメッシュは Mesh('load', filename) で復元できます.
- set_boundary(rnum, CVFIDs)¶
非推奨関数です.代わりに 'regions' を使用してください.
- set_pts(PTS)¶
メッシュ点の座標を PTS で指定された座標に置き換えます.
- set_region(rnum, CVFIDs)¶
領域番号 rnum を,行列 CVFIDs に提供されている凸または凸面,あるいはその両方の集合に割り当てます.
CVFIDs の最初の行は凸の #id を含み,二番目の行は凸の中に面番号を含みます (または凸全体として
-1
(領域は通常,凸面のリストを格納するために使用されますが,凸面のリストを格納するために使用することもできます).ベクトル(または1行の行列)が与えられる場合,領域は対応する凸集合を表します.
- transform(T)¶
メッシュの各点にマトリックス T を適用します.
なお, T は
NxN
(N = Mesh.dim()
)行列である必要はありません.したがって,2次元メッシュを3次元メッシュに(相互に)変換できます.
- translate(V)¶
メッシュの各点を V から移動します.
- triangulated_surface(Nrefine, CVLIST=None)¶
[非推奨! は将来のリリースで削除される予定です]
Mesh.curved_edges() に似た関数です.各面をサブ三角形に分割(必要に応じて,つまり非線形の場合は幾何変換)して,T (gf_compute('eval on P1 tri mesh')を参照)の座標を返します.