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的参数的值的类型分为以下几种

  1. string:字符串(在双引号中)。例如: “calculation_type”: “scf”。

  2. bool:布尔型。只有true和false。例如: “plus_u”: false。

  3. int:整数。例如: “elec_max_steps”: 100。

  4. float:实数。例如: “smearing_width”: 0.005。

  5. array:数组(在中括号中)。例如: “k_mesh”: [4, 4, 4]。

下面将分块介绍参数文件


charge_replace


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_typedos 时使用; tetra 表示使用四面体方法; smearing 表示使用拖尾方法。

示例: “occupation_method”: “insulator”

calc_force

参数名称: calc_force

值类型: bool

是否必须:

默认值:calculation_typerelax/vc_relax/neb/md 时默认为 truecalculation_type 为其他时默认为 false

可选值: true/false

描述:calc_force 选择本次计算是否计算原子受力。 其中 true 表示计算原子受力; false 表示不计算原子受力。

示例: “calc_force”: false

calc_stress

参数名称: calc_stress

值类型: bool

是否必须:

默认值:calculation_typevc_relax 时默认为 truecalculation_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_initfile 时必须;当 rho_initatomic 时不需要。

默认值:

描述: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_initfile 时必须;当 uns_initatomic 时不需要。

描述: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_typelattice 时必须;当 cell_typeparameters 时不需要。

默认值:

描述: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_typeparameters 时必须;当 cell_typelattice 时不需要。

默认值:

描述: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 输入的晶格常数或晶格矢量矩阵的单位。 其中 Aangstrom 表示晶格常数以Å为单位; Bbohr 表示晶格常数以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_typescf/band/dos/pdos/relax/vc_relax/md 时必须,当 calculation_typeneb 时不需要。

默认值:

描述:positions 结构中每个原子的位置和是否固定,顺序与 element_nameselement_nums 中一一对应。 positions 分为两个部分,第一部分为前三个实数,用来表示原子位置,需要使用分数坐标; 第二部分为后三个字符串(非必须输入),分别用来表示原子位置在x、y、z方向是否可以移动,只在固定晶格结构优化计算中生效,,即 calculation_typerelax 时使用,变晶格结构优化时不能使用。 这三个字符串的可选值是 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_typeautomatic/coord_mesh 时必须,当 k_typecoord/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_typecoord/path 时必须,当 k_typeautomatic/coord_mesh 时不需要。

默认值:

描述:k_data 为一个4个数组成的数组。 当 k_typecoord 时,用户需要在 k_data 中设置计算用的每个k点的坐标与权重,前三个值是k点坐标,第四个值是k点权重。 当 k_typepath 时,用户需要在 k_data 中设置计算用的每个高对称k点和高对称点之间的连线的k点数量,前三个值是高对称k点坐标,第四个值这个高对称点到下个高对称点之间的连线的k点数量。

示例:k_typecoord

"k_data": [
        [
            0,
            0,
            0,
            0.5
        ],
        [
            0.5,
            0,
            0.5,
            0.25
        ],
        [
            0.5,
            0.25,
            0.75,
            0.25
        ]
    ]

k_typepath

"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_methodsmearing 时,会自动把空带数目设置为价带数目的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_methodsmearing 时,必须要设置; 如果 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_type2 时才生效。

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_nameselement_nums 中一一对应。 赝势文件会提供一个元素产生的总电荷密度,当进行线性磁性计算时,如果 rho_initatomic ,会使用这个电荷密度来产生初始电荷密度,将其分成up和down两部分,本参数描述了这个分法,其值的意义是该原子或元素自旋向上的电子数-自旋向下的电子数,再除以该原子或元素的总电子数。

mag_init_value = (\(\rho\)up - \(\rho\)down)/\(\rho\)all

rho_initfile 时,初始磁矩会从电荷密度文件中读取,本参数不生效。

示例: “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_constraintrue 时必须,为 false 时不必须。

默认值:

描述:mag_constrained_atoms 表示是否要对哪些原子约束磁矩。数组中为 positions 原子的序号,起始原子位置序号为1。

示例: “mag_constrained_atoms”: [1, 5]

mag_lambda

参数名称: mag_lambda

值类型: bool

是否必须:

默认值: false

可选值: true/fasle

描述:mag_lambda 表示是否要约束磁矩的能量惩罚项的系数。单位为Hartree。

\[E= \lambda\sum_{i_a} (\sigma_{i_a}-\sigma'_{i_a})^2\]

这里的σ’就是 mag_init_typemag_init_value 得到的值。

示例: “mag_lambda”: 1

2.1.9. hubbard

hubbard模块是和+U有关的设置,只有在job模块中的 plus_utrue 时才生效。

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_gtrue 时才生效。

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_algbfgs_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_typescf 时,默认值是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模块中的 occupationsmearing 时才生效。

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。 mpmv 这两种方法,对于绝缘体不适合。

示例: “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_typedos 时才生效。

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_typepdos 时才生效。

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_typecohp 时才生效。

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_typerelax/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_typevc_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_slabtrue 时才生效。

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_slabtrue 并且在slab模块中的 slab_corr_methoddipole 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_locpef_max_loc + pef_dec_regian_leng 电场强度下降,然后电场强度上升到 pef_max_loc + 1 。电场在下降和上升的转变点必须设置在真空层当中。

示例: “pef_dec_region_leng”: 0.2

2.1.24. md

md模块是与分子动力学计算相关的设置,只有在job模块中的 calculation_typemd 时才生效。

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_ensemblenvt 时,只能设置为 leapfrog

示例: “md_integrate_alg”: verlet

md_thermostat

参数名称: md_thermostat

值类型: string

是否必须:md_ensemblenvt 时必须; 当 md_ensemblenve 时不需要。

默认值:

可选值: 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_thermostatlangevin 时必须;当 md_thermostat 为其他时,不需要。

默认值:

可选值: 正数

描述:md_langevin_gamma_ln 表示Langevin热浴的摩擦系数。

示例: “md_langevin_gamma_ln”: 2

md_nh_mass

参数名称: md_nh_mass

值类型: float

是否必须:md_thermostatnosehoover 时必须;当 md_thermostat 为其他时,不需要。

默认值: 根据体系自由度和温度自动计算

可选值: 正数

描述:md_nh_mass 表示Nose-Hoover热浴的质量。

示例: “md_nh_mass”: 0.5

md_nhc_nchain

参数名称: md_nhc_nchain

值类型: float

是否必须:md_thermostatnhc 时必须;当 md_thermostat 为其他时,不需要。

默认值: 4

可选值: 正整数

描述:md_nhc_nchain 表示Nose-Hoover chain热浴的链的长度。

示例: “md_nhc_nchain”: 3

md_nhc_mass

参数名称: md_nhc_mass

值类型: float

是否必须:md_thermostatnhc 时必须;当 md_thermostat 为其他时,不需要。

默认值:

可选值: 正数

描述:md_nhc_mass 表示Nose-Hoover chain热浴的质量。

示例: “md_nhc_mass”: 3

2.1.25. neb

neb模块是与过渡态计算相关的设置,只有在job模块中的 calculation_typeneb 时才生效。

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_kminneb_kmax 用于计算虚拟弹簧的弹性系数。当两者相等时,所有虚拟弹簧的弹性系数均为这个值。当两者不等时,能量最高的image会被赋予 neb_kmax 的值,能量最低的会被赋予 neb_kmin 的值,其他image根据能量,各自赋予一个中间的值,每根虚拟弹簧的弹性系数,是该弹簧连接的两个image上的值的平均。单位为Ry/bohr。

neb_kmax

参数名称: neb_kmax

值类型: float

是否必须:

默认值: 0.1

可选值: 正数

描述:neb_kminneb_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_schemebroyden 时可选,当 neb_opt_schemequick-min 时不需要。

默认值: 5

可选值: 正整数

描述:neb_broyden_ndim 用来设定NEB计算中使用broyden算法时记录的历史步数。

示例: “neb_broyden_ndim”: 6

neb_first_energy

参数名称: neb_first_energy

值类型: float

是否必须:neb_opt_terminalsfalse 时需要,是 true 时不需要。

默认值: 0

描述:neb_first_energy 用来设定NEB计算中初态的能量,单位是Ha。

示例: “neb_first_energy”: -23.4573

neb_last_energy

参数名称: neb_last_energy

值类型: float

是否必须:neb_opt_terminalsfalse 时需要,是 true 时不需要。

默认值: 0

描述:neb_last_energy 用来设定NEB计算中末态的能量,单位是Ha。

示例: “neb_last_energy”: -23.4573

2.1.26. solvation

solvation是和隐式溶剂化计算相关的设置,只有在job模块中的 do_solvationtrue 时才生效。

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_temperaturesolvation_chargessolvation_c_bulk

示例: “solvation_need_electrolyte”: false

solvation_temperature

参数名称: solvation_temperature

值类型: float

是否必须:solvation_need_electrolytetrue 时必须,当 solvation_need_electrolytefalse 时不需要。

描述:solvation_temperature 用来设定隐式溶剂化模型中,计算电解质离子分布时使用的温度。

solvation_charges

参数名称: solvation_charges

值类型: array{float}

是否必须:solvation_need_electrolytetrue 时必须,当 solvation_need_electrolytefalse 时不需要。

描述:solvation_charges 用来设定隐式溶剂化模型中,电解质离子的电荷数。如NaCl溶液中,Na对应+1,Cl对应-1。

示例: “solvation_charges”: [1, -2]

solvation_c_bulk

参数名称: solvation_c_bulk

值类型: array{float}

是否必须:solvation_need_electrolytetrue 时必须,当 solvation_need_electrolytefalse 时不需要。

描述: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_typedimer 时才生效。

dimer方法的出发点是,过渡态的定义,是只在一个方向(振动模式)上是能量极大值(IRC,内禀反应坐标),在其他所有方向上都是能量极小值。

dimer方法的思想,是找两个很接近的构型(dimer),最终使得两个构型的中点是过渡态,而连线方向是IRC的方向。

具体做法是,给定初始中点位置(通过 cellions),初始振动模式,以及两点间的距离,就可以得到初始的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_replacetrue 时才生效。

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_atomsdeleted_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_eledeleted_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]]]