跳转到主要内容

电子结构计算的综合I/O验证器

项目描述

pymatgen-io-validation

此包是 pymatgen 的扩展,用于执行 I/O 验证。具体来说,此包检查特定计算与提供的输入集之间的差异;它还检查在组合使用某些输入参数时存在的已知错误,以及一些其他小检查。创建此包的动机是为了确保材料项目(MP)外部小组执行的 VASP 计算符合 MP 数据,从而使他们的原始数据能够包含在 MP 数据库中。

安装

您可以通过运行以下命令安装此包:

pip install pymatgen-io-validation

用法

对于验证来自原始文件的计算,请运行

from pymatgen.io.validation import ValidationDoc
validation_doc = ValidationDoc.from_directory(dir_name = path_to_vasp_calculation_directory)

在上面的例子中,可以通过 validation_doc.valid 访问计算是否通过验证器。此外,可以通过 validation_doc.reasons 访问未验证计算的原因(对于有效的计算,这将为空)。最后但同样重要的是,可以通过 validation_doc.warnings 访问潜在问题的警告(有时是轻微的,有时是重大的)。

对于验证来自 TaskDoc 对象的计算(来自 Emmet 包),请运行

from pymatgen.io.validation import ValidationDoc
validation_doc = ValidationDoc.from_task_doc(task_doc = my_task_doc)

贡献者

理由

参数 原因
ADDGRID ADDGRID 必须设置为 False。MP 使用 ADDGRID = False,因为 VASP 手册中提到“请勿在所有计算中使用此标记 [ADDGRID]!”。ADDGRID 可能会影响输出的力,因此所有计算都必须将 ADDGRID 设置为 False 以确保兼容性。
AEXX / AMGGAX / AMGGAC / AGGAX / ALDAC / ALDAX 除非在特定的 MP 输入集中指定,否则这些参数应该是 VASP 的默认值,因为更改它们实际上是改变了理论水平。
ALGO / IALGO ALGO 必须是以下之一:“Normal”、“Conjugate”、“All”、“Fast”、“Exact”。(这分别对应于 IALGO 的 38、58、58、68、90)。
DEPER / EBREAK / WEIMIN 根据 VASP 维基,不应更改 DEPER、EBREAK 和 WEIMIN,因此 MP 要求它们保持为默认值。
EDIFF EDIFF 必须等于或大于相关 MP 输入集中的值。这将确保与 MP 数据库中的结果兼容。
EDIFFG 应与相关 MP 输入集中的值相同或更好。对于基于能量的截止值的 MP 输入集,计算的最后两个步骤之间的能量变化必须小于指定的 EDIFFG(即使您的计算使用基于力的收敛,能量也必须在 MP 输入集的规范内收敛)。相同的逻辑适用于具有基于力的 EDIFFG 设置的 MP 输入集。
EFERMI EFERMI 必须是以下之一:“LEGACY”、“MIDGAP”
EFIELD 用于构建主要 MP 数据库的当前 MP 输入集没有设置 EFIELD,因此我们要求将其取消设置或设置为 0。
ENAUG 如果相关 MP 输入集中存在 ENAUG,则计算中的 ENAUG 必须等于或优于该值。
ENCUT ENCUT 必须等于或大于相关 MP 输入集中的值,否则结果可能无法与 MP 兼容。
ENINI ENINI不应为高通量计算进行调整,因此应保持等于相关MP输入集中使用的ENCUT值。相关MP输入集中的ENCUT值以上的值也将被接受,尽管我们预计这种情况很少见,并且不推荐这样做。
EPSILON EPSILON必须设置为VASP默认值1。改变介质的介电常数将导致结果与MP不兼容。
GGA / METAGGA 使用的理论水平必须与相关MP输入集匹配。此外,GGA和METAGGA不应同时设置,因为这已被证明会导致严重错误的结果。有关更多详细信息,请参阅https://github.com/materialsproject/atomate2/issues/453#issuecomment-1699605867
GGA_COMPAT GGA_COMPAT必须设置为VASP默认值True。VASP手册仅推荐在非偶极磁性计算中将此设置为False,但这些计算目前未包含在MP数据库中。
IBRION IBRION的值必须是:-1、1、2。其他IBRION值对应于未包含在MP数据库中的非标准DFT计算形式。(请注意,虽然声子数据包含在MP数据库中,但这些值不是使用,例如,IBRION = 5来计算的。这种逻辑适用于所有其他不允许的IBRION值)。
ICHARG ICHARG必须设置以与计算类型兼容。例如,如果相关MP输入集是用于SCF计算,则必须使用ICHARG $\leq 9$。对于NSCF计算,ICHARG的值必须与相关MP输入集中包含的值完全匹配。
ICORELEVEL ICORELEVEL必须设置为0。MP不显式计算核心能量。
IDIPOL IDIPOL必须设置为0(VASP默认值)。
IMAGES IMAGES必须设置为0以与MP计算匹配。
INIWAV INIWAV必须设置为VASP默认值1,以确保与MP计算的一致性。
ISPIN 所有ISPIN的值都被允许,但应注意的是,几乎所有MP计算都允许自旋对称性打破,并具有铁磁、反铁磁或非磁性序。
ISMEAR 适当的ISMEAR取决于材料的带隙(这事先是无法知道的)。根据VASP手册:对于金属(带隙=0),[0, 1, 2]范围内的任何ISMEAR值都是可接受的。对于非金属(带隙>0),[-5, 0]范围内的任何ISMEAR值都是可接受的。因此,对于执行正常松弛/静态计算并希望确保其计算与MP兼容的用户,我们建议将ISMEAR设置为0。
ISIF MP允许任何ISIF $\geq 2$。这种限制仅仅是因为所有ISIF $\geq 2$的值都输出完整的应力张量。
ISYM ISYM必须是-1、0、1、2之一,除非相关MP输入集使用混合泛函,在这种情况下,ISYM=3也是允许的。
ISTART ISTART必须是0、1、2之一。
IVDW IVDW必须设置为0。MP目前不应用任何vdW色散校正。
IWAVPR IWAVPR必须设置为0(默认值)。VASP不建议用户设置此标签。
KGAMMA KGAMMA必须设置为True(VASP默认值)。这仅在未使用KPOINTS文件时相关。
KSPACING / KPOINTS KSPACING参数或KPOINTS文件必须至少对应于相关MP输入集指定的非对称简化布里渊区中KPOINTS数量的0.9倍(即不是第一布里渊区不可约楔的K点数量)。因此,可以选择指定KPOINTS的任何一种方法。这确保了计算使用与MP相当数量的k点。
K点网格类型(对于KPOINTS) K点网格的类型必须适用于计算中晶体结构的对称性。例如,对于六方密堆积结构,必须使用$\Gamma$中心网格。使用Pymatgen生成的所有K点都应该有效。
LASPH LASPH必须设置为True(这不是VASP的默认设置)。
LCALCEPS LCALCEPS必须设置为False(这是VASP的默认设置)。
LBERRY LBERRY必须设置为False(这是VASP的默认设置)。
LCALCPOL LCALCPOL必须设置为False(这是VASP的默认设置)。
LCHIMAG LCHIMAG必须设置为False(这是VASP的默认设置)。
LCORR LCORR在IALGO=58的计算中必须设置为True(这是VASP的默认设置)。
LDAU / LDAUU / LDAUJ / LDAUL / LDAUTYPE 对于DFT$+U$计算,所有与$+U$或$+J$校正相关的参数必须与相关MP输入集中指定的参数完全匹配。或者,LDAU = False(DFT)总是可接受的。
LDIPOL LDIPOL必须设置为False(这是VASP的默认设置)。
LMONO LMONO必须设置为False(这是VASP的默认设置)。
LEFG LEFG必须设置为False(这是VASP的默认设置),除非相关MP输入集明确指定为True。
LEPSILON LEPSILON必须设置为False(这是VASP的默认设置),除非相关MP输入集明确指定为True。
LHFCALC LHFCALC的值应与相关MP输入集中的值相匹配,否则将导致计算中应用的理论水平发生变化。
LHYPERFINE LHYPERFINE必须设置为False(这是VASP的默认设置)。
LKPROJ LKPROJ必须设置为False(这是VASP的默认设置)。
LKPOINTS_OPT LKPOINTS_OPT必须设置为False。
LMAXPAW LMAXPAW必须保持未指定,因为VASP维基百科指出:“应使用LMAXPAW的默认设置来评估能量”。
LMAXMIX LMAXMIX必须设置为6。这是基于Aaron Kaplan(@esoteric-ephemera)的测试——请参阅https://github.com/materialsproject/pymatgen/issues/3322中的"bench_vasp_pars.docx"文档。
LMAXTAU LMAXTAU必须设置为6(这是使用LASPH = True时的VASP默认值)。
LMP2LT / LSMP2LT 两者都必须设置为False(这是VASP的默认设置)
LNONCOLLINEAR / LSORBIT 两者都必须设置为False(这是VASP的默认设置)
LOCPROJ LOCPROJ必须设置为None(这是VASP的默认设置)。
LOPTICS LOPTICS必须设置为False(这是VASP的默认设置),除非相关MP输入集明确指定。
LORBIT 如果用户还设置了ISPIN=2,则LORBIT不能为None,否则所有LORBIT的值都是可接受的。这是因为在ISPIN=2和LORBIT = None同时设置时,不会输出磁化值。
LREAL 如果相关MP输入集中的LREAL是“Auto”,则用户必须是“Auto”或False之一。否则,如果相关MP输入集中的LREAL是False,则用户必须使用False。
LRPA LRPA必须设置为False(这是VASP的默认设置)。MP目前不支持随机相近似(RPA)计算。
LSPECTRAL LSPECTRAL必须设置为False(这是大多数计算的VASP默认设置)。
LSUBROT LSUBROT必须设置为False(这是VASP的默认设置)。
MAGMOM 允许任何初始磁矩,但任何给定原子的最终总磁矩必须小于5 $\mu_B$(玻尔磁子)(除了Gd和Eu元素,必须小于10 $\mu_B$)。这只是一个过滤错误数据的方法。
ML_LMFF ML_LMFF必须设置为False(这是VASP的默认设置)。
NGX / NGY / NGZ NGX/NGY/NGZ的值必须至少是VASP生成相应参数的默认值的0.9倍。如果用户没有指定这些参数,计算应该与MP数据兼容。
NGFX / NGFY / NGFZ NGFX/NGFY/NGFZ的值必须至少是VASP生成的相应参数默认值的0.9倍。如果用户根本未指定这些参数,计算应与MP数据兼容。
NLSPLINE NLSPLINE应设置为False(VASP默认值),除非由相关的MP输入集明确指定。
NBANDS NBANDS必须大于$\mathrm{ceil}(\mathrm{NELECT}/2) + 1$(避免简并的最小允许带数)且小于4倍(避免简并的最小允许带数)。对于高通量计算,通常建议不直接设置此参数。有关更多信息,请参阅https://github.com/materialsproject/custodian/issues/224
NELECT NELECT的值不得改变为VASP为特定结构和计算伪势能所使用的默认值。确保NELECT符合MP数据的最简单方法是简单地不在INCAR文件中指定NELECT。
NWRITE NWRITE必须设置为$\geq 2$(VASP默认值是2)。
POTIM POTIM $\leq 5$。我们建议不要在INCAR文件中设置POTIM,而是允许VASP将其设置为默认值0.5。
PSTRESS PSTRESS必须设置为正好是0.0(VASP默认值)。
PREC PREC必须是以下之一:“High”,“Accurate”。
ROPT ROPT应设置为小于或等于默认ROPT值(该值基于PREC标记设置)。因此,建议不要在INCAR文件中设置ROPT标记。
RWIGS RWIGS不应在INCAR文件中设置。
SCALEE SCALEE不应在INCAR文件中设置。
SYMPREC SYMPREC必须小于或等于1e-3(这是截至2024年3月Custodian包将SYMPREC设置为的最大值)。对于通用用途,我们建议将SYMPREC保留为您所需MP输入集生成的默认值。
SIGMA 设置SIGMA有一些规则
  1. SIGMA对于非金属(带隙$> 0$)必须$\leq 0.05$。
  2. SIGMA对于金属(带隙=0)必须$\leq 0.2$。
  3. 对于金属,SIGMA值必须足够小,以至于能量中的熵项$\leq$ 1 meV/atom(如VASP手册建议)。
VCA MP数据不包括VASP的虚晶近似(VCA)计算。因此,此参数不应设置。
VASP版本 允许以下版本的VASP:5.4.4或$>$ 6.0.0。例如,版本$<=$ 5.4.3不允许,而版本6.3.1是允许的。

项目详情


下载文件

下载您平台上的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源分发

pymatgen_io_validation-0.0.4.tar.gz (46.2 KB 查看散列值

上传时间

构建分发

pymatgen_io_validation-0.0.4-py3-none-any.whl (40.8 KB 查看散列值

上传时间 Python 3

支持者