CP2K

(供稿人 Felipe zapata.,延伸 帕特里克梅西克)

设置

cp2k 与其他计算代码相比,输入相当复杂,但其输入构造为一组嵌套块和子块,可以容易地由 设置 class. 像其他接口一样, CP2K 输入文件是使用的 输入 作业设置的分支。 例如,五偏的单点计算:

penta = 设置()

penta.输入.force_eval.dft.basis_set_file_name = "/path/to/basis"
penta.输入.force_eval.dft.potential_set_file_name = "/path/to/potential"
penta.输入.force_eval.dft.mgrid.cutoff = 400
penta.输入.force_eval.dft.mgrid.ngrids = 4
penta.输入.force_eval.dft.poisson = 设置()
penta.输入.force_eval.dft.localize._h = "T"


penta.输入.force_eval.qs.method = "GPW"
penta.输入.force_eval.scf.eps_scf = 1e-6
penta.输入.force_eval.scf.max_scf = 200
penta.输入.force_eval.xc.xc_functional = "PBE"

penta.输入.force_eval.subsys.cell.A = [16.11886919, 0.07814137, -0.697284243]
penta.输入.force_eval.subsys.cell.B = [-0.215317662, 4.389405268, 1.408951791]
penta.输入.force_eval.subsys.cell.C = [-0.216126961, 1.732808365, 9.74896108]
penta.输入.force_eval.subsys.cell.periodic = 'XYZ'
penta.输入.force_eval.subsys.kind.C.basis_set = "DZVP-MOLOPT-SR-GTH-Q4"
penta.输入.force_eval.subsys.kind.C.basis_set = "GTH-PBE-Q4"
penta.输入.force_eval.subsys.kind.H.basis_set = "DZVP-MOLOPT-SR-GTH-Q1"
penta.输入.force_eval.subsys.kind.H.basis_set = "GTH-PBE-q1"
penta.输入.force_eval.subsys.topology.coord_file_name = "./penta.xyz"
penta.输入.force_eval.subsys.topology.coordinate = "xyz"

penta.输入.['global'].print_level = "low"
penta.输入.['global'].project  = "example"
penta.输入.['global'].run_type = "energy_force"

执行期间生成的输入 cp2k job is similar to:

&FORCE_EVAL
  &DFT
    BASIS_SET_FILE_NAME  /path/to/basis
    &MGRID
      CUTOFF  400
      NGRIDS  4
    &结尾
    &POISSON
    &结尾
    &LOCALIZE T
    &结尾
    POTENTIAL_FILE_NAME  /path/to/potential
    &QS
      METHOD  GPW
    &结尾
    &SCF
      EPS_SCF  1e-06
      MAX_SCF  200
    &结尾
    &XC
      &XC_FUNCTIONAL PBE
      &结尾
    &结尾
  &结尾
  &SUBSYS
    &CELL
      A  16.11886919 0.07814137 -0.697284243
      B  -0.215317662 4.389405268 1.408951791
      C  -0.216126961 1.732808365 9.748961085
      PERIODIC  XYZ
    &结尾
    &种类  C
      BASIS_SET  DZVP-MOLOPT-SR-GTH-q4
      POTENTIAL  GTH-PBE-q4
    &结尾
    &种类  H
      BASIS_SET  DZVP-MOLOPT-SR-GTH-q1
      POTENTIAL  GTH-PBE-q1
    &结尾
    &拓扑
      罗_FILE_NAME  ./geometry.xyz
      罗INATE  XYZ
    &结尾
  &结尾
&结尾

&GLOBAL
  PRINT_LEVEL  LOW
  PROJECT  example
  RUN_TYPE  ENERGY_FORCE
&结尾

Plams自动与特殊字符一起创建前面示例的缩进结构 & 在每个部分的开头和结尾,最后是关键字 结尾 在每个部分结束时。

注意 CP2K 要求将基础的明确声明与电荷和每个原子中的每个原子的潜力的名称一起集合。 在前面的示例中,碳的基础是 DZVP-MOLOPT-SR-GTH,虽然潜力是 GTH-PBE. 和费用 q4.

输入解析器还允许在此示例中相同的标题值 &LOCALIZE T &END by using the <some_section>._h (for header) notation in the 设置 instance (just like in adf.Job).

使用外部文件 @INCLUDE 支持CP2K的符号。也是 @SET@IF 可以使用键,只取而代之 @ sign by at_ in the definition of your 设置. If you need some files to be copied to the actual execution directory, pass them to the constructor using the copy= option. See the API below.

分子解析

可以通过将它们传递给的自动解析分子 Cp2kJob constructor. 支持留下分子未命令,确保用手设置分子(例如,使用 拓扑 section). Parsing of the molecule can be avoided by setting job.settings.ignore_molecule = 真的 in the 设置 of the job.

此外,可以使用前示例中的x,y,z向量指定模拟单元。 可以通过以下方式轻松指定立方框:

penta.输入.force_eval.subsys.cell.ABC = "[angstrom] 50 50 50"

这导致模拟多维数据集50立方埃。 有关更详细的描述 cp2k 输入看 手动的.

加载工作

没有普拉姆的计算可以使用 load_external() 功能。这 Cp2kResults 类支持读取输入文件 设置 objects.

Just do Cp2kJob.load_external(path) to get the settings from the file.

分子载荷

A 分子 可以重新创建一个 设置 实例使用 Cp2kSettings2Mol function.

API.

班级 Cp2kJob[来源]

代表单个计算作业的类 CP2K.

除了争论 SingleJob, Cp2kJob takes a copy argument. copy 可以是列表或字符串,包含要复制到作业目录的文件的路径。 这可能是如此。是分子,进一步输入文件等。

_result_type

别名 Cp2kResults

__init__(复制= none, ** kwargs.)[来源]

初始化自我。请参阅帮助(类型(self))以获得准确的签名。

_get_ready()[来源]

如果设置了self.copy_files,请将文件复制到执行目录。

get_input()[来源]

Transform all contents of 输入 branch of 设置 into string 具有块,子块,键和值。

get_runscript()[来源]

运行CP2K的并行版本。

这 exact CP2K executable, and whether or not one wants to use srun or mpirun can be specified under self.settings.executable. 目前支持的可执行文件是:

  • "sdbg":串行单核测试和调试
  • "sopt":串行通用单核使用
  • "ssmp":并行(仅OpenMP),单节点,多核
  • "pdbg":并行(仅MPI)多节点测试和调试
  • "popt":并行(仅MPI)一般用法,没有线程
  • "psmp":并行(MPI + OpenMP)通用使用,线程可能会提高可扩展性和内存使用情况

例如:


>>> from scm.plams import Cp2kJob
>>> job = Cp2kJob(...)
>>> job.settings.executable = "cp2k.popt"
>>> job.settings.executable = "c2pk.ssmp"
>>> job.settings.executable = "mpirun -np 24 cp2k.psmp"
check()[来源]

寻找CP2K输出中的正常终端信号。

班级 Cp2kResults[来源]

CP2K结果的课程。

recreate_settings()[来源]

重新创造工作 load_external().

如果出现具有相同名称的关键字和部分,则只使用关键字。 This happens e.g. when reading restart files where kind.symbol.potential is given as 潜在的ABCD.&POTENTIAL …. &END POTENTIAL.

具有不同格式化的部分的有限支持 种类. Check the resulting 设置 实例如果您想要的信息是在那里。 读取重启文件小心,因为它们会自动生成 而不是每种情况都在这里处理。 您应该获取所有信息,但不确定我是否知道所有特殊的输入案例。

get_runtime()[来源]

从输出以秒为单位返回运行时。

get_energy(索引= 0.)[来源]

在输出中返回最后一次发生“总能量:”。

get_dispersion(索引= 0.)[来源]

在输出中返回最后一次发生“色散能量:”。

get_mulliken_charges(return_spin = false., 索引= -1)[来源]

获得mulliken费用(和旋转时刻)。

Set index to choose the n-th occurence of the Charges in the output, e.g. to choose an optimization step. Set to 没有任何 将全部返回列表。 默认为上次发生。

Returns list of charges. If return_spin is 真的 返回收费和旋转的元组。

get_hirshfeld_charges(return_spin = false., 索引= -1)[来源]

获得HIRSHFELD费用(和旋转时刻)。

Set index to choose the n-th occurence of the Charges in the output, e.g. to choose an optimization step. Set to 没有任何 将全部返回列表。 默认为上次发生。

Returns list of charges. If return_spin is 真的 返回收费和旋转的元组。

get_multigrid_info()[来源]

获取有关Multigrids的信息。

融合截止值的用途。 需要“中”全局印刷级别。

用键“counts”和'截止值返回一个dict。

Cp2kSettings2Mol()[来源]

从a中返回分子 设置 用于a的实例 Cp2kJob.

Loads coordinates from settings.input.force_eval.subsys.coord._h and cell information from settings.input.force_eval.subsys.cell.