gf_slice

概要

sl = gf_slice(sliceop, {slice sl|{mesh m| mesh_fem mf, vec U}, int refine}[, mat CVfids])
sl = gf_slice('streamlines', mesh_fem mf, mat U, mat S)
sl = gf_slice('points', mesh m, mat Pts)
sl = gf_slice('load', string filename[, mesh m])

説明 :

sliceオブジェクトの汎用的なコンストラクタです.

メッシュスライスの作成をします.メッシュスライスは,補間が非常に高速なP1不連続mesh_femに非常によく似ています.スライスは,メッシュオブジェクトとスライス操作の記述により作成されます.次に例を示します.

sl = gf_slice({'planar',+1,[0;0],[1;0]}, m, 5);

は元のmeshを半空間 {y>0} で切り取ります.元のメッシュ <literal>m</literal> の各凸を単純化します(例えば,四角形は2つの三角形に分割されます).そして各単体は5回リファインされます.

スライス操作には次のものがあります.

  • 平面,球または円柱を使った切断

  • スライスの交差または結合

  • 等値面/体

  • "points", "streamlines" (下記参照)

最初の引数がmeshではなくmesh_fem <literal>mf</literal> で,その後に <literal>mf</literal> フィールド <literal>u</literal> が続く場合,変形 <literal>u</literal> はスライス操作の前にメッシュに適用されます.

最初の引数はスライスにすることもできます.

コマンドリスト

sl = gf_slice(sliceop, {slice sl|{mesh m| mesh_fem mf, vec U}, int refine}[, mat CVfids])

<literal>sliceop</literal>操作を使用してスライスを作成します.

<literal>sliceop</literal>オペレーションはScilab CELL配列で指定されます(例:中括弧).最初の要素はオペレーションの名前で,その後にスライシングオプションが続きます.

  • {'none'} : メッシュをカットしません.

  • {'planar', int orient, vec p, vec n} : 平面カット. <literal>p</literal> と <literal>n</literal> は半空間を定義し, <literal>p</literal> は半空間の境界に属する点であり, <literal>n</literal> はその法線です. <literal>orient</literal> が -1 (または 0, +1) に等しい場合,スライス操作は半空間の "内側" (または "境界", "外側") でメッシュを切断します. <literal>orient</literal> を+2に設定すると,メッシュはスライスされますが,外側と内側の両方の部分は保持されます.

  • {'ball', int orient, vec c, scalar r} : 中心 <literal>c</literal> と半径 <literal>r</literal> の球でカットします.

  • {'cylinder', int orient, vec p1, vec p2, scalar r} : 軸が <literal>(p1, p2)</literal> 線で半径が <literal>r</literal> の円柱で切断します.

  • {'isovalues', int orient, mesh_fem mf, vec U, scalar s} : (mesh_fem <literal>mf</literal> で定義された)フィールド <literal>U</literal> の等値面を使用して切断します.結果は <literal>orient</literal> の値に応じて <literal>{x such that <latex style="text"><![CDATA[U(x) leq s]]></latex>} </literal>または <literal>{x such that </literal>U<literal>(x)=</literal>s<literal>}</literal> または <literal>{x such that </literal>U<literal>(x) >= </literal>s<literal>}</literal> になります.

  • {'boundary'[, SLICEOP]} : SLICEOPの結果の境界を返します.ここで,SLICEOPはスライシング操作です.SLICEOPが指定されていない場合は,メッシュ全体(つまり, {'boundary',{'none'}}) と見なされます.

  • {'explode', mat Coef} : メッシュの 'exploded' 表示を構築します.各凸が (<latex style="text"><![CDATA[0 < text{Coef} leq 1]]></latex>) 収縮されます.3次元凸の場合,面のみが保持されます.

  • {'union', SLICEOP1, SLICEOP2} : スライス操作の和集合を返します.

  • {'intersection', SLICEOP1, SLICEOP2} : スライスの交差操作を返します.例えば

    sl = gf_slice({intersection',{'planar',+1,[0;0;0],[0;0;1]},
                               {'isovalues',-1,mf2,u2,0}},mf,u,5)
    
  • {'comp', SLICEOP} : スライス操作の補完を返します.

  • {'diff', SLICEOP1, SLICEOP2} : スライス操作の差を返します.

  • {'mesh', mesh m} : スライスされたメッシュと別のメッシュの交差部分のスライスを作成します.このスライスは,すべての単項が各メッシュの凸に厳密に含まれるものです.

sl = gf_slice('streamlines', mesh_fem mf, mat U, mat S)

<literal>S</literal> の列で与えられるシード点を使って,(ベクトル)フィールド <literal>U</literal> の流線を計算します.

sl = gf_slice('points', mesh m, mat Pts)

<literal>Pts</literal>のカラムで指定された点で構成される "スライス" を返します.( 指定されたスパース点の集合上の補間に役立ちます. <literal></literal>gf_compute('interpolate on',sl)<literal></literal> を参照してください).

sl = gf_slice('load', string filename[, mesh m])

テキストファイルからスライス(および,引数として指定されていない場合,リンクされたメッシュ)を読み込みます.