什么是有限元框架 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 --versioncmake 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。

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

  1. 开源晶体塑性有限元软件DAMASK安装过程(ubuntu16.04和ABAQUS2017)

    1.简单说明 DAMASK软件主要由python写成,需要C/C++,Fortran等3种语言编译.据官网介绍,可以用商业ABAQUS和MSC.Marc/Mentat以及自身的Spectral sol ...

  2. Win7下使用U盘安装linux Ubuntu16.04双系统图文教程

    Win7下使用U盘安装linux Ubuntu16.04双系统图文教程 Ubuntu(友帮拓.优般图.乌班图)是一个以桌面应用为主的开源GNU/Linux操作系统,Ubuntu 是基于DebianGN ...

  3. 【Ubuntu】Ubuntu16.04+VMware+Win10安装及配置教程

    Ubuntu16.04+VMware+Win10安装及配置教程   前言:   我之所以使用Ubuntu16.4,既为学Linux操作,也为学习Python.Ubuntu16.4一直以来在虚拟机上都跑 ...

  4. 安装完Ubuntu16.04后要做的事

    安装好Ubuntu16.04后要做的事 更新软件源 软件源使用国内比较知名的软件源例如163,清华,中科大等的软件源这些软件源的访问速度在国内也是比较快的. sudo vim /etc/apt/sou ...

  5. ubuntu16.04 远程控制win10

    使用Teamviewer 最终目的是: ubuntu16.04 客户端 win10 服务器 ubuntu16.04我的是64位的,可以直接安装Teamviewer的32位包 teamviewer_12 ...

  6. win7+ubuntu16.04以及win10+ubuntu18.04双系统安装

    win7+ubuntu16.04以及win10+ubuntu18.04双系统安装 win7+ubuntu16.04以及win10+ubuntu18.04双系统安装 2020.8.8更新 2020.7. ...

  7. DELL T5820 Ubuntu16.04和Win10双系统安装中遇到的问题

    DELL T5820 Ubuntu16.04和Win10双系统安装中遇到的问题 Win10已安装,由于boot分配问题,现需要重新安装Ubuntu系统.在安装过程中遇到了以下几个问题: Q1:Lega ...

  8. TVM学习(一)安装TVM Ubuntu16.04安装TVM0.8+clang-llvm12.0

    TVM安装 ****下载TVM安装包地址(0.8版本缺少文件vta-hw) Download 一.从github上下载TVM git clone --recursive https://github. ...

  9. 【caffe2从头学】:1.2安装(Ubuntu16.04+GTx 1070Ti+cuda9.0+cudnn7.2+anaconda2+Python2.7+caffe2【Python版本】)

    本片文章是我的[caffe2从头学]系列中的一篇,如果想看其他文章,请看目录: 1.快速开始 1.1.什么是caffe2 ? 1.2.安装caffe2 1.3.安装容易出现的问题 2.学习caffe2 ...

最新文章

  1. OpenCV(十五)边缘检测1 -- Sobel算子(一阶微分算子,X、Y方向边缘检测)
  2. windows 10 +fedora双系统引导修复
  3. 关于“AI是不是胡扯”之争:这是中国科技圈的胜利
  4. jvm监控工具(排查内存溢出和内存泄漏)
  5. Effective Java之优先使用标准的异常(六十)
  6. hdmi接口有什么用_你的电脑为什么没有HDMI接口?
  7. word标题大纲级别_快速按标题层级把Word转Excel—附详细操作步骤
  8. Android 数据存储之SharedPreferences存储小记
  9. UNIX(进程间通信):05---守护进程
  10. 数据结构与算法-列表相关时间复杂度
  11. Tomcat 启动耗时严重
  12. 零基础如何考过二级建造师?
  13. springboot 整合 mvc 配置外部静态资源
  14. 百度语音识别结合云知声离线TTSDemo(AS)
  15. GCMail反垃圾邮件系统让企业远离垃圾邮件的困饶
  16. 进击的“懒人经济”,快手又迎来一个万亿蓝海市场
  17. STM32MP1如何让洗衣机操作界面更炫酷?
  18. c语言如何统计不同分数段学生人数,Excel统计不同班级各个分数段的学生人数的方法...
  19. Linux生成校验文件asc,使用 GnuPG 加密签名来验证下载文件的可靠性和完整性
  20. CHIP-seq流程学习笔记(3)-比对软件 bowtie2

热门文章

  1. 安卓 Native+Flutter 应用开发入门资料、亲身实战及踩坑记录
  2. [转载]Win 7 OS: ReadyFor4G使用方法
  3. 01_微信小程序-BLE低功耗蓝牙开发-注册和工具安装
  4. 韩国中央大学计算机专业,2020年韩国中央大学专业设置
  5. Concrete5建站
  6. 用java编写日历_如何用Java制作一个简易日历
  7. 用面向对象写一个通用爬虫模板
  8. 计算机圣诞节教案,幼儿园小班圣诞节教案
  9. 大容量充电宝哪种好?充电宝小巧容量大推荐
  10. beanstalkds文档