FLAC3D 的入門介紹 附ANSYS-FLAC3D鄭文棠下載
這篇推送主要是簡單介紹FLAC3D的獨立開發的歷史、軟件的主要特點、其用戶開發使用歷史,以及軟件架構性的東西。
FLAC3D (FastLagrangian Analysis of Continua in 3 Dimensions) (官方網站:www.itascacg.com) 作為專業的巖土工程三維分析軟件,其創始人是Cundall,Cundall大神開始是做PFC2D的,后面開發了FLAC2D,再后來推出了2002年4月推出了3D的第一個非DOS正式版本FLAC3D V2.1,隨后在2005年推出V3.0,2006年推出V3.1,2009年推出V4.0, 2012年推出V5.0,2017年推出了最新的V6.0版本。
筆者最初使用的是FLAC3D V3.1的感受是前后處理比較差,讓人頭疼;剛度差異大時,穩定求解自然周期時間步長很小。但后來卻發現它有很多出色的地方,比如:(1)參數化建模十分高效,就像現在的BIM參數化建模一樣,改變模型只需要改命令流里面的一個數字就行;(2)支持FISH語言,可方便地實現復雜的功能;(3)支持二次開發,提供C++的.cpp文件和.h頭文件接口。(這里只是簡單介紹,其余優點包括采用混合離散比縮減積分在物理上更加準確,不需要形成總剛度矩陣因而占用內存小、非線性適應性強,本構方程的二次開發獨立于求解的算法而不像常規的多重屈服面采用不同的求解方法,需要對求解器進行一定的優化等等。)這三點賦予了軟件很高的自由度,可以說任何巖土問題在FLAC3D里面都能實現,比如我現在的Boss(geofem zsoil的版主)就曾經在FLAC3D里面二次開發了適用于基坑開挖模擬的非飽和土HS模型。
FLAC3D前后處理的短板在很長時間里,是通過用戶自己去完善的,可以說FLAC3D是用戶參與開發的優秀開放性平臺。比如網友dynamax版主和freebird編寫的flac3d_to_tecplot歷經2004/2006/2007/2009四個小版本,雖然現在不覺得難度很高,但是對于初學者來說,對于解決如何輸出數據到文本很有啟發意義。河海大學鄭海棠博士2006年分享了anaystoflac3d的接口程序(后來又經過網友改編了flac3dtoansys的接口),通過ANSYS進行前處理然后導入FLAC3D中,2012年推出FLAC3D5.0 之后,Kubrix、Gocad等作為其前處理軟件,已經能很好地進行前處理了,同時,Hypermesh 用戶也可自己定制FLAC3D的網格格式進行前處理,現在自帶的Fishlab也已經具有用戶友好的后處理功能,用戶可通過界面和命令兩種方式進行后處理。但我個人更傾向于提取數據,用其他數據分析軟件處理。FLAC3D6.0在Kubrix的基礎上,擁有了更加優秀的前處理功能,包括交互式建模、BLOCK DXF文件導入以及2D結構單元的DXF文件導入功能,因此,可以說FLAC3D在不斷被用戶的改進而進步,而且進步很大。
FLAC3D的主要競爭對手包括PLAXIS、MIDAS GTS NX、GEO-SLOPE 和 ZSOIL等,這些軟件我過去多多少少都用過。 PLAXIS 最新版貌似也支持簡單命令流了,ZSOIL也支持INP文件的文本編輯以及基于ANSI C++的二次開發,但都還沒FLAC3D的使用自由度高。使用自由度的排序依次是FLAC3D、ZSOIL、PLAXIS、 MIDAS GTS NX 和GEOSLOPE。可以說FLAC3D很適合作為創新性成果的輔助工具,因為有新的東西和想法你都可以通過編程實現,比如新的本構、自由的加載方式、自由的約束方式、自由的初始應力場或者是自由的單元初始應變情況。
程式語言既是其優點也是缺點,對于習慣于扁平式或者嵌套式界面操作的用戶,可能難以接受,但是得益于幾個前輩和幾本書的功勞,他們通過翻譯并配以講解的方式,使得FLAC在中國的推廣比較良好。比如清華大學劉波、韓彥輝的《FLAC原理、實例與應用指南》,河海大學陳育民博士和的《FLAC/FLAC3D基礎與工程應用》,其實更推薦的是詞匯基礎好的使用軟件自帶的Manual手冊和Help幫助文件,FLAC3D的Manual手冊對軟件的使用和實例介紹的十分詳細,建議初學者打印出來,仔細研究,面對龐大的體系,Manual從Getting Started開始到 User Development深入了每一個細節。Help則可作為一個工具箱,隨時查詢函數和命令,函數和命令只需要掌握架構,而并不需要記憶,至少筆者我是基本記不住細節函數的,只是知道架構,某種功能的函數是和什么相關的。
下面大概說一下FLAC3D的大致架構吧,FLAC3D的命令流由解釋性命令(關鍵字+參數)和FISH語言兩部分組成。以下的一些命令開頭關鍵字,基本展示了FLAC3D的主要的解釋性命令流過程,對于簡單模型,應用自帶的解釋性命令流基本可以解決問題,但是對于復雜問題,則需要配合使用FISH語言,并在FISH語言中應用COMMAND… ENDCOMMAND嵌套解釋性命令,來實現復雜的功能。
——CONFIG 指定計算模式
——GEN ZONE 建立單元和節點
——SEL BEAM/PILE/SHELL/LINER/CABLE建立結構單元
——SEL LINK 建立連接
——MODEL 指定本構模型
——PROP 賦予模型相關參數
——FIX/INITIAL 施加邊界、邊值條件
——SET 設置參數值
——SOLVE 求解
——HISTORY 記錄
——HIST WRITE 寫入記錄至文本
——PLOT 后處理(繪制云圖、矢量圖或曲線)
FISH語言核心內容的簡單介紹:
FISH語言的一大優勢就在于可通過循環進行大量相似操作,常被用來做循環的函數主要包括:內置的頭指針HEAD、續指針_NEXT以及列表指針_LIST,如網格節點gp_head/gp_next()/gp_list;單元zone_head/z_next()/z_list;連接lk_head/lk_next()/lk_list;結構單元節點nd_head /nd_next()/nd_list;結構單元s_next();接觸面單元i_head/in_next()/in_list等。
FISH函數相關聯信息的架構,這里主要概括如下:
GRIDPOINT實體單元節點(相關信息:坐標、位移、速度、節點力、孔隙水壓力)
ZONE 實體單元(相關信息:坐標、應力、塑性狀態、應變、質量、體積)
NODE 結構單元節點(相關信息:坐標、位移、速度、節點力)
SEL結構單元(相關信息:坐標、應力、應變、軸力、彎矩、剪力)
上面的信息架構,清晰地表達了你需要獲取的變量和什么函數相關聯,如想知道實體單元應力狀態,那么就找和zone相關的函數,大多數以z_開頭。
最后,不得不提的是篩選過濾器。篩選器的作用是,通過一定的篩選過濾,實現僅對特定的對象進行某些命令操作,FLAC3D中可通過RANGE、GROUP或者FISH語言(如IF、LOOP、LOOP FOREACH、WHILE、CASEOF等)篩選出特定對象,進行相關操作。
到此,FLAC3D的套路基本介紹完畢,祝愿大家能夠快速入門,如遇什么問題歡迎留言,共同討論進步!
下載地址:ANSYS-FLAC3D鄭文棠
工程師必備
- 項目客服
- 培訓客服
- 平臺客服
TOP




















