找回密码
 注册
Simdroid-非首页
查看: 552|回复: 8

请教“*vwrite”的用法

[复制链接]
发表于 2007-4-12 22:19:52 | 显示全部楼层 |阅读模式 来自 四川大学
对于这个命令一直试不出正确结果,比如二维3*3整数型数组,数组名为xyz,要写到xyz.txt文件中,每行三个元素,共三行,应该怎么写命令?希望大侠实际做下再回答。
先列出几种行不通的形式:
1 *vwrite,xyz
2 *vwrite,xyz(1,1),xyz(1,2),xyz(1,3)
   (2e10.2,2e10.2,2e10.2)
3 *creat,pp
   *vwrite,xyz(1,1),xyz(1,2),xyz(1,3)
   (2e10.2,2e10.2,2e10.2)
    *end
4  *creat,pp
   *vwrite,xyz(1,1),xyz(1,2),xyz(1,3)
   (2e10.2,2e10.2,2e10.2)
    *end
    /output,xyz
5  *creat,pp
   *vwrite,xyz(1,1),xyz(1,2),xyz(1,3)
   (2e10.2,2e10.2,2e10.2)
    *end
    *use,pp
等等,就不多写了。很多书上的都行不通,不知道编书的是否实际验算过。如果不定义宏的话会报错“Error in format, not enough data format specifiers”。
大家看下如何解决。
发表于 2007-4-12 23:27:03 | 显示全部楼层 来自 黑龙江哈尔滨
Simdroid开发平台
搜索到以前的帖子,试一下。

*dim,a,array,16,25  
*do,i,1,16  
  *do,j,1,25  
   a(i,j)=j+1  
  *enddo  
*enddo  
  
*cfopen,elem5,dat  
*vwrite,a(1,1),a(1,2),a(1,3),a(1,4)
(4f8.0)
*cfclos
发表于 2007-4-12 23:53:41 | 显示全部楼层 来自 陕西西安
*dim,xyz,,3,3
*SET,XYZ(1,1,1) , 1
*SET,XYZ(1,2,1) , 2
*SET,XYZ(1,3,1) , 3
*SET,XYZ(2,1,1) , 4
*SET,XYZ(2,2,1) , 5
*SET,XYZ(2,3,1) , 6
*SET,XYZ(3,1,1) , 7
*SET,XYZ(3,2,1) , 8
*SET,XYZ(3,3,1) , 9

*cfopen,xyz,txt   
*vwrite,xyz(1,1),xyz(1,2),xyz(1,3)
(3f5.2)
*cfclos

结果:
1.00 2.00 3.00
4.00 5.00 6.00
7.00 8.00 9.00

评分

1

查看全部评分

发表于 2007-4-12 23:55:13 | 显示全部楼层 来自 陕西西安
切记 *vwrite命令不能在命令窗口运行 必须把以上命令存在宏文件里,通过读宏文件运行

[ 本帖最后由 yangjungang2004 于 2007-4-12 23:59 编辑 ]
 楼主| 发表于 2007-4-13 09:42:26 | 显示全部楼层 来自 四川大学
非常感谢雨人和yangjungang2004的解答,试了几次,问题已经解决。我这把完整的写出来,因为有些刚接触数组操作的朋友可能跟我现在一样对宏不太了解。以yangjungang2004的为例:
*dim,xyz,,3,3
*SET,XYZ(1,1,1) , 1
*SET,XYZ(1,2,1) , 2
*SET,XYZ(1,3,1) , 3
*SET,XYZ(2,1,1) , 4
*SET,XYZ(2,2,1) , 5
*SET,XYZ(2,3,1) , 6
*SET,XYZ(3,1,1) , 7
*SET,XYZ(3,2,1) , 8
*SET,XYZ(3,3,1) , 9
*creat,li               !创建一个文件名为li的宏,后缀可以不写,可以用文本文档打开
*cfopen,xyz,txt     !创建并打开xyz.txt文件
*vwrite,xyz(1,1),xyz(1,2),xyz(1,3)      !写入数据
(3f5.2)                 !FORTRAN实数格式,这个要输入正确,不然会得到错误结果,
                           !其用法在《apdl参数化编程》一书上有介绍,书名好像是那个
                           !哈。
*cfclos                 !关闭xyz.txt文件
*end                    !宏创建完毕
/input,li                !运行上面创建的宏
不知道以上的表达是否正确。
yangjungang2004的提示非常重要,否则会出现我说的那个报错。

评分

1

查看全部评分

发表于 2007-4-13 11:14:28 | 显示全部楼层 来自 西安交通大学
在贴两个吧
*vwrite 会受到参数数目的限制 如果你的矩阵很大,大于19x19,(当然一般不会,只是理论探讨)

1 直接用*mwrite

*dim,xyz,,20,20
*do,i,1,20
*vfill,xyz(1,i),ramp,i+2,i
*enddo
/nopr

*mwrite,xyz,out,dat,,
(20F6.0),      ! 前面的20只要大于20就可以 比如21 22 都可以 如果小于20,比如2 则以2个一行输出


第二
*dim,xyz,,20,20
*do,i,1,20
*vfill,xyz(1,i),ramp,i+2,i
*enddo
/nopr

temp=''
/out,out,dat
*do,i,1,20
*vwrite,xyz(1,i)
(F $)
*vwrite,temp
(a)
*enddo
/out
temp=

!这个显然麻烦,这里不过是理论探讨,不过这个思路可以帮助处理其他的问题

[ 本帖最后由 luckier 于 2007-4-13 15:34 编辑 ]

评分

1

查看全部评分

发表于 2007-4-13 14:28:33 | 显示全部楼层 来自 陕西西安
原帖由 luckier 于 2007-4-13 11:14 发表
在贴两个吧
*vwrite 会受到参数数目的限制 如果你的矩阵很大,大于19x19,(当然一般不会,只是理论探讨)

1 直接用*mwrite

*dim,xyz,,20,20
*do,i,1,20
*vfill,xyz(1,i),ramp,i+2,i
*enddo
/nopr

* ...


*mwrite确实是输出矩阵的有效方法
发表于 2010-3-26 13:48:07 | 显示全部楼层 来自 安徽合肥
还是不大会啊 不会宏
回复 不支持

使用道具 举报

发表于 2012-5-2 16:20:54 | 显示全部楼层 来自 辽宁沈阳
yangjungang2004 发表于 2007-4-12 23:55
切记 *vwrite命令不能在命令窗口运行 必须把以上命令存在宏文件里,通过读宏文件运行

[ 本帖最后由 yangju ...

这个问题困扰了我好久 终于得到解决
回复 不支持

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Simapps系列直播

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-9-21 19:46 , Processed in 0.058901 second(s), 14 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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