譚曉慧 侯曉亮 馬海春
[摘 要] 有限單元法是進(jìn)行數(shù)值計(jì)算及解決工程問題的重要工具,“有限單元法”課程的教學(xué)包括理論教學(xué)、程序教學(xué)及軟件教學(xué)。其中,程序教學(xué)是培養(yǎng)研究生編程能力及創(chuàng)新能力的重要途徑之一。針對當(dāng)前研究生“有限單元法”課程在程序教學(xué)方面存在的問題,分析總結(jié)了有限元教學(xué)程序的選擇原則,建議選擇簡短完整、與學(xué)生的專業(yè)方向有關(guān)的程序作為有限元教學(xué)程序,提出了“以點(diǎn)帶面,點(diǎn)面結(jié)合”的有限元程序教學(xué)模式及具體的教學(xué)方法。通過指導(dǎo)學(xué)生繪制有限元程序流程圖、學(xué)習(xí)重點(diǎn)子程序的編程、運(yùn)行并修改有限元程序、小組交流與討論等方式來組織教學(xué),可以有效激發(fā)研究生學(xué)習(xí)“有限單元法”課程的熱情,加深對有限單元法理論知識的理解,提高研究生的編程能力及創(chuàng)新能力。
[關(guān)鍵詞] 有限單元法;教學(xué);研究生;編程;程序
[中圖分類號] G642.0? ?[文獻(xiàn)標(biāo)識碼] A? ?[文章編號] 1674-9324(2021)03-0161-04? ?[收稿日期] 2020-10-16
一、引言
有限單元法是一種重要的數(shù)值模擬方法,基于有限單元法的多種商用軟件(如ANSYS、ABAQUS、NASTRAN及AIDNA等)已廣泛應(yīng)用于地質(zhì)、巖土、水利、力學(xué)等多種工程領(lǐng)域。隨著工程技術(shù)及國家工程建設(shè)的發(fā)展,有限單元法已經(jīng)成為分析復(fù)雜工程問題的重要手段,運(yùn)用有限單元法解決工程難題、進(jìn)行科學(xué)研究是大多數(shù)工科專業(yè)研究生必備的基本能力之一[1,2]。有限單元法綜合運(yùn)用了線性代數(shù)、矩陣論、數(shù)值分析、微分方程、彈塑性力學(xué)及計(jì)算機(jī)編程等知識,要求學(xué)生具有良好的數(shù)學(xué)及力學(xué)功底,是一門理論性很強(qiáng)的課程。同時(shí),通過有限單元法課程的教學(xué),應(yīng)使學(xué)生能夠靈活應(yīng)用理論知識解決工程實(shí)踐中出現(xiàn)的問題。因此,“有限單元法”是將理論知識運(yùn)用于解決工程實(shí)踐問題的重要工具,是培養(yǎng)研究生創(chuàng)新能力的一門重要課程。在教學(xué)時(shí)數(shù)有限的情況下,“有限單元法”課程教學(xué)中常常存在偏重理論講解或偏重有限元商用軟件的使用訓(xùn)練這兩種情況,二者的共同特點(diǎn)是忽視了對有限元程序的教學(xué)。有限元程序是理論與軟件之間的橋梁[3-5],忽視對有限元程序的教學(xué)會使學(xué)生無法理解理論公式與有限元軟件之間的關(guān)系,這不利于培養(yǎng)研究生的創(chuàng)新能力。為了提高教學(xué)效果,一些高校對“有限單元法”課程的教學(xué)方法進(jìn)行了改革與探索。例如,文獻(xiàn)[6]采取“實(shí)踐應(yīng)用—理論—實(shí)踐應(yīng)用”的三步逆向教學(xué)法來組織教學(xué),在教學(xué)中注重對學(xué)生編程能力的培養(yǎng)。文獻(xiàn)[7]將科學(xué)計(jì)算語言MATLAB應(yīng)用于有限單元法的教學(xué),利用該語言的公式推導(dǎo)及圖形處理功能來輔助教學(xué),提高學(xué)生的學(xué)習(xí)興趣和編程能力。文獻(xiàn)[8]指出在教學(xué)中應(yīng)利用多種手段來強(qiáng)化學(xué)生的編程能力及軟件應(yīng)用能力。文獻(xiàn)[9]提出利用開源編程學(xué)習(xí)工具FreeMat及開源有限元工具箱CALFEM來進(jìn)行有限單元法課程的教學(xué)。這些教改實(shí)踐均強(qiáng)調(diào)了在“有限單元法”課程教學(xué)中應(yīng)重視訓(xùn)練學(xué)生的編程能力。但是在具體的教學(xué)實(shí)踐中如何進(jìn)行程序教學(xué)、如何提高學(xué)生的編程能力等問題仍有待進(jìn)一步探索。為此,筆者根據(jù)多年的教學(xué)經(jīng)驗(yàn),以地質(zhì)工程專業(yè)研究生的“有限單元法”課程教學(xué)為例,從有限元教學(xué)程序的選擇及教學(xué)過程的組織等方面進(jìn)行探討,提出一些具體的教改措施。
二、有限元教學(xué)程序的選擇原則
為了克服傳統(tǒng)教學(xué)方法中存在的問題,培養(yǎng)研究生的編程及創(chuàng)新能力,在教學(xué)過程中,應(yīng)該以“理論講解、程序驗(yàn)證、軟件計(jì)算”相結(jié)合的方式來組織教學(xué)[3],其中程序教學(xué)是關(guān)鍵的一環(huán)。通過程序教學(xué),可以將理論知識程序化,令枯燥的理論知識鮮活起來。學(xué)生通過編程訓(xùn)練,可以體會到理論知識在整個(gè)有限元程序框架中的位置及作用,加深對有限元理論公式的理解,這樣可以進(jìn)一步提升學(xué)生對有限元理論知識學(xué)習(xí)的熱情。進(jìn)行有限元程序教學(xué)的前提是合理選擇有限元教學(xué)程序。多年的教學(xué)實(shí)踐表明,多數(shù)學(xué)生喜歡學(xué)習(xí)使用有限元軟件,但對有限元程序的學(xué)習(xí)有畏難情緒,主要原因是很多有限元教學(xué)程序篇幅較長,采用的編程語言較舊,程序中包含很多非結(jié)構(gòu)化語句,不便于理解及閱讀;程序?qū)?yīng)的理論知識點(diǎn)眾多,學(xué)生難以把握重點(diǎn)。因此,我們可以按如下原則選擇有限元教學(xué)程序。
1.有限元教學(xué)程序應(yīng)簡短而完整,這是保證教學(xué)效果的重要前提。簡短是指有限元教學(xué)程序的主體部分要簡潔,使學(xué)生在較短的時(shí)間內(nèi)就可以了解程序的大體結(jié)構(gòu)及各部分的主要內(nèi)容。完整是指有限元教學(xué)程序應(yīng)該包括網(wǎng)格劃分、設(shè)定邊界條件、單元分析與組裝、平衡方程的求解、應(yīng)變及應(yīng)力的計(jì)算等有限單元法的主要計(jì)算步驟。這樣可以讓學(xué)生了解有限元程序的全貌,起到高屋建瓴的作用。
2.有限元教學(xué)程序應(yīng)該包括理論教學(xué)中的重要知識點(diǎn),以便將理論知識與程序教學(xué)相結(jié)合。例如,理論講解中若包含某種屈服準(zhǔn)則及材料的本構(gòu)關(guān)系,則教學(xué)程序中也應(yīng)包含相應(yīng)的內(nèi)容,以便將理論知識與編程實(shí)踐相對應(yīng)。上一條準(zhǔn)則與本條準(zhǔn)則分別對有限元程序教學(xué)提供了“面”及“點(diǎn)”的教學(xué)條件。通過“點(diǎn)面結(jié)合、以點(diǎn)帶面”的方式,既可讓學(xué)生了解有限元程序的整體框架,亦可讓學(xué)生學(xué)習(xí)重要的知識點(diǎn)。
3.有限元教學(xué)程序應(yīng)該與學(xué)生的專業(yè)方向有關(guān),學(xué)生可以采用該程序?qū)λ鶎W(xué)專業(yè)的簡單工程實(shí)例進(jìn)行有限元計(jì)算。在了解程序結(jié)構(gòu)的基礎(chǔ)上對專業(yè)算例進(jìn)行計(jì)算,可以讓學(xué)生切身體會理論知識的實(shí)用價(jià)值。學(xué)生有一種成就感后,反過來會促使自己投入更多的時(shí)間與精力來學(xué)習(xí)有限元的理論,提升其對理論知識的學(xué)習(xí)興趣。
綜上所述,在對地質(zhì)工程專業(yè)研究生進(jìn)行“有限單元法”課程教學(xué)時(shí),選擇了文獻(xiàn)[10]中3節(jié)點(diǎn)三角形單元的平面應(yīng)力分析程序,以及平面應(yīng)變問題的承載力分析程序、邊坡穩(wěn)定性分析程序和土壓力分析程序作為主要教學(xué)程序。這些程序的長度約在兩頁A4紙的范圍內(nèi),程序由結(jié)構(gòu)化科學(xué)計(jì)算語言VISUAL FORTRAN編寫,可讀性強(qiáng),操作方便,而且這些程序適用于地質(zhì)工程中求解地基承載力、擋土墻背土壓力及邊坡穩(wěn)定性分析等典型工程算例。
三、有限元程序的教學(xué)方法
為了提高學(xué)生的編程能力及創(chuàng)新能力,在有限元程序教學(xué)方面,我們通過“點(diǎn)面結(jié)合,以點(diǎn)帶面”的方式來組織教學(xué),既注重引導(dǎo)學(xué)生對有限元程序整體結(jié)構(gòu)的學(xué)習(xí),也注重學(xué)生對重要理論知識點(diǎn)的學(xué)習(xí)。一方面,只有從總體上了解了有限元程序的結(jié)構(gòu),才能真正理解有限單元法求解工程問題的具體過程,否則,若只學(xué)習(xí)若干知識點(diǎn),則可能會陷入“盲人摸象”的誤區(qū)。另一方面,有必要學(xué)習(xí)與有限單元法基本原理及專業(yè)應(yīng)用相關(guān)的重要知識點(diǎn)對應(yīng)的程序模塊,學(xué)習(xí)其具體的編程方法與技巧。創(chuàng)新的前提是模仿,對這些重要知識點(diǎn)的學(xué)習(xí)與模仿是培養(yǎng)學(xué)生編程及創(chuàng)新能力的重要保證。對有限元程序教學(xué)的具體方式如下。
程序主體結(jié)構(gòu)的教學(xué)(“面”的教學(xué)),其主要教學(xué)方法是引導(dǎo)學(xué)生繪制有限元程序流程圖,讓學(xué)生繪制程序流程圖是了解有限元程序總體結(jié)構(gòu)的好辦法,通過繪制程序流程圖可以學(xué)習(xí)有限元程序的一般框架與編程技巧。在引導(dǎo)學(xué)生學(xué)習(xí)有限元程序的主體結(jié)構(gòu)時(shí),需提醒學(xué)生重點(diǎn)在于了解有限元主程序中各程序模塊的功能、主要子程序的作用、輸入及輸出參數(shù),此時(shí)不必糾結(jié)于程序的編程細(xì)節(jié)。這樣,學(xué)生可以節(jié)省學(xué)習(xí)時(shí)間,不被各種子程序的具體內(nèi)容所干擾,將精力放在學(xué)習(xí)有限元程序的主要功能模塊上,提高學(xué)習(xí)效率。子程序的教學(xué)(“點(diǎn)”的教學(xué))對于重要的理論知識點(diǎn),要求學(xué)生閱讀子程序的具體內(nèi)容,找出子程序中語句與理論公式的對應(yīng)關(guān)系。一般而言,子程序只對應(yīng)某種具體的功能,程序較短,學(xué)習(xí)難度大大降低了。還有一些子程序只涉及較多的數(shù)學(xué)知識(如大型線性方程組的求解等),在學(xué)習(xí)時(shí)只需了解該子程序的作用,不必學(xué)習(xí)該類子程序的具體內(nèi)容。通過這種方式,可以讓學(xué)生把精力放在學(xué)習(xí)與有限元理論和具體專業(yè)關(guān)系密切相關(guān)的知識點(diǎn)上,了解將這些理論公式轉(zhuǎn)化為程序的具體過程。當(dāng)學(xué)生有創(chuàng)新想法時(shí),可在對這些子程序?qū)W習(xí)的基礎(chǔ)上進(jìn)行模仿與創(chuàng)新。運(yùn)行并修改有限元程序,在引導(dǎo)學(xué)生閱讀有限元程序的同時(shí),要求學(xué)生進(jìn)行程序的編譯與運(yùn)行。學(xué)生在編譯及調(diào)試程序時(shí)遇到并解決問題的過程有助于他們對有限元理論知識的學(xué)習(xí)與理解;有了程序的運(yùn)行結(jié)果會讓學(xué)生有成就感,極大地提升了學(xué)生學(xué)習(xí)的積極性;將簡單有限元教學(xué)程序的運(yùn)行結(jié)果與商用有限元軟件的計(jì)算結(jié)果進(jìn)行對比,可以讓學(xué)生體驗(yàn)程序與軟件的差別,教師可以在此基礎(chǔ)上進(jìn)一步介紹理論分析的重要性,激發(fā)學(xué)生的創(chuàng)新精神。在運(yùn)行有限元程序的基礎(chǔ)上,教師可以布置簡單的編程任務(wù),如:根據(jù)研究生的具體研究方向及研究課題,讓學(xué)生修改簡單有限元教學(xué)程序中的邊界條件及材料的本構(gòu)關(guān)系等,這種簡單的編程模仿是訓(xùn)練學(xué)生編程能力的重要手段。小組配合:上述教學(xué)方式可將復(fù)雜的有限元程序教學(xué)任務(wù)分解成若干個(gè)容易實(shí)現(xiàn)的小任務(wù)。但是由于有限元程序涉及的內(nèi)容及知識點(diǎn)眾多,讓學(xué)生獨(dú)自完成上述各項(xiàng)任務(wù)的難度很大。在教學(xué)實(shí)踐中,我們將學(xué)生分成若干小組,每組3~4人,給每組分配一個(gè)獨(dú)立的有限元教學(xué)程序。繪制流程圖的任務(wù)由組員在課余共同探討,合作完成。多個(gè)子程序的學(xué)習(xí)及程序調(diào)試等任務(wù)則由不同學(xué)生在課余分別完成。學(xué)生完成各項(xiàng)任務(wù)之后,教師在課堂上組織交流與討論,每組選一位同學(xué)匯報(bào)主程序的流程結(jié)構(gòu),其他同學(xué)匯報(bào)各主要子程序的內(nèi)容、編程要點(diǎn)及它們與理論知識點(diǎn)的對應(yīng)關(guān)系。教師在學(xué)生匯報(bào)的基礎(chǔ)上進(jìn)行點(diǎn)評,各組學(xué)生之間也進(jìn)行相互點(diǎn)評。通過這種教學(xué)互動(dòng),學(xué)生對繪制的流程圖初稿進(jìn)行改進(jìn),分析總結(jié)有限元程序的基本框架與功能模塊。近年來的有限單元法教學(xué)實(shí)踐表明,通過這種互助學(xué)習(xí)的方式,可以充分發(fā)揮學(xué)生學(xué)習(xí)程序的主觀能動(dòng)性及團(tuán)隊(duì)協(xié)作精神,切實(shí)提高了學(xué)生的編程能力。
四、結(jié)語
“有限單元法”課程是進(jìn)行數(shù)值計(jì)算、解決工程實(shí)際問題的重要工具,該課程中的程序教學(xué)是培養(yǎng)研究生創(chuàng)新能力的重要途徑之一。針對當(dāng)前研究生“有限單元法”課程教學(xué)實(shí)踐中程序教學(xué)上存在的問題,分析了有限元教學(xué)程序的選擇原則,提出了“以點(diǎn)帶面,點(diǎn)面結(jié)合”的有限元程序教學(xué)模式。教學(xué)實(shí)踐表明,通過指導(dǎo)學(xué)生繪制有限元程序流程圖、學(xué)習(xí)重點(diǎn)子程序、運(yùn)行并修改有限元程序、小組交流與討論等方式,可以有效激發(fā)研究生學(xué)習(xí)“有限單元法”課程的熱情,加深對有限單元法理論知識的理解,提高研究生的編程能力及創(chuàng)新能力。
(課題組成員:譚曉慧、侯曉亮、馬海春、馬雷)
參考文獻(xiàn)
[1]楊帆,王莉華,趙金峰.有限元仿真的一堂課——兼說實(shí)例驅(qū)動(dòng)型啟發(fā)式教學(xué)法[J].力學(xué)與實(shí)踐,2019,41(4):463-469.
[2]金浩,周順華,楊新文.地下鐵道方向本科生有限單元法授課方式探討[J].大學(xué)教育,2019,104(2):51-53.
[3]譚曉慧,侯曉亮,查甫生.有限單元法課程教學(xué)探索[J].教育教學(xué)論壇,2014(41):185-187.
[4]江巍,劉章軍,吳勃.土木工程專業(yè)研究生有限單元法課程教學(xué)改革初探[J].教育教學(xué)論壇,2020(1):170-173.
[5]李元松,王亞軍,王章瓊,等.案例引導(dǎo)的有限單元法課程教學(xué)方法改革與實(shí)踐[J].高等建筑教育,2018,27(6):110-116.
[6]黃明,石憲章,劉春太.《有限元法》課程逆向教學(xué)法探析[J].高教論壇,2013(3):83-85.
[7]徐榮橋,楊仲軒,呂朝鋒.MATLAB在有限元教學(xué)中的應(yīng)用與實(shí)踐[J].力學(xué)與實(shí)踐,2010,32(102):101-103.
[8]JENSEN D,PRAMONO E. Method for teaching finite elements which combines the advantages of commercial pre- and postprocessing with student-written software[J].Computer Applications in Engineering Education,2015,6(2):105-114.
[9]SISWANTO WA,DARMAWAN AS.Teaching finite element method of structural line elements assisted by open source freemat[J].Research Journal of Applied Sciences,Engineering and Technology,2012,4(10):1277-1286.
[10]SMITH IM,GRIFFITHS DV,MARGETTS L.Programming the Finite Element Method[M].New Jersey:John Wiley&Sons Ltd,2014.