1.简介

Ocotpus 是一款科学计算软件,可以对多种不同体系进行从头计算(ab initio)的模拟。在密度泛函理论(DFT)的理论框架下用量子力学来描述电子, 而核用经典的点粒子描述,电子-核相互作用以赝势近似来描述。Octopus可以进行基态计算,也可以利用时间密度泛函(TDDFT)进行时间依赖的模拟,。
Octopus 还支持MPI和OpenMP来进行并行计算,也支持OpenCL和CUDA利用GPU计算。Octopus是一款Linux系统下的免费软件,在GNU通用公共许可证框架下发布,你可以免费下载,使用,修改。
Octopus的安装过程比较复杂,因为它有很多依赖库。笔者根据octopus官网提供的详细安装指南,在此分享如何在个人计算机 Ubuntu18.04 系统中安装Octopus11.4串行(serial)版本的全过程。

2.1 编译器

Octopus的代码使用标准 Fortran 2003写成,还有一些例程(routines)是使用C语言编写,所以我们需要一个C编译器和Fortran 2003 编译器。命令行下直接使用apt命令安装即可。

$ sudo apt install gcc           #C 编译器
$ sudo apt install gfortran      #fortran 编译器

很多人系统中可能已经安装过这两个编译器,以C编译器gcc为例,若检查是否已经安装过gcc,可以输入以下命令:

gcc --version

意为查看gcc的版本,如果已经安装,则会输出相应版本号:

gcc (Ubuntu 7.4.0-1ubuntu1~18.04.1) 7.4.0
Copyright (C) 2017 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

2.2 编译器标志

通常编译器标志(Compiler flags)为系统自动选择的优化标志,但在安装Octopus过程中,需要我们指定标志,笔者亲测使用不同标志会导致安装报错。这里,C编译器标志指定为 -O3 -march=native (大写字母O),fortran编译器标志为 -O3 -ffree-line-length-none ,目前还不需要指定操作,在后面安装依赖库的时候才需要指定标志。

3.1 依赖库的安装

首先,make, automake, m4, libtool 这几个包是必要条件,可以直接用apt安装,包名–version 来检查是否安装成功。

sudo apt-get install make
sudo apt-get install automake
sudo apt-get install m4
sudo apt-get install libtool

其中make和automake是重要的编译工具,在linux环境下安装软件,一般都通过 配置->编译->安装 这个过程实现,即

./configure  ->  make  ->  make install

m4是是一个通用的宏处理器,大多数人需要 m4 仅仅是因为 GNU autoconf 中的 “configure” 脚本依赖它。
libtool是处理动态链接库的工具,可以解决库依赖的问题,将使用动态库的复杂性隐藏在统一、可移植的接口中。
接下来还有5个数学库:BLAS,LAPACK,GSL,FFTW3,LibXC,下面逐一介绍。

在安装数学库之前,我们先创建一个文件夹来作为octopus和各种库的安装位置,我们假设这个文件夹路径为 basedir ,别忘了在后文对这个文件夹进行操作时要将它换成你自己的路径,想安装在哪里都可以,例如,我的 basedir/home/chen/octopus/

3.2 BLAS

BLAS (Basic Linear Algebra Subprograms)即基本线性代数子程序,提供用于执行基本矢量和矩阵运算的标准构建块的例程。
1级BLAS执行标量,矢量和矢量-矢量运算,2级BLAS执行矩阵矢量运算,3级BLAS执行矩阵运算。 由于BLAS高效,便携且广泛可用,因此它们通常用于开发高质量线性代数软件,例如LAPACK。
首先在网上下载压缩包:http://www.netlib.org/blas/blas-3.10.0.tgz
解压压缩包并进入新创建的 BLAS 文件夹
编辑 make.inc 文件,并修改fortran编译器的标志为:

FC  = gfortran -m64
FFLAGS = -O3 -ffree-line-length-none
FFLAGS_DRV = $(FFLAGS)
FFLAGS_NOOPT =
LOADER = gfortran
LOADOPTS =

接下来使用 make 命令来进行编译,这会花费一段时间。

make

然后在octopus安装路径下创建新文件夹 lib,注意将 basedir 换成你自己的安装路径。

mkdir basedir/lib

将make命令后新产生的文件 blas_LINUX.a 复制到 basedir/lib/ 文件夹下并重命名

cp  blas_LINUX.a   basedir/lib/libblas.a

注:产生的新文件总是叫 blas_LINUX.a ,独立于你所用的操作系统,只是叫这个名字而已。

3.3 LAPACK

Lapack 即 Linear Algebra PACKage,是一个线性代数包,它提供了求解联立线性方程组,线性方程组最小二乘解,特征值问题和奇异值问题的例程,还提供了相关的矩阵因子分解(LU,Cholesky,QR,SVD,Schur,广义Schur),以及相关计算。
首先在网上下载压缩包:https://github.com/Reference-LAPACK/lapack/archive/refs/tags/v3.10.0.tar.gz
解压压缩包并进入新产生的 lapack 文件夹
复制 make.inc.example 文件为 make.inc

cp make.inc.example  make.inc

编辑 make.inc 文件,并修改相应编译器的标志为:

FC = gfortran -m64
FFLAGS = -O3 -ffree-line-length-none
FFLAGS_DRV = $(FFLAGS)
FFLAGS_NOOPT =
LOADER = gfortran
LOADOPTS =

接下来使用 make lib 命令来进行编译,这会花费一段时间。

make lib

将新产生的文件 lapack_LINUX.a 复制到 basedir/lib/ 文件夹下并重命名

cp   lapack_LINUX.a   basedir/lib/liblapack.a

注:产生的新文件可能叫 lapack_LINUX.a(官方教程产生的) ,也可能叫 lapack.a or liblapack.a(笔者电脑产生的)

3.4 GSL

这是一个GNU数学函数库,该库提供了广泛的数学例程,如随机数生成器,特殊函数和最小二乘拟合。
首先下载压缩包 https://mirror.ibcp.fr/pub/gnu/gsl/gsl-latest.tar.gz

解压压缩包并进入新产生的文件夹
运行配置文件:

./configure CC="gcc -m64" --prefix=basedir --disable-shared --enable-static

注:configure命令的参数解释之 --prefix: 该参数指定了安装路径,这里我们把库安装在之前设好的 baseidr 下,并非是下载解压缩库后所形成的的新文件夹。
编译并安装

make
make install

3.5 FFTW 3

FFTW(the Fastest Fourier Transform in the West)是一个C子程序库,用于计算一个或多个维度,任意输入大小,实数和复数数据的离散傅里叶变换(DFT)

首先下载压缩包 www.fftw.org/fftw-3.3.10.tar.gz
解压压缩包并进入新产生的文件夹
配置

./configure  --prefix=basedir  CC="gcc -m64" CFLAGS="-O3 -march=native" F77="gfortran  -m64" F77FLAGS="-O3 -ffree-line-length-none"

编译并安装

make
make install

3.6 LibXC

这是一个密度泛函理论(DFT)的交换关联泛函库,其中你可以找到不同类型的泛函,例如:LDA, GGA, hybrids, 和 mGGA。 Libxc库也可以用于Abinit软件,目前最新版本为4.3.4。
首先下载压缩包 www.tddft.org/programs/libxc/down.php?file=5.2.2/libxc-5.2.2.tar.gz
解压压缩包并进入新产生的文件夹
配置

 ./configure --prefix=basedir CC="gcc -m64" CFLAGS="-O3 -march=native" FC="gfortran -m64" FCFLAGS="-O3 -ffree-line-length-none"

If you’re not using a stable release tarball, you’ll first need to generate configure with autoreconf -i.

编译并安装

make
make install

4.1 Octopus 安装

编译完这些库后,我们可以开始编译Octopus了
首先下载最新版本的Octopus-11.4 : octopus-code.org/down.php?file=11.4/octopus-11.4.tar.gz
解压压缩包并进入新产生的文件夹
定义几个环境变量,用来写配置脚本:

export LIBS_BLAS=basedir/lib/libblas.a
export LIBS_LAPACK=basedir/lib/liblapack.a
export LIBS_FFT=basedir/lib/libfftw3.a

接下来写配置脚本:

autoreconf -i
./configure CC="gcc -m64" CFLAGS="-O3 -march=native" FC="gfortran -m64" FCFLAGS="-O3 -ffree-line-length-none" --prefix=basedir  --with-gsl-prefix=basedir --with-libxc-prefix=basedir  --with-fftw-prefix=basedir

注:configure命令的参数解释之 --with :该参数指定了配置文件时去哪里寻找对应的库
注: ./configure -h
编译并安装

make
make install

如果一切都进展顺利的话,Octopus应该会成功安装在你一开始设定的 basedir 文件夹内,可执行文件放在 basedir/bin/ 文件夹内,接下来将其路径添加到环境变量里(临时设置),以便你可以只输入 octopus 就可运行, 而非 每次都要输入 basedir/bin/octopus 才行。

export PATH=$PATH:basedir/bin/octopus

也可以永久设置环境变量, 通过修改 ~/..bashrc 文件

cd ~
vim .bashrc

在里面加入:

export PATH="$PATH:basedir/bin/octopus"

重启生效

source .bashrc

4.2 简单例子运行测试

新建一空文件夹并进入,建立一个文件,命名为 inp ,并将其内容编辑为:

CalculationMode = gs%Coordinates'H' | 0 | 0 | 0
%

注:文件只能命名为 inp, octopus 只识别这个输入文件名
接下来试运行:

octopus &> output

即可运行octopus并将输出结果重定向到新建的 output 文件中。
若只运行:

octopus

则输出会在屏幕上实时显示。

TDDFT计算软件Octopus学习笔记(一):Ubuntu下Octopus的安装相关推荐

  1. sublime 学习笔记之ubuntu下让sublime text 3成为默认编辑器

    在ubuntu下,gedit编辑器用得并不顺手,想让sublime text 3成为默认的编辑器. sublime text 3的ubuntu安装教程为官方教程 $wget -qO - https:/ ...

  2. python import readline_Python学习笔记6(Windows下readline模块安装)

    今天在windows下学实例的时候,发现一个问题,提示错误,no module named readline!随即问了度娘,发现需要装上 IPython,这是一个增强版的Shell.比Python自带 ...

  3. pip 安装 tensorflow_TensorFlow 学习笔记2-1:ubuntu下安装pip3amp;tensorflowamp;opencv

    项目计划:在ubuntu环境中安装Tensorflow,opencv等机器学习的环境 项目实施:本次采用pip安装方式,安装Tensorflow和opencv 项目步骤: 安装pip sudo apt ...

  4. 深度学习笔记之win7下TensorFlow的安装

    最近要学习神经网络相关的内容,所以需要安装TensorFlow.不得不说,安装TensorFlow的感受就像是大一刚入学学习C语言时,安装vs时一样,问题一大堆,工具都装不好,还学啥呀.好在,就在昨晚 ...

  5. Python学习笔记之Windows下通过pip安装Django详细介绍

    1.首先,你得先安装好Python,然后用pip安装Django的时候就会自动安装相对应的版本,首先,windows+R组合键输入cmd打开命令行窗口,输入下面命令: pip install djan ...

  6. Python学习笔记之Windows下通过pip安装PyMySQL

    1.PyMySQL介绍 PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服务器的一个库,PyMySQL 遵循 Python 数据库 API v2.0 规范,并包含了 pure-P ...

  7. 【软考中级】软件设计师学习笔记

    软件设计师学习笔记 计算机系统知识 程序语言设计 数据结构 操作系统 软件工程基础知识 结构化开发方法 创建型设计模式 行为型设计模式 结构型设计模式: 算法设计与分析 数据库技术基础 网络与信息安全 ...

  8. 软件设计模式学习笔记(七)

    软件设计模式学习笔记(七) 结构型模式 1. 组合模式 1.1 概述 ​ 对于这个图片肯定会非常熟悉,上图我们可以看做是一个文件系统,对于这样的结构我们称之为树形结构.在树形结构中可以通过调用某个方法 ...

  9. 三代组装软件canu学习笔记

    三代组装软件canu学习笔记 (2017-08-07 14:17:43) 转载▼   分类: 三代 1:这个组装软件起源于PBcR包含在Celera Assembler中(http://wgs-ass ...

  10. 软件调试学习笔记(七)—— 单步步入单步步过

    软件调试学习笔记(七)-- 单步步入&单步步过 单步步入 设置单步异常 处理单步异常 实验1:单步异常的设置与处理 单步步过 实现思路 实验2:实现单步步过 单步步入 描述: 单步步入的实现依 ...

最新文章

  1. 江苏省三级偏硬考核重点
  2. 怎样在Excel里第一格设计斜线表头
  3. 洛谷P1090 合并果子
  4. Java中的Volatile如何工作? Java中的volatile关键字示例
  5. 在vue中操作DOM--this.$nextTick()
  6. 十一:贪心算法-寻找硬币
  7. perl 包下载官方网站(速度很快的) 和 解压安装指令
  8. apache   和Tomcat的区别
  9. Ogre实现简单地形
  10. 问题-Ctrl+F7跟踪值时提示“Function to be called, TGGLPolyhedron3d.AsString, was eliminated by linker”...
  11. 对数—行列式函数的分析
  12. 王垠系列博文(题名外挂URL)
  13. docker端口映射无法访问的解决
  14. 计算机存储器与寄存器的区别,存储器与寄存器的区别
  15. x的x分之一次方极限x趋于0_e的x分之一的左右极限
  16. 你还在为高速停车收费而烦恼吗?现已步入高速行ETC智慧交通时代
  17. 移动换H5 の 纯CSS3实现大转盘抽奖布局 by FungLeo
  18. 手机手写签名 php,基于canvas实现手写签名(vue)
  19. 计算机应用数值,数值计算和计算机应用.pdf
  20. 只转不评:112家IT公司薪水一览表

热门文章

  1. 修改app应用的图标与名字
  2. Python 树莓派 引脚
  3. mysql 嵌套查询优化_MySQL——优化嵌套查询和分页查询
  4. c语言计算一个三位数的个十百位之和_C语言的那些经典程序
  5. [.NET] ConfuserEx脱壳工具打包
  6. RSD的遥感图像合成工具
  7. 通用计算机实习周记,实习周记100篇通用版|绘图员实习周记范文
  8. 美洽客服-移动应用 SDK for iOS开发指南
  9. 一个基于ATMEGA128的直流电机抱死程序
  10. NotifyIcon用法