XLPack 7.0
XLPack 数値計算ライブラリ (C API) リファレンスマニュアル
読み取り中…
検索中…
一致する文字列を見つけられません

◆ fem3p()

void fem3p ( int  n,
int  ne,
double  x[],
double  y[],
double  z[],
int  ldknc,
int  knc[],
double  p[],
double  q[],
double  f[],
int  nb1,
int  ib[],
double  bv[],
int  nb2,
int  ldks2,
int  ks2[],
int  ldalpha,
double  alpha[],
int  ldbeta,
double  beta[],
int  asize,
double  val[],
int  rowptr[],
int  colind[],
int  base,
double  b[],
int  iwork[],
int *  info 
)

ポアソン方程式の有限要素行列の組み立て (3D) (CSR 形式疎行列)

目的
次のような一般化した三次元のポアソン方程式の有限要素行列の組み立てを行う.
-div(p(x,y,z) grad u(x,y,z)) + q(x,y,z)u(x,y,z) = f(x,y,z)
ディリクレ境界条件: u(x,y,z) = g
自然境界条件: p(x,y,z)*du/dn + α(k,l)*u(x,y,z) + β(k,l) = 0
出力行列は CSR 形式疎行列である.
引数
[in]n節点数. (n > 0)
[in]ne要素数. (ne > 0)
[in]x[]配列 x[lx] (lx >= n)
節点の x 座標.
[in]y[]配列 y[ly] (ly >= n)
節点の y 座標.
[in]z[]配列 z[lz] (lz >= n)
節点の z 座標.
[in]ldknc二次元配列 knc[] の整合寸法. (ldknc >= nn + 1, ただし nn は要素中の節点数)
[in]knc[]配列 knc[ldknc*lknc] (lknc >= ne)
コネクション行列: knc[(k-1)*ldknc] は要素 k のタイプ, knc[(k-1)*ldknc + 1], ..., knc[(k-1)*ldknc + nn] は要素 k の節点を表す.
要素タイプの値は次のとおり.
= 4: 4節点4面体.
= 5: 8節点6面体.
= 6: 6節点プリズム.
= 7: 5節点ピラミッド.
[in]p[]配列 p[lp] (lp >= n)
各ノードにおける係数 p(x, y, z).
[in]q[]配列 q[lq] (lq >= n)
各ノードにおける係数 q(x, y, z).
[in]f[]配列 f[lf] (lf >= n)
各ノードにおける係数 f(x, y, z).
[in]nb1ディリクレ境界条件の境界の節点数. (nb1 >= 0)
[in]ib[]配列 ib[lib] (lib >= nb1)
ディリクレ境界条件の境界の節点の節点番号.
[in]bv[]配列 bv[lbv] (lbv >= nb1)
境界の各節点における境界値.
[in]nb2自然境界条件の境界数. (nb2 >= 0)
[in]ldks2二次元配列 ks2[] の整合寸法. (ldks2 >= nns + 1, ただし, nns は境界要素中の節点数)
[in]ks2[]配列 ks2[ldks2*lks2] (lks2 >= nb2)
自然境界条件の境界のコネクション行列: ks2[(k-1)*ldks2] は境界要素 k のタイプ, ks2[(k-1)*ldks2 + 1], ..., ks2[(k-1)*ldks2 + nns] は境界要素 k の節点を表す.
要素タイプの値は次のとおり.
= 2: 3節点3角形.
= 3: 4節点4角形.
[in]ldalpha二次元配列 alpha[] の整合寸法. (ldalpha >= nns)
[in]alpha[]配列 alpha[ldalpha*lalpha] (lalpha >= nb2)
自然境界の各節点における係数 α.
[in]ldbeta二次元配列 beta[] の整合寸法. (ldbeta >= nns)
[in]beta[]配列 beta[ldbeta*lbeta] (lbeta >= nb2)
自然境界の各節点における係数 β.
[in]asize配列 val[] および colind[] のサイズ. 有限要素方程式の係数行列の実際の非ゼロ要素数の数倍必要である. (asize > 0)
[out]val[]val[lval] (lval >= asize)
組み立てられた有限要素方程式の係数行列 (値).
[out]rowptr[]rowptr[lrowptr] (lrowptr >= n + 1)
組み立てられた有限要素方程式の係数行列 (行ポインタ).
[out]colind[]colind[lcolind] (lcolind >= asize)
組み立てられた有限要素方程式の係数行列 (列番号).
[in]baserowptr[] および colind[] のインデクス形式.
= 0: 0-ベース(C形式): 開始インデクス値が 0.
= 1: 1-ベース(Fortran形式): 開始インデクス値が 1.
[out]b[]配列 b[lb] (lb >= n)
有限要素方程式の右辺ベクトル.
[out]iwork[]配列 iwork[liwork] (liwork >= 2*n)
作業用配列.
[out]infoリターンコード.
= 0: 正常終了.
= i < 0: (-i)番目の入力パラメータの誤り.
= 11: knc[] において要素タイプが正しくない.
= 12: 4 面体要素の体積が 0 または負.
= 13: ks2[] において境界要素タイプが正しくない.
= 14: Ks2[] において節点番号が正しくない.
= 15: 境界要素の面積が 0 または負.
= 16: A() または Ja() のサイズが不足.
= 17: 行列の組み立て中に内部エラーが発生した.