有限元框架 FEniCS 安装笔记(ubuntu16.04、centos7、win10)

什么是有限元框架 FEniCS

以下这段摘自中文手册(粗读了一下貌似是机器翻译,极其不顺,有条件建议去看英文原版手册,作者已经提供免费下载)

FEniCS
项目是针对的一个研究和软件项目创建自动计算的数学方法和软件数学建模。这意味着创建简单,直观,高效,和用于求解偏微分方程的灵活软件 PDE
使用有限元法。 FEniCS 最初创建于 2003 年由研究人员合作开发世界各地的大学和研究机构数量。对于有关 FEniCS 的更多信息和
FEniCS 的最新更新软件和本教程,请访问 FEniCS 网页 https://fenicsproject.org。 FEniCS
由许多构建块(软件组件)组成,一起形成 FEniCS 软件: DOLFIN,FFC , FIAT, UFL,
mshr,和其他几个。有关概述,请参阅 [FEniCS]。FENiCS 用户很少需要考虑这一点 FEniCS
的内部组织,但即使是临时用户也可以有时会遇到各种 FEniCS 组件的名称,我们简要地说列出 FEniCS 中的组件及其主要角色。
DOLFIN是 FEniCS 的计算高性能的 C ++ 后端。 DOLFIN
实现数据结构,如网格,函数空间和函数,计算密集型算法如有限元组合和网格细化,以及与线性代数解算器的接口和数据结构如PETSc。 DOLFIN
还实施了 FEniCS C ++ 和 Python 中的解决问题的环境。 FFC
是代码FEniCS(表单编译器)的一代引擎,负责从高级数学生成高效的 C ++ 代码抽象。 FIAT 是FEniCS
的有限元后端,负责生成有限元基函数, UFL 实现用户可以使用的抽象数学语言表 达变体问题, mshr 提供 FEniCS 网格生成功能。

典型安装方法

官网的下载页面已经提供了详细的解释,根据我的实践,从源码编译这条路径比较难实现,特别是对于没有linux编程经验的人。docker是目前最简单的能够用上FEniCS的方法。

Docker 安装 FEniCS

总共分两步,

第一步——安装docker

docker有两个版本,不用纠结,我们只需要docker CE即可。docker的另一个版本是docker EE,在此我们并不需要EE这个版本。
docker官网提供的安装方法
win系统,没什么可说的,直接下载后缀为exe的安装包即可,
Linux系统需要注意:安装完毕后需要给你的用户使用docker的权限

sudo usermod -a -G docker $USER

第二步——运行官网提供的命令

Linux 系统
请运行如下命令

curl -s https://get.fenicsproject.org | bash

如果上述命令不可行,可以运行

docker run -ti -p 127.0.0.1:8000:8000 -v $(pwd):/home/fenics/shared -w /home/fenics/shared quay.io/fenicsproject/stable:current

Win系统
直接运行

docker run -ti -p 127.0.0.1:8000:8000 -v D:/Work/fenics:/home/fenics/shared:z quay.io/fenicsproject/stable:current

亲测win10可以使用。
其中D:/Work/fenics是与运行fenics的docker共享的目录,在docker内,移动到/home/fenics/shared即可看到自己硬盘上D:/Work/fenics内的文件。

FEniCS 安装在 Ubuntu

官网提供了这种方法,方便使用Ubuntu的用户,在此仅是记录,本人并未实践。

sudo apt-get install software-properties-common
sudo add-apt-repository ppa:fenics-packages/fenics
sudo apt-get update
sudo apt-get install --no-install-recommends fenics
sudo apt-get dist-upgrade

FEniCS 安装在 Anaconda

官网提供了使用conda安装FEniCS的方法,本人并未尝试。
Anaconda是一个用python进行科学计算的打包程序,包含很多科学计算必须用的包,例如“numpy”“pandas”“scipy“等。
首先按照Anaconda官网提示,安装好Anaconda
然后,执行下列命令:

conda create -n fenicsproject -c conda-forge fenics
source activate fenicsproject

注意,FEniCS Anaconda代码由社区维护,分布式二进制软件包还没有完整的功能集,特别是在稀疏直接求解器和输入/输出组件方面。
更新。 conda-forge上的2017.2.0版本发布了MUMPS直接求解器,但缺少SuperLU_dist和支持MPI的HDF5。

从源代码编译FEniCS

FEniCS源代码的网址在此
官网提供了如下命令来进行编译

git clone https://bitbucket.org/fenics-project/fiat
git clone https://bitbucket.org/fenics-project/instant
git clone https://bitbucket.org/fenics-project/dijitso
git clone https://bitbucket.org/fenics-project/ufl
git clone https://bitbucket.org/fenics-project/ffc
git clone https://bitbucket.org/fenics-project/dolfin
git clone https://bitbucket.org/fenics-project/mshr
cd fiat    && pip3 install .
cd instant && pip3 install .
cd dijitso && pip3 install .
cd ufl     && pip3 install .
cd ffc     && pip3 install .
cd dolfin  && mkdir build && cd build && cmake .. && make install
cd mshr    && mkdir build && cd build && cmake .. && make install

centos7系统需要提前做好下面的事,才能编译源代码
配置python3
需要提前安装并配置好python3,可以参考这个链接进行安装,安装完毕后,将venv虚拟环境配置好。
此时激活虚拟环境后,需要用pip install .替换上述命令中的pip3 install .,因为虚拟环境是基于python3的,pip就是pip3,可以用 which pip进行查看。
如果是在国内进行安装,还可以使用tsinghua源进行加速。那么只需将pip install .替换为
pip install . -i https://pypi.tuna.tsinghua.edu.cn/simple some-package
具体可参考这里

配置cmake
cmake是自动化编译工具,类似make,cmake官网在此

  • 下载 CMake: https://cmake.org/download/
wget https://cmake.org/files/v3.11/cmake-3.11.0.tar.gz
  • 编译安装cmake
tar zxvf cmake-3.11.0.tar.gz && cd cmake-3.11.0
./bootstrap --prefix=/usr/local
make -j$(nproc)
make install
  • 验证安装是否成功
cmake --version

cmake version 3.11.0
CMake suite maintained and supported by Kitware (kitware.com/cmake).

配置boost
boost是一个强大的c++库,刚好FEniCS使用了其库,坑啊,官网完全没有提到这一点,都是实践中看到编译错误才知道的,看来官网并没有把编译安装看做是一个重要的安装途径。

  • 从官网下载boost: http://www.boost.org (选择你需要的版本)
wget https://cfhcable.dl.sourceforge.net/project/boost/boost/1.54.0/boost_1_54_0.tar.gz
wget https://phoenixnap.dl.sourceforge.net/project/boost/boost/1.58.0/boost_1_58_0.tar.gz
wget https://dl.bintray.com/boostorg/release/1.64.0/source/boost_1_64_0.tar.gz
wget https://dl.bintray.com/boostorg/release/1.65.1/source/boost_1_65_1.tar.gz
  • 解压缩
tar -xzf boost_1_*
cd boost_1_*
  • 引导和安装
./bootstrap.sh --prefix=/opt/boost
./b2 install --prefix=/opt/boost --with=all

之后,就可以顺利编译安装了。

集群安装探索

集群安装,最好是从源码安装,但是,源码安装的坑太多,难以实现,最好还是从docker想办法。
docker集群的解决方案之一是shifter,该文章提供了解决方案,但本人并未实践,仅供参考。

总结

从官网的配置来看,似乎docker安装是最可行的一条路(文档最全),建议新手从docker开始接触FEniCS。

你可能感兴趣的:(Coding,科学计算)