關(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è)地方接著以括號(hào)寫格式,如果不寫,不會(huì)正常輸出9.6
這里的F10.2的F表示float,10表示數(shù)據(jù)長(zhǎng)度最長(zhǎng)10位(包括小數(shù)點(diǎn)的點(diǎn)),2表示其中兩位為小數(shù),超過2為小數(shù)則會(huì)舍入掉。
一、輸入格式要求
ANSYS的APDL語言其語法等各方面均與Fortran有很大的共通之處。在數(shù)據(jù)的輸入輸出格式方面也可以參考Fortran。對(duì)于初學(xué)者來說,輸入數(shù)據(jù)時(shí)更容易引發(fā)錯(cuò)誤,所以下面談幾點(diǎn)在這方面的小認(rèn)識(shí)。
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)可以按指定格式自動(dòng)為數(shù)據(jù)加上小數(shù)點(diǎn),但在APDL中如輸入數(shù)據(jù)為整數(shù),如:6,則格式 Fw.d中的d只能為零,否則會(huì)出現(xiàn)讀入錯(cuò)誤;而如果是6.則Fw.d中的d可以不為0。
另外在輸入時(shí)還容易引起輸入錯(cuò)誤的是:
(1) 輸入格式的長(zhǎng)度大于數(shù)據(jù)長(zhǎng)度(指前一個(gè)數(shù)據(jù)的起至緊接的下一個(gè)數(shù)據(jù)的起始前一位,小數(shù)點(diǎn)和負(fù)號(hào)均占一位),如6._ _ _ _-5.6,前面的數(shù)據(jù)長(zhǎng)度應(yīng)為6,如果輸入格式Fw.d中的w>6,則會(huì)出現(xiàn)讀入錯(cuò)誤;
(2) 格式語句應(yīng)置于*vread的下一行,兩行之間可以有空行,但不能有其它語句,甚至是注釋語句也不能有。
二、輸出格式
輸出與輸入在格式方面基本一致,用*vwrite執(zhí)行,但也有不同之處:
輸出時(shí)可以使用%c控制字符輸出,%wI控制整數(shù)輸出;%w.pF或%w.pE或%w.pG控制實(shí)數(shù)輸出;
不能加括號(hào)。如格式語句: (F6.0,F5.2,A3),對(duì)應(yīng)于:%6.0F%5.2F%3c;
應(yīng)注意后一種格式中沒有用逗號(hào)相隔開,也沒有用括號(hào)括起,如有逗號(hào),逗號(hào)也將一并輸出。
注意:輸入輸出格式最好從一行的開始寫,前面不要有空格
用%號(hào)(%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命令配對(duì)使用; 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.''(一對(duì)單引號(hào)):用于在輸出數(shù)據(jù)的時(shí)候,輸出注釋字符串,常常用來增加一些說明文字,增加可讀性; 比如: *Vwrite,Widh,Length,Height ('寬度為:',F6.3,'長(zhǎng)度為:',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ù)的輸出比較簡(jiǎn)單,類似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。 ② 同上格式,但按矩陣元素輸出用一對(duì)()將矩陣表達(dá)式括起來變?yōu)榫仃囋?這樣用循環(huán)輸出,如命令流中所示。 ③當(dāng)列很多時(shí)不可能寫出每個(gè)列字符表達(dá)式,此時(shí)可采用$字符格式$字符表示連續(xù)輸出,沒有回車符號(hào),當(dāng)一行寫完后,增加一個(gè)非$格式語句即可。但是這里增加了一個(gè)臨時(shí)數(shù)組,以存儲(chǔ)某行的數(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ù)表。
相關(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ǔ)知識(shí) ansys代做 Fluent、CFX流體分析 HFSS電磁分析 Abaqus培訓(xùn)