计算化学公社

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

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

[复制链接 Copy URL]

1242

帖子

1

威望

3672

eV
积分
4934

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

14

帖子

0

威望

601

eV
积分
615

Level 4 (黑子)

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

1

帖子

0

威望

65

eV
积分
66

Level 2 能力者

38#
发表于 Post on 2024-10-19 22:44:14 | 只看该作者 Only view this author
本帖最后由 chenmuyean 于 2024-10-19 22:45 编辑

博主您好,请问QE+ElaStic能否计算材料在不同温度和不同压强下的弹性常数,有没有什么参数可以设置的?网上的资料太少了,所以来请教您,望回复,感激不尽!

1242

帖子

1

威望

3672

eV
积分
4934

Level 6 (一方通行)

37#
 楼主 Author| 发表于 Post on 2023-6-9 11:57:07 | 只看该作者 Only view this author
牧生 发表于 2023-6-8 18:48
不知道能不能结合CP2K进行计算和分析呢

你给这个脚本添加上用cp2k算的功能就行

1481

帖子

0

威望

4552

eV
积分
6033

Level 6 (一方通行)

36#
发表于 Post on 2023-6-8 18:48:12 | 只看该作者 Only view this author
不知道能不能结合CP2K进行计算和分析呢
又菜又爱玩

1242

帖子

1

威望

3672

eV
积分
4934

Level 6 (一方通行)

34#
 楼主 Author| 发表于 Post on 2023-5-11 14:15:06 | 只看该作者 Only view this author
hdb 发表于 2023-5-11 11:13
是的,测试过了,没有出现2020版的bug

可以传上来,置个顶

14

帖子

0

威望

601

eV
积分
615

Level 4 (黑子)

33#
发表于 Post on 2023-5-11 11:13:19 | 只看该作者 Only view this author
biogon 发表于 2023-5-10 21:29
用了这个以后原始版本就能用了?

是的,测试过了,没有出现2020版的bug

1242

帖子

1

威望

3672

eV
积分
4934

Level 6 (一方通行)

32#
 楼主 Author| 发表于 Post on 2023-5-10 21:29:15 | 只看该作者 Only view this author
hdb 发表于 2023-5-10 11:32
Python提供了版本2to3的工具,一般叫做2to3.py,或者2to3-script.py,用以下命令转换一下2版本的脚本即可, ...

用了这个以后原始版本就能用了?

14

帖子

0

威望

601

eV
积分
615

Level 4 (黑子)

31#
发表于 Post on 2023-5-10 11:32:36 | 只看该作者 Only view this author
本帖最后由 hdb 于 2023-5-10 12:09 编辑

Python提供了版本2to3的工具,一般叫做2to3.py,或者2to3-script.py,用以下命令转换一下2版本的脚本即可,上述的2020版确实有bug,会导致重写已有card,自己转换下更合适。下面的命令2选1:
  1. 2to3 -w filename  # 需要用which 2to3确定PATH中有这个命令
复制代码
  1. python 2to3.py -w filename  #需要找到py文件的绝对路径
复制代码


评分 Rate

参与人数
Participants 1
eV +3 收起 理由
Reason
hdhxx123 + 3 谢谢

查看全部评分 View all ratings

14

帖子

0

威望

367

eV
积分
381

Level 3 能力者

30#
发表于 Post on 2021-12-23 20:46:02 | 只看该作者 Only view this author
biogon 发表于 2021-12-23 12:00
我用ElaStic算过BN,感觉结果还行

我还有一个问题。用ElaStic算二维材料,它本身用来算三维的,我们现在用它算二维,那材料的真空层设多大比较合适

14

帖子

0

威望

367

eV
积分
381

Level 3 能力者

29#
发表于 Post on 2021-12-23 20:42:56 | 只看该作者 Only view this author
biogon 发表于 2021-12-23 12:00
我用ElaStic算过BN,感觉结果还行

请问你算BN的时候,有没有遇到这样的问题。原始输入文件写的alat,但软件生成的那一些输入文件变成了cubic,这样对吗

1242

帖子

1

威望

3672

eV
积分
4934

Level 6 (一方通行)

28#
 楼主 Author| 发表于 Post on 2021-12-23 12:00:10 | 只看该作者 Only view this author
mxh 发表于 2021-12-23 10:51
请问大家,ElaStic和thermo_pw程序哪个能算二维材料的弹性常数。如果都不能的话,对接QE的哪个程序可以算二 ...

我用ElaStic算过BN,感觉结果还行

14

帖子

0

威望

367

eV
积分
381

Level 3 能力者

27#
发表于 Post on 2021-12-23 10:51:32 | 只看该作者 Only view this author
请问大家,ElaStic和thermo_pw程序哪个能算二维材料的弹性常数。如果都不能的话,对接QE的哪个程序可以算二维材料的弹性常数

14

帖子

0

威望

367

eV
积分
381

Level 3 能力者

26#
发表于 Post on 2021-12-23 10:43:26 | 只看该作者 Only view this author
请问大家,ElaStic和thermo_pw程序哪个能算二维材料的弹性常数。如果都不能的话,对接QE的哪个程序可以算二维材料的弹性常数

1242

帖子

1

威望

3672

eV
积分
4934

Level 6 (一方通行)

25#
 楼主 Author| 发表于 Post on 2021-12-21 20:15:58 | 只看该作者 Only view this author
mxh 发表于 2021-12-21 18:22
请问大家,我执行elastic_pwx_run.sh出现了图片上的错误,什么原因导致,怎样去解决

检查输入文件,看是不是有问题

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

GMT+8, 2025-8-18 01:36 , Processed in 0.275765 second(s), 33 queries , Gzip On.

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