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)