2.1. 参数文件¶
Hylanemos的参数文件是计算中最重要的文件,它包含了几乎所有控制Hylanemos如何运行的参数。 它是一个JSON文件(以.json为后缀),分为不同的模块,每一个模块控制一个大类的参数。
以下是一个参数文件的示例
{
"job": {
"calculation_type": "scf",
"plus_u": false,
"spin_polarization_type": 1,
"include_soc": false,
"occupation_method": "smearing",
"calc_force": true,
"calc_stress": false,
"is_slab": false
},
"job_io": {
"prefix": "scf",
"output_rho": true,
"pp_dir": "pp",
"pp_files": [
"Si_ONCV_PBE_sr.upf"
]
},
"pw": {
"ecutrho": 140,
"ecutwfc": 35
},
"kpts": {
"k_type": "automatic",
"k_mesh": [
4,
4,
4
],
"k_shift": [
0,
0,
0
]
},
"symmetry": {
"use_sym": false
},
"smearing": {
"smearing_alg": "gauss",
"smearing_width": 0.005
},
"electron_step": {
"elec_e_conv": 5e-7,
"elec_max_steps": 100
},
"diagor": {
"diag_alg": "david",
"diag_max_steps": 100,
"diag_e_conv": 0.005
},
"mixer": {
"mix_alg": "broyden",
"mix_num": 8,
"mix_beta": 0.7,
"mix_broyden_mode": "plain"
},
"cell": {
"lattice": [
6.32850049,
0,
3.65376308,
2.10949923,
5.96656808,
3.65376264,
0,
0,
7.30752373
],
"cell_units": "bohr"
},
"ions": {
"element_names": [
"Si"
],
"element_nums": [
2
],
"positions": [
[
0,
0,
0
],
[
0.75,
0.75,
0.75
]
]
}}
参数文件以 { 开头,} 结尾;每个模块(例如示例中的job、job_io、pw等)也以 { 开头,} 结尾,每个模块之间以 , 作为分隔。 每个模块中包含众多参数,每个参数的书写格式是
key : value
参数需要写在双引号当中,后面写一个冒号,然后是参数的值,例如
"calculation_type": "scf"
同一个模块的两个参数之间以 , 作为分隔。
JSON文件的详细语法规则用户可以参考网络上的相关教程。
Hylanemos的参数的值的类型分为以下几种
string
:字符串(在双引号中)。例如: “calculation_type”: “scf”。bool
:布尔型。只有true和false。例如: “plus_u”: false。int
:整数。例如: “elec_max_steps”: 100。float
:实数。例如: “smearing_width”: 0.005。array
:数组(在中括号中)。例如: “k_mesh”: [4, 4, 4]。
下面将分块介绍参数文件
2.1.1. job¶
job模块用于指定本次计算的一些基本的参数。
calculation_type¶
参数名称: calculation_type
值类型: string
是否必须: 是
默认值: 无
可选值: scf/band/dos/pdos/relax/vc_relax/neb/md/dimer/cohp
描述:calculation_type 表示本次计算的类型,必须设置。
其中 scf
表示自洽计算; band
表示能带计算; dos
表示态密度计算; pdos
表示投影态密度计算; relax
表示固定晶格结构优化计算;
vc_relax
表示变晶格结构优化计算; neb
表示用NEB的方法进行过渡态计算; md
表示分子动力学计算; dimer
表示用dimer的方法进行过渡态计算; cohp
表示COHP计算。
示例: “calculation_type” : “scf”
plus_u¶
参数名称: plus_u
值类型: bool
是否必须: 否
默认值: false
可选值: true/false
描述:plus_u 表示本次计算是否采用DFT+U的修正。
其中 true
表示采用DFT+U的修正; false
表示不采用DFT+U的修正。
示例: “plus_u”: true
plus_g¶
参数名称: plus_g
值类型: bool
是否必须: 否
默认值: false
可选值: true/false
描述:plus_g 表示本次计算是否采用DFT+G的修正。
其中 true
表示采用DFT+G的修正; false
表示不采用DFT+G的修正。
示例: “plus_g”: true
spin_polarization_type¶
参数名称: spin_polarization_type
值类型: int
是否必须: 否
默认值: 1
可选值: 1/2
描述:spin_polarization_type 表示本次计算是否采用自旋极化。
其中 1
表示非自旋极化; 2
表示共线自旋极化。
示例: “spin_polarization_type”: 1
occupation_method¶
参数名称: occupation_method
值类型: string
是否必须: 否
默认值: “insulator”
可选值: insulator/tetra/smearing
描述:occupation_method 选择本次计算的轨道占据数的计算方法。
其中 insulator
只能对有带隙的体系使用,并且不能在 calculation_type 为 dos
时使用; tetra
表示使用四面体方法; smearing
表示使用拖尾方法。
示例: “occupation_method”: “insulator”
calc_force¶
参数名称: calc_force
值类型: bool
是否必须: 否
默认值: 当 calculation_type 为 relax/vc_relax/neb/md
时默认为 true
;calculation_type 为其他时默认为 false
。
可选值: true/false
描述:calc_force 选择本次计算是否计算原子受力。
其中 true
表示计算原子受力; false
表示不计算原子受力。
示例: “calc_force”: false
calc_stress¶
参数名称: calc_stress
值类型: bool
是否必须: 否
默认值: 当 calculation_type 为 vc_relax
时默认为 true
;calculation_type 为其他时默认为 false
。
可选值: true/false
描述:calc_stress 选择本次计算是否计算晶格应力。
其中 true
表示计算晶格应力; false
表示不计算晶格应力。
示例: “calc_stress”: false
is_slab¶
参数名称: is_slab
值类型: bool
是否必须: 否
默认值: false
可选值: true/false
描述:is_slab 选择本次计算是否需要为slab体系进行修正。
其中 true
表示需要为slab体系进行修正; false
表示不需要为slab体系进行修正。
示例: “is_slab”: false
do_solvation¶
参数名称: do_solvation
值类型: bool
是否必须: 否
默认值: false
可选值: true/false
描述:do_solvation 选择本次计算是否使用隐式溶剂化模型。
其中 true
表示使用隐式溶剂化模型; false
表示不使用隐式溶剂化模型。
charge_replace¶
参数名称: charge_replace
值类型: bool
是否必须: 否
默认值: false
可选值: true/false
描述:charge_replace 选择本次计算是否使用电荷密度取代算法。电荷密度取代算法是指在体系发生变化时,例如发生了原子取代、原子新增、原子删除、晶格变化、扩展超胞时,
使用原有的体系的已经计算出的电荷密度和发生变化的部分的原子的赝势结合来进行电荷密度的初始化。这个算法可以大大提高计算效率。
其中 true
表示使用电荷密度取代算法; false
表示不使用电荷密度取代算法。
2.1.2. job_io¶
job_io模块包括了计算的输入输出涉及的文件,有一部分初始化涉及的文件也在这个模块。 文件的基准位置是json文件所在的目录。
rho_init¶
参数名称: rho_init
值类型: string
是否必须: 否
默认值: “atomic”
可选值: atomic/file
描述:rho_init 选择本次计算的电荷密度初始化方法。
其中 atomic
表示从原子电荷密度初始化; file
表示从电荷密度文件初始化,这时需要设置 rho_init_file 参数。
示例: “rho_init”: “atomic”
rho_init_file¶
参数名称: rho_init_file
值类型: string
是否必须: 当 rho_init 为 file
时必须;当 rho_init 为 atomic
时不需要。
默认值: 无
描述:rho_init_file 选择本次计算的电荷密度初始化的文件,填写电荷密度文件相对基准位置的相对路径。
示例: “rho_init_file”: “scf_DATA/rho.hdf5”
psi_init¶
参数名称: psi_init
值类型: string
是否必须: 否
默认值: “atomic_random”
可选值: atomic_random/random/atomic
描述:psi_init 选择本次计算的波函数初始化方法。
其中 atomic
表示从原子波函数初始化; random
表示从随机初始化; atomic_random
表示原子波函数和随机初始化叠加。
示例: “psi_init”: “atomic”
uns_init¶
参数名称: uns_init
值类型: string
是否必须: 否
默认值: “atomic”
可选值: atomic/file
描述:uns_init 设置+U原子轨道占据数初始化方法。
其中 atomic
表示从原子轨道初始化; file
表示从文件读取。
在进行dos/band/pdos计算时,应该先进行一次scf计算,输出最终的占据数矩阵,在dos/band/pdos计算中,本参数设置为 file
读取这个占据数矩阵。
示例: “uns_init”: “file”
uns_init_file¶
参数名称: uns_init_file
值类型: string
是否必须: 当 uns_init 为 file
时必须;当 uns_init 为 atomic
时不需要。
描述:uns_init_file 设置+U原子轨道占据数初始化文件。 在进行dos/band/pdos计算时,应该先进行一次scf计算,输出最终的占据数矩阵,在dos/band/pdos计算中,通过本参数读取scf计算得到的占据数矩阵。
示例: “uns_init_file”: “ns.hdf5”
pp_dir¶
参数名称: pp_dir
值类型: string
是否必须: 是
默认值: “.”
描述: pp_dir 本次计算所用到的赝势文件所在的目录,填写该目录相对基准位置的相对路径。
示例: “pp_dir”: “.”
pp_files¶
参数名称: pp_files
值类型: array{string}
是否必须: 是
默认值: 无
描述:pp_files 本次计算所用到的赝势文件的名称,所有赝势文件都必须放在 pp_dir 对应的目录下。
示例: “pp_files”: [“Ti_ONCV_PBE_sr.upf”, “O_ONCV_PBE_sr.upf”]
prefix¶
参数名称: prefix
值类型: string
是否必须: 否
默认值: 无
描述:prefix 本次计算的输出文件的前缀。
例如被设为 "prefix": "scf"
时输出文件的会是 scf_OUT/scf_OUT.json/scf_DATA/...
这样的形式;
如果不设置,输出文件会是 OUT/OUT.json/DATA/...
这样的形式。
示例: “prefix”: “scf”
out_dir¶
参数名称: out_dir
值类型: string
是否必须: 否
默认值: “.””
描述:out_dir 本次计算输出文件的目录,填写该目录相对基准位置的相对路径。有些输出文件,如prefix_OUT,直接在该目录下,也有一些输出文件在out_dir/prefix_DATA等子目录下。
示例: “out_dir”: “../scf”
output_rho¶
参数名称: output_rho
值类型: bool
是否必须: 否
默认值: false
可选值: true/false
描述:output_rho 本次计算是否输出电荷密度文件。
其中 true
表示输出电荷密度文件; false
表示不输出电荷密度文件。
输出时,统一输出到out_dir/prefix_DATA/rho.hdf5文件中。
如果需要进行能带或态密度的计算,那么在之前的scf计算中需要将本参数设置为 true
。
示例: “output_rho”: true
wfc_output¶
参数名称: wfc_output
值类型: string
是否必须: 否
默认值: “none”
可选值: none/real/rec/all
描述:wfc_output 本次计算是否输出波函数文件,只有在scf/relax/vc_relax任务后可以进行波函数输出,其他类型的计算结束后不能输出波函数。
输出时,统一输出到out_dir/prefix_DATA/wfc.hdf5文件中。
其中 none
表示不输出波函数文件; real
表示输出实空间波函数文件; rec
表示输出倒空间波函数文件; all
表示输出实空间和倒空间波函数文件。
示例: “wfc_output”: “real”
output_ns¶
参数名称: output_ns
值类型: bool
是否必须: 否
默认值: false
可选值: true/false
描述:output_ns 本次计算是否输出+U的占据数。
其中 true
表示输出+U的占据数; false
表示不输出+U的占据数。
输出时,统一输出到out_dir/prefix_DATA/ns.hdf5文件中。
在DFT+U的计算中,如果需要进行能带或态密度的计算,那么在之前的scf计算中需要将本参数设置为 true
。
示例: “output_ns”: true
log_level¶
参数名称: log_level
值类型: string
是否必须: 否
默认值: “high”
可选值: high/medium/low
描述:log_level 本次计算的输出文件的详细程度。
示例: “log_level”: “high”
reproduce_init¶
参数名称: reproduce_init
值类型: bool
是否必须: 否
默认值: true
可选值: true/false
描述:reproduce_init 仅在并行计算,且使用带随机的初始化时起作用。这时候,如果不加控制,随机数的生成器在进程数不同时不同,从而带来不同的初始化。
如果 reproduce_init 被设置为 true
,会增加额外的控制,保证随机初始化不随进程数的变化而变化,但会降低初始化的效率。
示例: “reproduce_init”: true
wf_save¶
参数名称: wf_save
值类型: int
是否必须: 否
默认值: 0
可选值: 0/1/-1
描述:wf_save 表示在是否把波函数存到文件里供下一个离子步用,对于结构优化和分子动力学计算时生效。
其中 0
表示程序自动判断; 1
表示把波函数存到文件里; -1
表示把波函数存到内存里。
示例: “wf_save”: 1
output_atomic_charge¶
参数名称: output_atomic_charge
值类型: bool
是否必须: 否
默认值: false
可选值: true/false
描述:output_atomic_charge 表示在是否在单独的文件中输出原子电荷密度和磁矩。
其中 true
表示单独输出; false
表示不单独输出。
2.1.3. cell¶
cell模块用来设定与晶胞参数有关的参数。
cell_type¶
参数名称: cell_type
值类型: string
是否必须: 否
默认值: “lattice”
可选值: lattice/parameters
描述:cell_type 指定晶格参数的输入方式。
其中 lattice
表示使用晶格矢矩阵作为输入; parameters
表示使用晶格常数作为输入。
示例: “cell_type”: “lattice”
lattice¶
参数名称: lattice
值类型: array{9*float}
是否必须: 当 cell_type 为 lattice
时必须;当 cell_type 为 parameters
时不需要。
默认值: 无
描述:lattice 晶格矢量矩阵,一共需要输入9个实数。 其中第1、2、3个数是第一个晶格矢量,第4、5、6个数是第二个晶格矢量,第7、8、9个数时第三个晶格矢量。
示例: “lattice”: [8.67384297, 0, 0, 0, 8.67384297, 0, 0, 0, 5.59358937]
cell_params¶
参数名称: cell_params
值类型: array{6*float}
是否必须: 当 cell_type 为 parameters
时必须;当 cell_type 为 lattice
时不需要。
默认值: 无
描述:cell_params 晶格常数,一共需要输入6个实数。 其中第1、2、3个数分别是a、b、c三个晶轴的常数,必须为正数;第4、5、6个数分别是 \(\alpha\)、\(\beta\)、\(\gamma\) 三个晶角,必须为0到180之间的数。
示例: “cell_params”: [5.4, 5.4, 5.4, 90, 90, 90]
cell_units¶
参数名称: cell_units
值类型: float
是否必须: 否
默认值: “bohr”
可选值: A/angstrom/B/bohr
描述:cell_units 输入的晶格常数或晶格矢量矩阵的单位。
其中 A
或 angstrom
表示晶格常数以Å为单位; B
或 bohr
表示晶格常数以bohr为单位。
示例: “cell_units”: “bohr”
2.1.4. ions¶
ions模块包括与原子和原子位置有关的参数。
element_names¶
参数名称: element_names
值类型: array{string}
是否必须: 是
默认值: 无
描述:element_names 结构中的原子的元素名称,必须是元素的化学符号。
示例: “element_names”: [“Li”, “Co”, “O”]
element_nums¶
参数名称: element_nums
值类型: array{int}
是否必须: 是
默认值: 无
描述:element_nums 结构中的每种元素的原子个数,顺序与 element_names 中的元素名称一一对应。
示例: “element_nums”: [3, 3, 6]
element_mass¶
参数名称: element_mass
值类型: array{float}
是否必须: 否
默认值: 无
描述:element_mass 结构中的每种元素的相对原子质量,顺序与 element_names 中的元素名称一一对应。 当不设置的时候,会直接用程序内置的元素周期表中的值,建议用默认值。
示例: “element_mass”: [6.94, 16, 1]
positions¶
参数名称: positions
值类型: array{array{3*float, 3*string}}
是否必须: 当 calculation_type 为 scf/band/dos/pdos/relax/vc_relax/md
时必须,当 calculation_type 为 neb
时不需要。
默认值: 无
描述:positions 结构中每个原子的位置和是否固定,顺序与 element_names 和 element_nums 中一一对应。
positions 分为两个部分,第一部分为前三个实数,用来表示原子位置,需要使用分数坐标;
第二部分为后三个字符串(非必须输入),分别用来表示原子位置在x、y、z方向是否可以移动,只在固定晶格结构优化计算中生效,,即 calculation_type 为 relax
时使用,变晶格结构优化时不能使用。
这三个字符串的可选值是 T/F
,其中 T
表示这个原子在该方向可以移动; F
表示这个原子在该方向不可以移动。
如果没有输入,都默认为 T
。
示例: “positions”: [[0, 0, 0],[0.5, 0.5, 0.5]] 或 “positions”: [[0, 0, 0, “T”, “T”, “F”],[0.5, 0.5, 0.5, “F”, “T”, “F”]]
2.1.5. pw¶
pw模块是和平面波基组有关的设置。
ecutwfc¶
参数名称: ecutwfc
值类型: float
是否必须: 是
默认值: 无
可选值: 正数
描述:ecutwfc 计算过程中使用的波函数截断能,单位为Hartree。
示例: “ecutwfc”: 30
ecutrho¶
参数名称: ecutrho
值类型: float
是否必须: 如果赝势类型是超软赝势时,必须;如果赝势类型时模守恒赝势时,不必须,而且建议不设。
默认值: 4*ecutwfc
可选值: 大于等于4*ecutwfc
描述:ecutrho 计算过程中使用的电荷密度截断能,单位为Hartree。
示例: “ecutwfc”: 120
2.1.6. kpts¶
kpts模块是和k点有关的设置。
k_type¶
参数名称: k_type
值类型: string
是否必须: 是
默认值: “automatic”
可选值: automatic/coord/coord_mesh/path
描述:k_type 用来设置输入k点的方式。
其中 automatic
表示使用Monkhorst-Pack方法自动生成均匀的k点;
coord
表示直接指定计算用的每个k点的分数坐标与权重;
coord_mesh
表示使用采用Monkhorst-Pack方法自动生成均匀的k点,并且会把分数坐标换算成与之对应的分数。例如一个[0.33, 0.67, 0.33]的k点会变成[1/3, 2/3, 1/3];
path
表示指定高对称点和高对称点之间的连线上的点的数量,一般用于能带计算。
示例: “k_type”: “automatic”
k_mesh¶
参数名称: k_mesh
值类型: array{3*int}
是否必须: 当 k_type 为 automatic/coord_mesh
时必须,当 k_type 为 coord/path
时不需要。
默认值: 无
可选值: 正整数
描述:k_mesh 用来设置3个方向上的k点网格的数目。
示例: “k_mesh”: [3, 2, 3]
k_shift¶
参数名称: k_shift
值类型: array{3*int}
是否必须: 否
默认值: [0, 0, 0]
可选值: 0或1
描述:k_shift 用来设置3个方向上的k点网格的平移,0代表不平移,1代表网格在相应方向上平移半个格点。
示例: “k_shift”: [0, 1, 1]
k_data¶
参数名称: k_data
值类型: array{4*float}
是否必须: 当 k_type 为 coord/path
时必须,当 k_type 为 automatic/coord_mesh
时不需要。
默认值: 无
描述:k_data 为一个4个数组成的数组。
当 k_type 为 coord
时,用户需要在 k_data 中设置计算用的每个k点的坐标与权重,前三个值是k点坐标,第四个值是k点权重。
当 k_type 为 path
时,用户需要在 k_data 中设置计算用的每个高对称k点和高对称点之间的连线的k点数量,前三个值是高对称k点坐标,第四个值这个高对称点到下个高对称点之间的连线的k点数量。
示例: 当 k_type 为 coord
时
"k_data": [
[
0,
0,
0,
0.5
],
[
0.5,
0,
0.5,
0.25
],
[
0.5,
0.25,
0.75,
0.25
]
]
当 k_type 为 path
时
"k_data": [
[
0,
0,
0,
20
],
[
0.5,
0,
0.5,
20
],
[
0.5,
0.25,
0.75,
20
],
[
0.375,
0.375,
0.75,
20
],
]
2.1.7. band¶
n_bands¶
参数名称: n_bands
值类型: int
是否必须: 否
默认值: 由结构中所有原子的赝势中的价电子数计算得到。
可选值: 大于等于结构中所有原子的赝势中的价电子数的总和的一半,如电子数为奇数,则需向上取整。
描述:n_bands 计算中的能带的总数。能带总数=价带数目+空带(导带)数目,其中价带数目固定是电子数的一半,而能带总数和空带数目分别由本参数与 n_empty_bands 设置,因此两者不能同时设置。
当空带数目为0,而 occupation_method 为 smearing
时,会自动把空带数目设置为价带数目的20%,且至少为4。
示例: “n_bands”: 16
n_empty_bands¶
参数名称: n_empty_bands
值类型: int
是否必须: 否
默认值: 0
可选值: 自然数
描述:n_empty_bands 计算中的空能带的总数。不能与 n_bands 同时设置。
示例: “n_empty_bands”: 16
e_fermi¶
参数名称: e_fermi
值类型: float
是否必须: 在能带计算中,如果 occupation_method 为 smearing
时,必须要设置;
如果 occupation_method 为其他时,可以不设置,但能带输出的结果没有扣除费米能级。
在非能带计算中,不需要设置。
默认值: 无
描述:e_fermi 体系的费米能级,单位为Hartree。
示例: “e_fermi”: 0.2348
n_ele¶
参数名称: n_ele
值类型: float
是否必须: 否
默认值: 由结构的原子数和每种元素的赝势中的电子数自动计算得到
描述:n_ele 体系的电子数,通过设置本参数,可以为体系增加和减少电子。当前本参数还不能设置。
示例: “n_ele”: 45
2.1.8. mag¶
mag模块是和磁性有关的设置,只有在job模块中的 spin_polarization_type 为 2
时才生效。
mag_init_type¶
参数名称: mag_init_type
值类型: string
是否必须: 否
默认值: “element”
可选值: atom/element
描述:mag_init_type 表示用来设置初始磁矩的方式。
其中 atom
表示按每个原子设置磁矩, mag_init_value 中需要按 positions 中的顺序给每个原子设置初始磁矩;
element
表示按每种元素设置磁矩,mag_init_value 中需要按 element_names 中的顺序给每种元素设置初始磁矩。
示例: “mag_init_type”: “element”
mag_init_value¶
参数名称: mag_init_value
值类型: array{float}
是否必须: 是
默认值: 无
可选值: -1到1之间的实数
描述:mag_init_value 设置原子或元素的初始磁矩。顺序与 element_names 和 element_nums 中一一对应。
赝势文件会提供一个元素产生的总电荷密度,当进行线性磁性计算时,如果 rho_init 为 atomic
,会使用这个电荷密度来产生初始电荷密度,将其分成up和down两部分,本参数描述了这个分法,其值的意义是该原子或元素自旋向上的电子数-自旋向下的电子数,再除以该原子或元素的总电子数。
mag_init_value = (\(\rho\)up - \(\rho\)down)/\(\rho\)all
当 rho_init 为 file
时,初始磁矩会从电荷密度文件中读取,本参数不生效。
示例: “mag_init_value”: [0.2, -0.15]
mag_constrain¶
参数名称: mag_constrain
值类型: bool
是否必须: 否
默认值: false
可选值: true/fasle
描述:mag_constrain 表示是否要约束磁矩。
其中 true
表示要约束原子磁矩; false
表示不约束原子磁矩。
示例: “mag_constrain”: true
mag_constrained_atoms¶
参数名称: mag_constrained_atoms
值类型: array{int}
是否必须: 当 mag_constrain 为 true
时必须,为 false
时不必须。
默认值: 无
描述:mag_constrained_atoms 表示是否要对哪些原子约束磁矩。数组中为 positions 原子的序号,起始原子位置序号为1。
示例: “mag_constrained_atoms”: [1, 5]
mag_lambda¶
参数名称: mag_lambda
值类型: bool
是否必须: 否
默认值: false
可选值: true/fasle
描述:mag_lambda 表示是否要约束磁矩的能量惩罚项的系数。单位为Hartree。
这里的σ’就是 mag_init_type 和 mag_init_value 得到的值。
示例: “mag_lambda”: 1
2.1.9. hubbard¶
hubbard模块是和+U有关的设置,只有在job模块中的 plus_u 为 true
时才生效。
u_projection_type¶
参数名称: u_projection_type
值类型: string
是否必须: 否
默认值: “atomic”
可选值: atomic/ortho-atomic
描述:u_projection_type 设置+U的投影方式。
其中 atomic
表示使用原子轨道(从赝势读取)来构建Hubbard投影; ortho-atomic
表示使用 Lowdin 正交原子轨道,它可以避免在轨道重叠区域应用两次Hubbard修正。目前 ortho-atomic
没有经过很充分的测试,不推荐使用。
示例: “u_projection_type”: “atomic”
u¶
参数名称: u
值类型: array{float}
是否必须: 是
默认值: 无
可选值: 正数
描述:u 设置每种元素+U的值,顺序与 element_names 中的元素名称一一对应。
示例: “u”: [3.2, 0, 2]
u_J0¶
参数名称: u_J0
值类型: array{float}
是否必须: 否
默认值: 0
可选值: 正数
描述:u_J0 设置每种元素J0的值,顺序与 element_names 中的元素名称一一对应。 如果设了 u_J0 ,那么最终的U = u - u_J0 。
示例: “u_J0”: [3.2, 0, 2]
u_l¶
参数名称: u_l
值类型: array{int}
是否必须: 否
默认值: Hylanemos内部针对每种元素有默认值。
可选值: 0到3之间的正数
描述:u_l 设置每种元素在哪个轨道上+U。0/1/2/3分别对应s轨道/p轨道/d轨道/f轨道。本参数暂时不可设置。
示例: “u_l”: [3, 3]
u_kind¶
参数名称: u_kind
值类型: int
是否必须: 否
默认值: 1
可选值: 1
描述:u_kind 设置+U的不同方式。目前只能设置为1。
示例: “u_kind”: 1
2.1.10. gutzwiller¶
gutzwiller模块是和+G有关的设置,只有在job模块中的 plus_g 为 true
时才生效。
g_U¶
参数名称: g_U
值类型: array{float}
是否必须: 是
默认值: 无
可选值: 正数
描述:g_U 设置每种元素+U的值,顺序与 element_names 中的元素名称一一对应。
示例: “g_U”: [3.2, 0, 2]
g_J¶
参数名称: g_J
值类型: array{float}
是否必须: 否
默认值: 0
可选值: 正数
描述:g_J 设置每种元素J的值,顺序与 element_names 中的元素名称一一对应。
示例: “g_J”: [3.2, 0, 2]
2.1.11. electron_step¶
electron_step模块是和自洽迭代的电子步有关的设置。
elec_max_steps¶
参数名称: elec_max_steps
值类型: int
是否必须: 否
默认值: 100
可选值: 正整数
描述:elec_max_steps 设置自洽循环时的最大电子步数。
示例: “elec_max_steps”: 60
elec_e_conv¶
参数名称: elec_e_conv
值类型: float
是否必须: 否
默认值: 5e-7
可选值: 正数
描述:elec_e_conv 设置自洽循环时电子步的收敛标准,单位为Hartree。在结构优化计算时,当 ion_alg 为 bfgs_tr
时,其每一步的电子收敛标准会从低变高,这里设置的是最终的收敛标准。
示例: “elec_e_conv”: 1e-8
2.1.12. diagor¶
diagor模块是和对角化有关的设置。
diag_same_conv¶
参数名称: diag_same_conv
值类型: bool
是否必须: 否
默认值: false
可选值: true/false
描述:diag_same_conv 设置对角化时非占据轨道是否使用和占据轨道相同的收敛标准。
其中 true
表示非占据轨道使用和占据轨道相同的收敛标准; false
表示非占据轨道使用比占据轨道更加宽松的收敛标准。
经验表明设置为 true
在有些时候会带来数值不稳定的问题。
示例: “diag_same_conv”: false
diag_alg¶
参数名称: diag_alg
值类型: string
是否必须: 否
默认值: “david”
可选值: david
描述:diag_alg 设置对角化时的算法。
david
表示使用Davidson对角化算法。
示例: “diag_alg”: “david”
diag_e_conv¶
参数名称: diag_e_conv
值类型: float
是否必须: 否
默认值: 当 calculation_type 为 scf
时,默认值是0.005;
当 calculation_type 为其他时,默认值为0.05 * elec_e_conv / n_ele,其中n_ele为体系的总电子数。
可选值: 正实数
描述:diag_e_conv 对角化的初始收敛标准。 对scf计算,在迭代过程中会逐渐减小对角化收敛标准,因此一开始可以大一些;对dos/band/pdos计算,只有一步,因此这里就是收敛标准。
示例: “diag_e_conv”: 5e-3
diag_max_steps¶
参数名称: diag_max_steps
值类型: int
是否必须: 否
默认值: 100
可选值: 正整数
描述:diag_max_steps 设置对角化时的最大步数。
示例: “diag_max_steps”: 100
davidson_dim_mult¶
参数名称: davidson_dim_mult
值类型: int
是否必须: 否
默认值: 2
可选值: 正整数,且至少为2
描述:davidson_dim_mult 设置davidson对角化中的矩阵维度。davidson对角化中,最后直接对角化的矩阵维度是 davidson_dim_mult * n_band。
示例: “davidson_dim_mult”: 2
block_size¶
参数名称: block_size
值类型: int
是否必须: 否
默认值: -1
描述:block_size 分块Davidson对角化块的大小,如果 block_size <0则会采用默认的对角化方法, block_size >0则以该大小分块进行分块Davidson对角化。
示例: “block_size”: -1
2.1.13. smearing¶
smearing模块是smearing有关的设置,只有在job模块中的 occupation 为 smearing
时才生效。
smearing_alg¶
参数名称: smearing_alg
值类型: string
是否必须: 否
默认值: “fd”
可选值: fd/mv/mp/gauss
描述:smearing_alg 设置smearing使用的算法。
fd
表示使用Fermi-Dirac spreading; mv
表示使用Marzari-Vanderbilt-DeVita-Payne cold smearing;
mp
表示使用Methfessel-Paxton spreading; gauss
表示使用Gaussian spreading。
mp
和 mv
这两种方法,对于绝缘体不适合。
示例: “smearing_alg”: “fd”
smearing_width¶
参数名称: smearing_width
值类型: float
是否必须: 是
默认值: 无
可选值: 正数
描述:smearing_width 设置smearing的展宽,单位为Hartree。
示例: “smearing_width”: 0.005
smearing_mp_n¶
参数名称: smearing_mp_n
值类型: int
是否必须: 否
默认值: 1
可选值: 正整数
描述:smearing_mp_n 设置Methfessel-Paxton spreading的阶数。 参见 Phys. Rev. B, 40(6), 3616–3621, August 1989。
示例: “smearing_mp_n”: 2
2.1.14. mixer¶
mixer模块是和电荷密度混合有关的设置。
mix_alg¶
参数名称: mix_alg
值类型: string
是否必须: 否
默认值: “broyden”
可选值: broyden/pulay
描述:mix_alg 设置电荷密度混合使用的算法。
broyden
表示使用broyden算法; pulay
表示使用pulay算法。
目前建议使用 broyden
。
示例: “mix_alg”: “pulay”
mix_num¶
参数名称: mix_num
值类型: int
是否必须: 否
默认值: 8
可选值: 正整数
描述:mix_num 设置使用前多少步的电荷密度来进行混合。
示例: “mix_num”: 6
mix_beta¶
参数名称: mix_beta
值类型: float
是否必须: 否
默认值: 0.7
可选值: 0到1之间的实数
描述:mix_beta 设置电荷密度的混合系数。
示例: “mix_num”: 0.3
mix_broyden_mode¶
参数名称: mix_broyden_mode
值类型: string
是否必须: 否
默认值: “plain”
可选值: plain/TF
描述:mix_broyden_mode 设置broyden mixing里面的电荷密度预处理方法。
其中 plain
表示使用朴素的Broyden算法,不加预处理; TF
表示使用simple Thomas-Fermi screening预处理的Broyden算法,适合高度均质的体系。
示例: “mix_broyden_mode”: “TF”
2.1.15. symmetry¶
symmetry模块是和对称性相关的设置。
use_sym¶
参数名称: use_sym
值类型: bool
是否必须: 否
默认值: true
可选值: true/false
描述:use_sym 设置计算中是否考虑体系的对称性,设置时,对scf和结构优化都会生效。
其中 true
表示考虑体系对称性; false
表示不考虑体系对称性。
示例: “use_sym”: false
sym_prec¶
参数名称: sym_prec
值类型: float
是否必须: 否
默认值: 1e-5
可选值: 正数
描述:sym_prec 设置判断对称性的精度。两个位置认为是一个位置的标准。
示例: “sym_prec”: 1e-4
2.1.16. dos¶
dos模块是与态密度计算相关的设置,只有在job模块中的 calculation_type 为 dos
时才生效。
dos_emin¶
参数名称: dos_emin
值类型: float
是否必须: 是
默认值: 无
可选值: 实数,小于 dos_emax
描述:dos_emin 设置态密度计算时的能量最小值,单位eV。
示例: “dos_emin”: -10
dos_emax¶
参数名称: dos_emax
值类型: float
是否必须: 是
默认值: 无
可选值: 实数,大于 dos_emin
描述:dos_emax 设置态密度计算时的能量最大值,单位eV。
示例: “dos_emax”: 10
dos_dE¶
参数名称: dos_dE
值类型: float
是否必须: 是
默认值: 无
可选值: 实数
描述:dos_dE 设置态密度计算时的能量间隔,单位eV。
示例: “dos_dE”: 0.1
2.1.17. pdos¶
pdos模块是与投影态密度计算相关的设置,只有在job模块中的 calculation_type 为 pdos
时才生效。
pdos_emin¶
参数名称: pdos_emin
值类型: float
是否必须: 是
默认值: 无
可选值: 实数,小于 pdos_emax
描述:pdos_emin 设置投影态密度计算时的能量最小值,单位eV。
示例: “pdos_emin”: -10
pdos_emax¶
参数名称: pdos_emax
值类型: float
是否必须: 是
默认值: 无
可选值: 实数,大于 pdos_emin
描述:pdos_emax 设置投影态密度计算时的能量最大值,单位eV。
示例: “pdos_emax”: 10
pdos_dE¶
参数名称: pdos_dE
值类型: float
是否必须: 是
默认值: 无
可选值: 实数
描述:pdos_dE 设置投影态密度计算时的能量间隔,单位eV。
示例: “pdos_dE”: 0.1
pdos_smearing_alg¶
参数名称: pdos_smearing_alg
值类型: string
是否必须: 否
默认值: “gauss”
可选值: gauss
描述:pdos_smearing_alg 设置投影态密度计算时使用的smearing算法。
其中 gauss
表示使用Gaussian spreading。
示例: “pdos_smearing_alg”: “gauss”
pdos_smearing_width¶
参数名称: pdos_smearing_width
值类型: float
是否必须: 是
默认值: 无
可选值: 正数
描述:pdos_smearing_width 设置投影态密度计算时的smearing的展宽,单位为Hartree。
示例: “pdos_smearing_width”: 0.001
2.1.18. cohp¶
cohp模块是与COHP计算相关的设置,只有在job模块中的 calculation_type 为 cohp
时才生效。
cohp_emin¶
参数名称: cohp_emin
值类型: float
是否必须: 是
默认值: 无
可选值: 实数,小于 cohp_emax
描述:cohp_emin 设置COHP计算时的能量最小值,单位eV。
示例: “cohp_emin”: -10
cohp_emax¶
参数名称: cohp_emax
值类型: float
是否必须: 是
默认值: 无
可选值: 实数,大于 cohp_emin
描述:cohp_emax 设置COHP计算时的能量最大值,单位eV。
示例: “cohp_emax”: 10
cohp_dE¶
参数名称: cohp_dE
值类型: float
是否必须: 是
默认值: 无
可选值: 实数
描述:cohp_dE 设置COHP计算时的能量间隔,单位eV。
示例: “cohp_dE”: 0.1
cohp_smearing_alg¶
参数名称: cohp_smearing_alg
值类型: string
是否必须: 否
默认值: “gauss”
可选值: gauss
描述:cohp_smearing_alg 设置COHP计算时使用的smearing算法。
其中 gauss
表示使用Gaussian spreading。
示例: “pdos_smearing_alg”: “gauss”
cohp_smearing_width¶
参数名称: cohp_smearing_width
值类型: float
是否必须: 是
默认值: 无
可选值: 正数
描述:cohp_smearing_width 设置投影态密度计算时的smearing的展宽,单位为Hartree。
示例: “cohp_smearing_width”: 0.001
2.1.19. ion_step¶
ion_step模块是与结构优化计算相关的设置,只有在job模块中的 calculation_type 为 relax/vc_relax
时才生效。
ion_alg¶
参数名称: ion_alg
值类型: string
是否必须: 否
默认值: “bfgs”
可选值: bfgs/bfgs_tr/tpsd/cg
描述:ion_alg 设置结构优化时的算法。
其中 bfgs
表示使用线搜索bfgs算法;其中 bfgs_tr
表示可行域bfgs算法,不能施加压强 ion_alg ,不能使用晶胞约束 cons_cell,不能使用位移收敛标准即 ion_use_d_conv 为fasle;其中 tpsd
表示使用两点最速下降算法,
在使用晶胞约束结构优化计算时,建议使用tpsd算法;其中 cg
表示共轭梯度算法,不能使用晶胞约束 cons_cell 。
示例: “ion_alg”: “bfgs”
ion_max_steps¶
参数名称: ion_max_steps
值类型: int
是否必须: 否
默认值: 60
可选值: 正整数
描述:ion_max_steps 设置结构优化时的最大离子步数。
示例: “ion_max_steps”: 50
ion_e_conv¶
参数名称: ion_e_conv
值类型: float
是否必须: 否
默认值: 1e-5
可选值: 正数
描述:ion_e_conv 设置结构优化时的离子步的能量收敛标准,单位为eV/atom。
示例: “ion_e_conv”: 1e-4
ion_f_conv¶
参数名称: ion_f_conv
值类型: float
是否必须: 否
默认值: 0.05
可选值: 正数
描述:ion_f_conv 设置结构优化时的离子步的力的收敛标准,单位为eV/Å。
示例: “ion_f_conv”: 0.05
ion_s_conv¶
参数名称: ion_s_conv
值类型: float
是否必须: 否
默认值: 0.1
可选值: 正数
描述:ion_s_conv 设置变晶格结构优化时的离子步的应力收敛标准,单位为GPa。
示例: “ion_s_conv”: 1e-2
ion_d_conv¶
参数名称: ion_d_conv
值类型: float
是否必须: 否
默认值: 1e-3
可选值: 正数
描述:ion_d_conv 设置结构优化时的离子步的位移收敛标准,单位为Å。
示例: “ion_d_conv”: 1e-4
ion_use_s_conv¶
参数名称: ion_use_s_conv
值类型: bool
是否必须: 否
默认值: false
可选值: true/false
描述:ion_use_s_conv 设置变晶格结构优化时是否使用应力作为收敛标准。
其中 true
表示使用应力作为收敛标准; false
表示不使用应力作为收敛标准。
示例: “ion_use_s_conv”: true
ion_use_d_conv¶
参数名称: ion_use_d_conv
值类型: bool
是否必须: 否
默认值: false
可选值: true/false
描述:ion_use_d_conv 设置结构优化时是否使用位移作为收敛标准。
其中 true
表示使用位移作为收敛标准; false
表示不使用位移作为收敛标准。
示例: “ion_use_d_conv”: true
ion_pressure¶
参数名称: ion_pressure
值类型: array{6*float}
是否必须: 否
默认值: [0, 0, 0, 0, 0, 0]
描述:ion_pressure 设置变晶格结构优化时的外部压强。 压强矩阵[a11, a12, a13; a21, a22, a23; a31, a32, a33] 是一个对称矩阵,因此这里只需要6个数来表示。所需要设置的矩阵元为[a11, a22, a33, a12, a13, a23] 正数表示压力,负数表示应力。 在设置 ion_pressure 时不能使用 cons_cell 参数。
示例: “ion_pressure”: [1e5, 1e5, 1e5, 0 , 0, 0]
2.1.20. constraints¶
constraints模块是与晶格优化计算时的晶胞约束相关的设置,只有在job模块中的 calculation_type 为 vc_relax
时才生效。
cons_cell¶
参数名称: cons_cell
值类型: array{string}
是否必须: 否
默认值: [“none”]
可选值: 数组中的字符串可选值为 a
/ b
/ c
/ a/b
/ b/c
/ a/c
/ a/b/c
/ α
/ β
/ γ
/ α=β
/ β=γ
/ α=γ
/ α=β=γ
/ v
/ none
描述:cons_cell 设置变晶格结构优化时的晶格约束条件。设置时顺序无要求。
其中 a
/ b
/ c
/ 表示固定相应的晶轴长度不变;
a/b
/ b/c
/ a/c
/ a/b/c
表示固定相应的晶轴长度的比例不变;
α
/ β
/ γ
表示固定相应的晶角不变;
α=β
/ β=γ
/ α=γ
/ α=β=γ
表示固定相应的晶角大小相同;
v
表示固定晶胞体积。
none
表示不做任何限制。
在设置 cons_cell 时不能使用 ion_pressure 参数。
使用晶胞约束时,建议结构优化使用tpsd算法。
示例: “cons_cell”: [“a”, “α=β”, “a/b/c”]
2.1.21. dispersion¶
dispersion模块是与范德华修正相关的设置。
dis_scheme¶
参数名称: dis_scheme
值类型: string
是否必须: 否
默认值: “none”
可选值: none/D2/D3/D4
描述:dis_scheme 表示使用的范德华修正的方法。
其中 none
表示不使用范德华修正; D2
表示使用Grimme-D2修正; D3
表示使用Grimme-D3修正; D4
表示使用Grimme-D4修正。
示例: “dis_scheme”: “D2”
2.1.22. slab¶
slab模块是与slab修正相关的设置,只有在job模块中的 is_slab 为 true
时才生效。
slab_corr_method¶
参数名称: slab_corr_method
值类型: string
是否必须: 是
默认值: 无
可选值: dipole correction
描述:slab_corr_method 表示使用的slab修正的方法。
其中 dipole correction
表示使用偶极修正。
示例: “slab_corr_method”: “dipole correction”
2.1.23. pef¶
pef模块是与电场相关的设置,只有在job模块中的 is_slab 为 true
并且在slab模块中的 slab_corr_method 为 dipole correction
时才生效。
pef_dir¶
参数名称: pef_dir
值类型: int
是否必须: 是
默认值: 无
可选值: 1/2/3
描述:pef_dir 表示电场沿倒格矢的方向。
其中 1
表示沿倒格矢g1的方向;其中 2
表示沿倒格矢g2的方向;其中 3
表示沿倒格矢g3的方向。
计算时如果电场沿倒格矢g3的方向,那么实空间晶胞向量c要与a和b都垂直。最好使用正交晶胞,即a和b也垂直。
示例: “pef_dir”: 3
pef_max_loc¶
参数名称: pef_max_loc
值类型: int
是否必须: 是
默认值: 无
可选值: 0到1之间的实数
描述:pef_max_loc 表示电场最大处所在的位置,以分数坐标表示。
示例: “pef_max_loc”: 0.5
pef_max_e¶
参数名称: pef_max_e
值类型: float
是否必须: 是
默认值: 无
可选值: 实数
描述:pef_max_e 表示电场最大处的值。使用偶极修正时,需要设置为0。
示例: “pef_max_e”: 0.5
pef_dec_region_leng¶
参数名称: pef_dec_region_leng
值类型: float
是否必须: 是
默认值: 无
可选值: 0到1之间的实数
描述:pef_dec_region_leng 表示电场下降的区间长度。 从 pef_max_loc 到 pef_max_loc + pef_dec_regian_leng 电场强度下降,然后电场强度上升到 pef_max_loc + 1 。电场在下降和上升的转变点必须设置在真空层当中。
示例: “pef_dec_region_leng”: 0.2
2.1.24. md¶
md模块是与分子动力学计算相关的设置,只有在job模块中的 calculation_type 为 md
时才生效。
md_ensemble¶
参数名称: md_ensemble
值类型: string
是否必须: 是
默认值: 无
可选值: nve/nvt
描述:md_ensemble 表示分子动力学计算使用的系综。
其中 nve
表示微正则系综; nvt
表示正则系综。
示例: “md_ensemble”: nvt
md_integrate_alg¶
参数名称: md_integrate_alg
值类型: string
是否必须: 否
默认值: “leapfrog”
可选值: leapfrog/verlet
描述:md_integrate_alg 表示分子动力学计算使用的数值积分的算法。
其中 leapfrog
表示使用leapfrog(蛙跳)算法; verlet
表示使用verlet算法。
当前在 md_ensemble 为 nvt
时,只能设置为 leapfrog
。
示例: “md_integrate_alg”: verlet
md_thermostat¶
参数名称: md_thermostat
值类型: string
是否必须: 当 md_ensemble 为 nvt
时必须; 当 md_ensemble 为 nve
时不需要。
默认值: 无
可选值: langevin/nhc/nosehoover
描述:md_thermostat 表示分子动力学计算使用的热浴,即控温方法。
其中 langevin
表示使用Langevin热浴; nhc
表示使用Nose-Hoover Chain热浴; nosehoover
表示使用Nose-Hoover热浴。
示例: “md_thermostat”: nhc
md_init_temp¶
参数名称: md_init_temp
值类型: float
是否必须: 否
默认值: 0
可选值: 非负数
描述:md_init_temp 表示分子动力学的初始温度,单位为K。
示例: “md_init_temp”: 298
md_steps¶
参数名称: md_steps
值类型: int
是否必须: 是
默认值: 无
可选值: 正整数
描述:md_steps 表示分子动力学的总步数。
示例: “md_steps”: 5000
md_dt¶
参数名称: md_dt
值类型: float
是否必须: 否
默认值: 40
可选值: 正数
描述:md_dt 表示分子动力学的步长,单位为Hartree原子单位。1 a.u. = 2.4189e-17 s。
示例: “md_dt”: 40
md_rho_extrapolation¶
参数名称: md_rho_extrapolation
值类型: string
是否必须: 否
默认值: “none”
可选值: none/atomic/order1/order2
描述:md_rho_extrapolation 表示分子动力学计算时,离子步之间电荷密度外推的方法。
其中 none
表示不进行电荷密度外推; atomic
表示使用原子电荷密度进行外推; order1
表示使用一阶公式进行外推; order2
表示使用二阶公式进行外推。
示例: “md_rho_extrapolation”: “atomic”
md_wfc_extrapolation¶
参数名称: md_wfc_extrapolation
值类型: string
是否必须: 否
默认值: “none”
可选值: none/atomic/order1/order2
描述:md_wfc_extrapolation 表示分子动力学计算时,离子步之间波函数外推的方法。
其中 none
表示不进行波函数外推; order1
表示使用一阶公式进行外推; order2
表示使用二阶公式进行外推。
示例: “md_wfc_extrapolation”: “order1”
md_langevin_gamma_ln¶
参数名称: md_langevin_gamma_ln
值类型: float
是否必须: 当 md_thermostat 为 langevin
时必须;当 md_thermostat 为其他时,不需要。
默认值: 无
可选值: 正数
描述:md_langevin_gamma_ln 表示Langevin热浴的摩擦系数。
示例: “md_langevin_gamma_ln”: 2
md_nh_mass¶
参数名称: md_nh_mass
值类型: float
是否必须: 当 md_thermostat 为 nosehoover
时必须;当 md_thermostat 为其他时,不需要。
默认值: 根据体系自由度和温度自动计算
可选值: 正数
描述:md_nh_mass 表示Nose-Hoover热浴的质量。
示例: “md_nh_mass”: 0.5
md_nhc_nchain¶
参数名称: md_nhc_nchain
值类型: float
是否必须: 当 md_thermostat 为 nhc
时必须;当 md_thermostat 为其他时,不需要。
默认值: 4
可选值: 正整数
描述:md_nhc_nchain 表示Nose-Hoover chain热浴的链的长度。
示例: “md_nhc_nchain”: 3
md_nhc_mass¶
参数名称: md_nhc_mass
值类型: float
是否必须: 当 md_thermostat 为 nhc
时必须;当 md_thermostat 为其他时,不需要。
默认值: 无
可选值: 正数
描述:md_nhc_mass 表示Nose-Hoover chain热浴的质量。
示例: “md_nhc_mass”: 3
2.1.25. neb¶
neb模块是与过渡态计算相关的设置,只有在job模块中的 calculation_type 为 neb
时才生效。
neb_num_images¶
参数名称: neb_num_images
值类型: int
是否必须: 是
默认值: 无
可选值: 大于2的正整数
描述:neb_num_images 表示NEB计算中使用结构的数目,包括初态结构、末态结构和所有中间态结构。建议设置为奇数。
示例: “neb_num_images”: 7
neb_num_images_given¶
参数名称: neb_num_images_given
值类型: int
是否必须: 是
默认值: 无
可选值: 大于等于2的正整数
描述:neb_num_images_given 表示NEB计算中输入结构的数目,包括初态结构、末态结构和用户指定的中间态结构。 neb_positions 的结构数目要与 neb_num_images_given 设定的值相同。
示例: “neb_num_images_given”: 3
neb_positions¶
参数名称: neb_positions
值类型: array{array{array{3*float}}}
是否必须: 是
默认值: 无
描述:neb_positions 用来设定NEB计算中的输入结构,分别为初态结构、中间态结构(可选)、末态结构,结构数目要与 neb_num_images_given 设定的值相同。 在NEB计算中,原子位置相关的信息都由 neb_positions 来设置,需要使用分数坐标,ions模块中的 positions 参数不起作用。
示例: “neb_positions”: [[[0.619442, 0, 0], [0, 0, 0], [0.380558, 0, 0]], [[0.870186, 0, 0], [0, 0, 0], [0.380558,0,0]]]
neb_coord_can_move¶
参数名称: neb_coord_can_move
值类型: array{array{3*bool}}
是否必须: 是
默认值: 无
描述:neb_positions 用来设定NEB计算中结构中哪些原子的坐标允许改变。顺序与 neb_positions 中的原子一一对应。
三个布尔值分别用来表示该原子位置在x、y、z方向是否可以移动。其中 true
表示这个原子在该方向可以移动; false
表示这个原子在该方向不可以移动。
示例: “neb_positions”: [[true, false, false], [true, false, false]]
neb_ci_scheme¶
参数名称: neb_ci_scheme
值类型: string
是否必须: 否
默认值: “no-CI”
可选值: no-CI/auto
描述:neb_ci_scheme 表示CI-NEB使用的算法。
其中 no-CI
表示不进行CI-NEB计算; auto
表示自动进行CI-NEB计算。
示例: “neb_ci_scheme”: “auto”
neb_opt_terminals¶
参数名称: neb_opt_terminals
值类型: bool
是否必须: 否
默认值: false
可选值: true/false
描述:neb_opt_terminals 用来设定NEB计算中是否优化初末态。
其中 true
表示优化初末态(不固定初末态); false
表示不优化初末态(固定初末态)。
示例: “neb_opt_terminals”: true
neb_path_conv¶
参数名称: neb_path_conv
值类型: float
是否必须: 否
默认值: 0.05
可选值: 正数
描述:neb_path_conv 表示NEB计算力的收敛标准。单位是eV/Å
示例: “neb_path_conv”: 0.05
neb_kmin¶
参数名称: neb_kmin
值类型: float
是否必须: 否
默认值: 0.1
可选值: 正数
描述:neb_kmin 和 neb_kmax 用于计算虚拟弹簧的弹性系数。当两者相等时,所有虚拟弹簧的弹性系数均为这个值。当两者不等时,能量最高的image会被赋予 neb_kmax 的值,能量最低的会被赋予 neb_kmin 的值,其他image根据能量,各自赋予一个中间的值,每根虚拟弹簧的弹性系数,是该弹簧连接的两个image上的值的平均。单位为Ry/bohr。
neb_kmax¶
参数名称: neb_kmax
值类型: float
是否必须: 否
默认值: 0.1
可选值: 正数
描述:neb_kmin 和 neb_kmax 用于计算虚拟弹簧的弹性系数。当两者相等时,所有虚拟弹簧的弹性系数均为这个值。当两者不等时,能量最高的image会被赋予 neb_kmax 的值,能量最低的会被赋予 neb_kmin 的值,其他image根据能量,各自赋予一个中间的值,每根虚拟弹簧的弹性系数,是该弹簧连接的两个image上的值的平均。单位为Ry/bohr。
neb_opt_scheme¶
参数名称: neb_opt_scheme
值类型: string
是否必须: 否
默认值: “quick-min”
可选值: quick-min/broyden
描述:neb_opt_scheme 表示NEB计算中结构演变使用的算法。
其中 quick-min
表示使用quick-min算法; broyden
表示使用broyden算法。
示例: “neb_opt_scheme”: “broyden”
neb_nstep_path¶
参数名称: neb_nstep_path
值类型: int
是否必须: 否
默认值: 100
可选值: 正整数
描述:neb_nstep_path 表示NEB计算中的最大步数。
示例: “neb_nstep_path”: 60
neb_opt_step_length¶
参数名称: neb_opt_step_length
值类型: float
是否必须: 否
默认值: 1.0
可选值: 正数
描述:neb_opt_step_length 表示NEB计算中结构演变的步长。
示例: “neb_opt_step_length”: 0.5
neb_broyden_ndim¶
参数名称: neb_broyden_ndim
值类型: int
是否必须: 当 neb_opt_scheme 是 broyden
时可选,当 neb_opt_scheme 是 quick-min
时不需要。
默认值: 5
可选值: 正整数
描述:neb_broyden_ndim 用来设定NEB计算中使用broyden算法时记录的历史步数。
示例: “neb_broyden_ndim”: 6
neb_first_energy¶
参数名称: neb_first_energy
值类型: float
是否必须: 当 neb_opt_terminals 是 false
时需要,是 true
时不需要。
默认值: 0
描述:neb_first_energy 用来设定NEB计算中初态的能量,单位是Ha。
示例: “neb_first_energy”: -23.4573
neb_last_energy¶
参数名称: neb_last_energy
值类型: float
是否必须: 当 neb_opt_terminals 是 false
时需要,是 true
时不需要。
默认值: 0
描述:neb_last_energy 用来设定NEB计算中末态的能量,单位是Ha。
示例: “neb_last_energy”: -23.4573
2.1.26. solvation¶
solvation是和隐式溶剂化计算相关的设置,只有在job模块中的 do_solvation 为 true
时才生效。
solvation_epsilon¶
参数名称: solvation_epsilon
值类型: float
是否必须: 是
描述:solvation_epsilon 表示隐式溶剂化模型中溶剂的相对介电常数。对于常见溶剂,这个都有实验值,如水的相对介电常数在80左右,常取78或78.4。
示例: “solvation_epsilon”: 78.4
solvation_gamma¶
参数名称: solvation_gamma
值类型: float
是否必须: 否
默认值: 0.0
单位: mN/m
描述:solvation_gamma 对应隐式溶剂化模型中的“表面张力项”,但这其实是若干形式相同的项的加和,因此并不对应实际溶剂的表面张力,而是需要实验拟合。例如,水的表面张力约为72,但文献给出的这项的推荐值是50。如果设为0.0,则在计算中不考虑“表面张力项”。
示例: “solvation_gamma”: 50.0
solvation_P¶
参数名称: solvation_P
值类型: float
是否必须: 否
默认值: 0.0
单位: GPa
描述:solvation_P 对应隐式溶剂化模型中的“压强项”,和“表面张力项”类似,也没有真正的直接物理对应,需要实验拟合。对于水,文献给出的这项的推荐值是-0.35。如果设为0.0,则在计算中不考虑“压强项”。
示例: “solvation_P”: -0.35
solvation_need_electrolyte¶
参数名称: solvation_need_electrolyte
值类型: bool
是否必须: 否
默认值: false
可选值: true/false
描述:solvation_need_electrolyte 用来设定隐式溶剂化模型中是否有电解质离子。
其中 true
表示有电解质离子; false
表示没有电解质离子。
当有电解质离子时,体系的静电场会影响电解质离子的排布,从而反过来又对体系产生影响。这时候需要以下额外参数:solvation_temperature, solvation_charges 和 solvation_c_bulk。
示例: “solvation_need_electrolyte”: false
solvation_temperature¶
参数名称: solvation_temperature
值类型: float
是否必须: 当 solvation_need_electrolyte 是 true
时必须,当 solvation_need_electrolyte 是 false
时不需要。
描述:solvation_temperature 用来设定隐式溶剂化模型中,计算电解质离子分布时使用的温度。
solvation_charges¶
参数名称: solvation_charges
值类型: array{float}
是否必须: 当 solvation_need_electrolyte 是 true
时必须,当 solvation_need_electrolyte 是 false
时不需要。
描述:solvation_charges 用来设定隐式溶剂化模型中,电解质离子的电荷数。如NaCl溶液中,Na对应+1,Cl对应-1。
示例: “solvation_charges”: [1, -2]
solvation_c_bulk¶
参数名称: solvation_c_bulk
值类型: array{float}
是否必须: 当 solvation_need_electrolyte 是 true
时必须,当 solvation_need_electrolyte 是 false
时不需要。
描述:solvation_c_bulk 用来设定隐式溶剂化模型中,电解质离子的体相浓度。如1mol/L的MgCl2溶液,Mg对应1mol/L,Cl对应2mol/L。 注意,solvation_charges和solvation_c_bulk,加起来应该满足电中性。
示例: “solvation_c_bulk”: [2.2, 1.1]
2.1.27. dimer¶
dimer是和dimer方法计算过渡态相关的设置,只有在job模块中的 calculation_type 为 dimer
时才生效。
dimer方法的出发点是,过渡态的定义,是只在一个方向(振动模式)上是能量极大值(IRC,内禀反应坐标),在其他所有方向上都是能量极小值。
dimer方法的思想,是找两个很接近的构型(dimer),最终使得两个构型的中点是过渡态,而连线方向是IRC的方向。
具体做法是,给定初始中点位置(通过 cell 和 ions),初始振动模式,以及两点间的距离,就可以得到初始的dimer。
在每一个dimer的位置上,先旋转dimer直至满足特定标准(这个本身也要通过迭代得到),然后将其按特定标准进行一定量的平移,如此重复直至计算收敛。具体可参见Henkelman等人的paper。
dimer_init_mode¶
参数名称: dimer_init_mode
值类型: array{array{float}}
是否必须: 是
描述:dimer_init_mode 表示初始振动模式。
示例: “dimer_init_mode”: [[ 0.000004, -0.000001, 0.511990],[ 0.000000, -0.000003, 0.547859],[-0.000004, -0.000001, 0.511988],[ 0.000000, 0.000000, -0.111986]]
dimer_dist¶
参数名称: dimer_dist
值类型: float
是否必须: 否
默认值: 0.02
描述:dimer_dist 表示两点间的距离。单位为波尔半径。
示例: “dimer_dist”: 0.02
dimer_max_steps¶
参数名称: dimer_max_steps
值类型: int
是否必须: 否
默认值: 100
描述:dimer_max_steps 表示dimer最大步数(旋转+平移是一步)。
示例: “dimer_max_steps”: 100
dimer_max_rotation_steps¶
参数名称: dimer_max_rotation_steps
值类型: int
是否必须: 否
默认值: 10
描述:dimer_max_rotation_steps 表示dimer的旋转中,最大迭代步数。
示例: “dimer_max_rotation_steps”: 10
dimer_min_rotation¶
参数名称: dimer_min_rotation
值类型: float
是否必须: 否
默认值: 0.01
描述: dimer里面的旋转中,当计算得到的转角小于 dimer_min_rotation 时,认为旋转已经收敛。单位是弧度。
示例: “dimer_min_rotation”: 0.01
dimer_step_length¶
参数名称: dimer_step_length
值类型: float
是否必须: 否
默认值: 0.02
描述:dimer_step_length 表示平移步的步长。单位是玻尔半径。
示例: “dimer_step_length”: 0.02
2.1.28. para¶
para是和并行相关的设置。
para_n_image_groups¶
参数名称: para_n_image_groups
值类型: int
是否必须: 否
默认值: 1
描述:para_n_image_groups 在NEB计算时,对image并行时,把需要计算的image分成几个组。参数值需要能被image个数整除。
示例: “para_n_image_groups”: 2
2.1.29. charge_replace¶
charge_replace是和电荷密度取代有关的设置,只有在job模块中的 charge_replace 为 true
时才生效。
change_type¶
参数名称: change_type
值类型: string
是否必须: 是
可选值: change_atom/change_cell/change_pos
描述:change_type 在使用电荷密度取代算法时,相对于原本的体系,新体系有什么变化。
其中 change_atom
表示使用体系只有原子种类、个数等有变化; change_cell
表示使用体系只有晶胞有变化,包括晶格常数变化和扩展超胞; change_pos
表示使用体系只有原子位置有变化。
示例: “change_type”: “change_atom”
注意
当前不支持同时对体系进行晶胞和原子的变化。如果体系同时发生了原子种类、个数、位置变化,那么应该使用 change_atom
,将有位置变化的原子先删除,再在新的位置添加该原子。
added_atoms¶
参数名称: added_atoms
值类型: array{int}
是否必须: 否
默认值: []
描述:added_atoms 相对于原本的体系,新体系增加了哪些原子。对应的新的输入文件中,原子位置 positions
里的序号,编号从1开始。0表示没有添加原子。
示例: “added_atoms”: [1, 3]
deleted_atoms¶
参数名称: deleted_atoms
值类型: array{int}
是否必须: 否
默认值: []
描述:deleted_atoms 原本的体系中哪些原子被删除了。对应的原本结构中,原子位置 positions
里的序号,编号从1开始。0表示没有原子被删除。
示例: “deleted_atoms”: [1, 3]
注意
added_atoms
和 deleted_atoms
需要一一对应。例如 “added_atoms”: [1, 3, 0] 和 “deleted_atoms”: [0, 4, 5],表示新的输入文件中,1号原子是新增的,3号原子替换了原来输入文件中的4号原子,原来输入文件中的5号原子被删除了。
past_ele¶
参数名称: past_ele
值类型: array{int}
是否必须: 否
默认值: []
描述:past_ele 表示 deleted_atoms 对应的新的元素名称 element_names
里的序号,编号从1开始。
示例: “past_ele”: [2]
注意
past_ele
和 deleted_atoms
需要一一对应。例如 “deleted_atoms”: [4, 5, 0] 和 “past_ele”: [2, 1, 0],表示删除的原来输入文件的第4、5号原子,分别对应的新的输入文件中的第2、1个元素,0表示没有删除原子,对应的元素也需要填为0。
added_atoms/ deleted_atoms /past_ele 的示例
示例1:原子替换
原本的结构:
“element_names”: [“Li”, “Co”, “O”]
“element_nums”: [6, 6, 12]
新的结构:
“element_names”: [“W”, “Li”, “Co”, “O”]
“element_nums”: [1, 5, 6, 12]
参数示例:
“added_atoms”: [1]
“deleted_atoms”: [1]
“past_ele”: [2]
示例2:原子删除
原本的结构:
“element_names”: [“Li”, “Co”, “O”]
“element_nums”: [6, 6, 12]
新的结构:
“element_names”: [“Li”, “Co”, “O”]
“element_nums”: [4, 6, 12]
参数示例:
“added_atoms”: [0, 0]
“deleted_atoms”: [1, 3]
“past_ele”: [1, 1]
示例3:原子添加
原本的结构:
“element_names”: [“Li”, “Co”, “O”]
“element_nums”: [6, 6, 12]
新的结构:
“element_names”: [“Li”, “Ni, “Co”, “O”]
“element_nums”: [6, 1, 6, 12]
参数示例:
“added_atoms”: [7]
“deleted_atoms”: [0]
“past_ele”: [0]
cell_times¶
参数名称: cell_times
值类型: array{int}
是否必须: 否
默认值: [1,1,1]
描述:cell_times 表示在晶胞变化时,abc三个方向的扩胞倍数。如果晶胞没有扩胞,只是发生了形变,需要设置为[1,1,1]
示例: “cell_times”: [1, 3, 2]
use_uns_connect¶
参数名称: use_uns_connect
值类型: bool
是否必须: 否
可选值: true/false
默认值: false
描述:use_uns_connect 表示是否输入uns对应关系。
true
表示输入uns对应关系; false
表示不输入uns对应关系。
uns_connect¶
参数名称: uns_connect
值类型: array{array}
是否必须: 否
默认值: []
描述:uns_connect 表示uns对应关系列表。 例如:[[5,[9,10]],[6,[11,12]]],这意味着新任务的9,10原子使用过去任务5原子的uns,新任务的11,12原子使用过去任务6原子的uns。
示例: “uns_connect”: [[5,[9,10]],[6,[11,12]],[7,[13,14]],[8,[15,16]]]