SlideShare ist ein Scribd-Unternehmen logo
1 von 32
Downloaden Sie, um offline zu lesen
OpenFOAMにおけ
る混相流流計算
⼤大阪⼤大学⼤大学院基礎⼯工学研究科
修⼠士課程1年年  
⼭山本  卓也
第19回OpenCAE勉強会@関西	
  
2013/1/19
混相流流とは
混相流・・・複数の相が混ざり合う流れ	
  
例)気液二相流(空気-­‐水) 	
  キャビテーション、気泡塔	
  
  液液二相流(水-­‐油) 	
       有機溶媒と水の混合溶液	
  
  固液二相流(粒子-­‐水) 	
  懸濁液	
  
	
  
工業的に重要であることが多い	
  
様々な数値計算法が存在する
混相流流の数値計算法
混相流のシミュレーションを分類すると以下の通りになる	
  
•  メッシュフリー法	
  
•  界面捕獲法 (Interface	
  Tracking)	
  
•  界面追跡法 (Interface	
  Capturing)	
  
•  平均化(二流体)モデル	
  
•  メッシュフリー法	
  
粒子法(MPS,	
  SPH)	
  
•  界面捕獲法	
  
VOF法	
  
Level-­‐Set法	
  
Phase	
  Field法	
  
•  界面追跡法	
  
BFC(界面適合座標)	
  
ALE(Arbitrary	
  Lagrangian-­‐Eulerian)	
  
それぞれの⼿手法の特徴
•  メッシュフリー法	
  
微小の粒子の運動で表現する	
  
メッシュ分割が不必要	
  
衝撃波等の不連続場の扱いが容易	
  
大変形、歪みに対して精度保持	
  
精度が悪い	
  
計算時間多大	
  
•  界面捕獲法	
  
計算格子を移動せずに計算する	
  
手法によって異なるが界面がなまる	
  
•  界面追跡法	
  
計算格子を時々刻々と移動する	
  
精度がかなり高い	
  
計算が破綻しやすい	
  
砕波現象等の大変形をするものに不向き	
  
概念図
OpenFOAMにおける実装
•  メッシュフリー法	
  
?粒子法	
  
•  界面捕獲法	
  
○VOF法	
  
×Level-­‐Set法	
  
×Phase	
  Field法	
  
×Front	
  tracking法	
  
•  界面追跡法	
  
△BFC(界面適合座標)	
  
○ALE(Arbitrary	
  Lagrangian-­‐Eulerian)	
  
混相流のコードが少ない	
  
ほとんどVOF法(interFoam
系)	
interFoam	
  
interDymFoam	
  
interMixingFoam	
  
...	
AMR(AdapVve	
  Mesh	
  Refinement)	
  
局所格子分割するライブラリ	
VOF法	
+
VOF(Volume  of  Fluid)法
•  ⽀支配⽅方程式
Navier-‐‑‒Stokes  式
連続式
流流体率率率αの移流流⽅方程式
sk
gP
t
δσ
ρν
σ
σ
nF
Fvvv
v
=
++∇+−∇=∇⋅+
∂
∂ 2
0=⋅∇ v
•  VOF法の欠点	
  
界面の形状が明確に定義されな
い	
  
•  VOF法の長所	
  
境界面の複雑な変形を伴う現象
をシミュレート可能	
  
アルゴリズムが単純	
  
現在の研究ではVOF法を解くの
みの研究は少ない	
VOF法と様々なものを組み合わせ
てシミュレーション	
k:	
  界面の曲率	
::	
  liquid	
  phase	
  
::	
  interface	
  
::	
  gas	
  phase	
1=α
0=α
10 <<α
( ) 0=⋅∇+
∂
∂
vα
α
t
VOF法の精度度改善⽅方法
VOF法     	
  
VOF法+AMR	
  
CLSVOF法	
  
VOF/PLIC法	
  
VOF/SLIC法	
  
VOF/WLIC法	
  
VOF/IB法	
  
	
  
数値スキーム	
  
CIP法	
  
WENO法	
界面再構築のアルゴリズム	
  
PLIC	
  (Piecewise	
  Linear	
  Interface	
  CalculaVon)	
  
SLIC	
  (Simple	
  Line	
  Interface	
  CalculaVon)	
  
WLIC	
  (Weighted	
  Line	
  Interface	
  CalculaVon)	
様々なものが存在	
洋書	
  
2011年出版(初版)	
  
Cambridge	
  Univ.	
  Press	
  
混相流の計算手法について	
  
(主にVOF系,	
  Front-­‐Tracking,	
  
Level-­‐Set	
  など)	
  
VOF法(InterFoam)
Dam Break (Tutorial)	
界面の拡散(誤差)	
  
VOF法のみでは誤差が大きい
VOF法+AMR(InterDymFoam)
Dam Break (Tutorial)	
格子局所分割を行っている	
  
格子分割のおかげで界面の拡
散(誤差)が低下
VOF法の精度度改善⽅方法
VOF法     	
  
VOF法+AMR	
  
CLSVOF法	
  
VOF/PLIC法	
  
VOF(THINC/WLIC)法	
  
	
  
数値スキーム	
  
CIP法	
  
ENO法	
  
WENO法	
界面再構築のアルゴリズム	
  
PLIC	
  (Piecewise	
  Linear	
  Interface	
  CalculaVon)	
  
SLIC	
  (Simple	
  Line	
  Interface	
  CalculaVon)	
  
WLIC	
  (Weighted	
  Line	
  Interface	
  CalculaVon)	
様々なものが存在	
CLSVOF法のOpenFOAMに対する
実装を目指す	
VOF法のコード解読から始める
//	
  Need	
  to	
  store	
  rho	
  for	
  ddt(rho,	
  U)	
volScalarField	
  rho	
(	
IOobject	
(	
"rho",	
runTime.VmeName(),	
mesh,	
IOobject::READ_IF_PRESENT	
),	
alpha1*rho1	
  +	
  (scalar(1)	
  -­‐	
  alpha1)*rho2,	
alpha1.boundaryField().types()	
);	
InterFoamのソースコード解読
•  ⽀支配⽅方程式
Navier-‐‑‒Stokes  式
流流体率率率αの移流流⽅方程式
sk
gP
t
δσ
ρν
σ
σ
nF
Fvvv
v
=
++∇+−∇=∇⋅+
∂
∂ 2
::	
  liquid	
  phase	
  
::	
  interface	
  
::	
  gas	
  phase	
1=α
0=α
10 <<α
lg
lg
µααµµ
ρααρρ
)1(
)1(
−+=
−+=
lg ρααρρ )1( −+=
createFields.Hの中	
Ver.	
  1.6.x	
( ) 0=⋅∇+
∂
∂
vα
α
t
InterFoamのソースコード解読
•  ⽀支配⽅方程式
Navier-‐‑‒Stokes  式
流流体率率率αの移流流⽅方程式
sk
gP
t
δσ
ρν
σ
σ
nF
Fvvv
v
=
++∇+−∇=∇⋅+
∂
∂ 2
::	
  liquid	
  phase	
  
::	
  interface	
  
::	
  gas	
  phase	
1=α
0=α
10 <<α
lg
lg
µααµµ
ρααρρ
)1(
)1(
−+=
−+=
Ver.	
  1.6.x	
lg µααµµ )1( −+=
/src/transportModels/incompressible/	
  
incompressibleTwoPhaseMixture/	
  
twoPhaseMixture.C	
  
118行目	
  
	
  
tmp<volScalarField>	
  twoPhaseMixture::mu()	
  const	
{	
volScalarField	
  limitedAlpha1	
  =	
  min(max(alpha1_,	
  scalar(0)),	
  scalar(1));	
	
return	
  tmp<volScalarField>	
(	
new	
  volScalarField	
(	
"mu",	
limitedAlpha1*rho1_*nuModel1_-­‐>nu()	
+	
  (scalar(1)	
  -­‐	
  limitedAlpha1)*rho2_*nuModel2_-­‐>nu()	
)	
);	
}	
( ) 0=⋅∇+
∂
∂
vα
α
t
InterFoamのソースコード解読
•  ⽀支配⽅方程式
Navier-‐‑‒Stokes  式
流流体率率率αの移流流⽅方程式
sk
gP
t
δσ
ρν
σ
σ
nF
Fvvv
v
=
++∇+−∇=∇⋅+
∂
∂ 2
::	
  liquid	
  phase	
  
::	
  interface	
  
::	
  gas	
  phase	
1=α
0=α
10 <<α
Ver.	
  1.6.x	
( ) 0=⋅∇+
∂
∂
vα
α
t
液相領域	
  
	
  
気相領域	
( ) 0=⋅∇+
∂
∂
l
t
vα
α
( ) 0=⋅∇+
∂
∂
vα
α
t
( )( ) 01 =−⋅∇+
∂
∂
g
t
vα
α
小文字l,	
  gはそれぞれ液相、気相を表す。	
( )
glr
gl
vvv
vvv
−=
−+= αα 1
vr:	
  相関速度	
再定義	
lg
lg
µααµµ
ρααρρ
)1(
)1(
−+=
−+=
InterFoamのソースコード解読
•  ⽀支配⽅方程式
Navier-‐‑‒Stokes  式
流流体率率率αの移流流⽅方程式
sk
gP
t
δσ
ρν
σ
σ
nF
Fvvv
v
=
++∇+−∇=∇⋅+
∂
∂ 2
::	
  liquid	
  phase	
  
::	
  interface	
  
::	
  gas	
  phase	
1=α
0=α
10 <<α
Ver.	
  1.6.x	
( ) ( )( ) 01 =−⋅∇+⋅∇+
∂
∂
r
t
vv ααα
α
最終形	
alphaEqn.H中で設定	
  
	
  
α式の設定については後に説明	
( ) 0=⋅∇+
∂
∂
vα
α
t
lg
lg
µααµµ
ρααρρ
)1(
)1(
−+=
−+=
InterFoamのソースコード解読
•  ⽀支配⽅方程式
Navier-‐‑‒Stokes  式
流流体率率率αの移流流⽅方程式
sk
gP
t
δσ
ρν
σ
σ
nF
Fvvv
v
=
++∇+−∇=∇⋅+
∂
∂ 2
::	
  liquid	
  phase	
  
::	
  interface	
  
::	
  gas	
  phase	
1=α
0=α
10 <<α
Ver.	
  1.6.x	
表面張力モデルCSFモデル	
  
(Brackbill	
  (1992))	
  
(ConVnuum	
  Surface	
  Force)	
sk δσσ nF =
σ:	
  表面張力	
  
k:	
  曲率	
  
n:	
  法線ベクトル	
  
δs:	
  δ関数	
表面張力	
  
面積力        	
  体積力	
  
(面にかかる力) 	
   	
  (体積にかかる力)	
( ) 0=⋅∇+
∂
∂
vα
α
t
lg
lg
µααµµ
ρααρρ
)1(
)1(
−+=
−+=
 	
  Ueqn.H中	
  
	
  	
  19行目	
  
	
  if	
  (momentumPredictor)	
{	
solve	
(	
UEqn	
==	
fvc::reconstruct	
(	
fvc::interpolate(rho)*(g	
  &	
  mesh.Sf())	
+	
  (	
fvc::interpolate(interface.sigmaK())*fvc::snGrad(alpha1)	
-­‐	
  fvc::snGrad(p)	
)	
  *	
  mesh.magSf()	
)	
);	
}	
InterFoamのソースコード解読
•  ⽀支配⽅方程式
Navier-‐‑‒Stokes  式
流流体率率率αの移流流⽅方程式
::	
  liquid	
  phase	
  
::	
  interface	
  
::	
  gas	
  phase	
1=α
0=α
10 <<α
Ver.	
  1.6.x	
sk δσσ nF =
sk
gP
t
δσ
ρν
σ
σ
nF
Fvvv
v
=
++∇+−∇=∇⋅+
∂
∂ 2
( ) 0=⋅∇+
∂
∂
vα
α
t
lg
lg
µααµµ
ρααρρ
)1(
)1(
−+=
−+=
sigmaK()とは??	
snGrad(alpha1)とは??	
fvc::reconstructとは??
InterFoamのソースコード解読
•  ⽀支配⽅方程式
Navier-‐‑‒Stokes  式
流流体率率率αの移流流⽅方程式
::	
  liquid	
  phase	
  
::	
  interface	
  
::	
  gas	
  phase	
1=α
0=α
10 <<α
Ver.	
  1.6.x	
( ) 0=⋅∇+
∂
∂
vα
α
t
lg
lg
µααµµ
ρααρρ
)1(
)1(
−+=
−+=
sigmaK()とは??	
  
interfaceProperVes.H 中	
  
140行目	
  
	
  
	
  tmp<volScalarField>	
  sigmaK()	
  const	
{	
return	
  sigma_*K_;	
}	
sigma_ 	
  :surface	
  tension	
  
K_ 	
  :curvature	
sigmaK()	
skF δσσ n=
sk
gP
t
δσ
ρν
σ
σ
nF
Fvvv
v
=
++∇+−∇=∇⋅+
∂
∂ 2
InterFoamのソースコード解読
•  ⽀支配⽅方程式
Navier-‐‑‒Stokes  式
流流体率率率αの移流流⽅方程式
::	
  liquid	
  phase	
  
::	
  interface	
  
::	
  gas	
  phase	
1=α
0=α
10 <<α
Ver.	
  1.6.x	
( ) 0=⋅∇+
∂
∂
vα
α
t
lg
lg
µααµµ
ρααρρ
)1(
)1(
−+=
−+=
snGrad(alpha1)とは??	
  
プログラマズガイドより	
  
面に垂直なベクトル成分を表す。	
α
α
∇
∇
=n
α場(赤:流体,青:気体)	
α∇
sk
gP
t
δσ
ρν
σ
σ
nF
Fvvv
v
=
++∇+−∇=∇⋅+
∂
∂ 2
InterFoamのソースコード解読
•  ⽀支配⽅方程式
Navier-‐‑‒Stokes  式
流流体率率率αの移流流⽅方程式
::	
  liquid	
  phase	
  
::	
  interface	
  
::	
  gas	
  phase	
1=α
0=α
10 <<α
Ver.	
  1.6.x	
( ) 0=⋅∇+
∂
∂
vα
α
t
lg
lg
µααµµ
ρααρρ
)1(
)1(
−+=
−+=
sk
gP
t
δσ
ρν
σ
σ
nF
Fvvv
v
=
++∇+−∇=∇⋅+
∂
∂ 2
fvc::interpolate(interface.sigmaK())*fvc::snGrad(alpha1)	
Fσ =σknδs
表面張力モデルCSFモデル	
  
n =
∇α
∇α
δs = ∇a
Fσ =σk∇α
	
  Ueqn.H中
fvc::reconstructとは??	
  
OpenFOAM	
  wiki	
  +	
  CFD	
  onlineより	
  
InterFoamのソースコード解読
•  ⽀支配⽅方程式
Navier-‐‑‒Stokes  式
流流体率率率αの移流流⽅方程式
::	
  liquid	
  phase	
  
::	
  interface	
  
::	
  gas	
  phase	
1=α
0=α
10 <<α
Ver.	
  1.6.x	
( ) 0=⋅∇+
∂
∂
vα
α
t
lg
lg
µααµµ
ρααρρ
)1(
)1(
−+=
−+=
sk
gP
t
δσ
ρν
σ
σ
nF
Fvvv
v
=
++∇+−∇=∇⋅+
∂
∂ 2
hpp://www.cfd-­‐online.com/Forums/openfoam-­‐programming-­‐
development/77943-­‐fvc-­‐reconstruct-­‐algorithm.html	
hpps://openfoamwiki.net/index.php/OpenFOAM_guide/
ReconstrucVon	
セル界面でのFluxからセル中心での速度
ベクトルを返す。	
output	
  =	
  fvc::reconstruct(input)	
output	
  ::	
  セル中心での速度ベクトル	
  
input	
  ::	
  セル界面でのFlux	
目的:	
  圧力振動を生じさせないように、擬
似的なスタッガード格子のように作用させ
るため。
InterFoamのソースコード解読
Ver.	
  1.6.x	
α式の設定	
( ) ( )( ) 01 =−⋅∇+⋅∇+
∂
∂
r
t
vv ααα
α
最終形	
 (微分形)	
有限体積法なので	
  
積分系に変換	
積分系	
( ) ( )( ) 01 =−⋅∇+⋅∇+ ∫∫∫ ΔΔΔ
dVdVdV
dt
d
V
r
VV
vv αααα
ガウスの発散定理	
dVds
Vs ∫∫ ⋅∇=⋅ aan
( ) dSdSdV
dt
d
SSV ∫∫∫ ⋅−+⋅+
Δ
nvnv rαααα 1
InterFoamのソースコード解読
Ver.	
  1.6.x	
α式の設定	
( ) dSdSdV
dt
d
SSV ∫∫∫ ⋅−+⋅+
Δ
nvnv rαααα 1
離散化	
非定常項はとりあえず無視して	
( )( ) ff S⋅⋅− nvrαα1( ) ff S⋅⋅nvα
ここで、fはセル界面上を表す。	
  
Sfは表面積	
中点公式により近似	
Sf	
αvn	
イメージ	
これがOpenFOAMにどう組
み込まれているか??
InterFoamのソースコード解読
Ver.	
  1.6.x	
alphaEqn.H	
  中	
  
5~8行目	
  
	
  
surfaceScalarField	
  phic	
  =	
  mag(phi/mesh.magSf());	
phic	
  =	
  min(interface.cAlpha()*phic,	
  max(phic));	
surfaceScalarField	
  phir	
  =	
  phic*interface.nHat();	
  
f
c
S
φ
φ =
))max(,min( ccc C φφφ α ×=
fcr n×=φφ
それぞれ
代入	
⎥
⎥
⎦
⎤
⎢
⎢
⎣
⎡
⎟
⎟
⎠
⎞
⎜
⎜
⎝
⎛
=
ff
fr
ss
Cn
φφ
φ α max,min
プログラム上では	
( )( ) ff S⋅⋅− nvrαα1
文字rから判断すると??
InterFoamのソースコード解読
Ver.	
  1.6.x	
alphaEqn.H	
  中	
  
5~8行目	
  
	
  
surfaceScalarField	
  phic	
  =	
  mag(phi/mesh.magSf());	
phic	
  =	
  min(interface.cAlpha()*phic,	
  max(phic));	
surfaceScalarField	
  phir	
  =	
  phic*interface.nHat();	
  
find,	
  grepでソース(src)内検索	
src/transportModels/interfaceProperVes/interfaceProperVes.C	
  中	
cAlpha,	
  nHat_,	
  K_等の設定
InterFoamのソースコード解読
Ver.	
  1.6.x	
//	
  Face	
  unit	
  interface	
  normal	
  flux	
nHat_	
  =	
  nHatv	
  &	
  Sf;	
//	
  Simple	
  expression	
  for	
  curvature	
K_	
  =	
  -­‐fvc::div(nHat_);	
transportProperVesDict_(dict),	
cAlpha_	
(	
readScalar	
(	
alpha1.mesh().soluVonDict().subDict("PISO").lookup("cAlpha")	
)	
),	
src/transportModels/interfaceProperVes/interfaceProperVes.C 中	
ffvf Snn ⋅=
表面張力モデルCSFモデル	
  
(Brackbill	
  (1992))	
  
(ConVnuum	
  Surface	
  Force)	
Fσ =σknδs
k = ∇⋅nf
k = ∇⋅n
n
Cαの読み込み	
131行目	
117行目	
146行目
InterFoamのソースコード解読
Ver.	
  1.6.x	
//	
  Face	
  unit	
  interface	
  normal	
surfaceVectorField	
  nHatv	
  =	
  gradAlphaf/
(mag(gradAlphaf)	
  +	
  deltaN_);	
src/transportModels/interfaceProperVes/interfaceProperVes.C 中	
113行目	
nfv =
∇α( )f
∇α( )f
+δN
deltaN_	
(	
"deltaN",	
1e-­‐8/pow(average(alpha1.mesh().V()),	
  1.0/3.0)	
),	
156行目	
δN =
1.0×10−8
( Vi / N
N
∑ )1/3
界面の法線方向計算の安定化	
  
(ゼロ割を防ぐ)
InterFoamのソースコード解読
Ver.	
  1.6.x	
alphaEqn.H	
  中	
  
5~8行目	
  
	
  
surfaceScalarField	
  phic	
  =	
  mag(phi/mesh.magSf());	
phic	
  =	
  min(interface.cAlpha()*phic,	
  max(phic));	
surfaceScalarField	
  phir	
  =	
  phic*interface.nHat();	
  
⎥
⎥
⎦
⎤
⎢
⎢
⎣
⎡
⎟
⎟
⎠
⎞
⎜
⎜
⎝
⎛
=
ff
fr
ss
Cn
φφ
φ α max,min
( )( ) ff S⋅⋅− nvrαα1
最初の推測	
なんとなく	
  
それっぽいという所までの理解
InterFoamのソースコード解読
Ver.	
  1.6.x	
alphaEqn.H	
  中	
  
9行目~	
  
	
  
	
  for	
  (int	
  aCorr=0;	
  aCorr<nAlphaCorr;	
  aCorr++)	
{	
surfaceScalarField	
  phiAlpha	
  =	
fvc::flux	
(	
phi,	
alpha1,	
alphaScheme	
)	
+	
  fvc::flux	
(	
-­‐fvc::flux(-­‐phir,	
  scalar(1)	
  -­‐	
  alpha1,	
  
alpharScheme),	
alpha1,	
alpharScheme	
);	
	
MULES::explicitSolve(alpha1,	
  phi,	
  phiAlpha,	
  1,	
  0);	
	
rhoPhi	
  =	
  phiAlpha*(rho1	
  -­‐	
  rho2)	
  +	
  phi*rho2;	
}	
  
Fvc::flux	
  流束を返す。	
  
	
  
/src/finiteVolume/finiteVolume/
fvc/fvcFlux.c中	
φα
ααφ )1( −r
ααφφαφα )1( −+= r
プログラム上では	
MULES(MulVdimensional	
  Universal	
  
Limiter	
  for	
  Explicit	
  SoluVon)??
InterFoamのソースコード解読
Ver.	
  1.6.x	
⎥
⎥
⎦
⎤
⎢
⎢
⎣
⎡
⎟
⎟
⎠
⎞
⎜
⎜
⎝
⎛
=
ff
fr
ss
Cn
φφ
φ α max,minααφφαφα )1( −+= r
α式の設定	
( ) dSdSdV
dt
d
SSV ∫∫∫ ⋅−+⋅+
Δ
nvnv rαααα 1
fS⋅= vφ
ではないかと推
測できる
( )( ) ff
S⋅⋅− nvrαα1
⎥
⎥
⎦
⎤
⎢
⎢
⎣
⎡
⎟
⎟
⎠
⎞
⎜
⎜
⎝
⎛ ⋅⋅
f
ff
f
ff
f
S
Su
S
Su
Cn max,min α
OpenFOAMのコード内	
nfv =
∇α( )f
∇α( )f
+δN
δN =
1.0×10−8
( Vi / N
N
∑ )1/3
解を安定化するもの	
  
(nfvが無限大になるのを防ぐ)	
人工的に界面幅を圧縮する項	
ffvf Snn ⋅=
α場(赤:流体,
青:気体)	
α∇
InterFoamのソースコード解読
まとめ
•  OpenFOAMに実装されているinterFoamを解
読しようとした。	
  
•  MULES等の方法については未調査	
  
•  このコード解読をベースにOpenFOAMの新
規コード開発予定
References
•  J.	
  U.	
  Brackbill	
  et	
  al.,	
  J.	
  Comp.	
  Phys.,	
  100,	
  335-­‐354	
  (1992).	
  
•  G.	
  Tryggvason	
  et	
  al.,	
  Direct	
  Numerical	
  SimulaVons	
  of	
  Gas-­‐
Liquid	
  MulVphase	
  Flows	
  (Cambridge	
  University	
  Press,	
  2011)	
  
•  プログラマーズガイド	
  
•  OpenFOAM	
  wiki	
  (hpps://openfoamwiki.net/index.php/
OpenFOAM_guide/ReconstrucVon)	
  
•  CFD	
  online	
  (hpp://www.cfd-­‐online.com/Forums/openfoam-­‐
programming-­‐development/77943-­‐fvc-­‐reconstruct-­‐algorithm.html)

Weitere ähnliche Inhalte

Was ist angesagt?

OpenFOAMにおける相変化解析
OpenFOAMにおける相変化解析OpenFOAMにおける相変化解析
OpenFOAMにおける相変化解析takuyayamamoto1800
 
OpenFOAMを用いた計算後の等高面データの取得方法
OpenFOAMを用いた計算後の等高面データの取得方法OpenFOAMを用いた計算後の等高面データの取得方法
OpenFOAMを用いた計算後の等高面データの取得方法takuyayamamoto1800
 
Turbulence Models in OpenFOAM
Turbulence Models in OpenFOAMTurbulence Models in OpenFOAM
Turbulence Models in OpenFOAMFumiya Nozaki
 
OpenFOAM -回転領域を含む流体計算 (Rotating Geometry)-
OpenFOAM -回転領域を含む流体計算 (Rotating Geometry)-OpenFOAM -回転領域を含む流体計算 (Rotating Geometry)-
OpenFOAM -回転領域を含む流体計算 (Rotating Geometry)-Fumiya Nozaki
 
OpenFOAMに実装したS-CLSVOF法検証(静止気泡のLaplace圧)
OpenFOAMに実装したS-CLSVOF法検証(静止気泡のLaplace圧)OpenFOAMに実装したS-CLSVOF法検証(静止気泡のLaplace圧)
OpenFOAMに実装したS-CLSVOF法検証(静止気泡のLaplace圧)takuyayamamoto1800
 
ParaviewでのParticle Tracerを用いた可視化
ParaviewでのParticle Tracerを用いた可視化ParaviewでのParticle Tracerを用いた可視化
ParaviewでのParticle Tracerを用いた可視化takuyayamamoto1800
 
OpenFOAM LES乱流モデルカスタマイズ
OpenFOAM LES乱流モデルカスタマイズOpenFOAM LES乱流モデルカスタマイズ
OpenFOAM LES乱流モデルカスタマイズmmer547
 
OpenFOAMにおけるDEM計算の力モデルの解読
OpenFOAMにおけるDEM計算の力モデルの解読OpenFOAMにおけるDEM計算の力モデルの解読
OpenFOAMにおけるDEM計算の力モデルの解読takuyayamamoto1800
 
OpenFOAM の境界条件をまとめよう!
OpenFOAM の境界条件をまとめよう!OpenFOAM の境界条件をまとめよう!
OpenFOAM の境界条件をまとめよう!Fumiya Nozaki
 
OpenFOAM の cyclic、cyclicAMI、cyclicACMI 条件について
OpenFOAM の cyclic、cyclicAMI、cyclicACMI 条件についてOpenFOAM の cyclic、cyclicAMI、cyclicACMI 条件について
OpenFOAM の cyclic、cyclicAMI、cyclicACMI 条件についてFumiya Nozaki
 
OpenFOAM -空間の離散化と係数行列の取り扱い(Spatial Discretization and Coefficient Matrix)-
OpenFOAM -空間の離散化と係数行列の取り扱い(Spatial Discretization and Coefficient Matrix)-OpenFOAM -空間の離散化と係数行列の取り扱い(Spatial Discretization and Coefficient Matrix)-
OpenFOAM -空間の離散化と係数行列の取り扱い(Spatial Discretization and Coefficient Matrix)-Fumiya Nozaki
 
OpenFOAMソルバの実行時ベイズ最適化
OpenFOAMソルバの実行時ベイズ最適化OpenFOAMソルバの実行時ベイズ最適化
OpenFOAMソルバの実行時ベイズ最適化Masashi Imano
 
OpenFOAMスレッド並列化のための基礎検討
OpenFOAMスレッド並列化のための基礎検討OpenFOAMスレッド並列化のための基礎検討
OpenFOAMスレッド並列化のための基礎検討Fixstars Corporation
 
Boundary Conditions in OpenFOAM
Boundary Conditions in OpenFOAMBoundary Conditions in OpenFOAM
Boundary Conditions in OpenFOAMFumiya Nozaki
 
Paraviewの等高面を綺麗に出力する
Paraviewの等高面を綺麗に出力するParaviewの等高面を綺麗に出力する
Paraviewの等高面を綺麗に出力するtakuyayamamoto1800
 
オープンソースの CFD ソフトウェア SU2 のチュートリアルをやってみた
オープンソースの CFD ソフトウェア SU2 のチュートリアルをやってみたオープンソースの CFD ソフトウェア SU2 のチュートリアルをやってみた
オープンソースの CFD ソフトウェア SU2 のチュートリアルをやってみたFumiya Nozaki
 
OpenFOAMのチュートリアルを作ってみた#1 『くさび油膜効果の計算』
OpenFOAMのチュートリアルを作ってみた#1 『くさび油膜効果の計算』OpenFOAMのチュートリアルを作ってみた#1 『くさび油膜効果の計算』
OpenFOAMのチュートリアルを作ってみた#1 『くさび油膜効果の計算』Fumiya Nozaki
 
Mixer vessel by cfmesh
Mixer vessel by cfmeshMixer vessel by cfmesh
Mixer vessel by cfmeshEtsuji Nomura
 
OpenFOAMのDEM解析のpatchInteractionModelクラスの解読
OpenFOAMのDEM解析のpatchInteractionModelクラスの解読OpenFOAMのDEM解析のpatchInteractionModelクラスの解読
OpenFOAMのDEM解析のpatchInteractionModelクラスの解読takuyayamamoto1800
 

Was ist angesagt? (20)

OpenFOAMにおける相変化解析
OpenFOAMにおける相変化解析OpenFOAMにおける相変化解析
OpenFOAMにおける相変化解析
 
OpenFOAMを用いた計算後の等高面データの取得方法
OpenFOAMを用いた計算後の等高面データの取得方法OpenFOAMを用いた計算後の等高面データの取得方法
OpenFOAMを用いた計算後の等高面データの取得方法
 
Turbulence Models in OpenFOAM
Turbulence Models in OpenFOAMTurbulence Models in OpenFOAM
Turbulence Models in OpenFOAM
 
OpenFOAM -回転領域を含む流体計算 (Rotating Geometry)-
OpenFOAM -回転領域を含む流体計算 (Rotating Geometry)-OpenFOAM -回転領域を含む流体計算 (Rotating Geometry)-
OpenFOAM -回転領域を含む流体計算 (Rotating Geometry)-
 
OpenFOAMに実装したS-CLSVOF法検証(静止気泡のLaplace圧)
OpenFOAMに実装したS-CLSVOF法検証(静止気泡のLaplace圧)OpenFOAMに実装したS-CLSVOF法検証(静止気泡のLaplace圧)
OpenFOAMに実装したS-CLSVOF法検証(静止気泡のLaplace圧)
 
ParaviewでのParticle Tracerを用いた可視化
ParaviewでのParticle Tracerを用いた可視化ParaviewでのParticle Tracerを用いた可視化
ParaviewでのParticle Tracerを用いた可視化
 
OpenFOAM LES乱流モデルカスタマイズ
OpenFOAM LES乱流モデルカスタマイズOpenFOAM LES乱流モデルカスタマイズ
OpenFOAM LES乱流モデルカスタマイズ
 
OpenFOAMにおけるDEM計算の力モデルの解読
OpenFOAMにおけるDEM計算の力モデルの解読OpenFOAMにおけるDEM計算の力モデルの解読
OpenFOAMにおけるDEM計算の力モデルの解読
 
OpenFOAM の境界条件をまとめよう!
OpenFOAM の境界条件をまとめよう!OpenFOAM の境界条件をまとめよう!
OpenFOAM の境界条件をまとめよう!
 
OpenFOAM の cyclic、cyclicAMI、cyclicACMI 条件について
OpenFOAM の cyclic、cyclicAMI、cyclicACMI 条件についてOpenFOAM の cyclic、cyclicAMI、cyclicACMI 条件について
OpenFOAM の cyclic、cyclicAMI、cyclicACMI 条件について
 
OpenFOAM -空間の離散化と係数行列の取り扱い(Spatial Discretization and Coefficient Matrix)-
OpenFOAM -空間の離散化と係数行列の取り扱い(Spatial Discretization and Coefficient Matrix)-OpenFOAM -空間の離散化と係数行列の取り扱い(Spatial Discretization and Coefficient Matrix)-
OpenFOAM -空間の離散化と係数行列の取り扱い(Spatial Discretization and Coefficient Matrix)-
 
OpenFOAMソルバの実行時ベイズ最適化
OpenFOAMソルバの実行時ベイズ最適化OpenFOAMソルバの実行時ベイズ最適化
OpenFOAMソルバの実行時ベイズ最適化
 
OpenFOAMスレッド並列化のための基礎検討
OpenFOAMスレッド並列化のための基礎検討OpenFOAMスレッド並列化のための基礎検討
OpenFOAMスレッド並列化のための基礎検討
 
Boundary Conditions in OpenFOAM
Boundary Conditions in OpenFOAMBoundary Conditions in OpenFOAM
Boundary Conditions in OpenFOAM
 
Paraviewの等高面を綺麗に出力する
Paraviewの等高面を綺麗に出力するParaviewの等高面を綺麗に出力する
Paraviewの等高面を綺麗に出力する
 
オープンソースの CFD ソフトウェア SU2 のチュートリアルをやってみた
オープンソースの CFD ソフトウェア SU2 のチュートリアルをやってみたオープンソースの CFD ソフトウェア SU2 のチュートリアルをやってみた
オープンソースの CFD ソフトウェア SU2 のチュートリアルをやってみた
 
multiDimAMR
multiDimAMRmultiDimAMR
multiDimAMR
 
OpenFOAMのチュートリアルを作ってみた#1 『くさび油膜効果の計算』
OpenFOAMのチュートリアルを作ってみた#1 『くさび油膜効果の計算』OpenFOAMのチュートリアルを作ってみた#1 『くさび油膜効果の計算』
OpenFOAMのチュートリアルを作ってみた#1 『くさび油膜効果の計算』
 
Mixer vessel by cfmesh
Mixer vessel by cfmeshMixer vessel by cfmesh
Mixer vessel by cfmesh
 
OpenFOAMのDEM解析のpatchInteractionModelクラスの解読
OpenFOAMのDEM解析のpatchInteractionModelクラスの解読OpenFOAMのDEM解析のpatchInteractionModelクラスの解読
OpenFOAMのDEM解析のpatchInteractionModelクラスの解読
 

Andere mochten auch

OpenFOAMにおけるDEM計算の衝突モデルの解読
OpenFOAMにおけるDEM計算の衝突モデルの解読OpenFOAMにおけるDEM計算の衝突モデルの解読
OpenFOAMにおけるDEM計算の衝突モデルの解読takuyayamamoto1800
 
Setting and Usage of OpenFOAM multiphase solver (S-CLSVOF)
Setting and Usage of OpenFOAM multiphase solver (S-CLSVOF)Setting and Usage of OpenFOAM multiphase solver (S-CLSVOF)
Setting and Usage of OpenFOAM multiphase solver (S-CLSVOF)takuyayamamoto1800
 
How to get contour surface position by openfoam
How to get contour surface position by openfoamHow to get contour surface position by openfoam
How to get contour surface position by openfoamtakuyayamamoto1800
 
熱流体解析における離散スキームの評価
熱流体解析における離散スキームの評価熱流体解析における離散スキームの評価
熱流体解析における離散スキームの評価takuyayamamoto1800
 
2016 01 bubble_column
2016 01 bubble_column2016 01 bubble_column
2016 01 bubble_columnEtsuji Nomura
 
Estimation of numerical schemes in heat convection by OpenFOAM
Estimation of numerical schemes in heat convection by OpenFOAMEstimation of numerical schemes in heat convection by OpenFOAM
Estimation of numerical schemes in heat convection by OpenFOAMtakuyayamamoto1800
 
Spatial Interpolation Schemes in OpenFOAM
Spatial Interpolation Schemes in OpenFOAMSpatial Interpolation Schemes in OpenFOAM
Spatial Interpolation Schemes in OpenFOAMFumiya Nozaki
 

Andere mochten auch (7)

OpenFOAMにおけるDEM計算の衝突モデルの解読
OpenFOAMにおけるDEM計算の衝突モデルの解読OpenFOAMにおけるDEM計算の衝突モデルの解読
OpenFOAMにおけるDEM計算の衝突モデルの解読
 
Setting and Usage of OpenFOAM multiphase solver (S-CLSVOF)
Setting and Usage of OpenFOAM multiphase solver (S-CLSVOF)Setting and Usage of OpenFOAM multiphase solver (S-CLSVOF)
Setting and Usage of OpenFOAM multiphase solver (S-CLSVOF)
 
How to get contour surface position by openfoam
How to get contour surface position by openfoamHow to get contour surface position by openfoam
How to get contour surface position by openfoam
 
熱流体解析における離散スキームの評価
熱流体解析における離散スキームの評価熱流体解析における離散スキームの評価
熱流体解析における離散スキームの評価
 
2016 01 bubble_column
2016 01 bubble_column2016 01 bubble_column
2016 01 bubble_column
 
Estimation of numerical schemes in heat convection by OpenFOAM
Estimation of numerical schemes in heat convection by OpenFOAMEstimation of numerical schemes in heat convection by OpenFOAM
Estimation of numerical schemes in heat convection by OpenFOAM
 
Spatial Interpolation Schemes in OpenFOAM
Spatial Interpolation Schemes in OpenFOAMSpatial Interpolation Schemes in OpenFOAM
Spatial Interpolation Schemes in OpenFOAM
 

Kürzlich hochgeladen

PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000Shota Ito
 
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxIoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxAtomu Hidaka
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Danieldanielhu54
 
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。iPride Co., Ltd.
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
UPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdfUPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdffurutsuka
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directoryosamut
 
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ       2024/04/12の勉強会で発表されたものです。新人研修のまとめ       2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。iPride Co., Ltd.
 

Kürzlich hochgeladen (9)

PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000
 
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxIoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
 
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
UPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdfUPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdf
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory
 
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ       2024/04/12の勉強会で発表されたものです。新人研修のまとめ       2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
 

OpenFOAMにおける混相流計算

  • 2. 混相流流とは 混相流・・・複数の相が混ざり合う流れ   例)気液二相流(空気-­‐水)  キャビテーション、気泡塔     液液二相流(水-­‐油)       有機溶媒と水の混合溶液     固液二相流(粒子-­‐水)  懸濁液     工業的に重要であることが多い   様々な数値計算法が存在する
  • 3. 混相流流の数値計算法 混相流のシミュレーションを分類すると以下の通りになる   •  メッシュフリー法   •  界面捕獲法 (Interface  Tracking)   •  界面追跡法 (Interface  Capturing)   •  平均化(二流体)モデル   •  メッシュフリー法   粒子法(MPS,  SPH)   •  界面捕獲法   VOF法   Level-­‐Set法   Phase  Field法   •  界面追跡法   BFC(界面適合座標)   ALE(Arbitrary  Lagrangian-­‐Eulerian)  
  • 4. それぞれの⼿手法の特徴 •  メッシュフリー法   微小の粒子の運動で表現する   メッシュ分割が不必要   衝撃波等の不連続場の扱いが容易   大変形、歪みに対して精度保持   精度が悪い   計算時間多大   •  界面捕獲法   計算格子を移動せずに計算する   手法によって異なるが界面がなまる   •  界面追跡法   計算格子を時々刻々と移動する   精度がかなり高い   計算が破綻しやすい   砕波現象等の大変形をするものに不向き   概念図
  • 5. OpenFOAMにおける実装 •  メッシュフリー法   ?粒子法   •  界面捕獲法   ○VOF法   ×Level-­‐Set法   ×Phase  Field法   ×Front  tracking法   •  界面追跡法   △BFC(界面適合座標)   ○ALE(Arbitrary  Lagrangian-­‐Eulerian)   混相流のコードが少ない   ほとんどVOF法(interFoam 系) interFoam   interDymFoam   interMixingFoam   ... AMR(AdapVve  Mesh  Refinement)   局所格子分割するライブラリ VOF法 +
  • 6. VOF(Volume  of  Fluid)法 •  ⽀支配⽅方程式 Navier-‐‑‒Stokes  式 連続式 流流体率率率αの移流流⽅方程式 sk gP t δσ ρν σ σ nF Fvvv v = ++∇+−∇=∇⋅+ ∂ ∂ 2 0=⋅∇ v •  VOF法の欠点   界面の形状が明確に定義されな い   •  VOF法の長所   境界面の複雑な変形を伴う現象 をシミュレート可能   アルゴリズムが単純   現在の研究ではVOF法を解くの みの研究は少ない VOF法と様々なものを組み合わせ てシミュレーション k:  界面の曲率 ::  liquid  phase   ::  interface   ::  gas  phase 1=α 0=α 10 <<α ( ) 0=⋅∇+ ∂ ∂ vα α t
  • 7. VOF法の精度度改善⽅方法 VOF法        VOF法+AMR   CLSVOF法   VOF/PLIC法   VOF/SLIC法   VOF/WLIC法   VOF/IB法     数値スキーム   CIP法   WENO法 界面再構築のアルゴリズム   PLIC  (Piecewise  Linear  Interface  CalculaVon)   SLIC  (Simple  Line  Interface  CalculaVon)   WLIC  (Weighted  Line  Interface  CalculaVon) 様々なものが存在 洋書   2011年出版(初版)   Cambridge  Univ.  Press   混相流の計算手法について   (主にVOF系,  Front-­‐Tracking,   Level-­‐Set  など)  
  • 9. VOF法+AMR(InterDymFoam) Dam Break (Tutorial) 格子局所分割を行っている   格子分割のおかげで界面の拡 散(誤差)が低下
  • 10. VOF法の精度度改善⽅方法 VOF法        VOF法+AMR   CLSVOF法   VOF/PLIC法   VOF(THINC/WLIC)法     数値スキーム   CIP法   ENO法   WENO法 界面再構築のアルゴリズム   PLIC  (Piecewise  Linear  Interface  CalculaVon)   SLIC  (Simple  Line  Interface  CalculaVon)   WLIC  (Weighted  Line  Interface  CalculaVon) 様々なものが存在 CLSVOF法のOpenFOAMに対する 実装を目指す VOF法のコード解読から始める
  • 11. //  Need  to  store  rho  for  ddt(rho,  U) volScalarField  rho ( IOobject ( "rho", runTime.VmeName(), mesh, IOobject::READ_IF_PRESENT ), alpha1*rho1  +  (scalar(1)  -­‐  alpha1)*rho2, alpha1.boundaryField().types() ); InterFoamのソースコード解読 •  ⽀支配⽅方程式 Navier-‐‑‒Stokes  式 流流体率率率αの移流流⽅方程式 sk gP t δσ ρν σ σ nF Fvvv v = ++∇+−∇=∇⋅+ ∂ ∂ 2 ::  liquid  phase   ::  interface   ::  gas  phase 1=α 0=α 10 <<α lg lg µααµµ ρααρρ )1( )1( −+= −+= lg ρααρρ )1( −+= createFields.Hの中 Ver.  1.6.x ( ) 0=⋅∇+ ∂ ∂ vα α t
  • 12. InterFoamのソースコード解読 •  ⽀支配⽅方程式 Navier-‐‑‒Stokes  式 流流体率率率αの移流流⽅方程式 sk gP t δσ ρν σ σ nF Fvvv v = ++∇+−∇=∇⋅+ ∂ ∂ 2 ::  liquid  phase   ::  interface   ::  gas  phase 1=α 0=α 10 <<α lg lg µααµµ ρααρρ )1( )1( −+= −+= Ver.  1.6.x lg µααµµ )1( −+= /src/transportModels/incompressible/   incompressibleTwoPhaseMixture/   twoPhaseMixture.C   118行目     tmp<volScalarField>  twoPhaseMixture::mu()  const { volScalarField  limitedAlpha1  =  min(max(alpha1_,  scalar(0)),  scalar(1)); return  tmp<volScalarField> ( new  volScalarField ( "mu", limitedAlpha1*rho1_*nuModel1_-­‐>nu() +  (scalar(1)  -­‐  limitedAlpha1)*rho2_*nuModel2_-­‐>nu() ) ); } ( ) 0=⋅∇+ ∂ ∂ vα α t
  • 13. InterFoamのソースコード解読 •  ⽀支配⽅方程式 Navier-‐‑‒Stokes  式 流流体率率率αの移流流⽅方程式 sk gP t δσ ρν σ σ nF Fvvv v = ++∇+−∇=∇⋅+ ∂ ∂ 2 ::  liquid  phase   ::  interface   ::  gas  phase 1=α 0=α 10 <<α Ver.  1.6.x ( ) 0=⋅∇+ ∂ ∂ vα α t 液相領域     気相領域 ( ) 0=⋅∇+ ∂ ∂ l t vα α ( ) 0=⋅∇+ ∂ ∂ vα α t ( )( ) 01 =−⋅∇+ ∂ ∂ g t vα α 小文字l,  gはそれぞれ液相、気相を表す。 ( ) glr gl vvv vvv −= −+= αα 1 vr:  相関速度 再定義 lg lg µααµµ ρααρρ )1( )1( −+= −+=
  • 14. InterFoamのソースコード解読 •  ⽀支配⽅方程式 Navier-‐‑‒Stokes  式 流流体率率率αの移流流⽅方程式 sk gP t δσ ρν σ σ nF Fvvv v = ++∇+−∇=∇⋅+ ∂ ∂ 2 ::  liquid  phase   ::  interface   ::  gas  phase 1=α 0=α 10 <<α Ver.  1.6.x ( ) ( )( ) 01 =−⋅∇+⋅∇+ ∂ ∂ r t vv ααα α 最終形 alphaEqn.H中で設定     α式の設定については後に説明 ( ) 0=⋅∇+ ∂ ∂ vα α t lg lg µααµµ ρααρρ )1( )1( −+= −+=
  • 15. InterFoamのソースコード解読 •  ⽀支配⽅方程式 Navier-‐‑‒Stokes  式 流流体率率率αの移流流⽅方程式 sk gP t δσ ρν σ σ nF Fvvv v = ++∇+−∇=∇⋅+ ∂ ∂ 2 ::  liquid  phase   ::  interface   ::  gas  phase 1=α 0=α 10 <<α Ver.  1.6.x 表面張力モデルCSFモデル   (Brackbill  (1992))   (ConVnuum  Surface  Force) sk δσσ nF = σ:  表面張力   k:  曲率   n:  法線ベクトル   δs:  δ関数 表面張力   面積力         体積力   (面にかかる力)    (体積にかかる力) ( ) 0=⋅∇+ ∂ ∂ vα α t lg lg µααµµ ρααρρ )1( )1( −+= −+=
  • 16.    Ueqn.H中      19行目    if  (momentumPredictor) { solve ( UEqn == fvc::reconstruct ( fvc::interpolate(rho)*(g  &  mesh.Sf()) +  ( fvc::interpolate(interface.sigmaK())*fvc::snGrad(alpha1) -­‐  fvc::snGrad(p) )  *  mesh.magSf() ) ); } InterFoamのソースコード解読 •  ⽀支配⽅方程式 Navier-‐‑‒Stokes  式 流流体率率率αの移流流⽅方程式 ::  liquid  phase   ::  interface   ::  gas  phase 1=α 0=α 10 <<α Ver.  1.6.x sk δσσ nF = sk gP t δσ ρν σ σ nF Fvvv v = ++∇+−∇=∇⋅+ ∂ ∂ 2 ( ) 0=⋅∇+ ∂ ∂ vα α t lg lg µααµµ ρααρρ )1( )1( −+= −+= sigmaK()とは?? snGrad(alpha1)とは?? fvc::reconstructとは??
  • 17. InterFoamのソースコード解読 •  ⽀支配⽅方程式 Navier-‐‑‒Stokes  式 流流体率率率αの移流流⽅方程式 ::  liquid  phase   ::  interface   ::  gas  phase 1=α 0=α 10 <<α Ver.  1.6.x ( ) 0=⋅∇+ ∂ ∂ vα α t lg lg µααµµ ρααρρ )1( )1( −+= −+= sigmaK()とは??   interfaceProperVes.H 中   140行目      tmp<volScalarField>  sigmaK()  const { return  sigma_*K_; } sigma_  :surface  tension   K_  :curvature sigmaK() skF δσσ n= sk gP t δσ ρν σ σ nF Fvvv v = ++∇+−∇=∇⋅+ ∂ ∂ 2
  • 18. InterFoamのソースコード解読 •  ⽀支配⽅方程式 Navier-‐‑‒Stokes  式 流流体率率率αの移流流⽅方程式 ::  liquid  phase   ::  interface   ::  gas  phase 1=α 0=α 10 <<α Ver.  1.6.x ( ) 0=⋅∇+ ∂ ∂ vα α t lg lg µααµµ ρααρρ )1( )1( −+= −+= snGrad(alpha1)とは??   プログラマズガイドより   面に垂直なベクトル成分を表す。 α α ∇ ∇ =n α場(赤:流体,青:気体) α∇ sk gP t δσ ρν σ σ nF Fvvv v = ++∇+−∇=∇⋅+ ∂ ∂ 2
  • 19. InterFoamのソースコード解読 •  ⽀支配⽅方程式 Navier-‐‑‒Stokes  式 流流体率率率αの移流流⽅方程式 ::  liquid  phase   ::  interface   ::  gas  phase 1=α 0=α 10 <<α Ver.  1.6.x ( ) 0=⋅∇+ ∂ ∂ vα α t lg lg µααµµ ρααρρ )1( )1( −+= −+= sk gP t δσ ρν σ σ nF Fvvv v = ++∇+−∇=∇⋅+ ∂ ∂ 2 fvc::interpolate(interface.sigmaK())*fvc::snGrad(alpha1) Fσ =σknδs 表面張力モデルCSFモデル   n = ∇α ∇α δs = ∇a Fσ =σk∇α  Ueqn.H中
  • 20. fvc::reconstructとは??   OpenFOAM  wiki  +  CFD  onlineより   InterFoamのソースコード解読 •  ⽀支配⽅方程式 Navier-‐‑‒Stokes  式 流流体率率率αの移流流⽅方程式 ::  liquid  phase   ::  interface   ::  gas  phase 1=α 0=α 10 <<α Ver.  1.6.x ( ) 0=⋅∇+ ∂ ∂ vα α t lg lg µααµµ ρααρρ )1( )1( −+= −+= sk gP t δσ ρν σ σ nF Fvvv v = ++∇+−∇=∇⋅+ ∂ ∂ 2 hpp://www.cfd-­‐online.com/Forums/openfoam-­‐programming-­‐ development/77943-­‐fvc-­‐reconstruct-­‐algorithm.html hpps://openfoamwiki.net/index.php/OpenFOAM_guide/ ReconstrucVon セル界面でのFluxからセル中心での速度 ベクトルを返す。 output  =  fvc::reconstruct(input) output  ::  セル中心での速度ベクトル   input  ::  セル界面でのFlux 目的:  圧力振動を生じさせないように、擬 似的なスタッガード格子のように作用させ るため。
  • 21. InterFoamのソースコード解読 Ver.  1.6.x α式の設定 ( ) ( )( ) 01 =−⋅∇+⋅∇+ ∂ ∂ r t vv ααα α 最終形 (微分形) 有限体積法なので   積分系に変換 積分系 ( ) ( )( ) 01 =−⋅∇+⋅∇+ ∫∫∫ ΔΔΔ dVdVdV dt d V r VV vv αααα ガウスの発散定理 dVds Vs ∫∫ ⋅∇=⋅ aan ( ) dSdSdV dt d SSV ∫∫∫ ⋅−+⋅+ Δ nvnv rαααα 1
  • 22. InterFoamのソースコード解読 Ver.  1.6.x α式の設定 ( ) dSdSdV dt d SSV ∫∫∫ ⋅−+⋅+ Δ nvnv rαααα 1 離散化 非定常項はとりあえず無視して ( )( ) ff S⋅⋅− nvrαα1( ) ff S⋅⋅nvα ここで、fはセル界面上を表す。   Sfは表面積 中点公式により近似 Sf αvn イメージ これがOpenFOAMにどう組 み込まれているか??
  • 23. InterFoamのソースコード解読 Ver.  1.6.x alphaEqn.H  中   5~8行目     surfaceScalarField  phic  =  mag(phi/mesh.magSf()); phic  =  min(interface.cAlpha()*phic,  max(phic)); surfaceScalarField  phir  =  phic*interface.nHat();   f c S φ φ = ))max(,min( ccc C φφφ α ×= fcr n×=φφ それぞれ 代入 ⎥ ⎥ ⎦ ⎤ ⎢ ⎢ ⎣ ⎡ ⎟ ⎟ ⎠ ⎞ ⎜ ⎜ ⎝ ⎛ = ff fr ss Cn φφ φ α max,min プログラム上では ( )( ) ff S⋅⋅− nvrαα1 文字rから判断すると??
  • 24. InterFoamのソースコード解読 Ver.  1.6.x alphaEqn.H  中   5~8行目     surfaceScalarField  phic  =  mag(phi/mesh.magSf()); phic  =  min(interface.cAlpha()*phic,  max(phic)); surfaceScalarField  phir  =  phic*interface.nHat();   find,  grepでソース(src)内検索 src/transportModels/interfaceProperVes/interfaceProperVes.C  中 cAlpha,  nHat_,  K_等の設定
  • 25. InterFoamのソースコード解読 Ver.  1.6.x //  Face  unit  interface  normal  flux nHat_  =  nHatv  &  Sf; //  Simple  expression  for  curvature K_  =  -­‐fvc::div(nHat_); transportProperVesDict_(dict), cAlpha_ ( readScalar ( alpha1.mesh().soluVonDict().subDict("PISO").lookup("cAlpha") ) ), src/transportModels/interfaceProperVes/interfaceProperVes.C 中 ffvf Snn ⋅= 表面張力モデルCSFモデル   (Brackbill  (1992))   (ConVnuum  Surface  Force) Fσ =σknδs k = ∇⋅nf k = ∇⋅n n Cαの読み込み 131行目 117行目 146行目
  • 26. InterFoamのソースコード解読 Ver.  1.6.x //  Face  unit  interface  normal surfaceVectorField  nHatv  =  gradAlphaf/ (mag(gradAlphaf)  +  deltaN_); src/transportModels/interfaceProperVes/interfaceProperVes.C 中 113行目 nfv = ∇α( )f ∇α( )f +δN deltaN_ ( "deltaN", 1e-­‐8/pow(average(alpha1.mesh().V()),  1.0/3.0) ), 156行目 δN = 1.0×10−8 ( Vi / N N ∑ )1/3 界面の法線方向計算の安定化   (ゼロ割を防ぐ)
  • 27. InterFoamのソースコード解読 Ver.  1.6.x alphaEqn.H  中   5~8行目     surfaceScalarField  phic  =  mag(phi/mesh.magSf()); phic  =  min(interface.cAlpha()*phic,  max(phic)); surfaceScalarField  phir  =  phic*interface.nHat();   ⎥ ⎥ ⎦ ⎤ ⎢ ⎢ ⎣ ⎡ ⎟ ⎟ ⎠ ⎞ ⎜ ⎜ ⎝ ⎛ = ff fr ss Cn φφ φ α max,min ( )( ) ff S⋅⋅− nvrαα1 最初の推測 なんとなく   それっぽいという所までの理解
  • 28. InterFoamのソースコード解読 Ver.  1.6.x alphaEqn.H  中   9行目~      for  (int  aCorr=0;  aCorr<nAlphaCorr;  aCorr++) { surfaceScalarField  phiAlpha  = fvc::flux ( phi, alpha1, alphaScheme ) +  fvc::flux ( -­‐fvc::flux(-­‐phir,  scalar(1)  -­‐  alpha1,   alpharScheme), alpha1, alpharScheme ); MULES::explicitSolve(alpha1,  phi,  phiAlpha,  1,  0); rhoPhi  =  phiAlpha*(rho1  -­‐  rho2)  +  phi*rho2; }   Fvc::flux  流束を返す。     /src/finiteVolume/finiteVolume/ fvc/fvcFlux.c中 φα ααφ )1( −r ααφφαφα )1( −+= r プログラム上では MULES(MulVdimensional  Universal   Limiter  for  Explicit  SoluVon)??
  • 29. InterFoamのソースコード解読 Ver.  1.6.x ⎥ ⎥ ⎦ ⎤ ⎢ ⎢ ⎣ ⎡ ⎟ ⎟ ⎠ ⎞ ⎜ ⎜ ⎝ ⎛ = ff fr ss Cn φφ φ α max,minααφφαφα )1( −+= r α式の設定 ( ) dSdSdV dt d SSV ∫∫∫ ⋅−+⋅+ Δ nvnv rαααα 1 fS⋅= vφ ではないかと推 測できる
  • 30. ( )( ) ff S⋅⋅− nvrαα1 ⎥ ⎥ ⎦ ⎤ ⎢ ⎢ ⎣ ⎡ ⎟ ⎟ ⎠ ⎞ ⎜ ⎜ ⎝ ⎛ ⋅⋅ f ff f ff f S Su S Su Cn max,min α OpenFOAMのコード内 nfv = ∇α( )f ∇α( )f +δN δN = 1.0×10−8 ( Vi / N N ∑ )1/3 解を安定化するもの   (nfvが無限大になるのを防ぐ) 人工的に界面幅を圧縮する項 ffvf Snn ⋅= α場(赤:流体, 青:気体) α∇ InterFoamのソースコード解読
  • 31. まとめ •  OpenFOAMに実装されているinterFoamを解 読しようとした。   •  MULES等の方法については未調査   •  このコード解読をベースにOpenFOAMの新 規コード開発予定
  • 32. References •  J.  U.  Brackbill  et  al.,  J.  Comp.  Phys.,  100,  335-­‐354  (1992).   •  G.  Tryggvason  et  al.,  Direct  Numerical  SimulaVons  of  Gas-­‐ Liquid  MulVphase  Flows  (Cambridge  University  Press,  2011)   •  プログラマーズガイド   •  OpenFOAM  wiki  (hpps://openfoamwiki.net/index.php/ OpenFOAM_guide/ReconstrucVon)   •  CFD  online  (hpp://www.cfd-­‐online.com/Forums/openfoam-­‐ programming-­‐development/77943-­‐fvc-­‐reconstruct-­‐algorithm.html)