Transcript よくわかる領域分割法
よくわかる領域分割法 1TE08713M B4 北川 幸弥 目的 • 有限要素法に用いられる「領域分割法」とは 何かを参考資料をもとに理解する。 • 具体的な問題を解いてみて領域分割法への 理解を深める。 参考資料 領域分割型有限要素法による超並列計算 問題 𝜕2 𝑢 − 2 𝜕𝑥 − 𝜕2 𝑢 𝜕𝑦 2 =1 (Ω内) 𝑢=0 (𝑥 = 1, 𝑦 = 0) 法線方向成分 = 0 (領域境界上) 有限要素 要素係数マトリックス𝐴𝑒1 , 𝐴𝑒2 𝐴𝑒1 0 −1 1 1 −1 0 1 1 = −1 2 −1 , 𝐴𝑒2 = 0 1 −1 2 2 0 −1 1 −1 −1 2 要素自由項ベクトル𝑓𝑒1 , 𝑓𝑒2 1 1 1 1 𝑓𝑒1 = 1 , 𝑓𝑒2 = 1 24 24 1 1 𝐾𝑢 = 𝑓 2 −1 −1 4 0 −1 −1 0 𝐾 = 0 −2 0 0 0 0 0 0 0 0 0 −1 0 −1 0 −2 2 0 0 0 4 −2 0 −2 8 −1 0 −2 0 −1 0 0 0 −2 0 0 0 𝑢1 𝑢2 𝑢3 𝑢4 𝑢 = 𝑢5 𝑢6 𝑢7 𝑢8 𝑢9 𝑓= 0 0 0 0 −1 0 0 −1 −2 0 0 4 2 0 0 −1 −1 0 1 24 2 3 1 3 6 3 1 3 2 0 0 0 0 0 0 0 0 −2 0 0 −1 −1 0 4 −1 −1 2 𝐾𝑢 = 𝑓 2 −1 0 −1 0 0 0 0 −1 4 −1 0 −2 0 0 0 0 −1 2 0 0 −1 0 0 1 −1 0 0 4 −2 0 0 0 𝐾= 2 0 −2 0 −2 8 −2 −2 0 0 0 −1 0 −2 4 0 −1 0 0 0 0 −2 0 4 −1 0 0 0 −1 −1 2 0 0 𝑢1 𝑢2 𝑢3 𝑢4 𝑢= 𝑢 5 𝑢6 𝑢8 𝑢9 𝑓= 1 24 2 3 1 3 6 3 3 2 結果(前進消去・後退代入) • 手計算 29 = 1.20833 ⋯ 24 31 𝑢2 = = 1.29166 ⋯ 24 4 𝑢3 = = 1.33333 ⋯ 3 23 𝑢4 = = 0.95833 ⋯ 24 57 𝑢5 = = 1.1875 48 31 𝑢6 = = 1.29166 ⋯ 24 23 𝑢8 = = 0.95833 ⋯ 24 29 𝑢9 = = 1.20833 ⋯ 24 𝑢1 = • プログラム Total Matrix is 1.0000 -0.5000 0.0000 -0.5000 0.0000 0.0000 0.0000 0.0000 -0.5000 2.0000 -0.5000 0.0000 -1.0000 0.0000 0.0000 0.0000 0.0000 -0.5000 1.0000 0.0000 0.0000 -0.5000 0.0000 0.0000 -0.5000 0.0000 0.0000 2.0000 -1.0000 0.0000 0.0000 0.0000 0.0000 -1.0000 0.0000 -1.0000 4.0000 -1.0000 -1.0000 0.0000 0.0000 0.0000 -0.5000 0.0000 -1.0000 2.0000 0.0000 -0.5000 0.0000 0.0000 0.0000 0.0000 -1.0000 0.0000 2.0000 -0.5000 0.0000 0.0000 0.0000 0.0000 0.0000 -0.5000 -0.5000 1.0000 Total vector is 0.08333333 0.125 0.04166667 0.125 0.250 0.125 0.125 0.08333333 u[0]= 1.20833e+00 u[1]= 1.29167e+00 u[2]= 1.33333e+00 u[3]= 9.58333e-01 u[4]= 1.18750e+00 u[5]= 1.29167e+00 u[6]= 9.58333e-01 u[7]= 1.20833e+00 領域分割法 (𝑖) 領域Ω→領域Ω 𝑢1 𝑢2 𝑢3 𝑢 𝑢 = 𝑢4 5 𝑢6 𝑢8 𝑢9 𝑅 (1) 𝑇 𝑅 (3) 𝑇 1 = 0 0 0 → 𝑢(1) 0 1 0 0 0 0 0 0 0 0 1 0 𝑢2 𝑢5 𝑢1 𝑢4 𝑢 𝑢 𝑢 = 𝑢2 , 𝑢(2) = 𝑢3 , 𝑢(3) = 𝑢5 , 𝑢(4) = 𝑢6 4 5 8 𝑢 8 𝑢5 𝑢6 𝑢9 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 , 𝑅 (2) 𝑇 = 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 𝑇 = 0 0 0 0 1 0 0 0 , 𝑅(4) = 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 𝐾→ K (1) 𝐾 (1) = (𝑖) 𝐾 ① ② ④ ⑤ 1 + 1 −1 −1 0 + 0 1 −1 −1 0 2 = −1 0 2 2 −1 0 + 0 −1 −1 1 + 1 1 2 𝐾 (3) = 2 −1 −1 −1 2 0 −1 0 2 0 −1 −1 1 2 2 −1 −1 2 0 −1 0 −1 ,𝐾 (2) = 1 2 −1 2 0 1 −1 ,𝐾 (4) = 2 2 ① ② ④ ⑤ 2 −1 −1 2 −1 0 0 −1 2 −1 −1 2 −1 0 0 −1 タイプ1 タイプ2 −1 0 0 −1 2 −1 −1 2 −1 0 0 −1 2 −1 −1 2 𝑓→ 𝑓 𝐾 (1) 𝑓 (1) = 1 24 1+1 1 1 = 24 1 1+1 2 1 , 𝑓 (2) = 1 24 1 2 (𝑖) ① ② ④ ⑤ 2 2 1 1 1 , 𝑓 (3) = (4) 1 , 𝑓 = 24 24 1 2 2 2 1 1 2 𝑢 (𝑖) (𝑖) → 領域内部𝑢𝐼 +領域間境界上𝑢𝐵 𝑢9 𝑢1 𝑢3 𝑢4 𝑢 𝑢 𝑢 𝑢(1) = 𝑢2 , 𝑢(2) = 𝑢2 , 𝑢(3) = 𝑢5 , 𝑢(4) = 𝑢5 4 5 6 𝑢 8 𝑢5 𝑢6 𝑢8 𝑢2 𝑢2 𝑢𝐼 (1) = 𝑢1 , 𝑢𝐵 (1) = 𝑢4 , 𝑢𝐼 (2) = 𝑢3 , 𝑢𝐵 (2) = 𝑢5 𝑢5 𝑢6 𝑢4 𝑢5 𝑢𝐼 (3) = 𝑢7 = 0, 𝑢𝐵 (3) = 𝑢5 , 𝑢𝐼 (4) = 𝑢9 , 𝑢𝐵 (4) = 𝑢6 𝑢8 𝑢8 (𝑖) 同様に、 𝐾 (1) = 1 2 𝐾 (3) = 𝑓 (1) = 𝑅(1) 1 0 0 = 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 2 −1 −1 0 1 2 1 24 −1 −1 0 2 0 −1 ,𝐾 (2) = 1 2 0 2 −1 −1 −1 2 2 −1 0 −1 −1 2 −1 0 0 −1 2 −1 −1 0 −1 2 2 0 −1 −1 2 −1 0 1 0 2 −1 −1 −1 2 −1 ,𝐾 (4) = 2 −1 −1 2 0 0 −1 2 −1 −1 0 2 2 1 , 𝑓 (2) = 1 24 1 2 1 2 2 , 𝑓 (3) = 1 1 , 𝑓 (4) = 1 24 24 1 2 2 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 , 𝑅 (2) = 0 0 0 0 , 𝑅(3) = 1 1 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 2 2 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 , 𝑅(4) = 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 0 0 0 0 0 1 𝐾𝐼𝐼 (1) 𝐾𝐼𝐼 (2) 𝐾𝐼𝐼 𝐾𝐼𝐼 (4) = 1, 𝐾𝐼𝐵 1 1 = −1 2 = 1, 𝐾𝐼𝐵 2 1 = −1 2 (3) = 0, 𝐾𝐼𝐵 3 = 0 = 1, 𝐾𝐼𝐵 1 = −1 2 (1) 1 (1) = 12 , 𝑓𝐵 = 𝑓𝐼 (3) = 0, 𝑓𝐵 (3) = 1 0 𝑅𝐼 (1) = 1, 𝑅𝐵 (1) = 0 0 0 0 1 (3) (3) 𝑅𝐼 = 0, 𝑅𝐵 = 0 0 0 0 −1 , 𝐾𝐵𝐵 (2) 0 0 , 𝐾𝐵𝐵 4 𝑓𝐼 −1 0 , 𝐾𝐵𝐵 (1) (3) −1 0 , 𝐾𝐵𝐵 1 24 1 24 0 1 0 0 0 0 0 1 0 0 0 −1 1 2 = 0 2 −1 2 −1 −1 2 1 2 −1 0 = −1 2 −1 2 0 −1 2 1 2 = −1 2 0 (4) −1 0 2 −1 −1 2 1 2 −1 −1 = −1 2 0 2 −1 0 2 1 1 1 (2) (2) 1 , 𝑓𝐼 = 24 , 𝑓𝐵 = 24 2 2 1 1 (4) (4) 1 , 𝑓𝐼 = 12 , 𝑓𝐵 = 24 2 0 0 1 , 𝑅𝐼 (2) = 1, 𝑅𝐵 (2) = 0 0 0 0 0 , 𝑅𝐼 (4) = 1, 𝑅𝐵 (4) = 0 1 1 0 0 0 0 0 0 1 0 0 2 1 2 2 1 1 0 0 1 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 1 全体の領域間境界𝑢𝐵 → 部分領域間境界𝑢𝐵 (𝑖) 𝑢2 𝑢4 𝑢𝐵 = 𝑢5 𝑢6 𝑢8 𝑅𝐵 → 𝑢𝐵 (1) (1) 𝑇 𝑅𝐵 (3) 𝑇 1 = 0 0 0 = 0 0 𝑢2 𝑢2 𝑢4 𝑢5 = 𝑢4 , 𝑢𝐵 (2) = 𝑢5 , 𝑢𝐵 (3) = 𝑢5 , 𝑢𝐵 (4) = 𝑢6 𝑢5 𝑢6 𝑢8 𝑢8 0 1 0 1 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 𝑇 0 , 𝑅𝐵 (2) = 0 0 𝑇 0 , 𝑅𝐵 (4) = 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 1 0 1 0 0 0 0 0 0 1 𝐾𝑢 = 𝑓の分割 領域内部 領域間境界上 インタフェース問題 𝐾𝐵𝐵 (1) 𝐾𝐵𝐵 (2) −𝐾𝐼𝐵 −𝐾𝐼𝐵 (1) 𝑇 (2) 𝑇 𝐾𝐵𝐵 𝐾𝐵𝐵 (4) −𝐾𝐼𝐵 𝐾𝐼𝐼 𝐾𝐼𝐼 (3) (4) 𝑇 (1) −1 (2) −1 −𝐾𝐼𝐵 𝐾𝐼𝐼 𝐾𝐼𝐵 (1) 𝐾𝐼𝐵 (2) (3) 𝑇 (4) −1 𝐾𝐼𝐼 𝐾𝐼𝐵 1 2 = 0 2 −1 0 2 −1 −1 1 −1 1 −1 − −1 ∙ −1 2 2 2 0 1 2 = −1 2 0 −1 2 −1 0 1 −1 1 −1 − 0 ∙ −1 2 2 2 −1 (3) −1 (4) 𝐾𝐼𝐵 (3) 1 2 = −1 2 −1 1 2 = −1 2 0 −1 2 0 −1 2 −1 1 3 0 = −1 4 −2 −1 3 −2 −2 −2 4 1 3 −1 = −2 4 −1 −2 4 −2 −1 −2 3 −2 3 −1 −2 −1 3 −1 0 0 1 2 −1 − 0 = −1 2 2 0 −1 1 0 1 0 − −1 ∙ 0 2 2 2 −1 −1 −1 2 −1 0 −1 2 1 4 −1 = −2 4 −2 𝑓𝐵 (1) 𝑓𝐵 −𝐾𝐼𝐵 (2) −𝐾𝐼𝐵 𝑓𝐵 𝑓𝐵 (4) (1) 𝑇 (3) −𝐾𝐼𝐵 𝑅𝐵 𝑅𝐵 (3) (2) 𝑇 −𝐾𝐼𝐵 (4) 𝑇 (1) 𝑇 𝑇 𝐾𝐼𝐼 𝐾𝐼𝐼 𝐾𝐼𝐼 (4) −1 0 1 0 1 0 0 𝑓𝐼 (2) −1 (3) 𝑇 𝐾𝐼𝐼 1 = 0 0 0 = 0 0 (1) −1 0 0 1 0 1 0 (1) 𝑓𝐼 1 1 1 −1 1 1 2 = = 1 − −1 ∙ 2 ∙ 2 24 2 24 24 2 0 2 (2) (3) −1 𝑓𝐼 (4) 0 0 0 0 0 0 1 2 1 −1 1 1 5 = = 1 − 0 ∙ 2 24 2 24 48 2 −1 5 𝑓𝐼 (1) 1 2 1 2 = 1 −0= 1 24 24 2 2 1 2 1 0 1 1 2 = = 1 − −1 ∙ 2 ∙ 2 24 2 24 24 1 −1 2 0 𝑇 0 , 𝑅𝐵 (2) = 0 0 𝑇 0 , 𝑅𝐵 (4) = 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 1 0 1 0 0 0 0 0 0 1 6 −1 −4 −1 0 0 1 −1 7 −4 0 1 −4 −4 16 −4 −4 = 4 −1 0 −4 6 −1 48 0 0 −4 −1 7 ↑ シュアコンプリメント行列 9 8 12 9 8 結果(領域間境界) • 手計算 31 𝑢2 = = 1.29166 ⋯ 24 23 𝑢4 = = 0.95833 ⋯ 24 57 𝑢5 = = 1.1875 48 31 𝑢6 = = 1.29166 ⋯ 24 23 𝑢8 = = 0.95833 ⋯ 24 • プログラム Total Matrix is 1.5000 -0.2500 -1.0000 -0.2500 0.0000 -0.2500 1.7500 -1.0000 0.0000 0.0000 -1.0000 -1.0000 4.0000 -1.0000 -1.0000 -0.2500 0.0000 -1.0000 1.5000 -0.2500 0.0000 0.0000 -1.0000 -0.2500 1.7500 Total vector is 0.1875 0.16666667 0.2500 0.1875 0.16666667 u[0]= 1.29167e+00 u[1]= 9.58333e-01 u[2]= 1.18750e+00 u[3]= 1.29167e+00 u[4]= 9.58333e-01 結果(領域内部) 𝑢𝐼 (1) 𝑢𝐼 (2) = 𝐾𝐼𝐼 (1) −1 = 𝐾𝐼𝐼 (2) −1 𝑓𝐼 (1) 𝑓𝐼 − 𝐾𝐼𝐵 (2) (1) − 𝐾𝐼𝐵 𝑢𝐵 (2) (1) 𝑢𝐵 (2) −1 1 62 0 ∙ 46 48 114 = 29 24 0 1 62 −1 ∙ 114 48 62 = 4 3 −1 1 114 −1 ∙ 62 48 46 = 29 24 1 1 =1∙ − −1 12 2 1 1 = 1∙ − −1 24 2 𝑢𝐼 (3) = 𝑢7 = 0 𝑢𝐼 (4) = 𝐾𝐼𝐼 (4) −1 𝑓𝐼 (4) − 𝐾𝐼𝐵 (4) 𝑢𝐵 (4) 1 1 =1∙ − 0 12 2 結果(領域分割法) • 領域分割法 29 𝑢1 = = 1.20833 ⋯ 24 31 𝑢2 = = 1.29166 ⋯ 24 4 𝑢3 = = 1.33333 ⋯ 3 23 𝑢4 = = 0.95833 ⋯ 24 57 𝑢5 = = 1.1875 48 31 𝑢6 = = 1.29166 ⋯ 24 23 𝑢8 = = 0.95833 ⋯ 24 29 𝑢9 = = 1.20833 ⋯ 24 • 直接法(基礎式) 29 = 1.20833 ⋯ 24 31 𝑢2 = = 1.29166 ⋯ 24 4 𝑢3 = = 1.33333 ⋯ 3 23 𝑢4 = = 0.95833 ⋯ 24 57 𝑢5 = = 1.1875 48 31 𝑢6 = = 1.29166 ⋯ 24 23 𝑢8 = = 0.95833 ⋯ 24 29 𝑢9 = = 1.20833 ⋯ 24 𝑢1 = 今後に向けて • インターフェース問題に対するCG法のアルゴ リズムを理解する。