Linux下FreeFEM源码编译安装及使用

目录

软件介绍

基本依赖

一、源码下载

1、官网

2、github

二、解压缩

三、编译安装

1、生成configure文件

2、配置编译信息

3、下载FreeFEM第三方依赖库

4、安装PETSc

5、编译FreeFEM

6、编译检查

7、安装

四、算例测试


软件介绍

        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 Methodhttps://freefem.org/

        点击“Download”直接跳转至最新版软件的github资源下载页面,我们选择zip格式的压缩包进行下载。

2、github

FreeFem/FreeFem-sources: FreeFEM source codehttps://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-3rdpartieshttps://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

        输出结果为:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

猿核试Bug愁

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值