ABAQUS-UMAT-自學(xué)知識(shí)整理貼_第1頁(yè)
ABAQUS-UMAT-自學(xué)知識(shí)整理貼_第2頁(yè)
ABAQUS-UMAT-自學(xué)知識(shí)整理貼_第3頁(yè)
ABAQUS-UMAT-自學(xué)知識(shí)整理貼_第4頁(yè)
ABAQUS-UMAT-自學(xué)知識(shí)整理貼_第5頁(yè)
已閱讀5頁(yè),還剩86頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上各個(gè)樓層及內(nèi)容索引2-什么是UMAT3-UMAT功能簡(jiǎn)介4-UMAT開(kāi)始的變量聲明5-UMAT中各個(gè)變量的詳細(xì)解釋6-關(guān)于沙漏和橫向剪切剛度7-UMAT流程和參數(shù)表格實(shí)例展示8-FORTRAN語(yǔ)言中的接口程序Interface9-關(guān)于UMAT是否可以用Fortran90編寫(xiě)的問(wèn)題10-17-Fortran77的一些有用的知識(shí)簡(jiǎn)介20-2530-32-彈塑性力學(xué)相關(guān)知識(shí)簡(jiǎn)介34-37-用戶材料子程序?qū)嵗齁Ohn-cook模型壓縮包下載38-JOhn-cook模型本構(gòu)簡(jiǎn)介圖40-用戶材料子程序?qū)嵗齁Ohn-cook模型完整程序+david詳細(xì)注解歡迎大家來(lái)看看,并提供意見(jiàn)

2、,完全是自己的diy的,不保證完全正確,希望共同探討,以便更正,帶?部分,還望各位大師同仁指教什么是UMAT?UMAT:user definedmaterial mechanical behavior用戶材料子程序,是ABAQUS提供給用戶自定義材料屬性的FORTRAN程序接口;注意是接口程序,真正的定義材料的力學(xué)行為即屬性,是用戶自己編譯的FORTRAN程序來(lái)實(shí)現(xiàn)的!UMAT通過(guò)與ABAQUS主求解程序的接口實(shí)現(xiàn)與ABAQUS的數(shù)據(jù)交流UMAT功能簡(jiǎn)介!-摘自莊茁老師的書(shū)UMAT子程序具有強(qiáng)大的功能,使用UMAT子程序:(1)可以定義材料的本構(gòu)關(guān)系,使用ABAQUS材料庫(kù)中沒(méi)有包含的材料進(jìn)行

3、計(jì)算,擴(kuò)充程序功能。ABAQUS軟件2003年度用戶年會(huì)論文集(2)幾乎可以用于力學(xué)行為分析的任何分析過(guò)程,幾乎可以把用戶材料屬性賦予ABAQUS中的任何單元;(3)必須在UMAT中提供材料本構(gòu)模型的雅可比(Jacobian)矩陣,即應(yīng)力增量對(duì)應(yīng)變?cè)隽康淖兓省?4)可以和用戶子程序“USDFLD”聯(lián)合使用,通過(guò)“USDFLD”重新定義單元每一物質(zhì)點(diǎn)上傳遞到UMAT中場(chǎng)變量的數(shù)值。UMAT開(kāi)始的變量聲明由于主程序與UMAT之間存在數(shù)據(jù)傳遞,甚至共用一些變量,因此必須遵守有關(guān)書(shū)寫(xiě)格式,UMAT中常用的變量在文件開(kāi)頭予以定義,通常格式為:SUBROUTINE UMAT(STRESS,STATEV,

4、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 CELENT,DFGRD0,DFGRD1,NOEL,NPT,LAYER,KSPT,KSTEP,KINC)CINCLUDEABA_PARAM.INC-此處是將ABAQUS本身自帶的參量精度定義的文件包含進(jìn)來(lái)后面詳說(shuō)CCHARACTER*80 CMNAMEDIMENSION STRES

5、S(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),COORDS(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,PNEWD

6、T-此處,看來(lái)是將用戶定義材料屬性的fortran程序編入RETURN-這是返回值END-結(jié)束UMAT中各個(gè)變量的詳細(xì)解釋凡是-注明david的,都是我自己猜的,僅供參考DDSDDE (NTENS ,NTENS)是一個(gè)NTENSNumber of the Tensions-david維的方陣,稱作雅可比矩陣,應(yīng)力增量/應(yīng)變?cè)隽康钠珜?dǎo)數(shù),DDSDDE (I ,J)表示增量步結(jié)束時(shí)第J個(gè)應(yīng)變分量的改變引起的第I個(gè)應(yīng)力增量的變化!雅可比是一個(gè)對(duì)稱矩陣,除非在“*USER MATERIAL”語(yǔ)句中加UNSYMM參數(shù)STRESS (NTENS)應(yīng)力張量矩陣,對(duì)應(yīng)NDINumber of the Dire

7、ct Components-david個(gè)直接分量和NSHRNumber of the shear Components-david個(gè)剪切分量.在增量步的開(kāi)始,應(yīng)力張量矩陣中的數(shù)值通過(guò)UMAT和主程序之間的接口傳遞到UMAT中,在增量步的結(jié)束,UMAT將對(duì)應(yīng)力張量矩陣更新,即return.對(duì)于包含剛體轉(zhuǎn)動(dòng)的有限應(yīng)變問(wèn)題,一個(gè)增量步條用UMAT之前就已經(jīng)對(duì)應(yīng)力張量進(jìn)行了剛體轉(zhuǎn)動(dòng),因此在UMAT中只需處理應(yīng)力張量的共旋部分-這部分我沒(méi)看明白,敬請(qǐng)高手指點(diǎn).UMAT中應(yīng)力張量的度量為柯西(真實(shí))應(yīng)力STATEV (NSTATEV)STATE VARIABLES (Number of the State

8、 Variables) 用于存儲(chǔ)狀態(tài)變量的矩陣,在增量步開(kāi)始時(shí)將數(shù)值傳遞到UMAT中。也可在子程序USDFLD或UEXPAN中先更新數(shù)據(jù),然后增量步開(kāi)始時(shí)將更新后的數(shù)據(jù)傳遞到UMAT中。在增量步的結(jié)束必須更新?tīng)顟B(tài)變量矩陣中的數(shù)據(jù)。 和應(yīng)力張量矩陣不同的是:對(duì)于有限應(yīng)變問(wèn)題,除了材料本構(gòu)行為引起的數(shù)據(jù)更新以外,狀態(tài)變量矩陣中的任何矢量或者張量都必須通過(guò)旋轉(zhuǎn)來(lái)考慮材料的剛體運(yùn)動(dòng)。-不懂,請(qǐng)高手指教 狀態(tài)變量矩陣的維數(shù)NATATEV,等于關(guān)鍵字“*DEPVAR”定義的數(shù)值。狀態(tài)變量矩陣的維數(shù)通過(guò)ABAQUS輸入文件中的關(guān)鍵字“*DEPVAR”定義,關(guān)鍵字下面數(shù)據(jù)行的數(shù)值即為狀態(tài)變量矩陣的維數(shù)。 材料

9、常數(shù)的個(gè)數(shù),等于關(guān)鍵字“*USER MATERIAL”中“CONSTANTS”常數(shù)設(shè)定的值。PROPS (NPROPS)材料常數(shù)矩陣,矩陣中元素的數(shù)值對(duì)應(yīng)于關(guān)鍵字“*USER MATERIAL”下面的數(shù)據(jù)行。SSE,SPD,SCD分別定義每一增量步的彈性應(yīng)變能Elastic Strain Energy,塑性耗散Plastic Dissipation和蠕變耗散Creep Dissipation。它們對(duì)計(jì)算結(jié)果沒(méi)有影響,僅僅作為能量輸出。STRAN (NTENS):應(yīng)變矩陣;DSTRAN (NTENS):D-大抵代表Deta,增量的意思-david應(yīng)變?cè)隽烤仃嚕籇TIME:增量步的時(shí)間增量;NDI

10、:直接應(yīng)力分量的個(gè)數(shù);NSHR:剪切應(yīng)力分量的個(gè)數(shù);NTENS:總應(yīng)力分量的個(gè)數(shù),NTENS =NDI +NSHR。關(guān)于沙漏剛度控制和橫向剪切剛度使用UMAT時(shí)需要注意單元的沙漏控制剛度和橫向剪切剛度。通常減縮積分單元的沙漏控制剛度和板、殼、梁?jiǎn)卧臋M向剪切剛度是通過(guò)材料屬性中的彈性性質(zhì)定義的。這些剛度基于材料初始剪切模量的值,通常在材料定義中通過(guò)“*ELASTIC”選項(xiàng)定義。但是使用UMAT的時(shí)候,ABAQUS對(duì)程序輸入文件進(jìn)行預(yù)處理的時(shí)候得不到剪切模量的數(shù)值。所以這時(shí)候用戶必須使用“*HOURGLASS STIFFNESS”選項(xiàng)來(lái)定義具有沙漏模式的單元的沙漏控制剛度,使用“*TRANSVE

11、RSE SHEAR STIFFNESS”選項(xiàng)來(lái)定義板、殼、梁?jiǎn)卧臋M向剪切剛度。-一個(gè)問(wèn)題:得不到剪切模量的數(shù)值和解決方案:用戶必須使用“*HOURGLASS STIFFNESS”選項(xiàng)來(lái)定義具有沙漏模式的單元的沙漏控制剛度,使用“*TRANSVERSE SHEAR STIFFNESS”選項(xiàng)來(lái)定義板、殼、梁?jiǎn)卧臋M向剪切剛度關(guān)于UMAT的流程圖和參數(shù)表格實(shí)例跟大家說(shuō)說(shuō)所謂的接口程序Interface-FORTRAN的知識(shí)在Fortan語(yǔ)言中,主調(diào)程序和被調(diào)程序是分別編譯的.由于Fortran90對(duì)過(guò)程的許多功能做了擴(kuò)充,有些功能單靠簡(jiǎn)單的調(diào)用語(yǔ)句已經(jīng)無(wú)法反應(yīng),因而系統(tǒng)也就無(wú)法進(jìn)行正確的編譯,這時(shí)

12、需要在主調(diào)程序中加入interface接口塊,通過(guò)它為主調(diào)程序和被調(diào)程序指明一個(gè)顯示的接口.如果被調(diào)用中啞元含有假定形狀assumed-shape數(shù)組,或可選變?cè)?或含鍵盤(pán)輸入的參數(shù),就需要interface接口塊說(shuō)明.一般來(lái)講,在Fortran90程序之間需要提供interface塊有三種方法:1.將interface接口塊直接寫(xiě)入調(diào)用程序,并復(fù)制被調(diào)用程序的參數(shù)列表這種方法簡(jiǎn)單易用,但也相應(yīng)增加了維護(hù)代碼的工作量,因?yàn)橹灰徽{(diào)用程序的參數(shù)列表發(fā)生變化,就必須相應(yīng)改變interface接口塊和調(diào)用call語(yǔ)句.2.可以將一個(gè)軟件包中所有程序的interface塊寫(xiě)入一個(gè)模塊中,該模塊被軟件包

13、中的所有程序使用.這樣做的優(yōu)點(diǎn)是只需一個(gè)模塊來(lái)檢查interface定義,缺點(diǎn)是仍需對(duì)此模塊和調(diào)用語(yǔ)句進(jìn)行維護(hù).3.Fortran90編譯器可在contains語(yǔ)句后自動(dòng)提供過(guò)程之間的interface塊,這種interface塊可用于使用模塊的任何程序.建議在同一個(gè)軟件包中使用23的形式,在調(diào)用軟件包的入口程序時(shí)采用12的形式!是不是在UMAT中,我們所編譯的帶接口的Fortran程序?yàn)檎{(diào)用程序,原ABAQUS主程序?yàn)楸徽{(diào)用程序,調(diào)用程序中的第一部分我們先復(fù)制被調(diào)入程序的參數(shù)列表?似乎和ABAQUS主程序調(diào)用UMAT有些相反了?不過(guò)個(gè)人認(rèn)為interface作為一個(gè)接口塊,在Fortran語(yǔ)

14、法中應(yīng)該放在主調(diào)程序中,且復(fù)制被調(diào)程序的參數(shù)列表.而UMAT的參數(shù)變量的聲明,只不過(guò)是為了和ABAQUS使用一致的變量格式,當(dāng)Fortran程序處理完材料的本構(gòu)定義之后再以這一致的形式將變量值返回到ABAQUS主程序中吧關(guān)于UMAT用Fortran90可不可以的問(wèn)題在論壇上搜索了關(guān)于這個(gè)問(wèn)題,某位高手說(shuō)是可以的,只要你自己裝的Fortran編譯器能成功編譯你的Fortran90程序即可,個(gè)人認(rèn)為也是如此,不過(guò)我還沒(méi)有證明過(guò)!關(guān)于Fortran77的一些有用的簡(jiǎn)介1:Fortran77的基本結(jié)構(gòu):1. 一個(gè)Fortran源程序由一個(gè)或者多個(gè)程序單位組成,每個(gè)獨(dú)立的程序單位以end語(yǔ)句結(jié)束2. 每

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

16、數(shù)形式3. 雙精度常量Double precision8位4. 復(fù)型常量Complex8位5. 邏輯性常量Logical4位6. 字符型常量Character1位變量 變量名1. 第一個(gè)字符是字母第一個(gè)字符后可跟1-5個(gè)字母或者數(shù)字2. 不區(qū)分大小寫(xiě)3. 空格不起作用4. 允許變量名與語(yǔ)言中具有特定含義的字同名,但盡量不適用5. 盡量見(jiàn)名知義 變量類(lèi)型 不同的變量類(lèi)型用來(lái)存放不同類(lèi)型的常量數(shù)據(jù).變量相應(yīng)的也有六種;變量在使用前必須首先對(duì)其進(jìn)行類(lèi)型說(shuō)明,三種說(shuō)明方法: 按優(yōu)先級(jí)別排列 1. 類(lèi)型說(shuō)明語(yǔ)句:類(lèi)型 變量名列表,多個(gè)變量名之間用逗號(hào)隔開(kāi),如 REAL A,B,C DOUBLE PREC

17、ISION X,Y,Z或者REAL*8 X,Y,Z CHARACTER*5 缺省字符長(zhǎng)度5 STR1,STR2*8,STR3*19 此處,STR1未指明長(zhǎng)度,則默認(rèn)使用缺省長(zhǎng)度5;STR2的長(zhǎng)度為 8;STR3的長(zhǎng)度為19 2. IMPLCIT語(yǔ)句:IMPLICIT 類(lèi)型字母表,類(lèi)型字母表,. 如: IMPLICITREAL(A-D),INTERGER(I-M),DOUBLE PRECISION(X,Z) 3. I-N規(guī)則:Fortran規(guī)定,不加說(shuō)明的情況下,I-N為整型,其他都為實(shí)型幾點(diǎn)說(shuō)明類(lèi)型語(yǔ)句說(shuō)明位于所有可執(zhí)行語(yǔ)句的前面;IMPLICIT語(yǔ)句位于最前面;IMPLICIT NONE取消

18、IMPLICIT說(shuō)明和I-N規(guī)則,所有的變量必須顯式說(shuō)明;只在本程序單位有效.關(guān)于Fortran77的一些有用的簡(jiǎn)介2:算術(shù)表達(dá)式:1. 運(yùn)算符: +,-,*,/, *2. 優(yōu)先級(jí): ( ),* ,* / ,+-3. 書(shū)寫(xiě)問(wèn)題1. * 不能省略2. 括號(hào)不分大小寫(xiě),成對(duì)出現(xiàn)3. 多次乘方,按先右邊后左邊處理4. 運(yùn)算符不能連續(xù)出現(xiàn),要用小括號(hào)隔開(kāi)5. 運(yùn)算順序)-函數(shù)-*-*,/-+,-6. 運(yùn)算中的類(lèi)型問(wèn)題:運(yùn)算類(lèi)型相同:結(jié)果仍為原類(lèi)型;不同,則自動(dòng)轉(zhuǎn)換成同一類(lèi)型7. 誤差問(wèn)題:1. 溢出:超出有效數(shù)字范圍-解決:很大或者很小的數(shù)用實(shí)型的指數(shù)表示2. 誤差:由于有效數(shù)字的位數(shù)限制,實(shí)型數(shù)運(yùn)算

19、存在誤差-解決:轉(zhuǎn)換成雙精度型或者避免因?yàn)闀?shū)寫(xiě)不當(dāng)造成有效數(shù)字的丟失簡(jiǎn)單輸出輸入語(yǔ)句:輸入輸出三要素:對(duì)象哪些數(shù)據(jù);格式;設(shè)備.輸出語(yǔ)句輸出語(yǔ)句的分類(lèi):格式輸出表控格式輸出系統(tǒng)標(biāo)準(zhǔn)格式;無(wú)格式輸出二進(jìn)制1. 表控輸出語(yǔ)句:按計(jì)算機(jī)系統(tǒng)規(guī)定的格式輸出:系統(tǒng)自動(dòng)為每種類(lèi)型的數(shù)據(jù)規(guī)定了列數(shù)1. 整數(shù)的表控輸出格式與具體的計(jì)算機(jī)系統(tǒng)有關(guān):規(guī)定每個(gè)整數(shù)占13列,打印在右端,左補(bǔ)空格;2. 實(shí)數(shù)的表控輸出格式:規(guī)定每個(gè)實(shí)數(shù)占17列,打印在右端,左補(bǔ)空格,小數(shù)部分占7列;當(dāng)實(shí)數(shù)的絕對(duì)值=10*7或1時(shí),按標(biāo)準(zhǔn)的指數(shù)格式輸出,共占15列,指數(shù)4列,小數(shù)6列2. 表控格式輸出語(yǔ)句:1. print*,: pri

20、nt*,56.8,1252. write(*,*)輸入語(yǔ)句 輸入輸出三要素:對(duì)象;格式;設(shè)備. 分類(lèi):同上1. 表控輸入語(yǔ)句1. 自由格式輸入-語(yǔ)句:read*,;read(*,*)2. 輸入數(shù)據(jù)以逗號(hào)或者空格作為間隔3. 變量名稱為輸入表4. 輸入的數(shù)據(jù)應(yīng)和輸入表的變量個(gè)數(shù)類(lèi)型次序嚴(yán)格地一一對(duì)應(yīng);少了,程序停止,等待繼續(xù)輸入;多了,程序繼續(xù)進(jìn)行,多余的不起作用;較多的數(shù)據(jù)可以幾個(gè)一組,回車(chē),再輸入幾個(gè)一組,回車(chē).5. 重復(fù)數(shù)據(jù),可以7*3-7,7,76. 每一個(gè)read(*,*)和write(*,*)語(yǔ)句從一個(gè)新的記錄以回車(chē)結(jié)束的一批輸入輸出數(shù)據(jù)開(kāi)始讀數(shù)輸出1. 例如:read(*,*) A

21、,B,C2. read(*,*) D,I,J3. 輸入: 2.3,-63.5回車(chē)4. 6.4,91.0回車(chē)5. 5,8回車(chē)6. 結(jié)果: A=2.3,B=-63.5,C=6.4,7. 從新記錄開(kāi)始讀數(shù)8. D=5.0,I=8,J未被賦值PARAMETER語(yǔ)句作用:將程序中經(jīng)常用到的參數(shù)或字符串定義成一個(gè)符號(hào)常量,其值不可改變.語(yǔ)句:parameter(p1=c1,p2=c2,.,pn=cn)注意:1. 符號(hào)常量的命名規(guī)則與變量名相同,但在程序中其值不可改變,也不能賦值;2. 符號(hào)變量也有類(lèi)型,可用前面的三種類(lèi)型說(shuō)明方法說(shuō)明類(lèi)型;3. 參數(shù)語(yǔ)句是非執(zhí)行語(yǔ)句,位于所有可執(zhí)行語(yǔ)句的前面,單位與類(lèi)型說(shuō)明

22、語(yǔ)句的后面;4. 一條語(yǔ)句可以定義多個(gè)符號(hào)常量;5. 優(yōu)點(diǎn):方便修改程序END,STOP,PAUSE語(yǔ)句END語(yǔ)句:結(jié)束標(biāo)志,有且僅有一條PAUSEn語(yǔ)句:暫定執(zhí)行;用于調(diào)試程序,n可以是一個(gè)字符串或不超過(guò)5位的數(shù)STOPn語(yǔ)句:停止運(yùn)行語(yǔ)句;用于調(diào)試程序,n可以是一個(gè)字符串或不超過(guò)5位的數(shù)關(guān)于Fortran77的一些有用的簡(jiǎn)介3:邏輯運(yùn)算和選擇結(jié)構(gòu) 關(guān)系表達(dá)式1. 構(gòu)成選擇判斷的基本式子2. 關(guān)系運(yùn)算符:1. .GT.greater than 2. .GE.greater than or equal to =3. .LT.limiter than 4. .LE.limiter than or

23、 equal to =5. .EQ.equal to =6. .NE.not equal to 3. 一般形式:4. 運(yùn)算結(jié)果:邏輯值:真.TRUE.假.FALSE.5. 運(yùn)算順序:算術(shù)運(yùn)算關(guān)系運(yùn)算 邏輯表達(dá)式1. 運(yùn)算符:1. .and.2. .or.3. .not.4. .eqv.邏輯等5. .neqv.邏輯不等2. 一般形式:3. 結(jié)果:邏輯值:真.TRUE.假.FALSE.4. 運(yùn)算順序:算術(shù)運(yùn)算-關(guān)系運(yùn)算-邏輯運(yùn)算5. 邏輯運(yùn)算優(yōu)先級(jí):.not.-.and.-.or.-.eqv.-.neqv.關(guān)于Fortran77的一些有用的簡(jiǎn)介4:IF類(lèi)選擇結(jié)構(gòu) 用塊IF實(shí)現(xiàn)選擇結(jié)構(gòu):三種典型形式

24、1. 基本形式1. IF(條件) THEN (塊IF語(yǔ)句)2. 塊1 (THEN塊)3. ELSE (ELSE語(yǔ)句)4. 塊2 (ELSE塊)5. ENDIF (ENDIF語(yǔ)句)6. 說(shuō)明:IF.THEN語(yǔ)句為塊IF結(jié)構(gòu)的入口語(yǔ)句;ENDIF語(yǔ)句為出口語(yǔ)句,必須一一對(duì)應(yīng),配對(duì)使用2. 簡(jiǎn)單結(jié)構(gòu)1. IF(條件) THEN2. 塊3. ENDIF4. 說(shuō)明:沒(méi)有else塊3. 嵌套結(jié)構(gòu)1. IF()THEN2. 塊13. ELSE IF() THEN4. 塊25. .6. ELSE IF()THEN7. 塊n8. ELSE塊n+19. ENDIF 邏輯IF語(yǔ)句只用一行表示一種選擇結(jié)構(gòu),當(dāng)且僅當(dāng)條

25、件成立時(shí)執(zhí)行,并且只執(zhí)行一條語(yǔ)句;IF(條件)語(yǔ)句 算術(shù)IF語(yǔ)句IF N1,N2,N3當(dāng)算術(shù)表達(dá)式的值 0執(zhí)行標(biāo)號(hào)為N1的語(yǔ)句;關(guān)于Fortran77的一些有用的簡(jiǎn)介5:循環(huán)結(jié)構(gòu) 結(jié)構(gòu)形式:循環(huán)體由一些可執(zhí)行的語(yǔ)句組成+循環(huán)控制語(yǔ)句控制循環(huán)的開(kāi)始和結(jié)束 分類(lèi):條件型循環(huán)和計(jì)數(shù)型循環(huán)DO循環(huán)GOTO語(yǔ)句實(shí)現(xiàn)循環(huán) 一般形式:GOTO其中:S1為語(yǔ)句標(biāo)號(hào) 功能:程序執(zhí)行到此語(yǔ)句時(shí),無(wú)條件的轉(zhuǎn)向標(biāo)號(hào)為S1的語(yǔ)句DO語(yǔ)句實(shí)現(xiàn)循環(huán) 當(dāng)循環(huán)的初值終值循環(huán)次數(shù)都已知時(shí),可用; 組成:一個(gè)DO語(yǔ)句和循環(huán)體組成 一般形式: DOS1 I=E1,E2 ,E3DO I=E1,E2 ,E3 .S1 .ENDDO例如DO

26、10I=1,19,2DO10I=E1,19 ,2 SUM=SUM+1S1CONTINUE10 SUM=SUM+1DO I=1,19,2 SUM=SUM+1ENDDO 說(shuō)明1. I為循環(huán)變量,S1為語(yǔ)句標(biāo)號(hào),是本程序單位中另一可執(zhí)行語(yǔ)句的標(biāo)號(hào);2. 步長(zhǎng)可以省略,缺省值=1;3. 循環(huán)初值E1,終值E2和步長(zhǎng)E3都可以是常量變量表達(dá)式;4. 由于實(shí)數(shù)在內(nèi)存中存儲(chǔ)的誤差,I,E1,E2,E3盡可能用振型量5. E1,E2,E3都可正可負(fù),E1,E2,可為0,但是E3不能為0. 具體執(zhí)行過(guò)程1. 執(zhí)行DO語(yǔ)句,首先計(jì)算表達(dá)式E1,E2,E3的值,若他們的類(lèi)型與循環(huán)變量I不一致,則自動(dòng)轉(zhuǎn)換成循環(huán)變量的

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

28、CONTINUE語(yǔ)句.它自身沒(méi)有任何功能. 一些規(guī)定1. 循環(huán)變量在循環(huán)體內(nèi)只能被引用,不能被賦值;2. 在執(zhí)行DO循環(huán)體期間,E1,E2,E3的值不能被改變,因?yàn)樗麄儧Q定了循環(huán)的次數(shù)3. 離開(kāi)DO循環(huán)后,循環(huán)變量可以在循環(huán)體外被引用,它的值為脫離循環(huán)時(shí)最后一次被賦的值;4. 程序中用到轉(zhuǎn)移語(yǔ)句,規(guī)定:只允許從循環(huán)體內(nèi)-體外;反之不行;5. 循環(huán)終端語(yǔ)句必須是除GOTO,塊IF,ENDIF,END和STOP語(yǔ)句外的任何可執(zhí)行語(yǔ)句 DO循環(huán)的嵌套 在一個(gè)DO循環(huán)中還可以包含一個(gè)或者多個(gè)完整的DO循環(huán),這就是DO循環(huán)的嵌套. 一般形式: DO 10 I=1,10 . . . DO20 J=1,10

29、 . . . 20 CONTINUE . . . 10 CONTINUE 說(shuō)明: 嵌套要完整,不能交叉 循環(huán)變量的名字,規(guī)定:并列的循環(huán):循環(huán)變量的名字可以相同;嵌套的循環(huán):循環(huán)變量的名字不可以相同 若多層循環(huán)的結(jié)束語(yǔ)句在同一個(gè)地方,可以共用一條CONTINUE語(yǔ)句 控制轉(zhuǎn)向語(yǔ)句的使用體內(nèi)-體外當(dāng)型循環(huán)的實(shí)現(xiàn) 在無(wú)法確定循環(huán)次數(shù)的情況下可以使用當(dāng)型循環(huán).當(dāng)型循環(huán)是指執(zhí)行循環(huán)體要依據(jù)實(shí)現(xiàn)給定的條件:當(dāng)條件成立時(shí)執(zhí)行循環(huán),否則不執(zhí)行. 用DO-WHILE語(yǔ)句實(shí)現(xiàn)當(dāng)型循環(huán) 一般形式: DO S1 , WHILE(條件) . S1 用塊IF和GOTO語(yǔ)句實(shí)現(xiàn)循環(huán) 一般形式: S1IF(條件) THEN

30、 塊 GOTO S1 ENDIF直到型循環(huán)的實(shí)現(xiàn)所謂直到型循環(huán),是指先執(zhí)行循環(huán)體,再判斷條件.如果條件為假,繼續(xù)執(zhí)行循環(huán)體,直到條件為真時(shí)終止循環(huán). 用邏輯IF語(yǔ)句實(shí)現(xiàn): S1循環(huán)體 IF(條件) GOTOS1幾種循環(huán)形式的關(guān)系和比較 DO循環(huán)適用于已知循環(huán)次數(shù)的情況 幾種循環(huán)可以互換 DO循環(huán):條件型循環(huán)可用次數(shù)作為條件 當(dāng)型循環(huán):直到型循環(huán) 當(dāng)型:塊IF語(yǔ)句(單邊)+GOTO語(yǔ)句(先判斷后執(zhí)行) 直到型:邏輯IF語(yǔ)句+GOTO語(yǔ)句(先執(zhí)行后判斷) 各種循環(huán)可以相互嵌套關(guān)于Fortran77的一些有用的簡(jiǎn)介6:數(shù)據(jù)的輸入和輸出數(shù)據(jù)輸入輸出需要確定的三個(gè)基本要素: 輸入輸出的設(shè)備 輸入輸出的格

31、式 輸入輸出的數(shù)據(jù) 系統(tǒng)中隱含的 輸入輸出的設(shè)備為:鍵盤(pán)顯示器和打印機(jī)說(shuō)明:#(設(shè)備,格式)數(shù)據(jù)列表,當(dāng)設(shè)備顯示為*,為默認(rèn)設(shè)備輸出,好像是顯示器或默認(rèn)設(shè)備輸入,鍵盤(pán)吧;格式為*,默認(rèn)格式輸出輸入-david有格式的輸出輸出語(yǔ)句的一般形式: WRITE (*,S1) S1 FORMAT(格式說(shuō)明)或者 PRINT S1, S1 FORMAT(格式說(shuō)明)格式說(shuō)明符: 主要介紹:I,F,E,D,G,L,A,(撇號(hào)),H,X,r(重復(fù)系數(shù)),/(斜杠)I 編輯符(Integer)作用:用于整型數(shù)據(jù)的輸出.一般形式:Iw或Iw.m其中:I表示整型輸出,w為字段寬度,m表示輸出數(shù)據(jù)的最少數(shù)字位數(shù)注意:數(shù)

32、據(jù)輸出時(shí),在指定的區(qū)域內(nèi)向右靠齊;如果數(shù)據(jù)的實(shí)際位數(shù)大于指定的字段寬度w,則不輸出數(shù)據(jù),而在該區(qū)域內(nèi)充滿*號(hào);當(dāng)m大于數(shù)據(jù)的實(shí)際位數(shù)時(shí),前面添0,若小于數(shù)據(jù)實(shí)際位數(shù),則不起作用F 編輯符(Fixed point number)作用:用于實(shí)數(shù)的小數(shù)形式輸出,一般形式:Fw.d其中:F表示實(shí)數(shù)的小數(shù)形式輸出;w為字段寬度;d為輸出數(shù)據(jù)的小數(shù)位數(shù)E 編輯符(IExponent)作用:用于實(shí)數(shù)的指數(shù)形式輸出,一般形式:Ew.d其中:E表示實(shí)數(shù)的指數(shù)形式輸出;w為字段寬度;d為數(shù)字部分的小數(shù)位數(shù)注意:指數(shù)部分占4列,負(fù)號(hào)占1列,小數(shù)點(diǎn)前為0.如123.45-0.12345E+03D 編輯符(Double

33、 precision)作用:用于雙精度的指數(shù)形式輸出,用法和E 編輯符相仿.一般形式w.dG 編輯符作用:由系統(tǒng)根據(jù)實(shí)際數(shù)據(jù)的大小來(lái)決定使用F編輯符還是E編輯符.一般形式:Gw.dL 編輯符作用:用于邏輯型數(shù)據(jù)的輸出,一般形式w其中表示整型輸出,w為字段寬度A 編輯符作用:用于字符型數(shù)據(jù)的輸出,一般形式:Aw或A其中:A表示整型輸出,w為字段寬度;若不指定,則表示按實(shí)際長(zhǎng)度輸出 (撇號(hào)) 編輯符作用:用于輸出字符常量,即把撇號(hào)內(nèi)的字符串原樣輸出.注意:如果輸出的字符中包含撇號(hào),則用兩個(gè)連續(xù)的撇號(hào)代表一個(gè)要輸出的撇號(hào)H 編輯符作用:用于輸出字符常量.一般形式:nH其中:H表示輸出字符常量;n為輸

34、出字符個(gè)數(shù);str為輸出的字符串 (較少使用)X 編輯符作用:用于輸出空格.一般形式:nX其中:X表示輸出空格;n表示輸出的空格數(shù)重復(fù)系數(shù)r在format語(yǔ)句中,如果出現(xiàn)幾個(gè)(或者幾組)相同的格式編輯符,則可以利用重復(fù)系數(shù)而只寫(xiě)一個(gè)(或者一組)編輯符.如FORMAT(A=,/,4(5(1X,F4,0),/)反斜杠/編輯符作用:結(jié)束本記錄的輸出,開(kāi)始下一個(gè)記錄的輸出,通常指換行.WRITE語(yǔ)句和FORMAT語(yǔ)句的相互作用WRITE語(yǔ)句的輸出變量個(gè)數(shù)與FORMAT語(yǔ)句的編輯符(不含撇號(hào),H和X)個(gè)數(shù)可以相等,也可以不等;如果編輯符個(gè)數(shù)多,則剩余的編輯符不起作用;如果變量的個(gè)數(shù)多,則當(dāng)編輯符用完后,

35、重新使用該格式說(shuō)明,當(dāng)如果格式說(shuō)明含帶重復(fù)系數(shù)的編輯符組,則格式說(shuō)明用完后,只有最右面一個(gè)帶重復(fù)系數(shù)的編輯符組(包含重復(fù)系數(shù))及其右面的編輯符被重復(fù)使用.可以有空格式說(shuō)明,如FORMAT(),用于輸出一個(gè)空行.有格式的輸入有格式的輸入語(yǔ)句 一般形式: READ(*,S1) S1 FORMAT(格式說(shuō)明由各種格式編輯符構(gòu)成) 例如: READ(*,100) A,B,C 100 FORMAT(F5.1,E12.2,F7.2) END 鍵盤(pán)輸入:_15.7_2345.67E+04_705.83enter在PRINTWRITEREAD語(yǔ)句中包含格式說(shuō)明 例如: PRINT 100,K,Y 100 FO

36、RMAT(18,F7.2) 也可以寫(xiě)成:PRINT(18,F7.2),K,Y 注意寫(xiě)法: (.)關(guān)于Fortran77的一些有用的簡(jiǎn)介7:數(shù)組使用原則:先聲明,后使用說(shuō)明方法: 用類(lèi)型說(shuō)明語(yǔ)句(顯式說(shuō)明) 用DIMENSION語(yǔ)句(隱式說(shuō)明)數(shù)組的說(shuō)明和數(shù)組元素的引用 用類(lèi)型語(yǔ)句說(shuō)明數(shù)組1. 一般形式:類(lèi)型說(shuō)明數(shù)組說(shuō)明符2. 其中:數(shù)組說(shuō)明符的一般形式為:數(shù)組名(維數(shù)說(shuō)明符,.)維數(shù)說(shuō)明符,由下標(biāo)下界:下標(biāo)上界組成3. 例如:REALX(1:10),W(1:2,1:3),K(10:20)或者INTEGER B(1:100),PY(0:2,0:3,0:5) 用DIMENSION語(yǔ)句說(shuō)明數(shù)組1.

37、一般形式:DIMENSION 數(shù)組說(shuō)明符,. 說(shuō)明:1. 在數(shù)組說(shuō)明符中,維數(shù)說(shuō)明符(下標(biāo))的個(gè)數(shù)成為數(shù)組的維數(shù)2. 維數(shù)說(shuō)明符只能使用整型常量或者整型符號(hào)常量表達(dá)式:如 PARANETER(I=1,J=10) REALKX(I:J+5)3. 維數(shù)說(shuō)明符的下標(biāo)下界為1時(shí),可以省略.如:REAL X(1:10)-REAL X(10)4. 數(shù)組說(shuō)明語(yǔ)句必須寫(xiě)在所有可執(zhí)行的語(yǔ)句之前.屬于非執(zhí)行語(yǔ)句 數(shù)組元素的引用1. 一般形式:數(shù)組名(下標(biāo),.)2. 即要有確定的數(shù)組名和下標(biāo)值,如XN(5),W(1,3),KW(1,2,3)3. 引用數(shù)組元素時(shí),下標(biāo)可用算術(shù)表達(dá)式,如果算術(shù)表達(dá)式的值為實(shí)行,則自動(dòng)取

38、整.數(shù)組的邏輯結(jié)構(gòu)和存儲(chǔ)結(jié)構(gòu)邏輯結(jié)構(gòu):數(shù)組所表示的實(shí)際數(shù)據(jù)結(jié)構(gòu) 存儲(chǔ)結(jié)構(gòu):數(shù)組在機(jī)器內(nèi)存儲(chǔ)時(shí)的排列結(jié)構(gòu) 一維數(shù)組 邏輯結(jié)構(gòu):依次排列的一串?dāng)?shù)據(jù) 存儲(chǔ)結(jié)構(gòu):一組連續(xù)存放的一列數(shù)據(jù)塊 二維數(shù)組 邏輯結(jié)構(gòu):一張二維數(shù)據(jù)表 存儲(chǔ)結(jié)構(gòu):一組按列連續(xù)存放的數(shù)據(jù)塊 三維數(shù)組 邏輯結(jié)構(gòu):若干張二維數(shù)據(jù)表 存儲(chǔ)結(jié)構(gòu):一組按頁(yè)連續(xù)存放的數(shù)據(jù)塊數(shù)組的輸入和輸出三種方式:用DO循環(huán)用隱含DO循環(huán)用數(shù)組名 用DO循環(huán)實(shí)現(xiàn)數(shù)組的輸入輸出1. 優(yōu)點(diǎn):數(shù)組元素的輸入輸出次序可由用戶控制2. 缺點(diǎn):做一次循環(huán)就換行輸入或輸出 用隱含DO循環(huán)實(shí)現(xiàn)數(shù)組的輸入輸出1. 優(yōu)點(diǎn):既能控制數(shù)組元素的輸入輸出順序,又能控制一行內(nèi)輸入輸出數(shù)據(jù)

39、的個(gè)數(shù)2. 例如:READ(*,*) (G(I,J),J=1,3),I=1,2),由于是一個(gè)READ語(yǔ)句,所以既可以一行輸入,也可以多行輸入,鍵盤(pán)輸入如下:86,75,72enter87,70,83enter3. 注意:一個(gè)READ語(yǔ)句可以多行輸入;但是多個(gè)READ語(yǔ)句時(shí),每一個(gè)READ語(yǔ)句必須從心的一行讀數(shù).用數(shù)據(jù)名進(jìn)行數(shù)組的輸入輸出使用時(shí),其順序要與數(shù)組元素在機(jī)器內(nèi)的存儲(chǔ)順序一致 例如: DIMENSION K(5) READ *,K-對(duì)數(shù)組進(jìn)行整體操縱 等價(jià)于:READ*,K(1),K(2),K(3),K(4),K(5) 也等價(jià)于:READ*,(K(I),I=1,5)使用DATA語(yǔ)句給數(shù)

40、組賦初值 一般形式: DATA變量列表初值表,變量列表初值表. 功能:在程序編譯期間給變量或者數(shù)組賦初值.其中,變量列表可以是變量名數(shù)組名數(shù)組元素隱DO循法;初值表只能是常量,不允許出現(xiàn)任何形式的表達(dá)式 例如:DATA A, B/7.85,9.1/代表賦初值A(chǔ)=7.85,B=9.1-david, I,J, K /5,10,15/代表賦初值I=5,J=10,K=15-david, 例如: DIMENSIONK(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 I=2: 42 14 32 或 DATAK

41、/90,42,23,14,20,32/-排列為按列排,排滿一列之后,再排下一列; 90 23 20 -david 42 14 32 例如: DIMENSIONA(10) DATA A/10*1.0/(表示10個(gè)1.0)注意:DATA語(yǔ)句屬于說(shuō)明語(yǔ)句,但是它可以放在END語(yǔ)句之前的任意行;當(dāng)程序中有多個(gè)DATA語(yǔ)句給同一個(gè)變量賦初值時(shí),以最后一條為準(zhǔn);程序在編譯期間給變量賦予初值,在程序執(zhí)行期間,DATA語(yǔ)句不起任何作用!關(guān)于Fortran77的一些有用的簡(jiǎn)介8:子程序FORTRAN子程序:包括函數(shù)子程序,子例行程序,數(shù)據(jù)塊子程序執(zhí)行:從主程序開(kāi)始執(zhí)行,遇到調(diào)用語(yǔ)句再執(zhí)行相應(yīng)的子程序.不同類(lèi)型的

42、子程序,關(guān)鍵字不同,調(diào)用方法也不同 函數(shù)子程序:一種可以作為函數(shù)來(lái)調(diào)用的子程序(外部函數(shù))1. 定義:一般形式,由FUNCTION語(yǔ)句和子程序體組成類(lèi)型說(shuō)明FUNCTION函數(shù)名(虛參表) .(子程序體) ENDFUNCTION函數(shù)名(虛參表)類(lèi)型說(shuō)明 函數(shù)名 .(子程序體)END2. 1. FUNCTION語(yǔ)句:是函數(shù)子程序的第一條語(yǔ)句,標(biāo)志著該函數(shù)子程序的開(kāi)始1. 類(lèi)型說(shuō)明FUNCTION函數(shù)名(虛參表)2. 注意:1. 虛元也有類(lèi)型,需在子程序體中說(shuō)明1. 例如:REALFUNCTION INTEP(X1,X2,X3)2. INTEGERX1,X2,X32. 函數(shù)名的命名規(guī)則和類(lèi)型都和變

43、量相同3. 虛參可以是變量名數(shù)組名子程序名,但不允許用常量和數(shù)組元素,它表示了函數(shù)自變量的個(gè)數(shù)順序和類(lèi)型.2. 子程序體:完成一個(gè)具體任務(wù)的程序段3. 注意:1. 若無(wú)虛參時(shí),括號(hào)不能省2. 函數(shù)子程序中所有變量和標(biāo)號(hào)(除函數(shù)名和虛參外),與其他程序單位無(wú)任何關(guān)系3. 函數(shù)體的說(shuō)明部分包括對(duì)虛參和本函數(shù)體內(nèi)所用變量和數(shù)組的說(shuō)明4. 函數(shù)體中可設(shè)置一條或者多條RETURN語(yǔ)句,表示執(zhí)行到此語(yǔ)句時(shí)返回調(diào)用程序.1. 當(dāng)RETURN語(yǔ)句和END語(yǔ)句緊挨著的時(shí)候,可省略RETURN語(yǔ)句2. 也可以不設(shè)RETURN語(yǔ)句,但需從中間返回時(shí),必須設(shè)置RETURN語(yǔ)句5. 函數(shù)名的作用:函數(shù)名在函數(shù)體中一定要被賦值,因?yàn)楹瘮?shù)名把函數(shù)值帶回調(diào)用程序. 函數(shù)子程序的調(diào)用1. 一般形式:調(diào)用方式和內(nèi)部函數(shù)相似:函數(shù)名(實(shí)參數(shù)) 或 函數(shù)名( )2. 說(shuō)明:1. 調(diào)用程序中函數(shù)名必須與函數(shù)子程序中定義的函數(shù)名相同2. 實(shí)參與虛參在個(gè)數(shù)類(lèi)型位置上必須一一對(duì)應(yīng),但名字可以不同3. 當(dāng)虛參是變量名的時(shí)候,實(shí)參可以是常量變量數(shù)組元素或者表達(dá)式;但是當(dāng)虛參要在函數(shù)體中被賦予初值的時(shí)候,則實(shí)參不可以是常量或者表達(dá)式因?yàn)閮烧吖灿靡粋€(gè)存儲(chǔ)單元4. 函數(shù)子程序是一個(gè)獨(dú)立的程序單位,可以作

溫馨提示

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

評(píng)論

0/150

提交評(píng)論