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