5.3.8。用ASE振动分析

如果存在ASE模块,则可以使用该ASE模块并行计算数值振动频率和IR强度。 See the ASE文档 详细概述其功能。这 VibrationsJob 班级 provides an easy to use interface to the ase.vibrations.Vibrations class, allowing for parallel calculations of single-point gradients and therefore speeding up any Frequency calculation by a factor equal to the atomic displacements beeing calculated. The IRJob 班级是一个孩子 VibrationsJob and provides access to the ase.vibrations.Infrared class.

5.3.8.1。例子

设置 = Settings()
设置.input.symmetry = 'nosym'
设置.input.basis.type = 'DZ'
设置.input.basis.core = 'None'
设置.input.xc.gga = 'PBE'
设置.input.basis.createoutput = 'None'
设置.input.noprint = 'logfile'
设置.input.gradient = True
#Use previously converged coefficients to speed up convergence - saves a lot of CPU time!!
#settings.input.restart._h = os.path.join(os.getcwd(),'restart.t21')+' &'
#settings.input.restart.nogeo = True

mol = Molecule('mol.xyz') # read Molecule from mol.xyz

irJob = IRJob(分子=mol, 设置=设置, aseVibOpt={ 'indices': [1], 'nfree': 4 })

irJob.run()

ir = irJob.results.get_ASEVib()
ir.summary(method='Frederiksen')

5.3.8.2。 API.

班级 VibrationsJob(分子, 设置, Jobtype =.ADFJob, get_gradients ='get_gradients', Reorder ='inputOrder', asevibopt = {})[来源]

用于使用任意接口并行计算数值频率的类。 这是使用来自ASE的振动类实现的。

  • 分子Molecule 对象(最可密定的方法优化状态)
  • 设置Settings 要运行的所有单点作业的实例。如果要节省大量计算机时间,请不要忘记对重启文件的参考!
  • 工作TypeJob 您要使用的课程。
  • get_gradients - 检索梯度的函数名称 Results object of your chosen 工作Type.results. Must take options eUnit='eV' and lUnit='Angstrom'.
  • reorder – Function name of 工作Type.results to reorder gradients to input order, set to None if not applicable.
  • aseVibOpt - 选项 ase.vibrations.Vibrations.__init__

The self.__init__() method calls on ase.vibrations.Vibrations.run to create all displacements, then adds them as children. After running, the self.postrun() method reads the gradients from all single-points and saves them according to the ASE scheme. Finally the ASE Vibrations object is made accessible in self.results.get_ASEVib for the retrieval of the ASE results.

__init__(分子, 设置, Jobtype =.<class'cm.plams.interfaces.adfsuite.adf.adfjob'>, get_gradients ='get_gradients', Reorder ='inputOrder', asevibopt = {})[来源]

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

new_children()[来源]

生成新的儿童工作。

当某些儿童事先没有以事先知道并且需要基于其他子作业生成的作业而有用,例如以任何自我一致的过程相似。

The goal of this method is to produce a new portion of children jobs. Newly created jobs should be returned in a container compatible with self.children (e.g. list for list, dict for dict). No adjustment of newly created jobs’ parent attribute is needed. This method 不能 modify _active_children attribute.

The method defined here is a default template, returning None, which means no new children jobs are generated and the entire execution of the parent job consists only of running jobs initially found in self.children. To modify this behavior you can override this method in a MultiJob 子类或您可以使用其中一个 绑定装饰器,就像 Prerun和Postrun方法.

postrun()[来源]

在实际工作执行后采取的行动。

此方法最初为空,可以在子类中定义或直接添加到整个类或单个实例 绑定装饰器.

班级 VibrationsResults(工作)[来源]

用于处理数值振动分析结果的类。

Use get_ASEVib() to access the ase.vibrations.Vibrations object. Using e.g. self.get_ASEVib().summary() the results of the ASE frequency calculation are accessible.

get_ASEVib()[来源]

Returns a ase.vibrations.Vibrations object if available

班级 IRJob(分子, 设置, Jobtype =.ADFJob, get_gradients ='get_gradients', Reorder ='inputOrder', get_dipole_vector ='get_dipole_vector', asevibopt = {})[来源]

子类 VibrationsJob 计算IR模式和强度。

用法与父类相同,请参阅 VibrationsJob.

额外的论点:

  • __init__:get_dipole_vector,必须掌握参数 unit='au'
__init__(分子, 设置, Jobtype =.<class'cm.plams.interfaces.adfsuite.adf.adfjob'>, get_gradients ='get_gradients', Reorder ='inputOrder', get_dipole_vector ='get_dipole_vector', asevibopt = {})[来源]

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

postrun()[来源]

在实际工作执行后采取的行动。

此方法最初为空,可以在子类中定义或直接添加到整个类或单个实例 绑定装饰器.