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. 不同的获取焓的方式的定义

不同的获取焓的方式的定义

已定时 已固定 已锁定 已移动 OpenFOAM
3 帖子 2 发布者 2.9k 浏览
  • 从旧到新
  • 从新到旧
  • 最多赞同
回复
  • 在新帖中回复
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • Y 离线
    Y 离线
    yfclark 神
    写于 最后由 编辑
    #1

    各位老师们好,我最近在看twoPhaseThermo的代码,其中涉及到了焓的计算,定义了三种定义方式。

    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);
    }
    
    
    Foam::tmp<Foam::scalarField> Foam::twoPhaseMixtureThermo::he
    (
        const scalarField& p,
        const scalarField& T,
        const labelList& cells
    ) const
    {
        return
            scalarField(alpha1(), cells)*thermo1_->he(p, T, cells)
          + scalarField(alpha2(), cells)*thermo2_->he(p, T, cells);
    }
    
    
    Foam::tmp<Foam::scalarField> Foam::twoPhaseMixtureThermo::he
    (
        const scalarField& p,
        const scalarField& T,
        const label patchi
    ) const
    {
        return
            alpha1().boundaryField()[patchi]*thermo1_->he(p, T, patchi)
          + alpha2().boundaryField()[patchi]*thermo2_->he(p, T, patchi);
    }
    
    

    第一个使用volScalarField的p和T获得混合物的焓,volScalarField来自GeometricField< Type>,GeometricField< Type>包含了InternalField和BoundaryField,第一个方法是同时更新了InternalField和BoundaryField吗?
    第二个和第三个方法使用的都是ScalarField,一个是获得某些cells的焓,另一个是获得某个patchi的焓,这里的ScalarField来自typedef Field<ScalarField>,我查阅了一些资料,没有找到ScalarField和GeometricField的关系,对于后面两个方法获取焓的方法感到困惑。
    我想实现用P和T来更新焓。下面是我的代码:

    volScalarField p_;
    volScalarField T_;
    volScalrField & he=this->he(p_,T_);
    //不知道是否完成的InternalField和BoundaryField的更新。
    //更新边界的值;
    forAll(T_.boundaryField(), patchi)
    {
    fvPatchScalarField&       pT  = T_.boundaryField()[patchi];
    fvPatchScalarField&      pp  = p_.boundaryField()[patchi];
    fvPatchScalarField&     hep=this->he(pT,pp,patchi);
    }
    //用fvPatchScalarField作为scalarField的参数不知道是否合理?请诸位老师指教。
    
    浪 1 条回复 最后回复
  • 浪 离线
    浪 离线
    浪迹天大
    在 中回复了 yfclark 最后由 编辑
    #2

    @yfclark 你的代码中,前三行就够了,已经更新了内部和边界场。

    OpenFOAM 学习交流:https://openfoam.top

    1 条回复 最后回复
  • Y 离线
    Y 离线
    yfclark 神
    写于 最后由 编辑
    #3

    谢谢,我已经看懂了

    1 条回复 最后回复

  • 登录

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