openfoamにおける混相流計算
TRANSCRIPT
-
OpenFOAM
1
19OpenCAE@ 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)
VOFinterFoam
interFoam interDymFoam interMixingFoam ...
AMR(AdapVve Mesh Renement)
VOF
-
VOF(Volume of Fluid)
Navier-Stokes
sk
gPt
nF
Fvvvv
=
+++=+
2
0= v
VOF VOF
VOF
VOF
k:
:: liquid phase :: interface :: gas phase
1=
0=10
-
VOF
VOF VOFAMR 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
-
VOFAMR(InterDymFoam)
Dam Break (Tutorial)
()
-
VOF
VOF VOFAMR CLSVOF VOF/PLIC VOF(THINC/WLIC) CIP ENO WENO
PLIC (Piecewise Linear Interface CalculaVon) SLIC (Simple Line Interface CalculaVon) WLIC (Weighted Line Interface CalculaVon)
CLSVOFOpenFOAM
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
gPt
nF
Fvvvv
=
+++=+
2
:: liquid phase :: interface :: gas phase
1=
0=10
-
InterFoam
Navier-Stokes
sk
gPt
nF
Fvvvv
=
+++=+
2
:: liquid phase :: interface :: gas phase
1=
0=10 nu() ) );}
( ) 0=+
vt
-
InterFoam
Navier-Stokes
sk
gPt
nF
Fvvvv
=
+++=+
2
:: liquid phase :: interface :: gas phase
1=
0=10
-
InterFoam
Navier-Stokes
sk
gPt
nF
Fvvvv
=
+++=+
2
:: liquid phase :: interface :: gas phase
1=
0=10
-
InterFoam
Navier-Stokes
sk
gPt
nF
Fvvvv
=
+++=+
2
:: liquid phase :: interface :: gas phase
1=
0=10
-
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
-
InterFoam
Navier-Stokes
:: liquid phase :: interface :: gas phase
1=
0=10
-
InterFoam
Navier-Stokes
:: liquid phase :: interface :: gas phase
1=
0=10
-
InterFoam
Navier-Stokes
:: liquid phase :: interface :: gas phase
1=
0=10
-
fvc::reconstruct OpenFOAM wiki + CFD online
InterFoam
Navier-Stokes
:: liquid phase :: interface :: gas phase
1=
0=10
-
InterFoamVer. 1.6.x
( ) ( )( ) 01 =++
rtvv
()
( ) ( )( ) 01 =++ dVdVdVdtd
V rVVvv
dVdsVs = aan
( ) dSdSdVdtd
SSV ++ nvnv r 1
-
InterFoamVer. 1.6.x
( ) dSdSdVdtd
SSV ++ nvnv r 1
( )( ) ff S nvr1( ) ff Snvf Sf
Sf
vn
OpenFOAM
-
InterFoamVer. 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();
fc S
=
))max(,min( ccc C =
fcr n=
=
fffr ss
Cn max,min
( )( ) ff S nvr1r??
-
InterFoamVer. 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();
nd, grep(src)
src/transportModels/interfaceProperVes/interfaceProperVes.C
cAlpha, nHat_, K_
-
InterFoamVer. 1.6.x
// Face unit interface normal ux 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 = knsk =nf k =nn
C
131
117
146
-
InterFoamVer. 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.0108( Vi / NN )1/3
()
-
InterFoamVer. 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();
=
fffr ss
Cn max,min
( )( ) ff S nvr1
-
InterFoamVer. 1.6.x
alphaEqn.H 9~ for (int aCorr=0; aCorr
-
InterFoamVer. 1.6.x
=
fffr ss
Cn max,min )1( += r
( ) dSdSdVdtd
SSV ++ nvnv r 1
fS= v
-
( )( ) ff S nvr1
f
ff
f
fff S
Su
S
SuCn max,min
OpenFOAM
nfv =( ) f
( ) f +NN =
1.0108( Vi / NN )1/3
(nfv)
ffvf Snn =
:,:
InterFoam
-
OpenFOAMinterFoam
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)