
1. 为什么要给CFX计算设置监测点1.1 监测点和监测曲线能帮你做什么很多人做CFX仿真习惯把全部精力放在前处理网格和边界条件上求解一启动就盯着残差曲线看。残差曲线当然重要但它只能告诉你方程有没有收敛并不能告诉你流场里某个关键位置的物理量到底稳没稳定。这时候监测点Monitor Point和监测曲线Monitor Curve就派上用场了。我在做暖通空调风道仿真和电子设备散热分析时几乎每个case都会设置监测点。举个最简单的例子我要看一个出风口的速度是否达到设计值如果只看残差残差下降到1e-5就认为收敛了但出风口速度可能还在缓慢漂移。而设置一个位于出风口中心的监测点实时盯着速度曲线曲线平了、不抖了那才是真正的物理收敛。简单说监测曲线反映的是某个具体位置物理量随时间或迭代步的变化它比残差更直接、更贴近工程判断。1.2 监测点应用的典型场景监测点在以下几类场景中几乎是刚需我列一下自己常用的场景大家可以对照自己的项目稳态计算判断收敛监测关键点的速度、压力、温度不再波动作为比残差更可靠的收敛判据。尤其是大涡模拟LES或高马赫数可压缩流这类残差容易假收敛的工况监测曲线能帮你避免拿着一个没算稳的结果去做后处理。瞬态计算记录物理量变化比如阀门开启过程中某点的压力脉动、换热器启动阶段出口温度的爬升过程。监测曲线天然就是时间历程曲线省得算完再去后处理里手动提取数据。多工况对比前期摸底在设计变更前后分别设置同一位置的监测点算完后把两条曲线放在一起对比能直观看出改动对局部流场的影响比逐帧比较云图效率高得多。求解异常诊断当计算发散或振荡时监测曲线能告诉你问题出在哪个区域。比如监测点压力曲线突然出现剧烈的锯齿状振荡往往意味着该处出现了数值震荡或物理上的漩涡脱落这时候再去针对性调整时间步长或网格少走很多弯路。1.3 设置监测点的两种思路CFX里设置监测点其实有两条路第一条是求解之前在CFX-Pre里通过表达式和监测点定义好求解过程中在CFX-Solver Manager的Monitor窗口实时查看第二条是计算结束后在CFD-Post里利用瞬态结果或表达式重新生成曲线。这两条路各有用处不能互相替代。前者的优势在于实时——你不需要等计算跑完就能看到物理量随迭代的变化趋势相当于给计算进程装了一个体检仪。后者的优势在于灵活——计算完你可以任意修改监测位置、变量类型甚至生成空间分布曲线不需要重新求解。我的习惯是正式计算前先在Pre里设好关键监测点这样能确保求解过程中心里有底后处理阶段再根据计算结果补一些额外的曲线用于报告输出。2. 在CFX-Pre中定义监测点的完整操作2.1 先理清你想监测什么打开CFX-Pre之后很多人一上来就急着点鼠标结果设了一堆监测点算的时候才发现测错了变量、选错了位置白忙一场。动手之前先花两分钟理清三个问题测哪个位置、测什么变量、测来做什么用。位置方面要确认这个点是否落在流体域中。CFX里监测点可以定义在几何点上Point也可以定义在边界面上Boundary甚至可以用表达式定义一个空间坐标点。对于内部流场点最常见的是直接创建一个点实体坐标取流场中物理量变化最剧烈的区域比如尾迹中心、射流轴线、涡心附近对于进出口边界通常直接在入口或出口面上取一个面上的平均值或特定点。变量方面常见的有压力Pressure、速度Velocity、温度Temperature、湍动能等要结合监测目的选不要贪多。用途方面如果是为了判断收敛重点关注速度或压力的波动幅度如果是为了看瞬态过程则需要设定合适的时间步输出间隔。2.2 创建监测点的具体步骤以CFX-Pre 2020R1版本为例其他版本界面略有差异但逻辑相同完整流程如下第一步在Outline树形菜单中找到Expressions和Functions。CFX的监测点本质上依赖于表达式系统也就是说你告诉CFX我要监测某个点上的某个变量实际上是在定义一条表达式。在Expressions上右键选择Insert新建一个表达式比如取名为Point_Velocity然后输入类似velocity(in Point1)这样的函数调用。这里Point1指的是几何点可以事先在Geometry中创建。第二步创建几何点。在Geometry上右键插入Point设置坐标。注意CFX-Pre里的默认单位是米m如果建模用的是毫米这里一定要手动换算成米否则监测点跑偏到空气里曲线要么是0要么是错误值查起来非常抓狂。第三步回到表达式把表达式和监测点关联起来。除了上述用velocity()这类函数直接读取某点物理量之外CFX还支持通过区域和边界来构建更复杂的监测量比如areaAve(Total Pressure)Outlet表示出口面上的总面积平均总压。这里符号后面跟的是位置标识边界名或者区域名。对于内部点使用point函数或者直接在求解器中以Point方式创建。第四步在Solver控制面板中把表达式指定为监测对象。切换到CFX-Pre的Solver求解标签页在Output Control输出控制中找到Monitor监测选项里面有一个Monitor Points and Expressions设置。勾选需要监测的表达式CFX在求解迭代过程中就会实时计算并绘制这些监测量的曲线。2.3 一个容易忽略的细节监测点的单位与坐标系单位问题我在前面提了一嘴这里必须展开讲。CFX-Pre在表达式里输入数值时如果没有显式带单位系统会采用当前选定的单位制默认是SI单位制米、千克、秒。很多人习惯用毫米建模导入CFX时几何尺寸仍然是毫米数值但CFX会按米解释。也就是说一个标称坐标是100, 50, 30的点在CFX里会被当作100m, 50m, 30m处理。这是新手最常见的问题没有之一。坐标系也要注意。CFX-Pre中插入Point时可以选全局坐标系或自定义坐标系。如果你的模型建在某个旋转对称坐标系或局部坐标系中监测点坐标一定要和你创建几何时的坐标系保持一致。我自己遇到过一回涡轮机械的case叶轮区域用了旋转坐标系我按全局坐标输入监测点曲线算出来完全不对后来才发现应该切换成旋转坐标系输入相对位置。这类问题不太容易察觉因为软件不报错只会给出一堆看起来很奇怪的数值排查起来相当费时。2.4 常用监测变量和对应的表达式写法下面是几个我自己常用的监测量以及表达式写法可以直接抄监测目标表达式示例说明某点速度大小velocity(at Point1)点实体坐标处的速度幅值某点静压pressure(at Point1)点实体坐标处的静压某点温度temperature(at Point1)点实体坐标处的温度出口面平均总压areaAve(Total Pressure)Outlet出口边界上的面积加权平均总压入口面平均速度massFlowAve(Velocity)Inlet入口边界上的质量流量加权平均速度某边界受力force()Blade计算流体对指定边界的作用力向量需取模时加Length函数at这个函数的括号里可以直接填坐标比如pressure(at (0.1[m], 0.2[m], 0.3[m]))这样就不需要预先创建点实体适合临时快速监测。但缺点是表达式可读性差改坐标要翻表达式不如建好点实体再引用清晰。3. 求解过程中如何实时查看监测曲线3.1 Solver Manager的Monitor窗口怎么看当你在CFX-Pre中设置好监测点并启动求解后CFX-Solver Manager会自动打开。默认界面上半部分是残差曲线下半部分是用户自定义的监测曲线User Points。这里有个细节如果你的监测量不止一个比如同时监测了三个点的速度所有曲线会叠加显示在同一张图上轴标签会显示变量名称和单位。要看某一条曲线的具体数值最直接的办法是用鼠标光标在曲线上悬停状态栏会显示当前迭代步和对应的数值。如果你习惯边算边干别的可以把Monitor窗口单独拉出来或者调整它的刷新频率。在Solver Manager的菜单栏里找到Solver → Solver Control或者直接右键图形窗口可以设置更新间隔Update Frequency默认情况下每次迭代都刷新对于网格量大、算得慢的case这会导致界面卡顿建议改成每10步或每20步刷新一次。曲线刷新频率和求解器输出频率是两回事前者只影响显示后者影响后续能否使用瞬态结果做后处理两者别混淆。3.2 判断收敛时应该盯住监测曲线的哪些特征在实际工程中我是这样利用监测曲线判断收敛的残差曲线下降到设定标准比如RMS残差1e-4或1e-5只是第一关真正的收敛判据要看监测点物理量是否达到平直。什么算平直不同工况差别很大但经验上可以这样把握稳态计算监测量相对波动幅度在1%以内比如速度监测值在10m/s上下抖动幅度不超过0.1m/s并且持续这个状态500步以上基本可以认定物理收敛。存在周期性涡脱的工况比如圆柱绕流监测点速度曲线会呈现周期性正弦波动这种不算不收敛而是物理本身非定常。这时候如果做稳态计算看监测点均值是否稳定如果做瞬态计算则要确保至少计算足够多个周期让统计平均有意义。瞬态计算每个时间步内监测曲线应光滑过渡如果出现锯齿状突变说明时间步长太大需要减小Δt重新计算。对于稳态计算另外一个非常有效的技巧是同时监测入口和出口的质量流量差。CFX求解器本身会在输出文件里记录质量守恒残差但你在Pre里设置一个表达式比如massFlow()Inlet massFlow()Outlet如果这个值收敛到接近0相对于入口流量而言小于0.1%说明整个流域质量守恒已经建立。这个方法在可压缩流和两相流里特别有用比看单点的速度曲线更全面。3.3 求解中途发现监测曲线异常怎么办有一次做一个室内通风的案例风口速度监测曲线在计算到500步时突然从平滑直线变成剧烈振荡。我第一反应不是去调求解器参数而是先看监测点坐标——回CFX-Pre里一查发现这个点正好落在壁面边界层内部。边界层里速度和压力本身就存在强烈的梯度网格稍粗或湍流模型切换时就会引起数值振荡。把监测点往流场中心方向移了5毫米曲线立刻就恢复了平滑。这个经历说明一个道理监测曲线异常不一定代表求解发散也可能是监测点本身位置选得不好。排查方向主要有三个第一确认监测点是否位于流动梯度极大的区域比如边界层、激波、剪切层。如果是考虑把监测点移开或者同时监测一个更钝的量比如区域平均值来辅助判断收敛。第二检查监测点是否落在固体域或壁面内部。CFX不负责提醒你该点不处于流体域它只会给出一个奇怪的数值或0值。解决办法是后处理阶段在CFD-Post里画一个该点的云图截面直接目视确认点的位置。第三考虑数值设置本身的合理性。如果你设了二阶迎风格式又在监测点处捕捉到振荡可以尝试先降低时间步长瞬态或改用一阶格式稳态跑几百步再来判断这和CFX通用的收敛性改善流程一致。4. 在CFD-Post中后处理绘制和对比监测曲线4.1 用CFD-Post生成并导出监测曲线很多时候求解结束之后我们还要重新生成监测曲线比如需要在报告里展示温度随时间的变化趋势或者在多组计算工况之间做横向对比。这时候如果重新去求解器里翻Monitor窗口的记录往往不太方便而且求解器窗口里的曲线图形质量不高直接截图放进报告也不好看。解决办法是用CFD-Post重建曲线。操作路径是这样的打开CFD-Post加载计算完成的.res文件瞬态计算请加载包含所有时间步的完整结果文件或者在求解设置中有选择地导出在菜单栏选择Insert → Chart设置图表类型为XY Chart。在Data Selection里几何体Geometry选择点Point或边界X轴设为时间Time或迭代步TimestepY轴设为你关心的变量比如Pressure、Velocity、Temperature。如果结果文件中没有直接保存某个变量在场里的时间历程你也可以用Calculator计算器功能先构建表达式再作为Y轴变量输出这样可以监测量比Pre里预设的更灵活。另外一个实用功能是CFD-Post的瞬态曲线统计比如时均值、脉动值。对于非定常计算你可以在Chart的细节面板里选Transient然后勾选统计学选项快速得到整个时间段内的平均值、最小值、最大值以及标准差RMS。这在计算风工程和建筑通风的热舒适性分析中非常常用不用自己导出Excel去算后处理直接给你统计好了。4.2 多工况曲线对比与数据导出我最常用CFD-Post的曲线功能是在多个设计变体之间做对比。具体操作先正常打开第一个工况的.res文件插入Chart曲线然后追加加载第二个结果文件File → Load Results或者用Append模式加载CFD-Post会把两个case的数据同时保留在工作区。接下来在原有的Chart上右键选择Edit注意查看Data Series列表确保两个工况都被选入。此时曲线图上就会出现两条不同颜色的监测曲线可以直接在图上比对也可以在曲线属性里添加图例、调整线型方便导出到报告。导出的方式有两种如果需要矢量图可以选择File → Export格式选EPS或SVG插入Word或LaTeX都方便如果需要数值表格更快捷的办法是直接右键Chart选择Export Data把每个时间步的物理量数值导出成CSV或Text文件。之后用Excel或Pythonpandas进行二次处理比如计算某个时间段的平均值、画局部放大图自由度大大提升。这里提醒一句多工况对比的前提是监测点坐标在两个case中保持完全一致否则曲线的横坐标时间轴还可以对齐但纵轴物理量底子就不一样对比没有意义。我的习惯是在CFX-Pre里把监测点坐标统一复制粘贴到不同case的表达式里而不是人工重新输入一遍降低出错概率。4.3 从曲线中发现工程问题的实例举个例子我做过一个汽车空调风道除霜性能的模拟风道出口有多个格栅出风口。我要监测仪表板表面几个关键位置的温度看除霜过程中温度是否能在5分钟内升到0℃以上。求解完成后我直接在CFD-Post里绘制出每个监测点的温度-时间曲线。曲线显示副驾侧出风口附近的温度上升明显滞后比其他位置晚了将近2分钟。如果只靠云图逐帧去查很难一眼定位这个温差问题而监测曲线直接暴露了响应时间的差异让我迅速聚焦到风道内部的结构设计——后来在CFD-Post里做一个截面流线图发现该支路存在严重的流动分离气流主要从主通道走了支路出风量不足。修改导流板形状后重新计算曲线对比显示滞后现象明显改善。整个排查过程监测曲线起到了缩小包围圈的作用。这也再次说明好的监测点设置不是求解完之后随便选几个点就行而是要在计算之前就结合工程判断确定关键位置。CFD-Post虽然可以事后补曲线但如果那个位置在计算时没有保存足够的变量数据事后也“无米下锅”所以计算前的规划特别重要。5. 常见问题与排查技巧实录5.1 监测曲线显示为0或数值明显不对这是新手最常见的问题。可能原因如下按概率排序单位制问题。几何尺寸用的是毫米但CFX按米解释监测点跑到计算域外面去了。处理办法是在CFX-Pre的Geometry→Point里检查点的坐标数值和单位或者用后处理画一个点并显示坐标。点没选对流场区域。如果你的算例是多域比如流体域固体域共轭传热监测点可能落在了固体域中。解决办法是把点选在流体域内部或者改用边界平均值。变量名不对。在表达式里敲错了变量名CFX不会自动报错而是在求解时跳过表达式窗口会有黄色警告但求解器可能不显示。注意查看Messages窗口的警告信息。表达式语法错误。例如pressure(at Point1)少了括号或者areaAve写错成areaAverage。建议在CFX-Pre的表达式编辑器里点Apply之后立即看有没有红色错误提示。5.2 监测曲线在求解过程中剧烈振荡曲线振荡分两种一种是数值振荡一种是物理上的真实脉动两者判断标准不同。数值振荡的典型特征是振荡频率和迭代步强相关步长越小、振荡频率越高且振幅对网格或差分格式敏感。物理脉动则通常对应真实的流动现象漩涡脱落、剪切层失稳有一定的主频率和特征尺度。排查步骤建议先看残差曲线如果残差同时发散首先解决数值稳定性问题比如减小时间步、降低伪时间步因子、换用更稳定的格式。如果残差正常只有监测点振荡检查监测点是否在回流区或剪切层附近。如果是试着把监测点稍微移动一下位置。说句玩笑话有时候算得没问题只是监测点“站”在了湍流最活跃的地方。适当增加监测数据的平滑处理。CFX-Solver Manager里有对曲线的滑动平均选项可以缓解视觉上的锯齿感但要注意这只是显示层面的处理不影响底层数据。5.3 如何让监测曲线输出到外部文件如果你需要在计算结束后拿原始数据离线处理可以在CFX-Pre的Output Control → Monitor里开启Write Monitor Data to File选项这样会在求解目录下生成一个后缀为.mon或.out的文件里面记录了每个迭代步或每个时间步的监测值。用文本编辑器打开后可以直接导入Excel。另外一个思路是利用瞬态结果文件本身。只要你在求解设置里勾选了“每个时间步输出瞬态结果”那么监测点通过Point的数据也会被保存计算完成后CFD-Post可以直接提取。5.4 一个高效经验监测点方案做成模板我做的仿真项目很多是有延续性的——今天算方案A明天改个尺寸算方案B监测位置几乎不变。这种情况下每次重新设置一遍监测点纯属浪费时间。我的做法是把CFX-Pre的表达式和点实体放在一个模板文件里新case导入网格后直接复制模板里的Expressions、Points和Output Control配置。在CFX-Pre里可以通过右键复制、粘贴的方式把表达式结构复制到新case或者在保存时直接用pre文件.pre作为模板改边界条件后另存。这套操作熟练之后一个包含6个监测点、10条监测表达式的预处理配置一分钟内就可以迁移到新case上省下的时间拿去喝口茶非常划算。6. 个人实操心得与建议最后分享一点我自己长期积累的经验。首先监测点不是越多越好。设10个监测点曲线挤在一张图里根本看不清楚反而干扰判断。我的原则是核心目标对应2到3个关键点加上进出口的质量流量或压差作为整体判断总共不超过5个监测量。如果有特殊需要宁可在后处理阶段再补也不要在一开始堆满整个界面。其次稳态计算不要一上来就用高阶格式。我的顺序是先一阶格式跑几百步让流场结构大体建立起来这时如果监测曲线相对平稳再切换到二阶格式继续计算。这不仅提高稳定性也减少了因初场不合理导致的高阶格式振荡。等你经验多了你会发现这个技巧在很多复杂流动里都能让收敛顺畅很多。第三监测点坐标记录一定要养成好习惯。CFX-Pre里的表达式的名称要起得有意义比如Monitor_MassFlow_Outlet、Monitor_Temp_ChipCenter别用Point1、Point2这种清一色的名字。计算文件多了以后名字是否清晰直接影响工作效率。我见过有人全部叫Point三个月后回来看case完全想不起哪个点是谁后悔都来不及。如果你刚开始用CFX建议在一个简单管道流动算例上详细练习一遍在入口、中部、出口各设一个压力监测点把曲线输出到文件再用CFD-Post打开结果重画一条温度曲线把这个流程完整跑通。这套基础操作熟练之后后续做换热器、风机、阀门、汽车外流场等复杂问题设置监测点和查看监测曲线就会像吃饭喝水一样自然排查计算问题时心里也会有底得多。