# FEM-HW **Repository Path**: wanyzh/fem-hw ## Basic Information - **Project Name**: FEM-HW - **Description**: No description available - **Primary Language**: C++ - **License**: LGPL-2.1 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 1 - **Created**: 2020-12-15 - **Last Updated**: 2023-04-25 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # FEM-HW ### 介绍 本程序包为密苏里科技大学He Xiaoming教授的通用结构有限元课程的作业 ### 程序说明 + 该程序使用Visual Studio 2017编写 + 解决方案里有8个工程,各工程对应的问题如下: + FE_solver_1D_Poisson: 一维泊松方程。 Chapter 1:example 1, example 2, example 3, example 4 + FE_solver_2D_Elliptic:二维椭圆方程。Chapter 3: example 1, example 2 + FE_solver_2D_Parabolic:二维抛物方程,处理非稳态问题。该工程开始,将有限元封装为一个类,该类中包含网格类、基函数类、时间类等,主程序通过调用类的接口完成有限元的计算步骤。Chapter 4: example 1 + FE_solver_2D_Elasticity:弹性方程,该工程求解的未知量量为向量。Chapter 5:example 1 + FE_solver_2D_Stokes:二维稳态Stokes流,该工程未知量为向量,且为混合元。Chapter 6:example 1 + FE_solver_2D_Navier-Stokes:二维稳态Navier-Stokes方程,该工程未知量为向量,混合有限元方法,且存在非线性,使用了Newton迭代。Chapter 7: example 1 + FE_solver_2D_Unsteady_Stokes:二维非稳态Stokes方程,该工程未知量为向量,混合有限元方法,非稳态问题需要时间迭代,即为FE_solver_2D_Parabolic何FE_solver_2D_Stokes的综合。Chapter 8:example 1 + FE_solver_2D_Unsteady_NS:二维非稳态NS方程,该问题未知量为向量,混合有限元方法,非线性问题需要Newton迭代,非稳态问题需要时间迭代,即为FE_solver_2D_Navier-Stokes和FE_solver_2D_Parabolic的综合。 ### 依赖 + 稀疏矩阵存储和线性方程组求解使用了[Eigen](https://eigen.tuxfamily.org/dox/)库,推荐使用[vcpkg](https://github.com/Microsoft/vcpkg)来安装Eigen。 ### 使用说明 一维程序: 1. 运行程序,输入网格单元数量 2. 程序运行后输出计算结果到txt文件中 3. plot.py脚本使用matplotlib将所有计算结果绘制为曲线 二维程序: 1. 运行程序,读入外部由生成的网格,读入网格当前仅支持gambit的neu文件 2. 如果使用外部网格文件,则指定文件名,注意文件名要包括后缀 3. 程序输出网格生成时间、矩阵组装时间、右端项组装时间、边界条件处理时间以及线性方程组求解时间 4. 程序输出有限元计算结果与解析解之间的误差(由于网格尺度控制方法与课件不同,所得的误差与课件有差别,但量级一致) 5. 计算结果输出为tecplot文件和vtk文件,文件名为"result.plt"和"result.vtk",该文件也包含了解析解,可分别用tecplot软件和Paraview软件打开查看场图。不同工程输出文件名有差别。 ### 部分计算结果 1. 一维算例(Chapter 1: example 1): ![](https://ftp.bmp.ovh/imgs/2021/01/56589b8e9805b80e.png) 2. 二维算例(Chapter 3: example 2): + 三角形线性单元 ![](https://ftp.bmp.ovh/imgs/2021/01/f479213bff9074a6.png) + 三角形六结点单元 ![](https://ftp.bmp.ovh/imgs/2021/01/58105dbbc84fa68c.png) + 四边形双线性单元 ![](https://ftp.bmp.ovh/imgs/2021/01/75e5a79173949662.png) + 四边形非规则线性单元 ![](https://ftp.bmp.ovh/imgs/2021/01/c77ac80598d9af7c.png) + 四边形九结点单元 ![](https://ftp.bmp.ovh/imgs/2021/01/23a619659698b2c1.png) 3. 非稳态Stokes方程 ![](https://ftp.bmp.ovh/imgs/2021/01/9d25205cf960dbad.png) ![](https://ftp.bmp.ovh/imgs/2021/01/a15aed0db8de940d.png)