潘世洋 李同春,2 程 井
1(河海大學(xué)水利水電學(xué)院 江蘇 南京 210098)2(河海大學(xué)水資源高效利用與工程安全國家工程研究中心 江蘇 南京 210098)
?
復(fù)雜條件下水工有限元計算流程管理程序開發(fā)
潘世洋1李同春1,2程井1
1(河海大學(xué)水利水電學(xué)院江蘇 南京 210098)2(河海大學(xué)水資源高效利用與工程安全國家工程研究中心江蘇 南京 210098)
為提高用于解決復(fù)雜問題的水工有限元計算的效率與成功率,提出一種以流程管理思想及微軟基礎(chǔ)類庫MFC為基礎(chǔ),編制界面程序進行水工有限元計算流程管理的思路。按該思路編制出一個流程管理程序用以檢驗水工有限元計算流程管理的優(yōu)勢與劣勢。通過流程管理程序與一般計算流程進行比較,可以得出結(jié)論:水工有限元計算流程管理程序操作簡單、易于推廣;以流程管理程序進行計算,尤其是進行重復(fù)計算,其成功率和效率都會得到明顯的改善。
水工有限元計算流程管理MFC效率
目前,有諸多通用商業(yè)軟件可以進行有限元計算分析[1],如ANSYS、ABAQUES、FLAC3D、GID、TECPLOT等。但是,鑒于水利工程計算條件的復(fù)雜性,通常需要針對特殊計算情況進行Fortran[2]計算程序的編制,來完成有限元計算分析。經(jīng)過幾代水利專家學(xué)者的努力,至今已經(jīng)發(fā)展出了適用于各種復(fù)雜條件的,諸多成形的數(shù)值計算Fortran程序。這類Fortran程序,因其復(fù)雜性,往往難以直接集成到商業(yè)軟件中。因此,F(xiàn)ortran程序與各大型商業(yè)軟件并不能很好的銜接,水工有限元計算流程就會被相對割裂開來。其相互關(guān)系見圖1所示。
圖1 加入Fortran程序后水工有限元計算過程相互關(guān)系
從圖中不難看出有限元計算的前處理、數(shù)值計算、后處理三步被割裂開后通常需要在不同的軟件中進行處理,它們之間的連接也只能通過人工的方式做處理。然而,由于Fortran程序的重點在于提高計算的速度,在進行計算之前往往需要進行大量文本數(shù)據(jù)的填寫。這很容易造成人為的錯誤,而出錯后若要進行檢查其難度同樣不小。
一直有專家學(xué)者在進行有限元計算界面集成軟件的編寫工作。多數(shù)人都是以一種“推倒重建”(從建模到結(jié)果查看都在一套界面中完成)的思路開展相關(guān)工作[3]。這種思路并不利于利用已有的成熟有限元商業(yè)軟件的強大功能,而且可移植性也不高。
可以將流程管理的思想引入水工有限元計算中,優(yōu)化計算分析流程,提高計算分析的效率。流程管理思想[4]是一種以規(guī)范業(yè)務(wù)流程為中心,提高績效為目的的系統(tǒng)化的方法。通常包含以下三方面:流程規(guī)范、流程優(yōu)化和流程再造。這種思想一般用于企業(yè)管理領(lǐng)域,且已有較為完善的體系。它強調(diào)不需要從根本上改變流程,只需對可以改善處進行合理的修改,以實現(xiàn)效率的提高。對于水工有限元計算,在已有較成熟成果的前提下,為提升計算的效率和成功率,有必要借鑒流程管理的思想,在不改變原有成果的基礎(chǔ)上對計算的流程進行管理。
圖2 使用MFC程序管理前處理、數(shù)值計算、后處理流程
為實現(xiàn)流程管理,可以采用MFC[5]作為界面編程工具。即微軟基礎(chǔ)類庫MFC,是微軟公司提供的一個類庫,以C++[6]語言為基礎(chǔ),以目前主流的Windows操作系統(tǒng)為平臺,開發(fā)簡便,界面友好。為實現(xiàn)前處理、數(shù)值計算、后處理三步的互聯(lián)互通、Fortran文本文件的檢查與修改提供了可能。圖2為加入MFC程序后,前處理,數(shù)值計算,后處理相互關(guān)系。
從圖2中可以看出,加入管理程序后,有限計算的三步流程得到了很好的交流與聯(lián)系。所以,本文嘗試以流程管理思想作為有限元計算流程管理的指導(dǎo)思想,以MFC為實現(xiàn)手段,編制出一種軟件,用于管理基于fortran的有限元計算分析。
水工有限元計算流程一般分三步:前處理、數(shù)值計算以及后處理。為實現(xiàn)水工有限元計算流程的統(tǒng)一,進行水工有限元計算流程管理是不可或缺的。
為方便理解,本文以ANSYS作為前處理軟件,GID作為后處理軟件,用MFC編程實現(xiàn)水工有限元計算流程的管理。
1.1流程管理思路
(1) MFC介紹
MFC即微軟基礎(chǔ)類庫,開發(fā)簡便,界面友好,為實現(xiàn)前處理、數(shù)值計算、后處理三步的互聯(lián)互通、Fortran文本文件的檢查與修改提供了可能。
微軟基礎(chǔ)類庫MFC用于水工有限元計算流程管理的優(yōu)勢在于以下幾點:
① 以C++語言為基礎(chǔ),C++語言的表現(xiàn)形式較Fortran語言優(yōu)勢明顯。
② 內(nèi)部封裝了豐富的控件和組件,可以實現(xiàn)數(shù)據(jù)的展示、查找、修改等的多種功能。
③ 以Windows操作系統(tǒng)為平臺,方便程序的推廣交流。
(2) 流程管理思路
流程管理的思路可以分為四步:確定核心流程;改進或規(guī)范核心流程;流程重設(shè)計;形成最終流程。示意如圖3所示。
圖3 流程管理思想
首先,確定核心流程。對應(yīng)有限元計算中前處理、數(shù)值計算、后處理三步驟。
第二步,明確核心流程現(xiàn)狀。對應(yīng)目前三大步驟已有的成果與不足之處。由圖1,水工有限元計算三大步驟的不足之處在于,水工有限元計算的各個流程之間的信息交流仍然以人工方式進行。
第三步,流程的重設(shè)計。由第二步確定的不足之處可確定:MFC管理程序重點應(yīng)該放在提升三步流程間的信息交換效率。鑒于水工有限元計算流程中生成與讀取的文件格式基本都是文本文件格式。因此,可以在管理程序中建立讀取與保存文本文件的機制以實現(xiàn)計算流程的管理。
最后,可以確定MFC管理程序所需的主要功能有:文本文件的查找、讀取、保存;執(zhí)行計算程序;查看計算結(jié)果等。以此為依據(jù),再結(jié)合每步流程的各自情況即可進行管理程序的編寫。
1.2前處理流程管理
(1) 前處理流程
目前,水工有限元計算比較常用的前處理軟件有ANSYS、ABAQUES、FLAC3D等。雖然這些軟件功能強大,但由于是通用有限元軟件,其專業(yè)性不強。因此需要進行相關(guān)的二次開發(fā),以導(dǎo)出對應(yīng)數(shù)值計算所需的文本文件。
不同的軟件都有相應(yīng)的二次開發(fā)語言。以ANSYS為例,ANSYS 參數(shù)化設(shè)計語言(APDL)為一種可以通過使用參數(shù)來完成一系列任務(wù)的程序語言[7]。通過ANSYS 參數(shù)化設(shè)計語言,用戶可以根據(jù)需要獲取自己所需的模型信息,并按對應(yīng)格式輸出到文本文件中。
因此,前處理流程通常做法可以分為兩步:
① 使用前處理軟件建模。
② 根據(jù)Fortran文件需要,進行二次開發(fā),導(dǎo)出Fortran必要的輸入文件。
(2) 前處理流程管理
前處理在對應(yīng)前處理軟件中進行,并在二次開發(fā)后導(dǎo)出計算所需的文本文件。MFC管理程序?qū)?yīng)所需功能為:
① 查找生成的文本文件。
② 在窗口顯示文本文件中的數(shù)據(jù)及其意義,以方便檢查。
為實現(xiàn)查找文本文件功能,需要使用C++語言中的文件查找功能(對應(yīng)語句CFileDialog)、文件復(fù)制功能(對應(yīng)語句CopyFile)。其中所需語句具體功能在C++語言相關(guān)說明文件中即可查到。為實現(xiàn)顯示文本文件中的數(shù)據(jù)功能,需要使用MFC程序中封裝的相應(yīng)控件,如MSFLESGRID控件(用于數(shù)據(jù)顯示,如圖4所示)。
圖4 MSFLEXGRID控件示例
1.3數(shù)值計算流程管理
(1) 數(shù)值計算流程
數(shù)值計算流程通常步驟為:從對應(yīng)格式的文本文件中讀入信息;以Fortran程序進行計算;按一定格式輸出計算的結(jié)果。數(shù)值計算在整個有限元計算中占用時間較長。并且,一旦結(jié)果出錯通常需要重頭開始進行計算。因此,計算開始前的檢查以及出錯后迅速定位問題顯得尤為重要。
Fotran語言程序因其強大的計算能力而在數(shù)值計算中廣泛采用。然而,計算能力的強大往往意味著它在其他方面必然會弱化。事實上,F(xiàn)ortran語言在界面友好,文件讀取與顯示等方面的能力較VB語言、C語言、C++語言等要明顯遜色。這無疑給開始計算前的檢查以及計算出錯后的迅速定位問題帶來了難度。
為解決這個問題,可以在數(shù)值計算中引入MFC程序,以其豐富的界面顯示能力,以及C++語言靈活的文件讀取、顯示功能,作為Fotran計算前檢查以及出錯后定位問題的補充。這樣既能方便不熟悉Fortran程序的操作人員快速上手,又降低了計算出錯的可能。
(2) 數(shù)值計算流程管理
數(shù)值計算流程核心是調(diào)用Fortran程序進行運算。對應(yīng)于以MFC進行流程管理所需要解決的問題:
① 將前處理流程生成的輸入文件加入Fotran程序所在目錄。
② 運行Fortran程序形成的可執(zhí)行文件,進行計算。
為實現(xiàn)功能a,可以采用前處理流程中尋找輸入文件的方法,或者將Fortran程序所需的文件事先封裝進固定的文件夾中。為實現(xiàn)功能b需采用C++語言中運行可執(zhí)行文件的語句,如Shellexcute語句,Winexe語句等。同樣,語句具體功能在C++語言相關(guān)說明文件中即可查到。
1.4后處理流程管理
(1) 后處理流程
后處理流程主要是查看計算結(jié)果,需要將數(shù)值計算結(jié)果按后處理程序所需文件格式輸出。常用的后處理軟件有:GID、TECPLOT、ANSYS等。這些軟件各有優(yōu)劣,所能識別的文件格式也各有不同。
以使用GID作為后處理軟件為例。GID需要的輸入文件有兩種:msh文件和res文件。msh文件中需要包含模型的結(jié)點信息、單元信息,res文件中需要相應(yīng)結(jié)點的位移、應(yīng)力等信息。以此為依據(jù),修改Fortran程序中的輸出方式,以輸出符合GID格式要求的文件。
(2) 后處理流程管理
后處理流程的管理較為簡單,只需實現(xiàn)在后處理軟件中打開數(shù)值計算的結(jié)果文件的功能。因此,實現(xiàn)后處理流程管理分為兩步:一是定位結(jié)果文件及文件類型;二是使用執(zhí)行語句打開對應(yīng)結(jié)果文件,執(zhí)行語句即上述Shellexecute語句等。
1.5水工有限元計算管理程序與一般做法比較
水工有限元計算的三步流程,在各自的流程內(nèi),國內(nèi)外都已經(jīng)有較為完善的成果,然而這三步的統(tǒng)一連接與控制卻鮮有人涉及。技術(shù)與知識的存在最終都要落實到應(yīng)用上。為了更好地應(yīng)用水工有限元分析方法,實現(xiàn)前處理、數(shù)值計算以及后處理流程的統(tǒng)一將是一個不錯的發(fā)展方向。
將引入MFC的管理程序與一般做法的流程進行比較,結(jié)果列表如表1所示。
表1 流程比較
從表1可以看出:
① 在前處理與數(shù)值計算流程之間,基于MFC的管理程序?qū)⒉僮魅藛T從繁瑣的復(fù)制粘貼工作中解放出來;表格的顯示方式給檢查工作帶來了極大的方便,同時大大降低出錯的可能;當(dāng)計算出錯時一般查錯做法的效率極低,而基于MFC的管理程序以表格的方式將各種數(shù)據(jù)進行了分類,方便查找,提高了不少效率。
② 在數(shù)值計算與后處理階段,相較一般做法,基于MFC的管理程序操作更為簡便,只需一個按鈕即可打開結(jié)果文件。
③ Windows系統(tǒng)程序帶有的記憶功能對于大量的重復(fù)勞動具有很好的提高效率的效果。對于做過的計算,程序可以記憶其文件路徑,再次計算時不需重復(fù)查找文件的繁瑣工作,這大大節(jié)省了時間。
總而言之,基于MFC的計算流程管理軟件一般有以下優(yōu)勢:
① 以表格方式顯示Fortran輸入文件,方便檢查,且檢查效率高。
② 操作簡單快速,尤其方便重復(fù)計算,這對于需要多次計算以確定結(jié)果可靠性的水工有限元計算來說顯得格外重要。
③ 采用流程管理的思想聯(lián)系前處理、數(shù)值計算、后處理三步,節(jié)省工作時間,提高工作效率。
④ 以Windows操作系統(tǒng)為平臺,適應(yīng)面廣,利于廣泛推廣。
2.1算例介紹
以土石壩的靜力計算為例。
建立模型:壩底180 m,高40 m,壩頂10 m。心墻頂部6 m,底部20 m。模型豎直方向分五層,每層8 m。五層填筑,建成后蓄水35 m。
以編寫的MFC管理程序進行計算流程的管理;前處理流程采用ANSYS進行模型建立與二次開發(fā);Fortran計算程序參考 《計算土力學(xué)》[8]中靜力計算部分編寫;后處理部分在GID軟件中進行。計算流程如圖5所示。
圖5 計算流程
2.2具體計算步驟
1) 使用前處理軟件ANSYS建模,進行二次開發(fā)導(dǎo)出模型基本信息。如圖6所示。
圖6 模型信息
2) 打開MFC管理程序,導(dǎo)入輸入文件并進行查看。如圖7所示。
圖7 MFC管理程序界面及Msflexgrid控件顯示的數(shù)據(jù)
3) 檢查無誤后,使用管理程序中的Solve菜單項進行數(shù)值計算。如圖8所示。
圖8 MFC管理程序界面數(shù)值計算
4) 若出錯,則返回步驟b)進行查看確認(rèn)并修改錯誤;若計算成功則使用MFC管理程序中的Result項進行結(jié)果的查看。如圖9所示。
圖9 MFC管理程序界面查看結(jié)果
5) 在GID中進行結(jié)果的后處理。該計算程序在GID中可以按填筑級數(shù)查看結(jié)果,包括:各級填筑的X向位移及應(yīng)力、Y向位移及應(yīng)力、水頭值等。部分在GID中查看的結(jié)果如圖10所示。
圖10 GID中顯示的計算結(jié)果1(最后一步X向的位移)
2.3模型網(wǎng)格細化
有限元計算為得到更精確的結(jié)果,通常需要將模型進行多次剖分計算。由于流程管理程序可重復(fù)計算的優(yōu)勢,采用流程管理程序進行多次計算所耗費的時間會明顯小于以一般做法計算所耗費的時間。這必然可以節(jié)省很多時間和精力的投入。
將以上算例所建模型再次劃分不同密度網(wǎng)格重復(fù)之前算例步驟進行計算。得出結(jié)果比較如表2所示。
表2 不同網(wǎng)格密度下的計算結(jié)果
根據(jù)表2,繪制Y向最大位移與自由度的關(guān)系曲線圖。如圖11所示。
圖11 Y向最大位移與自由度的關(guān)系曲線圖
本文介紹了一種基于流程管理思想以及微軟MFC基礎(chǔ)類庫進行有限元計算流程管理的思路。該思路將復(fù)雜條件下水工有限元計算流程關(guān)聯(lián)起來,以期節(jié)省工作時間、提高工作效率。根據(jù)編制的管理程序的實際運用情況可以得出:進行復(fù)雜條件下水工有限元計算的管理,對于計算的效率與成功率都有顯著的改善。
為實現(xiàn)復(fù)雜條件下水工有限元計算流程管理程序的編制,除了需要水工有限元計算必要的知識外,還需要一定的C++語言基礎(chǔ)以及對前處理、后處理軟件的熟悉。這就要求編寫者具有一定的跨學(xué)科知識基礎(chǔ)。后續(xù)的研究工作需要弱化對界面編程語言的要求,并且強化程序的可移植性,以期實現(xiàn)一個管理程序可以集成多種復(fù)雜條件下的水工有限元計算流程。
[1] 王勖成.有限單元法[M].北京:清華大學(xué)出版社,2003.
[2] 彭國倫.自制帶標(biāo)簽版Fortran 95程序設(shè)計[M].北京:中國電力出版社,2002.
[3] 郭祥偉,陳國榮,劉銀芳.基于VB與Fortran混合編程的混凝土壩溫度應(yīng)力仿真分析軟件開發(fā)[J].水利水電科技進展,2012,32(2):65-69.
[4] 黃艾舟,梅紹祖.流程管理原理及卓越流程建模方法研究[J].工業(yè)工程與管理,2003(2):46-50.
[5] 侯俊杰.深入淺出Windows MFC程序設(shè)計[M].武漢:華中理工大學(xué)出版社,1998.
[6] DavidJ·Kruglinski.VisualC++6.0技術(shù)內(nèi)幕[M].北京:北京希望電子出版社,1999.
[7] 美國ANSYS公司.APDL使用指南[M].匹茲堡:ANSYS公司,2001.
[8] 朱百里,沈珠江.計算土力學(xué)[M].上海:上海科學(xué)技術(shù)出版社,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。潘世洋,碩士生,主研領(lǐng)域:水工結(jié)構(gòu)工程。李同春,教授。程井,副教授。
TP315
A
10.3969/j.issn.1000-386x.2016.09.019