2.2 AMSET

简介

https://github.com/hackingmaterials/Amset
https://hackingmaterials.lbl.gov/amset/
https://www.nature.com/articles/s41467-021-22440-5.pdf

劳伦斯·伯克利国家实验室Alex M. Ganose和Anubhav Jain开发了一种根据第一性原理输入来计算固态半导体和绝缘体载流子散射率的有效计算方法(AMSET)。本方法扩展了现有的极性和非极性电子-声子耦合、离子化杂质和基于各向同性能带结构的压电散射机制的公式以支持高度各向异性的材料。他们通过计算23种半导体的电子传输特性来测试这个公式,包括48个大原子$CH_3NH_3PbI_3$混合钙钛矿,并将结果与实验测量结果和更详细的散射模拟进行比较。相对于实验的斯皮尔曼迁移率秩系数(rs = 0.93)与使用恒定弛豫时间近似值(rs = 0.52)获得的结果相比有明显提高。他们发现,他们的方法可提供与最新技术类似的精度,而计算成本约为1/500,因此可在高通量计算工作流程中使用,以精确筛选载流子迁移率、寿命和热电功率。

  • Inputs obtainable from first-principles calculations. The primary input for AMSET is an uniform band structure calculation.
  • Scattering rates calculated in the Born approximation using common materials properties such as phonon frequencies and dielectric constants.
  • Transport properties calculated through the Boltzmann transport equation.
  • Efficient implementation that can run on a personal laptop.

安装

依赖

pymatgen==2023.3.23
scipy==1.10.1
monty==2022.9.9
matplotlib==3.7.1
BoltzTraP2==22.12.1
tqdm==4.65.0
tabulate==0.9.0
memory_profiler==0.61.0
spglib==2.0.2
click==8.1.3
sumo==2.3.6
h5py==3.8.0
pyFFTW==0.13.0
interpolation==2.2.4
numba==0.56.4

conda environment

pip install amset

Developer Installation

{.line-numbers}
1
2
3
git clone https://github.com/hackingmaterials/amset.git
cd amset
pip install -e .

准备工作

Structural relaxation:

“tight” calculation settings

{.line-numbers}
1
2
3
4
ADDGRID = True  
EDIFF = 1E-8
EDIFFG = -5E-4
PREC = Accurate

Dense uniform band structure and wave function coefficients:

2倍的K点密度,HSE06 is required,输出波函数,

wave ``` 得到
1
2
3
4
5
6
```wavefunction.h5 file ```
### Elastic constants:
"tight"relax
```javascript {.line-numbers}
NSW = 1
IBRION = 6

Deformation potentials:

amset deform create
single point calculation,

{.line-numbers}
1
2
NSW = 1   
ICORELEVEL = 1

amset deform read undeformed def-1 def-2 def-3
产生deformation.h5 file。

Dielectric constants, piezoelectric constants and polar-phonon frequency:

DFPT方法,Note, DFPT cannot be used with hybrid exchange-correlation functionals. In these cases the LCALCEPS flag should be used in combination with IBRION = 6

{.line-numbers}
1
2
3
NSW = 1
IBRION = 8
LEPSILON = True

amset phonon-frequency
读取DFPT的 vasprun.xml 获得 dielectric constants 和 polar phonon frequency。

运行

有两种方式,Python脚本
或者通过读取settings.yaml和输入文件加命令行运行

脚本

cp path/example/Si/Si.py .
脚本如下:

{.line-numbers}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
import warnings
from amset.core.run import Runner
from amset.plot.rates import RatesPlotter
warnings.simplefilter("ignore")
settings = {
#general settings
"scattering_type": ["IMP", "ADP"],
"doping": [-1.99e14, -2.20e15, -1.72e16, -1.86e17, -1.46e18, -4.39e18],
"temperatures": [300],
"bandgap": 1.14,
#electronic_structure settings
"interpolation_factor": 50,
#materials properties
"deformation_potential": "deformation.h5",
"elastic_constant": [
[144, 53, 53, 0, 0, 0],
[53, 144, 53, 0, 0, 0],
[53, 53, 144, 0, 0, 0],
[0, 0, 0, 75, 0, 0],
[0, 0, 0, 0, 75, 0],
[0, 0, 0, 0, 0, 75],
[0, 0, 0, 0, 0, 75],
],
"static_dielectric": [[11.7, 0, 0], [0, 11.7, 0], [0, 0, 11.7]],
"high_frequency_dielectric": [[11.7, 0, 0], [0, 11.7, 0], [0, 0, 11.7]],
#performance settings
"write_mesh": True,
}

if __name__ == "__main__":
runner = Runner.from_vasprun("vasprun.xml", settings)
amset_data = runner.run()

plotter = RatesPlotter(amset_data)
plt = plotter.get_plot()
plt.savefig("Si_rates.png", bbox_inches="tight", dpi=400)

python Si.py 即可

命令行设置

需要准备settings.yaml文件:以Si为例:

{.line-numbers}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
 # general settings
scattering_type: [IMP, ADP]
doping: [-1.99e14, -2.20e15, -1.72e16, -1.86e17, -1.46e18, -4.39e18]
temperatures: [300]
bandgap: 1.14

# electronic_structure settings
interpolation_factor: 50

# materials properties
deformation_potential: deformation.h5
elastic_constant:
- [144, 53, 53, 0, 0, 0]
- [ 53, 144, 53, 0, 0, 0]
- [ 53, 53, 144, 0, 0, 0]
- [ 0, 0, 0, 75, 0, 0]
- [ 0, 0, 0, 0, 75, 0]
- [ 0, 0, 0, 0, 0, 75]
static_dielectric:
- [11.7, 0, 0]
- [0, 11.7, 0]
- [0, 0, 11.7]
high_frequency_dielectric:
- [11.7, 0, 0]
- [0, 11.7, 0]
- [0, 0, 11.7]
#performance settings
write_mesh: true

amset run –directory path/to/files 运行即可
其他设置可以通过命令行加入:
amset run –interpolation-factor 20
画图:
amset plot rates mesh_99x99x99.h5

Output filesThe transport results will be written to transport_99x99x99.json. The 99x99x99 is thefinal interpolated mesh upon which scattering rates and the transport properties arecomputed.The write_mesh option is set to True, meaning scattering rates for all doping levelsand temperatures will be written to the mesh_99x99x99.h5 file.

设置相关参数:

General settings

  1. scattering_type:Default: auto ;单独设置: ADP,IMP,POP
    ADP (acoustic deformation potential scattering)
    IMP (ionized impurity scattering)
    PIE (piezoelectric scattering)
    POP (polar optical phonon scattering)
    CRT (constant relaxation time)
    MFP (mean free path scattering)
  2. doping:负值代表电子,正值代表空穴
    Default: ['1.e15', '1.e16', '1.e17', '1.e18', '1.e19', '1.e20', '-1.e15', '-1.e16', '-1.e17', '-1.e18', '-1.e19', '-1.e20']
    单独设置有两种: 1E13,1E14,1E15,1E16,1E17,1E18,1E19,1E20 或者 1E13:1E20:8
  3. temperatures:Default: [300]
    单独设置:300,400,500,600,700,800,900,1000 或者300:1000:8
  4. interpolation_factor:Default: 10
    控制插值密度,最终的k点等于能带计算的k点乘上插值因子。
  5. wavefunction_coefficients:Default: wavefunction.h5
    波函数系数读取的方式,产生该文件可以通过amset wave获得。
  6. bandgap:
    设置该参数会自动采用scissor修正,因此不能与scissor选项共用,且对金属不起作用。
  7. scissor:
    正值代表带隙打开,负值代表缩小,对金属无效。
  8. zero_weighted_kpoints:
    设置方式:
    keep: Keep zero-weighted k-points in the band structure.
    drop: Drop zero-weighted k-points, keeping only the weighted k-points.
    prefer: Drop weighted-kpoints if zero-weighted k-points are present in the calculation (useful for cheap hybrid calculations).
  9. use_projections:Default: False
    不建议设置。该参数使用投影计算波函数交叠,往往导致差的性能,使用时设置LORBIT = 11
  10. free_carrier_screening:Default: False
    控制是否屏蔽极化光学声子和压电散射率。这可以导致在高载流子浓度下散射率的大幅度降低。

Material settings

  1. high_frequency_dielectric:Required for: POP, PIE
  2. static_dielectric:Required for: IMP, POP
  3. elastic_constant:Required for: ADP, PIE
  4. deformation_potential:Required for: ADP
  5. piezoelectric_constant:Required for: PIE
  6. defect_charge:Required for: IMP。Default: 1
  7. pop_frequency:Required for: POP amset phonon-frequency获得。
  8. compensation_factor:Required for: IMP Default: 2
  9. mean_free_path:Required for: MFP
  10. constant_relaxation_time:Required for: CRT 不建议和其他散射机制设置。

Performance settings:控制速度和精度,一般默认。

  1. energy_cutoff:Default: 1.5
  2. fd_tol:Default: 0.05. 0-1之间,越小计算K点越多。
  3. dos_estep:Default: 0.01.越小越好越贵。
  4. symprec:Default: 0.01。
  5. nworkers:Default: -1。代表用所有的机器。其他设置代表几个。
  6. cache_wavefunction:Default: True。加速计算,增加内存。如果内存不够关闭。

Output settings:输出文件设置

  1. calculate_mobility:Default: True。是否计算n/p载流子迁移率。
  2. separate_scattering_mobilities:Default: True。是否计算单独的散射机制的迁移率。
  3. write_mesh:Default: False。是否将全K点结果写入磁盘。对于大的interpolation_factor可以打开。
  4. file_format:Default: json。输出文件的格式:json, yaml, and txt.对于write_mesh=True不能用TXT。
  5. write_input:Default: False。是否将输入设置写入amset_settings.yaml.
  6. print_log:Default: True。是否输出日志。

Summary of scattering rates

Mechanism Code Requires Type
Acoustic deformation potential scattering ADP n- and p-type deformation potential, elastic constant Elastic
Piezoelectric scattering PIE high-frequency dielectric constant, elastic constant, piezoelectric coefficient (e) Elastic
Polar optical phonon scattering POP polar optical phonon frequency, static and high-frequency dielectric constants Inelastic
Ionized impurity scattering IMP static dielectric constant Elastic

其他功能

you can use amset which relies on Fourier interpolation of the band
structure using BoltzTraP2. There are two options.

  • Use amset eff-mass: This calculates the conductivity effective mass as defined here: https://www.nature.com/articles/s41524-017-0013-3
  • Use amset plot band --stats vasprun.xml: This calculates the effective mass in the same way as sumo but using a band structure interpolated from a uniform calculation.