Source code for scm.input_classes.engines.gfnff

from __future__ import annotations
from pathlib import Path
from typing import Iterable, Literal, Sequence
from scm.pisa.block import DriverBlock,EngineBlock,FixedBlock,FreeBlock,InputBlock
from scm.pisa.key import BoolKey,FloatKey,FloatListKey,IntKey,IntListKey,MultipleChoiceKey,PathStringKey,StringKey,BoolType

[docs]class GFNFF(EngineBlock): r""" :ivar Accuracy: Expert option: GFNFF accuracy parameter. Several thresholds within GFNFF depend on this accuracy parameter. Must be a positive number. Smaller values of Accuracy will result in larger distance thresholds. :vartype Accuracy: float | FloatKey :ivar EwaldTolerance: Expert option: Value of the error function that should be used to determine the cutoff radius for real-space Ewald summation if [Alpha] is set on input. Alternatively, if the [RealSpaceCutoff] is set but [Alpha] is not then the [Tolerance] value affects the [Alpha]. Larger values will make the real-space summation faster but less accurate. :vartype EwaldTolerance: float | FloatKey :ivar ForceFieldFile: Path to a GFNFF parameter file :vartype ForceFieldFile: str | StringKey :ivar Type: Type of GFNFF to be used :vartype Type: Literal["AngewChem2020", "AngewChem2020_1", "AngewChem2020_2", "Harmonic2020", "FromFile"] :ivar EnergyTerms: expert key, that allows you to disable specific energy terms. :vartype EnergyTerms: GFNFF._EnergyTerms """
[docs] class _EnergyTerms(FixedBlock): r""" expert key, that allows you to disable specific energy terms. :ivar Angle: Whether to use angle (bend) energy. :vartype Angle: BoolType | BoolKey :ivar BondedATM: Whether to use bonded ATM energy. :vartype BondedATM: BoolType | BoolKey :ivar Coulomb: Whether to use coulomb energy. :vartype Coulomb: BoolType | BoolKey :ivar Dispersion: Whether to use dispersion energy. :vartype Dispersion: BoolType | BoolKey :ivar ElectricField: Whether to use external electric field energy. :vartype ElectricField: BoolType | BoolKey :ivar HBonding: Whether to use hydrogen bonding energy. :vartype HBonding: BoolType | BoolKey :ivar Repulsion: Whether to use the repulsion energy. :vartype Repulsion: BoolType | BoolKey :ivar Solvation: Whether to use solvation energy. :vartype Solvation: BoolType | BoolKey :ivar Stretch: Whether to use stretch energy. :vartype Stretch: BoolType | BoolKey :ivar Torsion: Whether to use torsion energy. :vartype Torsion: BoolType | BoolKey :ivar XBonding: Whether to use halogen bonding energy. :vartype XBonding: BoolType | BoolKey """ def __post_init__(self): self.Angle: BoolType | BoolKey = BoolKey(name='Angle', comment='Whether to use angle (bend) energy.', default=True) self.BondedATM: BoolType | BoolKey = BoolKey(name='BondedATM', comment='Whether to use bonded ATM energy.', default=True) self.Coulomb: BoolType | BoolKey = BoolKey(name='Coulomb', comment='Whether to use coulomb energy.', default=True) self.Dispersion: BoolType | BoolKey = BoolKey(name='Dispersion', comment='Whether to use dispersion energy.', default=True) self.ElectricField: BoolType | BoolKey = BoolKey(name='ElectricField', comment='Whether to use external electric field energy.', default=True) self.HBonding: BoolType | BoolKey = BoolKey(name='HBonding', comment='Whether to use hydrogen bonding energy.', default=True) self.Repulsion: BoolType | BoolKey = BoolKey(name='Repulsion', comment='Whether to use the repulsion energy.', default=True) self.Solvation: BoolType | BoolKey = BoolKey(name='Solvation', comment='Whether to use solvation energy.', default=True) self.Stretch: BoolType | BoolKey = BoolKey(name='Stretch', comment='Whether to use stretch energy.', default=True) self.Torsion: BoolType | BoolKey = BoolKey(name='Torsion', comment='Whether to use torsion energy.', default=True) self.XBonding: BoolType | BoolKey = BoolKey(name='XBonding', comment='Whether to use halogen bonding energy.', default=True)
def __post_init__(self): self.Accuracy: float | FloatKey = FloatKey(name='Accuracy', comment='Expert option: GFNFF accuracy parameter. Several thresholds within GFNFF depend on this accuracy parameter. Must be a positive number. Smaller values of Accuracy will result in larger distance thresholds.', default=1.0) self.EwaldTolerance: float | FloatKey = FloatKey(name='EwaldTolerance', comment='Expert option: Value of the error function that should be used to determine the cutoff radius for real-space Ewald summation if [Alpha] is set on input. Alternatively, if the [RealSpaceCutoff] is set but [Alpha] is not then the [Tolerance] value affects the [Alpha]. Larger values will make the real-space summation faster but less accurate.', default=1e-08) self.ForceFieldFile: str | StringKey = StringKey(name='ForceFieldFile', comment='Path to a GFNFF parameter file', gui_name='GFNFF parameter file:', default='') self.Type: Literal["AngewChem2020", "AngewChem2020_1", "AngewChem2020_2", "Harmonic2020", "FromFile"] = MultipleChoiceKey(name='Type', comment='Type of GFNFF to be used', default='AngewChem2020_2', choices=['AngewChem2020', 'AngewChem2020_1', 'AngewChem2020_2', 'Harmonic2020', 'FromFile'], hiddenchoices=['Harmonic2020']) self.EnergyTerms: GFNFF._EnergyTerms = self._EnergyTerms(name='EnergyTerms', comment='expert key, that allows you to disable specific energy terms.', hidden=True)