简介:ANSYS作为全球广泛使用的有限元分析软件,在工程设计与科研中有着重要地位。这份PDF讲义源自清华大学土木系研究生学术讲座,系统梳理了软件入门及学习方法,特别面向土木工程相关专业的学生、初学者以及需要快速上手的工程师。内容从ANSYS软件的发展历程与主要特点讲起,逐一介绍多物理场、结构、电磁、流体等主要功能模块,并结合结构分析模块(Mechanical)说明静力、动力、瞬态、谱分析与屈曲分析等典型能力;同时专门讨论了土木工程中的螺栓、混凝土、索、梁单元系列及复合材料等应用场景。针对初学者常见困惑,讲义还总结了有限元分析的问题组成、常用模块划分、单元选择规则与单元附加选项,并强调前期建模与材料模型定义的重要性,能帮助读者避开学习误区、建立清晰的学习路径。文件为单个PDF文档,压缩包约1MB,便于线上阅读或打印对照;目前已有1456人学习下载,是一份直观实用的入门参考资料。
1. ANSYS 入门及学习方法:这不是软件操作课,而是一套“算得出来还要算得对”的工程习惯
我见过太多人拿着厚厚一本教材,照着目录把前 200 页的命令流复制了一遍,最后打开后处理一看,应力颜色是出来了,却不知道这个数到底能不能信。这个 PDF 标题里最值钱的词其实是“学习方法”而不是“入门”,因为真正的入门不是学会点菜单,而是建立一套判断习惯:单位有没有一致、约束是不是足够、网格能不能再加密一个量级而结果不漂移。ANSYS 入门及学习方法这个方向,真正要解决的是“我花了一晚上跑出云图,可我该拿它怎么办”的问题。
整篇我会沿着我自己的带人思路走:先把每个新手都会踩的工作目录和单位制账算清楚,再谈几何简化和网格无关性,然后讲求解器与收敛,最后用一条一条真实报错和排查过程帮你建立“看到错误不慌”的能力。适合的读者是想认真做结构分析、振动分析或流体传热方向,且愿意在每个算例上花时间验证的从业者。
2. ANSYS 入门第一步不是建模,是先把工作目录和单位体系逼自己养成习惯
2.1 工作目录与项目文件:为什么第一步要建文件夹,而不是直接双击默认目录
很多人的第一个 ANSYS 算例是从桌面开始的。双击图标,随便画个方块,加点力,Solve 能跑通就关掉。直到第二天想打开 .db 文件复盘,才发现文件不知道被存到了哪个临时目录,或者 Workbench 的 .wbpj 少了一个 .wbpj 的配套文件夹,结果什么也打不开。这不是软件设计有问题,而是你从一开始就跳过了“项目文件管理”这门必修课。
我一般会为每一个分析任务建一个独立目录,并且按阶段再分一层,这样网格文件和结果文件就不会混在一起。以结构分析为例,建议目录结构如下:
mkdir -p ~/ansys_projects/bracket_static/{model,mesh,solve,post,archive}这条命令只是建目录,直接用文件管理器手动建也一样。关键在于后面两层约定:
model:放 CAD 导入的几何文件,比如 step、x_t,以及清理过面的模型版本。mesh:放网格密度测试时保存的 .cdb 文件或网格快照。solve:放求解文件、载荷步配置文件,以及最关键的 .db 和 .rst。post:放后处理图片、数据导出表。archive:放已经定稿的压缩包,避免误改。
在经典 ANSYS 界面里,进入前先改工作目录,常见做法是File > Change Directory,把路径指到刚才建的solve文件夹;在 Workbench 中则是在File > Project Properties里设置Working Directory。注意一个细节:路径中不要出现中文,也尽量不要出现空格。ANSYS 对含空格路径的兼容性虽然比十几年前好很多,但求解器偶尔还是会因为路径解析出一些离奇报错,没必要为这种问题赌运气。
工作目录定下来后,还要知道哪些文件是命根子。下表是最常打交道的一批文件:
| 文件扩展名 | 作用 | 优先级 |
|---|---|---|
| .db | 经典界面数据库文件,包含几何、网格、载荷、求解设置 | 高 |
| .rst | 结构分析结果文件,位移、应力、应变都在里面 | 高 |
| .err | 错误信息文件,求解过程中实时写入 | 中 |
| .log | 操作日志命令流,相当于你的“后悔药” | 高 |
| .lock | 求解锁定文件,非正常退出后常残留 | 低 |
| .wbpj 及文件夹 | Workbench 项目文件组合 | 高(Workbench 必考) |
很多新手不知道 .log 的价值。ANSYS 经典界面会把每一步菜单操作用命令流逐行记录,只要你开一个新算例时先把 .log 改名保存,三个月后想复现一个复杂分析,打开这个文件就是你当初操作的最忠实回放。这个习惯一旦养成,你的学习速度会明显超过那些只会“重新点一遍菜单”的人。
2.2 单位制:有限元里最贵的错误总在单位换算上
我在带人时,第一周不教建模,只教单位。这句话听着夸张,但代价确实太高:同一套实体模型,有人按国际单位制输入,有人按毫米-牛顿-秒输入,结果差了 10^9 倍,还找不到原因。
ANSYS 本身并没有强制单位制,它只认你输入的数字,然后在后处理里把结果按同样逻辑输出。所以单位一致性只能靠你自己保证。工程上最常用的两组单位制:
| 物理量 | 国际单位制(m-kg-s) | 工程常用(mm-tonne-s) |
|---|---|---|
| 长度 | m | mm |
| 力 | N | N |
| 质量 | kg | tonne(1 tonne = 1000 kg) |
| 时间 | s | s |
| 压力/弹性模量 | Pa(N/m²) | MPa(N/mm²) |
| 密度 | kg/m³ | tonne/mm³ |
钢在这两套单位制下的典型输入分别是:国际单位制里弹性模量2.05e11 Pa,密度7850 kg/m³;工程单位制里弹性模量2.05e5 MPa,密度7.85e-9 tonne/mm³。很多人把密度填成 7.85e-6,就是把国际单位制的数值直接“除以 1000”想当然处理,结果重力变形全错。
我一般会给新手一个自检动作:算完模态或静力后,先到后处理里查一下总质量。如果一个体积 0.001 m³ 的钢块,质量算出来不是 7.85 kg 而是几百万 kg,说明密度单位一定错了。模态分析里,密度错误会直接让固有频率错得离谱,而且这种错误在云图上根本看不出来,只有核对具体数值才能发现。
另外要注意角速度。做谐响应和瞬态分析时,角频率的常用单位是 rad/s,但很多载荷数据来自电机转速说明书,给的可能是 rpm。换算系数是:rad/s = rpm × 2π / 60。如果直接拿 rpm 数值填进去,频率结果会差 6.28 倍甚至更高,在图表上就是一根竖线的位置完全不对。
3. 从几何到网格:把“能用”的模型变成“能算”的模型
3.1 几何简化:圣维南原理在入门期的真实作用
拿到一个 CAD 模型直接导入 ANSYS,这是我见过最多的新手动作,也是最容易让算例卡死的动作。CAD 模型是给制造用的,不是给有限元用的。上面的螺栓孔倒角、焊缝圆角、退刀槽、装饰性凸台,会直接导致网格划分时产生大量小单元,或者生成严重扭曲的单元,让求解器在接触迭代里反复往返。
这时候用得上的一条原则就是圣维南原理的工程化表述:如果你只关心离载荷作用区域稍远处的应力分布,那么局部几何的小修改,只会影响它附近的应力场,对远场影响小到可以忽略。所以简化时先问自己一个问题:我在这个算例里最想得到哪一个位置的应力或位移?如果关心的是支架根部焊缝处的疲劳应力,那你完全可以把螺栓孔倒角去掉,把螺栓连接简化为压力面或刚性耦合,因为这些细节离关注区比较远。
我通常把特征分成三档处理:
| 特征类型 | 处理方式 |
|---|---|
| 圆角、倒角、小台阶 | 距离关注区较远时直接填平或删除 |
| 螺栓连接、销轴 | 用 Coupling 或 Remote Force 替代,尽量不建真实螺纹 |
| 薄板加强筋、翻边 | 保留主要传力路径,抽中面后用壳单元分析 |
| 焊缝 | 根据关注度选用圆角或忽略,疲劳分析才需要仔细建模 |
简化不是越干净越好。如果把一个端盖的螺栓都删了,原来由螺栓承载的轴向力被你改成了端面接触承载,那结果一定偏离现实。每删一个特征,都要想一想有没有改变载荷传递路径。入门阶段记不住那么多理论不要紧,先养这个习惯。
3.2 网格划分与单元类型:加密要能用“网格无关性”给自己找台阶
网格是新手最爱纠结的地方。一个常见说法是“网格越密越准确”,这句话在连续体里部分成立,但更准确的说法是:网格密度要增加到结果不再明显变化为止,过度加密只会在工程周期上拖垮你。
在经典界面里,一个最简单的实体静力分析,单元定义和材料定义是这样的:
/PREP7 ET,1,SOLID186 ! 20节点六面体单元,适合弯曲主导问题 MP,DENS,1,7.85E-9 ! 密度,单位 tonne/mm³,材料为钢 MP,EX,1,2.05E5 ! 弹性模量,单位 MPa MP,NUXY,1,0.3 ! 泊松比 ! 如果使用国际单位制,这里应是 EX=2.05E11,DENS=7850E-9?? 注意单位自洽这段命令里,ET定义单元类型,MP定义材料属性。SOLID186是 20 节点六面体,默认带中间节点,处理弯曲问题比 10 节点四面体更稳;如果你的几何必须自动生成四面体,那至少也要用带中间节点的SOLID187,而不是用一阶四面体SOLID285或退化的低阶单元。低阶四面体在一些免费网格工具里很常见,但在弯板、悬臂梁这类以弯曲变形为主的模型里,它会出现“剪切锁定”:位移偏保守、应力偏低,而且加密后收敛很慢。
网格划分本身可以用一条最直接的思路:先用全局尺寸画一套粗网格,比如单元边长 2 mm;求解后记录关注点的最大米塞斯应力;然后把全局尺寸改为 1 mm,重新求解,再记录同一位置。如果两次结果差异小于 5%,就认为网格密度满足工程要求。这是网格无关性验证的精简版,也是我要求每个入门者必须跑一遍的流程。
网格划分的一个要点是避免小单元堆在无关区域。你完全可以在远离关注区的地方把单元画大,比如用 ESIZE 控制整体尺寸后,再对圆角面或接触面单独细化:
ALLSEL ESIZE,2 VMESH,ALL ! 如果希望局部细化,可先选择面,再 AREFINEESIZE后面的数字是目标单元边长,单位与模型几何一致;VMESH,ALL是对所有已分网体执行体网格划分。局部细化不要过头,细化区域的应力结果如果随网格继续加密而一直上升,你先别急着加密,要考虑是不是遇到了应力奇异点。
3.3 材料参数:弹性模量和屈服极限不是填空题
材料参数在入门教程里常被一笔带过,因为教程的模型是理论化的,但实际项目里材料数据往往是结果可信度的关键。我见过有人做钢构件分析,弹性模量填了 2.1e9 MPa,少一个数量级;也有人做铝合金支架,密度用了钢的 7850,于是重力载荷下的变形完全失真。
最省事的办法是去找材料供应商或材料手册里的实测数据,不要从别的模型里随手抄一套参数。线性静力至少需要三个量:弹性模量、泊松比、密度。如果模型还要做强度校核,就需要屈服强度或抗拉强度作为后处理评估的参考值。做非线性塑性分析时,需要输入真实的应力-应变曲线,而不是只填一个屈服极限。
在命令流里加入塑形参数的基本框架如下:
TB,PLASTIC,1,1,5,BISO ! 双线性等向强化模型 TBTEMP,20 TBPT,,300,240 ! 屈服应力 240 MPa TBPT,,0.01,260 ! 塑性应变 0.01 时应力 260 MPa这里TB,PLASTIC定义材料本构,TBPT输入应力-应变点。你要注意塑性应变的定义不是“总应变”,而是“总应变减去弹性应变”的那一部分,做单轴拉伸数据转换时要扣掉弹性段。很多新手直接把总应变输入,结果曲线的屈服平台变得异常,收敛过程也跟着出问题。材料参数这块没有玄学,只有“用对数据”和“用错数据”两个结果。
4. 求解与收敛:入门者最应该做对的三个设定
4.1 分析类型与求解器选择:先确定你要回答什么问题
同一个模型可以回答不同的问题:静力回答“会不会断”,模态回答“固有频率在哪”,瞬态回答“冲击下位移到底多大”。新手最常见的错误是把所有问题都扔给静力分析,或者一上来就开大变形,结果不收敛就换求解器,却没有回头想过分析类型本身是不是选错了。
按问题类型选择求解器,我的经验如下:
| 分析类型 | 常用求解器 | 适用情况 |
|---|---|---|
| 线性静力 | Sparse Direct / PCG | 小模型用直接法最稳;超大模型用迭代法省内存 |
| 模态分析 | Subspace / Lanczos | 求前十几阶固有频率用 Lanczos 足够 |
| 谐响应 | Full Method / Mode Superposition | 扫频范围宽时用模态叠加法效率高 |
| 瞬态动力学 | Full Method / HHT | 接触、塑性等非线性明显时用 Full |
| 非线性静力 | Newton-Raphson 配合 Sparse 或 PCG | 大变形、接触、材料非线性 |
入门阶段不需要把每种求解器的数学细节搞明白,但你要记住一个原则:线性小模型别动不动上迭代求解器,直接法最稳;非线性模型必须开自动时间步,并且把初始、最小、最大子步设好。比如:
NSUBST,10,100,5 AUTOTS,ONNSUBST后面三个数分别是初始子步数、最大子步数、最小子步数;AUTOTS,ON让求解器根据收敛情况自动增减载荷步。我见过有人把NSUBST三个数字全填成一样的,等于关掉了自动调整,结果一个要收敛的接触问题硬是迭代了 200 步还跳不出来。
大变形开关NLGEOM,ON要不要开,也不是越大越高级。如果你做梁的刚度分析,小变形下位移很小,开不开差别不大;但如果做薄板受压屈曲、橡胶密封变形这类问题,不开就完全错误。一个判断标准是:变形量超过特征尺寸的百分之几,或者你明显看到几何刚度对结果有影响时,再打开大变形。
4.2 边界条件与载荷:“能算出来”和“算得对”的分水岭
模型没有约束,求解器会告诉你刚度矩阵奇异,这是新手第一次接触“刚体位移”概念的场景。更隐蔽的情况是:你加了约束,但约束数量不足,或者约束方向无法阻止某个自由度方向上的刚体平动,求解器也能算完,只是结果里出现了几千毫米的位移云图。
一个立方体零件做静力分析,底面如果只约束了 Z 向位移,它在 X 和 Y 方向仍然可以自由滑动,任何一点微小的不平衡力都会导致假的巨大位移。正确做法是给底面施加固定约束,或者至少限制三个平动自由度和必要的转动自由度。
/SOLU D,ALL,UX,0 D,ALL,UY,0 D,ALL,UZ,0这里D命令把底面上所有节点的三个平动自由度都约束为 0。需要注意的是:如果你选择的底面节点没有全部被选中,只是看着“像”约束了底面,求解结果会暴露出明显的不对称变形。所以施加载荷和约束前,一定要用PLNSOL,U,SUM或者ESEL检查当前选择集是否和预期一致。选择集操作是另一个入门门槛,它不产生可见几何变化,但对计算内容的控制非常关键。
载荷方面,力的单位要与你设定的单位制一致;压力载荷要看清是作用在单元面上还是节点上。把压强填成 MPa,但力值按 N 输入,两者混用会直接导致应力差几个数量级。远程力(Remote Force)看起来方便,但作用点与实际结构不重合时会产生附加弯矩,很多结果异常都源于这里,使用后有必要检查一下力的等效传递路径。
4.3 收敛与求解控制:别把非线性计算的默认值当免死金牌
非线性计算的默认收敛准则通常是力和力矩准则。实践证明,只盯力准则有时会把“还没算准”误判为“已经收敛”,尤其是当结构刚度很大、载荷很小而位移是主要关注量时。我的习惯是在做接触或塑性问题时,额外加入位移收敛检查:
CNVTOL,F,0.05 CNVTOL,U,0.02CNVTOL,F,0.05表示力收敛容差设为 5%;CNVTOL,U,0.02表示位移容差设为 2%。两个准则同时满足才算该增量步收敛,这样能显著减少“每个子步都收敛很快但累计结果偏大”的情况。
对于接触分析,另一个关键参数是接触刚度和穿透量。默认接触算法在模态计算时可能表现出“异常刚度”,而在静力非线性里又会出现反复迭代。遇到这种情况,可以先检查接触面的法向方向是否正确,再查看初始间隙和初始穿透。接触初始状态不对时,所有后面花在求解控制上的时间都白搭。先验证初始接触状态,再谈收敛参数,这是一个重要顺序。
5. 新手绕不开的五个 ANSYS 错误:现象、原因和解决办法
5.1 求解刚开始就报 “Node not found” 或 “Element not intact”
现象:模型看起来都分好网了,一求解就中断,输出窗口里出现类似Node not found、Element not intact的提示。
原因:大部分时候是选择了错误的实体编号范围,或者网格与几何编号不一致。比如你进入PREP7以后先画了新的体,再用VMESH分网,原来的单元选择集里却混入了空体;也可能是导入 CAD 模型时出现了退化面,某个体没有成功生成网格但你没有检查。
解决:求解前先做两个动作,一是ESEL,ALL、EPLOT看单元是否全部被画出;二是用CHECK或MCHECK检查网格质量。命令MCHECK会输出单元形状检查结果,看到negative volume或者bad aspect ratio时,就用VCLEAR把该体网格清掉,检查是否有碎面、重叠面,修好后再重新分网。切记不要带着红色警告直接求解,那不是“能算”,只是“还没炸”。
5.2 计算成功但变形和应力大得离谱:九成是刚体位移
现象:后处理里位移云图显示几十毫米甚至几百毫米,应力也超出材料强度几个数量级,但你的载荷明明只有一牛顿。
原因:约束不足以约束刚体自由度。常见的漏约束是:一个三维实体只约束了一个面的法向位移,没有约束切向;或者用一个远程约束点了某个节点,但没有约束转动。求解器依然能算出“解”,因为这个解是带有刚体项的最小二乘结果,在数学上存在,在物理上无意义。
解决:先数一数六个刚体自由度(三个平动、三个转动)是否都被约束住。如果模型本身依赖对称性,至少要处理好对称约束。还有一种技巧:在后处理里看U,SUM的最大位移是否远大于相对变形。比如两根柱子之间相对位移只有 0.1 mm,但整体位移云图上基线都漂移到 5 mm,那基本就是约束不足。重新处理约束后再算,数值会恢复到一个合理量级。
5.3 非线性求解反复不收敛:别只去改刚度
现象:使用接触或塑性材料后,求解进行到某一子步就反复迭代,最终报Solution not converged,怎么加密子步都无效。
原因:收敛失败往往是多重因素叠加。最常见的是:接触初始穿透过大、材料参数输入了错误的应力应变点、载荷步长太大、某个区域网格退化导致局部刚度异常。新手最容易只去调接触刚度,把数值从 0.01 改到 100,结果只能让求解器更容易发散。
解决:按顺序排查。第一步,查看报错前的子步号和后处理中最后一个收敛载荷步的变形云图,看是哪个位置开始不收敛;第二步,检查接触初始状态,尤其是第一载荷步有没有先建立接触;第三步,用NSUBST把初始子步数调大,比如把 10 改成 50,同时打开自动时间步;第四步,回硬件里看是不是某个单元严重畸变,如果是,返回网格部分重新处理。另外建议每个算例先跑一个线性静力,确认基础刚度正确后再加非线性设置,这样能把“模型问题”和“求解问题”分开。
5.4 重启模型后结果消失:rst 路径或文件被覆盖
现象:昨天还能在后处理里看到应力云图,今天打开 .db 文件,一查看结果就是空的,或者提示No results found。
原因:结果文件 .rst 和数据库文件 .db 是相互配套的。只先拷贝 .db 到新目录,却忘了 .rst;或者原来的工作目录里出现了新的 .rst 覆盖;还有一个常见场景是在同一个目录下建了两个项目,后一个求解时把前一个的结果文件给覆盖了。
解决:养成按 2.1 节的项目目录划分习惯,求解前在solve文件夹里检查 .rst 是否存在并且文件大小不是 0。结果文件不想被覆盖时,把它复制一份到archive,并且在经典界面后处理设置里改成读取指定结果文件:通过File > List > Result Files > 指定路径来指向旧文件。更保险的做法是每个计算完成后,把 .db、.rst、.log 三个文件一起打包重命名,文件名含日期或工况标识,这样后面就不可能找错。
5.5 网格越密,应力反而越涨:应力奇异点在教你读结果
现象:对一个有直角尖角、点约束、或刚性约束的模型不断网格加密,最大应力像失控一样往上走,永远不收敛,但远处的应力稳定。
原因:这是典型的应力奇异点。尖角处、约束反力集中点、单点加载点,理论上应力趋于无穷大,有限元的网格越密只是在不断逼近这个数学无限值。这不是网格不够细,而是模型本身就包含了一个不物理的“奇点”。很多第一次遇到的新手会陷入“无限加密直到电脑卡死”的循环。
解决:工程上的做法是放弃读取奇异点本身的应力,改读取距离奇异点一段距离后的某一截面应力,或者把尖角倒圆,用真实几何消除奇点。对于校核类分析,尤其要注意结果奇异与真实应力集中是两回事:真实应力集中随网格加密会趋于一个稳定值,而奇异点不会。区分方法是做网格无关性验证:如果最大应力与网格尺寸关系呈单调增长,哪怕尺寸缩小十倍也不收敛,那基本就是奇点而不是真实峰值。此时应回到几何,重建一个带圆角的模型,再重新比较结果。
6. 入门到进阶的真正分界线:把操作存档成学得会的方法
当你能独立完成静力、模态、接触这三个典型的入门算例时,下一步不是急着学流固耦合,而是把操作过程变成可以重放的“剧本”。ANSYS 经典界面的 .log 文件就是最天然的剧本,Workbench 也可以把操作录制成日志,但更通用的是把关键参数写进 APDL 参数化命令流里,让同一个分析能快速更换尺寸和载荷。
一个最简单的参数化分析框架如下:
! 参数区 BRACKET_WIDTH = 50 ! 支架宽度,单位 mm BRACKET_HEIGHT = 80 ! 支架高度 FORCE_VALUE = 1200 ! 施加载荷,单位 N ! 建模、分网、加载都引用这些参数 K,1,0,0,0 K,2,BRACKET_WIDTH,0,0 K,3,0,BRACKET_HEIGHT,0 A,1,2,3这段代码里K命令创建关键点,A命令由三个关键点生成面,而尺寸全部由参数控制。想换一个规格,只需要改三个赋值,求解路径不变。这才是参数化分析的入门形态,它不会让你立刻掌握优化算法,但会让你摆脱“每次改动都重新点几十遍菜单”的低效状态。
进阶过程中,我还会建议你给每个算例加一道验证题:手算或查阅理论解,和有限元结果对一下。比如一个悬臂梁在端部受集中力,用材料力学里的梁公式计算端部挠度,再与 ANSYS 的位移结果比较。这一步能同时检验单位、网格密度、边界条件和后处理读取方法,四类问题一次查完。别觉得这个动作简单,“对得上理论解”这一条标准,比你能背下来十条命令更能证明你学会了这个工具。
最后说一个我自己的习惯:每次算完一个项目,我在archive目录里留下一个命名为README.txt的小文档,写清楚这个模型分析了什么、单位制是什么、约束位置在哪里、最大应力读的是哪个节点区域。这样做看起来麻烦,但半年后当项目需要复用或修改时,它比任何“我记得当时就是这么设的”都可靠。真正有效的 ANSYS 入门及学习方法,核心从来不是记住菜单,而是把每次调试和验证形成条件反射,让自己从“求一个颜色好看的云图”慢慢变成“知道这张云图哪里能信、哪里不能信”。希望这些踩坑经验能帮你少走一点弯路,也希望你从第一个算例开始,就走得比我当年更稳一点。
本文还有配套的精品资源,点击获取