计算化学公社

 找回密码 Forget password
 注册 Register
Views: 31041|回复 Reply: 37
打印 Print 上一主题 Last thread 下一主题 Next thread

[其它程序] 使用ElaStic和Quantum Espresso计算弹性常数与模量

[复制链接 Copy URL]

1236

帖子

1

威望

3495

eV
积分
4751

Level 6 (一方通行)

本帖最后由 biogon 于 2022-7-14 13:41 编辑

      关于如何使用ElaStic和exciting计算弹性常数和模量,在http://exciting.wikidot.com/carbon-ElaStic已经有了教程,但是此教程在使用Quantum Espresso计算弹性模量时很多东西是不适用的,故因此写本教程。
1.   计算前准备(默认已经安装好Quantum Espresso)
1.1 ElaStic版本与依赖库的选择
ElaStic最初的版本是基于python2.*环境下运行的,最新版本为ElaStic 1.1,后来有人基于python 3.*环境重写了该程序,称为ElaStic 2020 其可在python 3.* 环境下运行。二者均需要numpy才可运行。已安装anaconda python 3的使用者可以同时安装python 2.* 版本的运行环境,使用时激活即可,在此不再赘述。
1.2 ElaStic 的安装
ElaStic 1.1的安装相当简单,下载压缩包,解压后,设置如下环境变量
  1. export ElaSticROOT=/home/$USER/software/ElaStic_1.1
  2. export PATH=/home/$USER /software/ElaStic_1.1:$PATH
复制代码
环境变量根据自己情况可自行修改
ElaStic2020与此基本相同,不再赘述
1.3 garce 的安装
ElaStic1.1的可视化分析所需xmgrace,这个包一般系统是不自带的,且官方网站目前是无法下载到的,但是可以利用系统的包管理器一键安装。
  1. $ sudo apt-get install grace  #Ubuntu
  2. $ sudo yum install grace  #cent os
  3. $ sudo zypper install xmgrace  #sles
复制代码
即可成功安装,如无法安装请更新源。
1.4  Sgroup
Sgroup是判断空间群的小工具,其在ElaStic文件夹中有一压缩包adon_v1_0.tar.gz,执行以下命令。
  1. $ tar -zxvf adon_v1_0.tar.gz
  2. $ cd SpaceGroups
  3. $ make
  4. $ cp sgroup ..
复制代码
即可
至此所有的准备都已经完成,即可开始准备计算。
2.   开始计算
2.1 输入文件的准备
由于我们是使用QuantumEspresso和ElaStic计算,所以计算前需要新建文件夹叫***_2nd,在里面准备***.in这样的pw.x输入文件,内容如下:
  1. &CONTROL
  2.    calculation      = 'relax'
  3.    prefix           = '****'
  4.    outdir           = './'
  5.    pseudo_dir       = '/……/pp'
  6.    tprnfor          = .true.
  7.    forc_conv_thr    = 1d-4
  8.    tstress          = .true.
  9. /
  10. &SYSTEM
  11.    ibrav            = 0
  12.    nat              = 2
  13.    ntyp             = 2
  14.    ecutwfc          = 40
  15.    ecutrho          = 200
  16.    occupations      = 'smearing'
  17.    smearing         = 'gaussian'
  18.    degauss          = 0.02
  19.    celldm(1)         = ****
  20. &ELECTRONS
  21.    conv_thr         = 1d-8
  22. /
  23. &IONS
  24.    ion_dynamics     = 'bfgs'
  25. /
  26. ATOMIC_SPECIES
  27.    ** 1.0 **_ **.uspp.F.UPF
  28.    **  1.0 **_**.uspp.F.UPF
  29. ATOMIC_POSITIONS (crystal)
  30. **            0.0000000000        0.0000000000       -0.0000000000
  31. **            0.2500000000        0.2500000000        0.2500000000
  32. K_POINTS automatic
  33. ** ** ** ** ** **
  34. CELL_PARAMETERS (alat)
  35. 0.707107   0.707107   0.000000
  36. 0.000000   0.707107   0.707107
  37. 0.707107   0.000000   0.707107
复制代码
需要注意一下,晶格常数必须使用alat表示的作为输入,celldm(1)是a.u.,否则最后结果是完全错误的。其他的内容根据自己的实际修改输入文件即可。
2.2 生成计算弹性常数的输入文件
使用ElaStic 1.1和Quantum Espresso的计算流程如下:
  1. $ cd /$USER/……/***_2nd
  2. $ ElaStic_Setup

  3.      Which DFT code would you like to apply for the calculations?
  4.      exciting  ---------=>  1                                    
  5.      WIEN2k    ---------=>  2                                    
  6.      Quantum ESPRESSO --=>  3

  7. >>>> Please choose (1, 2, or 3): 3

  8.      Energy  ---=>  1           
  9.      Stress  ---=>  2   
  10. >>>> Please choose the method of the calculation (choose 1 or 2): 1

  11.      2nd  ---=>  2           
  12.      3rd  ---=>  3   
  13. >>>> Please choose the order of the ElaStic constant (choose 2 or 3): 2

  14. >>>> Please enter the name of the Quantum-ESPRESSO input file: ***.in         

  15.      Number and name of space group: 227 (F d -3 m) [origin choice 2]      
  16.      Cubic I structure in the Laue classification.      
  17.      This structure has 3 independent second-order ElaStic constants.

  18. >>>> Please enter the maximum Lagrangian strain
  19.      The suggested value is between 0.030 and 0.150: 0.05
  20.      The maximum Lagrangian strain is 0.09

  21. >>>> Please enter the number of the distorted structures [odd number > 4]: 15
  22.      The number of the distorted structures is 15

  23. $
复制代码
1.    3 选择你所用的计算程序
2.    1 选择使用能量还是应力计算弹性常数
3.    2 选择要计算感兴趣的弹性常数的阶数
4.    ***.in,你的原始输入文件的名称
5.    0.09,我们要对其进行计算的最大应变的绝对值
6.    15 在最大负应变和最大正应变之间产生的,等距分布的变形结构的数量。
最后该脚本会生成一些新目录和文件,可以使用ls命令查看。
ElaStic 2020 的使用流程基本与此相同,除了一开始不用选择计算程序,如果你只装了Quantum Espresso。
3.   进行计算
在原始输入文件***.in所在目录***_2nd下新建一个shell脚本命名为诸如elastic_pwx_run.sh之类的名字,写入如下内容
  1. #!/bin/bash
  2. label=`ls -d Dst??`
  3. for Dstn in $label ; do
  4.     cd $Dstn
  5.     Dstn_num_list=`ls -d ${Dstn}_??`
  6.     for Dstn_num in $Dstn_num_list ; do
  7.         cd $Dstn_num/
  8.           for inf in *.in
  9.           do
  10.           echo Running ${inf} ...
  11.           time  pw.x < ${inf} > ${inf//in/out}
  12.           echo ${inf} has finished
  13.           echo
  14.           done
  15.         cd ../
  16.     done
  17.     cd ../
  18. done
复制代码
如在超算等等特殊环境下运行,自行在#!/bin/bash后添加所需内容即可。
chmod+x对其赋予可执行权限,运行之,等待其运行完成即可进行分析。
4.   数据分析
本流程需要在有GUI机器或者GUI机器进行X11远程转发才可以进行,否则需要手动作图分析。
这里以http://exciting.wikidot.com/carbon-elastic的图作为示例进行讲解。
计算弹性常数的方法在Computer Physics Communications 184 (2013) 1861–1873 一文中有详细描述,在此不再复述。
执行
  1. $ ElaStic_Analyze
复制代码
此时,屏幕上将自动出现xmgrace图
三图分别为Dst01、Dst02、Dst03的d2E-η 关系图
如果发现任何曲线都无收敛趋势,则应继续增大变形结构的数目,否则最后的结果误差会较大。
通过分析Dst01的第一个图,我们注意到4阶多项式的曲线显示出在4060-4080 GPa处收敛的趋势。从拟合的角度来看,可以将其假定为二阶导数的收敛值。对于这种变形类型,此值等于体积模量的9倍。因此,体积模量的值为451-453GPa。
ElaStic_Analyze将生成文件ElaStic_2nd.in,在接下来的部分中用于计算模量用。
如何手动读取数据分析?运行完ElaStic_Analyze会在/....../***_2nd目录下生成Energy-vs-Strain文件夹一个,里面有Dst**_d2e.dat,这个就是上述图的数据的原始文件,可以提取里面的数据自行作图或直接肉眼观察是否收敛
5.   数据后处理
为了获得二阶弹性常数的数值,需要进行如下步骤进行分析。
第一步是编辑文件ElaStic_2nd.in,其格式为:
  1. Dst01     eta_max     Fit_order
  2. Dst02     eta_max     Fit_order
  3. Dst03     eta_max     Fit_order
复制代码
在此文件的每一行中,应为eta_max和Fit_order输入一个数值。根据前面各图的可视化分析结果,通过观察相应图的曲线收敛区域可得到这两个值:eta_max是位于曲线的收敛区域中的最大变形值,Fit_order代表收敛曲线的阶次。从上面可知,我们可以将ElaStic_2nd中的参数设置为如下的数值:
  1. Dst01     0.05     4
  2. Dst02     0.05     4
  3. Dst03     0.05     6
复制代码
现在,为了计算弹性常数和模量,执行ElaStic_Result
  1. $ ElaStic_Result
复制代码
弹性常数将输出到文件ElaStic_2nd.out中。从中可以读取得到弹性常数和模量的数值。
  1.     The output of ElaStic code                                             
  2.     Today is Mon May 10 10:38:45 2021

  3.     Symmetry of the second-order elastic constant matrix in Voigt notation.
  4.     for, space group-number between 207 and 230, Cubic I structure.        

  5.                C11     C12     C12      0       0       0                  
  6.                C12     C11     C12      0       0       0                  
  7.                C12     C12     C11      0       0       0                  
  8.                 0       0       0      C44      0       0                  
  9.                 0       0       0       0      C44      0                  
  10.                 0       0       0       0       0      C44                 

  11.     Elastic constant (stiffness) matrix in GPa:                             

  12.         -0.0         0.0         0.0         0.0         0.0         0.0
  13.          0.0        -0.0         0.0         0.0         0.0         0.0
  14.          0.0         0.0        -0.0         0.0         0.0         0.0
  15.          0.0         0.0         0.0         0.0         0.0         0.0
  16.          0.0         0.0         0.0         0.0         0.0         0.0
  17.          0.0         0.0         0.0         0.0         0.0         0.0


  18.     Elastic compliance matrix in 1/GPa:

  19.    -42.97254    -5.76901    -5.76901    -0.00000    -0.00000    -0.00000
  20.     -5.76901   -42.97254    -5.76901    -0.00000    -0.00000    -0.00000
  21.     -5.76901    -5.76901   -42.97254    -0.00000    -0.00000    -0.00000
  22.      0.00000     0.00000     0.00000   204.08372     0.00000     0.00000
  23.      0.00000     0.00000     0.00000     0.00000   204.08372     0.00000
  24.      0.00000     0.00000     0.00000     0.00000     0.00000   204.08372

  25. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

  26.     Voigt bulk  modulus, B_V =    -0.01  GPa
  27.     Voigt shear modulus, G_V =    -0.00  GPa

  28.     Reuss bulk  modulus, B_R =    -0.01  GPa
  29.     Reuss shear modulus, G_R =     0.01  GPa

  30.     Hill bulk  modulus,  B_H =    -0.01  GPa
  31.     Hill shear modulus,  G_H =     0.00  GPa

  32. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

  33.     Voigt Young modulus,  E_V =    -0.01  GPa
  34.     Voigt Poisson ratio, nu_V =     0.32

  35.     Reuss Young modulus,  E_R =     0.08  GPa
  36.     Reuss Poisson ratio, nu_R =     2.64

  37.     Hill Young modulus,   E_H =     0.02  GPa
  38.     Hill Poisson ratio,  nu_H =     0.94

  39. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

  40.     Elastic Anisotropy in polycrystalline, AVR = -158.322 %

  41. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

  42.     Eigenvalues of elastic constant (stiffness) matrix:   

  43.             -0.0
  44.             -0.0
  45.             -0.0
  46.              0.0
  47.              0.0
  48.              0.0

  49.     ... Have a G00D Day, Week, Month, Year, and Century (if you are lucky) ...   
  50.                Bye-Bye! Tschuess! Ciao! Poka! Zia Jian! KhodaHafez!
复制代码

如果得到的弹性常数和模量有负值存在,这说明计算可能出现了问题,应检查原始输入文件中的***.in中的各项参数是否正确。
大家有什么问题以及建议都可以在下面回复。


评分 Rate

参与人数
Participants 12
威望 +1 eV +45 收起 理由
Reason
chenmuyean + 3 牛!
ZCSco + 5 谢谢
hdb + 5 谢谢分享
ShengLin + 2
ChemG + 5 牛!
Aridea + 3 谢谢
ABetaCarw + 5 好物!
hit_liaols + 3 好物!
yuxu1994 + 4 好物!
hebrewsnabla + 5 GJ!
hdhxx123 + 5 sob后第一!
sobereva + 1 精品内容

查看全部评分 View all ratings

13

帖子

0

威望

558

eV
积分
571

Level 4 (黑子)

来自 35#
发表于 Post on 2023-5-11 14:45:03 | 只看该作者 Only view this author

7

帖子

0

威望

240

eV
积分
247

Level 3 能力者

2#
发表于 Post on 2021-5-25 13:27:42 | 只看该作者 Only view this author
@kyuu 来来来

34

帖子

0

威望

217

eV
积分
251

Level 3 能力者

3#
发表于 Post on 2021-10-16 13:53:42 | 只看该作者 Only view this author
请问下,我按照教程,安装成功之后。执行ElaStic_Setup 脚本发现生成的输入文件中出现重复的原子坐标和k点,这是为什么呢?我删除软件又装还是这样。

202110161353386929..png (28.4 KB, 下载次数 Times of downloads: 35)

202110161353386929..png

1236

帖子

1

威望

3495

eV
积分
4751

Level 6 (一方通行)

4#
 楼主 Author| 发表于 Post on 2021-10-16 20:59:46 | 只看该作者 Only view this author
ZZG 发表于 2021-10-16 13:53
请问下,我按照教程,安装成功之后。执行ElaStic_Setup 脚本发现生成的输入文件中出现重复的原子坐标和k点 ...

原始的输入文件咋写的

34

帖子

0

威望

217

eV
积分
251

Level 3 能力者

5#
发表于 Post on 2021-10-17 17:28:52 | 只看该作者 Only view this author
这是我的原始输入文件。现在是celldm(1)出现重复,其他的好了、

202110171726373450..png (38.6 KB, 下载次数 Times of downloads: 40)

原始文件

原始文件

202110171728416625..png (31.66 KB, 下载次数 Times of downloads: 30)

生成文件

生成文件

34

帖子

0

威望

217

eV
积分
251

Level 3 能力者

6#
发表于 Post on 2021-10-17 17:29:43 | 只看该作者 Only view this author
biogon 发表于 2021-10-16 20:59
原始的输入文件咋写的

您好,我的文件上传了,请看一下

34

帖子

0

威望

217

eV
积分
251

Level 3 能力者

7#
发表于 Post on 2021-10-20 20:43:20 | 只看该作者 Only view this author
请问下,我在执行ElaStic_Analyze的时候一直出现这种报错是为什么呢?

202110202042445027..png (17.02 KB, 下载次数 Times of downloads: 32)

202110202042445027..png

202110202043189005..png (16.54 KB, 下载次数 Times of downloads: 31)

202110202043189005..png

1236

帖子

1

威望

3495

eV
积分
4751

Level 6 (一方通行)

8#
 楼主 Author| 发表于 Post on 2021-10-21 08:44:25 | 只看该作者 Only view this author
ZZG 发表于 2021-10-20 20:43
请问下,我在执行ElaStic_Analyze的时候一直出现这种报错是为什么呢?

你用的是基于python3的elastic2020么?

34

帖子

0

威望

217

eV
积分
251

Level 3 能力者

9#
发表于 Post on 2021-10-21 09:26:00 | 只看该作者 Only view this author
biogon 发表于 2021-10-21 08:44
你用的是基于python3的elastic2020么?

是的,问了一些人,有的人说下载的ElaStic脚本有问题,我就是在楼主的链接里下载的

1236

帖子

1

威望

3495

eV
积分
4751

Level 6 (一方通行)

10#
 楼主 Author| 发表于 Post on 2021-10-21 10:53:20 | 只看该作者 Only view this author
ZZG 发表于 2021-10-21 09:26
是的,问了一些人,有的人说下载的ElaStic脚本有问题,我就是在楼主的链接里下载的

这个玩意我后来发现有bug,还没空检查bug在哪,改用基于python2的elastic1.1就没有问题

34

帖子

0

威望

217

eV
积分
251

Level 3 能力者

11#
发表于 Post on 2021-10-21 15:22:35 | 只看该作者 Only view this author
biogon 发表于 2021-10-21 10:53
这个玩意我后来发现有bug,还没空检查bug在哪,改用基于python2的elastic1.1就没有问题

嗯嗯,我又在重新看作者写的文章,看能不能用elastic1.1.请问下,在使用之前是不是要进行这样的配置环境呀?

34

帖子

0

威望

217

eV
积分
251

Level 3 能力者

12#
发表于 Post on 2021-10-21 15:23:25 | 只看该作者 Only view this author
就是这样路径的添加

202110211522567480..png (134.58 KB, 下载次数 Times of downloads: 32)

202110211522567480..png

1236

帖子

1

威望

3495

eV
积分
4751

Level 6 (一方通行)

13#
 楼主 Author| 发表于 Post on 2021-10-21 15:28:42 | 只看该作者 Only view this author
ZZG 发表于 2021-10-21 15:23
就是这样路径的添加

你仔细看下我写的就能明白elastic2020和1.1的配置几乎是无差别的,这个是exciting程序的环境变量的配置,不是elastic1.1的

34

帖子

0

威望

217

eV
积分
251

Level 3 能力者

14#
发表于 Post on 2021-10-25 18:56:48 | 只看该作者 Only view this author
请问下,我设置扭曲程度到最大0.15,为什么之后的Dst-3最后不收敛呢?我是应该去前面的最大扭曲吗?还是Dst-3扭曲方式就无法最后收敛呢?我设置0.05扭曲最后基本都收敛了。

202110251835292340..png (19.16 KB, 下载次数 Times of downloads: 29)

Dst-1

Dst-1

202110251836154228..png (21.94 KB, 下载次数 Times of downloads: 31)

Dst-2

Dst-2

202110251836436830..png (20.21 KB, 下载次数 Times of downloads: 32)

Dst-3

Dst-3

1236

帖子

1

威望

3495

eV
积分
4751

Level 6 (一方通行)

15#
 楼主 Author| 发表于 Post on 2021-10-26 09:37:26 | 只看该作者 Only view this author
ZZG 发表于 2021-10-25 18:56
请问下,我设置扭曲程度到最大0.15,为什么之后的Dst-3最后不收敛呢?我是应该去前面的最大扭曲吗?还是Dst- ...

感觉变形量设的太高了,一般0.09就差不多了,如果你不想重算的话就Dst03把2视作是收敛的,看结果误差如何

本版积分规则 Credits rule

手机版 Mobile version|北京科音自然科学研究中心 Beijing Kein Research Center for Natural Sciences|京公网安备 11010502035419号|计算化学公社 — 北京科音旗下高水平计算化学交流论坛 ( 京ICP备14038949号-1 )|网站地图

GMT+8, 2024-11-23 09:55 , Processed in 0.193059 second(s), 27 queries , Gzip On.

快速回复 返回顶部 返回列表 Return to list