目录
软件介绍

FreeFEM是一款开源有限元分析求解器,主要用于2D和3D非线性多物理场耦合计算。软件包括众多预构建模块,如纳维-斯托克斯、线性和非线性弹性、热力学、磁学、电学以及流固耦合等。软件提供类C++语法,用户可以快速编写PDE模型、网格生成、求解和后处理;软件支持Windows/Linux/MacOS;软件内置绘图功能,可导出数据到Paraview、Matlab、Python等软件工具。
基本依赖
1、C++编译工具
2、Make编译工具
3、FreeFEM第三方依赖库
4、mpi并行通信库
5、HDF5库
一、源码下载
软件完全开源,最新版本为4.15,可以通过下面的链接进行源码访问。
1、官网
FreeFEM - An open-source PDE Solver using the Finite Element Method
https://freefem.org/
点击“Download”直接跳转至最新版软件的github资源下载页面,我们选择zip格式的压缩包进行下载。

2、github
FreeFem/FreeFem-sources: FreeFEM source code
https://github.com/FreeFem/FreeFem-sources
通过访问软件github网页,获取源码。
也可以在终端通过git命令获取源码:
git clone https://github.com/FreeFem/FreeFem-sources.git FreeFEM
二、解压缩
对下载的源码压缩包进行解压缩:
unzip FreeFem-sources-4.15.zip
三、编译安装
1、生成configure文件
autoconf -i
2、配置编译信息
./configure --enable-download --enable-optim --prefix=${HOME}/FreeFem-install
通过--prefix指定安装路径。
3、下载FreeFEM第三方依赖库
①第一种方法
联网情况下,可以直接使用源码自带的命令下载:
./3rdparty/getall -a
如果下载顺利,在FreeFem-sources-4.15/3rdparty/pkg路径下会保存所有的依赖包:

②第二种方法
如果无法访问互联网或者下载失败,可以在软件github获取第三方依赖库:
FreeFem/FreeFEM-3rdparties
https://github.com/FreeFem/FreeFEM-3rdparties#
直接下载zip压缩包或命令行git下载:
git clone https://github.com/FreeFem/FreeFEM-3rdparties.git FreeFEM-3rdparties
将下载的压缩包解压到FreeFem-sources-4.15/3rdparty/pkg路径下。
4、安装PETSc
cd 3rdparty/ff-petsc
make petsc-slepc
返回FreeFem-sources-4.15文件夹中,执行:
./reconfigure
5、编译FreeFEM
在FreeFem-sources-4.15文件夹中,执行:
make -j2
-j2表示2核并行编译。
整个编译过程大概20分钟(串行编译的情况下),编译完成后如下图所示:

6、编译检查
执行:
make check
如果没有安装HDF5库,检查会报错:

安装HDF5之后,重新检查正常通过(NSI3d-carac算例忽略):

7、安装
使用:
make install
将软件安装至--prefix指定的路径中。
安装完成:


四、算例测试
我们使用官方提供是算例:stokes.edp进行测试,算例脚本为:
// created with md2edp examples/examples/stokes.md
int n = 3; // mesh quality
mesh Th = square(10*n, 10*n);
// Fespace
fespace Uh(Th, P1b);
Uh u, v;
Uh uu, vv;
fespace Ph(Th, P1);
Ph p, pp;
// Problem
solve stokes([u, v, p], [uu, vv, pp])
= int2d(Th)(
dx(u)*dx(uu) + dy(u)*dy(uu)
+ dx(v)*dx(vv) + dy(v)*dy(vv)
+ dx(p)*uu + dy(p)*vv
+ pp*(dx(u) + dy(v))
-1e-10*p*pp
)
+ on(1, 2, 4, u=0, v=0)
+ on(3, u=1, v=0)
;
// Plot
plot([u,v],p,wait=1);
执行测试:
FreeFem++ ./stokes.edp

输出结果为:


480

被折叠的 条评论
为什么被折叠?



