
發布
注冊
/
登錄Fortran基礎編程學習
關注創建者:雯寶 創建時間:2023-03-26

Fortran基礎編程學習的實例教程
今日推文主要分享一個非線性方程的牛頓-拉弗森迭代解法,借助Fortran語言,講述Fortran編程時需要注意的地方。理論及在Abaqus中的實現過程已在上幾期推文基于Abaqus的Newton-Raphson算法中說明,本次主要說明Fortran編程時需要注意的地方,本文代碼主要參考:《Fortran程序設計權威指南》。
例:
主程序
主程序:Solve.f90,子程序:New_Raphson.f90,函數文件:function.f90,Module模塊:NEWTON.F90。將整個程序分塊編寫,在主程序中調用即可,大型的Fortran中顯得尤為重要。
主程序代碼:
PROGRAM main
! 主程序:Newton迭代法計算方程的根
use NEWTON
OPEN(UNIT=11,FILE='FOUT1510.TXT')
OPEN(UNIT=12,FILE='IM_RESULT1510.TXT')
CALL SOLVE(X,ITER)
WRITE(11,46)X,ITER
46 FORMAT(T5,'Newton迭代法計算方程的根',//,&
3X,'X= ',F15.10,/,&
3X,'ITER=',I5)
END PROGRAM main
由上述程序可看出,主程序只有use、call、輸出語句,甚至可以將輸出語句編一個子程序,在主程序中用call調用即可,如此以來,使得自己的代碼更加簡潔明朗,在編寫Python、Matlab也是同樣的道理。
展開 Fortran
是一門上世紀古老的科學計算語言,具有強大的計算能力,雖然沒有現在的主流語言熱門,但對于想從事有限元二次開發的童鞋來言,是一個不得不跨過去的檻兒,Fortran語言用于自己領域進行開發計算時,往往不需要高深的算法,只需了解簡單的語法規則及循環之類結構即可。木木在剛開始學習Fortran時,遇到疑惑會問一問身邊的同學有沒有用過Fortran,大多數情況是,Fortran?那是啥語言?我......現如今使用的人確實很少,若不是自己對二次開發感興趣,我也不會去觸碰它~
本文先向大家簡單介紹一個二分法的fortran程序,然后推薦大家使用一些輕便的編譯器,最后推薦一下學習的書籍、論壇。
Fortran程序分為自由格式與固定格式,固定格式太太太難看了,閱讀起來也很費力,但大多數遺留下來的有限元程序是按照固定格式來編譯的(木得辦法),自由格式閱讀起來就比較友好了,接下來就用自由格式來編寫一個二分法程序,固定格式相關的將會在以后的推文中涉及。程序在文末!
本程序采用Module將代碼塊進行封裝,程序中用到的變量、function、subroutine,整理到Module中,用的時候只需要Use一下就可,如行48。程序中一些語法、注意的細節將會在以后專門設立一個Fortran的欄目中進行講解。
木木最開始用的編譯器是VS+IVF,后來發現VS占用系統資源很多,卸載也很麻煩,用起來不順手,現在我用的是Simply Fortran編譯器,小巧輕便(100M左右),很很很好用,Simply Fortran安裝包及簡單的說明手冊在文末獲取。界面大致長這個樣子:
B站有的教學視頻也用的是這個編譯器,大家有興趣可以看一下。
展開 自學plc編程最重要的就是模擬工作流程,整個動作控制的過程是由程序的運行來完成。故核心的內容就是過程描述。所以,需要掌握PLC編程語言和基本功能。 PLC語言分為梯形圖、語句和功能圖。常用梯形圖,適合基本邏輯描述,語句表適合數據處理,比較難理解。適用于步數類型的功能圖的狀態函數描述不多。 自學的話,需要安裝相應的軟件。不同廠家的差別很多,但都差不多。其次我們要對學生基本電氣邏輯控制有一定的了解,第三部分就是通過不斷提高自己可以模擬編程技術進行設計練習,最后就是在一些工控論壇去找一些別人寫好的程序來自己研究,搞清楚其中的邏輯思維過程,并自己從新再編輯一次,這樣你對PLC程序的編寫就有了一個初步的了解。接下來就是練習和調試。 自學PLC需要具備的一些條件如下: a、學習編程軟件的plc有三菱、西門子、松下、信捷、永宏等,學哪種則準備哪種PLC一臺,每種品牌的plc編程的軟件也會存在不同程度的差異。 b、準備一臺能與你現在所學的PLC通訊的觸摸屏,很多工控動作和自動化流程會用到組態程序控制,能讓你所學領域盡可能的涉及到實際場合的運用。 c、硬件有了,那么PLC編程的軟件和觸摸屏組態編程軟件也要在電腦上安裝好。 d、準備一些視頻教程和資料,推薦網盤教程很全各種PLC都有:https://pan.baidu.com/s/1ZWDVb81OGMmDa0ihtk7Mgw 提取碼:1234 。 學plc編程首先從理論基礎開始。 1)學習PLC的基本原理, 硬件:了解輸入輸出的原理,熟悉端口的基本電氣要求。 軟件:對于plc系統,必須搞清楚什么是i/o刷新,這是編程的基礎,知道plc的工作循環。 2)熟記基礎邏輯指令 可以先從梯形圖得語言開始,再練習基本的邏輯指令。 學些各種邏輯指令塊。
展開 發帖的目的是:
(1)記錄自己學習的過程;
(2)分享成果。
對于力學專業的我來說,有限元理論是必須了解的知識。這本書已經看了一遍了,但是理解不太深刻。打算認真看第二遍,通過編程來牢固知識。我自己愛好編程,在編程過程中,通過程序設計,發現我的理解又提升了很多。
對應章節:第3章 建立桁架方程。
有限元求解思路:
實現內容:
(1):三維桁架任意方向桿的受力、位移、應力求解;
(2):考慮了桿和彈簧組合系統;
(3):考慮了平面桿斜支撐;
(4):考慮了齊次、非齊次邊界條件。
輸入:
(必要):單元編號、桿截面積、彈性模量、節點編號、對應節點坐標;
(可選):斜支撐節點編號及與x軸正向夾角。
輸出:桿的軸向力、應力、節點力、節點位移、剛度矩陣。
例題:
BarUnit.rar
展開 發帖的目的是:
(1)記錄自己學習的過程;
(2)分享成果。
對于力學專業的我來說,有限元理論是必須了解的知識。這本書已經看了一遍了,但是理解不太深刻。打算認真看第二遍,通過編程來牢固知識。我自己愛好編程,在編程過程中,通過程序設計,發現我的理解又提升了很多。
計算機語言:Python(個人愛好)
對應章節:第2章 剛度法(位移法)
實現內容:
(1)采用直接剛度法;
(2)定義了彈簧單元;
(3)實現剛度的組裝;
(4)考慮了齊次、非齊次邊界條件;
(5)可以輸出整體剛度矩陣、節點位移、節點外力、單元內力、單元剛度矩陣。
下一步目標:
(1)補償法的實現;
(2)勢能法的研究。
非齊次例子展示:
SpringUnit.rar
展開 
Fortran基礎編程學習的相關專題、標簽、搜索
Fortran基礎編程學習的最新內容
微信公眾號:[易木木響叮當]
關注可了解更多的[有限元數值仿真技巧]。問題或建議,請公眾號留言;
如果你覺得木木同學對你有幫助,歡迎贊賞。
今日推文主要分享一個非線性方程的牛頓-拉弗森迭代解法,借助Fortran語言,講述Fortran編程時需要注意的地方。理論及在Abaqus中的實現過程已在上幾期推文基于Abaqus的Newton-Raphson算法中說明,本次主要說明Fortran
Fortran
是一門上世紀古老的科學計算語言,具有強大的計算能力,雖然沒有現在的主流語言熱門,但對于想從事有限元二次開發的童鞋來言,是一個不得不跨過去的檻兒,Fortran語言用于自己領域進行開發計算時,往往不需要高深的算法,只需了解簡單的語法規則及循環之類結構即可。木木在剛開始學習Fortran時,遇到疑惑會問一問身邊的同學有沒有用過Fortran,大多數情況是,Fortran
自學plc編程最重要的就是模擬工作流程,整個動作控制的過程是由程序的運行來完成。故核心的內容就是過程描述。所以,需要掌握PLC編程語言和基本功能。 PLC語言分為梯形圖、語句和功能圖。常用梯形圖,適合基本邏輯描述,語句表適合數據處理,比較難理解。適用于步數類型的功能圖的狀態函數描述不多。 自學的話,需要安裝相應的軟件。不同廠家的差別很多,但都差不多。其次我們要對學生基本電氣邏輯控制有一定的了解,第三部分就是通過不斷提高自己可以模擬編程技術進行設計練習
發帖的目的是:
(1)記錄自己學習的過程;
(2)分享成果。
對于力學專業的我來說,有限元理論是必須了解的知識。這本書已經看了一遍了,但是理解不太深刻。打算認真看第二遍,通過編程來牢固知識。我自己愛好編程,在編程過程中,通過程序設計,發現我的理解又提升了很多。
對應章節:第3章 建立桁架方程。
有限元求解思路:
實現內容:
(1):三維桁架任意方向桿的受力
發帖的目的是:
(1)記錄自己學習的過程;
(2)分享成果。
對于力學專業的我來說,有限元理論是必須了解的知識。這本書已經看了一遍了,但是理解不太深刻。打算認真看第二遍,通過編程來牢固知識。我自己愛好編程,在編程過程中,通過程序設計,發現我的理解又提升了很多。
計算機語言:Python(個人愛好)
對應章節:第2章 剛度法(位移法)
實現內容:
(1)采用直接剛度法