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