ANSYS APDL命令進(jìn)行數(shù)據(jù)文件讀寫的實(shí)例

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

  本文介紹ANSYS APDL命令進(jìn)行數(shù)據(jù)文件讀寫的實(shí)例


  一 FORTRAN數(shù)據(jù)格式

  I格式(又叫整數(shù)格式)

  一般形式:Iw 或:Iw.m

  其中:w 一個(gè)數(shù)據(jù)占的位數(shù)寬度(又稱“字段寬度”),m 需要輸出的最少數(shù)字位數(shù)。例1:

  (1)數(shù)字在指定的區(qū)域內(nèi)向右端靠齊,如果數(shù)字位數(shù)比指定的字段寬度w小,則左邊補(bǔ)以空格。負(fù)數(shù)的符號(hào)也包含在字段寬度內(nèi)。

  (2)如果數(shù)字的位數(shù)超過了規(guī)定的字段寬度w,則不輸出有效數(shù)據(jù),而在該字段寬度范圍內(nèi)充滿“*”符號(hào)。

  (3)如果數(shù)字的位數(shù)超過了m,則按實(shí)際應(yīng)輸出的位數(shù)輸出(但條件是不能超過w)。m不包括負(fù)號(hào)所占的一列。

  F格式(又叫小數(shù)型格式)

  一般形式:Fw.d

  w 各數(shù)值占的總位數(shù) d 輸出數(shù)據(jù)的小數(shù)位數(shù)(小數(shù)點(diǎn)后的位數(shù))。 例1:

  (1)數(shù)字在指定的區(qū)域內(nèi)向右端靠齊,如果數(shù)字位數(shù)(含小數(shù)點(diǎn)和符號(hào)位)比指定的字段寬度w小,則左邊補(bǔ)以空格;如果數(shù)字的位數(shù)超過了規(guī)定的字段寬度w,則不輸出有效數(shù)據(jù),而在該字段寬度范圍內(nèi)充滿“*”符號(hào)。

  (2)如果數(shù)據(jù)的小數(shù)位數(shù)比指定的小數(shù)位數(shù)d小,則在小數(shù)右邊補(bǔ)0以湊足d位;如果小數(shù)位數(shù)大于d位,則輸出時(shí)多于的小數(shù)位數(shù)按“四舍五入”規(guī)則舍去。

  (3)假設(shè)b為數(shù)據(jù)整數(shù)部分的位數(shù),則應(yīng)使w≥b+d+1(小數(shù)點(diǎn)占一列),如果輸出負(fù)數(shù),則應(yīng)保證w≥b+d+2(小數(shù)點(diǎn)和負(fù)號(hào)各占一列)。

  (4)用F格式輸出時(shí)應(yīng)注意,由于難以事先確切估計(jì)出數(shù)據(jù)的大小,輸出大的數(shù)時(shí)容易產(chǎn)生“寬度不夠”的錯(cuò)誤(由于w不夠大),輸出小的數(shù)時(shí)會(huì)出現(xiàn)丟掉有用數(shù)字的情況(由于d不夠大而將后面的數(shù)字截去),這就是“大數(shù)印錯(cuò),小數(shù)印丟”。

  E格式(又叫指數(shù)型格式)

  一般形式:w.d

  w 各數(shù)值占的總位數(shù),d 輸出數(shù)據(jù)的小數(shù)位數(shù)(小數(shù)點(diǎn)后的位數(shù))。例1:

  (1)采取標(biāo)準(zhǔn)化的指數(shù)形式輸出一個(gè)實(shí)數(shù),d為以指數(shù)形式出現(xiàn)的數(shù)據(jù)的數(shù)字部分的小數(shù)位數(shù)。

  (2)指數(shù)部分一般占4列,其中字母“E”和指數(shù)的符號(hào)各占一列,指數(shù)2列。 小數(shù)部分d列,再加上一個(gè)小數(shù)點(diǎn)和小數(shù)點(diǎn)前的一個(gè)“0”,因此要保證w≥d+6,輸出負(fù)數(shù)時(shí),w≥d+7。

  (3)有的計(jì)算機(jī)系統(tǒng)允許有較大的實(shí)數(shù)范圍,FORTRAN77提供了一種擴(kuò)充的編輯符, 可以輸出三位或四位指數(shù)。這種編輯符的形式為:Ew.dEe,用e指定指數(shù)的位數(shù)。有的計(jì)算機(jī)系統(tǒng)的FORTRAN編譯系統(tǒng)已根據(jù)其允許的實(shí)數(shù)范圍,自動(dòng)將指數(shù)的位數(shù)改為3位或4位,不必在RORMAT語句中用Ew.dEe編輯符單獨(dú)為某些數(shù)據(jù)指定所需的指數(shù)位數(shù),只需寫Ew.d形式即可,輸出時(shí)系統(tǒng)會(huì)給出三位(或四位)指數(shù)。

  G格式

  G格式可以根據(jù)輸出的實(shí)數(shù)大小決定用小數(shù)形式(F格式)輸出或指數(shù)形式(E格式)輸出。當(dāng)輸出大數(shù)值或小數(shù)值時(shí)自動(dòng)按E格式,當(dāng)輸出的數(shù)不大不小時(shí)用F格式。其一般形式為:Gw.d

  (1)凡絕對(duì)值小于0.1的數(shù)或絕對(duì)值大于10d的數(shù)用E格式輸出;其余的數(shù)用F格式輸出。

  (2)用E格式輸出時(shí),最后4列為指數(shù)部分,而用F格式輸出時(shí)最后4列留空。

  (3)用指數(shù)形式輸出時(shí),格式同Ew.d;用F格式輸出時(shí),不是按Fw.d形式輸出,d規(guī)定的不是小數(shù)位數(shù)而是打印出來的全部數(shù)字的位數(shù),小數(shù)位數(shù)根據(jù)數(shù)值大小和d的大小而定,這樣做的目的是使數(shù)的整數(shù)部分能全部保留,而適當(dāng)截去小數(shù)部分,以保證輸出數(shù)值的正確性。因?yàn)樾∮?0d的數(shù),其整數(shù)部分最多為d位,因此,可以全部輸出這d位整數(shù),小數(shù)的位數(shù)為:d-(數(shù)值整數(shù)位數(shù))。

  D格式

  一般形式:Dw.a

  用于雙精度數(shù)據(jù)的輸出,使用方法與E格式相仿,只是把字母“E”換成“D”。

  L格式

  一般形式:Lw

  用于邏輯型數(shù)據(jù)的輸出,w 輸出數(shù)據(jù)的字段寬度。邏輯值“.TRUE.",在輸出時(shí)打印一個(gè)字母T;邏輯值".FLASE.",在輸出時(shí)打印一個(gè)字母F。T和F打印在字段范圍內(nèi)的最右端。

  A格式

  一般形式:Aw 或:A

  用于字符型數(shù)據(jù)的輸出,w為字段寬度,不指定w時(shí)(即形式:A),按字符變量的實(shí)際長(zhǎng)度(即程序定義該變量時(shí)的長(zhǎng)度)輸出。

  字符串在指定的區(qū)域內(nèi)向右端靠齊,如果字符串的位數(shù)比指定的字段寬度w小,則左邊補(bǔ)以空格;如果字符串的位數(shù)超過了規(guī)定的字段寬度w,則只輸出最左面的w個(gè)字符。

  ‘(撇號(hào))格式

  用來插入所需的字符串, 如果需要輸出的字符包括撇號(hào),則用兩個(gè)連續(xù)的撇號(hào)代表一個(gè)被輸出的撇號(hào)字符。

  H格式

  一般形式:nH <字符串>

  用來輸出字符常量,與撇號(hào)格式相似。n為字符串中字符的個(gè)數(shù)。 可以單獨(dú)用撇號(hào)格式或H格式輸出字符串而不必要求WRITE語句中有相應(yīng)的輸出項(xiàng)。 用H格式必須準(zhǔn)確地?cái)?shù)出字符串中的字符個(gè)數(shù),數(shù)錯(cuò)了就會(huì)造成錯(cuò)誤。所以最好不用H編輯符而用撇號(hào)編輯符,后者不必?cái)?shù)字符,使用方便,字符串界線清楚無誤。FORTRAN 77之所以保留H編輯符主要是為了與FORTRAN 66兼容(FORTRAN 66只能用H編輯符輸出字符串而沒有撇號(hào)編輯符)。

  X格式

  一般形式:nX

  用于輸出空格,n 輸出的空格數(shù)目。即插入n個(gè)空格,或者說,使打印的“當(dāng)前位置”向右移動(dòng)n列。如果不用X格式插入空格,數(shù)據(jù)將連成一片,難以區(qū)分開。

  注意:不要把2X作為與A對(duì)應(yīng)的格式符,WRITE語句中的I,A,B分別與FORMAT語句中的I3,F6.2和E11.5格式符對(duì)應(yīng)。X格式符不能用來提供整數(shù)、實(shí)數(shù)、以及其它類型數(shù)據(jù)的輸出格式,它只能插入若干個(gè)空格。

  FORTRAN 77還允許n是負(fù)整數(shù),表示從當(dāng)前位置向左移動(dòng)n的絕對(duì)值列。微機(jī)上使用的FORTRAN子集不能使用n為負(fù)值的格式符。

  /(斜杠)格式

  斜杠(/)編輯符的作用是:結(jié)束本記錄的輸出并開始下一個(gè)記錄的輸出。例如:

  二 關(guān)鍵命令

  2.1 *VREAD 按指定格式將數(shù)據(jù)讀入數(shù)組中

  *VREAD, ParR, Fname, Ext, --, Label, n1, n2, n3, NSKIP

  ParR 定義好的數(shù)組名稱 ,且指出開始寫入的位置,即下標(biāo)(i,j)

  Fname 數(shù)據(jù)文件名稱

  Ext 數(shù)據(jù)文件的擴(kuò)展名

  -- 沒有啟用的保留域

  Label

  可為IJK, IKJ, JIK, JKI, KIJ, KJI, or blank (IJK),表示你對(duì)ParR寫入的順序,下標(biāo)變化依次變慢,如IJK表示先寫列再寫行(列下標(biāo)J變化最快),JIK表示先寫行再寫列。

  n1, n2, n3

  表示按上面的順序要寫入的數(shù)據(jù)個(gè)數(shù),如JIK,5,6表示對(duì)ParR按行寫入,共寫5列6行。

  NSKIP 讀入數(shù)據(jù)時(shí)需要跳過的行數(shù)。

  特別注意:

  *VREAD后面要緊跟帶括號(hào)的指定格式,描述對(duì)數(shù)據(jù)文件每行的讀法,如(F3.0,F11.0)每行讀兩個(gè)數(shù),分別占3,11個(gè)字符寬度。

  2.2 *VWRITE 用來輸出數(shù)組、數(shù)值參數(shù)、字符參數(shù)或常量到文件里。它一次最多可以寫入19個(gè)參數(shù),使用該命令時(shí),緊跟著該命令的下一行必須是FORTRAN77的格式規(guī)定。數(shù)組矢量要指定起始元素位置??梢杂帽磉_(dá)式來計(jì)算數(shù)據(jù)文件中每一行的位置。

  *vwrite命令的使用格式如下:

  *VWRITE, Par1, Par2, Par3, Par4, Par5, Par6, Par7, Par8, Par9, Par10, Par11, Par12, Par13, Par14, Par15, Par16, Par17, Par18, Par19

  其中par1~par19是依次寫出的19個(gè)參數(shù)或者常數(shù),某個(gè)空值表示忽略,所有都忽略則輸出一空行。允許寫出的數(shù)據(jù)包括常數(shù),變量與數(shù)組,包括數(shù)值型和字符型數(shù)據(jù)。

  2.3 *cfopen在*vwrite之前需利用*cfopen打開的一個(gè)數(shù)據(jù)文件,表示其后的并將*cfopen和*cfclos之間所有的*vwrite寫出的數(shù)據(jù)都輸入到該數(shù)據(jù)文件中。

  *cfopen,fname,ext,--,loc

  fname是帶路徑的文件名(兩者允許至多250字符長(zhǎng)度),缺省路徑為工作目錄,文件名缺省為jobnmae。

  ext是文件的擴(kuò)展名(至多是8個(gè)字符長(zhǎng)度)。如果fname為空,那么擴(kuò)展名缺省為cmd。

  --表示該域是不需要使用的值域。

  loc用于確定打開的文件已經(jīng)存在時(shí),缺省表示采用覆蓋方式寫數(shù)據(jù)到文件中,設(shè)置成append表示采用追加方式寫數(shù)據(jù)到文件中。

  與*cfopen成對(duì)使用的另外一個(gè)命令時(shí)*cfclos命令,總是在*cfopen命令與一序列數(shù)據(jù)*vwrite命令之后,用于關(guān)閉用*cfopen命令打開的文件。

  *cfclos命令的使用格式如下:*cfclos

  2.4 /OUTPUT

  /OUTPUT

  /OUTPUT, Fname, Ext, --, Loc

  輸出txt數(shù)據(jù)到文件或窗口

  Fname 文件名和路徑。如果為空,則輸出到默認(rèn)系統(tǒng)輸出文件中。

  Ext 文件擴(kuò)展名

  -- 保留的未使用域。

  Loc

  blank — 覆蓋式輸出

  APPEND — 追加式輸出

  三 實(shí)例解析

  3.1 首先創(chuàng)建一個(gè)數(shù)據(jù)文件

  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,mememama,dat

  *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,f10.4)

  *cfclos

  運(yùn)行該文件后,生成的數(shù)據(jù)格式如下:

  vwrite demo

  ***********************

  'weight: 234.56'kg'

  ******array parameter output demo******

  float format/sequ keyword:

  1. 10.2000

  2. 324.5000

  3. 123.7000

  4. 908.0000

  3.2 將數(shù)據(jù)讀入數(shù)組

  *DIM,mememama,,4,2

  *VREAD,mememama(1,1),mememama,dat,,JIK,2,4,,6

  (f3.0,f10.4)

  運(yùn)行該文件后,點(diǎn)擊[Parameters]->Array Parameters,就可以看到得到的數(shù)組了。


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

相關(guān)標(biāo)簽搜索:ANSYS APDL命令進(jìn)行數(shù)據(jù)文件讀寫的實(shí)例 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) 

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

全國服務(wù)熱線

1358-032-9919

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