Skip to content
  • 最新
  • 版块
  • 东岳流体
  • 随机看[请狂点我]
皮肤
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • 默认(不使用皮肤)
  • 不使用皮肤
折叠
CFD中文网

CFD中文网

  1. CFD中文网
  2. OpenFOAM
  3. 尝试将compressibleInterFoam中求解温度方程改为求解能量方程

尝试将compressibleInterFoam中求解温度方程改为求解能量方程

已定时 已固定 已锁定 已移动 OpenFOAM
6 帖子 3 发布者 4.4k 浏览
  • 从旧到新
  • 从新到旧
  • 最多赞同
回复
  • 在新帖中回复
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • Z 离线
    Z 离线
    zhouxu
    写于2021年5月25日 14:32 最后由 编辑
    #1

    compressibleInterFoam中求解的是温度方程,现在想改为求解能量方程,添加的EEqn.H文件如下

    {
        volScalarField& he = mixture.he();
    
        fvScalarMatrix EEqn
        (
            fvm::ddt(rho, he) + mvConvection->fvmDiv(rhoPhi, he)
          + fvc::ddt(rho, K) + fvc::div(rhoPhi, K)
          + (
                he.name() == "e"
              ? fvc::div
                (
                    fvc::absolute(phi/fvc::interpolate(rho), U),
                    p,
                    "div(phiv,p)"
                )
              : -dpdt
            )
         == fvm::laplacian(turbulence.alphaEff(), he)
         
        );
    
        EEqn.relax();
    
        fvOptions.constrain(EEqn);
    
        EEqn.solve();
    
        fvOptions.correct(he);
    
        mixture.correctThermo();
        mixture.correct();
    
        Info<< "T min/max   " << min(T).value() << ", "
            << max(T).value() << endl;
    }
    

    编译通过了,但是在第一步求解到能量方程时报错如下:

    --> FOAM FATAL ERROR: 
    cannot be called for a calculatedFvPatchField
        on patch gasinlet of field h.water in file "/home/tens/htest/0/h.water"
        You are probably trying to solve for a field with a default boundary condition.
    
        From function Foam::tmp<Foam::Field<Type> > Foam::calculatedFvPatchField<Type>::gradientInternalCoeffs() const [with Type = double]
        in file /home/tens/OpenFOAM/OpenFOAM-7/src/finiteVolume/lnInclude/calculatedFvPatchField.C at line 188.
    
    FOAM aborting
    

    有人知道问题出在哪里了吗

    李 1 条回复 最后回复 2021年5月25日 23:22
  • 李 离线
    李 离线
    李东岳 管理员
    在 2021年5月25日 23:22 中回复了 zhouxu 最后由 编辑
    #2

    @zhouxu 把你h边界条件中的calculated边界条件改一下

    http://dyfluid.com/index.html
    需要帮助debug算例的看这个 https://cfd-china.com/topic/8018

    Z 1 条回复 最后回复 2021年5月26日 01:47
  • Z 离线
    Z 离线
    zhouxu
    在 2021年5月26日 01:47 中回复了 李东岳 最后由 编辑
    #3

    @李东岳 谢谢东岳老师回复,我看其他求能量方程的算例中初始条件也都是给的温度边界,所以我并没有给h的初始边界条件而是给的初始温度。我看twoPhaseMixtureThermo.C中的he如下

    Foam::tmp<Foam::volScalarField> Foam::twoPhaseMixtureThermo::he
    (
        const volScalarField& p,
        const volScalarField& T
    ) const
    {
        return alpha1()*thermo1_->he(p, T) + alpha2()*thermo2_->he(p, T);
    }
    

    应该是根据p与T计算得到的,我将这两个初始条件中calculated的部分全改了,还是报一样的错误

    1 条回复 最后回复
  • Z 离线
    Z 离线
    zhouxu
    写于2021年5月26日 02:19 最后由 编辑
    #4

    在twoPhaseMixtureThermo.H中关于he的定义,原本有NotImplemented,被我注释掉了,难道是说这个热物理模型中关于he部分并不完善吗

    virtual volScalarField& he()
    {
    //NotImplemented;
    return thermo1_->he();
    }
    //- Enthalpy/Internal energy [J/kg]
    virtual const volScalarField& he() const
    {
    //NotImplemented;
    return thermo1_->he();
    }
    S 李 2 条回复 最后回复 2021年5月31日 11:42
  • S 离线
    S 离线
    ShaneHEEE
    在 2021年5月31日 11:42 中回复了 zhouxu 最后由 编辑
    #5

    @zhouxu gasinlet初始条件改为zeroGradient行不行?

    1 条回复 最后回复
  • 李 离线
    李 离线
    李东岳 管理员
    在 2021年5月31日 12:19 中回复了 zhouxu 最后由 编辑
    #6

    @zhouxu 如果是h的传输方程,就不能有calculated边界条件。你可以把你的温度边界赋值给h,类似;

    volScalarField h
    (
        (
        ).
        mesh,
        T.boundaryField().types()
    );
    

    http://dyfluid.com/index.html
    需要帮助debug算例的看这个 https://cfd-china.com/topic/8018

    1 条回复 最后回复
2021年5月25日 14:32

4/6

2021年5月26日 02:19

未读 2
2021年5月31日 12:19
  • 登录

  • 登录或注册以进行搜索。
4 / 6
  • 第一个帖子
    4/6
    最后一个帖子
0
  • 最新
  • 版块
  • 东岳流体
  • 随机看[请狂点我]