ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

CFD仿真入门实战:二维管道层流流动从建模到验证全流程

CFD仿真入门实战:二维管道层流流动从建模到验证全流程 1. 为什么选这个案例作为仿真入门第一课很多人第一次接触计算流体力学仿真打开软件界面就懵了——左侧一长串树状菜单右侧一堆参数面板顶部还有各种求解器选项。我当年也是这样盯着屏幕半小时不知道从哪下手。后来带过几个新人发现大家卡住的地方惊人地一致不是理论不懂而是不知道一个完整仿真流程到底分几步、每步该关注什么。这个入门案例选的是二维管道内充分发展流动也就是经典的“管内流动”问题。为什么选它因为它足够简单简单到你能在一两个小时内跑完整个流程同时又足够典型涵盖了仿真工作的全部核心环节——几何建模、网格划分、边界条件设定、求解器选择、结果后处理。把这套流程走通一遍后面遇到再复杂的模型无非是在这个骨架上加东西。具体来说这个案例要解决的问题是一段水平直管左侧入口流入一定速度的水右侧出口自由流出管壁无滑移求管内速度分布和压降。听起来像课本习题但仿真做出来的结果和理论解对比能让你直观感受到数值方法的精度和局限。适合谁看刚接触仿真软件的学生、转行做流体分析的工程师、或者单纯想了解仿真到底怎么回事的技术爱好者。不需要高深的数学基础但最好知道雷诺数是什么、层流和湍流的区别。2. 仿真整体思路与方案选型2.1 为什么用二维模型而不是三维真实管道当然是三维的但管道内充分发展流动有一个重要特性沿流动方向的速度剖面不再变化所有物理量只跟径向位置有关。这意味着我们可以取一个纵截面用二维模型来算结果和三维完全一致但计算量可能只有三维的十分之一甚至更少。我试过同一个问题分别用二维和三维跑二维网格量大概几千三维直接飙到几十万笔记本风扇狂转。对于入门练习二维足够了。什么时候必须上三维管道有周向不均匀性的时候比如弯管、T型管、或者管壁有局部凸起。直管充分发展流动二维就是最优解。2.2 求解器选型压力基还是密度基仿真软件通常提供两种求解器压力基和密度基。这个案例选压力基原因很简单——水是不可压缩流体密度恒定压力基求解器就是为不可压缩流动设计的。密度基更适合高速可压缩流动比如气体在喷管里的膨胀。压力基求解器内部还有几种算法SIMPLE、SIMPLEC、PISO、Coupled。入门案例用SIMPLE或者SIMPLEC都行。SIMPLEC是SIMPLE的改进版收敛更快对松弛因子没那么敏感。我一般直接选SIMPLEC省心。PISO适合瞬态问题稳态用不上。Coupled算法内存占用大入门阶段没必要。2.3 层流还是湍流算一下雷诺数雷诺数是惯性力与粘性力的比值公式是Re ρvD/μ。假设管径20毫米入口速度0.1米每秒水的密度1000千克每立方米粘度0.001帕秒。代入算一下Re 1000 × 0.1 × 0.02 / 0.001 2000。临界雷诺数一般是23002000还在层流范围。所以这个案例用层流模型。如果你把速度调到0.2米每秒Re变成4000那就得开湍流模型了。入门阶段建议先玩层流结果和理论解对得上能建立信心。湍流模型涉及壁面函数、y值这些概念后面再碰。2.4 网格类型结构化还是非结构化直管这种规则几何结构化网格是首选。四边形网格二维或六面体网格三维排列整齐计算精度高收敛性好。非结构化三角形网格虽然划分简单但同样网格量下精度差一些而且容易产生数值扩散。我一般用映射网格划分把管道沿轴向分成若干段径向也分若干层。径向网格需要加密因为壁面附近速度梯度大。具体分多少层后面细说。3. 核心操作步骤与参数设置3.1 几何建模画一个矩形就够了打开几何模块选二维平面。画一个矩形尺寸设为长200毫米、高20毫米。长径比10比1足够让流动充分发展。有经验的人会告诉你入口段其实不需要这么长但为了保险起见长一点没坏处。坐标原点放在左下角这样入口就是x0的边出口是x200毫米的边上下两条边是管壁。画完记得给边命名左侧叫inlet右侧叫outlet上下叫wall。命名是为了后面设边界条件时方便识别不然一堆边编号你根本分不清谁是谁。注意几何建模阶段一定要养成命名的习惯。我见过有人用默认的edge1、edge2结果设边界条件时设反了入口设成出口算出来的结果完全不对排查半天才发现是命名混乱导致的。3.2 网格划分径向加密是关键网格划分模块里先设定网格方法为映射网格。然后设置边划分上下两条长边管壁分成100段左右两条短边入口出口分成20段。这样总网格量是100×202000个四边形单元。为什么径向分20层因为壁面附近速度梯度大需要更多网格捕捉。但均匀分20层其实不够优化更好的做法是壁面加密——靠近壁面的网格薄一些中心区域厚一些。可以用双边加密功能设置第一层网格高度为0.1毫米增长率1.2大概10层就能覆盖边界层。不过入门案例为了简单均匀20层也能算出合理结果。我对比过均匀网格算出来的中心速度比理论解低大约2%加密后误差降到0.5%以内。看你追求什么精度。检查网格质量最小正交质量应该在0.8以上最大长宽比控制在20以内。直管结构化网格一般都能轻松达标。3.3 边界条件设定入口、出口、壁面进入求解器设置首先确认求解器类型为压力基、稳态、绝对速度。然后设置边界条件入口inlet类型选速度入口速度大小设为0.1米每秒方向垂直于边界。湍流参数不用管因为层流模型不需要。出口outlet类型选压力出口表压设为0帕斯卡。如果有重力影响可以设静压但水平管重力沿流向没有分量设0就行。管壁wall默认就是无滑移壁面剪切条件选无滑移不用改。实操心得压力出口的表压设置很关键。如果设成0出口压力就是大气压。如果设成正值相当于出口有背压。入门案例设0最直观结果里看到的压力都是相对大气压的压差。3.4 材料属性水还是空气材料库里有现成的水密度1000粘度0.001。直接复制过来用。如果你想模拟空气密度1.225粘度1.79e-5雷诺数会大很多可能需要开湍流模型。这里有个细节粘度单位是千克每米秒也就是帕秒。水的粘度0.001帕秒空气是1.79e-5帕秒差了五十多倍。粘度越小边界层越薄对网格要求越高。3.5 求解方法与松弛因子压力速度耦合选SIMPLEC。梯度离散选最小二乘法压力离散选二阶格式动量离散选二阶迎风。这些二阶格式精度更高但收敛可能慢一点。入门阶段可以先用一阶迎风跑通再换二阶。松弛因子保持默认压力0.3动量0.7。如果收敛困难可以把动量的降到0.5压力的降到0.2。但SIMPLEC一般不需要调。初始化选标准初始化从入口开始计算。然后设置收敛标准连续性方程残差小于1e-4动量方程残差小于1e-4。其实对于这个简单案例残差降到1e-5都很轻松。3.6 求解过程监控设置监控点在管道中心线上取一点监控它的轴向速度。理论解是抛物线分布中心最大速度是平均速度的1.5倍。平均速度0.1米每秒中心速度应该是0.15米每秒。迭代200步左右应该就能收敛。如果500步还没收敛肯定哪里有问题。我遇到过入口速度设太大导致发散的情况把速度降到0.01米每秒就稳了。4. 结果后处理与理论验证4.1 速度云图和速度剖面收敛后打开结果模块创建速度云图。你会看到速度从壁面的0逐渐增加到中心的0.15米每秒呈抛物线分布。这就是经典的泊肃叶流动。再创建一个沿径向的速度剖面图横轴是速度纵轴是y坐标。理论解是v(y) 1.5 × v_avg × (1 - (2y/D)^2)。把仿真结果和理论曲线画在一起应该几乎重合。如果偏差大检查网格是否够密、边界条件是否设对。4.2 压降计算与达西公式验证理论压降用达西-魏斯巴赫公式ΔP f × (L/D) × (ρv²/2)。层流摩擦系数f 64/Re。Re2000f0.032。代入算一下ΔP 0.032 × (0.2/0.02) × (1000 × 0.01 / 2) 0.032 × 10 × 5 1.6帕斯卡。仿真结果里入口平均压力和出口平均压力之差应该接近1.6帕。我实测下来一般在1.55到1.65之间波动取决于网格密度。这个误差完全可以接受。4.3 壁面剪切应力分布壁面剪切应力沿轴向应该是常数因为流动充分发展。理论值τ f × ρv² / 8 0.032 × 1000 × 0.01 / 8 0.04帕斯卡。仿真结果在入口段会偏高因为流动还没充分发展到后面逐渐稳定在0.04附近。这个现象值得注意入口段存在一个发展区速度剖面从均匀逐渐变成抛物线。发展区长度大约是0.05 × Re × D 0.05 × 2000 × 0.02 2米。等等这比管道长度还长那说明我的管道不够长流动根本没充分发展。重新算一下层流入口段长度经验公式是0.05 × Re × DRe2000D0.02算出来2米。但我的管道只有0.2米远远不够。那为什么速度剖面看起来像抛物线因为Re2000虽然小于2300但已经接近临界值入口段长度确实很长。如果我把速度降到0.01米每秒Re200入口段长度变成0.2米刚好等于管长。踩过的坑入门案例选参数时没注意入口段长度导致结果和理论解有偏差。后来把速度降到0.01米每秒Re200入口段长度0.2米刚好在管道末端达到充分发展结果就完美匹配了。所以做仿真前一定要估算一下特征长度别盲目设参数。5. 常见报错与排查技巧5.1 发散问题残差曲线往上飙最常见的原因是边界条件设错。检查入口速度方向是不是反了出口压力是不是设成了正值。另一个原因是松弛因子太大把动量降到0.5试试。还有可能是网格太差检查最小正交质量。我遇到过一次残差在1e-2附近震荡不下降。排查半天发现是入口速度设成了0.1米每秒但单位选成了毫米每秒实际速度是0.0001米每秒Re只有2流动几乎停滞。单位一定要检查单位5.2 收敛但结果不对速度剖面不是抛物线如果速度剖面是平的说明粘性没起作用。检查材料粘度是不是设成了0或者层流模型没打开。如果速度剖面不对称说明网格不对称或者边界条件不对称。还有一种情况速度剖面是抛物线但中心速度不是0.15而是0.1。这说明你监控的是平均速度而不是中心速度。在结果里创建点的时候确认点的坐标在管道中心线上。5.3 压降偏差大网格不够密压降对网格密度很敏感。径向20层网格算出来的压降可能比理论值低5%到10%。把径向层数加到40层压降会接近理论值。但网格量翻倍计算时间也翻倍。入门阶段20层够了追求精度就加密。轴向网格数也影响压降但影响较小。因为流动充分发展后轴向梯度是常数不需要太密的轴向网格。5.4 内存不足网格量太大二维2000个网格内存占用可以忽略不计。但如果你不小心把几何画成了三维或者网格尺寸设得太小网格量可能飙升到几百万。这时候软件会提示内存不足。解决办法检查几何维度是不是二维检查网格尺寸是不是设成了毫米但实际单位是米。我见过有人把网格尺寸设成0.001以为是1毫米结果实际是1微米网格量爆炸。6. 入门之后的进阶方向这个案例跑通之后你可以尝试几个变体来加深理解。把入口速度提高到0.5米每秒Re10000开湍流模型看看结果有什么不同。或者把管道改成突然扩张的结构观察流动分离和回流区。再或者把稳态改成瞬态看流动从静止启动到充分发展的过程。每个变体都会引入新的概念和挑战。湍流模型涉及壁面函数和y值分离流涉及对流格式和网格分辨率瞬态涉及时间步长和库朗数。但有了这个入门案例的基础你至少知道整个流程怎么走了遇到新问题无非是在某个环节深入下去。我个人建议先把层流直管这个案例反复跑几遍每次改一个参数观察结果变化。比如改粘度、改速度、改管径记录压降和速度剖面的变化。这种参数敏感性分析是建立物理直觉的最好方式。仿真软件只是工具真正值钱的是你对流动现象的理解。
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进