https://fscae.com/6896/
过年要说比较火热的事件,那便是DeepSeek的各种出圈,犹如2023年关于Chatgpt的话题一般,微信指数如下所示,出现井喷式的增长。
按例,我们来测试下DeepSeek在关于ANSYS方面的使用情况,这次水哥出具了6个方面的问题,依然从以下几个方面进行测试:
1、对单元的理解
2、对命令的运用
3、案例的测试
4、APDL代码解释
5、APDL代码纠错
前面已经测试过文心一言与Chatgpt,各位有兴趣的可以去看下如下推文,当然,随着时间的推移,大语言各种爬网站,“学习”到的知识更加完善,现在可能表现更加亮眼。
文心一言与ANSYS
试试ChatGpt与ANSYS
测试一:对单元的理解
问:在ANSYS使用过程中,如何定义MPC184单元的刚性梁行为?请用APDL代码表示
答:
在ANSYS中,MPC184单元可以用于模拟刚性梁行为。要定义MPC184单元的刚性梁行为,可以使用APDL代码进行设置。以下是一个示例代码,展示如何定义MPC184单元的刚性梁行为:

! 选择单元类型
ET, 1, MPC184  ! 定义单元类型为MPC184
KEYOPT, 1, 1, 1  ! 设置KEYOPT(1)=1,表示刚性梁行为
! 定义材料属性(如果需要)
MP, EX, 1, 2.1e11  ! 定义弹性模量
MP, PRXY, 1, 0.3  ! 定义泊松比
! 定义节点
N, 1, 0, 0, 0  ! 定义节点1
N, 2, 1, 0, 0  ! 定义节点2
! 定义单元
TYPE, 1  ! 设置单元类型为1(MPC184)
REAL, 1  ! 设置实常数(如果需要)
MAT, 1   ! 设置材料属性
E, 1, 2  ! 定义单元,连接节点1和节点2
! 设置边界条件(如果需要)
D, 1, ALL, 0  ! 固定节点1的所有自由度
F, 2, FX, 1000  ! 在节点2的X方向施加1000N的力
! 求解
/SOLU
SOLVE
FINISH
! 后处理
/POST1
PLDISP, 1  ! 显示变形图
PRNSOL, U, COMP  ! 打印节点位移
FINISH
代码说明:
ET, 1, MPC184:定义单元类型为MPC184。
KEYOPT, 1, 1, 1:设置MPC184单元的KEYOPT(1)=1,表示刚性梁行为。
MP, EX, 1, 2.1e11 和 MP, PRXY, 1, 0.3:定义材料的弹性模量和泊松比(如果需要)。
N, 1, 0, 0, 0 和 N, 2, 1, 0, 0:定义两个节点。
E, 1, 2:定义单元,连接节点1和节点2。
D, 1, ALL, 0:固定节点1的所有自由度。
F, 2, FX, 1000:在节点2的X方向施加1000N的力。
SOLVE:求解模型。
PLDISP, 1 和 PRNSOL, U, COMP:后处理,显示变形图和打印节点位移。

通过以上代码,你可以定义MPC184单元的刚性梁行为,并进行相应的分析和后处理。
以上回答比较完美,用一个案例演示了刚性梁的基本设置,有点瑕疵就是没有在最前面加一个前处理/prep7,手动加上后,以上代码能在ANSYS中完美运行!
测试二:对命令的运用
问:我现在在学习ANSYS APDL,需要用到get命令获取到某次模态分析完毕后的结构前10阶频率,请帮我写一段APDL代码。
答:
在ANSYS APDL中,你可以使用
GET命令来获取模态分析后的结构频率。以下是一段示例代码,展示如何获取前10阶模态频率并将其存储在数组中

! 进行模态分析
/SOLU
ANTYPE, MODAL  ! 设置分析类型为模态分析
MODOPT, LANB, 10  ! 使用Block Lanczos方法,提取前10阶模态
MXPAND, 10  ! 扩展前10阶模态
SOLVE  ! 求解模态分析
FINISH
! 进入后处理
/POST1
SET, LIST  ! 列出所有模态结果
! 定义数组存储频率
*DIM, FREQ, ARRAY, 10  ! 定义一个大小为10的数组FREQ
! 使用*GET命令获取前10阶频率
*DO, I, 1, 10
    *GET, FREQ(I), MODE, I, FREQ  ! 获取第I阶模态的频率并存入FREQ数组
*ENDDO
! 打印频率
*VWRITE, 'Mode', 'Frequency (Hz)'
(2A15)
*VWRITE, SEQ(1,10), FREQ(1)
(2F15.5)
FINISH

上述命令很不错,能成功获取到对应数据,美中不足的便是打印输出有点小问题,但无伤大雅,如下截图是完全复制上面命令获取到的数据!
图片

测试三:案例的测试
问:请用APDL给出一个使用Solid185单元的具体案例。
答:
以下是一个使用 Solid185 单元的完整 APDL 案例。该案例模拟一个简单的三维矩形块,在底部固定约束,顶部施加均匀压力,并进行线性静力分析。

! 清除当前数据库
/CLEAR
! 进入前处理模块
/PREP7
! 定义单元类型为 Solid185
ET, 1, SOLID185  ! SOLID185 是 8 节点三维实体单元
! 定义材料属性
MP, EX, 1, 2.1e11  ! 弹性模量 (钢材料, 单位: Pa)
MP, PRXY, 1, 0.3   ! 泊松比
! 创建几何模型
BLOCK, 0, 0.1, 0, 0.05, 0, 0.02  ! 创建一个长方体,尺寸为 0.1m x 0.05m x 0.02m
! 划分网格
ESIZE, 0.01  ! 设置全局单元尺寸为 0.01m
VMESH, ALL   ! 对所有体进行网格划分
! 施加边界条件
NSEL, S, LOC, Z, 0  ! 选择 Z=0 的所有节点
D, ALL, ALL, 0      ! 固定 Z=0 的所有节点 (约束所有自由度)
NSEL, S, LOC, Z, 0.02  ! 选择 Z=0.02 的所有节点
SF, ALL, PRES, 1e6     ! 在 Z=0.02 的面上施加 1MPa 的压力
NSEL, ALL  ! 选择所有节点
! 进入求解模块
/SOLU
ANTYPE, STATIC  ! 设置分析类型为静力分析
SOLVE           ! 求解
FINISH
! 进入后处理模块
/POST1
! 查看结果
PLNSOL, U, SUM  ! 绘制总位移云图
PLNSOL, S, EQV  ! 绘制等效应力云图
! 保存结果文件
SAVE, 'Solid185_Example', 'db'  ! 保存数据库文件
! 退出
FINISH

啥都不说了,能完美运行!
图片

测试四:代码的解释
问:我有一段APDL代码,请帮我梳理下,这段代码的主要作用是什么。
源代码:

/post26
*get,node_num,node,0,count
*dim,UXmax,array,node_num
*dim,UXmax_time,array,node_num
*dim,UXmin,array,node_num
*dim,UXmin_time,array,node_num
*do,i,1,node_num
nsol,2,i,u,x
*get,UXmax(i),vari,2,extrem,Vmax
*get,Uxmax_time(i),Vari,2,extrem,Tmax
*get,UXmin(i),vari,2,extrem,Vmin
*get,Uxmin_time(i),Vari,2,extrem,Tmin
*enddo
*if,abs(Uxmax(1)),le,abs(Uxmin(1)),then
Total_max=Uxmax(1)
Total_max_time=Uxmax_time(1)
*else
Total_max=Uxmin(1)
Total_max_time=Uxmin_time(1)
*endif
*do,i,2,node_num
*if,abs(total_max),le,abs(uxmax(i)),then
total_max=uxmax(i)
Total_max_time=Uxmax_time(i)
*endif
*if,abs(total_max),le,abs(uxmin(i)),then
total_max=uxmin(i)
Total_max_time=Uxmin_time(i)
*endif
*enddo
*status,total_max
*status,total_max_time

这段 APDL 代码的主要作用是 在瞬态分析或时间历程后处理中,提取所有节点在 X 方向上的位移极值(最大值和最小值)及其对应的时间点,并找出全局最大位移值及其发生的时间。
以下是代码的详细梳理和解释:

…….

解释太长,水哥这里就不在详细截图了….不过他给出的答案是非常正确的!

测试五:APDL代码纠错

问:我有一段APDL代码,请帮我核实有无错处并进行修正。

源代码:

Mp,ex,1,2.1e5
Mp,dens,1,7850e-12
MP,alpx,1,1.2e-5
MP,prxy,1,0.3
TB,BISO,1,1,2,
TBTEMP,0
TBDATA,345,0,,,,
!拉索
MP,2,ex,1.9e5
MP,dens,2,7850e-12
MP,alpx,2,1.2e-5
MP,prxy,2,0.3
TB,BISO,2,1,2,
TBTEMP,0
TBDATA,1330,0,,,,
!================
!单元定义
Et,1,beam188
Et,2,link199
Et,3,link10
Keyopt,3,4,0    !仅受拉

你的 APDL 代码中存在一些问题和需要改进的地方。以下是代码的详细分析和修正建议:
材料属性定义问题:
材料 1 和材料 2 的弹性模量 (EX) 值过大(2.1e5 和 1.9e5),通常弹性模量的单位是 Pa,而钢材的弹性模量约为 2.1e11 Pa。你的值可能缺少量级。
密度 (DENS) 的单位是 kg/m³,而你的值 7850e-12 过小,钢材的密度通常为 7850 kg/m³。
热膨胀系数 (ALPX) 的单位是 1/°C,你的值 1.2e-5 是正确的。
双线性等向强化模型 (BISO) 定义问题:
TBDATA 命令的参数不正确。BISO 模型需要两个参数:屈服应力和切线模量,但你的代码中参数数量不匹配。
TBDATA 的起始位置参数(如 345 和 1330)不正确,应该从 1 开始。
单元类型定义问题:
LINK199 单元不存在,可能是笔误,应该是 LINK180。
LINK10 单元的定义中,KEYOPT,3,4,0 是正确的,表示仅受拉。
代码格式问题:
注释符号 ! 后面缺少空格,建议统一格式。
代码中缺少必要的注释,建议补充说明。

评论:
1、第一个没能识别单位系统问题;
2、第二个完全正确;
3、第三个第一条正确,第二条错误,应该是Keyopt,3,3,0
4、第四个无伤大雅

上面的错误有四处:1、tbdata;2、拉索材料定义ex;3、单元定义;4、单元关键项设置,一共识别出了两处错误!

总结:最近爆火的DeepSeeK在ANSYS APDL这个小众领域里面表现水哥个人觉得还是可圈可点的,可作为大家学习APDL的一大利器,推荐大家使用,最关键的是DeepSeek为国内大语言模型,且开源支持本地部署!

作者:秦晓川  创建时间:2025-02-25 12:59
最后编辑:秦晓川  更新时间:2025-03-06 09:52