FEniCS应用(0):初入Linux,如何在Ubuntu18.04上通过anaconda安装FEniCS有限元框架

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环境中可以免去许多麻烦,例如:

  • spyder安装进其他环境报错的问题
  • 应用conda install安装库函数时可能出现的不兼容问题(如下方第五步所讲)

采用如下命令

## 关闭任何已经打开的环境
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

另一种比较原始的解决方案是(虽然看起来很低端,但是确实有效):

FEniCS应用(0):初入Linux,如何在Ubuntu18.04上通过anaconda安装FEniCS有限元框架_第1张图片

打开这个文件,将里面的内容复制出来到一个新的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]

你可能感兴趣的:(FEniCS,Python,有限元,矩阵,ubuntu,python)