基于Calfem及扩展库的有限元课程教学方法

作者: 刘岩 宋克志 姜广辉

基于Calfem及扩展库的有限元课程教学方法0

[摘 要] 提出了基于开源程序Calfem的有限元教学方法,以解决教学中出现的理论、编程、通用软件应用三方面能力培养脱节的问题。Calfem简洁易学,但目前的教学实践仍存在不足。通过二次开发开源扩展函数库CalfemPlus,扩充了大量单元和功能函数,使程序编写符合通用软件输入文件逻辑。列举了一则例题的编程实例,并介绍了课堂课后的教学经验,说明了Calfem及扩展库能联系数学理论与通用软件,同时降低了程序的理解和编写难度,提高了学生编程解决问题的能力。

[关键词] 有限单元法;理论教学;编程;通用软件;Calfem

[基金项目] 2020年度教育部第二批新工科研究与实践项目“智能建造背景下地方高校土木工程专业课程体系改革与实践”(E-TMJZSLHY20202133);2019年度山东省专业学位研究生教学案例库建设项目“‘地下工程设计与施工’案例库”(SDYAL19071)

[作者简介] 刘 岩(1982—),男,山东烟台人,工学博士,鲁东大学土木工程学院副教授,主要从事应用与计算力学研究。

[中图分类号] O242.21 [文献标识码] A [文章编号] 1674-9324(2024)43-0153-04 [收稿日期] 2023-07-06

“有限单元法”课程是面向土木、机械、交通类等专业开设的工科基础课程,介绍了近半个世纪力学学科的重要成果——有限元这一有力的工具,以解决各种复杂的工程力学问题。一般来说,其初等课程对应线性理论部分,适用于低年级研究生或者高年级本科生,而高级课程包含了非线性理论。本文面向初等课程的教学进行研究。笔者认为,“有限单元法”课程主要培养人才的三方面能力:数值求解各类场问题的理论能力、工程软件应用能力和编程能力。然而,在教学过程中,往往遇到单方面强调某一能力,或者三方面孤立无法形成整体培养的问题。对此,本文阐述了如何基于现有的有限元教学程序库Calfem及笔者开发的扩展库CalfemPlus将三方面能力培养相协调,使学生在有限元的学习中更好地学以致用。

一、有限元教学中的问题

基于教学实践,笔者总结了有限元教学中易出现的三种问题。

1.与数学课同质,即只强调数学原理教学。有限元涉及较多的数学理论,对于编写软件意义较大。但大部分工科开设本课程的目的是服务工程应用,即利用软件合理地建模。只教授纯数学理论无法提高工科学生的接受程度,其与工程实践缺少联系。

2.与“软件培训”课同质,即直接训练通用软件的界面操作。通用软件的学习对于有限元工程应用是必要的,但仅培训软件界面操作,一些学生不能理解计算背后的逻辑,难以评价结果,能处理的问题具有局限性。

3.对于非计算机专业“编程难”的问题。程序是有限元方法实现的核心,很难想象没有编程训练的有限元课程。而大部分有限元代码庞杂,学习曲线高,不利于少课时教学。

学习数学原理、应用软件与编程训练三者在有限元教学中不可或缺。但对于三四十左右学时的少课时情况,三者应力求精练。有限元入门课要让学生初步清楚力学原理如何用程序表达、如何建模,以及通用软件实现的大致路径。本文重点阐述基于易学的有限元库Calfem及笔者在此基础上开发的扩展库的教学法,以实现编程、数学理论与通用软件的融合。目前,有限元教学资料或开源程序众多,这里仅列举一二,包括:《有限元基础教程》提供了简明的代码[1],能部分解决前文提出的问题。但其每种单元拥有独立的组装及后处理函数,缺乏统一性;弱化了单元节点的连接关系,较难与通用软件的输入文件对应。《有限单元法》附录程序FEATP[2],由Fortran77编写,程序较长,只能解决平面问题。《工程中的有限元方法》的配套程序由各种流行语言编写[3]39,但仍然涉及底层,如格式化输入等。Zenkiewicz的教材配套的经典代码Feappv体量稍大[4],学习周期长。笔者认为教学程序Calfem(www.byggmek.lth.se/english/calfem/)适合工科的少学时有限元课程。该程序是由瑞典Lund大学结构力学系开发,全称“Computer Aided Learning of the Finite Element Method”,国外出版了应用该代码进行教学的教材[5],国内外也有基于该程序包的工程应用研究[6-8]。本文面向该软件较为成熟的3.4版本进行撰写。

Calfem的优点包括:(1)易读易写易学。Calfem使用Matlab/Octave语言编写,逻辑清晰简单,使学生将精力放在力学建模上。使用手册十分详尽,带有例程,方便自学。(2)提供了多样的单元和功能函数。如杆梁单元、平面实体/传热单元、低阶空间单元以及少量非线性单元等。提供组装总刚函数、提取单元位移函数、Newmark法函数等。(3)结果可见。每一步结果可立即显示出来,单元形成的刚度阵直观可见。(4)扩展性好。该程序包不仅可作为教学类程序,还可以在此软件基础上做工程应用或者研究。但对于笔者的教学状况,Calfem不能直接应用。如其采用单元自由度连接关系表,而不是单元节点连接关系表;缺少一些单元;缺少处理多点相关约束求解函数等功能;缺乏与教材配套的例题程序。同时,希望程序的编写逻辑与通用软件的输入信息逻辑(如Ansys或Abaqus的命令流)具有可比拟性,在此基础上,学生可以理解通用软件的工作原理。本文将针对这些问题提出解决方案,并阐述在教学中的实施情况。

二、解决方案

本方案的目的是通过“轻度”编程训练实现两个对应,即将有限元公式与程序代码对应起来,将程序代码与通用软件应用对应起来,提高学生在理论层面对工程问题的控制力,进而达成有限元课程的目标:学生能够应用理论编写程序处理实际问题;提高对通用软件的理解;能正确处理一些建模中出现的问题。针对以上目标,笔者对Calfem函数库进行了扩充,并将解决方案分解:(1)开发提取单元信息(ExtractElInfo)模块函数。该模块的功能为:通过输入单元与节点的连接关系表和单元类型,自动产生单元与自由度的连接关系表以及节点与自由度的连接关系表,从而使程序能够与教材中例题的基本输入信息对应,也使程序与通用软件的输入逻辑可比。(2)开发一系列Calfem中缺少而教材中涉及的单元。(3)开发罚函数法处理多点相关约束和形成单元面力荷载等工具函数。(4)开发一系列与教材例题和习题配套的程序。最终,形成了扩展包CalfemPlus。

三、基于CalfemPlus的编程教学实例一则

四杆桁架问题描述见教材的例题4.1[3]95。该例题的计算程序见图1(a)。

程序流程为:首先,给出节点坐标矩阵Coord(第一列为节点号,后接坐标),单元和节点的连接关系矩阵El(第一列为单元号,后接节点号)。然后,设定单元类型为平面桁架单元“bar2e”,进而调用ExtractElInfo函数。接着初始化总体刚度阵和总体荷载列阵,分别在3节点和2节点施加向下的25 000的力和向右的20 000的力。在设定单元和材料属性之后,生成单元刚度阵并组装。随后,在1、4节点的水平、竖直方向以及2节点的竖直方向设定固定边界条件,得到边界条件矩阵bc,并采用消元法求解。最后,循环提取每个单元的位移向量,计算单元内力及应力。

ExtractElInfo函数自动返回EDof、GDof以及Ex、Ey。EDof是程序的核心,刚度集成、单元位移的提取都依赖该矩阵。自动生成EDof大大简化了Calfem的建模工作,也符合通用软件的输入文件的逻辑。GDof矩阵中的第i行的全部六个元素代表第i个节点沿整体笛卡尔系三个平动自由度以及三个转动自由度的编号,如GDof(3,2)代表3号节点y向平动自由度编号。GDof矩阵使得施加力的边界条件和位移边界条件变得很方便,无须寻找特定的自由度编号,如图1(a)中程序的第25、38行。

本例对应的Ansys命令流见图1(b)。与图1(a)中程序对比可见,二者提供信息和逻辑一致,如都给出了节点坐标表、单元和节点的连接关系表,并给出了单元类型和材料属性。二者的区别是程序显式的组装总刚及总荷载列阵,并利用消元法求解了问题,而通用软件则隐藏了这一过程。

四、教学实施情况

1.课堂教学。笔者将Calfem与扩展库用于若干个学期有限元基础课程的实践教学,并不断改进。针对课堂上讲解的例题和部分练习题编写了基于有限元教材[3]59的CalfemPlus算例程序三十余个。有限元编程的课堂教学分为以下两部分:一是Calfem及扩展库教学。在课堂教学中,并不单独介绍Calfem的使用,而是将其融入教学的每一章节中,在理论与编程实践中穿插讲授。课堂上重点介绍Calfem一些基本函数和单元,如组装总刚、单元位移列阵、消元法求解等函数,还包括扩展模块的单元信息提取、罚函数求解函数等。单元函数则跟随教材章节,根据需要依次介绍单元。二是例程及通用软件应用教学。将部分例题同时用Calfem和通用软件实现,程序和通用软件中的单元设置、计算步骤与教材的手工计算保持一致。在讲完手算算例之后,演示对应的程序,将计算结果利用“走程序”的方法,结合交互性语言的特点,将重点代码步的结果展示给学生,如单元自由度连接关系表、单元和整体的刚度阵、荷载列阵、求解结果、支反力、单元位移列向量、单元应力等结果,让学生理解有限元标准程序结构和每一行代码的含义。通过一步一步执行形成单元刚度与组装总刚度阵的过程,学生可直接观察各种单元刚度阵的形成及特点。在展示程序后,介绍Ansys命令流或者图形界面交互操作建模方式。通过程序和应用通用软件对比,使学生在学习通用软件的同时,了解其背后的逻辑。

2.学生实践。有限元初级课程的实践环节包括2~4个学时的实验课和课后作业。实验课由上机编程实验和通用软件的基础实验两部分组成。上机编程实验的必做部分为:利用平面桁架单元计算简单桁架桥,利用平面梁单元进行多层平面刚架结构的有限元分析,利用Ansys经典界面建模计算加以验证。其他可选题目包括利用平面单元计算小孔应力集中问题、利用传热单元处理坝下的渗流问题等。

课后作业包括手算习题、利用CalfemPlus编写程序以及采用通用软件完成。部分习题在手算的同时,让学生编写程序或者采用通用软件计算,并对比结果,从而加深学生对通用软件—程序—数学原理的理解。作业还可设置一些不符合位移法求解力学问题的“标准”流程问题,比如利用最小二乘法求“平滑”应力、编写程序进行映射网格划分等,以加深学生对离散、插值、变分等概念的理解。

结语

为解决有限元教学中理论、编程、软件应用三方面能力相脱节的问题,本文介绍了程序库CalfemPlus、典型应用实例和教学实施情况。提出的解决方案达到了以下目的:(1)以编程为媒介,联系了数学与通用软件,使学生能够以有限元数学理论来指导使用通用软件,初步解决了有限元教学中理论与软件应用脱节的问题。(2)通过开发的扩展程序库,使有限元程序易于阅读和编写,拓展了学生的编程能力。

参考文献

[1]曾攀.有限元基础教程[M].北京:高等教育出版社,2009:41-52.

[2]王勖成.有限单元法[M].北京:清华大学出版社,2003:711-776.

[3]钱德拉佩特拉,贝莱冈度.工程中的有限元方法[M].4版.曾攀,雷丽萍,译.北京:机械工业出版社,2014:39-40.

[4]ZIENKIEWICZ OC, TAYLOR RL, ZHU JZ. The finite element method: its basis and fundamentals, 6th ed [M]. Oxford: Elsevier, 2005:664-667.

[5]PAVLOU DG. Essentials of the finite element method: for mechanical and structural engineers [M]. London: Elsevier Academic Press, 2015:7-16.

[6]杨德华,ZAGO L,李徽,等.新型3-CPS/RPPS机构的有限元建模及模态分析[J].机械设计与制造,2013(10):93-96.

经典小说推荐

杂志订阅