您的位置:网站首页 > Ansys教程

关于ANSYS的APDL中数据的输入输出格式

时间:2010-01-12 11:23:34 来源:

一、输入格式要求


ANSYS的APDL语言其语法等各方面均与Fortran有很大的共通之处。在数据的输入输出格式方面也可以参考Fortran。对于初学者来说,输入数据时更容易引发错误,所以下面谈几点在这方面的小认识。
APDL 从外部文件输入数据,一般是采用*vread命令实现,而输入格式一般是在此命令的下一行定义,关于此命令的具体应用,可参见ANSYS帮助。

 

在输入格式方面与Fortran不同:

(1)APDL在数值方面没有整型(I)、G型描述符,字符型数据采用A描述符,没有H描述符。

(2)在Fortran中如果数据是整数,但是输入格式采用实数(如单精度浮点型F),则系统可以按指定格式自动为数据加上小数点,但在APDL中如输入数据为整数,如:6,则格式 Fw.d中的d只能为零,否则会出现读入错误;而如果是6.则Fw.d中的d可以不为0。

 

另外在输入时还容易引起输入错误的是:

(1) 输入格式的长度大于数据长度(指前一个数据的起至紧接的下一个数据的起始前一位,小数点和负号均占一位),如6._ _ _ _-5.6,前面的数据长度应为6,如果输入格式Fw.d中的w>6,则会出现读入错误;

(2) 格式语句应置于*vread的下一行,两行之间可以有空行,但不能有其它语句,甚至是注释语句也不能有。

二、输出格式


输出与输入在格式方面基本一致,用*vwrite执行,但也有不同之处:

       输出时可以使用%c控制字符输出,%wI控制整数输出;%w.pF或%w.pE或%w.pG控制实数输出;

不能加括号。如格式语句: (F6.0,F5.2,A3),对应于:%6.0F%5.2F%3c;

       应注意后一种格式中没有用逗号相隔开,也没有用括号括起,如有逗号,逗号也将一并输出。

注意:输入输出格式最好从一行的开始写,前面不要有空格

用%号(%wI)的这种格式可以输出整型数字

       %这种控制语句也应紧接*vwrite行,可以有空行,但不能有其它语句夹在中间(注释也不行)。

应当指出的是,%这种控制语句不能用在控制输入中。#p#分页标题#e#

 

三、一个例子

*GET, ELEMENTNUM,ELEMENT,0,COUNT

*GET, NODENUM,NODE,0,COUNT 

*CFOPEN,c:tecplot,plt   !!tecplot的输出文件

*VWRITE
('TITLE="Ansys to Tecplot FOR TETRAHEDRON MESH"')

*VWRITE
('VARIABLES="X","Y","Z"')

*VWRITE, NODENUM,ELEMENTNUM
ZONE N=%5I,E=%7I,F=FEPOINT,ET=TETRAHEDRON

*DO, I,1,NODENUM,1

    *VWRITE, NX(I),NY(I),NZ(I)
    (3F12.6)

*ENDDO

*DO, I,1,ELEMENTNUM,1
    *VWRITE, NELEM(I,1),NELEM(I,2),NELEM(I,3),NELEM(I,5)
    %7I%7I%7I%7I

*ENDDO
*CFCLOS

 
finish
/clear
Item='Weight'
data=234.56
Unit='Kg'
*Dim,AA,Array,4,1,1
AA(1)=10.2,324.5,123.7,908

*Dim,BB,Char,3,1,1
BB(1)='I am','a good','man'

*CFopen,'G:ANSYSUserabc','txt'
*vwrite,
(5X,'*Vwrite Demo')

*vwrite,
('******************************************************')
*vwrite,Item,data,Unit
(A8,F10.2,A8)
*vwrite
(/'*********** Array Parameter Output Demo**************')
*Vwrite,
('Float Format /SEQU Keyword:')
*vwrite,SEQU,AA(1)
(F3.0,4F10.4)

*vwrite,AA(1),AA(2),AA(3),AA(4)
(//'Float /x Format:'/F4.1,2X,F10.4,2X,F10.4,2X,F10.4)

*vwrite,AA(1),AA(2),AA(3),AA(4)
(//'Float Format:'/4F10.4)

*vwrite,AA(1),AA(2),AA(3),AA(4)
(//'Double Format:'/D13.5,/D15.6,/D18.10,/D10.3)

*vwrite,
(/'****************char parametric output demo *******')
*vwrite,BB(1),BB(2),BB(3)
(3A6)
*CFclos



输出结果为:

*Vwrite Demo
******************************************************
Weight 234.56Kg

*********** Array Parameter Output Demo**************
Float Format /SEQU Keyword:
1. 10.2000
2. 324.5000
3. 123.7000
4. 908.0000


Float /x Format:
10.2 324.5000 123.7000 908.0000


Float Format:
10.2000 324.5000 123.7000 908.0000


Double Format:
0.10200D+02
0.324500D+03
0.1237000000D+03
0.908D+03

****************char parametric output demo *******
I am a goodman


/*******************************************************/
几点说明:
1.使用*VWrite命令把数据输出到文件时,必须要使用*CFOpen命令事先打 开一个 文件;*CFOpen命令必须和*CFClos命令配对使用;
2.*Vwrite命令后面必须紧跟输出格式说明;
例如:

*Vwrite,a,b,c
(格式说明)

3.格式说明中Fw.d,w的数值不能太小,以至于输出的数据丢失了整数部分的 精度;

例如:a=123.4,
Fw.d中的w至少要为5,否则在ANSYS中运行时报错;这样的非语法类错误,很难发现;为了避免此类错误发生,
w应该至少设置为输出数据的所有数字个数+1(小数点)#p#分页标题#e#

附:
常用格式说明:***********************************************************************************************

1.''(一对单引号):用于在输出数据的时候,输出注释字符串,常常用来增加一些说明文字,增加可读性;
比如:

*Vwrite,Widh,Length,Height
('宽度为:',F6.3,'长度为:',F6.3,'高度为:',F6.3)
2.nX:输出n个空格;
比如:在输出的a,b,c3个数据之间加入2个空格;
*vwrite,a,b,c
(F6.3,2X,F6.3,2X,F6.3)
3./:结束当前行的输出,转到下一行输出;如果两个//连续出现,则添加一个空行;