|
|
◆ Fem3p()
| Sub Fem3p |
( |
N As |
Long, |
|
|
Ne As |
Long, |
|
|
X() As |
Double, |
|
|
Y() As |
Double, |
|
|
Z() As |
Double, |
|
|
Knc() As |
Long, |
|
|
P() As |
Double, |
|
|
Q() As |
Double, |
|
|
F() As |
Double, |
|
|
Nb1 As |
Long, |
|
|
Ib() As |
Long, |
|
|
Bv() As |
Double, |
|
|
Nb2 As |
Long, |
|
|
Ks2() As |
Long, |
|
|
Alpha() As |
Double, |
|
|
Beta() As |
Double, |
|
|
Val() As |
Double, |
|
|
Rowptr() As |
Long, |
|
|
Colind() As |
Long, |
|
|
B() As |
Double, |
|
|
Info As |
Long, |
|
|
Optional Base As |
Long = 0 |
|
) |
| |
ポアソン方程式の有限要素行列の組み立て (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 - 1) (LX >= N)
節点の X 座標. |
| [in] | Y() | 配列 Y(LY - 1) (LY >= N)
節点の Y 座標. |
| [in] | Z() | 配列 Z(LZ - 1) (LZ >= N)
節点の Z 座標. |
| [in] | Knc() | 配列 Knc(LKnc1 - 1, LKnc2 - 1) (LKnc1 >= Nn + 1, LKnc2 >= Ne)
コネクション行列: Knc(0, K-1) は要素 K のタイプ, Knc(1, K-1), ..., Knc(Nn, K-1) は要素 K の節点を示す (Nn は要素中の節点数).
要素タイプの値は次のとおり.
= 4: 4節点4面体.
= 5: 8節点6面体.
= 6: 6節点プリズム.
= 7: 5節点ピラミッド. |
| [in] | P() | 配列 P(LP - 1) (LP >= N)
各ノードにおける係数 p(x, y, z). |
| [in] | Q() | 配列 Q(LQ - 1) (LQ >= N)
各ノードにおける係数 q(x, y, z). |
| [in] | F() | 配列 F(LF - 1) (LF >= N)
各ノードにおける係数 f(x, y, z). |
| [in] | Nb1 | ディリクレ境界条件の境界の節点数. (Nb1 >= 0) |
| [in] | Ib() | 配列 Ib(LIb - 1) (LIb >= Nb1)
ディリクレ境界条件の境界の節点の節点番号. |
| [in] | Bv() | 配列 Bv(LBv - 1) (LBv >= Nb1)
境界の各節点における境界値. |
| [in] | Nb2 | 自然境界条件の境界数. (Nb2 >= 0) |
| [in] | Ks2() | 配列 Ks2(LKs21 - 1, LKs22 - 1) (LKs21 >= Nns + 1, LKs22 >= Nb2)
自然境界条件の境界のコネクション行列: Ks2(0, K-1) は境界要素 K のタイプ, Ks2(1, K-1), ..., Ks2(Nns, K-1) は境界要素 K の節点を示す (Nns は境界要素中の節点数を示す).
要素タイプの値は次のとおり.
= 2: 3節点3角形.
= 3: 4節点4角形. |
| [in] | Alpha() | 配列 Alpha(LAlpha1 - 1, LAlpha2 - 1) (LAlpha1 >= Nns, LAlpha2 >= Nb2)
自然境界の各節点における係数 α. |
| [in] | Beta() | 配列 Beta(LBeta1 - 1, LBeta2 - 1) (LBeta1 >= Nns, LBeta2 >= Nb2)
自然境界の各節点における係数 β. |
| [out] | Val() | 配列 Val(LVal - 1) (LVal >= Nnz (Nnz は有限要素方程式の係数行列の実際の非ゼロ要素数の数倍必要である))
組み立てられた有限要素方程式の係数行列 (値). |
| [out] | Rowptr() | 配列 Rowptr(LRowptr - 1) (LRowptr >= N + 1)
組み立てられた有限要素方程式の係数行列 (ポインタ). |
| [out] | Colind() | 配列 Colind(LColind - 1) (LColind >= Nnz)
組み立てられた有限要素方程式の係数行列 (列番号). |
| [out] | B() | 配列 B(LB - 1) (LB >= N)
有限要素方程式の右辺ベクトル. |
| [out] | Info | リターンコード.
= 0: 正常終了.
= i < 0: (-i)番目の入力パラメータの誤り.
= 11: knc[] において要素タイプが正しくない.
= 12: 4 面体要素の体積が 0 または負.
= 13: ks2[] において境界要素タイプが正しくない.
= 14: Ks2[] において節点番号が正しくない.
= 15: 境界要素の面積が 0 または負.
= 16: Val() または Colind() のサイズが不足.
= 17: 行列の組み立て中に内部エラーが発生した. |
| [in] | Base | (省略可)
Rowind() および Colind() のインデクス形式. (省略時 = 0)
= 0: 0-ベース(C形式): 開始インデクス値が 0.
= 1: 1-ベース(Fortran形式): 開始インデクス値が 1. |
|