Source code for dftbplus_step.energy_parameters

# -*- coding: utf-8 -*-
"""Global control parameters for DFTB+
"""

import logging
import seamm

logger = logging.getLogger(__name__)


[docs] class EnergyParameters(seamm.Parameters): """The control parameters for the DFTB+ Hamiltonian Example:: Hamiltonian = DFTB { Scc = Yes SlaterKosterFiles = { O-O = "../../slakos/mio-ext/O-O.skf" O-H = "../../slakos/mio-ext/O-H.skf" H-O = "../../slakos/mio-ext/H-O.skf" H-H = "../../slakos/mio-ext/H-H.skf" } MaxAngularMomentum = { O = "p" H = "s" } PolynomialRepulsive = {} ShellResolvedSCC = No OldSKInterpolation = No RangeSeparated = None {} ReadInitialCharges = No InitialCharges = {} SCCTolerance = 1.0000000000000001E-005 HCorrection = None {} SpinPolarisation = {} ElectricField = {} Solver = RelativelyRobust {} Charge = 0.0000000000000000 MaxSCCIterations = 100 OnSiteCorrection = {} Dispersion = {} Solvation = {} Electrostatics = GammaFunctional {} ThirdOrder = No ThirdOrderFull = No Differentiation = FiniteDiff { Delta = 1.2207031250000000E-004 } ForceEvaluation = "Traditional" Mixer = Broyden { MixingParameter = 0.20000000000000001 InverseJacobiWeight = 1.0000000000000000E-002 MinimalWeight = 1.0000000000000000 MaximalWeight = 100000.00000000000 WeightFactor = 1.0000000000000000E-002 } Filling = Fermi { Temperature = 0.0000000000000000 } } """ parameters = { "input only": { "default": "no", "kind": "boolean", "default_units": "", "enumeration": ( "yes", "no", ), "format_string": "s", "description": "Write the input files and stop:", "help_text": "Don't run DFTB+. Just write the input files.", }, "primitive cell": { "default": "Yes", "kind": "boolean", "default_units": "", "enumeration": ("Yes", "No"), "format_string": "", "description": "Use primitive cell:", "help_text": "Whether to use the primitive cell for the calculation.", }, "SCC": { "default": "Yes", "kind": "string", "default_units": "", "enumeration": ("Yes", "No"), "format_string": "", "description": "Self-consistent charges:", "help_text": ("Whether to do a self-consistent charge calculation."), }, "SCCTolerance": { "default": 1.0e-05, "kind": "float", "default_units": "", "enumeration": None, "format_string": "", "description": "Convergence criterion:", "help_text": ( "Stopping criteria for the SCC. Specifies the tolerance for " "the maximum difference in any charge between two SCC cycles." ), }, "MaxSCCIterations": { "default": 100, "kind": "integer", "default_units": "", "enumeration": None, "format_string": "", "description": "Maximum number of iterations:", "help_text": ( "Maximal number of SCC cycles to reach convergence. If " "convergence is not reached after the specified number of " "steps, the program stops unless requested elsewhere." ), }, "ConvergentSccOnly": { "default": "No", "kind": "string", "default_units": "", "enumeration": ("Yes", "No"), "format_string": "", "description": "Not converged is error:", "help_text": "Whether to throw an error if the SCC cycle doesn't converge.", }, "Filling": { "default": "Fermi", "kind": "string", "default_units": "", "enumeration": ("Fermi", "Gaussian", "Methfessel-Paxton"), "format_string": "", "description": "Electronic temperature method:", "help_text": "The method to populate the electrons due to temperature.", }, "Filling Temperature": { "default": 300, "kind": "float", "default_units": "K", "enumeration": None, "format_string": "", "description": "Temperature:", "help_text": "The electronic temperature for the electronic population.", }, "ShellResolvedSCC": { "default": "no", "kind": "string", "default_units": "", "enumeration": ("yes", "no"), "format_string": "", "description": "Shell-resolved charges:", "help_text": ( "Whether to use shell-resolved charges. If the parameter set does not " "support this, it will be ignored." ), }, "initial charges": { "default": "default", "kind": "string", "default_units": "", "enumeration": ("default", "none", "from previous step", "from structure"), "format_string": "", "description": "Use existing atomic charges:", "help_text": "Whether to use existing charges on the atoms.", }, "ThirdOrder": { "default": "Default for parameters", "kind": "string", "default_units": "", "enumeration": ("No", "Default for parameters", "Partial", "Full"), "format_string": "", "description": "Use 3rd order corrections:", "help_text": ("Whether to use 3rd order corrections."), }, "HCorrection": { "default": "Default for parameters", "kind": "string", "default_units": "", "enumeration": ("None", "Default for parameters", "Damping", "DFTB3-D3H5"), "format_string": "", "description": "Hydrogen interaction correction:", "help_text": ( "Whether and how to correct the interactions of hydrogens, " "mainly hydrogen bonds." ), }, "Damping Exponent": { "default": 4.0, "kind": "float", "default_units": "", "enumeration": None, "format_string": "", "description": "Damping exponent:", "help_text": ( "The exponent for the short range damping of interactions " "where at least one atom is a hydrogen." ), }, "results": { "default": {}, "kind": "dictionary", "default_units": None, "enumeration": tuple(), "format_string": "", "description": "results", "help_text": ("The results to save to variables or in " "tables. "), }, "create tables": { "default": "yes", "kind": "boolean", "default_units": None, "enumeration": ("yes", "no"), "format_string": "", "description": "Create tables as needed:", "help_text": ( "Whether to create tables as needed for " "results being saved into tables." ), }, "k-grid method": { "default": "grid spacing", "kind": "string", "default_units": "", "enumeration": ("supercell folding", "grid spacing"), "format_string": "", "description": "Specify k-space grid using:", "help_text": ("How to specify the k-space integration grid."), }, "na": { "default": 4, "kind": "integer", "default_units": "", "enumeration": None, "format_string": "", "description": "NPoints in a:", "help_text": ( "Number of points in the first direction of the Brillouin zone." ), }, "nb": { "default": 4, "kind": "integer", "default_units": "", "enumeration": None, "format_string": "", "description": "NPoints in b:", "help_text": ( "Number of points in the second direction of the Brillouin zone." ), }, "nc": { "default": 4, "kind": "integer", "default_units": "", "enumeration": None, "format_string": "", "description": "NPoints in c:", "help_text": ( "Number of points in the third direction of the Brillouin zone." ), }, "k-spacing": { "default": 0.2, "kind": "float", "default_units": "1/Å", "enumeration": None, "format_string": "", "description": "K-spacing:", "help_text": "The spacing of the grid in reciprocal space.", }, "SpinPolarisation": { "default": "from system", "kind": "string", "default_units": "", "enumeration": ("from system", "none", "collinear", "noncollinear"), "format_string": "", "description": "Spin polarization:", "help_text": "How to handle spin polarization", }, "RelaxTotalSpin": { "default": "yes", "kind": "string", "default_units": "", "enumeration": ("no", "yes"), "format_string": "", "description": "Optimize the spin:", "help_text": "Whether to optimize the spin polarization or leave it fixed.", }, "ShellResolvedSpin": { "default": "yes", "kind": "string", "default_units": "", "enumeration": ("yes", "no"), "format_string": "", "description": "Shell-resolved spins:", "help_text": ( "Whether to use shell-resolved spin. If the parameter set does not " "support this, it will be ignored." ), }, "use atom spins": { "default": "yes", "kind": "string", "default_units": "", "enumeration": ("yes", "no"), "format_string": "", "description": "Use existing atomic spins:", "help_text": "Whether to use existing spins on the atoms.", }, } output = { "total density": { "default": "yes", "kind": "boolean", "default_units": "", "enumeration": ("yes", "no"), "format_string": "", "description": "Plot total density:", "help_text": "Whether to plot the total charge density.", }, "total spin density": { "default": "yes", "kind": "boolean", "default_units": "", "enumeration": ("yes", "no"), "format_string": "", "description": "Plot total spin density:", "help_text": "Whether to plot the total spin density.", }, "difference density": { "default": "yes", "kind": "boolean", "default_units": "", "enumeration": ("yes", "no"), "format_string": "", "description": "Plot difference density:", "help_text": "Whether to plot the difference density.", }, "orbitals": { "default": "yes", "kind": "boolean", "default_units": "", "enumeration": ("yes", "no"), "format_string": "", "description": "Plot orbitals:", "help_text": "Whether to plot orbitals.", }, "selected orbitals": { "default": "-1, HOMO, LUMO, +1", "kind": "string", "default_units": "", "enumeration": ("all", "-1, HOMO, LUMO, +1"), "format_string": "", "description": "Selected orbitals:", "help_text": "Which orbitals to plot.", }, "selected k-points": { "default": "none", "kind": "string", "default_units": "", "enumeration": ("none", "all"), "format_string": "", "description": "For crystals, k-points:", "help_text": "Plots the orbitals at these k-points.", }, "region": { "default": "default", "kind": "string", "default_units": "", "enumeration": ("default", "explicit"), "format_string": "", "description": "Region:", "help_text": "The region for the plots", }, "nx": { "default": 50, "kind": "integer", "default_units": "", "enumeration": None, "format_string": "", "description": "Grid:", "help_text": "Number of grid points in first direction", }, "ny": { "default": 50, "kind": "integer", "default_units": "", "enumeration": None, "format_string": "", "description": "x", "help_text": "Number of grid points in second direction", }, "nz": { "default": 50, "kind": "integer", "default_units": "", "enumeration": None, "format_string": "", "description": "x", "help_text": "Number of grid points in first direction", }, } def __init__(self, defaults={}, data=None): """Initialize the instance, by default from the default parameters given in the class""" super().__init__( defaults={ **EnergyParameters.parameters, **EnergyParameters.output, **defaults, }, data=data, )