FEniCS安装教程官方网站:https://fenicsproject.org/download/
对于初入Linux的小白,可以根据本教程快速完成对fenics有限元框架的安装
第一步:创建root账户
## Ubuntu首次为root账户设置密码
sudo passwd root
然后会让你输入当前账户的密码,以及创建root账户的密码,并且确认。
第二步:Ubuntu更换国内镜像站的源,这里推荐阿里源或者中科大源
# 备份/etc/apt/sources.list文件
su
mv /etc/apt/sources.list /etc/apt/sources.list.backup
此时,sources.list文件已经变为空白
#修改sources.list文件
sudo gedit /etc/apt/sources.list
此时会自动弹出空白的sources.list文件。选择下面两个源中的一个,粘贴进入sources.list中保存即可
#南科大源
deb https://mirrors.sustech.edu.cn/ubuntu/ bionic main restricted universe multiverse
deb https://mirrors.sustech.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
deb https://mirrors.sustech.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
deb https://mirrors.sustech.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
deb https://mirrors.sustech.edu.cn/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src https://mirrors.sustech.edu.cn/ubuntu/ bionic main restricted universe multiverse
deb-src https://mirrors.sustech.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
deb-src https://mirrors.sustech.edu.cn/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src https://mirrors.sustech.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
deb-src https://mirrors.sustech.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
#中科大源
deb https://mirrors.ustc.edu.cn/ubuntu/ bionic main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ bionic main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ bionic-proposed main restricted universe multiverse
#阿里云源
deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
如果遇到:无法锁定管理目录(/var/lib/dpkg/),是否有其他进程正占用它?
尝试如下命令:
sudo rm /var/cache/apt/archives/lock
sudo rm /var/lib/dpkg/lock
此时,已经换源完成。
第三步:安装anaconda
前往anaconda官网download页面:https://www.anaconda.com/distribution/
下载最新版的anaconda安装文件,Linux对应的文件后缀名是.sh,复制进入自己现账户的根目录(~/home/username/)
然后打开终端,在其中输入如下命令:
bash Anaconda3-2020.02-Linux-x86_64.sh
安装完成后在终端输入:
sudo gedit ~/.bashrc
在弹出的文件最后添加:
export PATH="/home/xupp/anaconda3/bin:$PATH"
保存文件,关闭文件后在终端输入
source ~/.bashrc
此时可以在终端中输入python检查是否安装成功,如果出现如下所示的anaconda字样说明安装成功
username@computername:~$ python
Python 3.7.6 (default, Jan 8 2020, 19:59:22)
[GCC 7.3.0] :: Anaconda, Inc. on linux
Type "help", "copyright", "credits" or "license" for more information.
如果不懂得如何安装,可以参考https://blog.csdn.net/qq_15192373/article/details/81091098
重启终端后,用户名前会出现(base)字样,这是因为anaconda的base环境自启动了,可以通过如下命令关闭base环境自启动
## 永远关闭base环境自启动
conda config --set auto_activate_base false
## 只关闭本次自启动的base环境(事实上可以关闭任何已经进入的环境)
conda deactivate
此时,anaconda安装完成。
第四步:安装FEniCS有限元框架主体(请看完这一部分再动手安装)
执行如下命令:
conda create -n fenicsproject -c conda-forge fenics
等待安装完成后,可以尝试启动该环境:
source activate fenicsproject
或
conda activate fenicsproject
每一次当你需要调用fenics时,都需要执行conda activate fenicsproject命令。
或者将fenics安装进入base环境(优先推荐)
直接将fenics框架安装进入base环境中可以免去许多麻烦,例如:
采用如下命令
## 关闭任何已经打开的环境
conda deactivate
## 打开base环境
conda base activate
## base环境下安装fenics
conda install -c conda-forge fenics
这一步可能会卡在 conda solving environment这一步,可能的原因是conda版本过低,可以通过如下代码解决。
conda update -n base conda
# 或者
conda update --all
第五步:安装fenics所需要的库函数
## 安装python的各种库函数 numpy matplotlib pandas等
conda install numpy
conda install matplotlib
conda install pandas
一般情况下,anaconda新创建的fenicsproject环境会内置numpy库函数,采用如下命令检查是否已经内置
conda list
如果内置则只需要安装matplotlib和pandas,如果应用上述命令报错说不兼容或有冲突的话,更改为如下方式安装
## 安装python的各种库函数 numpy matplotlib pandas等
pip install numpy
pip install matplotlib
pip install pandas
如果是将fenics直接安装进入base环境,那么则需要全部安装三个库函数。
第六步:安装paraview后处理工具
sudo apt install paraview
第七步:安装mshr包
注意此时应该在自己创建的fenicsproject环境中或者是在base环境中
## 进入anaconda3目录
cd anaconda3
## 从GitHub上克隆mshr包的源代码
git clone https://bitbucket.org/fenics-project/mshr
注意:这一步需要将clone下来的mshr文件夹复制一份到home目录(也即主目录)下,防止在编译之后仍然报找不到模组的错误。
然后开始编译安装mshr包,首先检查cmake版本
## 检查cmake版本
cmake --version
截至目前,cmake的版本是3.19.1,较低的cmake版本(例如低于3.10.1)可能会导致后续报如下所示的错误
CMake Error: CMake was unable to find a build program corresponding to "Unix Makefiles". CMAKE_MAKE_PROGRAM is not set. You probably need to select a different build tool.
如果这个报错出现,那么大概率是由于cmake版本过低导致的,可以通过如下命令来解决。
sudo apt install cmake
在cmake版本没有问题的情况下,执行如下代码即可完成mshr包的安装。
## 编译安装mshr包
cd mshr
mkdir build
cd build
cmake ..
sudo make install
其中cmake ..这一步容易出现问题,假如出现projram killed error,不要灰心,重新执行cmake ..命令即可。
如果在make install这一步中报如下所示错误,
Install the project...
-- Install configuration: ""
-- Installing: /usr/local/lib/libmshr.so.2019.2.0.dev0
CMake Error at cmake_install.cmake:60 (file):
file INSTALL cannot copy file
"/home/username/anaconda3/mshr/build/libmshr.so.2019.2.0.dev0" to
"/usr/local/lib/libmshr.so.2019.2.0.dev0".
这是因为make安装时需要管理员权限,可以采用在make install前面加sudo解决。但是这也同时产生了问题,那就是sudo创建的文件,在本用户下是无法访问的,这也就导致build目录下的install_manifest.txt无法被访问,所以当调用的时候会报找不到模组的错误。
在终端中执行如下命令:其中username为你的用户名,chown的作用是改变文件的所有者。
sudo chown username install_manifest.txt
另一种比较原始的解决方案是(虽然看起来很低端,但是确实有效):
打开这个文件,将里面的内容复制出来到一个新的txt文件中,然后删除原本带锁的文件,将你新创建的文件重命名为install_manifest.txt即可,此时文件已经不带锁了。
检查mshr包是否安装完成:在命令行中输入如下命令:
python
from mshr import *
如果没有报错,说明mshr包已经安装完成。
第八步:安装Python IDE:jupyterLab / spyder
安装IDE时需要在激活的fenics环境中安装,否则即使安装成功也没有办法调用fenics
## 激活fenics环境(自己创建的新环境)
conda activate fenicsproject
## 安装jupyterLab
conda install jupyterLab
## 如果使用conda安装报错的话,尝试如下
pip install jupyterLab
## 安装完成后,尝试运行
jupyter lab
如果浏览器正常打开并且弹出jupyterlab的页面的话,说明安装成功
要注意jupyterlab可运行文件后缀名不是.py。如果需要运行Python程序,可能需要将代码复制到用jupyterlab创建的文件中。
这也是jupyterlab不如spyder的地方。
如果是在base环境中,可以安装spyder,代码如下
## 激活base环境
conda activate base
## 安装spyder
conda install spyder
或者进入 anaconda-navigator在图形化界面安装。
最后,感谢章肖阳师兄的帮助!
祝参考了本文的同学们/老师们都能够顺利的完成fenics框架的安装。
FEniCS框架安装完成后,想必各位小伙伴们都希望自己新装的Ubuntu系统能好看一些,请参考下面这篇文章:
《FEniCS应用(0):美观的界面可以大大提高编程效率——Ubuntu的界面美化》
或者阅读本系列的其他文章
《FEniCS应用(1.2):连续介质力学——有限变形下的弹性理论》
《FEniCS应用(1.3):Python基础语法》
(未完待续)
作者:
南方科技大学力学与航空航天工程系的刘亚卓,如果您有任何好的想法或者建议,欢迎与我进行交流。E-mail: [email protected]