




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、各個(gè)樓層及內(nèi)容索引2-什么是UMAT3-UMAT功能簡介4-UMAT開始的變量聲明5-UMAT中各個(gè)變量的詳細(xì)解釋6-關(guān)于沙漏和橫向剪切剛度7-UMAT流程和參數(shù)表格實(shí)例展示8-FORTRAN語言中的接口程序Interface9-關(guān)于UMAT是否可以用Fortran90編寫的問題10-17-Fortran77的一些有用的知識(shí)簡介20-2530-32-彈塑性力學(xué)相關(guān)知識(shí)簡介34-37-用戶材料子程序?qū)嵗齁Ohn-cook模型壓縮包下載38-JOhn-cook模型本構(gòu)簡介圖40-用戶材料子程序?qū)嵗齁Ohn-cook模型完整程序+david詳細(xì)注解歡迎大家來看看,并提供意見,完全是自己的diy的,不
2、保證完全正確,希望共同探討,以便更正,帶"?"部分,還望各位大師同仁指教1 什么是UMAT?1.1 UMAT功能簡介!-摘自莊茁老師的書UMAT子程序具有強(qiáng)大的功能,使用UMAT子程序:(1)可以定義材料的本構(gòu)關(guān)系,使用ABAQUS材料庫中沒有包含的材料進(jìn)行計(jì)算,擴(kuò)充程序功能。ABAQUS軟件2003年度用戶年會(huì)論文集(2)幾乎可以用于力學(xué)行為分析的任何分析過程,幾乎可以把用戶材料屬性賦予ABAQUS中的任何單元;(3)必須在UMAT中提供材料本構(gòu)模型的雅可比(Jacobian)矩陣,即應(yīng)力增量對(duì)應(yīng)變?cè)隽康淖兓省?4)可以和用戶子程序“USDFLD”聯(lián)合使用,通過“USD
3、FLD”重新定義單元每一物質(zhì)點(diǎn)上傳遞到UMAT中場(chǎng)變量的數(shù)值。1.2 UMAT開始的變量聲明由于主程序與UMAT之間存在數(shù)據(jù)傳遞,甚至共用一些變量,因此必須遵守有關(guān)書寫格式,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本身自帶的參量精度定義的文件包含進(jìn)來后面詳說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-結(jié)束UMAT中各個(gè)變量的詳細(xì)解釋凡是-注明david的,都是我自己猜的,僅供參考DDSDDE (NTENS ,NTENS)是一個(gè)NTENSNumber of the Tensions-david維的方陣,
6、稱作雅可比矩陣,應(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”語句中加"UNSYMM"參數(shù)STRESS (NTENS)應(yīng)力張量矩陣,對(duì)應(yīng)NDINumber of the Direct Components-david個(gè)直接分量和NSHRNumber of the shear Components-david個(gè)剪切分量.在增量步的開始,應(yīng)力張量矩陣中的數(shù)值通過UMAT和主程序之間的接口傳遞到UMAT中,在增量步的結(jié)束,UMAT將對(duì)應(yīng)力張量矩陣更新
7、,即return.對(duì)于包含剛體轉(zhuǎn)動(dòng)的有限應(yīng)變問題,一個(gè)增量步條用UMAT之前就已經(jīng)對(duì)應(yīng)力張量進(jìn)行了剛體轉(zhuǎn)動(dòng),因此在UMAT中只需處理應(yīng)力張量的共旋部分-這部分我沒看明白,敬請(qǐng)高手指點(diǎn).UMAT中應(yīng)力張量的度量為柯西(真實(shí))應(yīng)力STATEV (NSTATEV)STATE VARIABLES (Number of the State Variables) 用于存儲(chǔ)狀態(tài)變量的矩陣,在增量步開始時(shí)將數(shù)值傳遞到UMAT中。也可在子程序USDFLD或UEXPAN中先更新數(shù)據(jù),然后增量步開始時(shí)將更新后的數(shù)據(jù)傳遞到UMAT中。在增量步的結(jié)束必須更新狀態(tài)變量矩陣中的數(shù)據(jù)。
8、 和應(yīng)力張量矩陣不同的是:對(duì)于有限應(yīng)變問題,除了材料本構(gòu)行為引起的數(shù)據(jù)更新以外,狀態(tài)變量矩陣中的任何矢量或者張量都必須通過旋轉(zhuǎn)來考慮材料的剛體運(yùn)動(dòng)。-不懂,請(qǐng)高手指教 狀態(tài)變量矩陣的維數(shù)NATATEV,等于關(guān)鍵字“*DEPVAR”定義的數(shù)值。狀態(tài)變量矩陣的維數(shù)通過ABAQUS輸入文件中的關(guān)鍵字“*DEPVAR”定義,關(guān)鍵字下面數(shù)據(jù)行的數(shù)值即為狀態(tài)變量矩陣的維數(shù)。 材料常數(shù)的個(gè)數(shù),等于關(guān)鍵字“*USER MATERIAL”中“CONSTANTS”常數(shù)設(shè)定的值。PRO
9、PS (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é)果沒有影響,僅僅作為能量輸出。STRAN (NTENS):應(yīng)變矩陣;DSTRAN (NTENS):D-大抵代表Deta,增量的意思-david應(yīng)變?cè)隽烤仃嚕籇TIME:增量步的時(shí)間增量;NDI:直接應(yīng)力分量的個(gè)數(shù);NSHR:剪切應(yīng)力分量的個(gè)數(shù);NTENS:總應(yīng)力分量的個(gè)數(shù),NTENS =N
10、DI +NSHR。1.3關(guān)于沙漏剛度控制和橫向剪切剛度使用UMAT時(shí)需要注意單元的沙漏控制剛度和橫向剪切剛度。通常減縮積分單元的沙漏控制剛度和板、殼、梁單元的橫向剪切剛度是通過材料屬性中的彈性性質(zhì)定義的。這些剛度基于材料初始剪切模量的值,通常在材料定義中通過“*ELASTIC”選項(xiàng)定義。但是使用UMAT的時(shí)候,ABAQUS對(duì)程序輸入文件進(jìn)行預(yù)處理的時(shí)候得不到剪切模量的數(shù)值。所以這時(shí)候用戶必須使用“*HOURGLASS STIFFNESS”選項(xiàng)來定義具有沙漏模式的單元的沙漏控制剛度,使用“*TRANSVERSE SHEAR STIFFNESS”選項(xiàng)來定義板、殼、梁單元的橫向剪切剛度。-一個(gè)問題:
11、得不到剪切模量的數(shù)值和解決方案:用戶必須使用“*HOURGLASS STIFFNESS”選項(xiàng)來定義具有沙漏模式的單元的沙漏控制剛度,使用“*TRANSVERSE SHEAR STIFFNESS”選項(xiàng)來定義板、殼、梁單元的橫向剪切剛度1.4關(guān)于UMAT的流程圖和參數(shù)表格實(shí)例跟大家說說所謂的接口程序Interface-FORTRAN的知識(shí)在Fortan語言中,主調(diào)程序和被調(diào)程序是分別編譯的.由于Fortran90對(duì)過程的許多功能做了擴(kuò)充,有些功能單靠簡單的調(diào)用語句已經(jīng)無法反應(yīng),因而系統(tǒng)也就無法進(jìn)行正確的編譯,這時(shí)需要在主調(diào)程序中加入interface接口塊,通過它為主調(diào)程序和被調(diào)程序指明一個(gè)顯示的
12、接口.如果被調(diào)用中啞元含有假定形狀assumed-shape數(shù)組,或可選變?cè)?或含鍵盤輸入的參數(shù),就需要interface接口塊說明.一般來講,在Fortran90程序之間需要提供interface塊有三種方法:1.將interface接口塊直接寫入調(diào)用程序,并復(fù)制被調(diào)用程序的參數(shù)列表這種方法簡單易用,但也相應(yīng)增加了維護(hù)代碼的工作量,因?yàn)橹灰徽{(diào)用程序的參數(shù)列表發(fā)生變化,就必須相應(yīng)改變interface接口塊和調(diào)用call語句.2.可以將一個(gè)軟件包中所有程序的interface塊寫入一個(gè)模塊中,該模塊被軟件包中的所有程序使用.這樣做的優(yōu)點(diǎn)是只需一個(gè)模塊來檢查interface定義,缺點(diǎn)是仍需對(duì)
13、此模塊和調(diào)用語句進(jìn)行維護(hù).3.Fortran90編譯器可在contains語句后自動(dòng)提供過程之間的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有些相反了?不過個(gè)人認(rèn)為interface作為一個(gè)接口塊,在Fortran語法中應(yīng)該放在主調(diào)程序中,且復(fù)制被調(diào)程序的參數(shù)列表.而UMAT的參數(shù)變量的聲明,只不過是
14、為了和ABAQUS使用一致的變量格式,當(dāng)Fortran程序處理完材料的本構(gòu)定義之后再以這一致的形式將變量值返回到ABAQUS主程序中吧2 關(guān)于UMAT用Fortran90可不可以的問題在論壇上搜索了關(guān)于這個(gè)問題,某位高手說是可以的,只要你自己裝的Fortran編譯器能成功編譯你的Fortran90程序即可,個(gè)人認(rèn)為也是如此,不過我還沒有證明過!2.1關(guān)于Fortran77的一些有用的簡介1:Fortran77的基本結(jié)構(gòu):1. 一個(gè)Fortran源程序由一個(gè)或者多個(gè)程序單位組成,每個(gè)獨(dú)立的程序單位以'end'語句結(jié)束2. 每個(gè)程序單位包括若干行不能一行寫多條語句,但是可以一個(gè)語句
15、寫成行;分為語句行執(zhí)行語句行和非執(zhí)行語句和非語句行注釋行源程序的書寫格式:1. 不區(qū)分大小寫:每行只能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列:語句區(qū)書寫語句:一行只能寫一個(gè)語句5. 73-80列:語句注釋區(qū)一般做編號(hào)注釋程序的編輯與運(yùn)行:1. 創(chuàng)建源程序文件并編寫源程序2. 編譯并連接源文件3. 運(yùn)行程序編譯生成的可執(zhí)行文件常量:六種1. 整型常量Integer4位:正負(fù)整數(shù)和02. 實(shí)型常量Real4位:小數(shù)和指數(shù)形式3. 雙精
16、度常量Double precision8位4. 復(fù)型常量Complex8位5. 邏輯性常量Logical4位6. 字符型常量Character1位變量· 變量名1. 第一個(gè)字符是字母第一個(gè)字符后可跟1-5個(gè)字母或者數(shù)字2. 不區(qū)分大小寫3. 空格不起作用4. 允許變量名與語言中具有特定含義的字同名,但盡量不適用5. 盡量"見名知義"· 變量類型 不同的變量類型用來存放不同類型的常量數(shù)據(jù).變量相應(yīng)的也有六種;變量在使用前必須首先對(duì)其進(jìn)行類型說明,三種說明方法:
17、0; 按優(yōu)先級(jí)別排列 1. 類型說明語句:類型 變量名列表,多個(gè)變量名之間用逗號(hào)隔開,如 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未指明長度,則默認(rèn)使用缺省長度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為整型,其他都為實(shí)型幾點(diǎn)說明類型語句說明位于所有可執(zhí)行語句的前面;IMPLICIT語句位于最前面;IMPLICIT NONE取消IMPLICIT說明和I-N規(guī)則,所有的變量必須顯式說
21、明;只在本程序單位有效.2.2關(guān)于Fortran77的一些有用的簡介2:算術(shù)表達(dá)式:1. 運(yùn)算符: +, -, *, /, *2. 優(yōu)先級(jí): ( ), * , * / , +-3. 書寫問題1. * 不能省略2. 括號(hào)不分大小寫,成對(duì)出現(xiàn)3. 多次乘方,按'先右邊后左邊'處理4. 運(yùn)算符不能連續(xù)出現(xiàn),要用小括號(hào)隔開5. 運(yùn)算順序 )->函數(shù)->*->*,/->+,-6. 運(yùn)算中的
22、類型問題:運(yùn)算類型相同:結(jié)果仍為原類型;不同,則自動(dòng)轉(zhuǎn)換成同一類型7. 誤差問題:1. 溢出:超出有效數(shù)字范圍->解決:很大或者很小的數(shù)用實(shí)型的指數(shù)表示2. 誤差:由于有效數(shù)字的位數(shù)限制,實(shí)型數(shù)運(yùn)算存在誤差->解決:轉(zhuǎn)換成雙精度型或者避免因?yàn)闀鴮懖划?dāng)造成有效數(shù)字的丟失簡單輸出輸入語句:輸入輸出三要素:對(duì)象哪些數(shù)據(jù);格式;設(shè)備.輸出語句輸出語句的分類:格式輸出'表控格式輸出系統(tǒng)標(biāo)準(zhǔn)格式;無格式輸出二進(jìn)制1. 表控輸出語句:按計(jì)算機(jī)系統(tǒng)規(guī)定的格式輸出:系統(tǒng)自動(dòng)為每種類型的數(shù)據(jù)規(guī)定了列數(shù)1. 整數(shù)的表控輸出格式與具體的計(jì)算機(jī)系統(tǒng)有關(guān):規(guī)定每個(gè)整數(shù)占13列,打印在右端,左補(bǔ)空格;2
23、. 實(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. 表控格式輸出語句:1. print*,<輸出表列>: print*,56.8,1252. write(*,*)<輸出表列>輸入語句 輸入輸出三要素:對(duì)象;格式;設(shè)備. 分類:同上1. 表控輸入語句1. 自由格式輸入->語句:rea
24、d*,<輸入表列>read(*,*)<輸入表列>2. 輸入數(shù)據(jù)以逗號(hào)或者空格作為間隔3. 變量名稱為輸入表4. 輸入的數(shù)據(jù)應(yīng)和輸入表的變量個(gè)數(shù)類型次序嚴(yán)格地一一對(duì)應(yīng);少了,程序停止,等待繼續(xù)輸入;多了,程序繼續(xù)進(jìn)行,多余的不起作用;較多的數(shù)據(jù)可以幾個(gè)一組,回車,再輸入幾個(gè)一組,回車.5. 重復(fù)數(shù)據(jù),可以7*3->7,7,76. 每一個(gè)read(*,*)和write(*,*)語句從一個(gè)新的記錄以回車結(jié)束的一批輸入輸出數(shù)據(jù)開始讀數(shù)輸出1. 例如:read(*,*) A,B,C2.
25、; read(*,*) D,I,J3. 輸入: 2.3,-63.5回車4.
26、; 6.4,91.0回車5. 5,8回車6. 結(jié)果: A
27、=2.3,B=-63.5,C=6.4,7. 從新記錄開始讀數(shù)8. D=5.0
28、,I=8,J未被賦值PARAMETER語句作用:將程序中經(jīng)常用到的參數(shù)或字符串定義成一個(gè)符號(hào)常量,其值不可改變.語句:parameter(p1=c1,p2=c2,.,pn=cn)注意:1. 符號(hào)常量的命名規(guī)則與變量名相同,但在程序中其值不可改變,也不能賦值;2. 符號(hào)變量也有類型,可用前面的三種類型說明方法說明類型;3. 參數(shù)語句是非執(zhí)行語句,位于所有可執(zhí)行語句的前面,單位與類型說明語句的后面;4. 一條語句可以定義多個(gè)符號(hào)常量;5. 優(yōu)點(diǎn):方便修改程序END,STOP,PAUSE語句END語句:結(jié)束標(biāo)志,有且僅有一條PAUSEn語句:暫定執(zhí)行;用于調(diào)試程序,n可以是一個(gè)字符串或不超過5位的數(shù)
29、STOPn語句:停止運(yùn)行語句;用于調(diào)試程序,n可以是一個(gè)字符串或不超過5位的數(shù)2.3關(guān)于Fortran77的一些有用的簡介3:邏輯運(yùn)算和選擇結(jié)構(gòu)· 關(guān)系表達(dá)式1. 構(gòu)成選擇判斷的基本式子2. 關(guān)系運(yùn)算符: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. 一般形式:<算術(shù)量或者算術(shù)表達(dá)式><關(guān)系運(yùn)算符><算術(shù)量或者算術(shù)表達(dá)式>4. 運(yùn)算結(jié)果:邏輯值:真.TRUE.假.FALSE.5. 運(yùn)算順序:算術(shù)運(yùn)算>關(guān)系運(yùn)算· 邏
33、輯表達(dá)式1. 運(yùn)算符:1. .and.2. .or.3. .not.4. .eqv.邏輯等5. .neqv.邏輯不等2. 一般形式:<邏輯變量邏輯常量關(guān)系表達(dá)式><邏輯運(yùn)算符><邏輯變量邏輯常量關(guān)系表達(dá)式>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的一些有用的簡介4:IF類選擇結(jié)構(gòu)· 用塊IF實(shí)現(xiàn)選擇結(jié)構(gòu):三種典型形式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結(jié)構(gòu)的入口語句;ENDIF語句為出口語句,必須一一對(duì)應(yīng),配對(duì)使用2. 簡單結(jié)構(gòu)1. IF(條件) THEN 2. 塊3. ENDIF4. 說明:沒有else塊3. 嵌套結(jié)構(gòu)1. IF( ) THEN2. 塊13. ELSE IF( ) THEN4. 塊25. .6. ELSE IF( ) THEN7. 塊n8. ELSE 塊n+19. ENDIF· 邏輯IF語句只用一行表示一種選擇結(jié)構(gòu),當(dāng)且僅當(dāng)條件成立時(shí)執(zhí)
38、行,并且只執(zhí)行一條語句;IF(條件) 語句· 算術(shù)IF語句IF<算術(shù)表達(dá)式> N1,N2,N3當(dāng)算術(shù)表達(dá)式的值 <0執(zhí)行標(biāo)號(hào)為N1的語句;
39、0; =0執(zhí)行標(biāo)號(hào)為N2的語句; >0執(zhí)行標(biāo)號(hào)為N1的語句;關(guān)于Fortran77的一些有用的簡介5:循環(huán)結(jié)構(gòu)· 結(jié)構(gòu)形式:循環(huán)體由一些可執(zhí)行的語句組成+循環(huán)控制語句控制循環(huán)的開始和結(jié)束· 分類:條件型循環(huán)和計(jì)數(shù)型循環(huán)DO循環(huán)GOTO語句實(shí)現(xiàn)循環(huán)· 一般形式:GOTO<S
40、1> 其中:S1為語句標(biāo)號(hào)· 功能:程序執(zhí)行到此語句時(shí),無條件的轉(zhuǎn)向標(biāo)號(hào)為S1的語句DO語句實(shí)現(xiàn)循環(huán)· 當(dāng)循環(huán)的初值終值循環(huán)次數(shù)都已知時(shí),可用;· 組成:一個(gè)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為語句標(biāo)號(hào),是本程序單位中另一可執(zhí)行語句的標(biāo)號(hào);2. 步長可以省略,缺省值=1;3. 循環(huán)初值E1,終值E2和步長E3都可以是常量變量表達(dá)式;4. 由于實(shí)數(shù)在內(nèi)存中存儲(chǔ)的誤差,I,E1,E2,E3盡可能用振型量5. E1,E2,E3都可正可負(fù),E1,E2,可為0,但是E3不能為0.· 具體執(zhí)行過程1. 執(zhí)行DO語句,首先計(jì)算表達(dá)式E1,E2,E3的值,若他們的類型與循環(huán)變量I不一致,則自動(dòng)轉(zhuǎn)換成循環(huán)變量的類型2. 將E1的值賦予循環(huán)變量I,及執(zhí)行賦值語句:I=E1;3.
43、計(jì)算循環(huán)次數(shù):R=MAX0(E2-E1+E3)/E3,MAX0表示從多個(gè)整型變量中取最大的一個(gè);4. 檢查循環(huán)次數(shù):若R=0則不執(zhí)行循環(huán)體內(nèi)的語句,跳出循環(huán);R0 則執(zhí)行循環(huán)體內(nèi)的語句5. 執(zhí)行循環(huán)終端語句:I=I+E3,即是循環(huán)變量獲得一個(gè)新值,而循環(huán)次數(shù)R自動(dòng)減1;6. 返回步驟4,繼續(xù)執(zhí)行,直到R=0.· CONTINUE語句 循環(huán)終端語句必須是可執(zhí)行語句;那么,這種作為循環(huán)終端的語句具有雙重作用:一是作為循環(huán)終端的標(biāo)志;而是要完成自身的功能.因此影響了程序的可讀性.FORTRAN用一個(gè)專門的語句作為DO循環(huán)的終端語句,即CONT
44、INUE語句.它自身沒有任何功能.· 一些規(guī)定1. 循環(huán)變量在循環(huán)體內(nèi)只能被引用,不能被賦值;2. 在執(zhí)行DO循環(huán)體期間,E1,E2,E3的值不能被改變,因?yàn)樗麄儧Q定了循環(huán)的次數(shù)3. 離開DO循環(huán)后,循環(huán)變量可以在循環(huán)體外被引用,它的值為脫離循環(huán)時(shí)最后一次被賦的值;4. 程序中用到轉(zhuǎn)移語句,規(guī)定:只允許從循環(huán)體內(nèi)->體外;反之不行;5. 循環(huán)終端語句必須是除GOTO,塊IF,ENDIF,END和STOP語句外的任何可執(zhí)行語句· DO循環(huán)的嵌套 在一個(gè)DO循環(huán)中還可以
45、包含一個(gè)或者多個(gè)完整的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)的結(jié)束語句在同一個(gè)地方,可以共用一條CONTINUE語句·
51、; 控制轉(zhuǎn)向語句的使用體內(nèi)->體外當(dāng)型循環(huán)的實(shí)現(xiàn) 在無法確定循環(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語句實(shí)現(xiàn)當(dāng)型循環(huán) 一般形式: DO S1 , WHILE
52、(條件) . S1 <終端語句&g
53、t;· 用塊IF和GOTO語句實(shí)現(xiàn)循環(huán) 一般形式: S1 IF(條件) THEN
54、160; 塊 GOTO S1 &
55、#160; ENDIF直到型循環(huán)的實(shí)現(xiàn)所謂直到型循環(huán),是指先執(zhí)行循環(huán)體,再判斷條件.如果條件為'假',繼續(xù)執(zhí)行循環(huán)體,直到條件為'真'時(shí)終止循環(huán).· 用邏輯IF語句實(shí)現(xiàn): S1 循環(huán)體 IF(條件)
56、160; GOTO S1幾種循環(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語句(單邊)+GOTO語句(先判斷后執(zhí)行)
57、 直到型:邏輯IF語句+GOTO語句(先執(zhí)行后判斷)· 各種循環(huán)可以相互嵌套2.4關(guān)于Fortran77的一些有用的簡介6:數(shù)據(jù)的輸入和輸出數(shù)據(jù)輸入輸出需要確定的三個(gè)基本要素: 輸入輸出的設(shè)備 輸入輸出的格式
58、160; 輸入輸出的數(shù)據(jù) 系統(tǒng)中隱含的 輸入輸出的設(shè)備為:鍵盤顯示器和打印機(jī)說明:#(設(shè)備,格式)數(shù)據(jù)列表,當(dāng)設(shè)備顯示為*,為默認(rèn)設(shè)備輸出,好像是顯示器或默認(rèn)設(shè)備輸入,鍵盤吧;格式為*,默認(rèn)格式輸出輸入-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ào)),H,X,r(重復(fù)系數(shù)),/(斜杠)I 編輯符(Integer) 作用:用于整型數(shù)據(jù)
63、的輸出.一般形式:Iw或Iw.m 其中:I表示整型輸出,w為字段寬度,m表示輸出數(shù)據(jù)的最少數(shù)字位數(shù) 注意:數(shù)據(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其
64、中: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 precision)作用:用于雙精度的指數(shù)形式輸出,用法和E 編輯符相仿.一般形式w.dG 編輯符作用:由系統(tǒng)根據(jù)實(shí)際數(shù)據(jù)的大小來決定使用F編輯符還是E編輯符.一般形式:Gw.dL 編輯符作用:用于邏輯型數(shù)據(jù)的輸出,一般形式w其中表示整型輸出,w為字段寬度A 編輯符作用:用于字符型數(shù)據(jù)的輸出,一般形式:Aw或A其中:A表示整型輸出,w為字段寬度;若不指定,則表示按實(shí)際長度輸出' (撇號(hào)) 編輯符作用:用
65、于輸出字符常量,即把撇號(hào)內(nèi)的字符串原樣輸出.注意:如果輸出的字符中包含撇號(hào),則用兩個(gè)連續(xù)的撇號(hào)代表一個(gè)要輸出的撇號(hào)H 編輯符作用:用于輸出字符常量.一般形式:nH<str>其中:H表示輸出字符常量;n為輸出字符個(gè)數(shù);str為輸出的字符串 (較少使用)X 編輯符作用:用于輸出空格.一般形式:nX其中:X表示輸出空格;n表示輸出的空格數(shù)重復(fù)系數(shù)r在format語句中,如果出現(xiàn)幾個(gè)(或者幾組)相同的格式編輯符,則可以利用重復(fù)系數(shù)而只寫一個(gè)(或者一組)編輯符.如FORMAT(
66、39;A=',/,4(5(1X,F4,0),/)反斜杠/編輯符作用:結(jié)束本記錄的輸出,開始下一個(gè)記錄的輸出,通常指換行.WRITE語句和FORMAT語句的相互作用WRITE語句的輸出變量個(gè)數(shù)與FORMAT語句的編輯符(不含撇號(hào),H和X)個(gè)數(shù)可以相等,也可以不等;如果編輯符個(gè)數(shù)多,則剩余的編輯符不起作用;如果變量的個(gè)數(shù)多,則當(dāng)編輯符用完后,重新使用該格式說明,當(dāng)如果格式說明含帶重復(fù)系數(shù)的編輯符組,則格式說明用完后,只有最右面一個(gè)帶重復(fù)系數(shù)的編輯符組(包含重復(fù)系數(shù))及其右面的編輯符被重復(fù)使用. 可以有空格式說明,如FORMAT(),用于輸出一個(gè)空行.有格式的輸入有格式的輸入語句&
67、#160; 一般形式: READ(*,S1) <輸入列表> S1
68、 FORMAT(格式說明由各種格式編輯符構(gòu)成) 例如: 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 注意寫法: '(.)'關(guān)于Fortran77的一些有用的簡介7:數(shù)組使用原則:"先聲明,后使用"說明方法:· 用類型說明語句(顯式說明)
72、3; 用DIMENSION語句(隱式說明)數(shù)組的說明和數(shù)組元素的引用· 用類型語句說明數(shù)組1. 一般形式: 類型說明 數(shù)組說明符2. 其中:數(shù)組說明符的一般形式為:數(shù)組名(維數(shù)說明符,.)維數(shù)說明符,由"下標(biāo)下界:下標(biāo)上界"組成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語句說明數(shù)組1. 一般形式:DIMENSION 數(shù)組說明符,.· 說明:1. 在數(shù)組說明
73、符中,維數(shù)說明符(下標(biāo))的個(gè)數(shù)成為數(shù)組的維數(shù)2. 維數(shù)說明符只能使用整型常量或者整型符號(hào)常量表達(dá)式:如 PARANETER(I=1,J=10) REAL KX(I:J+5)3. 維數(shù)說明符的下標(biāo)下界為1時(shí),可以省略.如:REAL X(1:10)->REAL X(10)4. 數(shù)組說明語句必須寫在所有可執(zhí)行的語句之前.屬于非執(zhí)行語句· 數(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)
74、取整.數(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ù)組 邏
75、輯結(jié)構(gòu):一張二維數(shù)據(jù)表 存儲(chǔ)結(jié)構(gòu):一組按列連續(xù)存放的數(shù)據(jù)塊· 三維數(shù)組 邏輯結(jié)構(gòu):若干張二維數(shù)據(jù)表 存儲(chǔ)結(jié)構(gòu):一組按頁連續(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.
76、 缺點(diǎn):做一次循環(huán)就換行輸入或輸出· 用隱含DO循環(huán)實(shí)現(xiàn)數(shù)組的輸入輸出1. 優(yōu)點(diǎn):既能控制數(shù)組元素的輸入輸出順序,又能控制一行內(nèi)輸入輸出數(shù)據(jù)的個(gè)數(shù)2. 例如:READ(*,*) (G(I,J),J=1,3),I=1,2),由于是一個(gè)READ語句,所以既可以一行輸入,也可以多行輸入,鍵盤輸入如下:86,75,72enter87,70,83enter3. 注意:一個(gè)READ語句可以多行輸入;但是多個(gè)READ語句時(shí),每一個(gè)READ語句必須從心的一行讀數(shù).用數(shù)據(jù)名進(jìn)行數(shù)組的輸入輸出使用時(shí),其順序要與數(shù)組元素在機(jī)器內(nèi)的存儲(chǔ)順序一致
77、 例如: DIMENSION K(5) READ *,K-對(duì)數(shù)組進(jìn)行整體操縱 等價(jià)于:READ*,K(1),K(2),K(3),K(4),K(5)
78、160; 也等價(jià)于:READ*,(K(I),I=1,5)使用DATA語句給數(shù)組賦初值· 一般形式: 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
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個(gè)1.0')注意:DATA語句屬于說明語句,但是它可以放在END語句之前的任意行;當(dāng)程序中有多個(gè)DATA語句給同一個(gè)變量賦初值時(shí),以最后一條為準(zhǔn);程序在編譯期間給變量賦予初值,在程序執(zhí)行期間,DATA語句不起任何作用!2.5關(guān)于Fortran77的一些有用的簡介8子程序FORTRAN子程序:包括函數(shù)子程序,
86、子例行程序,數(shù)據(jù)塊子程序執(zhí)行:從主程序開始執(zhí)行,遇到調(diào)用語句再執(zhí)行相應(yīng)的子程序.不同類型的子程序,關(guān)鍵字不同,調(diào)用方法也不同· 函數(shù)子程序:一種可以作為函數(shù)來調(diào)用的子程序("外部函數(shù)")1. 定義:一般形式,由FUNCTION語句和子程序體組成類型說明 FUNCTION 函數(shù)名(虛參表) .(子程序體) ENDFUNCTION 函數(shù)名(虛參表)類型說明 函數(shù)名 .(子
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 小班節(jié)能活動(dòng)周活動(dòng)方案
- 巧用數(shù)字活動(dòng)方案
- 工匠精神培育活動(dòng)方案
- 展示匯報(bào)活動(dòng)方案
- 少工委活動(dòng)比賽活動(dòng)方案
- 小學(xué)詩詞書法活動(dòng)方案
- 少兒口才活動(dòng)方案
- 小額貸款公司策劃方案
- 布置生日自營活動(dòng)方案
- 市集線下活動(dòng)方案
- 制冷操作證培訓(xùn)教材制冷與空調(diào)設(shè)備運(yùn)行操作作業(yè)培訓(xùn)教程課件
- 湖南省長沙市望城區(qū)2020-2021學(xué)年八年級(jí)下學(xué)期期末考試歷史試卷
- 煙葉烘烤調(diào)制理論考試試題
- 下承式鋼桁梁橋結(jié)構(gòu)設(shè)計(jì)及優(yōu)化 (跨度64m)
- DB23-T 3336-2022懸掛式單軌交通技術(shù)標(biāo)準(zhǔn)-(高清最新)
- 服刑人員心理健康教育課件
- DB32-T 2665-2014機(jī)動(dòng)車維修費(fèi)用結(jié)算規(guī)范-(高清現(xiàn)行)
- “麥語言”函數(shù)手冊(cè)
- 外協(xié)(外委)單位作業(yè)安全管理制度(附安全告知書)
- 【專項(xiàng)訓(xùn)練】初二數(shù)學(xué)-全等三角形的綜合應(yīng)用
- (完整版)《市場(chǎng)營銷學(xué)》說課課件
評(píng)論
0/150
提交評(píng)論