1 不能直接在命令窗口中執(zhí)行*vread 命令
*read 命令的使用格式為:
*READ,PARR,FNAME,EXT,--,LABEL,N1,N2,N3,NSIP
前三項不用解釋,ext是文件的開展名,
--表示該域是不需要使用的值域
label是取值順序標識字,ijk,ikj,jik,jki,kij,kji,空格表示ijk
n1,n2,n3,是當label=kij ,n2,n3,缺省等于1時按照格式(((parr(i,j,k),k=1,n1),i=1,n2),j=1,n3)
讀入數(shù)據(jù)的
nskip是讀入數(shù)據(jù)文件時需要調(diào)過的開始行數(shù)
2 你在ansys的help里面察看vread命令,然后看它的用法格式,把你寫的小程序?qū)懗梢粋€mac文件,倒入mac文件就能從array parameter 里面看到你倒入的txt文件的數(shù)組形式
3ansys如何讀入txt文本中的地震波數(shù)據(jù)?
命令流(下面的命令必須用文本讀入的方法實現(xiàn),命令窗無法實現(xiàn)):
*DIM,EQ,,6000,1,,, !首先定義一個EQ數(shù)組
*VREAD,EQ,earthquake,TXT,,,,,,0, !將earthquake.txt讀入EQ數(shù)組里
(e16.0)
用的時候:
*DO,EQ,0.02,0.02*6000,0.02
TIME,TM
acel,EQ
!求解過程...
*ENDDO
一、輸入格式要求
ANSYS的APDL語言其語法等各方面均與Fortran有很大的共通之處。在數(shù)據(jù)的輸入輸出格式方面也可以參考Fortran。對于初學者來說,輸入數(shù)據(jù)時更容易引發(fā)錯誤,所以下面談幾點在這方面的小認識。
APDL 從外部文件輸入數(shù)據(jù),一般是采用*vread命令實現(xiàn),而輸入格式一般是在此命令的下一行定義,關于此命令的具體應用,可參見ANSYS幫助。
在輸入格式方面與Fortran不同:
(1)APDL在數(shù)值方面沒有整型(I)、G型描述符,字符型數(shù)據(jù)采用A描述符,沒有H描述符。
(2)在Fortran中如果數(shù)據(jù)是整數(shù),但是輸入格式采用實數(shù)(如單精度浮點型F),則系統(tǒng)可以按指定格式自動為數(shù)據(jù)加上小數(shù)點,但在APDL中如輸入數(shù)據(jù)為整數(shù),如:6,則格式 Fw.d中的d只能為零,否則會出現(xiàn)讀入錯誤;而如果是6.則Fw.d中的d可以不為0。
另外在輸入時還容易引起輸入錯誤的是:
(1) 輸入格式的長度大于數(shù)據(jù)長度(指前一個數(shù)據(jù)的起至緊接的下一個數(shù)據(jù)的起始前一位,小數(shù)點和負號均占一位),如6._ _ _ _-5.6,前面的數(shù)據(jù)長度應為6,如果輸入格式Fw.d中的w>6,則會出現(xiàn)讀入錯誤;
(2) 格式語句應置于*vread的下一行,兩行之間可以有空行,但不能有其它語句,甚至是注釋語句也不能有。
二、輸出格式
輸出與輸入在格式方面基本一致,用*vwrite執(zhí)行,但也有不同之處:
輸出時可以使用%c控制字符輸出,%wI控制整數(shù)輸出;%w.pF或%w.pE或%w.pG控制實數(shù)輸出;
不能加括號。如格式語句: (F6.0,F5.2,A3),對應于:%6.0F%5.2F%3c;
應注意后一種格式中沒有用逗號相隔開,也沒有用括號括起,如有逗號,逗號也將一并輸出。
注意:輸入輸出格式最好從一行的開始寫,前面不要有空格
用%號(%wI)的這種格式可以輸出整型數(shù)字。
%這種控制語句也應緊接*vwrite行,可以有空行,但不能有其它語句夾在中間(注釋也不行)。
應當指出的是,%這種控制語句不能用在控制輸入中。
三、一個例子
幾點說明:
1.使用*VWrite命令把數(shù)據(jù)輸出到文件時,必須要使用*CFOpen命令事先打 開一個 文件;*CFOpen命令必須和*CFClos命令配對使用;
2.*Vwrite命令后面必須緊跟輸出格式說明;
例如:
*Vwrite,a,b,c
(格式說明)
3.格式說明中Fw.d,w的數(shù)值不能太小,以至于輸出的數(shù)據(jù)丟失了整數(shù)部分的 精度;
例如:a=123.4,
Fw.d中的w至少要為5,否則在ANSYS中運行時報錯;這樣的非語法類錯誤,很難發(fā)現(xiàn);為了避免此類錯誤發(fā)生,
w應該至少設置為輸出數(shù)據(jù)的所有數(shù)字個數(shù)+1(小數(shù)點)
附:常用格式說明:***********************************************************************************************
1.''(一對單引號):用于在輸出數(shù)據(jù)的時候,輸出注釋字符串,常常用來增加一些說明文字,增加可讀性;
比如:
*Vwrite,Widh,Length,Height
('寬度為:',F6.3,'長度為:',F6.3,'高度為:',F6.3)
2.nX:輸出n個空格;
比如:在輸出的a,b,c3個數(shù)據(jù)之間加入2個空格;
*vwrite,a,b,c
(F6.3,2X,F6.3,2X,F6.3)
3./:結束當前行的輸出,轉(zhuǎn)到下一行輸出;如果兩個//連續(xù)出現(xiàn),則添加一個空行;
實數(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
②當采用科學計數(shù)時,輸出格式的第一位都是“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格式輸出實數(shù)
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
二、數(shù)組的輸出
(一)VWRITE方法
數(shù)組輸出格式同上,但其輸出控制卻有很多種形式,且ANSYS按列輸出數(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的輸出特點,分別寫出各列表示符即可,而行則從1到最終的5。
② 同上格式,但按矩陣元素輸出用一對()將矩陣表達式括起來變?yōu)榫仃囋?這樣用循環(huán)輸出,如命令流中所示。
③當列很多時不可能寫出每個列字符表達式,此時可采用$字符格式$字符表示連續(xù)輸出,沒有回車符號,當一行寫完后,增加一個非$格式語句即可。但是這里增加了一個臨時數(shù)組,以存儲某行的數(shù)據(jù)。
上述輸出格式便于導入EXCELL中處理數(shù)據(jù)。
(二)MWRITE命令
數(shù)組最好采用*MWRITE命令輸出,不管是否按類似矩陣格式輸出,此命令均可較好解決。當矩陣列數(shù)較少時,可以采用類似行列輸出;當矩陣列數(shù)很大時,可以按每行N個數(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-多列時按行列輸出
*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個的數(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ù)表。
*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
/*******************************************************/
|