關(guān)于ANSYS的APDL中數(shù)據(jù)的輸入輸出格式

2017-05-26  by:CAE仿真在線  來源:互聯(lián)網(wǎng)

主要講vwrite的數(shù)據(jù)格式

data=9.6

*vwrite,data !這個(gè)地方要轉(zhuǎn)行,不轉(zhuǎn)行有語法錯(cuò)誤
   (F12.2)    !這個(gè)地方接著以括號寫格式,如果不寫,不會正常輸出9.6


這里的F10.2的F表示float,10表示數(shù)據(jù)長度最長10位(包括小數(shù)點(diǎn)的點(diǎn)),2表示其中兩位為小數(shù),超過2為小數(shù)則會舍入掉。




一、輸入格式要求


ANSYS的APDL語言其語法等各方面均與Fortran有很大的共通之處。在數(shù)據(jù)的輸入輸出格式方面也可以參考Fortran。對于初學(xué)者來說,輸入數(shù)據(jù)時(shí)更容易引發(fā)錯(cuò)誤,所以下面談幾點(diǎn)在這方面的小認(rèn)識。 
APDL 從外部文件輸入數(shù)據(jù),一般是采用*vread命令實(shí)現(xiàn),而輸入格式一般是在此命令的下一行定義,關(guān)于此命令的具體應(yīng)用,可參見ANSYS幫助。

 

在輸入格式方面與Fortran不同:

(1)APDL在數(shù)值方面沒有整型(I)、G型描述符,字符型數(shù)據(jù)采用A描述符,沒有H描述符。

(2)在Fortran中如果數(shù)據(jù)是整數(shù),但是輸入格式采用實(shí)數(shù)(如單精度浮點(diǎn)型F),則系統(tǒng)可以按指定格式自動為數(shù)據(jù)加上小數(shù)點(diǎn),但在APDL中如輸入數(shù)據(jù)為整數(shù),如:6,則格式 Fw.d中的d只能為零,否則會出現(xiàn)讀入錯(cuò)誤;而如果是6.則Fw.d中的d可以不為0。 

 

另外在輸入時(shí)還容易引起輸入錯(cuò)誤的是:

(1) 輸入格式的長度大于數(shù)據(jù)長度(指前一個(gè)數(shù)據(jù)的起至緊接的下一個(gè)數(shù)據(jù)的起始前一位,小數(shù)點(diǎn)和負(fù)號均占一位),如6._ _ _ _-5.6,前面的數(shù)據(jù)長度應(yīng)為6,如果輸入格式Fw.d中的w>6,則會出現(xiàn)讀入錯(cuò)誤;

(2) 格式語句應(yīng)置于*vread的下一行,兩行之間可以有空行,但不能有其它語句,甚至是注釋語句也不能有。 

二、輸出格式


輸出與輸入在格式方面基本一致,用*vwrite執(zhí)行,但也有不同之處: 

       輸出時(shí)可以使用%c控制字符輸出,%wI控制整數(shù)輸出;%w.pF或%w.pE或%w.pG控制實(shí)數(shù)輸出;

不能加括號。如格式語句: (F6.0,F5.2,A3),對應(yīng)于:%6.0F%5.2F%3c;

       應(yīng)注意后一種格式中沒有用逗號相隔開,也沒有用括號括起,如有逗號,逗號也將一并輸出。

注意:輸入輸出格式最好從一行的開始寫,前面不要有空格

用%號(%wI)的這種格式可以輸出整型數(shù)字。

       %這種控制語句也應(yīng)緊接*vwrite行,可以有空行,但不能有其它語句夾在中間(注釋也不行)。

應(yīng)當(dāng)指出的是,%這種控制語句不能用在控制輸入中。

 

三、一個(gè)例子

*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:\ANSYSUser\abc','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

輸出結(jié)果為:
*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 

/*******************************************************/
幾點(diǎn)說明:
1.使用*VWrite命令把數(shù)據(jù)輸出到文件時(shí),必須要使用*CFOpen命令事先打 開一個(gè) 文件;*CFOpen命令必須和*CFClos命令配對使用;
2.*Vwrite命令后面必須緊跟輸出格式說明;
例如:
*Vwrite,a,b,c
(格式說明)
3.格式說明中Fw.d,w的數(shù)值不能太小,以至于輸出的數(shù)據(jù)丟失了整數(shù)部分的 精度;
例如:a=123.4,
Fw.d中的w至少要為5,否則在ANSYS中運(yùn)行時(shí)報(bào)錯(cuò);這樣的非語法類錯(cuò)誤,很難發(fā)現(xiàn);為了避免此類錯(cuò)誤發(fā)生,
w應(yīng)該至少設(shè)置為輸出數(shù)據(jù)的所有數(shù)字個(gè)數(shù)+1(小數(shù)點(diǎn))
附:常用格式說明:***********************************************************************************************
1.''(一對單引號):用于在輸出數(shù)據(jù)的時(shí)候,輸出注釋字符串,常常用來增加一些說明文字,增加可讀性;
比如:
*Vwrite,Widh,Length,Height
('寬度為:',F6.3,'長度為:',F6.3,'高度為:',F6.3)
2.nX:輸出n個(gè)空格;
比如:在輸出的a,b,c3個(gè)數(shù)據(jù)之間加入2個(gè)空格;
*vwrite,a,b,c
(F6.3,2X,F6.3,2X,F6.3)
3./:結(jié)束當(dāng)前行的輸出,轉(zhuǎn)到下一行輸出;如果兩個(gè)//連續(xù)出現(xiàn),則添加一個(gè)空行; 
實(shí)數(shù)及數(shù)組的輸出與示例 一、實(shí)數(shù)的輸出 ①實(shí)數(shù)的輸出比較簡單,類似FORTRAN的可采用D/E//F/G格式輸出。例如: *CFOPEN,MYFILE,TXT X1=4.56 X2=12345.678 X3=1.23E-6 *VWRITE,X1,X2,X3 (3d15.6) *VWRITE,X1,X2,X3 (3E15.6) *VWRITE,X1,X2,X3 (3f15.6) *VWRITE,X1,X2,X3 (3g15.6) *CFCLOSE  文件MYFILE.TXT如下: 0.456000D+01
0.123457D+05
0.123000D-05  0.456000E+01
0.123457E+05
0.123000E-05  4.560000
12345.678000
0.000001 4.56000
12345.7
0.123000E-05  當(dāng)采用科學(xué)計(jì)數(shù)時(shí),輸出格式的第一位都是“0”開頭,如上文中的0.123457E+05,假如我們希望寫成1.234568E+04或12.345678E+03的格式時(shí),可采用如下格式:1PE15.6或2PE15.6。則上文中的命令流可改為: *VWRITE,x1,x2,x3 (3(1pe15.6))  *VWRITE,x1,x2,x3 (1pe15.3,3pe15.4,1pe15.6)  ③采用C格式輸出實(shí)數(shù) C格式也有d-整型、f-浮點(diǎn)、e-科學(xué)、g-任意、c-字符、s-字符串等格式,均采用%w.dx形式,而%/則為回車換行。例如: *CFOPEN,MYFILE,TXT X1=4.56 X2=12345.678 X3=1.23E-6 *VWRITE,X1,X2,X3,4567 %14.6f%15.6e%16.6g%10d *CFCLOSE  文件MYFILE.TXT如下:  4.560000
1.234568E+04
1.230000E-06
4567 二、數(shù)組的輸出 (一)VWRITE方法 數(shù)組輸出格式同上,但其輸出控制卻有很多種形式,且ANSYS按列輸出數(shù)組。 設(shè)有數(shù)組(矩陣形式,這里不用插圖了):          |1.1  2.1  3.1|
         |1.2  2.2  3.2|
ABC(5,3)=|1.3  2.3  3.3|
         |1.4  2.4  3.4|
         |1.5  2.5  3.5|  *VWRITE命令如下幾種方式: ① 與矩陣寫法類同的按列輸出:利用ANSYS的輸出特點(diǎn),分別寫出各列表示符即可,而行則從1到最終的5。 ② 同上格式,但按矩陣元素輸出用一對()將矩陣表達(dá)式括起來變?yōu)榫仃囋?這樣用循環(huán)輸出,如命令流中所示。 ③當(dāng)列很多時(shí)不可能寫出每個(gè)列字符表達(dá)式,此時(shí)可采用$字符格式$字符表示連續(xù)輸出,沒有回車符號,當(dāng)一行寫完后,增加一個(gè)非$格式語句即可。但是這里增加了一個(gè)臨時(shí)數(shù)組,以存儲某行的數(shù)據(jù)。  上述輸出格式便于導(dǎo)入EXCELL中處理數(shù)據(jù)。  (二)MWRITE命令 數(shù)組最好采用*MWRITE命令輸出,不管是否按類似矩陣格式輸出,此命令均可較好解決。當(dāng)矩陣列數(shù)較少時(shí),可以采用類似行列輸出;當(dāng)矩陣列數(shù)很大時(shí),可以按每行N個(gè)數(shù)據(jù)控制輸出。  以上4種方法的命令流如下: *DIM,ABC,,5,3 !數(shù)組賦值 *DO,I,1,5 *DO,J,1,3 ABC(I,J)=J+I/10 *ENDDO *ENDDO  !VWRITE數(shù)組輸出 *CFOPEN,MYFILE,TXT !①格式1-按行列輸出(行數(shù)從1~最終的5,列不變) *VWRITE,ABC(1,1),ABC(1,2),ABC(1,3) (3F6.1) !格式2-按矩陣元素輸出 *DO,I,1,5 *VWRITE,(ABC(I,1)),(ABC(I,2)),(ABC(I,3)) (3F6.2) *ENDDO !格式3-多列時(shí)按行列輸出 *DIM,TELS,,3 *DO,I,1,5 *DO,J,1,3 TELS(J)=ABC(I,J) *ENDDO *VWRITE,TELS(1) (F6.3,$) *VWRITE ('
') *ENDDO *CFCLOSE !④MWRITE輸出數(shù)組 !ABCD(I,J,K) *DIM,ABCD,,50,30 !數(shù)組賦值 *DO,I,1,50 *DO,J,1,30 ABCD(I,J)=j+i/100 *ENDDO *ENDDO *MWRITE,ABCD,MYFILE1,TXT,,JIK,30,50 (30F9.4) !也可采用(10f9.4)格式,以輸出150行*10個(gè)的數(shù)據(jù)。  文件MYFILE.TXT可以通過記事本查看。    1.1   2.1   3.1
   1.2   2.2   3.2
   1.3   2.3   3.3
   1.4   2.4   3.4
   1.5   2.5   3.5
  1.10  2.10  3.10
  1.20  2.20  3.20
  1.30  2.30  3.30
  1.40  2.40  3.40
  1.50  2.50  3.50
1.100 2.100 3.100  
1.200 2.200 3.200  
1.300 2.300 3.300  
1.400 2.400 3.400  
1.500 2.500 3.500    文件MYFILE1.TXT的內(nèi)容可通過EXCELL打開:EXCELL>打開(所有文件)>選擇MYFILE1.TXT>選擇分隔符>下一步>選擇空格>完成,該表為50*30列的數(shù)據(jù)表。

開放分享:優(yōu)質(zhì)有限元技術(shù)文章,助你自學(xué)成才

相關(guān)標(biāo)簽搜索:關(guān)于ANSYS的APDL中數(shù)據(jù)的輸入輸出格式 Ansys有限元培訓(xùn) Ansys workbench培訓(xùn) ansys視頻教程 ansys workbench教程 ansys APDL經(jīng)典教程 ansys資料下載 ansys技術(shù)咨詢 ansys基礎(chǔ)知識 ansys代做 Fluent、CFX流體分析 HFSS電磁分析 Abaqus培訓(xùn) 

編輯
在線報(bào)名:
  • 客服在線請直接聯(lián)系我們的客服,您也可以通過下面的方式進(jìn)行在線報(bào)名,我們會及時(shí)給您回復(fù)電話,謝謝!
驗(yàn)證碼

全國服務(wù)熱線

1358-032-9919

廣州公司:
廣州市環(huán)市中路306號金鷹大廈3800
電話:13580329919
          135-8032-9919
培訓(xùn)QQ咨詢:點(diǎn)擊咨詢 點(diǎn)擊咨詢
項(xiàng)目QQ咨詢:點(diǎn)擊咨詢
email:kf@1cae.com