许可优化
许可优化
产品
产品
解决方案
解决方案
服务支持
服务支持
关于
关于
软件库
当前位置:服务支持 >  软件文章 >  ANSYS数据读写总是报错?VREAD和VWRITE一次搞定

ANSYS数据读写总是报错?VREAD和VWRITE一次搞定

阅读数 1836
点赞 0
article_banner

ANSYS里读写外部数据这事,看着简单,踩坑的人一堆。VREAD读不进来、VWRITE写不出去、Fortran格式字符串搞不明白,三个问题能卡你半天。2026年了,ANSYS的APDL命令没怎么变,但很多人还在用十年前的老办法硬磕。今天把数据读写的宏命令、完整流程、VWRITE的限制、Fortran字段描述符全部拆开,代码直接复制就能跑。

ANSYS数据读写的GUI操作:4步建宏跑通

不想写命令流?GUI也能操作,但底层逻辑是一样的。

第一步,创建宏。 在ANSYS命令窗口输入:

*CREATE,data_read

这条命令新建一个叫data_read的宏,后面的操作都写在这个宏里面。

第二步,定义数组参数。 读数据之前得先告诉ANSYS你要用多大的数组来装。

*DIM,data_file,ARRAY,3,3,1, , ,

这里定义了一个3×3×1的三维数组。3行3列1层,总共9个位置装数据。数组大小得跟你的数据文件匹配,定义小了数据截断,定义大了后面多出来的位置全是0。我之前处理一个6×6的应力矩阵,数组定义成3×3,结果后半段数据全丢了,调了一上午才发现是数组维度不够。

第三步,读取数组参数。 核心命令来了:

*VREAD,data_file,'userarrayparameters','txt',' ',IJK,3,3,1, ,
(3f2.0)

*VREAD从外部txt文件里读数据,往data_file数组里填。文件名是userarrayparameters.txt,格式是txt,IJK表示按行优先顺序填充。最后的(3f2.0)是Fortran格式描述符,意思是每行读3个浮点数,每个数占2位宽度、0位小数。

第四步,验证数据。 读完之后用*STATUS命令把数组内容打印出来:

*STATUS,data_file

命令窗口会把data_file里的9个值全部列出来,跟你的txt文件对比一下,对得上就说明读成功了。

ANSYS数据读写的完整命令流:复制就能跑

GUI操作适合新手理解逻辑,但真正干活还是得用命令流。下面这套完整代码,读和写都有,直接复制到ANSYS命令窗口或者存成.mac文件跑。

apdl!数据的读取
*CREATE,data_read
*DIM,data_file,ARRAY,3,3,1, , ,
*VREAD,data_file,'userarrayparameters','txt',' ',IJK,3,3,1, ,
(3f2.0)
*END
*USE,data_read
*STATUS,data_file

!数据的写入
*CREATE,data_write
*CFOPEN,data_file_write,txt
*VWRITE,data_file(1,1),data_file(1,2),data_file(1,3)
(3f6.0)
*CFCLOS
*END
*USE,data_write

读数据的部分跟GUI操作一样,不重复讲了。重点说写数据。

CFOPEN打开一个txt文件,文件名叫data_file_write.txt。VWRITE把数组里的值按指定格式写进去。(3f6.0)表示每个数占6位宽度、0位小数,跟读的时候(3f2.0)不一样。写的时候精度可以比读的时候高,不影响结果。最后*CFCLOS关闭文件,不关的话文件可能被锁住,下次打不开。

有个坑必须说清楚:VWRITE命令不能在ANSYS命令窗口直接输入,必须写在宏文件里运行。我试过直接在命令窗口敲VWRITE,ANSYS直接报语法错误。2026年的版本依然不支持命令窗口直输,别浪费时间试了。

Fortran字段描述符:写对格式数据才不乱

VREAD和VWRITE的格式字符串用的是Fortran描述符,搞不明白这个,数据读出来全是乱码。我把常用的描述符列出来,够你覆盖90%的场景。


描述符含义举例
Fw.d浮点数,w位宽,d位小数F8.3表示占8位、3位小数
Iw.m整数,w位宽,最少m位I5.3表示占5位、不足3位补0
Ew.d指数浮点,w位宽,d位小数E10.2表示1.23E+05这种格式
Gw.d通用格式,自动选F或EG10.4最常用,系统自己判断
Aw字符串,w位宽A20表示20个字符的字符串
nX右跳n位3X表示跳过3个字符位置
/换行写多行数据时每行末尾加/
kP缩放因子,k控制数量级P表示除以1000,kp=3

几个容易搞混的:BN和BZ都是处理空位的,BN表示空位就是空的,BZ表示空位当0处理。输入数据时才用得上,输出时不需要。EN是工程计数法,ES是科学计数法,指数部分固定3位。日常用Gw.d最省心,让系统自己决定用F还是E。

Fortran 90新增了3个二进制相关的描述符,用得少但知道有这回事:Bw输出二进制,Ow输出八进制,Zw输出十六进制。比如Z8表示把整数转成十六进制、占8位输出。做地址偏移计算的时候偶尔能用上。

还有个细节:TLn和TRn是相对移动,Tn是绝对定位到第n列。写多列数据的时候,用TRn比手动算位置方便得多。比如第一列写完,TR10跳到第10列写第二列,不用自己数空格。


ANSYS数据读写这事,核心就两个命令:VREAD往里读,VWRITE往外写。数组维度跟数据文件对齐,格式描述符跟数据精度对齐,这两点做到了就不会出错。上面的命令流和描述符表我在ANSYS 2026 R1上全跑过,复制进去直接能用。别光收藏,打开ANSYS建个txt文件试一遍,5分钟的事,跑通了后面处理实验数据能省几个小时。

武汉格发信息技术有限公司,格发许可优化管理系统可以帮你评估贵公司软件许可的真实需求,再低成本合规性管理软件许可,帮助贵司提高软件投资回报率,为软件采购、使用提供科学决策依据。支持的软件有: CAD,CAE,PDM,PLM,Catia,Ugnx, AutoCAD, Pro/E, Solidworks 等。

相关文章
技术文档
QR Code
微信扫一扫,欢迎咨询~
customer

online

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 board-phone 155-2731-8020
close1
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

姓名不为空

姓名不为空
手机不正确

手机不正确

手机不正确
公司不为空

公司不为空

公司不为空