本書在前幾版的基礎上進行了全面的修訂,主要圍繞三個方面的問題展開有限元程序設計,即固體力學問題、流體力學(包括熱力學)問題及固體與流體的耦合問題(如土力學中的問題),涉及到的方程主要有靜力平衡方程、傳導方程和特征值方程。本書致力于幫助讀者通過有限元技術來使用為算法設計的“構件塊”。其重點并不在于程序,而在于過程或子程序的集合。目的在于教會讀者編寫智能程序并使用它們。
譯者序
隨著計算機硬件技術的巨大改進,有限元技術在各個工程領域正日益顯示出強大的生命力。有限元技術是一種數(shù)值計算技術,它對不能用解析方法求解的問題,有著獨特的應用能力。但是,掌握有限元技術又不僅僅是一個純粹的理論問題,它要求應用人員有一定的程序設計能力,才能將它們應用于工程領域實踐,否則只能“望洋興嘆”。本書就是在這樣一種背景之下翻譯出版的,使讀者真正具有編制結構清晰可見、閱讀性強的有限元程序。
本書的特點之一是提供了相當多的源程序供讀者參考,真正地“站在巨人的肩膀上”。本書提供的各個程序都利用了FORTRAN2003的強大功能,采用模塊化編程技術實現(xiàn),有利于讀者閱讀。同時,結合具體的工程應用實例,對本書中各個程序的應用原理、變量含義等做了簡明扼要的說明。本書的另一特點是,對每一類問題都提供了不同的求解技術,如高斯直接消元法、迭代法、隱式積分法、顯式積分法、混合顯式/隱式積分法、共軛梯度法等。通常情況下,有限元分析對計算機的存儲要求和運行速度要求都是很高的,尤其是對大型問題而言。因此,本書除了提供通常采用的單元組裝技術之外,還提供了有關“逐個單元”法或“自由網格”法等求解技術,它們不需要存儲大型的總剛度矩陣。
此外,本書的這一版本中,還特別關注與其他開放軟件的接口,例如,ParaView用于計算結果的可視化,ABAQUS用戶子程序用于一些材料本構模型,ARPACK用于大型特征值分析,METIS用于網格劃分等。本書涉及的知識面相對較廣,但主要圍繞三個方面的問題展開有限元程序設計,即固體力學問題、流體力學(包括熱力學)問題、固體與流體的耦合問題(如土力學中的問題),涉及的方程主要有靜力平衡方程、傳導方程和特征值方程。本書中,第2章和第3章是以后各章的基礎;第4章至第6章是針對彈、塑性問題的靜力分析,應用的主要是靜力平衡方程;第7章至第9章主要是針對流體問題,或者流體與固體的耦合問題,應用的主要是傳導方程;第10章至第11章是彈、塑性實體的動力響應分析,應用的主要是特征值方程;第12章是有限元分析的并行處理。當然,其有限元分析過程都是類似的,這有利于讀者針對不同問題擴展現(xiàn)有程序。
本書作為一本教材,主要針對學習有限元編程技術的本科生和研究生。另外,對相關領域內從事有關有限元程序設計及應用的工程技術人員也有指導作用。
翻譯國外的教材是一個再創(chuàng)作過程,本書的翻譯過程得到了很多人的幫助和參與,沒有他們?yōu)榇烁冻龅男羷,就不會在如此短的時間內順利地翻譯這本書,在此衷心感謝為本書翻譯付出努力的每一個人!除了本人之外,慈鐵軍副教授、范偉麗副教授、葉鋒副教授和楊文剛博士等也參與了本書的翻譯工作。另外,韓春雨、曹應平、白云燦、鄭朝陽、張軍磊、李賽賽、李先超和張晨陽等研究生也參與了本書翻譯的相關工作,在此對他們的工作表示衷心感謝。全書由張新春副教授統(tǒng)一校核。
由于譯者自身的知識局限性和精力有限,譯文難免有錯漏之處,謹向原書作者和讀者表示歉意,并歡迎讀者批評指正。
華北電力大學機械工程系
張新春
2016年10月于保定
第五版前言
這個版本保持了先前版本成功的主題,即模塊化程序設計風格,該風格簡潔,易于讀取計算機程序,通過求解偏微分方程而解決廣泛的工程和科學問題。
盡管在計算機硬件上有了巨大的改進,但編程風格本質上是相同的。本書既適合首次接觸有限元方法的初學者閱讀,也可供使用最新一代并行超級計算機求解大型工程問題的專家參考。
在這一版本中,特別關注的是與其他開放軟件的接口,例如,ParaView用于結果的可視化,ABAQUS用戶子程序用于一些材料本構模型,ARPACK用于大型特征值分析,METIS用于網格劃分。
考慮到計算機硬件的快速發(fā)展,第1章已經重新改寫,例如,GPU的可用性和云計算環(huán)境。在第2章到第11章中,增加了大量附件用于提高分析選項。例如,新回歸算法用于彈、塑性分析,更多的一般邊界條件規(guī)范和動態(tài)分析的復雜響應選項。
第12章已經更新,說明有限元分析在并行計算環(huán)境中快速發(fā)展的可能性。在第四版中,并行“進程”的最大數(shù)目是64,而在本版本中,這個數(shù)目已經增加到64000。本書還講述了加速計算GPU的使用。
致謝
非常感謝許多個人和機構對本書所做的貢獻。感謝澳大利亞研究理事會對紐卡斯爾(NSW)大學巖土科學與工程研究中心(CGSE)的大力支持,尤其是黃勁松(JinsongHuang)對第6章、第8章和第9章中幾個新的和改進的程序開發(fā)與驗證所做的貢獻。路易斯(曼徹斯特大學)是ParaFEM的主要開發(fā)者之一,提供了第1章、第5章、第6章和第12章中ParaView使用的練習題,并建立了社團網站http://parafem.org.uk。
有許多人對第12章做出了貢獻。LlionEvans,PaulMummery,PhilipManning,GrahamHall和DimitrisChristias(曼徹斯特大學)提供了科學案例研究。FlorentLebeau和FrancoisBodin(CAPS公司)評估了GPU的使用,PhilippeYoung(Simpleware有限公司)提供了基于圖像模型的大力支持。
第12章中的程序標記利用超級計算機來完成,這些超級計算機屬于英國國家高性能計算服務“HECToR”(e107,e254)和英國區(qū)域服務“N8HPC”(EP/K000225/1)。歐盟FP7項目“Venus-C”和(西班牙)巴塞羅那超級計算中心提供了使用微軟Azure的通道、資源和培訓。
在本書的準備過程中,我們也要感謝我們的家庭成員對本書的大力支持,包括ValerieGriffiths,LauraSanchez和NathanMargetts。
目 錄
第1章 預備知識:計算機策略 1
1.1 引言 1
1.2 計算機硬件 1
1.3 存儲管理 2
1.4 向量處理器 2
1.5 多核處理器 3
1.6 協(xié)處理器 3
1.7 并行處理器 3
1.8 應用軟件 4
1.8.1 編譯器 5
1.8.2 算術精度 5
1.8.3 條件語句 6
1.8.4 循環(huán)語句 6
1.9 數(shù)組 7
1.9.1 動態(tài)數(shù)組 7
1.9.2 數(shù)組“廣播” 8
1.9.3 數(shù)組賦值 8
1.9.4 向量下標 8
1.9.5 子數(shù)組 9
1.9.6 數(shù)組的整體操作 9
1.9.7 進行數(shù)組運算的內部函數(shù) 9
1.9.8 模塊 10
1.9.9 子程序庫 10
1.9.10 結構化編程 13
1.10 第三方函數(shù)庫 14
1.10.1 BLAS函數(shù)庫 14
1.10.2 數(shù)學函數(shù)庫 14
1.10.3 用戶子函數(shù) 14
1.10.4 MPI函數(shù)庫 14
1.11 可視化 15
1.11.1 啟動ParaView 15
1.11.2 顯示約束節(jié)點 16
1.11.3 顯示施加荷載 17
1.11.4 顯示變形的網格 17
1.12 本章小結 18
參考文獻 19
第2章 有限元的空間離散化 20
2.1 引言 20
2.2 桿單元 20
2.2.1 桿單元剛度矩陣 20
2.2.2 桿的慣性矩陣 22
2.3 特征值方程 23
2.4 梁單元 23
2.4.1 梁單元剛度矩陣 23
2.4.2 梁單元慣性矩陣 25
2.5 具有軸向力作用的梁 25
2.6 彈性地基梁 26
2.7 離散化處理概述 27
2.8 推導單元剛度的另一種方法 27
2.9 二維單元:平面應力單元 28
2.10 能量法和平面應變 31
2.11 平面單元的慣性矩陣 33
2.12 軸對稱應力與應變 33
2.13 三維應力與應變 34
2.14 平面彎曲單元 36
2.15 固體單元方程小結 39
2.16 流體流動:納維-斯托克斯方程 39
2.17 流動方程的簡化 42
2.17.1 穩(wěn)態(tài)問題 42
2.17.2 瞬態(tài)問題 43
2.17.3 對流問題 44
2.18 畢奧固結耦合方程 45
2.19 本章小結 46
參考文獻 47
第3章 有限元的編程實現(xiàn) 48
3.1 引言 48
3.2 四邊形單元的局部坐標 48
3.2.1 四邊形單元上的數(shù)值積分 50
3.2.2 四邊形單元上的解析積分 51
3.3 三角形單元的局部坐標 52
3.3.1 三角形單元的數(shù)值積分 52
3.3.2 三角形單元的解析積分 53
3.4 多單元組裝 53
3.5 逐個單元法 55
3.5.1 求解線性方程組的共軛梯度法 55
3.5.2 前置法 56
3.5.3 非對稱系統(tǒng) 57
3.5.4 對稱的非正定方程 58
3.5.5 特征值系統(tǒng) 58
3.6 邊界條件的引入 58
3.7 模塊化編程 61
3.7.1 黑盒子程序 62
3.7.2 專用子程序 63
3.7.3 使用四邊形單元對彈性實體的平面應變(應力)分析 63
3.7.4 使用三角形單元對彈性實體的平面應變(應力)分析 66
3.7.5 彈性實體的軸對稱應變分析 66
3.7.6 平面穩(wěn)態(tài)流層 67
3.7.7 質量矩陣 67
3.7.8 高階二維單元 68
3.7.9 三維塊單元 69
3.7.10 單元剛度矩陣的組裝 73
3.8 平衡方程的求解 77
3.9 特征值和特征向量的計算 78
3.9.1 雅可比算法 78
3.9.2 Lanczos和Arnoldi算法 79
3.10 一階率相關問題的求解 79
3.11 耦合納維-斯托克斯問題的求解 82
3.12 耦合瞬態(tài)問題的求解 84
3.12.1 完全載荷法 84
3.12.2 載荷增量法 85
3.13 二階偏導率相關問題的求解 85
3.13.1 模態(tài)疊加 86
3.13.2 紐馬克或克蘭克-尼科爾森法 88
3.13.3 威爾遜法 89
3.13.4 復合響應法 89
3.13.5 顯式積分法和其他方法的概述 90
參考文獻 91
第4章 結構的靜力平衡 93
4.1 引言 93
4.2 本章小結 127
4.3 變量名稱術語 127
4.4 習題 129
參考文獻 135
第5章 線彈性實體的靜力平衡 136
5.1 引言 136
5.2 變量名稱術語 178
5.3 習題 182
參考文獻 187
第6章 材料非線性 188
6.1 引言 188
6.2 材料的應力-應變關系 189
6.3 應力不變量 190
6.4 破壞準則 192
6.4.1 米澤斯破壞準則 192
6.4.2 莫爾-庫侖和特雷斯卡破壞準則 193
6.5 體荷載的生成方法 193
6.6 黏塑性法 194
6.7 初始應力法 195
6.8 破壞面和塑性勢面的拐點 196
6.9 彈塑性率相關的積分 220
6.9.1 正向歐拉積分法 222
6.9.2 后向歐拉積分法 222
6.10 切線剛度法 223
6.10.1 非一致切線模量矩陣 223
6.10.2 一致切線模量矩陣 224
6.10.3 收斂性判斷準則 224
6.11 堤防結構構筑與土方開挖的土工技術處理方法 236
6.11.1 筑堤防護 236
6.11.2 開挖技術 242
6.12 不排水剪分析 249
6.13 變量名稱術語 262
6.14 習題 268
參考文獻 270
第7章 恒定流 272
7.1 引言 272
7.2 變量名稱術語 292
7.3 習題 295
參考文獻 298
第8章 一階瞬態(tài)問題(非耦合) 299
8.1 引言 299
8.2 程序8.4,程序8.5,程序8.6和程序8.7的比較 320
8.3 變量名稱術語 337
8.4 習題 340
參考文獻 342
第9章 耦合問題 343
9.1 引言 343
9.2 變量名稱術語 369
9.3 習題 374
參考文獻 374
第10章 特征值問題 375
10.1 引言 375
10.2 變量名稱術語 387
10.3 習題 390
參考文獻 392
第11章 受迫振動 393
11.1 引言 393
11.2 變量名稱術語 421
11.3 習題 425
參考文獻 426
第12章 有限元分析的并行處理 427
12.1 引言 427
12.2 并行和串行程序間的差異 428
12.2.1 并行庫 428
12.2.2 全局變量 429
12.2.3 MPI庫常規(guī) 429
12.2.4 _pp附屬 430
12.2.5 簡單的測試問題 430
12.2.6 讀入和輸出 433
12.2.7 rest取代nf 433
12.2.8 聚與散 433
12.2.9 重新索引 434
12.2.10 域組成 434
12.2.11 第三方網格劃分工具 434
12.2.12 加載平衡 436
12.3 圖形處理器 480
12.4 云計算 485
12.5 本章小結 486
12.6 變量名稱術語 487
參考文獻 493
附錄A 等效節(jié)點荷載 495
附錄B 形函數(shù)和單元節(jié)點編號 499
附錄C 塑性應力-應變矩陣及塑性勢偏導數(shù) 505
附錄D main庫子程序 508
附錄E 幾何庫子程序 512
附錄F 并行庫子程序 513
附錄G 外部子程序