我需要关于fixedFluxPressure边界的解释【翻译】

翻译自:CFD-online

帖子地址:http://www.cfd-online.com/Forums/openfoam-solving/82581-i-need-explanations-about-fixedfluxpressure.html

Cyp

大家好!

我看了一下fixedFluxPressure边界条件并且我不确定我能很好的理解这个边界条件。

如果我想要根据进入的速度估算压力,我猜我需要使用这个边界条件。

更进一步,在源代码中,有一段可以读到:

Code:

gradient() = (phip - (patch().Sf() & Up))/patch().magSf()/rAp;

我没有找一个数学公式与这段代码联系起来。

欢迎任何启示。

祝好

Cyp

JR22

我知道这是一个老帖子了,但是它仍然是非常相关的。

我在尝试使buoyantBoussinesqSimpleFoam求解器收敛的时候遇上了大问题。我把p_rgh里的边界从buoyantPressure边界条件改为fixedFluxPressure边界条件然后模型开始收敛了。

有人吗?

Sherlock_1812

有相同的问题。buoyantPressure边界条件和fixedFLuxPressure边界条件有什么区别?

__________________
祝好

Srivaths

zandi

大家好

2.3.0版本的OpenFOAM没有buoyantPressure库?我对吗?

buoyantPressure边界和fixedFluxPressure边界有什么不同吗?

为什么fixedFluxPressure边界条件收敛性更好?这仅仅是他们之间的区别吗?

请求帮助

fabian_roesler

2.2.2OpenFOAM已经有了这两个边界条件了。在更新的版本中,buoyantPressure边界消失了。看一下源代码或者Doxygen就可以澄清。

buoyantPressureFvPatchScalarField我们可以知道:

对于浮力流动,边界条件设置为压力梯度更合适。如果变量名是pd, p_rghph_rgh之一,我们假设压力变量是并且梯度使用如下表达式设置:

否则,我们假设它为静压,并且梯度使用:

fixedFluxPressureFvPatchScalarField我们可以看出:这个边界条件调整压力梯度使得在边界上的通量由速度边界条件指定。

指定的流量被压力梯度补偿。用估算

当压力扩散被计算时,两者都可以从数据库中查看

梯度使用下式计算:

fabian_roesler

一些额外的注解:

fixedFluxPressure边界条件具有更好的收敛性。我认为这是因为更多的压力与梯度计算相关联。

PhiphiHbyA(预测通量场)直接与压力方程相关联。在一个壁面,通量差趋近于零,因此边界条件变成zeroGradient

buoyanPressure边界条件是用一种更接近物理的方法,一种按照Archimedes来描述压力梯度的方法。

我希望我的解释是容易理解并且正确的。

祝好

Fabian

santiagomarquezd

大家好,我也正在处理fixedFluxPressure边界并且这个帖子很有帮助。源代码至少在2.3.0版本中被改变。现在的类定义更加简单。

fixedFluxPressureFvPatchScalarField.C

Code:

125 void Foam::fixedFluxPressureFvPatchScalarField::updateCoeffs

126 (

127 const scalarField& snGradp

128 )

129 {

130 if (updated())

131 {

132 return;

133 }

134

135 curTimeIndex_ = this->db().time().timeIndex();

136

137 gradient() = snGradp;

138 fixedGradientFvPatchScalarField::updateCoeffs();

139 }

仅在137行设置合适的梯度然后调用从fixedGradientFvPatchScalarField类调用updateCoeffs()方法(从现有类继承来的)。这需要你在求解器水平设置snGradp的值。比如,从interFoam求解器的pEqn.H头文件,我们可以知道:

Code:

27 // Update the fixedFluxPressure BCs to ensure flux consistency

28 setSnGrad

29 (

30 p_rgh.boundaryField(),

31 (

32 phiHbyA.boundaryField()

33 - (mesh.Sf().boundaryField() & U.boundaryField())

34 )/(mesh.magSf().boundaryField()*rAUf.boundaryField())

35 );

从新代码中我们可以读出:

希望这能帮助2.3.0的用户。

ssss

我想简单评论一下,为什么OpenFOAM使用santiagomarquezd (gracias por el análisis del código fuente)给出的表达式来计算边界的压力表面法向梯度。

首先我们需要写下Rhie-Chow插值方法离散的动量方程:

其中f表示表面插值,pmp_rgh的变量,pm的值是,矢量u是速度。用表面矢量去乘方程,其中n是表面法向量:

然后下面方程中的压力表面梯度可以被获得:

希望对foamer们有用。

angelmonsalve

非常感谢解释!!!

posted @ 2016-07-16 17:51  硫酸亚铜  阅读(1099)  评论(0编辑  收藏  举报