ANSYS APDL学习(12):如何将ansys求解后的数据(点位移/应力/应变等)导出到txt文件

您所在的位置:网站首页 位移大小方向怎么看 ANSYS APDL学习(12):如何将ansys求解后的数据(点位移/应力/应变等)导出到txt文件

ANSYS APDL学习(12):如何将ansys求解后的数据(点位移/应力/应变等)导出到txt文件

2024-01-28 08:55| 来源: 网络整理| 查看: 265

如何将ansys求解后的数据导出到txt文件 1 代码和结果1.1 代码块1.2 生成文件1.3 txt文件后续处理1.4 解释 2 *GET 命令2.1 介绍2.1.1 命令解释2.1.2 注意 2.2 *GET 输出坐标帮助文档2.2.1 *GET 输出点位移2.2.2 示例 2.3 报错的解释2.4 想法2.5 总结 3 生成文件结果3.1 Kp位移输出结果3.2 应变输出结果3.3 Kp应力输出结果 4 本文末尾5 参考资料交流群信息

1 代码和结果 1.1 代码块

       开头先放上我自己整理的代码

!======================================================== ! 目的:将关键点KP在受力后的位移,应变和,KP受力后的应力输出到TXT文件 ! 参数: ! KPSTRAIN数组-存储KP受载后的坐标, ! 应该是KP数量行7列,第一列是编号,X,Y,Z,XY,YZ,XZ ! KPDIS数组-存储KP受载后的位移, ! 应该是KP数量行4列,第一列是编号,xyz三个方向 ! KPSTRESS数组-存储KP受载后的应力 ! 应该是KP数量行4列,第一列是编号,xyz三个方向 ! 输出: ! EX72ANSYSKPSTRAIN.TXT - 这是用来保存ANSYS 存储KP受载后的坐标,下次可以直接加载 ! EX72ANSYSKPDIS.TXT-这是用来ANSYS保存位移的文件,下次ANSYS可以直接加载 ! EX72ANSYSKPSTRESS.TXT-这是用来ANSYS保存应力的文件,ANSYS可以直接加载 ! EX72KPSTRAIN.TXT - 这是ANSYS将存储KP受载后的坐标保存到TXT文件,有利于matlab读取的 ! EX72KPDIS.TXT - 这是ANSYS将kp位移数组保存到TXT文件,有利于matlab读取的 ! EX72KPSTRESS.TXT - 这是ANSYS将KP应力保存到TXT文件,有利于matlab读取的 ! 注意: ! 超过kp数量的node应力会报错 Requested data is not stored for node 6200. line=*Get, NODESTR,NODE,J,S,X无效 !========================================================= !========= 定义一个参数获取KP数量 /PREP7 *DIM, KPNUM, ARRAY, 1, 1 ! 定义一个参数专门存KP数量 *GET, KPNUM(1,1), KP, 0, NUM, MAXD ! 存储KP的数量 FINISH /POST1 ! ========= 定义应变数组并赋值,然后存储为ANSYS读取文件 *DIM, KPSTRAIN, ARRAY,KPNUM(1,1),7 ! 定义位移数组, *DO, I, 1, KPNUM(1,1) *SET, KPSTRAIN(I,1,1),I ! 点编号 *GET, KPSTRAIN(I,2), NODE, I, EPTO, X *GET, KPSTRAIN(I,3), NODE, I, EPTO, Y *GET, KPSTRAIN(I,4), NODE, I, EPTO, Z *GET, KPSTRAIN(I,5), NODE, I, EPTO, XY *GET, KPSTRAIN(I,6), NODE, I, EPTO, YZ *GET, KPSTRAIN(I,7), NODE, I, EPTO, XZ *ENDDO PARSAV, ALL, 'EX72ANSYSKPSTRAIN', 'TXT', ' ' ! 保存为给ANSYS读取的文件 ! =========定义位移数组并赋值,然后存储为ANSYS读取文件 *DIM, KPDIS, ARRAY,KPNUM(1,1),4 ! 定义位移数组,292472是list node看出的数量 *DO, I, 1, KPNUM(1,1) *SET, KPDIS(I,1,1),I ! 点编号 *GET, KPDIS(I,2), NODE, I, U, X *GET, KPDIS(I,3), NODE, I, U, Y *GET, KPDIS(I,4), NODE, I, U, Z *ENDDO PARSAV, ALL, 'EX72ANSYSKPDIS', 'TXT', ' ' ! 保存为给ANSYS读取的文件 ! =========定义应力数组并赋值,然后存储为ANSYS读取文件 *DIM, KPSTRESS, ARRAY, KPNUM(1,1),4 ! 定义应力 *DO, J, 1, KPNUM(1,1) *SET, KPSTRESS(J,1,1),J ! 点编号 *GET, KPSTRESS(J,2), NODE, J, S, X *GET, KPSTRESS(J,3), NODE, J, S, Y *GET, KPSTRESS(J,4), NODE, J, S, Z *ENDDO PARSAV, ALL, 'EX72ANSYSKPSTRESS', 'TXT', ' ' ! 保存为给ANSYS读取的文件 FINISH /REPLO !????是否要加这一行 ! =========将数组保存至TXT文件当中 *CREATE,ansuitmp *CFOPEN, 'EX72KPSTRAIN', 'TXT', ' ' ! ( 在(7F12.6)之间不可以加注释的) *VWRITE, KPSTRAIN(1,1), KPSTRAIN(1,2), KPSTRAIN(1,3),KPSTRAIN(1,4), KPSTRAIN(1,5), KPSTRAIN(1,6),KPSTRAIN(1,7),,,,,, (7F12.6) *CFCLOS *END /INPUT, ansuitmp *CREATE,ansuitmp *CFOPEN, 'EX72KPDIS', 'TXT', ' ' ! ( 在(4F12.6)之间不可以加注释的) *VWRITE, KPDIS(1,1), KPDIS(1,2), KPDIS(1,3), KPDIS(1,4),,,,,, (4F12.6) *CFCLOS *END /INPUT, ansuitmp *CREATE,ansuitmp *CFOPEN, 'EX72KPSTRESS', 'TXT', ' ' ! ( 在(4F12.6)之间不可以加注释的) *VWRITE, KPSTRESS(1,1), KPSTRESS(1,2), KPSTRESS(1,3),KPSTRESS(1,4),,,,,, (4F12.6) *CFCLOS *END /INPUT, ansuitmp FINISH 1.2 生成文件

在这里插入图片描述

1.3 txt文件后续处理

       可以用 MATLAB 从 TXT 文件中读取,读取代码可以参考 数据处理技巧(5):MATLAB 读取txt中的数据

1.4 解释 读取格式,比如**(3F12.4)**要根据读入的TXT内容进行修改,比如小数点位数为5,那么4就要更改为5;比如每次读取14位,那么12就要更改位14;如果每一行有4组数据,那么要3要更改位4导出格式,比如**(3F12.4)**,表明 ANSYS 每一行一共输出三次数据,每次一共12个字符,其中4个是小数点位。 2 *GET 命令 2.1 介绍

       目的:将ANSYS的数据复制给数组,以便后续数组导出操作        格式:GET, Par, Entity, ENTNUM, Item1, IT1NUM, Item2, IT2NUM        应用:需要用get*命令来将每一个关键点计算后的位移和应力赋值给数组

2.1.1 命令解释

       Par:               被赋值的数组名称和行列,比如result(1,1)        Entity:               实体的关键词,有效关键词比如:NODE, ELEM, KP, LINE, AREA, VOLU , 等        ENTUM:               实体的数字或者标签,如果是0或者空格表示代表所有实体。        Item1:               特定项目的名称,具体需要查表        IT1NUM:               特定项目的数量,具体需要查表        Item2, IT2NUM:               第二套特定项目的名称和数量,具体查表。

2.1.2 注意

       *GET 返回一个值赋值给特性项目参数、一个参数或者用户自定的参数。项目是由关键字,标签和数量来确定的。用法可以参考 *SET 命令的介绍。        举例: *GET (p. 782), A, ELEM, 5, CENT, X 返回第五个网格(element 5)的中心x坐标的值,赋值给参数A        有相似函数 *VGET ,可以参考        大多数项在计算后存储在数据库中,之后随时可用。项目根据它们通常首先定义或计算的位置分组。预处理数据常常不能反映剖面数据的计算值。不要使用 GET (p. 782) 从使用计算截面数据的单元(如梁或壳)获得数据。        可以从以下几个方面找表格,发现GET在每个处理器中都是有用的。 不同求解器

2.2 *GET 输出坐标帮助文档

       举例,以下表格可以获得,关键点 KP 在预处理时候的坐标 (x,y,z) 等 在这里插入图片描述        在求解的项目中,没有关键点 kp 的选项,同样在 postprocessing 中也没有 在这里插入图片描述

2.2.1 *GET 输出点位移

       这个表解释了如何输出点位移 在这里插入图片描述 在这里插入图片描述

2.2.2 示例

       举例,将点位移赋值给数组的代码示例:

*GET, NODEDIS(1,1), NODE, 1, U, X ! 尝试输出第一个关键点在求解之后的位移 *GET, NODEDIS(1,2), NODE, 1, U, Y *GET, NODEDIS(1,3), NODE, 1, U, Z *GET, NODESTR(1,1), NODE, 1, S, X ! 尝试输出第一个关键点在求解之后的应力 *GET, NODESTR(1,2), NODE, 1, S, Y *GET, NODESTR(1,3), NODE, 1, S, Z

       如何获得 NODE 在划分好网格之后的数量的代码示例:

NODE 数量获取的时候,是在/PREP7求解器中,所以要写成以下模样: /PREP7 *DIM, NODENUM, ARRAY, 1,1 ! 定义一个参数专门存储NODE数量 *GET, NODENUM(1,1), NODE, 0, NUM, MAXD ! MAXD表示已定义的NODE的数量的最大值 2.3 报错的解释

       有时候在将数据赋值给数组的时候,会收到警告如下: 在这里插入图片描述

2.4 想法

       Keypoint是最早输入 ANSYS 建模的点,node 是网格划分后的所有点(当然包括 keypoint )。所以假如 keypoint 点有 6217 个,那么 node 点中前 6217 个的点坐标和 keypoint 完全一样,说明 node 在 6217 个点之后的点是另外插值得到的,只能在list页面看,但是没有保存下来,所以命令流无法读取。        ANSYS存储应力应变之类的数据的时候,实际上只存储了 KEYPOINT的应力应变,其余的 node 数据都是通过 KEYPOINT 数据进行插值的。所以如果要查看应力应变数据,在 GUI 中通过 General Post -> Plot Result -> contour Plot -> Nodal Solu 选择一个,保证图像已经绘制出来(一定要先绘制)。然后 LIST -> Results -> Nodal Solution -> Nodal Solution -> Total mechanical stran 应变 -> von Mises total mechanical strain 这样就可以看到下图的 EPTO1/2/3/INT/EQV , 可以发现,在 list 页面中每一个 node 都有对应的数据,但是通过命令流给参数赋值的时候不是所有NODE都有应力应变数据的。 在这里插入图片描述        相关想法已经在 ANSYS APDL学习(10):解释命令流报错requested data is not stored for node ___ .的原因与应对办法介绍了,这里就不再重复。 在这里插入图片描述

2.5 总结

       所以,要导出求解之后的数据,一共有两个方法:               ①只导出ANSYS保存的结点数据,也就是kp关键点的个数,比如关键点有6217个,那么就导出node前6217个点的应力和应变,这样不会报错。               ② 如果需要全部结点node的数据,不能用命令流,否则会报错:requested data is not stored for node ___ . 所以要在GUI中手动先绘制图像 General Post -> Plot Result -> contour Plot -> Nodal Solu 选择一个,保证图像已经绘制出来**(一定要先绘制)。然后 LIST -> Results -> Nodal Solution -> Nodal Solution -> Total mechanical stran 应变 -> von Mises total mechanical strain。可以通过list应力、应变的页面,点击 FILE -> SAVE AS 然后直接将这个页面保存下来,可以用txt**方式打开。

       目前选择第一种,只导出KP的应力应变数据

3 生成文件结果 3.1 Kp位移输出结果

在这里插入图片描述

3.2 应变输出结果

在这里插入图片描述

3.3 Kp应力输出结果

       可能哪里出了问题?可能是**的地方,没有应力,所以没给它赋值的原因 在这里插入图片描述

4 本文末尾

           本来不想把这些内容放上来,一是这是我自己根据 Mechanical APDL Product 16.0 自己尝试出来的,有的网上没有,有的写的不全。二是这是我的部分笔记和记录,没有那么大的兴趣帮助别人毕业。        但是还是有很多人问如何将ANSYS数据导出来,其实这不应该是我们日常工作中的问题,但是需要不懂的人花费大量的时间去查找。所以还是决定放出来。毕竟也就是一些写在帮助文件中,有时候会被忽略的内容。 同时,只有交流才能知道我在哪里有问题,尤其是后续使用的时候,发现导出的单元中点应变和点求解中的点应变的值不同,甚至同一个点在同一个单元的应变值都有两行不同的应变数据。这个我也还没有解决,只能等网友的帮忙了😂

5 参考资料

       《ANSYS Mechanical APDL Basic Analysis Guide》:有很多很实用的例子,推荐查阅        《Ansys Mechanical APDL Command Reference》:如果专门搞ANSYS APDL的,强烈推荐下载,很好用。        知乎:Ansys APDL 读取所有节点坐标及其应变值并写入文件:里面的命令流有涉及到如何给导出的txt中增加每一列的标题和补充信息,如果要导出的文件非常多,标题对信息的整理非常有帮助。 在这里插入图片描述

交流群信息

群名称: ANSYS学习交流群 群 号: 522482340



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3