对*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 编辑 ] 其实可以作为,*vwrite和*vread两者一起的总结,因为其两者的用法基本一致
[ 本帖最后由 rodge 于 2008-3-14 20:47 编辑 ] 說明得好仔細,
一看就懂!:loveliness: 我们的版块就需要这些真正的个人摸索总结,很有实用性
值得赞赏:handshake 为什么我用上述方法操作以后,出现警告:In the graphical user interface,the VREAD command can only be executed form an external file such as /INPUT or *USE.?高人指点一下 不能直接输入,需要宏调用或者写入一个txt文件再input 我用以下命令流:
/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内容和楼主的相同 楼上的问题解决了吗? *vread反复两次读取同一个文件(文件名与格式相同,但数据内容不同)时,是不是第二次的读取指针就位于该文件末尾了?我第一次读成功了,第二次告诉我 *VREAD end-of-file in data read:@(
利用宏命令
宏命令有三种语法,在这里取一种:利用*create *end*create,bl,mac
*DIM,AA,,2,3
*VREAD,AA(1,1),OP,TXT,,JIK,3,2
(3F6.0)
*STATUS,AA
*end
剩下的工作就是把命令流敲进命令栏里,
要注意的是 敲完后再敲宏文件名字 bl,这样就可以了吧
如有错误,请高手指正 运用VREAD将数据文件数值赋给数组时,结果数组的值均为0,哪位高手帮助解答,谢谢!
页:
[1]