热压通风p_rgh边界条件设置
-
@李东岳
我感觉是压力边界除了问题,prghTotalPressure如相关介绍:其中的 $p_0$ 是标量定值,但理论上窗外的热空气也会随高度下降而总压下降的。
然后自己请AI帮忙写了随高度变化$p_0$的边界codedFixedValue,但是一应用就发散,计算不了,粘贴前文代码: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; }