- FreeFEM++介绍 FreeFem++是一款免费的、开放源码的二维、三维偏微分方程有限元计算软件,由巴黎第六大学研究人员开发,它集成网格生成器、线性方程组的求解器、后处理及计算结果可视化于一体,能快速而高效地实现复杂区域问题的有限元数值计算。FreeFEM++的特点包括通过变分公式描述问题,多变量多方程耦合或解耦的可解性,分片描述边界,自动生成网格,各向异性的网格适应,自动插值输出结果,多种有限元多项式元、P1元、RT元,多种方程组求解方式,基于C++速度和在线绘图等。FreeFEM++的语言风格和C++十分相似,有过C++学习经验的人能容易上手FreeFEM++。
- 如何在FreeFEM生成网格 网格的生成过程主要用到两个变量border和mesh。我们以手册第3章3.1节的薄膜问题为例,通过border定义区域的边界,再利用buildmesh生成网格。
通过plot(Th)命令,我们可以在线绘制出如下的网格图像。
- 如何从FreeFEM++中导出网格数据 在生成网格后,我们可以使用savemesh命令导出网格数据,常用的导出文件格式如下。为了更好地与matlab相连接,我们可以选择导出成"mesh.txt"文件。
- 如何在matlab中生成网格 在生成"mesh.txt""后,由于FreeFEM++网格数据的[p,e,t]和matlab的pdetool工具箱中规定的[p,e,t]数据行列大小不一致,我们需要做一些处理,将p变成 2 x nv 大小的矩阵,同理e为 2 x ne 大小的矩阵,t 为 4 x nt 大小的矩阵。 这里nv,ne和nt分别指的是网格的顶点数,边界边数和单元数。接下来利用matlab的importdata命令,在工作区导入处理好的[p,e,t],再利用pdemesh命令,可在matlab下生成网格的图像。下面两张图片分别是在FreeFEM++中生成的网格和将同样的网格数据导入到matlab下生成的网格,可以看到生成的网格是一致的。
- FreeFEM++下载链接https://freefem.orgFreeFEM++官网的学习手册有多种语言版本,其中包括中文版。关于FreeFEM++的更多细节可以从手册中学习。