简介:一份面向ANSYS初学者的入门笔记,源自清华大学土木系研究生学术讲座,适合土木工程及相关专业学生快速建立有限元分析学习框架。内容系统梳理ANSYS软件特点、学习方法、主要功能模块和单元选择要点,重点讲解结构分析、电磁分析、流体分析与LS-DYNA等模块的适用场景;同时结合土木工程中螺栓、混凝土、索、Beam18x系列和复合材料的典型应用,深入分析单元命名规则、材料模型、几何建模、网格划分、前处理与求解流程等关键环节。文中还专门介绍了通用前处理模块、单元附加选项(Key Option、Real Constant、Section)和常见注意事项,能帮助新手理解ANSYS单元体系及建模逻辑,减少摸索成本。资源为1个PDF文档,大小约1020KB,现已有1452人学习浏览。对正处在入门阶段、希望从实际工程案例切入ANSYS的读者来说,是一份内容精炼、结构清晰、信息密度较高的参考资料。
1. 从一套2004年的课件看ANSYS学习主线
有限元分析的结果是否可信,往往取决于动手建模的前两个小时,而不是求解器算完的那两分钟。这套材料是清华大学土木系研究生讲座的整理稿,讲的是ANSYS从单元选择、材料定义、几何建模、网格划分到求解、后处理的完整主线。它没有停留在按钮级操作,而是把「为什么这么选」讲清楚了:单元命名规律是什么、材料模型如何与单元绑定、三种网格划分方式各自边界在哪。对刚开始接触ANSYS的工程师和在校研究生,这是一条省时间的上手路径;对已经用Workbench做过几个项目的从业者,其中关于单元附加选项、荷载步、单元生死的细节同样值得回读。毕竟软件界面年年变,底层建模逻辑十几年没动过。
2. 前处理不是画图:单元-材料-几何的建模顺序
2.1 单元选择:命名规则与附加选项
ANSYS的单元命名规则非常直白,Solid 65、Beam 3、Shell 181这类名字本身就携带信息:前半部分是单元族,后半部分是编号。Solid代表实体单元,Beam是梁单元,Shell是壳单元,Plane是平面单元,Link是杆单元,Combin是弹簧单元,Cont和Targe是接触与目标单元。编号则标识该单元在家族中的具体位置,比如Solid 65是混凝土专用实体单元,Beam 188/189是考虑剪切变形的铁木辛柯梁单元。
单元选型不是越高级越好,而是要看分析对象的力学简化是否成立。做框架结构静力分析,Beam 188比Solid 65合理——杆件受弯为主,用实体单元反而会引入剪力锁死和网格敏感性。做混凝土局部承压,Solid 65几乎是唯一选择,因为它内置了混凝土开裂和压碎准则。
选定单元类型后,必须处理三个附加属性,缺一不可:
| 属性 | 作用 | 典型参数 |
|---|---|---|
| Key Option | 控制单元内部功能开关,如积分点布置、应力输出项 | 梁单元是否输出节点荷载、壳单元厚度方向积分点个数 |
| Real Constant | 定义单元几何或附加功能参数 | 板壳厚度、混凝土配筋率、接触面摩擦系数 |
| Section | 定义梁、板类单元的截面形状与尺寸 | 工字形截面尺寸、板分层信息 |
壳单元厚度方向积分点个数就是一个典型的Key Option控制项。默认5个积分点对大部分线弹性分析够用,但如果是带塑性发展的壳分析,积分点太少会低估截面屈服,导致结果偏刚。厚度变化大的模型,还要注意Real Constant里的厚度值是否跟随局部坐标系方向。
以Beam 3为例,这个经典平面2节点梁单元有3个关键选项:第6项控制是否输出单元坐标系下的节点荷载,第9项控制是否输出梁内部其他截面的结果,第10项决定梁表面荷载按绝对坐标还是相对坐标定义。对应的实常数包括截面积、惯性矩、梁高度、剪切变形参数、初始应变和附加质量。
在经典ANSYS环境中,这些属性通过APDL定义:
/prep7 ! 定义1号单元为Beam3平面梁单元 et,1,beam3 ! KeyOption(6):输出单元坐标系下的节点荷载 keyopt,1,6,1 ! KeyOption(10):梁表面荷载按绝对坐标定义 keyopt,1,10,0 ! 实常数:截面积4.5e-3m2,惯性矩3.4e-5m4,梁高0.3m r,1,4.5e-3,3.4e-5,0.3,0,0,0这里et定义单元类型,keyopt打开附加选项,r录入实常数。第6个和第10个Key Option在默认状态(0)下也能算,但输出内容会少,后处理时看不到想要的截面结果。实际调试中,我习惯在做完一次试算后,对照Help文档里该单元的Key Option表,逐一确认当前分析需要哪几项,避免遗漏应力输出开关。
材料模型和单元类型是绑定的。Beam 3配合双线性弹塑性材料可以模拟钢结构梁柱,但同样的材料本构放到Plane 42上用,就需要重新检查屈服准则参数是否匹配。ANSYS的帮助文档对每个单元都列了「适用的材料模型」清单,选单元之前先查这张表,能避开大量算到一半报错的问题。
2.2 材料定义:基本属性与材料模型
材料定义分两层。第一层是基本属性:弹性模量、泊松比、密度、热容、导热率、阻尼比。第二层是附加属性,通过Data Table定义,包括屈服强度、开裂应力、硬化模量等。
基本属性对所有单元通用,用MP命令输入。附加属性用TB命令族输入,两者必须配合使用。只给钢材定义弹性模量而忘记定义屈服强度,弹塑性分析时材料会一直停在弹性段,结果偏刚;反过来只定义本构不定义弹性模量,连刚度矩阵都组装不起来。
常见的材料模型选择看结构类型:
| 材料 | 推荐模型 | 说明 |
|---|---|---|
| 低强度钢 | 双线性弹塑性(BISO/BKIN) | 等强硬化或随动硬化,参数少,收敛快 |
| 高强钢、混凝土 | 多线性弹塑性(MISO/MKIN) | 能描述屈服后的非线性段 |
| 土体 | Drucker-Prager | 考虑静水压力影响的屈服准则 |
| 混凝土、岩石 | Concrete(Willam-Warnke) | 带开裂和压碎判断,需配合Solid 65 |
以一级钢材为例,基本属性是弹性模量200GPa、泊松比0.3、密度7800kg/m³;附加属性用等强硬化双线性弹塑性(BISO),屈服强度215MPa,硬化模量2GPa。用APDL输入:
mp,ex,1,200e9 ! 1号材料弹性模量200GPa mp,prxy,1,0.3 ! 泊松比0.3 mp,dens,1,7800 ! 密度7800kg/m3 tb,biso,1 ! 定义双线性等强硬化 tbdata,1,215e6,2e9 ! 屈服强度215MPa,硬化模量2GPatb激活材料本构模型,tbdata按行填入该模型所需的系数。每个模型需要的数据行数和顺序在Help里有明确说明,填错不会立即报错,但屈服面形状会不对。
一个高频误用是把硬化模量填成弹性模量的数量级。双线性模型里第二个斜率是塑性段切线模量,一般取弹性模量的1/100到1/1000,填成和弹性模量一样大等于没有塑性段。另一个常见问题是忘记给材料定义密度,静力分析不报错,一到模态分析和动力分析,质量矩阵全为零,频率全部算不出来。
ANSYS自带的材料模型库相对精简,只覆盖最常用的本构。特殊材料要么自己写USERMAT用户子程序,要么借助外部材料接口。判断一个模型是否内置,最直接的方法是看TB命令的帮助页面里能否找到对应的模型编号。
2.3 几何建模:点-线-面-体拓扑与布尔操作
ANSYS的几何模型严格按「点-线-面-体」四级拓扑组织,上一级元素由下一级元素构成。建立复杂模型时,必须清楚每个体由哪些面围成,每个面由哪些线界定,线的两个端点是谁。这条拓扑链一旦混论,后续网格划分和边界条件施加都会出错。
Workbench界面里虽然可以用SpaceClaim直接拉实体,但导入到Mechanical后,几何仍然会转换成点-线-面-体结构。理解这层拓扑关系,对处理导入模型的破损面、自由边和重复线很有帮助。
建模建议开头就建立选择集。对相同材料、相同单元、相同荷载条件的元素分别命名集合,后续施加边界条件和后处理提取结果时直接操作集合,避免反复点选。对于大型模型,这一步节省的时间相当可观。
工作平面(Work Plane)是ANSYS建模时默认的参考坐标系,通过平移和旋转工作平面,可以完成各种复杂体的变换操作。结合Reflect、Divide等命令,能够对模型做镜像、切割。
全局坐标系支持直角坐标系、柱坐标系、球坐标系和结果坐标系。施加径向荷载时,把激活坐标系切到柱坐标系;施加圆环温度场时,用球坐标系定义节点位置会更直观。
体元素的布尔操作是这个阶段的核心工具:
Add:两个体合并为一个体Subtract:一个体减去另一个体的重叠部分Overlap:两个体重叠后各自保留,生成公共边界Glue:两个体合并,共享交界面Divide:用面或工作平面把一个体分割成多个体
! 用工作平面切割体1 wpoffs,0.5,0,0 ! 将工作平面沿X方向平移0.5m vsbw,1 ! 用工作平面分割体1 ! 两个体做Glue操作 vglue,1,2wpoffs移动工作平面位置,vsbw是体分割命令,vglue将两个独立体合并为共享面的整体。Glue操作对后续网格划分的影响最直接——共享面保证两侧单元节点连续,不Glue的话,两个体的网格在交界面上各画各的,结果会出现位移不连续。
复杂形体建议分割成若干个简单体再分网。一个带圆孔和不规则凸台的体,直接做自由网格划分会得到大量畸形单元;分割成规则块后,每个块独立划分,网格质量可控得多。这是建模阶段为网格划分做的准备,也是把模型转到其他程序前必须检查的环节——拓扑清晰的模型,哪个软件都能接得住。
3. 网格划分:Free/Mapped/Sweep的边界条件与网格质量控制
3.1 三种网格划分方式对比
ANSYS提供了三种网格划分方式:自由网格划分(Free)、映射网格划分(Mapped)、扫略网格划分(Sweep)。三者的核心区别在于单元形状限制和几何拓扑要求。
| 划分方式 | 适用几何 | 单元类型 | 优缺点 |
|---|---|---|---|
| 自由网格 | 任意复杂几何 | 二维三角形/四边形,三维四面体 | 自动化程度高,六面体单元无法使用,单元数偏多 |
| 映射网格 | 面少于6个的体 | 二维四边形为主,三维六面体 | 单元规则,计算精度高,对几何拓扑要求苛刻 |
| 扫略网格 | 两个对应面的体 | 主要在扫略方向生成六面体 | 效率和精度平衡好,要求源面与目标面形状对应 |
自由网格划分有SmartSize控制,根据模型曲率自动调整网格密度,数值1最密,10最粗。也可以手动指定单元边长或线分段数。二维模型用自由网格问题不大,三维模型要注意——自由网格只能生成四面体单元,四面体在弯曲问题里的刚度偏大,需要足够多的单元数量才能收敛到准确解。
映射网格划分对体的面数量有硬性要求,体面数少于6个时才能使用,且划分前需要把面处理为可映射的形状。映射网格生成六面体单元,单元排布方向与几何映射方向一致,适合规则板、梁、块体结构。
扫略网格划分要求体有两个对应的面,一个作为源面,一个作为目标面,网格沿扫略路径分布。这个方式在等截面构件里效率最高——拉一个面,整个体的网格全部生成。
! 自由网格划分,SmartSize=4 /prep7 smrtsize,4 mshkey,0 vmesh,1 ! 映射网格划分,限制为六面体单元 mshkey,1 mshape,0,3d vmesh,2 ! 扫略网格划分 vsel,s,volu,,3 vsweep,3 allselsmrtsize,4设定智能网格密度,mshkey,0表示自由划分,mshkey,1表示映射划分,mshape,0,3d要求三维单元退化为六面体而非四面体。vsweep,3对3号体执行扫略。自由网格不挑拓扑,适合快速试算;映射网格需要几何形态配合;扫略需要提前规划好源面和目标面。
网格策略不是三选一。工程上一个模型全是自由网格的情况很少见,多数是规则区域用映射或扫略,复杂过渡区用自由网格,再用接触或约束方程衔接。
3.2 分网前的线分割与密度控制
网格划分很少一遍成功。一个常见错误是拿到实体直接vmesh,结果在圆角、孔洞和尖角处生成大量劣质单元。正确做法是分网前先对体附着的线做分割,控制关键位置的网格密度。
比如一根梁,两端有端板,梁身细长。直接自由划分会在端板与梁身连接处生成过渡网格,单元数量大且形态差。先把梁身沿长度方向分成若干段,再对每段独立控制线分段数,端板用较密的网格,梁身用较稀疏的网格,整体网格质量立刻改善。
线分割的核心命令是lesize:
! 对线5设定分段数为20 lesize,5,,,20 ! 对线8设定单元边长为0.05m lesize,8,,,0.05lesize既可以指定分段数,也可以指定单元边长。分段数的优先级高于单元边长,两个参数同时给出时分段数生效。需要对某条边单独加密时,先lesize再vmesh,分网时命令会优先考虑线的划分要求。
分网前保存存档是必须养成的习惯。一个复杂的体,网格划分尝试三到五次很正常,每次失败都需要回到分网前的状态。为了方便后续调整,对相同属性的区域建议建立相同的选择集,后续分析直接使用。
3.3 网格质量检查与常见误区
网格划分完成后,质量检查不能省。ANSYS中查看网格质量有两条路径:一是Mesh Metric面板,在Workbench的Mesh对象里直接查看单元质量、偏斜度、正交质量等统计指标;二是经典环境的CHECK命令,输出每个单元的网格质量参数。
Workbench的Mesh Metric中,Element Quality、Aspect Ratio、Skewness这几个指标需要同时看。Skewness接近0表示单元形状接近理想,接近1表示单元严重畸形。偏斜度超过0.95的单元要重点检查,这类单元会导致刚度矩阵病态、求解收敛困难。
网格质量差并不总是显示为报错,更多时候表现为:求解能完成,但某几个节点的应力值异常大;或者相同工况下,网格加密后结果不收敛。如果局部应力峰值总出现在同几个单元上,先看那个位置的单元质量,而不是急着调整边界条件。
一个常见误区的具体表现:为了追求精度,全局统一加密网格。结果单元数翻了几倍,计算时间指数增长,精度提升有限。更好的做法是先粗算一遍,找到应力梯度大的区域,对该区域局部加密,其他地方保持原密度。这也是原讲座里「求得精度和计算代价的均衡」这句话的实际含义。
4. 求解模块:分析类型、荷载步与非线性控制
4.1 分析类型与基本选项
求解模块涉及的内容包括:分析问题类型、分析参数设定、荷载条件、荷载工况建立和实际求解。ANSYS支持的分析类型包括:静力分析、模态分析、谐振分析、瞬态动力分析、谱分析、特征值屈曲分析和子结构分析。
| 分析类型 | 典型用途 | 对应命令 |
|---|---|---|
| 静力分析 | 恒载作用下的应力位移 | antype,static |
| 模态分析 | 结构自振频率与振型 | antype,modal |
| 瞬态动力分析 | 地震、冲击等时变荷载响应 | antype,trans |
| 谱分析 | 响应谱和随机振动 | antype,spectr |
| 特征值屈曲 | 临界荷载与屈曲模态 | antype,buckle |
选择分析类型后需要设置基本选项,包括大变形开关、荷载步长控制、荷载步设定、输出结果频率。静力分析是否打开大变形,取决于结构是否发生几何非线性。大开间薄壁结构、索结构必须打开大变形开关,否则计算得到的刚度和位移不符合实际情况。
/solu antype,static ! 静力分析 nlgeom,on ! 打开大变形 sstif,on ! 打开应力刚化 autots,on ! 自动时间步长 nsubst,20,50,10 ! 子步数:初始20,最大50,最小10 outres,all,all ! 每个子步输出全部结果nlgeom,on对于大位移大转动问题必须打开,sstif,on用于考虑应力刚化,适合索结构张拉和旋转结构分析。nsubst控制子步数,数值越小越容易收敛但精度降低,数值越大计算时间越长。
启动求解器时如果报错,先检查三件事:几何模型是否完全定义了材料属性、单元类型和实常数,边界条件是否约束了刚体位移,以及工作目录是否有写权限。后两个问题在大型模型里最多见——模型漏了一处约束导致刚体运动,求解器在第一个增量步就发散。
4.2 瞬态动力分析的参数设置
瞬态动力分析是土木工程中使用最频繁的动力分析类型,地震时程响应、风振响应都属于这类问题。瞬态分析需要设定荷载加载方式、阻尼系数和积分方法。
阻尼用瑞雷阻尼表示,包含质量阻尼系数ALPHAD和刚度阻尼系数BETAD。两个系数对应公式alpha*M + beta*K,实际工程中通常根据两个控制频率和对应阻尼比反算。取阻尼比5%,控制频率取结构第一阶和第二阶自振频率,就能得到一组可用的瑞雷阻尼系数。
antype,trans ! 瞬态动力分析 trnopt,full ! 完全法瞬态分析 alphad,2.0 ! 质量阻尼系数 betad,0.002 ! 刚度阻尼系数 nlgeom,on ! 考虑几何非线性 deltim,0.01,0.005,0.05 ! 初始时间步0.01s,最小0.005s,最大0.05s kbc,0 ! 荷载按斜坡方式逐步施加 outres,all,all ! 每个子步输出全部结果deltim设置时间步长。地震动时程通常取0.01s或更小,时间步过大高频响应会被滤掉,时间步过小计算时间指数增长。kbc,0表示荷载在该子步内斜坡过渡,kbc,1表示阶跃加载。地震激励下荷载是连续变化的,用斜坡加载更合理。
模态叠加法和完全法的选择也需要判断。模态叠加法计算速度快,但只适用于线性问题,而且对荷载频谱有要求;完全法能处理非线性和任意荷载,代价是计算量大。对于考虑材料非线性的时程分析,完全法几乎是不二选择。
4.3 荷载步、重启动与单元生死
荷载步文件(Load Step File)用于批量输入和运行多个荷载工况。荷载步之间存在先后顺序关系,上一个荷载步的终点条件会自动作为下一个荷载步的初始条件。它与Load Case有本质区别——Load Case之间没有内在关系,只是结果的重新组合。
典型应用是施工阶段分析:第一步施加自重,第二步施加楼面荷载,第三步施加风荷载。每个荷载步独立写入文件,最后统一求解。
/solu ! 荷载步1:自重 acel,0,9.8,0 lswrite,1 ! 荷载步2:楼面荷载 sfa,all,,pres,5e3 lswrite,2 ! 荷载步3:风荷载 sfbeam,all,1,pres,1200 lswrite,3 ! 按顺序求解1到3 lssolve,1,3lswrite把当前荷载状态写入荷载步文件,lssolve按序号批量求解。注意写入荷载步后,当前模型的边界条件并不会自动清除,写下一个荷载步前要手动删除不需要的荷载。
重启动分析(Restart)允许沿着已有计算结果继续计算,适合多阶段分析和追加荷载。重启动时边界条件会继承,但单元生死等非荷载条件往往不能继承,部分参数也不能保留。遇到求解中断恢复计算,这个功能很有用,前提是求解前开启重启动文件输出。
单元生死是土木工程中模拟施工过程的核心工具。杀死单元时单元刚度趋于零,单元内力释放;激活单元时单元刚度恢复,单元应力和应变为零。
/solu ! 杀死单元5,模拟该部分在施工阶段不参与受力 esel,s,elem,,5 ekill,5 allsel solve ! 后续荷载步中激活单元5 esel,s,elem,,5 ealive,5 allsel solveekill不删除单元,只是把刚度乘以一个极小系数,ealive恢复单元正常刚度。用于模拟混凝土分层施工时,注意被杀死单元的节点自由度仍然存在,可能产生额外的约束效应,需要在建模阶段就预留处理方案。
4.4 非线性求解的收敛控制
非线性求解的收敛控制开关集中在求解控制里。默认的收敛标准对许多工程分析是合理的,但接触分析和材料软化问题经常需要手动调整。
非线性控制的重点是:收敛准则选择(力、位移、力矩、转角)、收敛容差设置、荷载折半限制、子步数调整。ANSYS默认用力的L2范数作为收敛判据,容差0.5%。
当计算出现大量重分增量步但仍不能收敛时,首先检查是否为边界条件缺失或网格畸变,再考虑调整收敛容差。只是单纯放宽容差,看似算完了,结果不可信。荷载折半限制控制每个子步最大分割次数,超过设定值后程序会终止分析,避免无限循环。
弧长法(Arc-Length)用于追踪荷载-位移曲线的下降段,比如混凝土开裂后的软化段和屈曲后的后屈曲路径。弧长法不是默认开启的,在SOLCONTROL中激活。使用弧长法时,荷载不再作为固定值,而是作为附加未知量逐步追踪,常见的机构问题不适合使用。
求解过程中的图形输出主要是收敛曲线和误差范数。观察收敛曲线的趋势比单纯看是否收敛更有意义——如果曲线在收敛容差附近反复波动,说明结构可能有突变,需要回头检查模型。
5. 后处理与结果验证:从云图到路径映射
5.1 四类结果输出方式
通用后处理模块对应Post1,时程后处理模块对应Post26。Post1看某一时刻的完整结果,Post26看某个节点或单元的时程曲线。两者的使用场景不同:静力分析几乎只用Post1,瞬态分析两个模块都需要。
结果的输出方式有四类:文字输出(Result List)、云图输出(Result Contour)、矢量输出(Result Vector)、路径输出(Result Mapping)。文字输出适合核对具体数值和最大最小值,云图适合观察结果的空间分布,矢量输出适合看主应力方向和流动趋势,路径输出适合提取沿线分布结果。
/post1 ! 云图输出:Von Mises应力 plnsol,s,eqv ! 文字输出:最大最小应力 prnsol,s,compplnsol绘制节点云图,prnsol输出节点解列表。云图显示前要先确认结果坐标系是否正确——默认结果坐标系是笛卡尔坐标系,对环形结构看周向应力时,需要把结果坐标系切换到柱坐标系。
线性单元(梁、杆、弹簧)的云图输出需要先定义Element Table,再在Contour Plot中设定Line Element Result。直接绘制云图,系统会默认忽略单元内部点应力。
5.2 用路径映射核对关键截面结果
路径输出是把结果沿用户定义的一条路径映射出来,用于提取梁截面上的应力分布、接触面上的压力分布,或者某条关键线上的位移变化。路径定义的步骤是:定义路径、定义路径点、映射结果、绘制结果。
/post1 ! 定义路径p1,2个点 path,p1,2 ppath,1,,0,0,0 ppath,2,,6,0,0 ! 将X向位移映射到路径上 pdef,ux_s,u,x,avg ! 绘制路径结果 plpagm,ux_spath创建路径,ppath定义路径经过的点,pdef把结果映射到路径上,plpagm绘制路径结果曲线。路径输出的价值在于:云图上只能看到最大值,路径曲线能看出结果沿空间的变化规律。做梁设计时,沿梁长提取弯矩分布;做楼板分析时,沿板跨提取挠度曲线,都比直接看云图信息量大。
后处理阶段还应该做结果验证。一个简单有效的做法是:用两种不同的网格密度分别计算,对比关键位置的应力结果。如果两次计算差异小于5%,说明网格密度已经收敛;如果差异较大,需要继续加密网格或怀疑边界条件设置有问题。这个方法比直接看云图靠谱得多。
本文还有配套的精品资源,点击获取