gf_compute¶
概要
n = gf_compute(mesh_fem MF, vec U, 'L2 norm', mesh_im mim[, mat CVids])
n = gf_compute(mesh_fem MF, vec U, 'L2 dist', mesh_im mim, mesh_fem mf2, vec U2[, mat CVids])
n = gf_compute(mesh_fem MF, vec U, 'H1 semi norm', mesh_im mim[, mat CVids])
n = gf_compute(mesh_fem MF, vec U, 'H1 semi dist', mesh_im mim, mesh_fem mf2, vec U2[, mat CVids])
n = gf_compute(mesh_fem MF, vec U, 'H1 norm', mesh_im mim[, mat CVids])
n = gf_compute(mesh_fem MF, vec U, 'H2 semi norm', mesh_im mim[, mat CVids])
n = gf_compute(mesh_fem MF, vec U, 'H2 norm', mesh_im mim[, mat CVids])
DU = gf_compute(mesh_fem MF, vec U, 'gradient', mesh_fem mf_du)
HU = gf_compute(mesh_fem MF, vec U, 'hessian', mesh_fem mf_h)
UP = gf_compute(mesh_fem MF, vec U, 'eval on triangulated surface', int Nrefine, [vec CVLIST])
Ui = gf_compute(mesh_fem MF, vec U, 'interpolate on', {mesh_fem mfi | slice sli | vec pts})
Ue = gf_compute(mesh_fem MF, vec U, 'extrapolate on', mesh_fem mfe)
E = gf_compute(mesh_fem MF, vec U, 'error estimate', mesh_im mim)
E = gf_compute(mesh_fem MF, vec U, 'error estimate nitsche', mesh_im mim, int GAMMAC, int GAMMAN, scalar lambda_, scalar mu_, scalar gamma0, scalar f_coeff, scalar vertical_force)
gf_compute(mesh_fem MF, vec U, 'convect', mesh_fem mf_v, vec V, scalar dt, int nt[, string option[, vec per_min, vec per_max]])
説明 :
有限要素問題に対する解Uを含む種々の計算.
コマンドリスト
n = gf_compute(mesh_fem MF, vec U, 'L2 norm', mesh_im mim[, mat CVids])
(実数または複素数の)フィールド <literal>U</literal> のL2ノルムを計算します.
<literal>CVids</literal> が指定されている場合,ノルムはリストされた要素でのみ計算されます.
n = gf_compute(mesh_fem MF, vec U, 'L2 dist', mesh_im mim, mesh_fem mf2, vec U2[, mat CVids])
<literal>U</literal> と <literal>U2</literal> の間のL2距離を計算します.
<literal>CVids</literal> が指定されている場合,ノルムはリストされた要素でのみ計算されます.
n = gf_compute(mesh_fem MF, vec U, 'H1 semi norm', mesh_im mim[, mat CVids])
grad(<literal>U</literal>) のL2ノルムを計算します.
<literal>CVids</literal> が指定されている場合,ノルムはリストされた要素でのみ計算されます.
n = gf_compute(mesh_fem MF, vec U, 'H1 semi dist', mesh_im mim, mesh_fem mf2, vec U2[, mat CVids])
<literal>U</literal> と <literal>U2</literal> の間の準H1距離を計算します.
<literal>CVids</literal> が指定されている場合,ノルムはリストされた要素でのみ計算されます.
n = gf_compute(mesh_fem MF, vec U, 'H1 norm', mesh_im mim[, mat CVids])
<literal>U</literal> のH1ノルムを計算します.
<literal>CVids</literal> が指定されている場合,ノルムはリストされた要素でのみ計算されます.
n = gf_compute(mesh_fem MF, vec U, 'H2 semi norm', mesh_im mim[, mat CVids])
D^2(<literal>U</literal>) のL2ノルムを計算します.
<literal>CVids</literal> が指定されている場合,ノルムはリストされた要素でのみ計算されます.
n = gf_compute(mesh_fem MF, vec U, 'H2 norm', mesh_im mim[, mat CVids])
<literal>U</literal> のH2ノルムを計算します.
<literal>CVids</literal> が指定されている場合,ノルムはリストされた要素でのみ計算されます.
DU = gf_compute(mesh_fem MF, vec U, 'gradient', mesh_fem mf_du)
mesh_fem <literal>mf_du</literal> 上で定義されたフィールド <literal>U</literal> の勾配を計算します.
勾配はmesh_femの <literal>mf_du</literal> で補間され <literal>DU</literal> に返されます.例えば, <literal>U</literal> がP2 mesh_femで定義されている場合, <literal>DU</literal> はP1不連続mesh_femで評価されます. <literal>mf</literal> と <literal>mf_du</literal> は同じメッシュを共有する必要があります.
<literal>U</literal> は任意の数の次元を持つことができます(すなわち,この関数はスカラー場の勾配に限定されず,テンソル場にも使用できます).ただし, <literal>U</literal> の最後の次元は <literal>mf</literal> の自由度の数に等しくなければなりません.たとえば, <literal>U</literal> が [3x3xNmf] 配列(ここで,Nmfは <literal>mf</literal> の自由度の数です)の場合, <literal>DU</literal> は [Nx3x3[xQ]xNmf_du] 配列となり, N はメッシュの次元, Nmf_du は <literal>mf_du</literal> の自由度の数であり, <literal>Qdim_mf != Qdim_mf_du</literal> の場合,オプションのQ次が挿入されます,ここで, Qdim_mf は <literal>mf</literal> のQdimであり,Qdim_mf_duは <literal>mf_du</literal> のQdimです.
HU = gf_compute(mesh_fem MF, vec U, 'hessian', mesh_fem mf_h)
mesh_fem <literal>mf_h</literal> に定義されているフィールド <literal>U</literal> のHessianを計算します.
gf_compute('gradient', mesh_fem mf_du) も参照してください.
UP = gf_compute(mesh_fem MF, vec U, 'eval on triangulated surface', int Nrefine, [vec CVLIST])
[廃止された機能! 将来のリリースで削除される予定です] 2次元三角形メッシュ用に設計されたユーティリティ関数は補間されたU値を持つ三角形座標のリストを返します.これは,不連続な高次要素上で定義されたデータを正確に視覚化するために使用できます.出力では,UPの6つの最初の行は三角形座標を含み,他の行はU(三角形の頂点ごとに1つ)のCVLISTの補間された値を含み,考慮されるべき凸数のリストを示すことができ,もし使用されなければ,全てのメッシュ凸が使用されます.Uは行ベクトルでなければなりません.
Ui = gf_compute(mesh_fem MF, vec U, 'interpolate on', {mesh_fem mfi | slice sli | vec pts})
別のmesh_fem,slice,または点のリストのフィールドを補間します.
- 別のmesh_fem <literal>mfi</literal> 上の補間
<literal>mfi</literal> はLagrangianでなければなりません. <literal>mf</literal> と <literal>mfi</literal> が同じメッシュオブジェクトを共有する場合,補間は非常に高速になります.
- slice <literal>sli</literal> の補間.
これは,洗練されたP1-不連続メッシュの補間に似ていますが,はるかに高速です.また, gf_slice('points') と組み合わせて使用し,特定の点集合におけるフィールド値を取得することもできます.
点 <literal>pts</literal> の集合の補間
gf_asm('interpolation matrix') も参照
Ue = gf_compute(mesh_fem MF, vec U, 'extrapolate on', mesh_fem mfe)
フィールドを別のmesh_femに外挿します.
<literal>mfe</literal> のメッシュが <literal>mf</literal> のメッシュに厳密に含まれている場合,この関数はgf_compute('interpolate_on')と厳密に同じ処理を行います.しかし, <literal>mfe</literal> のメッシュが <literal>mf</literal> に正確に含まれていない場合(曲線状のリファインされたメッシュと粗いメッシュの間の補間を想像してください), <literal>mf</literal> 外の値が外挿されます.
gf_asm('extrapolation matrix') も参照
E = gf_compute(mesh_fem MF, vec U, 'error estimate', mesh_im mim)
事後誤差推定値を計算します.
現在,使用できるのは1つだけです.各凸に対して,法線導関数のジャンプが面に対して積分されます.
E = gf_compute(mesh_fem MF, vec U, 'error estimate nitsche', mesh_im mim, int GAMMAC, int GAMMAN, scalar lambda_, scalar mu_, scalar gamma0, scalar f_coeff, scalar vertical_force)
Nitsche法の場合,事後誤差推定値を計算します.
現在,使用できるのは1つだけです.各凸に対して,法線導関数のジャンプが面に対して積分されます.
gf_compute(mesh_fem MF, vec U, 'convect', mesh_fem mf_v, vec V, scalar dt, int nt[, string option[, vec per_min, vec per_max]])
Characteristic-Galerkin法を用いて定常状態の速度場<literal>V</literal>に関する<literal>U</literal>の対流を計算します.結果は,そのまま <literal>U</literal> で返されます.この方法は, Uの純粋なLagrange関数に限定されます. <literal>mf_v</literal> は連続有限要素法を表現します. <literal>dt</literal> は積分時間, <literal>nt</literal> は特性上の積分ステップ数です. <literal>option</literal> は,re-entrant対流がある境界部分のオプションです.最も近い要素への外挿の場合は <literal>option = 'extrapolation'</literal> で,その境界上の定数値の場合は <literal>option = 'unchanged'</literal> です,周期境界の場合は <literal>option = 'periodicity'</literal> となります.後者のオプションでは,per_min,per_maxの二つのベクトルが与えられ,周期領域(per_max[k] < per_min[k]が設定されているコンポーネントに対しては,何も実行されません)の限界を表現しなければなりません.この方法はかなり散逸的ですが,安定しています.