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


  • 讲师

    各位老师们好,我最近在看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的参数不知道是否合理?请诸位老师指教。
    


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


  • 讲师

    谢谢,我已经看懂了


Log in to reply
 


CFD中文网 | 东岳流体学术 | 东岳流体商业 | 吉ICP备20003622号-1