關于ANSYS的APDL中數據的輸入輸出格式
2017-05-26 by:CAE仿真在線 來源:互聯(lián)網
主要講vwrite的數據格式
data=9.6
*vwrite,data !這個地方要轉行,不轉行有語法錯誤
(F12.2) !這個地方接著以括號寫格式,如果不寫,不會正常輸出9.6
這里的F10.2的F表示float,10表示數據長度最長10位(包括小數點的點),2表示其中兩位為小數,超過2為小數則會舍入掉。
一、輸入格式要求
ANSYS的APDL語言其語法等各方面均與Fortran有很大的共通之處。在數據的輸入輸出格式方面也可以參考Fortran。對于初學者來說,輸入數據時更容易引發(fā)錯誤,所以下面談幾點在這方面的小認識。
APDL 從外部文件輸入數據,一般是采用*vread命令實現,而輸入格式一般是在此命令的下一行定義,關于此命令的具體應用,可參見ANSYS幫助。
在輸入格式方面與Fortran不同:
(1)APDL在數值方面沒有整型(I)、G型描述符,字符型數據采用A描述符,沒有H描述符。
(2)在Fortran中如果數據是整數,但是輸入格式采用實數(如單精度浮點型F),則系統(tǒng)可以按指定格式自動為數據加上小數點,但在APDL中如輸入數據為整數,如:6,則格式 Fw.d中的d只能為零,否則會出現讀入錯誤;而如果是6.則Fw.d中的d可以不為0。
另外在輸入時還容易引起輸入錯誤的是:
(1) 輸入格式的長度大于數據長度(指前一個數據的起至緊接的下一個數據的起始前一位,小數點和負號均占一位),如6._ _ _ _-5.6,前面的數據長度應為6,如果輸入格式Fw.d中的w>6,則會出現讀入錯誤;
(2) 格式語句應置于*vread的下一行,兩行之間可以有空行,但不能有其它語句,甚至是注釋語句也不能有。
二、輸出格式
輸出與輸入在格式方面基本一致,用*vwrite執(zhí)行,但也有不同之處:
輸出時可以使用%c控制字符輸出,%wI控制整數輸出;%w.pF或%w.pE或%w.pG控制實數輸出;
不能加括號。如格式語句: (F6.0,F5.2,A3),對應于:%6.0F%5.2F%3c;
應注意后一種格式中沒有用逗號相隔開,也沒有用括號括起,如有逗號,逗號也將一并輸出。
注意:輸入輸出格式最好從一行的開始寫,前面不要有空格
用%號(%wI)的這種格式可以輸出整型數字。
%這種控制語句也應緊接*vwrite行,可以有空行,但不能有其它語句夾在中間(注釋也不行)。
應當指出的是,%這種控制語句不能用在控制輸入中。
三、一個例子
*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 輸出結果為: *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中運行時報錯;這樣的非語法類錯誤,很難發(fā)現;為了避免此類錯誤發(fā)生, w應該至少設置為輸出數據的所有數字個數+1(小數點) 附:常用格式說明:*********************************************************************************************** 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./:結束當前行的輸出,轉到下一行輸出;如果兩個//連續(xù)出現,則添加一個空行;
實數及數組的輸出與示例 一、實數的輸出 ①實數的輸出比較簡單,類似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 ②當采用科學計數時,輸出格式的第一位都是“0”開頭,如上文中的0.123457E+05,假如我們希望寫成1.234568E+04或12.345678E+03的格式時,可采用如下格式:1PE15.6或2PE15.6。則上文中的命令流可改為: *VWRITE,x1,x2,x3 (3(1pe15.6)) 或 *VWRITE,x1,x2,x3 (1pe15.3,3pe15.4,1pe15.6) ③采用C格式輸出實數 C格式也有d-整型、f-浮點、e-科學、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 二、數組的輸出 (一)VWRITE方法 數組輸出格式同上,但其輸出控制卻有很多種形式,且ANSYS按列輸出數組。 設有數組(矩陣形式,這里不用插圖了): |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的輸出特點,分別寫出各列表示符即可,而行則從1到最終的5。 ② 同上格式,但按矩陣元素輸出用一對()將矩陣表達式括起來變?yōu)榫仃囋?這樣用循環(huán)輸出,如命令流中所示。 ③當列很多時不可能寫出每個列字符表達式,此時可采用$字符格式$字符表示連續(xù)輸出,沒有回車符號,當一行寫完后,增加一個非$格式語句即可。但是這里增加了一個臨時數組,以存儲某行的數據。 上述輸出格式便于導入EXCELL中處理數據。 (二)MWRITE命令 數組最好采用*MWRITE命令輸出,不管是否按類似矩陣格式輸出,此命令均可較好解決。當矩陣列數較少時,可以采用類似行列輸出;當矩陣列數很大時,可以按每行N個數據控制輸出。 以上4種方法的命令流如下: *DIM,ABC,,5,3 !數組賦值 *DO,I,1,5 *DO,J,1,3 ABC(I,J)=J+I/10 *ENDDO *ENDDO !VWRITE數組輸出 *CFOPEN,MYFILE,TXT !①格式1-按行列輸出(行數從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-多列時按行列輸出 *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輸出數組 !ABCD(I,J,K) *DIM,ABCD,,50,30 !數組賦值 *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個的數據。 文件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的內容可通過EXCELL打開:EXCELL>打開(所有文件)>選擇MYFILE1.TXT>選擇分隔符>下一步>選擇空格>完成,該表為50行*30列的數據表。
相關標簽搜索:關于ANSYS的APDL中數據的輸入輸出格式 Ansys有限元培訓 Ansys workbench培訓 ansys視頻教程 ansys workbench教程 ansys APDL經典教程 ansys資料下載 ansys技術咨詢 ansys基礎知識 ansys代做 Fluent、CFX流體分析 HFSS電磁分析 Abaqus培訓