声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 10002|回复: 10

[综合讨论] 对*VREAD用法的总结,请高手指教

[复制链接]
发表于 2007-7-29 15:45 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
经过实验,对*vread用法总结如下:
*VREAD, ParR, Fname, Ext, --, Label, n1, n2, n3, NSKIP
ParR是你要将外部数据写入的数组变量名,必须已经定义(可用*DIM),且指出开始写入的位置,即下标(i,j)
Fname是你存有数据的外部文件,Ext是扩展名,
Label可为IJK, IKJ, JIK, JKI, KIJ, KJI, or blank (IJK),表示你对ParR写入的顺序,下标变化依次变慢,如IJK表示先写列再写行(列下标J变化最快),JIK表示先写行再写列
n1, n2, n3表示按上面的顺序要写入的数据个数,如JIK,5,6表示对ParR按行写入,共写5列6行
NSKIP:Number of lines at the beginning of the file being read that will be skipped during the reading. Default = 0.
后面要紧跟带括号的指定格式,描述对数据文件每行的读法,如(F3.0,F11.0)每行读两个数,分别占3,11个字符宽度
例《APDL参数化有限元分析技术及其应用实例》,P40
如数据文件data.txt内容如下:
1.5    7.8  12.3
15.6  -45.6  42.5
执行命令流
*DIM,AA,,2,3
*VREAD,AA(1,1),DATA,TXT,,JIK,3,2
(3F6.1)
*STATUS,AA
对不同输入的结果分析如下:
  
nF6.1
  
  
对已有文件的读取方式(每行)F前的数字表示每行读几个值
  
  
f6.1
  
JIK,3,2
  
  
1.5
  
  
15.6
  
  
0
  
  
每行读了1个数据按行写入写了32
  
Warningend-of-file in data read,已到读到的数据末尾
  
  
0
  
  
0
  
  
0
  
  
2f6.1
  
JIK,3,2
  
  
1.5
  
  
7.8
  
  
15.6
  
  
每行读了2个数据,按行写入,写了32
  
Warningend-of-file in data read,未写的默认0
  
  
-45.6
  
  
0
  
  
0
  
  
3f6.1
  
JIK,3,2
  
  
1.5
  
  
7.8
  
  
12.3
  
  
原始数据,每行读了3个数据
  
  
15.6
  
  
-45.6
  
  
42.5
  
  
IJK,n1,n2
  
  
对目标数组写入方式 IJK表示下标变化的顺序,不写默认按列写入
  
IJKAA要写入的行数,列数,按列将单个值写入,写满要写的行列为止
  
JIKAA要写入的列数,行数,按行将单个值写入FORTRAN默认先写列)
  
  
IJK,2,3
  
3f6.1
  
  
1.5
  
  
12.3
  
  
-45.6
  
  
每行全读,按列写
  
写了23
  
  
7.8
  
  
15.6
  
  
42.5
  
  
IJK,1,2
  
3f6.1
  
  
1.5
  
  
7.8
  
  
0
  
  
每行全读,按列写
  
写了12
  
  
0
  
  
0
  
  
0
  
  
JIK,2,1
  
3F6.1
  
  
1.5
  
  
7.8
  
  
0
  
  
每行全读,按行写
  
写了21
  
  
0
  
  
0
  
  
0
  
  
JIK,3,1
  
3F6.1
  
  
1.5
  
  
7.8
  
  
12.3
  
  
每行全读,按行写
  
写了31
  
  
0
  
  
0
  
  
0
  
  
JIK,3,1
  
2F6.1
  
  
1.5
  
  
7.8
  
  
15.6
  
  
每行读2个值,按行写
  
写了31
  
  
0
  
  
0
  
  
0
  
  
JIK,3,1
  
F6.1
  
  
1.5
  
  
15.6
  
  
0
  
  
每行读1个,读到2个,按行写,13列,要写3
  
Warningend-of-file in data read
  
  
0
  
  
0
  
  
0
  
  
IJK,2,2
  
2F6.1
  
  
1.5
  
  
15.6
  
  
0
  
  
每行读2个值,按列写
  
写了22
  
  
7.8
  
  
-45.6
  
  
0
  
  
IJK,2,5
  
  
  
  
  
  
  
  
Waring:AA does not have enough columns
  
列数5超过AA所定义的列数
  
  
3F6.1
  
  
  
  
  
  
  


大家再用别的数据试试,不对的地方帮忙指出来,bow:@)

[ 本帖最后由 kaylee 于 2007-7-29 15:51 编辑 ]

评分

2

查看全部评分

回复
分享到:

使用道具 举报

发表于 2007-7-29 16:08 | 显示全部楼层
其实可以作为,*vwrite和*vread两者一起的总结,因为其两者的用法基本一致

[ 本帖最后由 rodge 于 2008-3-14 20:47 编辑 ]
发表于 2007-8-31 13:54 | 显示全部楼层
說明得好仔細,
一看就懂!:loveliness:
发表于 2007-8-31 18:55 | 显示全部楼层
我们的版块就需要这些真正的个人摸索总结,很有实用性
值得赞赏:handshake
发表于 2009-10-13 20:51 | 显示全部楼层
为什么我用上述方法操作以后,出现警告:In the graphical user interface,the VREAD command can only be executed form an external file such as /INPUT or *USE.?高人指点一下
发表于 2009-10-13 22:40 | 显示全部楼层
不能直接输入,需要宏调用或者写入一个txt文件再input
发表于 2009-10-28 10:52 | 显示全部楼层
我用以下命令流:
/INPUT,OP,TXT,,1,0
*DIM,AA,,2,3
*VREAD,AA(1,1),OP,TXT,,JIK,3,2
(3F6.0)
*STATUS,AA
执行完以后数组里的数组都是0,这是怎么回事啊?
注:op.txt内容和楼主的相同
发表于 2010-3-19 13:06 | 显示全部楼层
楼上的问题解决了吗?
发表于 2010-4-8 17:00 | 显示全部楼层
*vread反复两次读取同一个文件(文件名与格式相同,但数据内容不同)时,是不是第二次的读取指针就位于该文件末尾了?我第一次读成功了,第二次告诉我 *VREAD end-of-file in data read:@(
发表于 2010-5-31 16:24 | 显示全部楼层

利用宏命令

宏命令有三种语法,在这里取一种:利用*create       *end
*create,bl,mac
*DIM,AA,,2,3
*VREAD,AA(1,1),OP,TXT,,JIK,3,2
(3F6.0)
*STATUS,AA
*end

剩下的工作就是把命令流敲进命令栏里,
要注意的是 敲完后再敲宏文件名字 bl,这样就可以了吧


如有错误,请高手指正
发表于 2010-6-13 16:40 | 显示全部楼层
运用VREAD将数据文件数值赋给数组时,结果数组的值均为0,哪位高手帮助解答,谢谢!
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-30 03:22 , Processed in 0.082620 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表