第一次打开Molflow的人多半会被那个三维视图和左下角一堆名为Facet1、Facet2的几何树吓到。其实这软件没那么玄乎。Molflow是CERN开源的一套真空模拟工具专门用来算极低气压下气体分子在管道、真空腔里的运动路径解决的是“分子从A口进去有多少能从B口出来”这类问题。而Facet就是你在软件里画出来的每一个“面”真空室壁是Facet泵口是Facet泄漏口也是Facet整个几何模型完全由Facet拼出来。这教程只干一件事把Facet从2D建模到3D拉伸这条路走通。新手花半小时把这里面的原理和操作吃透后面再去碰复杂几何、属性设置、网格划分就顺多了。我当年在这上面走过不少弯路所以这篇会把关键选择和底层逻辑都讲清楚不只是给你一套“照着点”的操作步骤。1. Facet到底是什么先搞懂Molflow的最小几何单元1.1 在真空模拟里Facet承担什么角色Molflow的核心逻辑可以理解为“很多个镜子之间弹弹珠”。气体分子就是一个一个小球真空室壁、管道内壁就是镜子小球打上去可能被反弹回来可能被吸附在墙面上也可能从缝隙里穿过去。这里面每一个“镜子”就是Facet。在Molflow里Facet不是抽象的概念它身上挂了三个层面的东西几何层面它是空间里一个平面多边形可以是三角形、矩形也可以是任意多边形有面积、有位置、有法线方向。物理层面它被赋予了吸附系数sticking coefficient、反射模型、温度、出射通量等参数决定分子打上来之后会发生什么。统计层面每个Facet都有累积计数的功能记录有多少粒子打上来、从哪个方向打上来、吸附了多少、反射了多少模拟结束后你看的就是这些统计数据。所以Facet不仅是几何边界更是数据采集器。你建的每一个面最后都会输出一组统计结果。这个理解很关键在Molflow里少建一个Facet不只是模型不完整而是整个粒子的命运记录就少了一条。1.2 为什么新手要先学好“2D面”再做“3D拉伸”因为Molflow本质上不是一个CAD软件它没有一个像SolidWorks那样方便的“画个正方体”按钮。Molflow的所有三维结构都是由平面Facet拼出来的。一个长方体真空室其实就是六个矩形Facet一个圆形管道其实是很多个四边形、甚至三角形Facet围出来的近似圆。这就带来一个新手的天然困惑我不会一上来就建一个复杂的真空系统那么应该从哪里开始答案就是2D。你先得会用Facet在某个平面上画出一个准确的面理解法线、吸附系数这些基本属性。2D都画不利索拉伸出来的3D结构十有八九是废的。Molflow的建模思路是一个合格的真空模型等于“若干张正确的2D面 合理的拉伸/变换操作 物理属性赋值”。把2D这块地基打牢3D拉伸只是顺着某个向量走一步的事。还有一点Molflow的几何和模拟性能直接相关太多细碎的Facet会让每个粒子打上去时都要遍历一遍所有面计算速度会明显下降。所以“用尽可能少的Facet表达正确几何”是建模的基本功。2D建模阶段就是练习这种“少而精”思维的最佳时机。2. 动手前的准备Molflow界面与项目参数设定2.1 界面速览新手只需要注意这几个区域说实话Molflow的界面初看有点老派和现在流行的现代软件风格不太一样但它布局很清晰。新手不用马上把所有面板都搞明白先盯住几个地方就行。3D视图区中间最大那块窗口就是你建模和查看分子的地方所有Facet都显示在这里。几何树/模型树通常在左侧或下方列出了当前项目里的所有Facet。双击某个Facet就能看到详细参数。Facet属性面板显示当前选中Facet的坐标点列表、面积、法线方向、吸附系数、反射模型、出射参数等关键信息。2D建模时你主要就在这个面板里操作。主工具栏创建矩形Facet、创建多边形Facet、拉伸/变换、渲染设置这些常用工具都集中在顶部或左侧工具栏。我习惯的做法是打开一个新项目之后先把3D视图的网格显示打开再开启法线方向显示。这样画出来的每个面你一眼就能看出它朝哪边后期调整不会抓瞎。2.2 项目参数单位、尺度和精度先定好很多新手一上来就直接建几何结果模拟结果怎么都不对回头一查是单位制搞混了。Molflow的一个项目里坐标、面积、体积、出射通量这些参数的单位如果不统一后面所有分析都会出问题。在开始建模之前先确认三件事单位制统一用毫米mm还是米m。我个人通常全流程用毫米因为真空管件、法兰的标称尺寸都是毫米直接对照CAD图纸输入坐标会很省事。粒子类型Molflow里的气体分子属性质量、直径会影响分子与壁面的碰撞频率默认通常能搞定但如果模拟的是氢气或者特殊气体要记得改。模拟精度/网格密度这个可以后面再调但项目新建时最好就决定好。For测试模型网格粗一点没关系如果是正式模型网格密度不够细节地方的粒子通量会失真。还有一个小细节Molflow支持把气体入口、出口、泵口这些用特殊的Facet属性来表示比如吸附系数设为1就代表粒子碰到这个面即被吸收相当于真空泵或出口吸附系数设为0代表完全反射相当于理想光滑壁面。这些属性在项目设定阶段就应该规划好而不是等几何建完了再想。3. 2D建模实战用Facet画出第一张“面”3.1 三种常用的2D创建方式Molflow里创建2D Facet的基本逻辑是给定一组有序顶点坐标软件自动生成一个平面多边形。新手需要掌握的创建方式有三种分别针对不同的场景。第一种也是最常用的一种就是直接用“创建矩形Facet”工具。你只需要指定矩形的两个对角点坐标软件会自动补出其余两个顶点生成一个完好的四边形Facet。比如想建一块长100mm、宽50mm的墙定义两个对角点分别为(0,0,0)和(100,50,0)就行。第二种是创建任意多边形Facet。这种适合不规则截面比如三角形、梯形、甚至形状不规则的管口。方法就是一个一个输入顶点坐标注意顶点顺序要么全顺时针要么全逆时针不然生成的形状会自相交。第三种是通过复制已有Facet再微调位置。这个在对称结构里特别省事比如一个方管的四块侧壁做好一块复制三次再旋转就能拼出完整的管。新手往往忽略这个技巧总是手工逐点输入坐标费劲还容易错。我自己建模型的习惯是“先画草图后落坐标”先在纸上把要画的形状画出来标好每个顶点坐标再在Molflow里统一输入。看似多了一道手写步骤但能避免很多因为脑子一热输错坐标导致的返工。3.2 关键参数解析面积、法线方向和吸附系数模型里新建完一个Facet之后属性面板里会显示一串参数。新手不用全懂但有几个是躲不开的。面积Area是自动计算的但也最容易遗漏检查。Molflow里面积影响出射通量、单位面积撞击率的计算如果你画的Facet只是单纯用来表示几何壁面面积无所谓但如果这个面代表一个气体源比如泄漏口那面积不对出气量就完全不对。法线方向Normal Direction是重中之中的参数。法线的朝向决定了粒子的“正面”是哪一面。如果法线方向朝向真空腔外侧粒子从腔内侧飞过来打到这个面的时候默认情况下它就认为粒子是从背面打来的模拟结果就会莫名其妙地少吸附、多穿透。解决办法有两种一是检查顶点顺序调整点的排列方向来翻转法线二是在Facet属性里手动选择“双向面two-sided”让粒子不管从哪边打来都被正常处理。吸附系数Sticking Coefficient代表一个分子打到这个面上被吸附的概率从0到1。0是完全反射1是完全吸收。实际使用中我通常这样设场景吸附系数说明普通真空室壁0完全反射粒子只在壁面反弹泵口1打上去就被抽走当作理想泵气体入口1反向出射设置出射通量模拟源头真实材料表面0.05~0.5根据材料吸附概率粗略估算新手最容易犯的错就是建完几何忘了改吸附系数结果所有壁面都按默认值当成全反射处理模拟出来的整体流导和实际工况差出好几倍。3.3 操作细节左手坐标系与顶点顺序这个必须单独拿出来说因为几乎每个新手都会在这个坑里摔一次。Molflow的坐标系遵循特定朝向用户需要在3D视图里时刻清楚X、Y、Z三个轴的方向。尤其当你开始旋转视角、在不同平面之间切换时很容易搞混哪个方向是正Z哪个方向是负X。我自己的习惯是每次建模型前先做一个简单的标定在原点附近画一个小三角形Facet颜色调亮一点作为方向参照物避免在复杂视角里失去位置感。顶点顺序决定法线方向这件事是新手最容易忽略的。同样四个点如果按不同顺序连起来最后形成的面可能朝向完全不同。在Molflow里判断法线方向可以看3D视图里Facet的正反面颜色也可以临时开启法线显示。我的经验是顶点按某一方向比如逆时针排列时法线会指向某个特定方向把顶点顺序反过来法线就跟着翻转。所以当你发现一个Facet的法线方向不对时最省事的修法不是手动去改方向向量而是直接调整顶点输入顺序。另外如果一个Facet你需要两面都被粒子打到最好的做法不是去翻转法线而是把它设为“双向面”这样两侧的物理逻辑才自然。4. 3D拉伸让平面Facet长成完整结构4.1 拉伸的逻辑为什么不是简单的“复制”Molflow里的拉伸操作本质上不是简单的“复制一份摆到旁边”。复制只能得到两个彼此独立、没有连接的面而拉伸出的是一个有厚度的三维结构的边界。比如你把一个底面Facet沿Z轴拉伸100mm得到的不只是底面和顶面还包括四面侧壁这才是模拟真正需要的闭合边界。要知道真空模拟里粒子是会被侧壁反弹和吸附的。如果只复制底面和顶面而漏掉侧壁粒子飞到侧面位置时就直接穿出模型区域数据会严重失真。所以拉伸的意义在于“连带生成侧壁”并且自动处理好侧壁和顶底面的共用边关系。用个不恰当的比喻2D Facet是裁好的布片3D拉伸就是把这些布片沿着边缘缝成一个袋子。袋子必须完整气体分子才能老老实实待在里面跑。4.2 完整拉伸流程以100×50×100mm方管为例下面我用一个最简单的例子把拉伸流程走一遍。假设我要建一个长100mm、宽50mm、高100mm的矩形通道用来模拟一个真空室的雏形。第一步先做底面。在XY平面上创建一个矩形Facet四个顶点坐标我通常这样输入Point 1: (0, 0, 0) Point 2: (100, 0, 0) Point 3: (100, 50, 0) Point 4: (0, 50, 0)输入完成后3D视图里应该出现一个平面矩形。检查一下法线方向如果我希望法线朝上Z方向那顶点顺序就保持上面这个循环顺序如果法线朝下就把点2和点4的顺序对调。第二步选中这个底面Facet找到拉伸Extrude工具。Molflow一般要求你输入一个拉伸向量也就是告诉软件“朝哪个方向拉伸、拉伸多远”。我这里输入(0, 0, 100)代表沿Z轴正方向拉伸100mm。第三步设置分段数。如果拉伸的长度比较长或者后面想在侧壁上布置气体入口、泵口等特殊Facet最好把侧面分成多段。比如拉伸方向长度100mm分成4段每段25mm这样两边侧壁就会各生成4个独立Facet方便你针对不同段设置不同属性。第四步确认生成。拉伸完成后模型树里会多出若干Facet包括原底面Facet如果选择了保留、拉伸后的顶面Facet、以及四周的侧壁Facet。到这里一个闭合的六面体真空室雏形就出来了。我特别强调一点拉伸前的底面Facet和拉伸后的顶面Facet很多时候它们都是独立存在的并不自动合并成一个“整体体”。Molflow的几何运算按“面”来不按“体”来所以你要保证每个面之间没有重叠、没有缝隙。4.3 拉伸之后的合并、检查和修正拉伸完别急着设参数跑模拟先做三步检查。检查重复面。在拉伸过程中软件有可能会生成重复顶点或重复Facet。重复本身不影响计算但会拖慢速度偶尔还会让粒子流方向统计出问题。处理方式很简单用“消除重复/合并”Remove duplicate/Grid类工具让软件自动把重合的顶点、面合并成一个。这一步我每次拉伸完都会做算是标准动作。检查法线方向。一个六面体里如果某个面的法线朝外、另外几个朝内粒子从内部出发打到朝外的面上会出现“背面撞击”的异常现象。所以建完模型第一件事就是开启法线显示绕着模型转一圈确保所有面向真空内部的面法线都指向内侧。方向不对的翻转顶点顺序修正而不是强行改法线向量。检查闭合缝隙。一个闭合真空结构所有Facet的边缘应该正好接上。如果有缝隙粒子会从缝隙漏出去这是新手最难受的问题之一。我的土办法是放大3D视图旋转到每个边肉眼在“线框显示”模式下一格格扫过去。任何一个边如果出现半个面的悬空线段那就是缝隙或者几何错误先修好再继续。做完这三步你的3D结构才算真正可用。5. 新手避坑指南与问题排查速查5.1 常见的三类翻车现场我见过太多新手在Facet上卡住的案例翻来覆去其实就是那么几个问题。第一类法线方向乱。典型表现是模拟结果中某个壁面的撞击次数意外地少而它对面的面撞击次数却异常多。原因通常就是这个面的法线朝向反了或者它是单向面导致粒子从背面打过来不计数。解决方式前面说了检查顶点顺序、翻转法线或者干脆设成双向面。但要注意双向面会让结果统计里“背面撞击”和“正面撞击”混在一起如果你关心方向性最好把面修成正确法线而不是图省事开双向。第二类单位不统一几何“看不见”或者“太大”。这是很多人建完模型一脸懵的常见原因。如果你在某个面里输入的是10想表达10mm另一个面输入的是0.01想表达0.01m在Molflow内部单位制下这两个数据就差了千倍渲染出来要么一个面巨大要么一个面小到看不见。解决办法咬死一个单位从头用到尾别手滑混用。第三类吸附系数设错模拟“气体全被吸收”或者“完全不吸附”。这属于物理参数设置问题。新手最容易把“泵口”设成吸附系数1然后把真空室壁也默认设成1结果粒子一进模型就被壁面吞干净真空度计算完全失真。记住普通壁面吸附系数默认是0只有你明确想要它当泵/当出口时才设成接近1的值真实材料想模拟复合系数就查文献填一个中间值。5.2 参数、法线和面方向问题速查表我把平时用得最多的排查点整理成一个速查表照着查能省掉一大半低级错误。现象常见原因检查顺序Facet在渲染视图里看不见坐标输入错误单位不对面在视角背面1. 点模型树里的名字按适应视图2. 检查顶点坐标数值3. 检查法线方向粒子直接穿过某个面面是单向面且法线朝向粒子来的方向或面之间存在缝隙1. 开启法线显示2. 设为双向面3. 检查相邻面边缘是否重合某个壁面撞击数少得诡异法线反向吸附系数误设过高1. 翻转法线功能试一次2. 把吸附系数临时调成0再对比模型全局速度慢Facet数量过多或存在重复面1. 合并重复点/面2. 检查是否有多余细碎Facet3. 简化几何拉伸出来的结构少面拉伸方向输入错误分段数设置导致部分段未生成1. 检查拉伸向量2. 检查分段数3. 撤销重做一次这表格不是万能的但可以解决80%的新手问题。我自己每次新建项目都会把法线方向、单位、吸附系数三个点从头到尾快速扫一遍再进入正式模拟。5.3 我的一个小建议先建最简单的模型测试全流程最后分享一个我踩过很多次坑之后总结出来的习惯无论最终要模拟多么复杂的真空系统先用最简单的几何跑通一次全流程。什么意思就是不要一上来就建一个几十个Facet的大模型。先建一个最简单的方盒子一个入口、一个出口设置好合理参数跑一次几十万粒子的模拟确认接口逻辑、数据输出、渲染显示都没问题了再在这个基础上去拉伸、去增加细节。这样做的好处显而易见排查问题范围小出错一眼就能看出来。我之前有一次把一个圆形腔体的几何建得很漂亮结果跑模拟时粒子数怎么都不守恒查了半天才发现是一个侧壁法线反了。如果先建个盒子试流程这种低级错误根本拖不到正式模型。所以在你准备开始正式建模之前我的建议是花半小时亲手用Facet画一个50×50×50mm的小盒子拉伸出六面体设置一个入口一个出口跑一次完整模拟。这个流程走通了Molflow对你来说就不再是“看不懂的软件”而只是一个需要慢慢调参的工具而已。