版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、精選優(yōu)質(zhì)文檔-傾情為你奉上各個樓層及內(nèi)容索引2-什么是UMAT3-UMAT功能簡介4-UMAT開始的變量聲明5-UMAT中各個變量的詳細解釋6-關(guān)于沙漏和橫向剪切剛度7-UMAT流程和參數(shù)表格實例展示8-FORTRAN語言中的接口程序Interface9-關(guān)于UMAT是否可以用Fortran90編寫的問題10-17-Fortran77的一些有用的知識簡介20-2530-32-彈塑性力學(xué)相關(guān)知識簡介34-37-用戶材料子程序?qū)嵗齁Ohn-cook模型壓縮包下載38-JOhn-cook模型本構(gòu)簡介圖40-用戶材料子程序?qū)嵗齁Ohn-cook模型完整程序+david詳細注解歡迎大家來看看,并提供意見
2、,完全是自己的diy的,不保證完全正確,希望共同探討,以便更正,帶?部分,還望各位大師同仁指教什么是UMAT?UMAT:user definedmaterial mechanical behavior用戶材料子程序,是ABAQUS提供給用戶自定義材料屬性的FORTRAN程序接口;注意是接口程序,真正的定義材料的力學(xué)行為即屬性,是用戶自己編譯的FORTRAN程序來實現(xiàn)的!UMAT通過與ABAQUS主求解程序的接口實現(xiàn)與ABAQUS的數(shù)據(jù)交流UMAT功能簡介!-摘自莊茁老師的書UMAT子程序具有強大的功能,使用UMAT子程序:(1)可以定義材料的本構(gòu)關(guān)系,使用ABAQUS材料庫中沒有包含的材料進行
3、計算,擴充程序功能。ABAQUS軟件2003年度用戶年會論文集(2)幾乎可以用于力學(xué)行為分析的任何分析過程,幾乎可以把用戶材料屬性賦予ABAQUS中的任何單元;(3)必須在UMAT中提供材料本構(gòu)模型的雅可比(Jacobian)矩陣,即應(yīng)力增量對應(yīng)變增量的變化率。(4)可以和用戶子程序“USDFLD”聯(lián)合使用,通過“USDFLD”重新定義單元每一物質(zhì)點上傳遞到UMAT中場變量的數(shù)值。UMAT開始的變量聲明由于主程序與UMAT之間存在數(shù)據(jù)傳遞,甚至共用一些變量,因此必須遵守有關(guān)書寫格式,UMAT中常用的變量在文件開頭予以定義,通常格式為: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本身自帶的參量精度定義的文件包含進來后面詳說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-此處,看來是將用戶定義材料屬性的fortran程序編入RETURN-這是返回值END-結(jié)束UMAT中各個變量的詳細解釋凡是-注明david的,都是我自己猜的,僅供參考DDSDDE (NTENS ,NTENS)是一個NTENSNumber of the Tensions-david維的方陣,稱作雅可比矩陣,應(yīng)力增量/應(yīng)變增量的偏導(dǎo)數(shù),DDSDDE (I ,J)表示增量步結(jié)束時第J個應(yīng)變分量的改變引起的第I個應(yīng)力增量的變化!雅可比是一個對稱矩陣,除非在“*USER MATERIAL”語句中加UNSYMM參數(shù)STRESS (NTENS)應(yīng)力張量矩陣,對應(yīng)NDINumber of the Dire
7、ct Components-david個直接分量和NSHRNumber of the shear Components-david個剪切分量.在增量步的開始,應(yīng)力張量矩陣中的數(shù)值通過UMAT和主程序之間的接口傳遞到UMAT中,在增量步的結(jié)束,UMAT將對應(yīng)力張量矩陣更新,即return.對于包含剛體轉(zhuǎn)動的有限應(yīng)變問題,一個增量步條用UMAT之前就已經(jīng)對應(yīng)力張量進行了剛體轉(zhuǎn)動,因此在UMAT中只需處理應(yīng)力張量的共旋部分-這部分我沒看明白,敬請高手指點.UMAT中應(yīng)力張量的度量為柯西(真實)應(yīng)力STATEV (NSTATEV)STATE VARIABLES (Number of the State
8、 Variables) 用于存儲狀態(tài)變量的矩陣,在增量步開始時將數(shù)值傳遞到UMAT中。也可在子程序USDFLD或UEXPAN中先更新數(shù)據(jù),然后增量步開始時將更新后的數(shù)據(jù)傳遞到UMAT中。在增量步的結(jié)束必須更新狀態(tài)變量矩陣中的數(shù)據(jù)。 和應(yīng)力張量矩陣不同的是:對于有限應(yīng)變問題,除了材料本構(gòu)行為引起的數(shù)據(jù)更新以外,狀態(tài)變量矩陣中的任何矢量或者張量都必須通過旋轉(zhuǎn)來考慮材料的剛體運動。-不懂,請高手指教 狀態(tài)變量矩陣的維數(shù)NATATEV,等于關(guān)鍵字“*DEPVAR”定義的數(shù)值。狀態(tài)變量矩陣的維數(shù)通過ABAQUS輸入文件中的關(guān)鍵字“*DEPVAR”定義,關(guān)鍵字下面數(shù)據(jù)行的數(shù)值即為狀態(tài)變量矩陣的維數(shù)。 材料
9、常數(shù)的個數(shù),等于關(guān)鍵字“*USER MATERIAL”中“CONSTANTS”常數(shù)設(shè)定的值。PROPS (NPROPS)材料常數(shù)矩陣,矩陣中元素的數(shù)值對應(yīng)于關(guān)鍵字“*USER MATERIAL”下面的數(shù)據(jù)行。SSE,SPD,SCD分別定義每一增量步的彈性應(yīng)變能Elastic Strain Energy,塑性耗散Plastic Dissipation和蠕變耗散Creep Dissipation。它們對計算結(jié)果沒有影響,僅僅作為能量輸出。STRAN (NTENS):應(yīng)變矩陣;DSTRAN (NTENS):D-大抵代表Deta,增量的意思-david應(yīng)變增量矩陣;DTIME:增量步的時間增量;NDI
10、:直接應(yīng)力分量的個數(shù);NSHR:剪切應(yīng)力分量的個數(shù);NTENS:總應(yīng)力分量的個數(shù),NTENS =NDI +NSHR。關(guān)于沙漏剛度控制和橫向剪切剛度使用UMAT時需要注意單元的沙漏控制剛度和橫向剪切剛度。通常減縮積分單元的沙漏控制剛度和板、殼、梁單元的橫向剪切剛度是通過材料屬性中的彈性性質(zhì)定義的。這些剛度基于材料初始剪切模量的值,通常在材料定義中通過“*ELASTIC”選項定義。但是使用UMAT的時候,ABAQUS對程序輸入文件進行預(yù)處理的時候得不到剪切模量的數(shù)值。所以這時候用戶必須使用“*HOURGLASS STIFFNESS”選項來定義具有沙漏模式的單元的沙漏控制剛度,使用“*TRANSVE
11、RSE SHEAR STIFFNESS”選項來定義板、殼、梁單元的橫向剪切剛度。-一個問題:得不到剪切模量的數(shù)值和解決方案:用戶必須使用“*HOURGLASS STIFFNESS”選項來定義具有沙漏模式的單元的沙漏控制剛度,使用“*TRANSVERSE SHEAR STIFFNESS”選項來定義板、殼、梁單元的橫向剪切剛度關(guān)于UMAT的流程圖和參數(shù)表格實例跟大家說說所謂的接口程序Interface-FORTRAN的知識在Fortan語言中,主調(diào)程序和被調(diào)程序是分別編譯的.由于Fortran90對過程的許多功能做了擴充,有些功能單靠簡單的調(diào)用語句已經(jīng)無法反應(yīng),因而系統(tǒng)也就無法進行正確的編譯,這時
12、需要在主調(diào)程序中加入interface接口塊,通過它為主調(diào)程序和被調(diào)程序指明一個顯示的接口.如果被調(diào)用中啞元含有假定形狀assumed-shape數(shù)組,或可選變元,或含鍵盤輸入的參數(shù),就需要interface接口塊說明.一般來講,在Fortran90程序之間需要提供interface塊有三種方法:1.將interface接口塊直接寫入調(diào)用程序,并復(fù)制被調(diào)用程序的參數(shù)列表這種方法簡單易用,但也相應(yīng)增加了維護代碼的工作量,因為只要被調(diào)用程序的參數(shù)列表發(fā)生變化,就必須相應(yīng)改變interface接口塊和調(diào)用call語句.2.可以將一個軟件包中所有程序的interface塊寫入一個模塊中,該模塊被軟件包
13、中的所有程序使用.這樣做的優(yōu)點是只需一個模塊來檢查interface定義,缺點是仍需對此模塊和調(diào)用語句進行維護.3.Fortran90編譯器可在contains語句后自動提供過程之間的interface塊,這種interface塊可用于使用模塊的任何程序.建議在同一個軟件包中使用23的形式,在調(diào)用軟件包的入口程序時采用12的形式!是不是在UMAT中,我們所編譯的帶接口的Fortran程序為調(diào)用程序,原ABAQUS主程序為被調(diào)用程序,調(diào)用程序中的第一部分我們先復(fù)制被調(diào)入程序的參數(shù)列表?似乎和ABAQUS主程序調(diào)用UMAT有些相反了?不過個人認為interface作為一個接口塊,在Fortran語
14、法中應(yīng)該放在主調(diào)程序中,且復(fù)制被調(diào)程序的參數(shù)列表.而UMAT的參數(shù)變量的聲明,只不過是為了和ABAQUS使用一致的變量格式,當Fortran程序處理完材料的本構(gòu)定義之后再以這一致的形式將變量值返回到ABAQUS主程序中吧關(guān)于UMAT用Fortran90可不可以的問題在論壇上搜索了關(guān)于這個問題,某位高手說是可以的,只要你自己裝的Fortran編譯器能成功編譯你的Fortran90程序即可,個人認為也是如此,不過我還沒有證明過!關(guān)于Fortran77的一些有用的簡介1:Fortran77的基本結(jié)構(gòu):1. 一個Fortran源程序由一個或者多個程序單位組成,每個獨立的程序單位以end語句結(jié)束2. 每
15、個程序單位包括若干行不能一行寫多條語句,但是可以一個語句寫成行;分為語句行執(zhí)行語句行和非執(zhí)行語句和非語句行注釋行源程序的書寫格式:1. 不區(qū)分大小寫:每行只能80列以內(nèi),并把80列分為四個區(qū)2. 1-5列:標號區(qū)1-5位整數(shù);第一列為*或者C時,為注釋行3. 第6列,續(xù)行標志區(qū)非空格或非0;最多19個續(xù)行4. 7-72列:語句區(qū)書寫語句:一行只能寫一個語句5. 73-80列:語句注釋區(qū)一般做編號注釋程序的編輯與運行:1. 創(chuàng)建源程序文件并編寫源程序2. 編譯并連接源文件3. 運行程序編譯生成的可執(zhí)行文件常量:六種1. 整型常量Integer4位:正負整數(shù)和02. 實型常量Real4位:小數(shù)和指
16、數(shù)形式3. 雙精度常量Double precision8位4. 復(fù)型常量Complex8位5. 邏輯性常量Logical4位6. 字符型常量Character1位變量 變量名1. 第一個字符是字母第一個字符后可跟1-5個字母或者數(shù)字2. 不區(qū)分大小寫3. 空格不起作用4. 允許變量名與語言中具有特定含義的字同名,但盡量不適用5. 盡量見名知義 變量類型 不同的變量類型用來存放不同類型的常量數(shù)據(jù).變量相應(yīng)的也有六種;變量在使用前必須首先對其進行類型說明,三種說明方法: 按優(yōu)先級別排列 1. 類型說明語句:類型 變量名列表,多個變量名之間用逗號隔開,如 REAL A,B,C DOUBLE PREC
17、ISION 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 類型字母表,類型字母表,. 如: IMPLICITREAL(A-D),INTERGER(I-M),DOUBLE PRECISION(X,Z) 3. I-N規(guī)則:Fortran規(guī)定,不加說明的情況下,I-N為整型,其他都為實型幾點說明類型語句說明位于所有可執(zhí)行語句的前面;IMPLICIT語句位于最前面;IMPLICIT NONE取消
18、IMPLICIT說明和I-N規(guī)則,所有的變量必須顯式說明;只在本程序單位有效.關(guān)于Fortran77的一些有用的簡介2:算術(shù)表達式:1. 運算符: +,-,*,/, *2. 優(yōu)先級: ( ),* ,* / ,+-3. 書寫問題1. * 不能省略2. 括號不分大小寫,成對出現(xiàn)3. 多次乘方,按先右邊后左邊處理4. 運算符不能連續(xù)出現(xiàn),要用小括號隔開5. 運算順序)-函數(shù)-*-*,/-+,-6. 運算中的類型問題:運算類型相同:結(jié)果仍為原類型;不同,則自動轉(zhuǎn)換成同一類型7. 誤差問題:1. 溢出:超出有效數(shù)字范圍-解決:很大或者很小的數(shù)用實型的指數(shù)表示2. 誤差:由于有效數(shù)字的位數(shù)限制,實型數(shù)運算
19、存在誤差-解決:轉(zhuǎn)換成雙精度型或者避免因為書寫不當造成有效數(shù)字的丟失簡單輸出輸入語句:輸入輸出三要素:對象哪些數(shù)據(jù);格式;設(shè)備.輸出語句輸出語句的分類:格式輸出表控格式輸出系統(tǒng)標準格式;無格式輸出二進制1. 表控輸出語句:按計算機系統(tǒng)規(guī)定的格式輸出:系統(tǒng)自動為每種類型的數(shù)據(jù)規(guī)定了列數(shù)1. 整數(shù)的表控輸出格式與具體的計算機系統(tǒng)有關(guān):規(guī)定每個整數(shù)占13列,打印在右端,左補空格;2. 實數(shù)的表控輸出格式:規(guī)定每個實數(shù)占17列,打印在右端,左補空格,小數(shù)部分占7列;當實數(shù)的絕對值=10*7或1時,按標準的指數(shù)格式輸出,共占15列,指數(shù)4列,小數(shù)6列2. 表控格式輸出語句:1. print*,: pri
20、nt*,56.8,1252. write(*,*)輸入語句 輸入輸出三要素:對象;格式;設(shè)備. 分類:同上1. 表控輸入語句1. 自由格式輸入-語句:read*,;read(*,*)2. 輸入數(shù)據(jù)以逗號或者空格作為間隔3. 變量名稱為輸入表4. 輸入的數(shù)據(jù)應(yīng)和輸入表的變量個數(shù)類型次序嚴格地一一對應(yīng);少了,程序停止,等待繼續(xù)輸入;多了,程序繼續(xù)進行,多余的不起作用;較多的數(shù)據(jù)可以幾個一組,回車,再輸入幾個一組,回車.5. 重復(fù)數(shù)據(jù),可以7*3-7,7,76. 每一個read(*,*)和write(*,*)語句從一個新的記錄以回車結(jié)束的一批輸入輸出數(shù)據(jù)開始讀數(shù)輸出1. 例如:read(*,*) A
21、,B,C2. read(*,*) D,I,J3. 輸入: 2.3,-63.5回車4. 6.4,91.0回車5. 5,8回車6. 結(jié)果: A=2.3,B=-63.5,C=6.4,7. 從新記錄開始讀數(shù)8. D=5.0,I=8,J未被賦值PARAMETER語句作用:將程序中經(jīng)常用到的參數(shù)或字符串定義成一個符號常量,其值不可改變.語句:parameter(p1=c1,p2=c2,.,pn=cn)注意:1. 符號常量的命名規(guī)則與變量名相同,但在程序中其值不可改變,也不能賦值;2. 符號變量也有類型,可用前面的三種類型說明方法說明類型;3. 參數(shù)語句是非執(zhí)行語句,位于所有可執(zhí)行語句的前面,單位與類型說明
22、語句的后面;4. 一條語句可以定義多個符號常量;5. 優(yōu)點:方便修改程序END,STOP,PAUSE語句END語句:結(jié)束標志,有且僅有一條PAUSEn語句:暫定執(zhí)行;用于調(diào)試程序,n可以是一個字符串或不超過5位的數(shù)STOPn語句:停止運行語句;用于調(diào)試程序,n可以是一個字符串或不超過5位的數(shù)關(guān)于Fortran77的一些有用的簡介3:邏輯運算和選擇結(jié)構(gòu) 關(guān)系表達式1. 構(gòu)成選擇判斷的基本式子2. 關(guā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. 運算結(jié)果:邏輯值:真.TRUE.假.FALSE.5. 運算順序:算術(shù)運算關(guān)系運算 邏輯表達式1. 運算符:1. .and.2. .or.3. .not.4. .eqv.邏輯等5. .neqv.邏輯不等2. 一般形式:3. 結(jié)果:邏輯值:真.TRUE.假.FALSE.4. 運算順序:算術(shù)運算-關(guān)系運算-邏輯運算5. 邏輯運算優(yōu)先級:.not.-.and.-.or.-.eqv.-.neqv.關(guān)于Fortran77的一些有用的簡介4:IF類選擇結(jié)構(gòu) 用塊IF實現(xiàn)選擇結(jié)構(gòu):三種典型形式
24、1. 基本形式1. IF(條件) THEN (塊IF語句)2. 塊1 (THEN塊)3. ELSE (ELSE語句)4. 塊2 (ELSE塊)5. ENDIF (ENDIF語句)6. 說明:IF.THEN語句為塊IF結(jié)構(gòu)的入口語句;ENDIF語句為出口語句,必須一一對應(yīng),配對使用2. 簡單結(jié)構(gòu)1. IF(條件) THEN2. 塊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),當且僅當條
25、件成立時執(zhí)行,并且只執(zhí)行一條語句;IF(條件)語句 算術(shù)IF語句IF N1,N2,N3當算術(shù)表達式的值 0執(zhí)行標號為N1的語句;關(guān)于Fortran77的一些有用的簡介5:循環(huán)結(jié)構(gòu) 結(jié)構(gòu)形式:循環(huán)體由一些可執(zhí)行的語句組成+循環(huán)控制語句控制循環(huán)的開始和結(jié)束 分類:條件型循環(huán)和計數(shù)型循環(huán)DO循環(huán)GOTO語句實現(xiàn)循環(huán) 一般形式:GOTO其中:S1為語句標號 功能:程序執(zhí)行到此語句時,無條件的轉(zhuǎn)向標號為S1的語句DO語句實現(xiàn)循環(huán) 當循環(huán)的初值終值循環(huán)次數(shù)都已知時,可用; 組成:一個DO語句和循環(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 說明1. I為循環(huán)變量,S1為語句標號,是本程序單位中另一可執(zhí)行語句的標號;2. 步長可以省略,缺省值=1;3. 循環(huán)初值E1,終值E2和步長E3都可以是常量變量表達式;4. 由于實數(shù)在內(nèi)存中存儲的誤差,I,E1,E2,E3盡可能用振型量5. E1,E2,E3都可正可負,E1,E2,可為0,但是E3不能為0. 具體執(zhí)行過程1. 執(zhí)行DO語句,首先計算表達式E1,E2,E3的值,若他們的類型與循環(huán)變量I不一致,則自動轉(zhuǎn)換成循環(huán)變量的
27、類型2. 將E1的值賦予循環(huán)變量I,及執(zhí)行賦值語句:I=E1;3. 計算循環(huán)次數(shù):R=MAX0(E2-E1+E3)/E3,MAX0表示從多個整型變量中取最大的一個;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)變量獲得一個新值,而循環(huán)次數(shù)R自動減1;6. 返回步驟4,繼續(xù)執(zhí)行,直到R=0. CONTINUE語句 循環(huán)終端語句必須是可執(zhí)行語句;那么,這種作為循環(huán)終端的語句具有雙重作用:一是作為循環(huán)終端的標志;而是要完成自身的功能.因此影響了程序的可讀性.FORTRAN用一個專門的語句作為DO循環(huán)的終端語句,即
28、CONTINUE語句.它自身沒有任何功能. 一些規(guī)定1. 循環(huán)變量在循環(huán)體內(nèi)只能被引用,不能被賦值;2. 在執(zhí)行DO循環(huán)體期間,E1,E2,E3的值不能被改變,因為他們決定了循環(huán)的次數(shù)3. 離開DO循環(huán)后,循環(huán)變量可以在循環(huán)體外被引用,它的值為脫離循環(huán)時最后一次被賦的值;4. 程序中用到轉(zhuǎn)移語句,規(guī)定:只允許從循環(huán)體內(nèi)-體外;反之不行;5. 循環(huán)終端語句必須是除GOTO,塊IF,ENDIF,END和STOP語句外的任何可執(zhí)行語句 DO循環(huán)的嵌套 在一個DO循環(huán)中還可以包含一個或者多個完整的DO循環(huán),這就是DO循環(huán)的嵌套. 一般形式: DO 10 I=1,10 . . . DO20 J=1,10
29、 . . . 20 CONTINUE . . . 10 CONTINUE 說明: 嵌套要完整,不能交叉 循環(huán)變量的名字,規(guī)定:并列的循環(huán):循環(huán)變量的名字可以相同;嵌套的循環(huán):循環(huán)變量的名字不可以相同 若多層循環(huán)的結(jié)束語句在同一個地方,可以共用一條CONTINUE語句 控制轉(zhuǎn)向語句的使用體內(nèi)-體外當型循環(huán)的實現(xiàn) 在無法確定循環(huán)次數(shù)的情況下可以使用當型循環(huán).當型循環(huán)是指執(zhí)行循環(huán)體要依據(jù)實現(xiàn)給定的條件:當條件成立時執(zhí)行循環(huán),否則不執(zhí)行. 用DO-WHILE語句實現(xiàn)當型循環(huán) 一般形式: DO S1 , WHILE(條件) . S1 用塊IF和GOTO語句實現(xiàn)循環(huán) 一般形式: S1IF(條件) THEN
30、 塊 GOTO S1 ENDIF直到型循環(huán)的實現(xiàn)所謂直到型循環(huán),是指先執(zhí)行循環(huán)體,再判斷條件.如果條件為假,繼續(xù)執(zhí)行循環(huán)體,直到條件為真時終止循環(huán). 用邏輯IF語句實現(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ù)作為條件 當型循環(huán):直到型循環(huán) 當型:塊IF語句(單邊)+GOTO語句(先判斷后執(zhí)行) 直到型:邏輯IF語句+GOTO語句(先執(zhí)行后判斷) 各種循環(huán)可以相互嵌套關(guān)于Fortran77的一些有用的簡介6:數(shù)據(jù)的輸入和輸出數(shù)據(jù)輸入輸出需要確定的三個基本要素: 輸入輸出的設(shè)備 輸入輸出的格
31、式 輸入輸出的數(shù)據(jù) 系統(tǒng)中隱含的 輸入輸出的設(shè)備為:鍵盤顯示器和打印機說明:#(設(shè)備,格式)數(shù)據(jù)列表,當設(shè)備顯示為*,為默認設(shè)備輸出,好像是顯示器或默認設(shè)備輸入,鍵盤吧;格式為*,默認格式輸出輸入-david有格式的輸出輸出語句的一般形式: WRITE (*,S1) S1 FORMAT(格式說明)或者 PRINT S1, S1 FORMAT(格式說明)格式說明符: 主要介紹:I,F,E,D,G,L,A,(撇號),H,X,r(重復(fù)系數(shù)),/(斜杠)I 編輯符(Integer)作用:用于整型數(shù)據(jù)的輸出.一般形式:Iw或Iw.m其中:I表示整型輸出,w為字段寬度,m表示輸出數(shù)據(jù)的最少數(shù)字位數(shù)注意:數(shù)
32、據(jù)輸出時,在指定的區(qū)域內(nèi)向右靠齊;如果數(shù)據(jù)的實際位數(shù)大于指定的字段寬度w,則不輸出數(shù)據(jù),而在該區(qū)域內(nèi)充滿*號;當m大于數(shù)據(jù)的實際位數(shù)時,前面添0,若小于數(shù)據(jù)實際位數(shù),則不起作用F 編輯符(Fixed point number)作用:用于實數(shù)的小數(shù)形式輸出,一般形式:Fw.d其中:F表示實數(shù)的小數(shù)形式輸出;w為字段寬度;d為輸出數(shù)據(jù)的小數(shù)位數(shù)E 編輯符(IExponent)作用:用于實數(shù)的指數(shù)形式輸出,一般形式:Ew.d其中:E表示實數(shù)的指數(shù)形式輸出;w為字段寬度;d為數(shù)字部分的小數(shù)位數(shù)注意:指數(shù)部分占4列,負號占1列,小數(shù)點前為0.如123.45-0.12345E+03D 編輯符(Double
33、 precision)作用:用于雙精度的指數(shù)形式輸出,用法和E 編輯符相仿.一般形式w.dG 編輯符作用:由系統(tǒng)根據(jù)實際數(shù)據(jù)的大小來決定使用F編輯符還是E編輯符.一般形式:Gw.dL 編輯符作用:用于邏輯型數(shù)據(jù)的輸出,一般形式w其中表示整型輸出,w為字段寬度A 編輯符作用:用于字符型數(shù)據(jù)的輸出,一般形式:Aw或A其中:A表示整型輸出,w為字段寬度;若不指定,則表示按實際長度輸出 (撇號) 編輯符作用:用于輸出字符常量,即把撇號內(nèi)的字符串原樣輸出.注意:如果輸出的字符中包含撇號,則用兩個連續(xù)的撇號代表一個要輸出的撇號H 編輯符作用:用于輸出字符常量.一般形式:nH其中:H表示輸出字符常量;n為輸
34、出字符個數(shù);str為輸出的字符串 (較少使用)X 編輯符作用:用于輸出空格.一般形式:nX其中:X表示輸出空格;n表示輸出的空格數(shù)重復(fù)系數(shù)r在format語句中,如果出現(xiàn)幾個(或者幾組)相同的格式編輯符,則可以利用重復(fù)系數(shù)而只寫一個(或者一組)編輯符.如FORMAT(A=,/,4(5(1X,F4,0),/)反斜杠/編輯符作用:結(jié)束本記錄的輸出,開始下一個記錄的輸出,通常指換行.WRITE語句和FORMAT語句的相互作用WRITE語句的輸出變量個數(shù)與FORMAT語句的編輯符(不含撇號,H和X)個數(shù)可以相等,也可以不等;如果編輯符個數(shù)多,則剩余的編輯符不起作用;如果變量的個數(shù)多,則當編輯符用完后,
35、重新使用該格式說明,當如果格式說明含帶重復(fù)系數(shù)的編輯符組,則格式說明用完后,只有最右面一個帶重復(fù)系數(shù)的編輯符組(包含重復(fù)系數(shù))及其右面的編輯符被重復(fù)使用.可以有空格式說明,如FORMAT(),用于輸出一個空行.有格式的輸入有格式的輸入語句 一般形式: READ(*,S1) S1 FORMAT(格式說明由各種格式編輯符構(gòu)成) 例如: READ(*,100) A,B,C 100 FORMAT(F5.1,E12.2,F7.2) END 鍵盤輸入:_15.7_2345.67E+04_705.83enter在PRINTWRITEREAD語句中包含格式說明 例如: PRINT 100,K,Y 100 FO
36、RMAT(18,F7.2) 也可以寫成:PRINT(18,F7.2),K,Y 注意寫法: (.)關(guān)于Fortran77的一些有用的簡介7:數(shù)組使用原則:先聲明,后使用說明方法: 用類型說明語句(顯式說明) 用DIMENSION語句(隱式說明)數(shù)組的說明和數(shù)組元素的引用 用類型語句說明數(shù)組1. 一般形式:類型說明數(shù)組說明符2. 其中:數(shù)組說明符的一般形式為:數(shù)組名(維數(shù)說明符,.)維數(shù)說明符,由下標下界:下標上界組成3. 例如:REALX(1:10),W(1:2,1:3),K(10:20)或者INTEGER B(1:100),PY(0:2,0:3,0:5) 用DIMENSION語句說明數(shù)組1.
37、一般形式:DIMENSION 數(shù)組說明符,. 說明:1. 在數(shù)組說明符中,維數(shù)說明符(下標)的個數(shù)成為數(shù)組的維數(shù)2. 維數(shù)說明符只能使用整型常量或者整型符號常量表達式:如 PARANETER(I=1,J=10) REALKX(I:J+5)3. 維數(shù)說明符的下標下界為1時,可以省略.如:REAL X(1:10)-REAL X(10)4. 數(shù)組說明語句必須寫在所有可執(zhí)行的語句之前.屬于非執(zhí)行語句 數(shù)組元素的引用1. 一般形式:數(shù)組名(下標,.)2. 即要有確定的數(shù)組名和下標值,如XN(5),W(1,3),KW(1,2,3)3. 引用數(shù)組元素時,下標可用算術(shù)表達式,如果算術(shù)表達式的值為實行,則自動取
38、整.數(shù)組的邏輯結(jié)構(gòu)和存儲結(jié)構(gòu)邏輯結(jié)構(gòu):數(shù)組所表示的實際數(shù)據(jù)結(jié)構(gòu) 存儲結(jié)構(gòu):數(shù)組在機器內(nèi)存儲時的排列結(jié)構(gòu) 一維數(shù)組 邏輯結(jié)構(gòu):依次排列的一串數(shù)據(jù) 存儲結(jié)構(gòu):一組連續(xù)存放的一列數(shù)據(jù)塊 二維數(shù)組 邏輯結(jié)構(gòu):一張二維數(shù)據(jù)表 存儲結(jié)構(gòu):一組按列連續(xù)存放的數(shù)據(jù)塊 三維數(shù)組 邏輯結(jié)構(gòu):若干張二維數(shù)據(jù)表 存儲結(jié)構(gòu):一組按頁連續(xù)存放的數(shù)據(jù)塊數(shù)組的輸入和輸出三種方式:用DO循環(huán)用隱含DO循環(huán)用數(shù)組名 用DO循環(huán)實現(xiàn)數(shù)組的輸入輸出1. 優(yōu)點:數(shù)組元素的輸入輸出次序可由用戶控制2. 缺點:做一次循環(huán)就換行輸入或輸出 用隱含DO循環(huán)實現(xiàn)數(shù)組的輸入輸出1. 優(yōu)點:既能控制數(shù)組元素的輸入輸出順序,又能控制一行內(nèi)輸入輸出數(shù)據(jù)
39、的個數(shù)2. 例如:READ(*,*) (G(I,J),J=1,3),I=1,2),由于是一個READ語句,所以既可以一行輸入,也可以多行輸入,鍵盤輸入如下:86,75,72enter87,70,83enter3. 注意:一個READ語句可以多行輸入;但是多個READ語句時,每一個READ語句必須從心的一行讀數(shù).用數(shù)據(jù)名進行數(shù)組的輸入輸出使用時,其順序要與數(shù)組元素在機器內(nèi)的存儲順序一致 例如: DIMENSION K(5) READ *,K-對數(shù)組進行整體操縱 等價于:READ*,K(1),K(2),K(3),K(4),K(5) 也等價于:READ*,(K(I),I=1,5)使用DATA語句給數(shù)
40、組賦初值 一般形式: DATA變量列表初值表,變量列表初值表. 功能:在程序編譯期間給變量或者數(shù)組賦初值.其中,變量列表可以是變量名數(shù)組名數(shù)組元素隱DO循法;初值表只能是常量,不允許出現(xiàn)任何形式的表達式 例如: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個1.0)注意:DATA語句屬于說明語句,但是它可以放在END語句之前的任意行;當程序中有多個DATA語句給同一個變量賦初值時,以最后一條為準;程序在編譯期間給變量賦予初值,在程序執(zhí)行期間,DATA語句不起任何作用!關(guān)于Fortran77的一些有用的簡介8:子程序FORTRAN子程序:包括函數(shù)子程序,子例行程序,數(shù)據(jù)塊子程序執(zhí)行:從主程序開始執(zhí)行,遇到調(diào)用語句再執(zhí)行相應(yīng)的子程序.不同類型的
42、子程序,關(guān)鍵字不同,調(diào)用方法也不同 函數(shù)子程序:一種可以作為函數(shù)來調(diào)用的子程序(外部函數(shù))1. 定義:一般形式,由FUNCTION語句和子程序體組成類型說明FUNCTION函數(shù)名(虛參表) .(子程序體) ENDFUNCTION函數(shù)名(虛參表)類型說明 函數(shù)名 .(子程序體)END2. 1. FUNCTION語句:是函數(shù)子程序的第一條語句,標志著該函數(shù)子程序的開始1. 類型說明FUNCTION函數(shù)名(虛參表)2. 注意:1. 虛元也有類型,需在子程序體中說明1. 例如:REALFUNCTION INTEP(X1,X2,X3)2. INTEGERX1,X2,X32. 函數(shù)名的命名規(guī)則和類型都和變
43、量相同3. 虛參可以是變量名數(shù)組名子程序名,但不允許用常量和數(shù)組元素,它表示了函數(shù)自變量的個數(shù)順序和類型.2. 子程序體:完成一個具體任務(wù)的程序段3. 注意:1. 若無虛參時,括號不能省2. 函數(shù)子程序中所有變量和標號(除函數(shù)名和虛參外),與其他程序單位無任何關(guān)系3. 函數(shù)體的說明部分包括對虛參和本函數(shù)體內(nèi)所用變量和數(shù)組的說明4. 函數(shù)體中可設(shè)置一條或者多條RETURN語句,表示執(zhí)行到此語句時返回調(diào)用程序.1. 當RETURN語句和END語句緊挨著的時候,可省略RETURN語句2. 也可以不設(shè)RETURN語句,但需從中間返回時,必須設(shè)置RETURN語句5. 函數(shù)名的作用:函數(shù)名在函數(shù)體中一定要被賦值,因為函數(shù)名把函數(shù)值帶回調(diào)用程序. 函數(shù)子程序的調(diào)用1. 一般形式:調(diào)用方式和內(nèi)部函數(shù)相似:函數(shù)名(實參數(shù)) 或 函數(shù)名( )2. 說明:1. 調(diào)用程序中函數(shù)名必須與函數(shù)子程序中定義的函數(shù)名相同2. 實參與虛參在個數(shù)類型位置上必須一一對應(yīng),但名字可以不同3. 當虛參是變量名的時候,實參可以是常量變量數(shù)組元素或者表達式;但是當虛參要在函數(shù)體中被賦予初值的時候,則實參不可以是常量或者表達式因為兩者共用一個存儲單元4. 函數(shù)子程序是一個獨立的程序單位,可以作
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 資助工作聯(lián)審制度
- 蜜雪集團港股上市交易制度
- 醫(yī)院牙科種植牙新技術(shù)
- 急性胃腸炎患者的營養(yǎng)支持護理
- 2026中國科學(xué)院上海生命科學(xué)研究院生物化學(xué)與細胞生物學(xué)研究所分子細胞卓越中心曾安組招聘博士后科研助理2人備考考試題庫附答案解析
- 2026山東煙臺濰柴新能源全球社招招聘備考考試題庫附答案解析
- 2026四川蒙頂山茶馬古道文化旅游發(fā)展有限公司招聘勞務(wù)派遣工作人員1人備考考試題庫附答案解析
- 2026河北邢臺市臨城縣招聘森林消防專業(yè)隊員8人參考考試題庫附答案解析
- 2026年棗莊山亭區(qū)事業(yè)單位公開招聘初級綜合類崗位人員(55人)參考考試題庫附答案解析
- 2026海南三亞市教育局直屬公辦學(xué)校招聘教職工215人(1號)備考考試題庫附答案解析
- 2025年中考語文文言文真題匯編47份(分師生版)
- DBJ∕T 15-106-2015 頂管技術(shù)規(guī)程
- 2025年勞動保障協(xié)理員三級技能試題及答案
- 湖北省咸寧市2025-2026學(xué)年物理高二上期末復(fù)習(xí)檢測試題含解析
- 2025年煤層氣開發(fā)行業(yè)分析報告及未來發(fā)展趨勢預(yù)測
- 全民健身中心建設(shè)工程施工方案
- 傳統(tǒng)文化音樂課題申報書
- GB/T 21526-2025結(jié)構(gòu)膠粘劑粘接前金屬和塑料表面處理導(dǎo)則
- 天然氣管道應(yīng)急搶修技術(shù)方案
- (2025年標準)情侶欠錢協(xié)議書
- 長租公寓消防知識培訓(xùn)課件
評論
0/150
提交評論