超音波流体屋のプログラム備忘録

三角形要素・四面体要素

最終更新:

usapfrog

- view
管理者のみ編集可
形状関数 $N= ^t \{ N_1, N_2, \cdots, N_n \}$の中身、その1。高次要素はやりません。

一次補完

ある物理量$f$を一次関数で補完する。
$f= ax + by + cz + o = \{x\ y\ z\ 1 \} \left\{ \begin{array}{c} a \\ b \\ c \\ o \end{array} \right\} = {}^t\tilde{\bf x} {\bf a} $

二次元空間上なら3節点、三次元空間上なら4節点あれば係数$o, a, b, c$を決定できる。
四面体で導出するが、三角形は$c, z$を削るだけなので問題ないはず。
$ \left\{ \begin{array}{c} f_1 \\ f_2 \\ f_3 \\ f_4 \end{array} \right\} = \left[ \begin{array}{cccc} x_1 & y_1 & z_1 & 1 \\ x_2 & y_2 & z_2 & 1 \\ x_3 & y_3 & z_3 & 1 \\ x_4 & y_4 & z_4 & 1 \end{array} \right] \left\{ \begin{array}{c} a \\ b \\ c \\ o \end{array} \right\}$

${\bf f} = X {\bf a} \ \Rightarrow \ {\bf a} = X^{-1} {\bf f}$ 後のテンソル表記が煩雑なので $ Y \equiv X^{-1}$
クラメルの公式で手で解ける範囲だが、逆行列は適当にライブラリか関数組んで求めるほうがいいと思う。長いし。

よって、
$f= {}^t\tilde{\bf x} {\bf a} = {}^t\tilde{\bf x} Y {\bf f}$

形状関数の定義より
$ {\bf N} = {}^t\tilde{\bf x} Y $ テンソル表記では$ N_n = {}^t\tilde{x}_{k} Y_{kn} $

微分

$ \frac{\partial {}^t\tilde{x_k}}{\partial x_i} = \delta_{ik},\ \frac{\partial Y}{\partial {\bf x}} = O$ なので、

$ \nabla_i N_n = N_{n,i} = \delta_{ik} Y_{kn} = Y_{in} $
要素内座標系に依存しない定数なので、数値積分の必要なし。

つまり、積分前係数行列の導出のK行列は
$ [K]_{mn} = [\tilde{K}]_{mn} dV = Y_{im} Y_{in} dV $

ただし、体積は行列式からわかって
$dV = n(d) \left|\det X\right|,\hspace{2em} n(d) = \{1, 1/2, 1/6 \} \ (\textrm{for } d=1,2,3)$ dは次元数


質量行列のほうはまじめに数値積分についてはしてもいいけど、各質量を対角要素に割り振って解くことの方が多い。
$ [M]_{mn} = \delta_{mn} \frac{dV}{\sum_n 1}$

弾性運動方程式の${\cal K}, {\cal M}$は $N_{n,i}, M_{mn}$から積分前係数行列の導出に従い代入する。

添付ファイル
目安箱バナー