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