【FreeFEM】从入门到精通——一、 FreeFEM安装与常见问题

安装

0、一些准备工作
  • 为centos添加存储库,防止找不到一些依赖包
sudo yum install –y epel-release
sudo yum-config-manager --enable epel

EPEL (Extra Packages for Enterprise Linux) 是 Fedora 团队的一个开源和免费的基于社区的存储库项目,它为 Linux 发行版提供 100% 高质量的附加软件包,包括 RHEL (Red Hat Enterprise Linux)、CentOS Stream 、AlmaLinux 和 Rocky Linux。

  • 下载FreeFEM源码
    • FreeFEM官网 https://freefem.org/
    • git clone https://github.com/FreeFem/FreeFem-sources.git
1、安装依赖库
  • Ubuntu
sudo apt-get install libgsl-dev libhdf5-dev             liblapack-dev libopenmpi-dev freeglut3-dev bison flex patch perl
  • Centos
sudo yum install gsl-devel hdf5-devel lapack-devel openmpi-devel freeglut bison flex patch perl
2、安装FreeFEM
  • 进入FreeFEM安装包目录
cd FreeFem-sources
  • 自动配置,生成configure文件
autoreconf -i
  • 配置configure文件
./configure --enable-download --enable-optim     --prefix=/where/you/want/to/have/files/installed 
  • 下载FreeFEM依赖的第三方包
./3rdparty/getall -a
  • 构建FreeFEM库和可执行文件
make -j<nbProcs> 
make -j<nbProcs> check
  • 检查完成后安装可执行文件
make install
3、将可执行目录添加到系统path中
  • 直接在命令行输入,只对当前会话有效
export PATH=/where/you/installed/bin:$PATH
  • 修改用户目录下的.profile文件,只对该用户有效
# 通过vim等方式在文件中合适位置添加
export PATH=/where/you/installed/bin:$PATH
# 退出编辑文件在命令行输入
source ~/.profile
  • 修改/etc/profile文件,在/etc/profile文件的适当位置添加,对所有用户生效
# 通过vim等方式在文件中合适位置添加
export PATH=/where/you/installed/bin:$PATH
# 退出编辑文件在命令行输入
source /etc/profile

QA、报错解决

  • error:can’t locate Digest/MD5.pm in @INC(@INC contains : … 安装arpack时遇到错误在这里插入图片描述

    yum -y install perl-Digest-MD5
    附:手动安装arpack https://blog.csdn.net/Kuang2016/article/details/106648285

  • error:configure: error: cannot guess build type; you must specify one 安装nlopt时遇到错误,没有指定build的体系结构系统在这里插入图片描述

    进入nlopt目录下,指定 ./configure --build=aarch64-unknown-linux,然后再make && sudo make install

  • error: ‘for’ loop initial declarations are only allowed in C99 mode note: use option -std=c99 or -std=gnu99 to compile your code
    gcc支持的C89,不能在for循环条件里面定义参数,在源程序中将定义的语句提前就行

  • error:unresolvable R_AARCH64_ADR_PREL_PGHI21 relocation against symbol `stderr@@GLIBC_2.17’ 一些库报错against symbol ‘xxx’,这个是一些编译的冲突,需要在报错的库文件来源进行重新编译在这里插入图片描述
    在报错的库文件源文件内编译选项添加 -fPIC,编译完后进入要安装的软件目录重新make

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
对流方程是描述流体运动的方程,由Navier-Stokes方程组成,其中包含连续性方程和动量方程。在数值解中,常使用有限元法来求解对流方程。 在FreeFem++中,可以通过定义变量,设定边界条件和初始条件,以及使用有限元法来求解对流方程。 首先,需要定义变量和方程。假设我们要求解二维空间中的定常对流方程,可以如下定义: ``` real xc, yc; // 圆心坐标 real r; // 圆半径 int N; // 网格划分数 xc = 0.5; yc = 0.5; // 假设圆心坐标为(0.5, 0.5) r = 0.2; // 假设圆半径为0.2 N = 50; // 假设网格划分数为50 mesh Th = square(N,N); // 创建二维正方形网格 fespace Vh(Th, P1); // 定义函数空间Vh,使用P1元素 Vh u, v; // 定义速度场变量u和v Vh p; // 定义压力变量p u[] = 0; v[] = 0; // 设置速度初值为0 p[] = 0; // 设置压力初值为0 Vh Du, Dv; // 速度的梯度 Du[] = dx(u); Dv[] = dy(v); // 求速度的梯度 Vh Fh, Gh; // 定义对流项 Fh[] = u*Du; Gh[] = v*Dv; // 计算对流项 Vh L2, L3; // 定义边界项 L2[] = -Fh; L3[] = -Gh; // 计算边界项 Vh L1, L4; // 定义其他项 L1[] = div(u); L4[] = 0; // 计算其他项 // 定义方程 problem NS(u, v, p, (Du, Dv), {Fh, Gh}, {L1, L2, L3, L4}); ``` 然后,设定边界条件和初始条件。可以根据实际问题来设置边界条件和初始条件。 最后,使用有限元法求解对流方程,并输出结果。 ``` NS; // 使用有限元法求解方程 plot(u, wait=true); // 绘制速度场 plot(p, wait=true); // 绘制压力场 ``` 以上代码展示了如何在FreeFem++中使用有限元法求解二维定常对流方程,并输出结果。实际应用中,可以根据具体情况更改和调整代码。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

午夜研究院

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

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

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

打赏作者

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

抵扣说明:

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

余额充值