如何系統學習有限元技術?

CAE是土木與軟工兩個專業的結合。但國內除了同濟的「土木工程計算機模擬」研究生專業之外,沒有其他的土木與計算機結合的專業。有限元軟體也沒有系統的考證制度,沒法「以考促學」。

而現在的有限元土木工程師卻很多,他們是怎麼學成的?本科報土木工程然後計算機部分所有知識都靠自學?


題主對有限元、編程、計算機等都有著不同程度的誤解,我想說兩句

有限元

1、有限元是一種模擬手段,你可以不精通理論也能用它,只是用得可能不好;

2、有限元是一找種非常重要的工具,讀研究生幾乎不可能不用它做點東西;

3、教授、需要有限元的課程很多,不一定非要名字帶有限元三個字,就拿研究生階段來說,我上過的需要用到的【名字沒有有限元但是用了有限元才能寫作業交報告的課程】的就有的「高等橋樑計算」、「工程結構抗震」、「高等結構試驗」三門,其他更多的課程都會用到的,所以不用擔心學不到。

編程和計算機科學

學習有限元可能需要自己編程,但不需要你變成計算機專業的學生

編程不等於計算機科學

編程不等於計算機科學

編程不等於計算機科學

重要的事情說三遍

關於計算機,我強烈建議題主好好上一下大學計算機基礎,以及C++,就用譚浩強的書,或者易學C++之流,看這類在知乎被吐槽的書對我們來說沒問題的,不用倒背如流,能看懂就行,然後不懂的地方能問人問人,不能問人就Google,絕對夠土木用了,然後編程用Matlab就好,好用到爆,特別是Matlab給出的信號處理工具箱,再從Mathworks的文件交換中心找些輔助的函數,處理振動信號分分鐘的事情。

關於怎麼學,我個人的建議是這樣的,你不一定採納

1、結構力學的矩陣位移法和結構動力學搞清楚,要能自己手算做題

2、彈性力學、板殼力學和有限元的書看看,記一些假定、推導的方法、結論

3、用SAP2000、Ansys、Abaqus、Opensees等算一些問題,和2對比對比

到這步結束,研究生階段的要求基本就夠了,然後做試驗的數值模擬時候再去專門學習一下自己這個方向的一些經驗教訓和前人成果。

4、如果你學有餘力也有興趣,自己用Matlab寫解決彈力裡面問題的有限元程序

再往下就是我不負責任的瞎猜了,因為我也沒做到~

再往下就是我不負責任的瞎猜了,因為我也沒做到~

再往下就是我不負責任的瞎猜了,因為我也沒做到~

5、如果你超級學有餘力,強悍到爆炸,用C艹寫一個程序給大家用

6、如果你在力學理論和編程方面都強悍到逆天,可以試著去參加一些項目的編寫,比如UCB主導的Opensees,試著用C艹,Fortran,以及CUDA為我們開發程序


總算有個自己能答的問題,反對高票答案。 題主的問題是,如何系統的學習有限元?

這裡的話,有個最關鍵的前提就是題主希望的發展方向,很大程度上影響著如何學習。簡單來說,兩個方向,其一常規的土木工程師或者FAE,其二做有限元軟體的研發工程師。前者主要以應用為主,你需要學習的是在一個常規的土木工程師基礎之上精通各類模擬軟體,土木這個方面的話最流行的應該是Abaqus,ANSYS次之,總的來說以應用為主,即使軟體方面也不需要太過於糾結軟體非常細的東西,你要做的是嘗試各種案例,各類有實際設計意義的模擬項目,這樣你會進步很快,在很短時間內可以超越哪些年紀較大不相信有限元這一套的老工程師,這是求生本錢。再說說後者,如果立志做個有限元軟體的研發工程師,那麼主要精力就不應該放在工程應用上面了,但也絕不是高票答案所說的C++,而是,數學!有限元法的底層基礎仍然是一門應用數學學科的分支,所以,埋頭學數學,舉個例子 電磁場有限元,學不好數學你會連麥克斯韋方程組都看不懂,你要做的工作是把有限元基礎演算法提煉出來交給寫C++的人,而不是自己去寫C++,你去和軟體工程師搶飯碗一點優勢一點勝算都沒有好嗎!


我要反駁一下題主了。

題主說【除了同濟的「土木工程計算機模擬」研究生專業之外,沒有其他的土木與計算機結合的專業。】題主至少應該去翻一翻各個學校的課程設置或者培養方案,難道專業名字帶「計算機」三個字,學生才學計算機?

我們會上計算機系開設的編程課程,要學習計算機作圖、BIM等,老師上課花十幾分鐘介紹一下SAP,下來學生上機做大作業。彈性力學課上介紹有限元基礎知識,系統的學習放在研究生階段。

雖然本科生沒有專門的有限元課,但有限元軟體基本上人人都會那麼一兩個。為什麼呢,因為作業要用啊,課程任務逼著學生自學呢。

如果有限元要引入「考證制度」,我舉雙手反對。恕我直言,【以考促學】幾乎沒有什麼卵用。行業內有些證書如圖廢紙一張。比如什麼CAD證……真正能促學的是項目,上手做一兩個自然就會了。

另外,學習有限元和學習計算機是兩把事。我們學有限元課程的時候,大部分習題都是手算的(或按按計算器)。


首先糾正題主一個誤區,有限元技術無法考證,你想像一下,假如有限元技術考證,分理論和上機兩部分,理論部分包括彈性力學塑性力學 有限元理論 工程結構分析 計算結構力學 數學物理方程 數值分析 高等土力學 混凝土結構 上機 就考

題目1請使用加權餘量法對xx方程求解 並寫出 程序代碼 題目2請使用 xx軟體對該結構進行分析 題目3請使用 對xx結構的分析結果進行求證 並寫出判斷依據。

你會發現,這種老師完全沒有意義,首先,如果是你是學岩土的,那你最常用的有限元技術是本構關係,你應該經常做的事情是二次開發,他娘的,你會發現,考試扯了好多蛋完全用不著

如果你是學結構的,方嚮應該是結構分析,但是是動力學部分,你會發現,題目東西完全跑偏還得學本構關係……

如果你是學路面表觀性能分析的,你發現你老師耽誤了你大量的時間……

如果你是搞瀝青……

其實,有限元技術在土木機械航空複合材料細觀力學都有不同程度的應用,且相互影響你說你掌握了一門技術知識特定方向特定領域,換到別的方向又是另外一個概念,同時又不能劃分的太細或太粗

最後就是有限元永遠不會是完全與實際一樣總是會有各種各樣的簡化方法與手段,很少有兩個完全一樣,這些東西靠的是想像力,不是知識的累加……這些工程師都是手工產品無法靠老師量產啊


個人看法,僅供參考:

一,看到題目中的「有限元技術」一詞,有點不太認同,Finite Element Method 應該叫「有限元方法(FEM)」更好一點吧。

二,「有限元方法(FEM)」是一種數值計算方法,是和邊界元方法、有限差分法等一系列數值計算方法並列的,是在數學上無法求解出解析解時採用的方法。

「波動問題······數值解法根據求解思路的不同,大致可以分為兩大類:一類是以有限差分法為代表,其特點是直接對定解問題的基本方程和相應的初值條件及邊值條件進行數值離散;另一類方法的求解思路是首先建立和原問題的基本方程及相應定解條件等效的積分形式,然後對該積分形式進行數值離散化,這類方法的代表包括有限元法和邊界元法。」

——摘自:杜修力. 工程波動理論與方法[M]. 北京:科學出版社,2009.

從數學本質來講,FEM的作用是將力學所涉及到的一系列求解常/偏微分方程(組)的問題轉化為求解線性方程(組)的問題,是一種

近似的數值計算方法

近似的數值計算方法

近似的數值計算方法。

這裡我想強調的是,FEM只是一種數學求解方法而已,當然它最初是從力學中發展出來的,但是現在對於電磁場等很多物理問題都適用。

三,既然談到它是一種求解力學問題的近似方法,那麼一定有它的適用範圍,簡單的來說,它的適用範圍很廣,隨著無網格方法和非線性FEM的發展,FEM對固體力學塑性問題以及流體力學的適用性進一步提高。

四,回到正題:「如何系統地學習有限元技術?"我認為你應該明確自己的研究方向,假如如果你是學力學相關專業的(這是主流),那麼你應該學習數學和力學的相關課程以構建一個完整的系統的力學知識體系才能較好地掌握FEM,這些相關課程我認為分為4大類

第一類:數學基礎類(也是最重要的,最先學習的)

高等數學、線性代數、基本數值方法、複變函數、張量分析、數學分析、概率論、統計、泛函分析、變分原理、數學物理方程等等。

第二類:計算機基礎類(一般重要)

C語言、FORTRAN或者其他較為基礎的計算機高級語言任選一門學習,計算機原理、並行演算法、數據結構(了解一定的計算機工作原理和編程演算法對以後的編程好處很大)等,一般的現有成熟演算法已經可以滿足普通科研需求,除非你是搞計算力學才有必要深入學習編程知識。

第三類:力學基礎類(很重要,作為下一類的鋪墊,排名不分先後)

a.理論力學(經典剛體力學)包括:

牛頓力學、拉格朗日力學、哈密頓力學

b.材料力學(桿梁力學)

c.結構力學(桿梁系力學)

d.板殼力學

e.結構動力學(波動/振動力學)

f.理想/粘性流體(動)力學

g.連續介質力學(近代力學統一理論)

h.彈性力學(彈性理論)

i.塑性力學(塑性理論)

j.斷裂力學(疲勞/斷裂理論)。

說明:如果你已經完成了以上3類的學習那麼你已經可以學習有限元方法來求解各類彈塑性力學問題了,最初的時候建議用一些簡單的結構進行手算,然後可以嘗試使用FORTRAN、C、C++、Python、Matlab等編寫一些有限元小程序,並學習使用ANSYS、ABAQUS等商業有限元軟體進行稍複雜結構的計算,學到這裡你已經可以解決絕大部分工程問題了,並已達到一名工程力學專業優秀本科生的水平了。)

第四類:進階類(這部分作為你研究方向的拓展,當然不是必要的,比如對搞實驗力學的人來說去花心思研究計算力學就顯然偏題了)

下面需要學習就跟你的研究方向有關課程了,對於一些比較複雜、還在研究的問題,現成的商業軟體並不能很好的解決,這個時候才是體現你研究水平的時候用,你自己研究的理論進行FEM求解(當然這裡也不局限於用FEM,任何數值方法都可以,哪一個更適合用哪個,或者你自己創造改進一個)。

****對於力學特別感興趣,又有不錯的編程、數學功底,可以考慮一下二級學科「計算力學」***

如果你不是力學專業,我不太了解了,對應FEM的學習思路也許思路也差不多吧?但無論怎麼樣數學、物理基礎是很重要。

最後,我還有三點想強調的:

1、「計算力學」和「計算數學」。對於目前力學主流的研究思路都是將實驗、理論、計算三者相結合。但是「計算力學」往往更多偏重於對數值方法本身的研究,也就是如何提高計算精度、提高普適性、提高計算效率等等,相當於力學版的「計算數學」。

2、FEM本質是數學和物理。FEM常常和計算機扯上關係,我想說它只是一種數值計算方法,是當物理問題的解析求解方法不好做時再考慮使用的,而且複雜結構的FEM求解過程及其繁複的,人腦很難勝任!所以才考慮用計算機編程,所以計算機編程只是FEM的實現、載體而已。

3、學會如何使用商業有限元軟體並不是真正的學懂了有限元。就像讓一個連代數都沒學過的去學習使用計算器一樣,只知其一不知其二。商業FEM軟體就是一個黑匣子一樣,你沒有親自編寫過FEM程序是不會知道裡面的運行原理,自然遇到很多沒有見過的問題你也會束手無策。商業FEM軟體對於做工程的來說足夠了,但是對於做科研的來說,尤其是對搞計算力學的,那個真的沒有什麼技術含量。因為裡面的東西都是十分成熟的,不成熟也不敢拿出來賣,出了問題誰負責。要有突破還得自己去編寫,自己去研發。

以上。

歡迎交流,歡迎批評指正。

謝謝。


Cae 並不是土木和軟體工程結合的產物。用好軟體不需要軟體工程背景。

樓主是想在有限元這個領域造輪子?還是說想再土木領域用好有限元軟體?

造輪子我不懂,但是土木應用這塊:

能用紙比算出來的,不用電腦。

能用商業軟體算出來的,不用私人程序。

我個人覺得,除非興趣使然,在土木這個行業造輪子沒啥意思。

特別是結構這塊,似乎不需要特別高級的東西就能解決。費心開發了很棒的程序,計算精度提高百分之10,然後你去工地看看施工情況,就會發現,,真的是然並卵!這裡面施工質量問題,實際構造不能滿足的問題等等。

你那百分之10的精度,會被實際構造擊敗。更多時候,我們需要經驗和感知。良好的節點構造,合理的結構布置,都比數值模擬來的直接和有效。


絕大多數(99.999999%,這裡面大師純手算除外)的有限元都是在計算機上運行的 了解計算機的運作機理和軟體對計算機的性能需求是一定會接觸到的知識 不是大學裡面 名字帶計算機才會學 任何時候任何方向的 只要是數值模擬方向的都肯定需要計算機 如何學 因為你在學校 基本沒法接觸實際工程 就是接觸了也是非常淺顯的局部 那麼沒有太好的目標需求 比較笨的方法就是 全面了解各種功能 了解某類型現象 可以用什麼方法去解決 如何去思考一個現象 如何去簡化一個東西 如何去表達疑問 如何組織語言吧你的信息告訴其他人 然後對著案例做一些基本的聯繫 多看看最新的版本 最新的功能在幹嘛 因為學校學的基本都是5-20年之前的老東西 學新的是為了讓你畢業以後換手也方便 不需要大改就能直接使用最新版 功能上看最新的是因為以前某些不方便不容易的功能操作方法你熟悉後 某些新功能可能直接就非常簡單的解決了 整體上還是提高效率 然後多跟人交流 多看看論壇 很多論壇上面的帖子雖然不是一下子很全面系統 但是比較好的吧一個點 一個功能 一個方法說的很好 自己吧這些碎的信息組織起來就是完整的能力了 學校就是給你個機會學 但是不是真正的用 真正的解決問題的能力永遠在工作中練就 老師很少有真正能交匯你如何解決問題的 不要擔心學校接觸的不多不深不實際 要抓住這個隨時可以學習的機會 工作以後就沒那麼好的機會給你靜下心學一個東西了


理解的太狹隘了吧,cae用處很廣泛,不止是土木,什麼機械啊,熱電物理生物啊,計算機輔助工程的簡稱而已。cae也不是萬能的,局限性很多,對經驗要求較高,很多人都是工作後再根據需要再學的,學校里學的還是偏理論。


你把機字去了,只留計算,然後看看研究生的專業研究方向,你就會發現更大的世界。

計算力學老師哭暈在廁所。


今天剛和師兄討論了有限元怎麼學。本人土木工程專業,大二初次接觸midas,大三大四皮毛用用ansys,研究生開始學用APDL,同時通過各種課程更多的了解有限元,目前僅僅是用matlab編寫過空間桿件的有限元程序,也是皮毛。從土木工程的角度簡單說一下個人看法:

1.在我看來,有限單元法,是一個數值計算方法。是一個將現實東西通過一定方法轉化為數學模型,用某些方法求解這個數學模型中的未知數的方法。

2.如果僅僅是使用上的熟練,那大體了解一下有限單元法具體是怎麼操作的,就可以入手軟體了,ANSYSABAQUS都是較為常用的有限元軟體。通過大量的實例學習以及debug,你能不斷提高,成為一個熟練使用有限元軟體的工程師。即使在同濟的土木,就身邊人來看,這樣的人不多,強大的有限元軟體不需要太熟練使用即可碩士畢業。當然本身應該專註於研究的方向,工作之後也有大量機會提升自己。從能一個小模型到較為複雜的模型的建模計算。這方面的學習也是對進入設計院的同時對數學、科研、編程無感的碩士的建議。

3.如果不僅滿足於使用有限元軟體,想了解有限元軟體內部是怎麼運行的,想知道為什麼非線性計算不收斂、為什麼靜力算的好好的特徵值就不行,不想盲目的把它當黑箱不斷調參來嘗試得到結果的話,就應該離開這些軟體學些有限元基礎知識了。把有限元和ansys、abaqus當成兩碼事。樓上有說學什麼的,非常同意,我也不獻醜了,僅說一點,就是要結合編程。有限元法是個數值計算方法,類似其它的數值計算方法,如果僅僅是學習演算法而不編程(手算),還是較難理解的。另外題主提到的同濟的一位張老師說過,現在的博士不會編程是不行的。

4.編程用什麼,如果你是單人開荒,推薦matlab,一個「D=KF」即可直接求解線性靜力平衡方程KD=F,矩陣運算太方便,能讓你更多的關注在科研而非程序,非常適合土木狗。如果研究室有成型的程序(通常是Fortran),師兄師姐帶著開荒的,那就跟著學用相應的語言,開小號撿裝備。線代應該是這裡面最重要的一門知識,在模型及數值計算中應用廣泛。

5.當然你想用C++也行,我本科學過,也是唯一系統的學過,然後考慮都不考慮,老子要畢業,沒工夫c++(c=讀博時間)。目前在看python。

6.至於高數線代、三大力學、鋼結構混凝土等,必須認真好好的學,有限元只是工具,替代不了你的大腦。

以上僅是從土木工程的角度來看如何學有限元,感覺力學專業都應該進入基礎的學習,結合編程。才疏學淺,我的看法也止步於此,或許學到的更多會改變看法也說不定。歡迎各位提點~


有限元是將連續問題離散化解決的近似方法。學習有限元應該是報考力學專業,前兩年和數學系學生一起上課,大二開始陸陸續續學習基礎力學課程,同時學習些土木方面的專業課看你準備從事哪個方面,大四開始可以接觸有限元了,然後系統學習一年有限元,研究生階段可以報土木或者繼續力學,這時開始接觸經典力學的另外幾種表述,如哈密頓原理,拉格朗日,,,,像編程所研究方向專業課基本都是自學,但是因為數學力學底子好,所以其實都不難。

可是臣妾做不到啊,,,,,,,


理論力學 材料力學 結構力學 流體力學 彈性力學 塑性力學 連續介質力學 泛函變分

然後學有限元 桁架 鋼架 彈性 編程序編到走火入魔 大功告成


有限元先用在機械航空航天領域,用到土木是是後期發展的。建議多讀文獻,典型的基礎不牢


cae並不是計算機與土木工程的結合,它是計算機輔助工程,也就是用計算機上的工程軟體解決工程實際問題,這包括眾多領域,許許多多種工程問題。要搞清楚,學軟體和學計算機專業那些課程是兩碼事。

而有限元是這些軟體中演算法的原理,而真正支撐它的是力學,電磁學等等這些理論,所以首先確定以後希望從事的行業,以及需要的基礎理論知識有哪些,土木方向的話肯定要學好一系列的力學了,大學去專研這些課程。掌握這一步以後,去學習有限元原理的一系列方法理論,這個也學會了以後,或者是學有限元的同時,把你從事行業常用軟體用幾個月時間學會,剩下的就是真正工作以後的實踐和積累了。

計算機里的軟體只是工具,有限元是軟體里程序的原理,掌握好可以有利於更好的應用工具,而無論用什麼工具什麼方法,解決工程問題,才是目標。大學和研究生土木工程相關的課程會教你如何解決問題,而工具是可以自學的,不要本末倒置了。


題主應該開闊一下眼界。研究生的方向不同,計算機應用的領域也不同。至少我上學時(十年前),研究生計算機應用已經比較普遍且相當重視。做結構計算的,做土力學模型的,做材料模式研究的,做水力計算的,管網模型優化的基本上都會在自己領域內對某些軟體進行二次開發。CAE是個大類,有限元只是其中一部分。還有有限差分法,邊界元等等其他求解方法。還有各種優化理論,離開了計算機能玩的轉嗎?有些為了做研究,跟著學機械的,學計算機的,學力學的,學數學的一塊兒聽課。


力學專業本科就有比較系統的有限元課程


題主概念好混亂,CAE不等於有限元。相對於很多人認為學有限元不用理論理解深這個觀點我是很不贊同的。只是按按鈕的工程師不過是民工。有限元自使用以來我覺得最重要的一句警句就是「垃圾進垃圾出。」


推薦閱讀:

你編程的動力是什麼?
有沒有程序大牛想過寫本外行看的編程教程?
如果用拉丁語來命名計算機科學裡面的名詞會是怎樣?
Windows下exe文件的本質是什麼?

TAG:編程 | 計算機 | 土木工程 | 有限元分析FEA | 計算機輔助工程CAE |