潘世洋 李同春,2 程 井
1(河海大學水利水電學院 江蘇 南京 210098)2(河海大學水資源高效利用與工程安全國家工程研究中心 江蘇 南京 210098)
?
復雜條件下水工有限元計算流程管理程序開發
潘世洋1李同春1,2程井1
1(河海大學水利水電學院江蘇 南京 210098)2(河海大學水資源高效利用與工程安全國家工程研究中心江蘇 南京 210098)
為提高用于解決復雜問題的水工有限元計算的效率與成功率,提出一種以流程管理思想及微軟基礎類庫MFC為基礎,編制界面程序進行水工有限元計算流程管理的思路。按該思路編制出一個流程管理程序用以檢驗水工有限元計算流程管理的優勢與劣勢。通過流程管理程序與一般計算流程進行比較,可以得出結論:水工有限元計算流程管理程序操作簡單、易于推廣;以流程管理程序進行計算,尤其是進行重復計算,其成功率和效率都會得到明顯的改善。
水工有限元計算流程管理MFC效率
目前,有諸多通用商業軟件可以進行有限元計算分析[1],如ANSYS、ABAQUES、FLAC3D、GID、TECPLOT等。但是,鑒于水利工程計算條件的復雜性,通常需要針對特殊計算情況進行Fortran[2]計算程序的編制,來完成有限元計算分析。經過幾代水利專家學者的努力,至今已經發展出了適用于各種復雜條件的,諸多成形的數值計算Fortran程序。這類Fortran程序,因其復雜性,往往難以直接集成到商業軟件中。因此,Fortran程序與各大型商業軟件并不能很好的銜接,水工有限元計算流程就會被相對割裂開來。其相互關系見圖1所示。

圖1 加入Fortran程序后水工有限元計算過程相互關系
從圖中不難看出有限元計算的前處理、數值計算、后處理三步被割裂開后通常需要在不同的軟件中進行處理,它們之間的連接也只能通過人工的方式做處理。然而,由于Fortran程序的重點在于提高計算的速度,在進行計算之前往往需要進行大量文本數據的填寫。這很容易造成人為的錯誤,而出錯后若要進行檢查其難度同樣不小。
一直有專家學者在進行有限元計算界面集成軟件的編寫工作。多數人都是以一種“推倒重建”(從建模到結果查看都在一套界面中完成)的思路開展相關工作[3]。這種思路并不利于利用已有的成熟有限元商業軟件的強大功能,而且可移植性也不高。
可以將流程管理的思想引入水工有限元計算中,優化計算分析流程,提高計算分析的效率。流程管理思想[4]是一種以規范業務流程為中心,提高績效為目的的系統化的方法。通常包含以下三方面:流程規范、流程優化和流程再造。這種思想一般用于企業管理領域,且已有較為完善的體系。它強調不需要從根本上改變流程,只需對可以改善處進行合理的修改,以實現效率的提高。對于水工有限元計算,在已有較成熟成果的前提下,為提升計算的效率和成功率,有必要借鑒流程管理的思想,在不改變原有成果的基礎上對計算的流程進行管理。

圖2 使用MFC程序管理前處理、數值計算、后處理流程
為實現流程管理,可以采用MFC[5]作為界面編程工具。即微軟基礎類庫MFC,是微軟公司提供的一個類庫,以C++[6]語言為基礎,以目前主流的Windows操作系統為平臺,開發簡便,界面友好。為實現前處理、數值計算、后處理三步的互聯互通、Fortran文本文件的檢查與修改提供了可能。圖2為加入MFC程序后,前處理,數值計算,后處理相互關系。
從圖2中可以看出,加入管理程序后,有限計算的三步流程得到了很好的交流與聯系。所以,本文嘗試以流程管理思想作為有限元計算流程管理的指導思想,以MFC為實現手段,編制出一種軟件,用于管理基于fortran的有限元計算分析。
水工有限元計算流程一般分三步:前處理、數值計算以及后處理。為實現水工有限元計算流程的統一,進行水工有限元計算流程管理是不可或缺的。
為方便理解,本文以ANSYS作為前處理軟件,GID作為后處理軟件,用MFC編程實現水工有限元計算流程的管理。
1.1流程管理思路
(1) MFC介紹
MFC即微軟基礎類庫,開發簡便,界面友好,為實現前處理、數值計算、后處理三步的互聯互通、Fortran文本文件的檢查與修改提供了可能。
微軟基礎類庫MFC用于水工有限元計算流程管理的優勢在于以下幾點:
① 以C++語言為基礎,C++語言的表現形式較Fortran語言優勢明顯。
② 內部封裝了豐富的控件和組件,可以實現數據的展示、查找、修改等的多種功能。
③ 以Windows操作系統為平臺,方便程序的推廣交流。
(2) 流程管理思路
流程管理的思路可以分為四步:確定核心流程;改進或規范核心流程;流程重設計;形成最終流程。示意如圖3所示。

圖3 流程管理思想
首先,確定核心流程。對應有限元計算中前處理、數值計算、后處理三步驟。
第二步,明確核心流程現狀。對應目前三大步驟已有的成果與不足之處。由圖1,水工有限元計算三大步驟的不足之處在于,水工有限元計算的各個流程之間的信息交流仍然以人工方式進行。
第三步,流程的重設計。由第二步確定的不足之處可確定:MFC管理程序重點應該放在提升三步流程間的信息交換效率。鑒于水工有限元計算流程中生成與讀取的文件格式基本都是文本文件格式。因此,可以在管理程序中建立讀取與保存文本文件的機制以實現計算流程的管理。
最后,可以確定MFC管理程序所需的主要功能有:文本文件的查找、讀取、保存;執行計算程序;查看計算結果等。以此為依據,再結合每步流程的各自情況即可進行管理程序的編寫。
1.2前處理流程管理
(1) 前處理流程
目前,水工有限元計算比較常用的前處理軟件有ANSYS、ABAQUES、FLAC3D等。雖然這些軟件功能強大,但由于是通用有限元軟件,其專業性不強。因此需要進行相關的二次開發,以導出對應數值計算所需的文本文件。
不同的軟件都有相應的二次開發語言。以ANSYS為例,ANSYS 參數化設計語言(APDL)為一種可以通過使用參數來完成一系列任務的程序語言[7]。通過ANSYS 參數化設計語言,用戶可以根據需要獲取自己所需的模型信息,并按對應格式輸出到文本文件中。
因此,前處理流程通常做法可以分為兩步:
① 使用前處理軟件建模。
② 根據Fortran文件需要,進行二次開發,導出Fortran必要的輸入文件。
(2) 前處理流程管理
前處理在對應前處理軟件中進行,并在二次開發后導出計算所需的文本文件。MFC管理程序對應所需功能為:
① 查找生成的文本文件。
② 在窗口顯示文本文件中的數據及其意義,以方便檢查。
為實現查找文本文件功能,需要使用C++語言中的文件查找功能(對應語句CFileDialog)、文件復制功能(對應語句CopyFile)。其中所需語句具體功能在C++語言相關說明文件中即可查到。為實現顯示文本文件中的數據功能,需要使用MFC程序中封裝的相應控件,如MSFLESGRID控件(用于數據顯示,如圖4所示)。

圖4 MSFLEXGRID控件示例
1.3數值計算流程管理
(1) 數值計算流程
數值計算流程通常步驟為:從對應格式的文本文件中讀入信息;以Fortran程序進行計算;按一定格式輸出計算的結果。數值計算在整個有限元計算中占用時間較長。并且,一旦結果出錯通常需要重頭開始進行計算。因此,計算開始前的檢查以及出錯后迅速定位問題顯得尤為重要。
Fotran語言程序因其強大的計算能力而在數值計算中廣泛采用。然而,計算能力的強大往往意味著它在其他方面必然會弱化。事實上,Fortran語言在界面友好,文件讀取與顯示等方面的能力較VB語言、C語言、C++語言等要明顯遜色。這無疑給開始計算前的檢查以及計算出錯后的迅速定位問題帶來了難度。
為解決這個問題,可以在數值計算中引入MFC程序,以其豐富的界面顯示能力,以及C++語言靈活的文件讀取、顯示功能,作為Fotran計算前檢查以及出錯后定位問題的補充。這樣既能方便不熟悉Fortran程序的操作人員快速上手,又降低了計算出錯的可能。
(2) 數值計算流程管理
數值計算流程核心是調用Fortran程序進行運算。對應于以MFC進行流程管理所需要解決的問題:
① 將前處理流程生成的輸入文件加入Fotran程序所在目錄。
② 運行Fortran程序形成的可執行文件,進行計算。
為實現功能a,可以采用前處理流程中尋找輸入文件的方法,或者將Fortran程序所需的文件事先封裝進固定的文件夾中。為實現功能b需采用C++語言中運行可執行文件的語句,如Shellexcute語句,Winexe語句等。同樣,語句具體功能在C++語言相關說明文件中即可查到。
1.4后處理流程管理
(1) 后處理流程
后處理流程主要是查看計算結果,需要將數值計算結果按后處理程序所需文件格式輸出。常用的后處理軟件有:GID、TECPLOT、ANSYS等。這些軟件各有優劣,所能識別的文件格式也各有不同。
以使用GID作為后處理軟件為例。GID需要的輸入文件有兩種:msh文件和res文件。msh文件中需要包含模型的結點信息、單元信息,res文件中需要相應結點的位移、應力等信息。以此為依據,修改Fortran程序中的輸出方式,以輸出符合GID格式要求的文件。
(2) 后處理流程管理
后處理流程的管理較為簡單,只需實現在后處理軟件中打開數值計算的結果文件的功能。因此,實現后處理流程管理分為兩步:一是定位結果文件及文件類型;二是使用執行語句打開對應結果文件,執行語句即上述Shellexecute語句等。
1.5水工有限元計算管理程序與一般做法比較
水工有限元計算的三步流程,在各自的流程內,國內外都已經有較為完善的成果,然而這三步的統一連接與控制卻鮮有人涉及。技術與知識的存在最終都要落實到應用上。為了更好地應用水工有限元分析方法,實現前處理、數值計算以及后處理流程的統一將是一個不錯的發展方向。
將引入MFC的管理程序與一般做法的流程進行比較,結果列表如表1所示。

表1 流程比較
從表1可以看出:
① 在前處理與數值計算流程之間,基于MFC的管理程序將操作人員從繁瑣的復制粘貼工作中解放出來;表格的顯示方式給檢查工作帶來了極大的方便,同時大大降低出錯的可能;當計算出錯時一般查錯做法的效率極低,而基于MFC的管理程序以表格的方式將各種數據進行了分類,方便查找,提高了不少效率。
② 在數值計算與后處理階段,相較一般做法,基于MFC的管理程序操作更為簡便,只需一個按鈕即可打開結果文件。
③ Windows系統程序帶有的記憶功能對于大量的重復勞動具有很好的提高效率的效果。對于做過的計算,程序可以記憶其文件路徑,再次計算時不需重復查找文件的繁瑣工作,這大大節省了時間。
總而言之,基于MFC的計算流程管理軟件一般有以下優勢:
① 以表格方式顯示Fortran輸入文件,方便檢查,且檢查效率高。
② 操作簡單快速,尤其方便重復計算,這對于需要多次計算以確定結果可靠性的水工有限元計算來說顯得格外重要。
③ 采用流程管理的思想聯系前處理、數值計算、后處理三步,節省工作時間,提高工作效率。
④ 以Windows操作系統為平臺,適應面廣,利于廣泛推廣。
2.1算例介紹
以土石壩的靜力計算為例。
建立模型:壩底180 m,高40 m,壩頂10 m。心墻頂部6 m,底部20 m。模型豎直方向分五層,每層8 m。五層填筑,建成后蓄水35 m。
以編寫的MFC管理程序進行計算流程的管理;前處理流程采用ANSYS進行模型建立與二次開發;Fortran計算程序參考 《計算土力學》[8]中靜力計算部分編寫;后處理部分在GID軟件中進行。計算流程如圖5所示。

圖5 計算流程
2.2具體計算步驟
1) 使用前處理軟件ANSYS建模,進行二次開發導出模型基本信息。如圖6所示。

圖6 模型信息
2) 打開MFC管理程序,導入輸入文件并進行查看。如圖7所示。

圖7 MFC管理程序界面及Msflexgrid控件顯示的數據
3) 檢查無誤后,使用管理程序中的Solve菜單項進行數值計算。如圖8所示。

圖8 MFC管理程序界面數值計算
4) 若出錯,則返回步驟b)進行查看確認并修改錯誤;若計算成功則使用MFC管理程序中的Result項進行結果的查看。如圖9所示。

圖9 MFC管理程序界面查看結果
5) 在GID中進行結果的后處理。該計算程序在GID中可以按填筑級數查看結果,包括:各級填筑的X向位移及應力、Y向位移及應力、水頭值等。部分在GID中查看的結果如圖10所示。

圖10 GID中顯示的計算結果1(最后一步X向的位移)
2.3模型網格細化
有限元計算為得到更精確的結果,通常需要將模型進行多次剖分計算。由于流程管理程序可重復計算的優勢,采用流程管理程序進行多次計算所耗費的時間會明顯小于以一般做法計算所耗費的時間。這必然可以節省很多時間和精力的投入。
將以上算例所建模型再次劃分不同密度網格重復之前算例步驟進行計算。得出結果比較如表2所示。

表2 不同網格密度下的計算結果
根據表2,繪制Y向最大位移與自由度的關系曲線圖。如圖11所示。

圖11 Y向最大位移與自由度的關系曲線圖
本文介紹了一種基于流程管理思想以及微軟MFC基礎類庫進行有限元計算流程管理的思路。該思路將復雜條件下水工有限元計算流程關聯起來,以期節省工作時間、提高工作效率。根據編制的管理程序的實際運用情況可以得出:進行復雜條件下水工有限元計算的管理,對于計算的效率與成功率都有顯著的改善。
為實現復雜條件下水工有限元計算流程管理程序的編制,除了需要水工有限元計算必要的知識外,還需要一定的C++語言基礎以及對前處理、后處理軟件的熟悉。這就要求編寫者具有一定的跨學科知識基礎。后續的研究工作需要弱化對界面編程語言的要求,并且強化程序的可移植性,以期實現一個管理程序可以集成多種復雜條件下的水工有限元計算流程。
[1] 王勖成.有限單元法[M].北京:清華大學出版社,2003.
[2] 彭國倫.自制帶標簽版Fortran 95程序設計[M].北京:中國電力出版社,2002.
[3] 郭祥偉,陳國榮,劉銀芳.基于VB與Fortran混合編程的混凝土壩溫度應力仿真分析軟件開發[J].水利水電科技進展,2012,32(2):65-69.
[4] 黃艾舟,梅紹祖.流程管理原理及卓越流程建模方法研究[J].工業工程與管理,2003(2):46-50.
[5] 侯俊杰.深入淺出Windows MFC程序設計[M].武漢:華中理工大學出版社,1998.
[6] DavidJ·Kruglinski.VisualC++6.0技術內幕[M].北京:北京希望電子出版社,1999.
[7] 美國ANSYS公司.APDL使用指南[M].匹茲堡:ANSYS公司,2001.
[8] 朱百里,沈珠江.計算土力學[M].上海:上海科學技術出版社,1990.
DEVELOPING PROCESS MANAGEMENT PROGRAM FOR HYDRAULIC FINITE ELEMENT CALCULATION IN COMPLICATED CONDITIONS
Pan Shiyang1Li Tongchun1,2Cheng Jing1
1(College of Water Conservancy and Hydropower Engineering,Hohai University,Nanjing 210098,Jiangsu,China)2(NationalEngineeringResearchCenterofWaterResourcesEfficientUtilizationandEngineeringSafety,HohaiUniversity,Nanjing210098,Jiangsu,China)
In order to improve the efficiency and accuracy of hydraulic finite element calculations in complicated conditions, in this paper we put forward such an idea, it takes the process management thought and Microsoft Foundation Class Library MFC as the basis, and compiles interface program to carry out process management of hydraulic finite element calculation. According to this idea we compiled a process management program and used it to test the advantages and disadvantages of this process management of hydraulic finite element calculation. By comparing the management program and the general calculation process, it can be concluded that the process management program compiled by us is easy to operate and convenient to promote, meanwhile, the success rate and the efficiency of calculations, especially for repeated calculations, can be obviously improved by using the process management program.
Hydraulic finite element calculationProcess managementMFCEfficiency
2015-05-14。潘世洋,碩士生,主研領域:水工結構工程。李同春,教授。程井,副教授。
TP315
A
10.3969/j.issn.1000-386x.2016.09.019