kaylee 发表于 2007-7-29 15:45

对*VREAD用法的总结,请高手指教

经过实验,对*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.812.3
15.6-45.642.5
执行命令流
*DIM,AA,,2,3
*VREAD,AA(1,1),DATA,TXT,,JIK,3,2
(3F6.1)
*STATUS,AA
对不同输入的结果分析如下:
(nF6.1)对已有文件的读取方式(每行),F前的数字表示每行读几个值 f6.1JIK,3,21.515.60每行读了1个数据,按行写入,写了3列2行 Warning:end-of-file in data read,已到读到的数据末尾
000 2f6.1 JIK,3,21.57.815.6每行读了2个数据,按行写入,写了3列2行Warning:end-of-file in data read,未写的默认0 -45.600 3f6.1JIK,3,21.5
7.812.3原始数据,每行读了3个数据 15.6-45.642.5 IJK,n1,n2对目标数组写入方式 IJK表示下标变化的顺序,不写默认按列写入IJK,AA要写入的行数,列数,按列将单个值写入,写满要写的行列为止JIK,AA要写入的列数,行数,按行将单个值写入(FORTRAN默认先写列) IJK,2,33f6.11.512.3-45.6每行全读,按列写写了2行3列 7.815.642.5 IJK,1,23f6.11.57.80每行全读,按列写写了1行2列 000 JIK,2,13F6.11.57.80每行全读,按行写写了2列1行 000 JIK,3,13F6.11.57.812.3每行全读,按行写写了3列1行 000 JIK,3,12F6.11.57.815.6每行读2个值,按行写写了3列1行 000 JIK,3,1F6.11.515.60每行读1个,读到2个,按行写,1行3列,要写3个Warning:end-of-file in data read 000 IJK,2,22F6.11.515.60每行读2个值,按列写写了2行2列 7.8-45.60 IJK,2,5


Waring:AA does not have enough columns列数5超过AA所定义的列数 3F6.1




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

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

rodge 发表于 2007-7-29 16:08

其实可以作为,*vwrite和*vread两者一起的总结,因为其两者的用法基本一致

[ 本帖最后由 rodge 于 2008-3-14 20:47 编辑 ]

za901 发表于 2007-8-31 13:54

說明得好仔細,
一看就懂!:loveliness:

sysh320 发表于 2007-8-31 18:55

我们的版块就需要这些真正的个人摸索总结,很有实用性
值得赞赏:handshake

lucyyxj@163.com 发表于 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.?高人指点一下

16443 发表于 2009-10-13 22:40

不能直接输入,需要宏调用或者写入一个txt文件再input

lucyyxj@163.com 发表于 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内容和楼主的相同

luoqishao 发表于 2010-3-19 13:06

楼上的问题解决了吗?

veasha 发表于 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,这样就可以了吧


如有错误,请高手指正

dongliangqh 发表于 2010-6-13 16:40

运用VREAD将数据文件数值赋给数组时,结果数组的值均为0,哪位高手帮助解答,谢谢!
页: [1]
查看完整版本: 对*VREAD用法的总结,请高手指教