openfoamにおける混相流計算

32
OpenFOAMにおけ る混相計算 阪学学院基礎学研究科 修課程1 卓也 19OpenCAE勉強会@関西 2013/1/19

Upload: takuya-yamamoto

Post on 16-Jul-2015

817 views

Category:

Technology


9 download

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)