请教下dragmodel问题



  • 请问下在使用twophaseeulerfoam解算器时出现这样的问题是怎样导致的?我查看了解算器源文件里的dragmodel代码但里边都是一些类的声明,没发现有等式或方程定义变量之类的。

    #0  Foam::error::printStack(Foam::Ostream&) at ??:?
    #1  Foam::sigFpe::sigHandler(int) at ??:?
    #2  ? in "/lib/x86_64-linux-gnu/libc.so.6"
    #3  ? in "/lib/x86_64-linux-gnu/libm.so.6"
    #4  pow in "/lib/x86_64-linux-gnu/libm.so.6"
    #5  Foam::pow(Foam::Field<double>&, Foam::UList<double> const&, double const&) at ??:?
    #6  Foam::tmp<Foam::GeometricField<double, Foam::fvPatchField, Foam::volMesh> > Foam::pow<Foam::fvPatchField, Foam::volMesh>(Foam::GeometricField<double, Foam::fvPatchField, Foam::volMesh> const&, Foam::dimensioned<double> const&) at ??:?
    #7  Foam::dragModels::SchillerNaumann::CdRe() const at ??:?
    #8  Foam::dragModel::Ki() const at ??:?
    #9  Foam::dragModel::K() const at ??:?
    #10  Foam::BlendedInterfacialModel<Foam::dragModel>::K() const at ??:?
    #11  Foam::twoPhaseSystem::Kd() const at ??:?
    #12  ? at ??:?
    #13  __libc_start_main in "/lib/x86_64-linux-gnu/libc.so.6"
    #14  ? at ??:?
    


  • @lixh 有可能你的模型里面某个值过大了。用的哪个版本?

    这个是SchillerNaumann的定义:

    Foam::tmp<Foam::volScalarField> Foam::dragModels::SchillerNaumann::CdRe() const
    {
        volScalarField Re(pair_.Re());
    
        return
            neg(Re - 1000)*24.0*(1.0 + 0.15*pow(Re, 0.687))
          + pos(Re - 1000)*0.44*max(Re, residualRe_);
    }
    


  • @李东岳 我用的是4.0版本的,将算例中的模型网格尺度变小之后也会这样。请问下东岳老师,SchillerNaumann定义里的neg是表示负号 的意思吗?



  • @lixh neg内的参数如果是负值,则返回1,如果为正值,则返回0. 他是一个增加计算速度的函数,就不用循环了。



  • 谢谢您,pos就是负数返回0,正数返回1,是吧:happy:



  • @lixh 是的



  • 请问题主这个问题解决了吗?


Log in to reply