有限体积法求解二维方腔流(三)——代码以及与icoFoam结果对比

本文详细介绍了使用有限体积法求解二维方腔流问题的算法,包括求解流程、注意事项,并提供了代码链接。同时,将自主实现的计算结果与OpenFOAM的icoFoam求解器进行了对比,涉及x、y方向速度和压力的比较。文章还探讨了张量运算和湍流模型中的对应力处理,特别是在OpenFOAM中的实现方式。
摘要由CSDN通过智能技术生成

理论手册内容请参考理论一理论二

2. 有限体积法求解二维方腔流–求解

二维模拟区域尺寸为 x ∈ [ 0 , 0.1 ] , y ∈ [ 0 , 0.1 ] x\in [0,0.1], y\in [0,0.1] x[0,0.1],y[0,0.1],每一维各有 N N N个网格,网格长度为 h = 1 / N h=1/N h=1/N,网格体心间距 d = h d=h d=h,物理量均定义在网格体心。流体粘度为 ν \nu ν。待求物理量为速度矢量 U = [ u , v ] U=[u,v] U=[u,v]以及压力标量 p p p,上边界 x x x方向速度 u = 1 u=1 u=1 y y y方向速度 v = 0 v=0 v=0,其他三边 u = v = 0 u=v=0 u=v=0,四边的压力边界条件均为第二类边界条件即 ∂ p / ∂ x = ∂ p / ∂ y = 0 \partial p/ \partial x = \partial p/ \partial y =0 p/x=p/y=0

离散格式:对流项中心差分,扩散项中心差分,压力项中心差分,非稳态项一阶欧拉

模拟区域左下角坐标为 ( 0 , 0 ) (0,0) (0,0),右上角坐标为 ( 1 , 1 ) (1,1) (1,1),网格全局编号从0开始,令网格 [ i , j ] [i,j] [i,j]表示该网格为 x x x方向的第 i i i个网格、 y y y方向的第 j j j个网格。对于二维,标量 S f S_f Sf为表面积,等于 h h h

2.1. 代码链接

python代码链接

2.2. 求解流程

  1. 给定 t 0 t_0 t0时刻网格值,所有网格 u = v = p = 0 u=v=p=0 u=v=p=0
  2. 根据 t 0 t_0 t0时刻的 u v uv uv计算系数 A P , A W , A E , A S , A N A_P,A_W,A_E,A_S,A_N AP,AW,AE,AS,AN,对应update_coefficient函数
  3. 根据 t 0 t_0 t0时刻的 p p p计算 u v uv uv,记为 u ∗ , v ∗ u^*,v^* u,v,对应update_velo_GS函数
  4. 进入内循环,循环次数 n C o r r nCorr nCorr
    • u ∗ , v ∗ u^*,v^* u,v计算 H b y A ∣ ∗ HbyA\big|^* HbyA,由t_0时刻速度更新 A P A_P AP,对应update_HbyA_AP函数
    • 组建压力泊松方程,由 H b y A ∣ ∗ HbyA\big|^* HbyA计算 p p p,记为 p ∗ p^* p,对应update_pressure_GS函数
    • p ∗ p^* p更新速度,对应update_velo_final函数
    • 计算连续性方程误差,对应update_continuity_error函数。开始下一次内循环
  5. 时间推进,重复以上步骤

可以看出,以上步骤对应PISO算法

2.3. 注意事项

  • t 0 t_0 t0时刻推进到 t 1 t_1 t1时刻的过程中,假设求出了中间速度 U ∗ U^* U

    • 系数 A P , A N A_P,A_N AP,AN均由 t 0 t_0 t0时刻的速度求解
    • HbyA由最新速度 U ∗ U^* U更新
  • 压力泊松方程中,不要忘记 V P V_P VP,推导过程中很容易忽视 V P ∇ p = ∑ p f S V_P \nabla p = \sum p_f S VPp=pfS,有了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值