ABAQUS-二次開發(fā)資料-UMAT_第1頁
ABAQUS-二次開發(fā)資料-UMAT_第2頁
ABAQUS-二次開發(fā)資料-UMAT_第3頁
ABAQUS-二次開發(fā)資料-UMAT_第4頁
ABAQUS-二次開發(fā)資料-UMAT_第5頁
已閱讀5頁,還剩36頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、各個樓層及內容索引2-什么是UMAT3-UMAT功能簡介4-UMAT開始的變量聲明5-UMAT中各個變量的詳細解釋6-關于沙漏和橫向剪切剛度7-UMAT流程和參數表格實例展示8-FORTRAN語言中的接口程序Interface9-關于UMAT是否可以用Fortran90編寫的問題10-17-Fortran77的一些有用的知識簡介20-2530-32-彈塑性力學相關知識簡介34-37-用戶材料子程序實例JOhn-cook模型壓縮包下載38-JOhn-cook模型本構簡介圖40-用戶材料子程序實例JOhn-cook模型完整程序+david詳細注解歡迎大家來看看,并提供意見,完全是自己的diy的,不

2、保證完全正確,希望共同探討,以便更正,帶"?"部分,還望各位大師同仁指教1 什么是UMAT?1.1 UMAT功能簡介!-摘自莊茁老師的書UMAT子程序具有強大的功能,使用UMAT子程序:(1)可以定義材料的本構關系,使用ABAQUS材料庫中沒有包含的材料進行計算,擴充程序功能。ABAQUS軟件2003年度用戶年會論文集(2)幾乎可以用于力學行為分析的任何分析過程,幾乎可以把用戶材料屬性賦予ABAQUS中的任何單元;(3)必須在UMAT中提供材料本構模型的雅可比(Jacobian)矩陣,即應力增量對應變增量的變化率。(4)可以和用戶子程序“USDFLD”聯合使用,通過“USD

3、FLD”重新定義單元每一物質點上傳遞到UMAT中場變量的數值。1.2 UMAT開始的變量聲明由于主程序與UMAT之間存在數據傳遞,甚至共用一些變量,因此必須遵守有關書寫格式,UMAT中常用的變量在文件開頭予以定義,通常格式為:SUBROUTINE UMAT(STRESS,STATEV,DDSDDE,SSE,SPD,SCD,1 RPL,DDSDDT,DRPLDE,DRPLDT,2STRAN,DSTRAN,TIME,DTIME,TEMP,DTEMP,PREDEF,DPRED,CMNAME3 NDI,NSHR,NTENS,NSTATV,PROPS,NPROPS,COORDS,DROT,PNEWDT,

4、4 CELENT,DFGRD0,DFGRD1,NOEL,NPT,LAYER,KSPT,KSTEP,KINC)CINCLUDE'ABA_PARAM.INC'-此處是將ABAQUS本身自帶的參量精度定義的文件包含進來后面詳說CCHARACTER*80 CMNAMEDIMENSION STRESS(NTENS),STATEV(NSTATV),1 DDSDDE(NTENS,NTENS),DDSDDT(NTENS),DRPLDE(NTENS),2 STRAN(NTENS),DSTRAN(NTENS),TIME(2),PREDEF(1),DPRED(1),3 PROPS(NPROPS),C

5、OORDS(3),DROT(3,3),DFGRD0(3,3),DFGRD1(3,3)-以上是變量聲明吧!user coding to define DDSDDE,STRESS,STATEV,SSE,SPD,SCDand,if necessary,RPL,DDSDDT,DRPLDE,DRPLDT,PNEWDT-此處,看來是將用戶定義材料屬性的fortran程序編入RETURN-這是返回值END-結束UMAT中各個變量的詳細解釋凡是-注明david的,都是我自己猜的,僅供參考DDSDDE (NTENS ,NTENS)是一個NTENSNumber of the Tensions-david維的方陣,

6、稱作雅可比矩陣,應力增量/應變增量的偏導數,DDSDDE (I ,J)表示增量步結束時第J個應變分量的改變引起的第I個應力增量的變化!雅可比是一個對稱矩陣,除非在“*USER MATERIAL”語句中加"UNSYMM"參數STRESS (NTENS)應力張量矩陣,對應NDINumber of the Direct Components-david個直接分量和NSHRNumber of the shear Components-david個剪切分量.在增量步的開始,應力張量矩陣中的數值通過UMAT和主程序之間的接口傳遞到UMAT中,在增量步的結束,UMAT將對應力張量矩陣更新

7、,即return.對于包含剛體轉動的有限應變問題,一個增量步條用UMAT之前就已經對應力張量進行了剛體轉動,因此在UMAT中只需處理應力張量的共旋部分-這部分我沒看明白,敬請高手指點.UMAT中應力張量的度量為柯西(真實)應力STATEV (NSTATEV)STATE VARIABLES (Number of the State Variables)    用于存儲狀態(tài)變量的矩陣,在增量步開始時將數值傳遞到UMAT中。也可在子程序USDFLD或UEXPAN中先更新數據,然后增量步開始時將更新后的數據傳遞到UMAT中。在增量步的結束必須更新狀態(tài)變量矩陣中的數據。 

8、   和應力張量矩陣不同的是:對于有限應變問題,除了材料本構行為引起的數據更新以外,狀態(tài)變量矩陣中的任何矢量或者張量都必須通過旋轉來考慮材料的剛體運動。-不懂,請高手指教     狀態(tài)變量矩陣的維數NATATEV,等于關鍵字“*DEPVAR”定義的數值。狀態(tài)變量矩陣的維數通過ABAQUS輸入文件中的關鍵字“*DEPVAR”定義,關鍵字下面數據行的數值即為狀態(tài)變量矩陣的維數。      材料常數的個數,等于關鍵字“*USER MATERIAL”中“CONSTANTS”常數設定的值。PRO

9、PS (NPROPS)材料常數矩陣,矩陣中元素的數值對應于關鍵字“*USER MATERIAL”下面的數據行。SSE,SPD,SCD分別定義每一增量步的彈性應變能Elastic Strain Energy,塑性耗散Plastic Dissipation和蠕變耗散Creep Dissipation。它們對計算結果沒有影響,僅僅作為能量輸出。STRAN (NTENS):應變矩陣;DSTRAN (NTENS):D-大抵代表Deta,增量的意思-david應變增量矩陣;DTIME:增量步的時間增量;NDI:直接應力分量的個數;NSHR:剪切應力分量的個數;NTENS:總應力分量的個數,NTENS =N

10、DI +NSHR。1.3關于沙漏剛度控制和橫向剪切剛度使用UMAT時需要注意單元的沙漏控制剛度和橫向剪切剛度。通常減縮積分單元的沙漏控制剛度和板、殼、梁單元的橫向剪切剛度是通過材料屬性中的彈性性質定義的。這些剛度基于材料初始剪切模量的值,通常在材料定義中通過“*ELASTIC”選項定義。但是使用UMAT的時候,ABAQUS對程序輸入文件進行預處理的時候得不到剪切模量的數值。所以這時候用戶必須使用“*HOURGLASS STIFFNESS”選項來定義具有沙漏模式的單元的沙漏控制剛度,使用“*TRANSVERSE SHEAR STIFFNESS”選項來定義板、殼、梁單元的橫向剪切剛度。-一個問題:

11、得不到剪切模量的數值和解決方案:用戶必須使用“*HOURGLASS STIFFNESS”選項來定義具有沙漏模式的單元的沙漏控制剛度,使用“*TRANSVERSE SHEAR STIFFNESS”選項來定義板、殼、梁單元的橫向剪切剛度1.4關于UMAT的流程圖和參數表格實例跟大家說說所謂的接口程序Interface-FORTRAN的知識在Fortan語言中,主調程序和被調程序是分別編譯的.由于Fortran90對過程的許多功能做了擴充,有些功能單靠簡單的調用語句已經無法反應,因而系統也就無法進行正確的編譯,這時需要在主調程序中加入interface接口塊,通過它為主調程序和被調程序指明一個顯示的

12、接口.如果被調用中啞元含有假定形狀assumed-shape數組,或可選變元,或含鍵盤輸入的參數,就需要interface接口塊說明.一般來講,在Fortran90程序之間需要提供interface塊有三種方法:1.將interface接口塊直接寫入調用程序,并復制被調用程序的參數列表這種方法簡單易用,但也相應增加了維護代碼的工作量,因為只要被調用程序的參數列表發(fā)生變化,就必須相應改變interface接口塊和調用call語句.2.可以將一個軟件包中所有程序的interface塊寫入一個模塊中,該模塊被軟件包中的所有程序使用.這樣做的優(yōu)點是只需一個模塊來檢查interface定義,缺點是仍需對

13、此模塊和調用語句進行維護.3.Fortran90編譯器可在contains語句后自動提供過程之間的interface塊,這種interface塊可用于使用模塊的任何程序.建議在同一個軟件包中使用23的形式,在調用軟件包的入口程序時采用12的形式!是不是在UMAT中,我們所編譯的帶接口的Fortran程序為調用程序,原ABAQUS主程序為被調用程序,調用程序中的第一部分我們先復制被調入程序的參數列表?似乎和ABAQUS主程序調用UMAT有些相反了?不過個人認為interface作為一個接口塊,在Fortran語法中應該放在主調程序中,且復制被調程序的參數列表.而UMAT的參數變量的聲明,只不過是

14、為了和ABAQUS使用一致的變量格式,當Fortran程序處理完材料的本構定義之后再以這一致的形式將變量值返回到ABAQUS主程序中吧2 關于UMAT用Fortran90可不可以的問題在論壇上搜索了關于這個問題,某位高手說是可以的,只要你自己裝的Fortran編譯器能成功編譯你的Fortran90程序即可,個人認為也是如此,不過我還沒有證明過!2.1關于Fortran77的一些有用的簡介1:Fortran77的基本結構:1. 一個Fortran源程序由一個或者多個程序單位組成,每個獨立的程序單位以'end'語句結束2. 每個程序單位包括若干行不能一行寫多條語句,但是可以一個語句

15、寫成行;分為語句行執(zhí)行語句行和非執(zhí)行語句和非語句行注釋行源程序的書寫格式:1. 不區(qū)分大小寫:每行只能80列以內,并把80列分為四個區(qū)2. 1-5列:標號區(qū)1-5位整數;第一列為'*'或者'C'時,為注釋行3. 第6列,續(xù)行標志區(qū)非空格或非0;最多19個續(xù)行4. 7-72列:語句區(qū)書寫語句:一行只能寫一個語句5. 73-80列:語句注釋區(qū)一般做編號注釋程序的編輯與運行:1. 創(chuàng)建源程序文件并編寫源程序2. 編譯并連接源文件3. 運行程序編譯生成的可執(zhí)行文件常量:六種1. 整型常量Integer4位:正負整數和02. 實型常量Real4位:小數和指數形式3. 雙精

16、度常量Double precision8位4. 復型常量Complex8位5. 邏輯性常量Logical4位6. 字符型常量Character1位變量· 變量名1. 第一個字符是字母第一個字符后可跟1-5個字母或者數字2. 不區(qū)分大小寫3. 空格不起作用4. 允許變量名與語言中具有特定含義的字同名,但盡量不適用5. 盡量"見名知義"· 變量類型      不同的變量類型用來存放不同類型的常量數據.變量相應的也有六種;變量在使用前必須首先對其進行類型說明,三種說明方法:     

17、0;           按優(yōu)先級別排列                                         1. 類型說明語句:類型 變量名列表,多個變量名之間用逗號隔開,如     R

18、EAL                                               A,B,C     DOUBLE    PRECISION       

19、;           X,Y,Z或者REAL*8   X,Y,Z         CHARACTER*5 缺省字符長度5    STR1,STR2*8,STR3*19     此處,STR1未指明長度,則默認使用缺省長度5;STR2的長度為 8;STR3的長度為19     2. IMPLCIT語句:IMPLICIT 類型字母表,類型字母表,.&

20、#160;            如: IMPLICIT  REAL(A-D),INTERGER(I-M),DOUBLE PRECISION  (X,Z)           3. I-N規(guī)則:Fortran規(guī)定,不加說明的情況下,I-N為整型,其他都為實型幾點說明類型語句說明位于所有可執(zhí)行語句的前面;IMPLICIT語句位于最前面;IMPLICIT NONE取消IMPLICIT說明和I-N規(guī)則,所有的變量必須顯式說

21、明;只在本程序單位有效.2.2關于Fortran77的一些有用的簡介2:算術表達式:1. 運算符: +,  -,  *,  /,   *2. 優(yōu)先級: ( ),  * ,  * / ,  +-3. 書寫問題1. * 不能省略2. 括號不分大小寫,成對出現3. 多次乘方,按'先右邊后左邊'處理4. 運算符不能連續(xù)出現,要用小括號隔開5. 運算順序  )->函數->*->*,/->+,-6. 運算中的

22、類型問題:運算類型相同:結果仍為原類型;不同,則自動轉換成同一類型7. 誤差問題:1. 溢出:超出有效數字范圍->解決:很大或者很小的數用實型的指數表示2. 誤差:由于有效數字的位數限制,實型數運算存在誤差->解決:轉換成雙精度型或者避免因為書寫不當造成有效數字的丟失簡單輸出輸入語句:輸入輸出三要素:對象哪些數據;格式;設備.輸出語句輸出語句的分類:格式輸出'表控格式輸出系統標準格式;無格式輸出二進制1. 表控輸出語句:按計算機系統規(guī)定的格式輸出:系統自動為每種類型的數據規(guī)定了列數1. 整數的表控輸出格式與具體的計算機系統有關:規(guī)定每個整數占13列,打印在右端,左補空格;2

23、. 實數的表控輸出格式:規(guī)定每個實數占17列,打印在右端,左補空格,小數部分占7列;當實數的絕對值>=10*7或<1時,按標準的指數格式輸出,共占15列,指數4列,小數6列2. 表控格式輸出語句:1. print*,<輸出表列>:            print*,56.8,1252. write(*,*)<輸出表列>輸入語句   輸入輸出三要素:對象;格式;設備.   分類:同上1. 表控輸入語句1. 自由格式輸入->語句:rea

24、d*,<輸入表列>read(*,*)<輸入表列>2. 輸入數據以逗號或者空格作為間隔3. 變量名稱為輸入表4. 輸入的數據應和輸入表的變量個數類型次序嚴格地一一對應;少了,程序停止,等待繼續(xù)輸入;多了,程序繼續(xù)進行,多余的不起作用;較多的數據可以幾個一組,回車,再輸入幾個一組,回車.5. 重復數據,可以7*3->7,7,76. 每一個read(*,*)和write(*,*)語句從一個新的記錄以回車結束的一批輸入輸出數據開始讀數輸出1. 例如:read(*,*)          A,B,C2.  

25、;       read(*,*)          D,I,J3. 輸入:                       2.3,-63.5回車4.                      

26、;          6.4,91.0回車5.                                5,8回車6. 結果:                       A

27、=2.3,B=-63.5,C=6.4,7.                                從新記錄開始讀數8.                                D=5.0

28、,I=8,J未被賦值PARAMETER語句作用:將程序中經常用到的參數或字符串定義成一個符號常量,其值不可改變.語句:parameter(p1=c1,p2=c2,.,pn=cn)注意:1. 符號常量的命名規(guī)則與變量名相同,但在程序中其值不可改變,也不能賦值;2. 符號變量也有類型,可用前面的三種類型說明方法說明類型;3. 參數語句是非執(zhí)行語句,位于所有可執(zhí)行語句的前面,單位與類型說明語句的后面;4. 一條語句可以定義多個符號常量;5. 優(yōu)點:方便修改程序END,STOP,PAUSE語句END語句:結束標志,有且僅有一條PAUSEn語句:暫定執(zhí)行;用于調試程序,n可以是一個字符串或不超過5位的數

29、STOPn語句:停止運行語句;用于調試程序,n可以是一個字符串或不超過5位的數2.3關于Fortran77的一些有用的簡介3:邏輯運算和選擇結構· 關系表達式1. 構成選擇判斷的基本式子2. 關系運算符:1. .GT.greater than                                   >2. .GE.greater

30、than or equal to                 >=3. .LT.limiter than                                      <4. .LE.limi

31、ter than or equal to                    <=5. .EQ.equal to                                       &

32、#160;  =6. .NE.not equal to                                    3. 一般形式:<算術量或者算術表達式><關系運算符><算術量或者算術表達式>4. 運算結果:邏輯值:真.TRUE.假.FALSE.5. 運算順序:算術運算>關系運算· 邏

33、輯表達式1. 運算符:1. .and.2. .or.3. .not.4. .eqv.邏輯等5. .neqv.邏輯不等2. 一般形式:<邏輯變量邏輯常量關系表達式><邏輯運算符><邏輯變量邏輯常量關系表達式>3. 結果:邏輯值:真.TRUE.假.FALSE.4. 運算順序:算術運算->關系運算->邏輯運算5. 邏輯運算優(yōu)先級:.not.->.and.->.or.->.eqv.->.neqv.關于Fortran77的一些有用的簡介4:IF類選擇結構· 用塊IF實現選擇結構:三種典型形式1. 基本形式1. IF(條件)

34、              THEN           (塊IF語句)2.     塊1                                    

35、;  (THEN塊)3. ELSE                                      (ELSE語句)4.     塊2                  

36、                    (ELSE塊)5. ENDIF                                      (ENDIF語句)6. 說明:IF.THEN語句為塊I

37、F結構的入口語句;ENDIF語句為出口語句,必須一一對應,配對使用2. 簡單結構1. IF(條件)   THEN  2. 塊3. ENDIF4. 說明:沒有else塊3. 嵌套結構1. IF(  )  THEN2. 塊13. ELSE IF(  ) THEN4. 塊25. .6. ELSE IF(  )  THEN7. 塊n8. ELSE  塊n+19. ENDIF· 邏輯IF語句只用一行表示一種選擇結構,當且僅當條件成立時執(zhí)

38、行,并且只執(zhí)行一條語句;IF(條件)  語句· 算術IF語句IF<算術表達式> N1,N2,N3當算術表達式的值                            <0執(zhí)行標號為N1的語句;                    

39、0;       =0執(zhí)行標號為N2的語句;                            >0執(zhí)行標號為N1的語句;關于Fortran77的一些有用的簡介5:循環(huán)結構· 結構形式:循環(huán)體由一些可執(zhí)行的語句組成+循環(huán)控制語句控制循環(huán)的開始和結束· 分類:條件型循環(huán)和計數型循環(huán)DO循環(huán)GOTO語句實現循環(huán)· 一般形式:GOTO<S

40、1>  其中:S1為語句標號· 功能:程序執(zhí)行到此語句時,無條件的轉向標號為S1的語句DO語句實現循環(huán)· 當循環(huán)的初值終值循環(huán)次數都已知時,可用;· 組成:一個DO語句和循環(huán)體組成· 一般形式:            DO  S1 I=E1,E2 ,E3DO    I=E1,E2 ,E3           .S1 

41、60;<終端語句>           .ENDDO例如DO  10  I=1,19,2DO  10  I=E1,19 ,2        SUM=SUM+1S1  CONTINUE10       SUM=SUM+1 DO   I=1,19,2   

42、60;    SUM=SUM+1ENDDO· 說明1. I為循環(huán)變量,S1為語句標號,是本程序單位中另一可執(zhí)行語句的標號;2. 步長可以省略,缺省值=1;3. 循環(huán)初值E1,終值E2和步長E3都可以是常量變量表達式;4. 由于實數在內存中存儲的誤差,I,E1,E2,E3盡可能用振型量5. E1,E2,E3都可正可負,E1,E2,可為0,但是E3不能為0.· 具體執(zhí)行過程1. 執(zhí)行DO語句,首先計算表達式E1,E2,E3的值,若他們的類型與循環(huán)變量I不一致,則自動轉換成循環(huán)變量的類型2. 將E1的值賦予循環(huán)變量I,及執(zhí)行賦值語句:I=E1;3.

43、計算循環(huán)次數:R=MAX0(E2-E1+E3)/E3,MAX0表示從多個整型變量中取最大的一個;4. 檢查循環(huán)次數:若R=0則不執(zhí)行循環(huán)體內的語句,跳出循環(huán);R0 則執(zhí)行循環(huán)體內的語句5. 執(zhí)行循環(huán)終端語句:I=I+E3,即是循環(huán)變量獲得一個新值,而循環(huán)次數R自動減1;6. 返回步驟4,繼續(xù)執(zhí)行,直到R=0.· CONTINUE語句     循環(huán)終端語句必須是可執(zhí)行語句;那么,這種作為循環(huán)終端的語句具有雙重作用:一是作為循環(huán)終端的標志;而是要完成自身的功能.因此影響了程序的可讀性.FORTRAN用一個專門的語句作為DO循環(huán)的終端語句,即CONT

44、INUE語句.它自身沒有任何功能.· 一些規(guī)定1. 循環(huán)變量在循環(huán)體內只能被引用,不能被賦值;2. 在執(zhí)行DO循環(huán)體期間,E1,E2,E3的值不能被改變,因為他們決定了循環(huán)的次數3. 離開DO循環(huán)后,循環(huán)變量可以在循環(huán)體外被引用,它的值為脫離循環(huán)時最后一次被賦的值;4. 程序中用到轉移語句,規(guī)定:只允許從循環(huán)體內->體外;反之不行;5. 循環(huán)終端語句必須是除GOTO,塊IF,ENDIF,END和STOP語句外的任何可執(zhí)行語句· DO循環(huán)的嵌套             在一個DO循環(huán)中還可以

45、包含一個或者多個完整的DO循環(huán),這就是DO循環(huán)的嵌套.           一般形式:             DO 10   I=1,10                           .     &#

46、160;                     .                           .                    &

47、#160;     DO  20   J=1,10                                    .                  

48、                  .                                    .     20        

49、0;        CONTINUE                            .                            .   &

50、#160;                        .      10   CONTINUE       說明:· 嵌套要完整,不能交叉· 循環(huán)變量的名字,規(guī)定:并列的循環(huán):循環(huán)變量的名字可以相同;嵌套的循環(huán):循環(huán)變量的名字不可以相同· 若多層循環(huán)的結束語句在同一個地方,可以共用一條CONTINUE語句·

51、; 控制轉向語句的使用體內->體外當型循環(huán)的實現        在無法確定循環(huán)次數的情況下可以使用當型循環(huán).當型循環(huán)是指執(zhí)行循環(huán)體要依據實現給定的條件:當條件成立時執(zhí)行循環(huán),否則不執(zhí)行.· 用DO-WHILE語句實現當型循環(huán)       一般形式:                      DO S1 ,    WHILE

52、(條件)                                      .                       S1  <終端語句&g

53、t;· 用塊IF和GOTO語句實現循環(huán)        一般形式:                       S1  IF(條件)   THEN                     &#

54、160;           塊                                  GOTO   S1                    &

55、#160;         ENDIF直到型循環(huán)的實現所謂直到型循環(huán),是指先執(zhí)行循環(huán)體,再判斷條件.如果條件為'假',繼續(xù)執(zhí)行循環(huán)體,直到條件為'真'時終止循環(huán).· 用邏輯IF語句實現:            S1  循環(huán)體                   IF(條件)&#

56、160;   GOTO  S1幾種循環(huán)形式的關系和比較· DO循環(huán)適用于已知循環(huán)次數的情況· 幾種循環(huán)可以互換             DO循環(huán):條件型循環(huán)可用次數作為條件             當型循環(huán):直到型循環(huán)             當型:塊IF語句(單邊)+GOTO語句(先判斷后執(zhí)行) 

57、            直到型:邏輯IF語句+GOTO語句(先執(zhí)行后判斷)· 各種循環(huán)可以相互嵌套2.4關于Fortran77的一些有用的簡介6:數據的輸入和輸出數據輸入輸出需要確定的三個基本要素:                輸入輸出的設備                輸入輸出的格式   &#

58、160;            輸入輸出的數據         系統中隱含的 輸入輸出的設備為:鍵盤顯示器和打印機說明:#(設備,格式)數據列表,當設備顯示為*,為默認設備輸出,好像是顯示器或默認設備輸入,鍵盤吧;格式為*,默認格式輸出輸入-david有格式的輸出 輸出語句的一般形式:                    &#

59、160;                                                              WRITE (*,S1) <輸出列表>

60、0;                                                 S1            FORMAT(格式說明)或者   

61、60;                                                                    

62、0;    PRINT S1,<輸出列表>                  S1            FORMAT(格式說明)格式說明符:        主要介紹:I,F,E,D,G,L,A,'(撇號),H,X,r(重復系數),/(斜杠)I 編輯符(Integer) 作用:用于整型數據

63、的輸出.一般形式:Iw或Iw.m 其中:I表示整型輸出,w為字段寬度,m表示輸出數據的最少數字位數 注意:數據輸出時,在指定的區(qū)域內向右靠齊;如果數據的實際位數大于指定的字段寬度w,則不輸出數據,而在該區(qū)域內充滿"*"號;當m大于數據的實際位數時,前面添0,若小于數據實際位數,則不起作用F 編輯符(Fixed point number) 作用:用于實數的小數形式輸出,一般形式:Fw.d 其中:F表示實數的小數形式輸出;w為字段寬度;d為輸出數據的小數位數E 編輯符(IExponent)作用:用于實數的指數形式輸出,一般形式:Ew.d其

64、中:E表示實數的指數形式輸出;w為字段寬度;d為數字部分的小數位數注意:指數部分占4列,負號占1列,小數點前為0.如123.45->0.12345E+03D 編輯符(Double precision)作用:用于雙精度的指數形式輸出,用法和E 編輯符相仿.一般形式w.dG 編輯符作用:由系統根據實際數據的大小來決定使用F編輯符還是E編輯符.一般形式:Gw.dL 編輯符作用:用于邏輯型數據的輸出,一般形式w其中表示整型輸出,w為字段寬度A 編輯符作用:用于字符型數據的輸出,一般形式:Aw或A其中:A表示整型輸出,w為字段寬度;若不指定,則表示按實際長度輸出' (撇號) 編輯符作用:用

65、于輸出字符常量,即把撇號內的字符串原樣輸出.注意:如果輸出的字符中包含撇號,則用兩個連續(xù)的撇號代表一個要輸出的撇號H 編輯符作用:用于輸出字符常量.一般形式:nH<str>其中:H表示輸出字符常量;n為輸出字符個數;str為輸出的字符串            (較少使用)X 編輯符作用:用于輸出空格.一般形式:nX其中:X表示輸出空格;n表示輸出的空格數重復系數r在format語句中,如果出現幾個(或者幾組)相同的格式編輯符,則可以利用重復系數而只寫一個(或者一組)編輯符.如FORMAT(&#

66、39;A=',/,4(5(1X,F4,0),/)反斜杠/編輯符作用:結束本記錄的輸出,開始下一個記錄的輸出,通常指換行.WRITE語句和FORMAT語句的相互作用WRITE語句的輸出變量個數與FORMAT語句的編輯符(不含撇號,H和X)個數可以相等,也可以不等;如果編輯符個數多,則剩余的編輯符不起作用;如果變量的個數多,則當編輯符用完后,重新使用該格式說明,當如果格式說明含帶重復系數的編輯符組,則格式說明用完后,只有最右面一個帶重復系數的編輯符組(包含重復系數)及其右面的編輯符被重復使用. 可以有空格式說明,如FORMAT(),用于輸出一個空行.有格式的輸入有格式的輸入語句&

67、#160;            一般形式:                           READ(*,S1)   <輸入列表>                  S1 

68、    FORMAT(格式說明由各種格式編輯符構成)             例如:                           READ(*,100)   A,B,C             

69、;    100    FORMAT(F5.1,E12.2,F7.2)                           END              鍵盤輸入:_15.7_2345.67E+04_705.83enter在PRINTWRITEREAD語句中包含格式

70、說明                       例如:             PRINT 100,K,Y                      100      FORMAT(18,

71、F7.2)             也可以寫成:  PRINT'(18,F7.2)',K,Y              注意寫法:        '(.)'關于Fortran77的一些有用的簡介7:數組使用原則:"先聲明,后使用"說明方法:· 用類型說明語句(顯式說明)

72、3; 用DIMENSION語句(隱式說明)數組的說明和數組元素的引用· 用類型語句說明數組1. 一般形式:  類型說明  數組說明符2. 其中:數組說明符的一般形式為:數組名(維數說明符,.)維數說明符,由"下標下界:下標上界"組成3. 例如:REAL  X(1:10),W(1:2,1:3),K(10:20)或者INTEGER B(1:100),PY(0:2,0:3,0:5)· 用DIMENSION語句說明數組1. 一般形式:DIMENSION 數組說明符,.· 說明:1. 在數組說明

73、符中,維數說明符(下標)的個數成為數組的維數2. 維數說明符只能使用整型常量或者整型符號常量表達式:如 PARANETER(I=1,J=10)    REAL  KX(I:J+5)3. 維數說明符的下標下界為1時,可以省略.如:REAL X(1:10)->REAL X(10)4. 數組說明語句必須寫在所有可執(zhí)行的語句之前.屬于非執(zhí)行語句· 數組元素的引用1. 一般形式:數組名(下標,.)2. 即要有確定的數組名和下標值,如XN(5),W(1,3),KW(1,2,3)3. 引用數組元素時,下標可用算術表達式,如果算術表達式的值為實行,則自動

74、取整.數組的邏輯結構和存儲結構邏輯結構:數組所表示的實際數據結構         存儲結構:數組在機器內存儲時的排列結構· 一維數組            邏輯結構:依次排列的一串數據            存儲結構:一組連續(xù)存放的一列數據塊· 二維數組            邏

75、輯結構:一張二維數據表            存儲結構:一組按列連續(xù)存放的數據塊· 三維數組            邏輯結構:若干張二維數據表            存儲結構:一組按頁連續(xù)存放的數據塊數組的輸入和輸出三種方式:用DO循環(huán)用隱含DO循環(huán)用數組名· 用DO循環(huán)實現數組的輸入輸出1. 優(yōu)點:數組元素的輸入輸出次序可由用戶控制2.

76、 缺點:做一次循環(huán)就換行輸入或輸出· 用隱含DO循環(huán)實現數組的輸入輸出1. 優(yōu)點:既能控制數組元素的輸入輸出順序,又能控制一行內輸入輸出數據的個數2. 例如:READ(*,*)   (G(I,J),J=1,3),I=1,2),由于是一個READ語句,所以既可以一行輸入,也可以多行輸入,鍵盤輸入如下:86,75,72enter87,70,83enter3. 注意:一個READ語句可以多行輸入;但是多個READ語句時,每一個READ語句必須從心的一行讀數.用數據名進行數組的輸入輸出使用時,其順序要與數組元素在機器內的存儲順序一致    

77、     例如:                   DIMENSION K(5)                   READ *,K-對數組進行整體操縱           等價于:READ*,K(1),K(2),K(3),K(4),K(5)&#

78、160;       也等價于:READ*,(K(I),I=1,5)使用DATA語句給數組賦初值· 一般形式: DATA  變量列表初值表,變量列表初值表.· 功能:在程序編譯期間給變量或者數組賦初值.其中,變量列表可以是變量名數組名數組元素隱DO循法;初值表只能是常量,不允許出現任何形式的表達式· 例如:  DATA   A,   B/7.85,9.1/代表賦初值A=7.85,B=9.1-david,    I,J

79、,   K /5,10,15/代表賦初值I=5,J=10,K=15-david,· 例如: DIMENSION  K(2,3)                DATA(K(I,J),J=1,3),I=1,2) /90,23,20,42,14,32/-初值列表2維3列, I=1:     90   23   20    

80、                                                                     

81、                                                      I=2:     42   14   32

82、          或                DATA  K/90,42,23,14,20,32/-排列為按列排,排滿一列之后,再排下一列;      90   23   20 -david               &

83、#160;                                                                    &#

84、160;                                                   42   14   32· 例如:         

85、;      DIMENSION  A(10)               DATA A/10*1.0/(表示'10個1.0')注意:DATA語句屬于說明語句,但是它可以放在END語句之前的任意行;當程序中有多個DATA語句給同一個變量賦初值時,以最后一條為準;程序在編譯期間給變量賦予初值,在程序執(zhí)行期間,DATA語句不起任何作用!2.5關于Fortran77的一些有用的簡介8子程序FORTRAN子程序:包括函數子程序,

86、子例行程序,數據塊子程序執(zhí)行:從主程序開始執(zhí)行,遇到調用語句再執(zhí)行相應的子程序.不同類型的子程序,關鍵字不同,調用方法也不同· 函數子程序:一種可以作為函數來調用的子程序("外部函數")1. 定義:一般形式,由FUNCTION語句和子程序體組成類型說明  FUNCTION  函數名(虛參表)                     .(子程序體)                 ENDFUNCTION  函數名(虛參表)類型說明   函數名             .(子

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論