• 検索結果がありません。

応用数値解析特論 第 13 回

N/A
N/A
Protected

Academic year: 2021

シェア "応用数値解析特論 第 13 回"

Copied!
43
0
0

読み込み中.... (全文を見る)

全文

(1)

応用数値解析特論 第 13

〜定常Navier-Stokes方程式に対するNewton法〜

かつらだ

桂田

ま さ し

祐史

http://nalab.mind.meiji.ac.jp/~mk/ana/

20201221

(2)

目次

1 本日の講義内容、連絡事項

2 Navier-Stokes方程式に対する有限要素解析

定常Navier-Stokes方程式に対するNewton

例題プログラムの紹介 領域

領域の三角形分割 方程式

問題点と対処の方針 Newton法の復習

我々の問題でのf f は?

Newton反復の弱形式 プログラム中の弱形式解読 初期値の選択

余談: Oseen方程式

3 少し時間が経ってからの訂正と追加

4 参考文献

かつらだ 桂 田

まさし

祐 史 応用数値解析特論 第13 20201221 2 / 22

(3)

本日の講義内容、連絡事項

当初は、第13回で定常Navier-Stokes方程式に対するNewton法と非定常

Navier-Stokes方程式に対する特性曲線有限要素法の解説をする予定で

あったが、真面目に説明を用意したところ、思いの外 Newton法の説明 が長くなってしまった。

しかし、この手の話は意外ときちんと説明されないことが多いので(とい うかきちんとした説明を目にしたことがない)、時間をかけて説明するこ とも意味があるだろうと考え直した次第。

参考に出来る資料を知らないので、意外とてこずりました。

(4)

11.4 定常 Navier-Stokes 方程式に対する Newton 法

11.4.1例題プログラムの紹介

前回、定常Stokes方程式を有限要素法で解いた。今回は定常

Navier-Stokes方程式を有限要素法で解いてみよう。

例題プログラムは FreeFem++ 4.7に付属する

/usr/local/ff++/share/FreeFEM/4.7-1/examples/examples/NSNewton.edp (2012 January, Hecht)

である。

ターミナルでこうすればコピーできる

cp -p /usr/local/ff++/share/FreeFEM/4.7-1/examples/examples/NSNewton.edp .

これはマニュアル (Hecht [1]) §2.12 に掲載されているプログラムとほ ぼ同じである (本来完全に同じにすべきであろう)

かつらだ 桂 田

まさし

祐 史 応用数値解析特論 第13 20201221 4 / 22

(5)

11.4.2 領域

Ce+Beb+Beo+Beu−Cc で囲まれる領域とする。ただし、R= 5,L= 15, Ce : (x,y) = (Rcost,Rsint) (t[π/2,3π/2]),

Cc : (x,y) = ((cost)/2,(sint)/2) (t[0,2π]), Beb : (x,y) = (Lt1.2,−R) (t[0,1]),

−Beu: (x,y) = (Lt1.2,R) (t[0,1]), Beo : (x,y) = (L,t) (t[−R,R]).

図1:領域Ω (∂Ω =Ce+Beb+Beo+Beu−Cc)

(6)

11.4.2 領域

Γ1:=−Cc+Ce+Beb+Beu, Γ2:=Beo

とおく。Γ1Γ2=∂Ωである。

Beb(x,y) = (Lt,R) (t[0,1])と書いても同じことであるが、FreeFem++ではt ついて等分することを想定してプログラムを書いたため、この式を採用しているのであ ろう。(こういう工夫が実際に効果があるのかどうかは分からない。)

Beu はプログラムでは

border beu(tt=1, 0){real t=tt^1.2; x=t*L; y=R; label=1;}

として与えられている。FreeFem++では、tt=1,0と書くことで、パラメーターが1 0まで減少する曲線を表すことが出来る、ということであろう(こういうことが出来 ることは、このプログラムを見て初めて知った)

かつらだ 桂 田

まさし

祐 史 応用数値解析特論 第13 20201221 6 / 22

(7)

11.4.2 領域

Γ1:=−Cc+Ce+Beb+Beu, Γ2:=Beo

とおく。Γ1Γ2=∂Ωである。

Beb(x,y) = (Lt,R) (t∈[0,1])と書いても同じことであるが、FreeFem++ではt ついて等分することを想定してプログラムを書いたため、この式を採用しているのであ ろう。(こういう工夫が実際に効果があるのかどうかは分からない。)

Beu はプログラムでは

border beu(tt=1, 0){real t=tt^1.2; x=t*L; y=R; label=1;}

として与えられている。FreeFem++では、tt=1,0と書くことで、パラメーターが1 0まで減少する曲線を表すことが出来る、ということであろう(こういうことが出来 ることは、このプログラムを見て初めて知った)

(8)

11.4.2 領域

Γ1:=−Cc+Ce+Beb+Beu, Γ2:=Beo

とおく。Γ1Γ2=∂Ωである。

Beb(x,y) = (Lt,R) (t∈[0,1])と書いても同じことであるが、FreeFem++ではt ついて等分することを想定してプログラムを書いたため、この式を採用しているのであ ろう。(こういう工夫が実際に効果があるのかどうかは分からない。)

Beuはプログラムでは

border beu(tt=1, 0){real t=tt^1.2; x=t*L; y=R; label=1;}

として与えられている。FreeFem++では、tt=1,0と書くことで、パラメーターが1 0まで減少する曲線を表すことが出来る、ということであろう(こういうことが出来 ることは、このプログラムを見て初めて知った)

かつらだ 桂 田

まさし

祐 史 応用数値解析特論 第13 20201221 6 / 22

(9)

11.4.3 領域の三角形分割

三角形分割をする際に

Bei: (x,y) = (L/2,t) (t[−R/4,R/4]) という曲線(線分)も用いている。

Th=buildmesh(cc(-40)+ce(20)+beb(15)+beu(15)+beo(8)+bei(10));

図2:領域の三角形分割. 中央部にBei (朱色の線分)が見える

(10)

11.4.4 方程式

このプログラムが解く問題の方程式は(境界条件が、マニュアルにも、プログラムの注釈 にも明記されていないが…)、多分、次のものである。

(u· ∇)u−ν△u+∇p= 0 in Ω, (1a)

∇ ·u= 0 in Ω, (1b)

u=U on Γ1\Cc, (1c)

u=0 onCc, (1d)

−pn+ν∂u

∂n =0 onBeo. (1e)

(判断の根拠: 1というラベルをつけたΓ1δu=0としていることから、そこで Dirichlet境界条件をつけているのだろう。初期値u0

u0=

(1,0) (x2+y2>2) (0,0) (x2+y22)

であったから、δuCc では0, Γ1\Cc =Ce+Beb+Beu では(1,0)である。) (1e)は自然境界条件である(弱形式にはexplicitに現れない— Poisson方程式の問題に おける同次Neumann境界条件のようなもの)

一様流(u=U:= (1,0))の中に置かれた円柱の周りの流れを求めよという問題である。 前回講義スライド14ページ「もう1つの弱形式」と類似点が多い。見比べてみよう。

かつらだ 桂 田

まさし

祐 史 応用数値解析特論 第13 20201221 8 / 22

(11)

11.4.4 方程式

このプログラムが解く問題の方程式は(境界条件が、マニュアルにも、プログラムの注釈 にも明記されていないが…)、多分、次のものである。

(u· ∇)u−ν△u+∇p= 0 in Ω, (1a)

∇ ·u= 0 in Ω, (1b)

u=U on Γ1\Cc, (1c)

u=0 onCc, (1d)

−pn+ν∂u

∂n =0 onBeo. (1e)

(判断の根拠: 1というラベルをつけたΓ1δu=0としていることから、そこで Dirichlet境界条件をつけているのだろう。初期値u0

u0=

(1,0) (x2+y2>2) (0,0) (x2+y22)

であったから、δuCc では0, Γ1\Cc =Ce+Beb+Beu では(1,0)である。)

(1e)は自然境界条件である(弱形式にはexplicitに現れない— Poisson方程式の問題に おける同次Neumann境界条件のようなもの)

一様流(u=U:= (1,0))の中に置かれた円柱の周りの流れを求めよという問題である。 前回講義スライド14ページ「もう1つの弱形式」と類似点が多い。見比べてみよう。

(12)

11.4.4 方程式

このプログラムが解く問題の方程式は(境界条件が、マニュアルにも、プログラムの注釈 にも明記されていないが…)、多分、次のものである。

(u· ∇)u−ν△u+∇p= 0 in Ω, (1a)

∇ ·u= 0 in Ω, (1b)

u=U on Γ1\Cc, (1c)

u=0 onCc, (1d)

−pn+ν∂u

∂n =0 onBeo. (1e)

(判断の根拠: 1というラベルをつけたΓ1δu=0としていることから、そこで Dirichlet境界条件をつけているのだろう。初期値u0

u0=

(1,0) (x2+y2>2) (0,0) (x2+y22)

であったから、δuCc では0, Γ1\Cc =Ce+Beb+Beu では(1,0)である。) (1e)は自然境界条件である(弱形式にはexplicitに現れない— Poisson方程式の問題に おける同次Neumann境界条件のようなもの)

一様流(u=U:= (1,0))の中に置かれた円柱の周りの流れを求めよという問題である。 前回講義スライド14ページ「もう1つの弱形式」と類似点が多い。見比べてみよう。

かつらだ 桂 田

まさし

祐 史 応用数値解析特論 第13 20201221 8 / 22

(13)

11.4.4 方程式

このプログラムが解く問題の方程式は(境界条件が、マニュアルにも、プログラムの注釈 にも明記されていないが…)、多分、次のものである。

(u· ∇)u−ν△u+∇p= 0 in Ω, (1a)

∇ ·u= 0 in Ω, (1b)

u=U on Γ1\Cc, (1c)

u=0 onCc, (1d)

−pn+ν∂u

∂n =0 onBeo. (1e)

(判断の根拠: 1というラベルをつけたΓ1δu=0としていることから、そこで Dirichlet境界条件をつけているのだろう。初期値u0

u0=

(1,0) (x2+y2>2) (0,0) (x2+y22)

であったから、δuCc では0, Γ1\Cc =Ce+Beb+Beu では(1,0)である。) (1e)は自然境界条件である(弱形式にはexplicitに現れない— Poisson方程式の問題に おける同次Neumann境界条件のようなもの)

一様流(u=U:= (1,0))の中に置かれた円柱の周りの流れを求めよという問題である。

前回講義スライド14ページ「もう1つの弱形式」と類似点が多い。見比べてみよう。

(14)

11.4.4 方程式

このプログラムが解く問題の方程式は(境界条件が、マニュアルにも、プログラムの注釈 にも明記されていないが…)、多分、次のものである。

(u· ∇)u−ν△u+∇p= 0 in Ω, (1a)

∇ ·u= 0 in Ω, (1b)

u=U on Γ1\Cc, (1c)

u=0 onCc, (1d)

−pn+ν∂u

∂n =0 onBeo. (1e)

(判断の根拠: 1というラベルをつけたΓ1δu=0としていることから、そこで Dirichlet境界条件をつけているのだろう。初期値u0

u0=

(1,0) (x2+y2>2) (0,0) (x2+y22)

であったから、δuCc では0, Γ1\Cc =Ce+Beb+Beu では(1,0)である。) (1e)は自然境界条件である(弱形式にはexplicitに現れない— Poisson方程式の問題に おける同次Neumann境界条件のようなもの)

一様流(u=U:= (1,0))の中に置かれた円柱の周りの流れを求めよという問題である。

前回講義スライド14ページ「もう1つの弱形式」と類似点が多い。見比べてみよう。

かつらだ 桂 田

まさし

祐 史 応用数値解析特論 第13 20201221 8 / 22

(15)

部分積分公式

今回弱形式を導くのに必要な部分積分公式は以下のものである。

△u·v dx =

∂Ω

∂u

∂n ·v dσ−

∇u :∇v dx, (2)

∇p·v dx =

∂Ω

pv ·n dσ−

p∇ ·v dx.

(3)

(自力で確認できると思われるが、桂田[2]の付録Bに一応書いてある。)

(16)

11.4.5 問題点と対処の方針

問題になることと、それへの対処について、次の2点を指摘しておく。

(a) Navier-Stokes方程式は非線形方程式であるので、一度に解を求めるのが難しい。

Newton法を用いて解くことにする。

(b) 動粘性係数ν=2001 は素朴な数値計算にとっては、かなり小さい(“円柱の直径1 であるから、これを代表的な長さ、∥U∥= 1を代表的な速さに選ぶと、νの逆数が ReynoldsRe に相当するので、Re = 200ということになり、これが実はかなり 大きい、ということである)Newton法の初期値は真の解に十分近いものを選ばな いと、反復が収束しないかもしれない。そのため、大きめのνについての解を求 め、それを小さいν の問題のNewton法の初期値とすることで、解きたいνに近づ いていく。

かつらだ 桂 田

まさし

祐 史 応用数値解析特論 第13 20201221 10 / 22

(17)

11.4.5 問題点と対処の方針

問題になることと、それへの対処について、次の2点を指摘しておく。

(a) Navier-Stokes方程式は非線形方程式であるので、一度に解を求めるのが難しい。

Newton法を用いて解くことにする。

(b) 動粘性係数ν=2001 は素朴な数値計算にとっては、かなり小さい(“円柱の直径1 であるから、これを代表的な長さ、∥U∥= 1を代表的な速さに選ぶと、νの逆数が ReynoldsRe に相当するので、Re = 200ということになり、これが実はかなり 大きい、ということである)Newton法の初期値は真の解に十分近いものを選ばな いと、反復が収束しないかもしれない。そのため、大きめのνについての解を求 め、それを小さいν の問題のNewton法の初期値とすることで、解きたいνに近づ いていく。

(18)

11.4.5 問題点と対処の方針

問題になることと、それへの対処について、次の2点を指摘しておく。

(a) Navier-Stokes方程式は非線形方程式であるので、一度に解を求めるのが難しい。

Newton法を用いて解くことにする。

(b) 動粘性係数ν=2001 は素朴な数値計算にとっては、かなり小さい(“円柱の直径1 であるから、これを代表的な長さ、∥U∥= 1を代表的な速さに選ぶと、νの逆数が ReynoldsRe に相当するので、Re = 200ということになり、これが実はかなり 大きい、ということである)Newton法の初期値は真の解に十分近いものを選ばな いと、反復が収束しないかもしれない。そのため、大きめのνについての解を求 め、それを小さいν の問題のNewton法の初期値とすることで、解きたいνに近づ いていく。

かつらだ 桂 田

まさし

祐 史 応用数値解析特論 第13 20201221 10 / 22

(19)

11.4.6 Newton 法の復習

方程式f(u) = 0の近似解を求めるためのNewton法とは、まず適当な初期値u0 を選 び、漸化式

(4) ui+1=ui−f(ui)1f(ui)

により{ui}を定め、十分大きなi に対して、ui を近似解に採用する、というものである。

(4)は、f(u) = 0u=ui で線形近似した

f(ui)(u−ui) +f(ui) = 0 の解をui+1 とする、ということである。

wi :=f(ui)1f(ui)とおくと、wi f(ui)wi =f(ui)の解であることに注意すると、次 のアリゴリズムを得る(FreeFem++のマニュアルでは、F の微分はDF と表している)

Findu∈V such thatf(u) = 0 wheref:V →V.

1. chooseu0∈V

2. for (i=0; i<niter; i=i+1)

1. Solvef(ui)wi =f(ui)

2. ui+1:=ui−wi

break∥wi∥< ε (修正量が小さくなったら反復を停止する)

(20)

11.4.6 Newton 法の復習

方程式f(u) = 0の近似解を求めるためのNewton法とは、まず適当な初期値u0 を選 び、漸化式

(4) ui+1=ui−f(ui)1f(ui)

により{ui}を定め、十分大きなi に対して、ui を近似解に採用する、というものである。

(4)は、f(u) = 0u=ui で線形近似した

f(ui)(u−ui) +f(ui) = 0 の解をui+1 とする、ということである。

wi :=f(ui)1f(ui)とおくと、wi f(ui)wi =f(ui)の解であることに注意すると、次 のアリゴリズムを得る(FreeFem++のマニュアルでは、F の微分はDF と表している)

Findu∈V such thatf(u) = 0 wheref:V →V.

1. chooseu0∈V

2. for (i=0; i<niter; i=i+1)

1. Solvef(ui)wi =f(ui)

2. ui+1:=ui−wi

break∥wi∥< ε (修正量が小さくなったら反復を停止する)

かつらだ 桂 田

まさし

祐 史 応用数値解析特論 第13 20201221 11 / 22

(21)

11.4.6 Newton 法の復習

方程式f(u) = 0の近似解を求めるためのNewton法とは、まず適当な初期値u0 を選 び、漸化式

(4) ui+1=ui−f(ui)1f(ui)

により{ui}を定め、十分大きなi に対して、ui を近似解に採用する、というものである。

(4)は、f(u) = 0u=ui で線形近似した

f(ui)(u−ui) +f(ui) = 0 の解をui+1 とする、ということである。

wi :=f(ui)1f(ui)とおくと、wi f(ui)wi =f(ui)の解であることに注意すると、次 のアリゴリズムを得る(FreeFem++のマニュアルでは、F の微分はDF と表している)

Findu∈V such thatf(u) = 0 wheref:V →V.

1. chooseu0∈V

2. for (i=0; i<niter; i=i+1)

1. Solvef(ui)wi=f(ui)

2. ui+1 :=ui−wi

break∥wi∥< ε (修正量が小さくなったら反復を停止する)

(22)

11.4.7 我々の問題での ff

は?

f = 0(1a) –(1e)と一致するようにするには

f(u,p) :=



(u· ∇)u−ν△u+∇p

∇ ·u u|Γ1−ub

−pn+ν∂u∂n

Beo



とすれば良いだろう。ここでub は次式で定まるΓ1上の関数である。

ub:=

(1,0) (on Γ1\Cc) (0,0) (on Cc).

かつらだ 桂 田

まさし

祐 史 応用数値解析特論 第13 20201221 12 / 22

(23)

11.4.7 我々の問題での ff

は? ( 続き )

f(u+δu,p+δp)f(u,p)

=

((u+δu)· ∇)uν(u+δu) +(p+δp)((u· ∇)uνu+p)

∇ ·(u+δu)− ∇ ·u (u+δu)|Γ1ub

u|Γ1ub

(p+δp)n+ν∂(u+δu)∂n

Beo

pn+ν∂u∂n

Beo

=

(δu· ∇)u+ (u· ∇)δuν(δu) +(δp) +δu· ∇(δu)

∇ ·(δu) δu|Γ1

(δp)n+ν∂(δu)∂n

Beo

.

であるから

f(u,p) δu

δp

=





(δu· ∇)u+ (u· ∇)δu−ν△(δu) +(δp)

∇ ·(δu) δu|Γ1

−(δp)n+ν∂(δu)∂n

Beo



.

(書くと手間だが、要するに2次式であるから、慣れると結果がすぐに分かる。)

(24)

11.4.8 Newton 反復の弱形式

f(ui,pi) δu

δp

=f(ui,pi)を具体的に書くと

(δu· ∇)ui+ (ui· ∇)δu−ν△(δu) +∇(δp) = (ui· ∇)ui−ν△ui+∇pi in Ω (5a)

∇ ·δu=∇ ·ui in Ω (5b)

δu= 0 on Γ1, (5c)

(δp)n+ν∂(δu)

∂n =0 onBeo. (5d)

当たり前のことであるが、δu,δpについての線形方程式である。

最初の2つに試験関数(それぞれv q)をかけて積分すると Z

[((δu· ∇)ui)·v+ ((ui· ∇)δu)·v−ν△(δu)·v+∇(δp)·v]dx

= Z

((ui· ∇)ui−ν△ui+∇pi)·v dx Z

q(∇ ·(δu))dx = 0.

かつらだ 桂 田

まさし

祐 史 応用数値解析特論 第13 20201221 14 / 22

(25)

11.4.8 Newton 反復の弱形式

f(ui,pi) δu

δp

=f(ui,pi)を具体的に書くと

(δu· ∇)ui+ (ui· ∇)δu−ν△(δu) +∇(δp) = (ui· ∇)ui−ν△ui+∇pi in Ω (5a)

∇ ·δu=∇ ·ui in Ω (5b)

δu= 0 on Γ1, (5c)

(δp)n+ν∂(δu)

∂n =0 onBeo. (5d)

当たり前のことであるが、δu,δpについての線形方程式である。

最初の2つに試験関数(それぞれv q)をかけて積分すると Z

[((δu· ∇)ui)·v+ ((ui· ∇)δu)·v−ν△(δu)·v+∇(δp)·v]dx

= Z

((ui· ∇)ui−ν△ui+∇pi)·v dx Z

q(∇ ·(δu))dx = 0.

(26)

11.4.8 Newton 反復の弱形式 ( 続き )

それぞれ部分積分して(境界積分を消去するのに、(5d)を用いる) Z

[((δu· ∇)ui)·v+ ((ui· ∇)δu)·v−ν∇(δu) :∇v−δp(∇ ·v)]dx (6a)

= Z

((ui· ∇)ui−ν△ui+∇pi)·v dx Z

q(∇ ·(δu))dx= 0.

(6b)

これが弱形式である。

かつらだ 桂 田

まさし

祐 史 応用数値解析特論 第13 20201221 15 / 22

(27)

11.4.9 プログラム中の弱形式解読

次のようなマクロが定義されている。

Grad(u1,u2) [dx(u1),dy(u1),dx(u2),dy(u2)]

これは∇u 4次元ベクトルにしたものである。これから

Grad(du1,du2)’*Grad(v1,v2)

dx(du1)*dx(v1)+dy(du1)*dy(v1)+dx(du2)*dx(v2)+dy(du2)*dy(v2)

となる。これは(δu) :∇v である。

FreeFem++では、は転置を表す(MATLABでも使われる、古い記法の利用) ベクトルの内積

real[int] a=[1,2,3,4]; real[int] b=[-4,-3,-2,-1]; cout << a’*b << endl;

これで20という値が表示される。

(28)

11.4.9 プログラム中の弱形式解読

次のようなマクロが定義されている。

Grad(u1,u2) [dx(u1),dy(u1),dx(u2),dy(u2)]

これは∇u 4次元ベクトルにしたものである。

これから

Grad(du1,du2)’*Grad(v1,v2)

dx(du1)*dx(v1)+dy(du1)*dy(v1)+dx(du2)*dx(v2)+dy(du2)*dy(v2)

となる。これは(δu) :∇v である。

FreeFem++では、は転置を表す(MATLABでも使われる、古い記法の利用) ベクトルの内積

real[int] a=[1,2,3,4]; real[int] b=[-4,-3,-2,-1]; cout << a’*b << endl;

これで20という値が表示される。

かつらだ 桂 田

まさし

祐 史 応用数値解析特論 第13 20201221 16 / 22

(29)

11.4.9 プログラム中の弱形式解読

次のようなマクロが定義されている。

Grad(u1,u2) [dx(u1),dy(u1),dx(u2),dy(u2)]

これは∇u 4次元ベクトルにしたものである。これから

Grad(du1,du2)’*Grad(v1,v2)

dx(du1)*dx(v1)+dy(du1)*dy(v1)+dx(du2)*dx(v2)+dy(du2)*dy(v2)

となる。これは(δu) :∇v である。

FreeFem++では、は転置を表す(MATLABでも使われる、古い記法の利用) ベクトルの内積

real[int] a=[1,2,3,4]; real[int] b=[-4,-3,-2,-1]; cout << a’*b << endl;

これで20という値が表示される。

(30)

11.4.9 プログラム中の弱形式解読

次のようなマクロが定義されている。

Grad(u1,u2) [dx(u1),dy(u1),dx(u2),dy(u2)]

これは∇u 4次元ベクトルにしたものである。これから

Grad(du1,du2)’*Grad(v1,v2)

dx(du1)*dx(v1)+dy(du1)*dy(v1)+dx(du2)*dx(v2)+dy(du2)*dy(v2)

となる。これは(δu) :∇v である。

FreeFem++では、は転置を表す(MATLABでも使われる、古い記法の利用) ベクトルの内積

real[int] a=[1,2,3,4];

real[int] b=[-4,-3,-2,-1];

cout << a’*b << endl;

これで20という値が表示される。

かつらだ 桂 田

まさし

祐 史 応用数値解析特論 第13 20201221 16 / 22

(31)

11.4.9 プログラム中の弱形式解読 ( 続き )

一方

UgradV(u1,u2,v1,v2) [[u1,u2]’*[dx(v1),dy(v1)],[u1,u2]’*[dx(v2),dy(v2)]]

u1*dx(v1)+u2*dy(v1) u1*dx(v2)+u2*dy(v2)

,

すなわち

(u· ∇)v =

u1

∂x1

+u2

∂x2

v1

v2

= u1∂v1

∂x1 +u2∂v1

∂x2

u1∂v2

∂x1 +u2∂v2

∂x2

!

を意味する。ゆえに

UgradV(du1,du2,u1,u2)’*[v1,v2]

((δu· ∇)u)·v を、

UgradV(u1,u2,du1,du2)’*[v1,v2]

((u· ∇) (δu))·v を計算する。

(32)

11.4.9 プログラム中の弱形式解読 ( 続き )

一方

UgradV(u1,u2,v1,v2) [[u1,u2]’*[dx(v1),dy(v1)],[u1,u2]’*[dx(v2),dy(v2)]]

u1*dx(v1)+u2*dy(v1) u1*dx(v2)+u2*dy(v2)

,

すなわち

(u· ∇)v =

u1

∂x1

+u2

∂x2

v1

v2

= u1∂v1

∂x1 +u2∂v1

∂x2

u1∂v2

∂x1 +u2∂v2

∂x2

!

を意味する。

ゆえに

UgradV(du1,du2,u1,u2)’*[v1,v2]

((δu· ∇)u)·v を、

UgradV(u1,u2,du1,du2)’*[v1,v2]

((u· ∇) (δu))·v を計算する。

かつらだ 桂 田

まさし

祐 史 応用数値解析特論 第13 20201221 17 / 22

(33)

11.4.9 プログラム中の弱形式解読 ( 続き )

一方

UgradV(u1,u2,v1,v2) [[u1,u2]’*[dx(v1),dy(v1)],[u1,u2]’*[dx(v2),dy(v2)]]

u1*dx(v1)+u2*dy(v1) u1*dx(v2)+u2*dy(v2)

,

すなわち

(u· ∇)v =

u1

∂x1

+u2

∂x2

v1

v2

= u1∂v1

∂x1 +u2∂v1

∂x2

u1∂v2

∂x1 +u2∂v2

∂x2

!

を意味する。ゆえに

UgradV(du1,du2,u1,u2)’*[v1,v2]

((δu· ∇)u)·v を、

UgradV(u1,u2,du1,du2)’*[v1,v2]

((u· ∇) (δu))·v を計算する。

(34)

11.4.9 プログラム中の弱形式解読 ( 続き )

int2d(Th)(

nu*(Grad(du1,du2)’*Grad(v1,v2)) + UgradV(du1,du2, u1, u2)’*[v1,v2]

+ UgradV( u1, u2,du1,du2)’*[v1,v2]

- div(du1,du2)*q - div(v1,v2)*dp - 1e-8*dp*q // stabilization term

)

は次式を意味する。

Z

ν(δu) :v+ ((δu· ∇)u)·v+ ((u· ∇) (δu))·vq∇ ·(δu)δp∇ ·v108(δp)q dx

- int2d(Th)(

nu*(Grad(u1,u2)’*Grad(v1,v2)) + UgradV(u1,u2, u1, u2)’*[v1,v2]

- div(u1,u2)*q - div(v1,v2)*p - 1e-8*p*q

)

は次式を意味する。

Z

ν∇ui:v+ ((ui· ∇)ui)·vq∇ ·uipi∇ ·v10−8piq dx

かつらだ 桂 田

まさし

祐 史 応用数値解析特論 第13 20201221 18 / 22

(35)

11.4.10 初期値の選択

最初にν= 1

50 について、

u0(x,y) =

(1,0) (x2+y2>2) (0,0) (x2+y22)

Newton法の初期値としてNavier-Stokes方程式の解を求め、それをν を小さくした Navier-Stokes方程式に対するNewton法の初期値としている。

最終的には、ν= 1

200 の場合のNavier-Stokes方程式の解を求めている。

Newton法の収束が早ければ、νをより速く小さくしたり、Newton法が収束しなければ、

ν を少し(戻して)大きくしたり、細かい制御を行っている。余裕があればプログラムを 読んでみよう。

それが筋が通ったものであるか分からないが「そこまでやるか」と感心した。こういうプ ログラムを公開してもらえるのは、大変ありがたいことである。

(36)

11.4.10 初期値の選択

最初にν= 1

50 について、

u0(x,y) =

(1,0) (x2+y2>2) (0,0) (x2+y22)

Newton法の初期値としてNavier-Stokes方程式の解を求め、それをν を小さくした Navier-Stokes方程式に対するNewton法の初期値としている。

最終的には、ν= 1

200 の場合のNavier-Stokes方程式の解を求めている。

Newton法の収束が早ければ、νをより速く小さくしたり、Newton法が収束しなければ、

ν を少し(戻して)大きくしたり、細かい制御を行っている。余裕があればプログラムを 読んでみよう。

それが筋が通ったものであるか分からないが「そこまでやるか」と感心した。こういうプ ログラムを公開してもらえるのは、大変ありがたいことである。

かつらだ 桂 田

まさし

祐 史 応用数値解析特論 第13 20201221 19 / 22

(37)

11.4.10 初期値の選択

最初にν= 1

50 について、

u0(x,y) =

(1,0) (x2+y2>2) (0,0) (x2+y22)

Newton法の初期値としてNavier-Stokes方程式の解を求め、それをν を小さくした Navier-Stokes方程式に対するNewton法の初期値としている。

最終的には、ν= 1

200 の場合のNavier-Stokes方程式の解を求めている。

Newton法の収束が早ければ、νをより速く小さくしたり、Newton法が収束しなければ、

ν を少し(戻して)大きくしたり、細かい制御を行っている。余裕があればプログラムを 読んでみよう。

それが筋が通ったものであるか分からないが「そこまでやるか」と感心した。こういうプ ログラムを公開してもらえるのは、大変ありがたいことである。

(38)

11.4.11 余談 : Oseen 方程式

NSNewton.edpの弱形式を定義しているところでsolve Oseen()と書いてある。

オゼーン

Oseen方程式は、Navier-Stokes方程式を一様な定常流の周りで線形近似したものである。 無限遠で小さいが0ではない、一様な速度Uex = (U,0,0)を持つ流れを扱いたい。

v :=u−Uex

とおく(v δu と書くのが良いかもしれない)。このとき (u· ∇)u=

(U+v1)

∂x1

+v2

∂x2

+v3

∂x3

U+v1

v2

v3

=U∂v

∂x1

+ (v· ∇)vU∂v

∂x1

.

そこで近似方程式として

(7) ∂v

∂t +U∂v

∂x1

=1

ρ∇p+ν△v

の採用が考えられる。この方程式が普通Oseen方程式と呼ばれる(と私は習った)

Wikipedia等を見ると、もう少し意味を広げて解釈されることもあるようである。

しかし、Hechtのプログラムで、Oseenと言っているのは、かなりの拡張解釈であると思

われる(うるさい人がツッコミを入れそうだ)

“Oseen近似という検索語でヒットした玉田[3]は、Oseen方程式が研究された経緯が 分かる解説である(と私は感じた)

かつらだ 桂 田

まさし

祐 史 応用数値解析特論 第13 20201221 20 / 22

(39)

11.4.11 余談 : Oseen 方程式

NSNewton.edpの弱形式を定義しているところでsolve Oseen()と書いてある。

オゼーン

Oseen方程式は、Navier-Stokes方程式を一様な定常流の周りで線形近似したものである。

無限遠で小さいが0ではない、一様な速度Uex = (U,0,0)を持つ流れを扱いたい。 v :=u−Uex

とおく(v δu と書くのが良いかもしれない)。このとき (u· ∇)u=

(U+v1)

∂x1

+v2

∂x2

+v3

∂x3

U+v1

v2

v3

=U∂v

∂x1

+ (v· ∇)vU∂v

∂x1

.

そこで近似方程式として

(7) ∂v

∂t +U∂v

∂x1

=1

ρ∇p+ν△v

の採用が考えられる。この方程式が普通Oseen方程式と呼ばれる(と私は習った)

Wikipedia等を見ると、もう少し意味を広げて解釈されることもあるようである。

しかし、Hechtのプログラムで、Oseenと言っているのは、かなりの拡張解釈であると思

われる(うるさい人がツッコミを入れそうだ)

“Oseen近似という検索語でヒットした玉田[3]は、Oseen方程式が研究された経緯が 分かる解説である(と私は感じた)

(40)

11.4.11 余談 : Oseen 方程式

NSNewton.edpの弱形式を定義しているところでsolve Oseen()と書いてある。

オゼーン

Oseen方程式は、Navier-Stokes方程式を一様な定常流の周りで線形近似したものである。

無限遠で小さいが0ではない、一様な速度Uex = (U,0,0)を持つ流れを扱いたい。

v :=u−Uex

とおく(v δu と書くのが良いかもしれない)

このとき

(u· ∇)u=

(U+v1)

∂x1

+v2

∂x2

+v3

∂x3

U+v1

v2

v3

=U∂v

∂x1

+ (v· ∇)vU∂v

∂x1

.

そこで近似方程式として

(7) ∂v

∂t +U∂v

∂x1

=1

ρ∇p+ν△v

の採用が考えられる。この方程式が普通Oseen方程式と呼ばれる(と私は習った)

Wikipedia等を見ると、もう少し意味を広げて解釈されることもあるようである。

しかし、Hechtのプログラムで、Oseenと言っているのは、かなりの拡張解釈であると思

われる(うるさい人がツッコミを入れそうだ)

“Oseen近似という検索語でヒットした玉田[3]は、Oseen方程式が研究された経緯が 分かる解説である(と私は感じた)

かつらだ 桂 田

まさし

祐 史 応用数値解析特論 第13 20201221 20 / 22

参照

関連したドキュメント

念のため: 「特徴づけられる」というのは、u ∈V に対して、 ∀v ∈V au,v =⟨F,v⟩ ⇔ Ju = min v∈VJv が成り立つ、ということである。以前の授業の W⇔ Vに相当 する。 Lax-Milgram の定理は、Rieszの表現定理における内積·,· を、強 圧的有界双線形形式a·,· に一般化したものである注意: 内積は強

連絡事項&本日の内容 今回から、しばらく3回程度流体力学への応用の話をする。 今日は、流体力学で出て来る諸概念と、有名な方程式連続の方程式、非圧 縮条件、Navier-Stokes方程式、Euler方程式、Stokes方程式の紹介をする 駆け足。 次回以降、以下のものを使う可能性がある。 Mathematica

目次 1 Ritz-Galerkin法続き 古典的Ritz-Galerkin法 新しいRitz-Galerkin法としての有限要素法 2 1次元の有限要素法 モデル問題とその弱定式化 有限要素解の定義 有限要素への分割 区分的1次多項式の空間の基底関数 有限要素空間,有限要素解 蛇足の話 有限要素解を求めるアルゴリズム 長さ座標 弱形式の分割

念のため: 「特徴づけられる」というのは、u ∈V に対して、 ∀v ∈V au,v =⟨F,v⟩ ⇔ Ju = min v∈VJv が成り立つ、ということである。以前の授業の W⇔ Vに相当 する。 Lax-Milgram の定理は、Rieszの表現定理における内積·,· を、強 圧的有界双線形形式a·,· に一般化したものである注意: 内積は強

差分法の安定性の話をする際に、従来サンプル・プログラムは C+GLSC で記述

差分法の安定性の話をする際に、従来サンプル・プログラムは C+GLSC で記述

レポート課題 B

6.3 有限要素解を求めるプログラム naive, band の理解 naive, bandは上の形式の入力データから、有限要素解を計算するプログラム。 両者は同じ計算を行う。連立1次方程式の係数行列が帯行列band matrixであるこ とを利用して、計算の効率化の工夫をしたのがbandで、それをしないのがnaiveである。