本帖最后由 biogon 于 2022-7-14 13:41 编辑
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的安装相当简单,下载压缩包,解压后,设置如下环境变量 - export ElaSticROOT=/home/$USER/software/ElaStic_1.1
- export PATH=/home/$USER /software/ElaStic_1.1:$PATH
复制代码环境变量根据自己情况可自行修改 ElaStic2020与此基本相同,不再赘述 1.3 garce 的安装 ElaStic1.1的可视化分析所需xmgrace,这个包一般系统是不自带的,且官方网站目前是无法下载到的,但是可以利用系统的包管理器一键安装。 - $ sudo apt-get install grace #Ubuntu
- $ sudo yum install grace #cent os
- $ sudo zypper install xmgrace #sles
复制代码即可成功安装,如无法安装请更新源。 1.4 Sgroup Sgroup是判断空间群的小工具,其在ElaStic文件夹中有一压缩包adon_v1_0.tar.gz,执行以下命令。 - $ tar -zxvf adon_v1_0.tar.gz
- $ cd SpaceGroups
- $ make
- $ cp sgroup ..
复制代码即可 至此所有的准备都已经完成,即可开始准备计算。 2. 开始计算 2.1 输入文件的准备 由于我们是使用QuantumEspresso和ElaStic计算,所以计算前需要新建文件夹叫***_2nd,在里面准备***.in这样的pw.x输入文件,内容如下: - &CONTROL
- calculation = 'relax'
- prefix = '****'
- outdir = './'
- pseudo_dir = '/……/pp'
- tprnfor = .true.
- forc_conv_thr = 1d-4
- tstress = .true.
- /
- &SYSTEM
- ibrav = 0
- nat = 2
- ntyp = 2
- ecutwfc = 40
- ecutrho = 200
- occupations = 'smearing'
- smearing = 'gaussian'
- degauss = 0.02
- celldm(1) = ****
- &ELECTRONS
- conv_thr = 1d-8
- /
- &IONS
- ion_dynamics = 'bfgs'
- /
- ATOMIC_SPECIES
- ** 1.0 **_ **.uspp.F.UPF
- ** 1.0 **_**.uspp.F.UPF
- ATOMIC_POSITIONS (crystal)
- ** 0.0000000000 0.0000000000 -0.0000000000
- ** 0.2500000000 0.2500000000 0.2500000000
- K_POINTS automatic
- ** ** ** ** ** **
- CELL_PARAMETERS (alat)
- 0.707107 0.707107 0.000000
- 0.000000 0.707107 0.707107
- 0.707107 0.000000 0.707107
复制代码需要注意一下,晶格常数必须使用alat表示的作为输入,celldm(1)是a.u.,否则最后结果是完全错误的。其他的内容根据自己的实际修改输入文件即可。 2.2 生成计算弹性常数的输入文件 使用ElaStic 1.1和Quantum Espresso的计算流程如下: - $ cd /$USER/……/***_2nd
- $ ElaStic_Setup
- Which DFT code would you like to apply for the calculations?
- exciting ---------=> 1
- WIEN2k ---------=> 2
- Quantum ESPRESSO --=> 3
- >>>> Please choose (1, 2, or 3): 3
- Energy ---=> 1
- Stress ---=> 2
- >>>> Please choose the method of the calculation (choose 1 or 2): 1
- 2nd ---=> 2
- 3rd ---=> 3
- >>>> Please choose the order of the ElaStic constant (choose 2 or 3): 2
- >>>> Please enter the name of the Quantum-ESPRESSO input file: ***.in
- Number and name of space group: 227 (F d -3 m) [origin choice 2]
- Cubic I structure in the Laue classification.
- This structure has 3 independent second-order ElaStic constants.
- >>>> Please enter the maximum Lagrangian strain
- The suggested value is between 0.030 and 0.150: 0.05
- The maximum Lagrangian strain is 0.09
- >>>> Please enter the number of the distorted structures [odd number > 4]: 15
- The number of the distorted structures is 15
- $
复制代码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之类的名字,写入如下内容 - #!/bin/bash
- label=`ls -d Dst??`
- for Dstn in $label ; do
- cd $Dstn
- Dstn_num_list=`ls -d ${Dstn}_??`
- for Dstn_num in $Dstn_num_list ; do
- cd $Dstn_num/
- for inf in *.in
- do
- echo Running ${inf} ...
- time pw.x < ${inf} > ${inf//in/out}
- echo ${inf} has finished
- echo
- done
- cd ../
- done
- cd ../
- done
复制代码如在超算等等特殊环境下运行,自行在#!/bin/bash后添加所需内容即可。 chmod+x对其赋予可执行权限,运行之,等待其运行完成即可进行分析。 4. 数据分析 本流程需要在有GUI机器或者GUI机器进行X11远程转发才可以进行,否则需要手动作图分析。 计算弹性常数的方法在Computer Physics Communications 184 (2013) 1861–1873 一文中有详细描述,在此不再复述。 执行 此时,屏幕上将自动出现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,其格式为: - Dst01 eta_max Fit_order
- Dst02 eta_max Fit_order
- Dst03 eta_max Fit_order
复制代码在此文件的每一行中,应为eta_max和Fit_order输入一个数值。根据前面各图的可视化分析结果,通过观察相应图的曲线收敛区域可得到这两个值:eta_max是位于曲线的收敛区域中的最大变形值,Fit_order代表收敛曲线的阶次。从上面可知,我们可以将ElaStic_2nd中的参数设置为如下的数值: - Dst01 0.05 4
- Dst02 0.05 4
- Dst03 0.05 6
复制代码现在,为了计算弹性常数和模量,执行ElaStic_Result 弹性常数将输出到文件ElaStic_2nd.out中。从中可以读取得到弹性常数和模量的数值。 - The output of ElaStic code
- Today is Mon May 10 10:38:45 2021
- Symmetry of the second-order elastic constant matrix in Voigt notation.
- for, space group-number between 207 and 230, Cubic I structure.
- C11 C12 C12 0 0 0
- C12 C11 C12 0 0 0
- C12 C12 C11 0 0 0
- 0 0 0 C44 0 0
- 0 0 0 0 C44 0
- 0 0 0 0 0 C44
- Elastic constant (stiffness) matrix in GPa:
- -0.0 0.0 0.0 0.0 0.0 0.0
- 0.0 -0.0 0.0 0.0 0.0 0.0
- 0.0 0.0 -0.0 0.0 0.0 0.0
- 0.0 0.0 0.0 0.0 0.0 0.0
- 0.0 0.0 0.0 0.0 0.0 0.0
- 0.0 0.0 0.0 0.0 0.0 0.0
- Elastic compliance matrix in 1/GPa:
- -42.97254 -5.76901 -5.76901 -0.00000 -0.00000 -0.00000
- -5.76901 -42.97254 -5.76901 -0.00000 -0.00000 -0.00000
- -5.76901 -5.76901 -42.97254 -0.00000 -0.00000 -0.00000
- 0.00000 0.00000 0.00000 204.08372 0.00000 0.00000
- 0.00000 0.00000 0.00000 0.00000 204.08372 0.00000
- 0.00000 0.00000 0.00000 0.00000 0.00000 204.08372
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- Voigt bulk modulus, B_V = -0.01 GPa
- Voigt shear modulus, G_V = -0.00 GPa
- Reuss bulk modulus, B_R = -0.01 GPa
- Reuss shear modulus, G_R = 0.01 GPa
- Hill bulk modulus, B_H = -0.01 GPa
- Hill shear modulus, G_H = 0.00 GPa
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- Voigt Young modulus, E_V = -0.01 GPa
- Voigt Poisson ratio, nu_V = 0.32
- Reuss Young modulus, E_R = 0.08 GPa
- Reuss Poisson ratio, nu_R = 2.64
- Hill Young modulus, E_H = 0.02 GPa
- Hill Poisson ratio, nu_H = 0.94
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- Elastic Anisotropy in polycrystalline, AVR = -158.322 %
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- Eigenvalues of elastic constant (stiffness) matrix:
- -0.0
- -0.0
- -0.0
- 0.0
- 0.0
- 0.0
- ... Have a G00D Day, Week, Month, Year, and Century (if you are lucky) ...
- Bye-Bye! Tschuess! Ciao! Poka! Zia Jian! KhodaHafez!
复制代码
如果得到的弹性常数和模量有负值存在,这说明计算可能出现了问题,应检查原始输入文件中的***.in中的各项参数是否正确。 大家有什么问题以及建议都可以在下面回复。
|