各位大佬,小白请教(Openfoam org V12):
想问一下在设置热压通风下的缝隙开孔渗透风时,我采用了prghTotalPressure边界,设定:
room_window
{
type prghTotalPressure;
p0 uniform 0;
}
设定pRef在文件constant/pRef
为101325
问题在于如此计算的渗透风速过高 不符合常理,1.2高差的窗户居然上边缘风速有3.5m/s。
初步排查因该确认为 prghTotalPressure中的p0为固定值pRef,外界压力没有随高差下降,导致流域内的p_rgh全为正值,且不同高度处的 p_rgh差值近似为 rg*高差
所以想要请教一下各位前辈:
1.是否是我的边界设置错误
2.如果是p0的问题 我该如何设置随高度变化的外部压力呢(用ai帮忙写的压力边界会使计算直接发散,如下):
room_window
{
type codedFixedValue;
value $internalField;
name simplePrghPressure;
code
#{
// 简化版本 - 手动指定重力
const vector g(0, -9.81, 0); // 重力矢量
// 硬编码字段名
const word rhoName = "rho";
const word UName = "U";
// 获取边界场
const fvPatchScalarField& rhoBoundary =
patch().lookupPatchField<volScalarField, scalar>(rhoName);
const fvPatchVectorField& UBoundary =
patch().lookupPatchField<volVectorField, vector>(UName);
// 获取坐标
const vectorField& C = patch().Cf();
scalarField p0(C.size());
// 参考参数
const scalar p0_ref = 0; // 参考压力
const scalar H_ref = 0; // 参考高度
const scalar rho_ref = 1.2; // 参考密度 (kg/m³)
// 线性压力分布
forAll(C, i)
{
scalar h = C[i].y() - H_ref;
p0[i] = p0_ref - rho_ref * mag(g) * h;
}
// 计算prghTotalPressure
vectorField hVector(C.size());
forAll(C, i)
{
hVector[i] = vector(0, C[i].y() - H_ref, 0);
}
operator==
(
p0
- 0.5*rhoBoundary*magSqr(UBoundary)
- rhoBoundary*(g & hVector)
);
#};
// 必需字段
rho rho;
U U;
}