注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

htbbzzg的博客

与朋友们分享 CAE 资料和经验

 
 
 

日志

 
 

对 ANSYS 中 *VREAD 命令用法的总结  

2010-12-08 07:53:30|  分类: ANSYS 一般 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

经过实验,对 *vread 用法总结如下:

*VREAD, ParR, Fname, Ext, --, Label, n1, n2, n3,NSKIP

    其中:

ParR 是要将外部数据写入的参数或数组变量名,如是数组,必须已经定义(用 *DIM),且指出写入的开始位置,即包含下标(I,J,K (默认首行首列首区),然后写入从 (I,J,K) 开始到结尾的所有数组元素;如是参数,只输入一个值。

Fname 是存放数据的外部文件名,Ext是扩展名,

Label 可为 IJK, IKJ, JIK, JKI, KIJ, KJI, blank (默认为 IJK),表示对数组 ParR 写入的顺序。如 IJK 表示先写列再写行(先 K,再 J,再 I;对于二维数组,先写列,下标 J 改变最快),JIK 表示先写行再写列(先 K,再 I,再 J;对于二维数组,先写行,下标 I 改变最快)

n1, n2, n3 表示按上面的顺序,各下标分别要写入的数据个数,如 JIK56 表示对 ParR 按行写入,共写  (对应 J)  6  (对应 I),即 三个数按顺序分别对应 Label 中的三个标识符 (例如:KIJ – n1 对应 Kn2 对应 In3 对应 Jn2n3 默认为 1)

NSKIP:从文件中读取数据时,首先跳过文件开头的 NSKIP (如:说明部分等,非数据内容),默认为 0.

注意: *VREAD 命令只能用于 3 () 及以下的数组。

紧跟  *VREAD 命令的下一行是带括号的指定格式,描述从数据文件中读取数据时,每行读取的数据个数及其格式,如(2F3.03F11.0)表示每行读 5 个数,前两个含 3 个字符,后 3 个含 11 个字符宽度。该格式与 Fortran 语言相同,但不能使用 I 格式 整数格式。

 

如 《APDL参数化有限元分析技术及其应用实例》 中 P40 的例子:

数据文件 data.txt内容如下 (2 行,每行 3 个数据,为了便于分析,对数据已做修改,注意以逗号分隔,如以空格分隔,有时会出问题)

1.1, 2.2, 3.3

4.4, 5.5, 6.6

执行命令流

*DIM,AA,,2,3  ! 数组 AA 2 3 列。

*VREAD,AA(1,1),DATA,TXT,,JIK,3,2  ! 3 对应 J2 对应 I

(3F6.1)

*STATUS,AA

 

对不同输入方式的读取结果分析如下:

nF6.1

AA 数组的读取结果

对数据文件的读取方式,每行读 n 个数据,格式都是 F6.1

JIK,3,2

(f6.1)

1

1.1

4.4

0

每行读 1 个数据,按行写入,共 3 2 行。需读取 6 行。

Warning

end-of-file in data read[1]

2

0

0

0

JIK,3,2

(2f6.1)

1

1.1

2.2

4.4

每行读 2 个数据,按行写入,共 3 2 行。需读取 3 行。

Warning

end-of-file in data read[1]

2

5.5

0

0

JIK,3,2

(3f6.1)

1

1.1

2.2

3.3

每行读 3 个数据,按行写入,共 3 2 行。需读取 2 行。

2

4.4

5.5

6.6

JIK,3,2

(4f6.1)

1

1.1

2.2

3.3

每行读 4 个数据,按行写入,共读取 2 (第二行读 2 个数据)[2]

2

0

4.4

5.5

注: [1] 数据文件中每行有 3 个数据,由于每行读入的数据不到 3 个,后面的多余数据将不被读入,最终导致数据不够的警告。未读取的数组元素,默认值为 0.

[2] 数据文件中每行有 3 个数据,每行要求读入 4 个数据,超过 3 个的以 0 补足。

 


IJK,n1,n2

对目标数组写入方式:IJK 表示下标变化的顺序,默认按列写入。

IJK: 数组 AA 要写入的行数,列数;按列逐个值写入,写满要写的行列为止。

JIK: 数组 AA 要写入的列数,行数,按行将单个值写入 (FORTRAN 默认先写列,JIK 表示先写行)

 

AA 数组中的读取结果

 

IJK,2,3

(3f6.1)

1       

1.1

3.3

5.5

每行全读,按列写,

共 行 列。

2       

2.2

4.4

6.6

IJK,1,2

(3f6.1)

1       

1.1

2.2

0

每行全读,按列写,

共 行 列。

2       

0

0

0

JIK,2,1

(3f6.1)

1       

1.1

2.2

0

每行全读,按行写,

共 列 行。

2       

0

0

0

JIK,3,1

(3f6.1)

1       

1.1

2.2

3.3

每行全读,按行写,

 3 列 行。

2       

0

0

0

JIK,3,1

(2f6.1)

1       

1.1

2.2

4.4

每行读 个值,按行写,共 列 

2       

0

0

0

JIK,3,1

(f6.1)

1       

1.1

4.4

0

每行读 个,只读到 个,少 1 个。

Warning

end-of-file in

data read

2       

0

0

0

IJK,2,2

(2f6.1)

1       

1.1

2.2

0

每行读 个值,按列写,共 行 列。

2       

4.4

5.5

0

IJK,2,5

(3f6.1)

1      

0

0

0

Waring:

AA does not

have enough

columns - 数 超过AA 定义的列数。

2      

0

0

0

 

上述方法仅对 Array 有效,如果是对表 (Table),由于 *VREAD 不能直接对表的 0 行、列读入数据,因此上述方法受到限制。向 Table 中读入数据时,可以参考如下命令流或改用 *Tread 命令:

 

!  如何向 array 或 table 中读入数据

  fini

  /clear

  /prep7

  *del,all

  n=10                       !  数据行数

  ! 

  !  方法 1

  *dim,aa,array,n,2,1

  *cfopen,test,dat                     ! 打开数据文件 test.dat

  *vread,aa,test,dat, ,jik,2,10,1      ! 对于 array,使用 *vread 读入数据,需要格式说明

  (f12.0,f12.4)

  *cfclos                     ! 关闭数据文件         ! 可以正确读入数据

 

  *dim,cc,table,n,1,1         ! table 下标从 0 开始,

  ! 这样定义实际为 (n+1) 行 * 2 列

  *do,i,1,n                   !  将 aa 的数据传送到 cc

   cc(i-1,0)=aa(i,1)

   cc(i-1,1)=aa(i,2)

  *enddo                      ! 结果正确

 

  !  方法 2

  *dim,bb,table,n,1,1         ! table 下标从 0 开始,

  ! 这样定义实际为 (n+1) 行 * 2 列

  *cfopen,test,dat

  *tread,bb,test,dat, ,0     !  实际读入 n 行数据,存放在到第 1 到 n 行

                       !  对于表,用 *tread 读入数据,不要格式说明

  *cfclos                    !  可以正确读入数据到下标大于 0 的各表项中

 

  !  方法 1, 需要多用一个 Array,但是定义表的 0 行、0 列可以使用;

  !  方法 2, 表的第 0 行和第 0 列不能使用,如要使用,需单独赋值。

 

数据文件 test.dat 中的数据:

  0, 0.01

  1,10.11

  2,20.22

  3,30.33

  4,40.44

  5,50.55

  6,60.66

  7,70.77

  8,80.88

  9,90.99

  评论这张
 
阅读(15030)| 评论(2)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2016