vasp_step package#

Submodules#

vasp_step.batch module#

VASP’s side of the Model Chemistry batch contract.

get_task writes the same inputs the Energy substep writes for the same settings (both use vasp_step.inputs), and analyze_task reads the energy, forces and stress back. The model chemistries are

VASP:DFT@<functional>/<potentials>@<ENCUT in eV>

for example VASP:DFT@r2SCAN-D4/PAW-hard@1200. The potentials are a PAW set, optionally a named variant (PAW = potpaw_PBE.64 with VASP’s recommended potentials, PAW-hard = the same with the hard potentials where they exist, PAW-LDA = potpaw_LDA.64). Without a cutoff, ENCUT is 1.3 × the largest ENMAX of the potentials.

Dispersion. A functional with -D4 is the functional plus the dftd4 program’s D4 correction for it, computed in the same task after VASP (dftd4 in vasp.ini), because VASP builds are often compiled without D4 (IVDW = 13). A periodic cell gets the periodic D4; a fragment in a box gets the D4 of the isolated fragment, as its molecular counterparts do, without the dispersion with its images.

options for a structure:

  • grid: {"max_spacing": Å} sets the cell’s FFT grid explicitly (NGX, NGXF = 2·NGX, …), the cell’s atoms shifted by whole grid steps. With "reference_cell" (3x3) a molecular structure is a fragment registered on that parent cell’s grid (see vasp_step.grid), in a box of its extent plus "padding" (7.5 Å), with the dipole correction. Without grid a molecular structure cannot run.

  • charge, multiplicity: override the structure’s.

  • dipole: False to leave out the dipole correction of a fragment.

The stress comes back in GPa as a stress (sigma = -P, tensile positive), as the Energy substep stores it, so the model chemistries declare stress_convention = "stress"; with D4 it includes D4’s.

The POTCARs are read where the task is built, from the VASP potential library (<SEAMM>/Parameters/VASP, catalogued by the VASP step) on that machine.

vasp_step.batch.COST_FIT = (-7.209, 0.636, 1.342)#

The cost model, fitted to the VASP step’s timing records on ARC’s TinkerCliffs (~/.seamm.d/timing/vasp.csv: 396,528 Gamma-point single points on 8 ranks, r2SCAN(-D3BJ), 1-432 atoms, 2025-12 to 2026-04):

log t = a + b log(Ne) + c log(V (ENCUT/500 eV)^1.5)

with Ne the valence electrons and V the cell volume (ų). R² = 0.67 in log t; 68% of the runs within a factor of 1.3, 95% within 2. The 64,656 VASP runs of the MBE prototype (EDIFF 1e-7, ALGO All, 1200 eV, hard PAW) fall at 1.09 (monomers) and 0.86 (pairs) of it on 8 ranks, so no settings factor is needed.

vasp_step.batch.DFTD4_FUNCTIONALS = {'B3LYP': 'b3lyp', 'HSE06': 'hse06', 'PBE': 'pbe', 'PBE0': 'pbe0', 'RPBE': 'rpbe', 'SCAN': 'scan', 'TPSS': 'tpss', 'r2SCAN': 'r2scan', 'revPBE': 'revpbe'}#

dftd4’s name for the functionals that have D4 parameters

vasp_step.batch.GAMMA_ONLY_WIDTH = 10.0#

refused at the Gamma point alone (Å)

Type:

Narrower cells need k-points

vasp_step.batch.POTENTIAL_SETS = {'PAW': ('potpaw_PBE.64', None), 'PAW-LDA': ('potpaw_LDA.64', None), 'PAW-hard': ('potpaw_PBE.64', 'hard')}#

name -> (set, variant)

Type:

The PAW sets the model chemistries name

vasp_step.batch.RANK_EXPONENT = 0.5#

Above 8 ranks the speed grows as ranks**0.5 (the prototype’s 16-rank runs were 1.4-1.6x faster than its 8-rank ones); below, in proportion to the ranks.

vasp_step.batch.SETTINGS = {'ediff': 1e-07, 'electronic method': 'all', 'k-grid method': '𝚪-point', 'kpar': 1, 'lorbit': 'no', 'lreal': 'no', 'nelm': 200, 'precision': 'accurate', 'smearing width': 0.01, 'use hdf5 files': 'no'}#

Energy-parameter settings of a batch calculation (on top of the defaults)

vasp_step.batch.analyze_task(result, model_chemistry, configuration, *, properties=('energy', 'gradients'), options=None)[source]#

{“energy”: kJ/mol, “gradients”: (n, 3) kJ/mol/Å, “stress”: (3, 3) GPa, sigma = -P} of a finished task, in the structure’s atom order.

vasp_step.batch.can_run_task(configuration, model_chemistry, *, options=None)[source]#

A periodic structure, or a molecule registered on a parent cell.

vasp_step.batch.cell_walltime(estimate)[source]#

The time limit (s) for a cell’s calculation: 3x the estimate, at least an hour, in quarter hours. The prototype’s slowest cell (a dense frame) took 2.8x the median.

vasp_step.batch.converged(outcar)[source]#

Whether VASP’s SCF reached EDIFF (an unconverged run must not count).

vasp_step.batch.estimated_seconds(nelect, volume, encut, ntasks, kpoints=1)[source]#

The expected wall time (s) of one VASP calculation on TinkerCliffs-like nodes: see COST_FIT.

Parameters:
  • nelect (float) – Valence electrons.

  • volume (float) – The cell (or box) volume, ų.

  • encut (float) – Plane-wave cutoff, eV.

  • ntasks (int) – MPI ranks.

  • kpoints (int) – k-points in the mesh (an upper bound on the irreducible ones).

vasp_step.batch.fingerprint(cmd, files)[source]#

The task’s restart identity: its command and files, without the INCAR’s parallelization keywords, so a rerun with another number of ranks reuses the finished calculations.

vasp_step.batch.functionals()[source]#

The functionals: name -> (model, submodel, dftd4 name or None).

vasp_step.batch.get_model_chemistry_options(periodic_only=False, mdi_only=False)[source]#

VASP’s model chemistries (all periodic, none through MDI).

vasp_step.batch.get_task(configuration, model_chemistry, *, key, properties=('energy', 'gradients'), options=None, resources=None)[source]#

A seamm_exec.Task computing VASP’s energy, forces and (for a cell, if asked) stress. See the module docstring.

vasp_step.batch.parse_vasprun(text)[source]#

The final energy (sigma -> 0, eV), forces (eV/Å, VASP order) and stress (kB as VASP prints it, a pressure, or None) from vasprun.xml.

vasp_step.batch.potential_catalog()[source]#

The catalogue of the VASP potential library on this machine.

vasp_step.energy module#

Non-graphical part of the Energy step in a VASP flowchart

class vasp_step.energy.Energy(flowchart=None, title='Energy', extension=None, logger=<Logger vasp_step.energy (WARNING)>)[source]#

Bases: Node

The non-graphical part of a Energy step in a flowchart.

parser#

The parser object.

Type:

configargparse.ArgParser

options#

It contains a two item tuple containing the populated namespace and the list of remaining argument strings.

Type:

tuple

subflowchart#

A SEAMM Flowchart object that represents a subflowchart, if needed.

Type:

seamm.Flowchart

parameters#

The control parameters for Energy.

Type:

EnergyParameters

See also

TkEnergy, Energy, EnergyParameters

analyze(P=None, configuration=None, starting_configuration=None, indent='', text='', table=None, results={}, **kwargs)[source]#

Do any analysis of the output from this step.

Also print important results to the local step.out file using “printer”.

Parameters:

indent (str) – An extra indentation for the output

atom_order()[source]#

Work out the translation between SEAMM’s and VASP’s atom order.

calculate_enthalpy_of_formation(P, data)[source]#

Calculate the enthalpy of formation from the results of a calculation.

This uses tabulated values of the enthalpy of formation of the atoms for the elements and tabulated energies calculated for atoms with the current method.

Parameters:

data (dict) – The results of the calculation.

description_text(P=None)[source]#

Create the text description of what this step will do. The dictionary of control values is passed in as P so that the code can test values, etc.

Parameters:

P (dict) – An optional dictionary of the current values of the control parameters.

Returns:

A description of the current step.

Return type:

str

property element_count#

Numbers of atoms of each element.

get_INCAR(P=None)[source]#

Get the control input (INCAR) for this calculation.

get_KPOINTS(P=None)[source]#

Get the k-point grid, KPOINTS file.

get_POSCAR(P=None)[source]#

Get the coordinate information for VASP (POSCAR file).

get_POTCAR(P=None)[source]#

Get the potential input (POTCAR) for this calculation.

The elements are ordered by descending atomic number. Elements without a chosen potential get the set’s default.

get_input(P=None)[source]#

Get all the input for VASP

get_keywords(P=None)[source]#

Get the keywords and values for the calculation.

property git_revision#

The git version of this module.

property header#

A printable header for this section of output

parse_hdf5(data_file)[source]#

Get the data from the vaspout.h5 file.

parse_xml(data_file)[source]#

Get the data from the vasprun.xml file.

plot(E_units='', F_units='')[source]#

Generate a plot of the convergence of the geometry optimization.

run()[source]#

Run a Energy step.

Parameters:

None

Returns:

The next node object in the flowchart.

Return type:

seamm.Node

property to_SEAMM_order#

Translation of atoms from VASP to SEAMM order.

property to_VASP_order#

Translation of atoms from SEAMM to VASP order.

property version#

The semantic version of this module.

vasp_step.energy.dehumanize(memory, suffix='B')[source]#

Unscale memory from its human readable form e.g:

‘1.20 MB’ => 1200000 ‘1.17 GB’ => 1170000000

vasp_step.energy.humanize(memory, suffix='B', kilo=1024)[source]#

Scale memory to its proper format e.g:

1253656 => ‘1.20 MiB’ 1253656678 => ‘1.17 GiB’

vasp_step.energy.subscript(n)[source]#

Return the number using Unicode subscript characters.

vasp_step.energy_parameters module#

Control parameters for the Energy substep in a VASP step

class vasp_step.energy_parameters.EnergyParameters(defaults={}, data=None)[source]#

Bases: Parameters

The control parameters for Energy.

You need to replace the “time” entry in dictionary below these comments with the definitions of parameters to control this step. The keys are parameters for the current plugin,the values are dictionaries as outlined below.

Examples

parameters = {
    "time": {
        "default": 100.0,
        "kind": "float",
        "default_units": "ps",
        "enumeration": tuple(),
        "format_string": ".1f",
        "description": "Simulation time:",
        "help_text": ("The time to simulate in the dynamics run.")
    },
}
parameters{str: {str: str}}

A dictionary containing the parameters for the current step. Each key of the dictionary is a dictionary that contains the the following keys:

parameters[“default”] :

The default value of the parameter, used to reset it.

parameters[“kind”]enum()

Specifies the kind of a variable. One of “integer”, “float”, “string”, “boolean”, or “enum”

While the “kind” of a variable might be a numeric value, it may still have enumerated custom values meaningful to the user. For instance, if the parameter is a convergence criterion for an optimizer, custom values like “normal”, “precise”, etc, might be adequate. In addition, any parameter can be set to a variable of expression, indicated by having “$” as the first character in the field. For example, $OPTIMIZER_CONV.

parameters[“default_units”]str

The default units, used for resetting the value.

parameters[“enumeration”]: tuple

A tuple of enumerated values.

parameters[“format_string”]: str

A format string for “pretty” output.

parameters[“description”]: str

A short string used as a prompt in the GUI.

parameters[“help_text”]: str

A longer string to display as help for the user.

See also

Energy, TkEnergy, Energy, EnergyStep

kspace_parameters = {'Methfessel-Paxton order': {'default': 2, 'default_units': '', 'description': 'Order:', 'enumeration': None, 'format_string': '', 'help_text': 'The order of the expansion in the Methfessel-Paxton method.', 'kind': 'integer'}, 'centering': {'default': 'Monkhorst-Pack', 'default_units': '', 'description': 'Centering of grid:', 'enumeration': ('𝚪-centered', 'Monkhorst-Pack'), 'format_string': '', 'help_text': 'How to center the grid in reciprocal space.', 'kind': 'enumeration'}, 'k-grid method': {'default': 'grid spacing', 'default_units': '', 'description': 'Specify k-space grid using:', 'enumeration': ('𝚪-point', 'grid spacing', 'explicit grid dimensions'), 'format_string': '', 'help_text': 'How to specify the k-space integration grid.', 'kind': 'string'}, 'k-spacing': {'default': 0.5, 'default_units': '1/Å', 'description': 'K-spacing:', 'enumeration': None, 'format_string': '', 'help_text': 'The spacing of the grid in reciprocal space.', 'kind': 'float'}, 'na': {'default': 4, 'default_units': '', 'description': 'NPoints in a:', 'enumeration': None, 'format_string': '', 'help_text': 'Number of points in the first direction of the Brillouin zone.', 'kind': 'integer'}, 'nb': {'default': 4, 'default_units': '', 'description': 'b:', 'enumeration': None, 'format_string': '', 'help_text': 'Number of points in the second direction of the Brillouin zone.', 'kind': 'integer'}, 'nc': {'default': 4, 'default_units': '', 'description': 'c:', 'enumeration': None, 'format_string': '', 'help_text': 'Number of points in the third direction of the Brillouin zone.', 'kind': 'integer'}, 'occupation type': {'default': 'Gaussian smearing', 'default_units': '', 'description': 'Smearing:', 'enumeration': ('Gaussian smearing', 'the Methfessel-Paxton method', 'Fermi-Dirac smearing', 'the tetrahedron method without smearing', 'the tetrahedron method with Blöchl corrections without smearing', 'the tetrahedron method with Fermi-Dirac smearing', 'the tetrahedron method with Blöchl corrections with Fermi-Dirac smearing'), 'format_string': '', 'help_text': 'How occupy the orbitals, typically smearing the electrons as they would be at finite temperature.', 'kind': 'enumeration'}, 'odd grid': {'default': 'yes', 'default_units': '', 'description': 'Force to odd numbers:', 'enumeration': ('yes', 'no'), 'format_string': '', 'help_text': 'Whether to force the grid sizes to odd numbers.', 'kind': 'boolean'}, 'smearing width': {'default': 0.05, 'default_units': 'eV', 'description': 'Width:', 'enumeration': None, 'format_string': '.3f', 'help_text': 'The smearing or broadening width.', 'kind': 'float'}}#
model_parameters = {'enmax': {'default': 0, 'default_units': 'eV', 'description': 'Maximum cutoff in potentials:', 'enumeration': None, 'format_string': '', 'help_text': 'The maximum energy cutoff in the specified potentials.', 'kind': 'float'}, 'magnetic moments': {'default': 'default', 'default_units': '', 'description': 'Magnetic moments:', 'enumeration': 'default', 'format_string': '', 'help_text': 'The initial magnetic moments on the atoms', 'kind': 'string'}, 'model': {'default': 'Generalized-gradient approximations (GGA)', 'default_units': '', 'description': 'Computational model:', 'enumeration': ('Local-density approximation (LDA)', 'Generalized-gradient approximations (GGA)', 'Meta-generalized gradient approximations (meta-GGA)', 'Hartree-Fock and hybrid functionals', 'Hybrid meta generalized gradient approximation (Hybrid meta-GGA)'), 'format_string': '', 'help_text': 'The high-level computational model employed.', 'kind': 'enumeration'}, 'nonspherical PAW': {'default': 'yes', 'default_units': '', 'description': 'Include non-spherical terms in PAW:', 'enumeration': ('yes', 'no'), 'format_string': '', 'help_text': 'Include non-spherical contributions from the gradient corrections inside the PAW spheres', 'kind': 'boolean'}, 'plane-wave cutoff': {'default': 500, 'default_units': 'eV', 'description': 'Plane-wave cutoff:', 'enumeration': None, 'format_string': '', 'help_text': 'The energy cutoff for the plane-wave basis.', 'kind': 'float'}, 'potentials': {'default': {}, 'default_units': '', 'description': 'PAW potentials', 'enumeration': (), 'format_string': '', 'help_text': 'The PAW potentials to use for all systems', 'kind': 'dictionary'}, 'set of potentials': {'default': 'potpaw_PBE.64', 'default_units': '', 'description': 'Set of potentials:', 'enumeration': (), 'format_string': '', 'help_text': 'The set of PAW potentials to use.', 'kind': 'enumeration'}, 'spin polarization': {'default': 'none', 'default_units': '', 'description': 'Spin polarization:', 'enumeration': ('none', 'collinear', 'noncollinear'), 'format_string': '', 'help_text': 'Whether and what type of spin-polarization to use', 'kind': 'string'}, 'submodel': {'default': 'PBE : Perdew, Burke and Ernzerhof', 'default_units': '', 'description': 'Model version:', 'enumeration': (), 'format_string': '', 'help_text': 'The version of the model employed.', 'kind': 'enumeration'}, 'subset': {'default': 'Show all potentials', 'default_units': '', 'description': 'Subset of potentials:', 'enumeration': ('Show all potentials', 'Show standard potentials', 'Show GW potentials'), 'format_string': '', 'help_text': 'The subset of PAW potentials to use.', 'kind': 'enumeration'}}#
parameters = {'calculate stress': {'default': 'yes', 'default_units': '', 'description': 'Calculate stress tensor:', 'enumeration': ('no', 'only pressure', 'yes'), 'format_string': '', 'help_text': 'Whether to calculate the stress tensor, the pressure, or neither.', 'kind': 'enumeration'}, 'ediff': {'default': 1e-05, 'default_units': '', 'description': 'Electronic convergence threshold', 'enumeration': None, 'format_string': '.2E', 'help_text': 'Threshold for the electronic convergence.', 'kind': 'float'}, 'efermi': {'default': 'middle of the gap', 'default_units': 'eV', 'description': 'Fermi level:', 'enumeration': ('middle of the gap', 'legacy'), 'format_string': '.3f', 'help_text': 'The position of the Fermi level: either the middle of the gap, the previous legacy value, or a numerical value in eV', 'kind': 'float'}, 'electronic method': {'default': 'fast', 'default_units': '', 'description': 'Electronic minimization method:', 'enumeration': ('normal', 'fast', 'very fast', 'all', 'conjugate', 'damped', 'exact'), 'format_string': '', 'help_text': 'The algorithm used tp minimize the electronic energy.', 'kind': 'enumeration'}, 'extra keywords': {'default': [], 'default_units': '', 'description': 'Extra keywords', 'enumeration': (), 'format_string': '', 'help_text': 'Extra keywords to add/overwrite those from the GUI. ', 'kind': 'list'}, 'initial wavefunction': {'default': 'default', 'default_units': '', 'description': 'Initial wavefunction:', 'enumeration': ('default', 'random guess'), 'format_string': 's', 'help_text': 'The initial wavefunction to start with.', 'kind': 'string'}, 'input only': {'default': 'no', 'default_units': '', 'description': 'Write the input files and stop:', 'enumeration': ('yes', 'no'), 'format_string': 's', 'help_text': "Don't run VASP. Just write the input files.", 'kind': 'boolean'}, 'kpar': {'default': 2, 'default_units': '', 'description': 'Cores per k-point (KPAR):', 'enumeration': None, 'format_string': '', 'help_text': 'Number of cores working on each k-point (KPAR).', 'kind': 'integer'}, 'lorbit': {'default': 'yes', 'default_units': '', 'description': 'Calculate atomic densities and spins:', 'enumeration': ('yes', 'no'), 'format_string': '', 'help_text': 'Whether to calculate the angular momemntum resolved densities and spins on the atoms.', 'kind': 'boolean'}, 'lplane': {'default': 'yes', 'default_units': '', 'description': 'Plane-wise data distribution (LPLANE):', 'enumeration': ('yes', 'no'), 'format_string': '', 'help_text': 'Whether to use the plane-wise data distribution, which reduces memory bandwidth but worsens load balancing.', 'kind': 'boolean'}, 'lreal': {'default': 'no', 'default_units': '', 'description': 'Use real space projection (LREAL):', 'enumeration': ('yes', 'no'), 'format_string': '', 'help_text': 'Whether to use projection operators in real space (True) or reciprocal (False).', 'kind': 'boolean'}, 'lscalapack': {'default': 'yes', 'default_units': '', 'description': 'Use ScaLAPACK (LSCALAPACK):', 'enumeration': ('yes', 'no'), 'format_string': '', 'help_text': 'Whether to use ScaLAPACK for the orthonormalization of the orbitals and, optionally, subspace rotations.', 'kind': 'boolean'}, 'lscalu': {'default': 'no', 'default_units': '', 'description': 'Use ScaLAPACK for subspace rotations (LSCALU):', 'enumeration': ('yes', 'no'), 'format_string': '', 'help_text': 'Whether to use ScaLAPACK for the subspace rotations.', 'kind': 'boolean'}, 'ncore': {'default': 2, 'default_units': '', 'description': 'Cores per orbital (NCORE):', 'enumeration': None, 'format_string': '', 'help_text': 'Number of cores working on each orbital (NCORE).', 'kind': 'integer'}, 'nelm': {'default': 60, 'default_units': '', 'description': 'Maximum electronic iterations:', 'enumeration': None, 'format_string': '', 'help_text': 'Maximum number of steps for the selfconsistent electronic minimization.', 'kind': 'integer'}, 'nelmin': {'default': 'default', 'default_units': '', 'description': 'Minimum electronic iterations:', 'enumeration': ('default',), 'format_string': '', 'help_text': 'Minimum number of steps for the selfconsistent electronic minimization. The default is 6 for minimization and MD, 2 otherwise.', 'kind': 'integer'}, 'np': {'default': 'available', 'default_units': '', 'description': 'Total number of cores to use:', 'enumeration': ('available',), 'format_string': '', 'help_text': 'The total number of cores to use.', 'kind': 'integer'}, 'nsim': {'default': 4, 'default_units': '', 'description': 'Number of bands treated simultaneously (NSIM):', 'enumeration': None, 'format_string': '', 'help_text': 'Number of bands treated simultaneously in RMM-DIIS or blocked Davidsonmethods for optimizing the wavefunction (NSIM).', 'kind': 'integer'}, 'precision': {'default': 'normal', 'default_units': '', 'description': 'Precision of FFT grids and projections:', 'enumeration': ('single', 'normal', 'accurate'), 'format_string': '', 'help_text': 'The precision of the FFT grids the real-space projections.', 'kind': 'enumeration'}, 'results': {'default': {}, 'default_units': '', 'description': 'results', 'enumeration': (), 'format_string': '', 'help_text': 'The results to save to variables or in tables.', 'kind': 'dictionary'}, 'save gradients': {'default': 'no', 'default_units': '', 'description': 'Save the gradients:', 'enumeration': ('yes', 'no'), 'format_string': '', 'help_text': 'Whether to save the gradients.', 'kind': 'boolean'}, 'use hdf5 files': {'default': 'no', 'default_units': '', 'description': 'Output to  hdf5 files:', 'enumeration': ('yes', 'no'), 'format_string': 's', 'help_text': 'Use hdf5 files for the wavefunction and charge density output.', 'kind': 'boolean'}}#

vasp_step.energy_step module#

class vasp_step.energy_step.EnergyStep(flowchart=None, gui=None)[source]#

Bases: object

Helper class needed for the stevedore integration.

This must provide a description() method that returns a dict containing a description of this node, and create_node() and create_tk_node() methods for creating the graphical and non-graphical nodes.

The dictionary for the description is the class variable just below these comments. The felds are as follows:

my_description{str, str}

A human-readable description of this step. It can be several lines long, and needs to be clear to non-expert users. It contains the following keys: description, group, name.

my_description[“description”]tuple

A description of the Energy step. It must be clear to non-experts.

my_description[“group”]str

Which group in the menus to put this step. If the group does not exist it will be created. Common groups are “Building”, “Control”, “Custom”, “Data”, and “Simulations”.

my_description[“name”]str

The name of this step, to be displayed in the menus.

create_node(flowchart=None, **kwargs)[source]#

Create and return the new node object.

Parameters:
  • flowchart (seamm.Node) – A non-graphical SEAMM node

  • **kwargs (keyword arguments) – Various keyword arguments such as title, namespace or extension representing the title displayed in the flowchart, the namespace for the plugins of a subflowchart and the extension, respectively.

Return type:

Energy

create_tk_node(canvas=None, **kwargs)[source]#

Create and return the graphical Tk node object.

Parameters:
  • canvas (tk.Canvas) – The Tk Canvas widget

  • **kwargs (keyword arguments) – Various keyword arguments such as tk_flowchart, node, x, y, w, h representing a graphical flowchart object, a non-graphical node for a step, and dimensions of the graphical node.

Return type:

TkEnergy

description()[source]#

Return a description of what this step does.

Returns:

description

Return type:

dict(str, str)

my_description = {'description': 'An interface for Energy', 'group': 'Calculations', 'name': 'Energy'}#

vasp_step.grid module#

FFT grids, and fragments registered on a parent cell’s grid.

An atom’s energy in a plane-wave calculation depends slightly on where it sits relative to the FFT grid (the “egg-box” effect: 2-3 meV/Å in the forces for a fractional shift, 0.06 meV/Å for a whole grid step). Many-body increments difference calculations of fragments against each other and against their parent cell, so the egg-box error cancels only if every atom keeps its offset from the grid:

  • the parent cell’s grid is set explicitly, NG points along each axis with a spacing h <= max_spacing;

  • each fragment’s box is a whole number n of those steps, n·h, with NGX = n (NGXF = 2n) set explicitly;

  • each fragment is the parent’s coordinates shifted by whole grid steps.

Grid sizes are even and 2·3·5·7-smooth, as VASP’s FFTs prefer. This follows the MBE prototype’s gen_registered.py, and reproduces it.

Boxes are cubes (in grid steps) sized for the fragment’s largest extent plus a padding, at least 12 Å: 12 Å was within 2 meV/Å of 16 Å for a water dimer increment at a third of the cost. Padding matters for extended fragments, which interact with their periodic images in an affordable box (extent + 15 Å roughly halves far-pair errors at ~6× the cost, and the dipole correction does not cure it), so only compact fragments belong in a periodic code.

vasp_step.grid.DEFAULT_MAX_SPACING = 0.0829#

12.4297 Å / 150

Type:

The prototype’s grid spacing (Å)

vasp_step.grid.cell_grid(cell, max_spacing=0.0829)[source]#

NG along each lattice vector of a cell (3x3, vectors as rows, Å).

vasp_step.grid.good(n)[source]#

Whether n is even and has no prime factors but 2, 3, 5 and 7.

vasp_step.grid.grid_points(length, max_spacing=0.0829)[source]#

Grid points along an axis of length Å with spacing <= max_spacing.

vasp_step.grid.next_good(n)[source]#

The smallest good n’ >= n.

vasp_step.grid.register(coordinates, reference_cell, max_spacing=0.0829, padding=7.5, minimum=12.0)[source]#

The box, grid and coordinates of a fragment registered on a parent cell.

Parameters:
  • coordinates (array-like) – (n, 3) Cartesian coordinates (Å) in the parent cell’s frame.

  • reference_cell (array-like) – The parent cell, 3x3, orthorhombic.

  • max_spacing (float) – The parent grid’s largest spacing (Å); its NG is cell_grid().

  • padding (float) – Added to the fragment’s largest extent (Å).

  • minimum (float) – The smallest box edge (Å).

Returns:

“ng”: [n, n, n] grid points of the box (NGXF = 2n), “box”: (3,) box edges in Å (n·h along each axis), “coordinates”: (n, 3) the fragment shifted by whole grid steps so it is centred in the box, “h”: (3,) the grid steps, and “reference_ng”: the parent’s NG.

Return type:

dict

vasp_step.grid.register_cell(coordinates, cell, max_spacing=0.0829)[source]#

A cell on its own explicit grid, its atoms shifted by whole grid steps to centre them in the cell – as the prototype wrote the cell, so that the cell and its fragments share the same atom-to-grid offsets.

Returns the same keys as register().

vasp_step.inputs module#

The VASP input files from explicit settings, with no flowchart.

The Energy substep and the batch path (get_task) both build their INCAR, POTCAR, KPOINTS and POSCAR here, so the same settings give the same inputs. P is a dictionary of the Energy parameters’ values (as EnergyParameters().current_values_to_dict() gives them); anything that needs the flowchart – the initial wavefunction, an ENCUT given as an expression, extra keywords with variables – is resolved by the caller and passed in.

vasp_step.inputs.atom_order(atomic_numbers)[source]#

VASP’s atom order: by descending atomic number, stable within an element.

Returns:

  • to_vasp ([int]) – The VASP position of each atom.

  • to_seamm ([int]) – The original index of each VASP position.

  • element_count ({int: int}) – The number of atoms of each atomic number.

vasp_step.inputs.encut_value(value, enmax, context=None)[source]#

ENCUT in eV from the parameter: a quantity, a number, or an expression of ENMAX (e.g. “1.3*ENMAX”) evaluated with context (the flowchart’s variables).

vasp_step.inputs.enmax(atomic_numbers, potential_set, potential_data, chosen=None, variant=None)[source]#

The largest ENMAX (eV) of the potentials used.

vasp_step.inputs.incar_text(keywords, descriptions, keyword_metadata=None)[source]#

The INCAR file, one keyword per line with its description.

vasp_step.inputs.keywords(P, *, functional, istart, encut, extra=(), keyword_metadata=None)[source]#

The INCAR keywords and their descriptions.

Parameters:
  • P (dict) – The Energy parameters’ values.

  • functional (dict) – The functional’s metadata entry: “keywords” and “description”.

  • istart (int) – 0 (from scratch) or 1 (read WAVECAR).

  • encut (float) – The plane-wave cutoff, eV.

  • extra ([(str, object)]) – Extra keywords, already dereferenced, replacing or adding to the rest.

  • keyword_metadata (dict) – The INCAR keyword descriptions (metadata[“keywords”]).

Returns:

  • keywords (dict)

  • descriptions (dict)

vasp_step.inputs.kpoints_text(P, reciprocal_lengths=None)[source]#

The KPOINTS file and whether it is the Gamma point only.

vasp_step.inputs.poscar_text(title, vectors, atomic_numbers, coordinates, *, cartesian=False, digits=6)[source]#

The POSCAR file.

Parameters:
  • title (str)

  • vectors ([[float]]) – The lattice vectors (Å), one per row.

  • atomic_numbers ([int]) – In the caller’s atom order.

  • coordinates ([[float]]) – Fractional coordinates, or Cartesian (Å) with cartesian, in the caller’s atom order; written in VASP’s order.

  • cartesian (bool) – Write Cartesian coordinates.

  • digits (int) – Decimal places of the cell and the coordinates (6 as the substep writes; a registered fragment needs ~10 so that its box is an exact multiple of the reference grid step).

vasp_step.inputs.poscar_title(system_name, configuration_name, formula)[source]#

The POSCAR title line, as SEAMM writes it.

formula is configuration.formula: (formula, empirical, Z).

vasp_step.inputs.potcar_text(atomic_numbers, potential_set, potential_data, chosen=None, variant=None)[source]#

The POTCAR: the potentials of the elements by descending atomic number.

Parameters:
  • atomic_numbers ([int])

  • potential_set (str) – e.g. “potpaw_PBE.64”.

  • potential_data (dict) – The catalog of the set: name -> {“file”: path, “Emax”: …}.

  • chosen ({str: str}) – Potentials chosen by element; the others are the set’s defaults (or variant’s).

  • variant (str or None) – e.g. “hard”.

Returns:

  • text (str)

  • names ([str]) – The potentials, in POTCAR order.

vasp_step.installer module#

vasp_step.metadata module#

This file contains metadata describing the results from VASP

vasp_step.metadata.metadata = {'computational models': {'Density Functional Theory (DFT)': {'models': {'Generalized-gradient approximations (GGA)': {'parameterizations': {'AM05 : Armiento and Mattsson': {'description': 'GGA functional designed to include surface effects in self-consistent density functional theory, according to Armiento and Mattsson [9]', 'keywords': {'GGA': 'AM'}}, 'PBE : Perdew, Burke and Ernzerhof': {'description': 'GGA of Perdew, Burke and Ernzerhof 1997.', 'keywords': {'GGA': 'PE'}}, 'PBE-D3BJ : PBE with D3(BJ) dispersion': {'description': 'GGA of Perdew, Burke and Ernzerhof 1997.', 'keywords': {'GGA': 'PE', 'IVDW': '12'}}, 'PBEsol : modified PBE GGA': {'description': 'Modified PBE GGA according to Ref. [187].', 'keywords': {'GGA': 'PS'}}, 'PBEsol-D3BJ : PBEsol with D3(BJ) dispersion': {'description': 'Modified PBE GGA according to Ref. [187].', 'keywords': {'GGA': 'PS', 'IVDW': '12'}}, 'PW91 : Perdew-Wang 1991 GGA': {'description': "GGA according to Perdew and Wang, usually referred to as 'Perdew-Wang 1991 GGA'. This GGA is most accessibly described in Reference 26 and 27 of Ref. [182]. Note that the often mis-quoted reference [183] does not(!) describe the Perdew-Wang GGA but instead only the correlation part of the local-density approximation described above.", 'keywords': {'GGA': '91'}}, 'RPBE : the revised PBE functional of Hammer et al.': {'description': 'The RPBE modified PBE functional according to Ref. [93].', 'keywords': {'GGA': 'RP'}}, 'RPBE-D3BJ : RPBE with D3(BJ) dispersion': {'description': 'The RPBE modified PBE functional according to Ref. [93].', 'keywords': {'GGA': 'RP', 'IVDW': '12'}}, 'revPBE : the revised PBE functional of Zhang and Yang': {'description': 'The revPBE modified PBE GGA suggested in Ref. [247].', 'keywords': {'GGA': 'RE', 'IVDW': '12'}}, 'revPBE-D3BJ : revPBE with D3(BJ) dispersion': {'description': 'The revPBE modified PBE GGA suggested in Ref. [247].', 'keywords': {'GGA': 'RE', 'IVDW': '12'}}}}, 'Hybrid functionals and Hartree-Fock': {'parameterizations': {'B3LYP': {'description': "'B3LYP' hybrid functional as allegedly implemented in the VASP code (i.e., using the RPA version of the Vosko-Wilk-Nusair local-density approximation, see Refs. [233, 210] for details). Note that this is therefore not exactly the same B3LYP as originally described by Becke in 1993.", 'keywords': {'AEXX': '0.2', 'AGGAC': '0.81', 'AGGAX': '0.72', 'ALDAC': '0.19', 'GGA': 'B3', 'LHFCALC': '.TRUE.'}}, 'HF : Hartree-Fock': {'description': 'Hartree-Fock exchange, only', 'keywords': {'AEXX': '1.0', 'LHFCALC': '.TRUE.'}}, 'HSE03 : Heyd, Scuseria and Ernzerhof': {'description': 'Hybrid functional as used in Heyd, Scuseria and Ernzerhof [105, 106]. In this functional, 25 % of the exchange energy is split into a short-ranged, screened Hartree-Fock part, and a PBE GGA-like functional for the longrange part of exchange. The remaining 75 % exchange and full correlation energy are treated as in PBE. As clarified in Refs. [141, 106], two different screening parameters were used in the short-range exchange part and longrange exchange part of the original HSE functional, respectively. The ’hse03’ functional in FHI-aims reproduces these original values exactly.', 'keywords': {'AEXX': '0.25', 'AGGAC': '1.0', 'AGGAX': '0.75', 'ALDAC': '1.0', 'GGA': 'PE', 'HFSCREEN': '0.3', 'LHFCALC': '.TRUE.'}}, 'HSE06 : Heyd, Scuseria and Ernzerhof': {'description': 'Hybrid functional according to Heyd, Scuseria and Ernzerhof [105], following the naming convention suggested in Ref. [141]. In this case, the additional option value is needed, representing the single real, positive screening parameter omega as clarified in Ref. [141]. In this functional, 25 % of the exchange energy is split into a short-ranged, screened Hartree-Fock part, and a PBE GGA-like functional for the long-range part of exchange. The remaining 75 % exchange and full correlation energy are treated as in PBE.', 'keywords': {'AEXX': '0.25', 'AGGAC': '1.0', 'AGGAX': '0.75', 'ALDAC': '1.0', 'GGA': 'PE', 'HFSCREEN': '0.2', 'LHFCALC': '.TRUE.'}}, 'HSE06sol : Heyd, Scuseria and Ernzerhof': {'description': 'Hybrid functional according to Heyd, Scuseria and Ernzerhof [105], using PBEsol ', 'keywords': {'AEXX': '0.25', 'AGGAC': '1.0', 'AGGAX': '0.75', 'ALDAC': '1.0', 'GGA': 'PS', 'HFSCREEN': '0.2', 'LHFCALC': '.TRUE.'}}, 'PBE0': {'description': 'PBE0 hybrid functional [1], mixing 75 % GGA exchange with 25 % Hartree-Fock exchange', 'keywords': {'AEXX': '0.25', 'AGGAC': '1.0', 'AGGAX': '0.75', 'ALDAC': '1.0', 'GGA': 'PE', 'LHFCALC': '.TRUE.'}}, 'PBEsol0': {'description': 'Hybrid functional in analogy to PBE0 [1], except that the PBEsol [187] GGA functionals are used, mixing 75 % GGA exchange with 25 % Hartree-Fock exchange.', 'gui': 'recommended', 'keywords': {'AEXX': '0.25', 'AGGAC': '1.0', 'AGGAX': '0.75', 'ALDAC': '1.0', 'GGA': 'PS', 'LHFCALC': '.TRUE.'}}, 'RSHXLDA': {'description': 'Hybrid functional of Gerber, Ángyán, Marsman, and Kresse, Range separated hybrid density functional with long-range Hartree-Fock exchange applied to solids (2007)', 'keywords': {'AEXX': '1.0', 'AGGAC': '1.0', 'AGGAX': '0.0', 'ALDAC': '1.0', 'GGA': 'PZ', 'HFSCREEN': '0.75', 'LHFCALC': '.TRUE.', 'LRHFCALC': '.TRUE.'}}, 'RSHXPBE': {'description': 'Hybrid functional of Gerber and Ángyán, Hybrid Functional with Separated Range (2005)', 'keywords': {'AEXX': '1.0', 'AGGAC': '1.0', 'AGGAX': '0.0', 'ALDAC': '1.0', 'GGA': 'PE', 'HFSCREEN': '0.91', 'LHFCALC': '.TRUE.', 'LRHFCALC': '.TRUE.'}}}}, 'Hybrid meta generalized gradient approximation (Hybrid meta-GGA)': {'parameterizations': {'SCAN0': {'description': 'SCAN hybrid meta-GGA', 'keywords': {'AEXX': '0.25', 'AGGAC': '1.0', 'AGGAX': '0.75', 'ALDAC': '1.0', 'LHFCALC': '.TRUE.', 'METAGGA': 'SCAN'}}}}, 'Local-density approximation (LDA)': {'parameterizations': {'PW92 : Perdew-Wang': {'description': 'Homogeneous electron gas based on Ceperley and Alder as parameterized by Perdew and Wang 1992. Recommended LDA parameterization.', 'keywords': {'GGA': 'PW92'}}, 'PZ-LDA : Perdew-Zunger': {'description': 'Homogeneous electron gas based on Ceperley and Alder [42], as parameterized by Perdew and Zunger 1981 [184]', 'keywords': {'GGA': 'PZ'}}, 'VWN5 : Vosko-Wilk-Nusair': {'description': ('Slater exchange + LDA of Vosko, Wilk, and Nusair 1980. (VWN5)',), 'keywords': {'GGA': 'VW'}}}}, 'Meta-generalized gradient approximations (meta-GGA)': {'parameterizations': {'M06-l : Truhlar’s optimized meta-GGA': {'description': "Truhlar’s optimized meta-GGA of the 'M06' suite of functionals. [250]", 'keywords': {'METAGGA': 'M06L'}}, 'M06-l-D3BJ : M06-l with D3(BJ) dispersion': {'description': "Truhlar’s optimized meta-GGA of the 'M06' suite of functionals. [250]", 'keywords': {'IVDW': '12', 'METAGGA': 'M06L'}}, 'SCAN': {'description': "'Strongly Constrained and Appropriately Normed Semilocal Density Functional,' i.e., the SCAN meta-GGA functional by Sun, Ruzsinszky, and Perdew.[219] May possibly lead to numerical instabilities. rSCAN or rSCAN are more stable and should give similar results.", 'keywords': {'METAGGA': 'SCAN'}}, 'SCAN-D3BJ': {'description': 'SCAN with D3(BJ) dispersion', 'keywords': {'IVDW': '12', 'METAGGA': 'SCAN'}}, 'TPSS': {'description': 'Meta-GGA TPSS functional of Ref. [223]', 'keywords': {'METAGGA': 'TPSS'}}, 'TPSS-D3BJ': {'description': 'TPSS with D3(BJ) dispersion', 'keywords': {'IVDW': '12', 'METAGGA': 'TPSS'}}, 'r2SCAN': {'description': 'r2SCAN is a regularized version of SCAN that is  numerically more stable.', 'keywords': {'METAGGA': 'R2SCAN'}}, 'r2SCAN-D3BJ : r2SCAN with D3(BJ) dispersion': {'description': 'r2SCAN is a regularized version of SCAN that is numerically more stable, with D3(BJ) long-range dispersion correction parameters from ORCA.', 'keywords': {'IVDW': '12', 'METAGGA': 'R2SCAN', 'VDW_A1': '0.4948', 'VDW_A2': '5.7308', 'VDW_S8': '0.7898'}}, 'r2SCAN-D4BJ : r2SCAN plus D4(BJ) dispersion corrections': {'description': 'r2SCAN is a regularized version of SCAN that is  numerically more stable, with D4(BJ) long-range dispersion correction parameters from ORCA.', 'keywords': {'IVDW': '13', 'METAGGA': 'R2SCAN', 'VDW_A1': '0.51559235', 'VDW_A2': '5.77342911', 'VDW_S6': '1.0000', 'VDW_S8': '0.60187490'}}, 'rSCAN': {'description': 'rSCAN is a regularized version of SCAN that is numerically more stable.', 'keywords': {'METAGGA': 'RSCAN'}}, 'revTPSS': {'description': ('Meta-GGA revTPSS functional of Ref. [185, 186]',), 'keywords': {'METAGGA': 'RTPSS'}}}}}}}, 'keywords': {'ALGO': {'default': 'Fast', 'description': 'The electronic minimization algorithm and/or type of GW calculation'}, 'EDIFF': {'default': '1.0E-6', 'description': 'Convergence criterion for electronic self-consistency'}, 'EDIFFG': {'default': '-1.0E-06', 'description': 'Convergence criterion for optimizations: positive for energy (eV) or negative for forces [(eV/Å)^2]'}, 'EFERMI': {'default': 'MIDGAP', 'description': 'Defines how the Fermi energy is calculated, or gives the value'}, 'ENCUT': {'default': 500, 'description': 'The energy cutoff of the plane-wave basis (eV)'}, 'IBRION': {'default': '1', 'description': 'How to change the structure during the calculation'}, 'ISEARCH': {'default': 1, 'description': '0: use legacy linesearch; 1 for new.'}, 'ISIF': {'default': 3, 'description': 'Determines whether the stress is calculated, and degrees of freedom.'}, 'ISMEAR': {'default': 0, 'description': 'How to set the occupancy of each orbital'}, 'ISPIN': {'default': 1, 'description': 'Controls whether the calculation is spin-polarized (2) or not (1)'}, 'ISTART': {'default': 0, 'description': 'Whether to read WAVECAR: 0: from scratch; 1: constant E basis; 2: constant basis.'}, 'IVDW': {'default': 12, 'description': 'Specifies a vdW dispersion term of the atom-pairwise or many-body type.'}, 'KPAR': {'default': 1, 'description': 'Number of compute cores that work on each k-point'}, 'LASPH': {'default': '.True.', 'description': 'Include non-spherical contributions from the gradient corrections inside the PAW spheres'}, 'LCHARG': {'default': '.False.', 'description': 'Write the charge density to the CHGCAR and CHG text files'}, 'LCHARGH5': {'default': '.True.', 'description': 'Write the charge density to the vaspwave.h5 HDF5 file'}, 'LH5': {'default': '.True.', 'description': 'Use HDF5 files instead of text files'}, 'LNONCOLLINEAR': {'default': '.False.', 'description': 'Allow noncollinear magnetism'}, 'LORBIT': {'default': 11, 'description': 'Project the Kohn-Sham orbitals onto local quantum number (lm) to get on-site charge and magnetic moments'}, 'LPLANE': {'default': '.True.', 'description': 'Use plane-wise data distribution in real space'}, 'LREAL': {'default': 'Auto', 'description': 'Evaluate the projection operators in real space (Auto) or reciprocal (.False.)'}, 'LSCALAPACK': {'default': '.True.', 'description': 'Use ScaLAPACK for orthonormalization and subspace rotations.'}, 'LSCALU': {'default': '.False.', 'description': 'Use ScaLAPACK for the subspace rotations.'}, 'LWAVE': {'default': '.False.', 'description': 'Write the wavefunction to the WAVECAR text file'}, 'LWAVEH5': {'default': '.True.', 'description': 'Write the wavefunction to the vaspwave.h5 HDF5 file'}, 'MAGMOM': {'default': '1', 'description': 'The initial magnetic moments on the atoms'}, 'NCORE': {'default': 2, 'description': 'Number of compute cores that work on each orbital'}, 'NELM': {'default': 60, 'description': 'The maximum number of electronic self-consistency steps'}, 'NELMDL': {'default': -5, 'description': 'The number of non-consistent electronic steps at beginning. negative for first ionic step, positive for all steps.'}, 'NELMIN': {'default': '2', 'description': 'The minimum number of electronic self-consistency steps. 2 is the default, 4-8 recommended for minimization and MD'}, 'NFREE': {'default': 7, 'description': 'Number of remembered steps for RMM-DIIS, or displacements in frozen phonon calculations.'}, 'NSIM': {'default': 4, 'description': 'Number of bands to optimize simultaneously when using RMM-DIIS orthe blocked Davidson algorithm (NSIM)'}, 'NSW': {'default': 100, 'description': 'The maximum number of ionic steps'}, 'POTIM': {'default': 0, 'description': 'Scaling factor for the step in optimization; timestep for MD'}, 'PREC': {'default': 'normal', 'description': 'The precision of the FFT grids the real-space projections.'}, 'SIGMA': {'default': 0.1, 'description': 'The width of the electron smearing (eV)'}, 'SMASS': {'description': 'Damping or quenching factor in damped MD; ensemble in normal MD (-3=NVE, -1=T annealing, >=0 Nosé mass)'}, 'VDW_A1': {'default': '', 'description': 'VDW_A1 sets the damping function parameter a1 for the DFT-D3 (BJ damping function) and DFT-D4 methods.'}, 'VDW_A2': {'default': '', 'description': 'VDW_A2 defines the damping function parameter a2 for the DFT-D3 (BJ damping function) and DFT-D4 methods.'}, 'VDW_S6': {'default': '', 'description': 'VDW_S6 sets the global scaling factor S6 for the DFT-D2, DFT-D4, DFT-ulg, and Tkatchenko-Scheffler methods.'}, 'VDW_S8': {'default': 1.0, 'description': 'VDW_S8 sets the damping function parameter S8 in the DFT-D3 and DFT-D4 methods.'}}, 'results': {'DfE0': {'description': 'energy of formation', 'dimensionality': 'scalar', 'format': '.2f', 'property': 'DfE0#VASP#{model}', 'type': 'float', 'units': 'kJ/mol'}, 'Ecoh': {'description': 'cohesive energy', 'dimensionality': 'scalar', 'format': '.2f', 'property': 'Ecoh#VASP#{model}', 'type': 'float', 'units': 'eV'}, 'Ecoh/atom': {'description': 'cohesive energy per atom', 'dimensionality': 'scalar', 'format': '.2f', 'type': 'float', 'units': 'eV'}, 'Gelec': {'description': 'The electronic free energy of the system', 'dimensionality': 'scalar', 'format': '.3f', 'property': 'Gelec#VASP#{model}', 'type': 'float', 'units': 'eV'}, 'P': {'description': 'pressure', 'dimensionality': 'scalar', 'format': '.3f', 'property': 'pressure#VASP#{model}', 'type': 'float', 'units': 'GPa'}, 'RMS atom displacement': {'calculation': ['optimization'], 'description': 'the RMS displacement of the atoms', 'dimensionality': 'scalar', 'format': '.3f', 'type': 'float', 'units': 'Å'}, 'RMS atom force': {'description': 'the RMS force on the atoms', 'dimensionality': 'scalar', 'format': '.3f', 'property': 'RMS atom force#VASP#{model}', 'type': 'float', 'units': 'eV/Å'}, 'SEAMM elapsed time': {'description': 'total elapsed time for VASP', 'dimensionality': 'scalar', 'format': '.1f', 'type': 'float', 'units': 's'}, 'SEAMM np': {'description': 'number of processors for VASP', 'dimensionality': 'scalar', 'format': 'd', 'type': 'integer'}, 'V': {'description': 'volume', 'dimensionality': 'scalar', 'format': '.1f', 'property': 'volume#VASP#{model}', 'type': 'float', 'units': 'Å^3'}, 'a': {'description': "cell parameter 'a'", 'dimensionality': 'scalar', 'format': '.3f', 'property': 'cell_a#VASP#{model}', 'type': 'float', 'units': 'Å'}, 'alpha': {'description': "cell parameter 'alpha'", 'dimensionality': 'scalar', 'format': '.1f', 'property': 'cell_alpha#VASP#{model}', 'type': 'float', 'units': 'degree'}, 'b': {'description': "cell parameter 'b'", 'dimensionality': 'scalar', 'format': '.3f', 'property': 'cell_b#VASP#{model}', 'type': 'float', 'units': 'Å'}, 'beta': {'description': "cell parameter 'beta'", 'dimensionality': 'scalar', 'format': '.1f', 'property': 'cell_beta#VASP#{model}', 'type': 'float', 'units': 'degree'}, 'c': {'description': "cell parameter 'c'", 'dimensionality': 'scalar', 'format': '.3f', 'property': 'cell_c#VASP#{model}', 'type': 'float', 'units': 'Å'}, 'code name': {'description': 'The name of the code (VASP)', 'dimensionality': 'scalar', 'format': '', 'type': 'string', 'units': ''}, 'code version': {'description': 'The version of the VASP code', 'dimensionality': 'scalar', 'format': '', 'type': 'string', 'units': ''}, 'delta V': {'description': 'change in volume', 'dimensionality': 'scalar', 'format': '.1f', 'type': 'float', 'units': 'Å^3'}, 'delta a': {'description': "change in 'a'", 'dimensionality': 'scalar', 'type': 'float', 'units': 'Å'}, 'delta alpha': {'description': "change in 'alpha'", 'dimensionality': 'scalar', 'type': 'float', 'units': 'degree'}, 'delta b': {'description': "change in 'b'", 'dimensionality': 'scalar', 'type': 'float', 'units': 'Å'}, 'delta beta': {'description': "change in 'beta'", 'dimensionality': 'scalar', 'type': 'float', 'units': 'degree'}, 'delta c': {'description': "change in 'c'", 'dimensionality': 'scalar', 'type': 'float', 'units': 'Å'}, 'delta density': {'description': 'change in density', 'dimensionality': 'scalar', 'format': '.4f', 'type': 'float', 'units': 'g/mL'}, 'delta density %': {'description': '% change in density', 'dimensionality': 'scalar', 'format': '.2f', 'type': 'float', 'units': ''}, 'delta gamma': {'description': "change in 'gamma'", 'dimensionality': 'scalar', 'type': 'float', 'units': 'degree'}, 'density': {'description': 'density', 'dimensionality': 'scalar', 'format': '.4f', 'property': 'density#VASP#{model}', 'type': 'float', 'units': 'g/mL'}, 'energy': {'description': 'total energy including all terms', 'dimensionality': 'scalar', 'format': '.3f', 'property': 'E#VASP#{model}', 'type': 'float', 'units': 'eV'}, 'energy/atom': {'description': 'total energy per atom', 'dimensionality': 'scalar', 'format': '.3f', 'type': 'float', 'units': 'eV'}, 'gamma': {'description': "cell parameter 'gamma'", 'dimensionality': 'scalar', 'format': '.1f', 'property': 'cell_gamma#VASP#{model}', 'type': 'float', 'units': 'degree'}, 'gradients': {'description': 'the Cartesian gradients', 'dimensionality': ['natoms', 3], 'format': '.3f', 'property': 'gradients#VASP#{model}', 'type': 'float', 'units': 'eV/Å'}, 'maximum atom displacement': {'calculation': ['optimization'], 'description': 'the maximum displacement of an atom', 'dimensionality': 'scalar', 'format': '.3f', 'type': 'float', 'units': 'Å'}, 'maximum atom force': {'description': 'the maximum force on an atom', 'dimensionality': 'scalar', 'format': '.3f', 'property': 'maximum atom force#VASP#{model}', 'type': 'float', 'units': 'eV/Å'}, 'maximum atom force threshold': {'calculation': ['optimization'], 'description': 'the maximum force threshold for an atom', 'dimensionality': 'scalar', 'format': '.3f', 'type': 'float', 'units': 'eV/Å'}, 'model': {'description': 'The model string', 'dimensionality': 'scalar', 'format': 's', 'type': 'string', 'units': ''}, 'stress': {'description': 'stress', 'dimensionality': '[6]', 'format': '.3f', 'property': 'stress#VASP#{model}', 'type': 'float', 'units': 'GPa'}}}#

Description of the computational models for VASP.

Hamiltonians, approximations, and basis set or parameterizations, only if appropriate for this code. For example:

metadata["computational models"] = {
    "Hartree-Fock": {
        "models": {
            "PM7": {
                "parameterizations": {
                    "PM7": {
                        "elements": "1-60,62-83",
                        "periodic": True,
                        "reactions": True,
                        "optimization": True,
                        "code": "mopac",
                    },
                    "PM7-TS": {
                        "elements": "1-60,62-83",
                        "periodic": True,
                        "reactions": True,
                        "optimization": False,
                        "code": "mopac",
                    },
                },
            },
        },
    },
}

vasp_step.optimization module#

Non-graphical part of the Optimization step in a VASP flowchart

class vasp_step.optimization.Optimization(flowchart=None, title='Optimization', extension=None, logger=<Logger vasp_step.optimization (WARNING)>)[source]#

Bases: Energy

The non-graphical part of a Optimization step in a flowchart.

parser#

The parser object.

Type:

configargparse.ArgParser

options#

It contains a two item tuple containing the populated namespace and the list of remaining argument strings.

Type:

tuple

subflowchart#

A SEAMM Flowchart object that represents a subflowchart, if needed.

Type:

seamm.Flowchart

parameters#

The control parameters for Optimization.

Type:

OptimizationParameters

See also

TkOptimization, Optimization, OptimizationParameters

analyze(P=None, configuration=None, starting_configuration=None, indent='', text='', table=None, results={}, **kwargs)[source]#

Do any analysis of the output from this step.

Also print important results to the local step.out file using “printer”.

Parameters:

indent (str) – An extra indentation for the output

description_text(P=None)[source]#

Create the text description of what this step will do. The dictionary of control values is passed in as P so that the code can test values, etc.

Parameters:

P (dict) – An optional dictionary of the current values of the control parameters.

Returns:

A description of the current step.

Return type:

str

get_keywords(P=None)[source]#

Get the keywords and values for the calculation.

property git_revision#

The git version of this module.

property header#

A printable header for this section of output

property version#

The semantic version of this module.

vasp_step.optimization_parameters module#

Control parameters for the Optimization step in a SEAMM flowchart

class vasp_step.optimization_parameters.OptimizationParameters(defaults={}, data=None)[source]#

Bases: EnergyParameters

The control parameters for Optimization.

You need to replace the “time” entry in dictionary below these comments with the definitions of parameters to control this step. The keys are parameters for the current plugin,the values are dictionaries as outlined below.

Examples

parameters = {
    "time": {
        "default": 100.0,
        "kind": "float",
        "default_units": "ps",
        "enumeration": tuple(),
        "format_string": ".1f",
        "description": "Simulation time:",
        "help_text": ("The time to simulate in the dynamics run.")
    },
}
parameters{str: {str: str}}

A dictionary containing the parameters for the current step. Each key of the dictionary is a dictionary that contains the the following keys:

parameters[“default”] :

The default value of the parameter, used to reset it.

parameters[“kind”]enum()

Specifies the kind of a variable. One of “integer”, “float”, “string”, “boolean”, or “enum”

While the “kind” of a variable might be a numeric value, it may still have enumerated custom values meaningful to the user. For instance, if the parameter is a convergence criterion for an optimizer, custom values like “normal”, “precise”, etc, might be adequate. In addition, any parameter can be set to a variable of expression, indicated by having “$” as the first character in the field. For example, $OPTIMIZER_CONV.

parameters[“default_units”]str

The default units, used for resetting the value.

parameters[“enumeration”]: tuple

A tuple of enumerated values.

parameters[“format_string”]: str

A format string for “pretty” output.

parameters[“description”]: str

A short string used as a prompt in the GUI.

parameters[“help_text”]: str

A longer string to display as help for the user.

See also

Optimization, TkOptimization, Optimization, OptimizationStep

parameters = {'convergence cutoff': {'default': 0.01, 'default_units': 'eV/Å', 'description': 'Gradient convergence:', 'enumeration': None, 'format_string': '', 'help_text': 'The convergence of the maximum gradient on an atom (eV/Å).', 'kind': 'float'}, 'damped MD approach': {'default': 'damping', 'default_units': '', 'description': 'How to damp the velocity:', 'enumeration': ('damping', 'quenching'), 'format_string': '', 'help_text': 'How the velocity is damped during damped MD', 'kind': 'enumeration'}, 'force scale factor': {'default': 1, 'default_units': '', 'description': 'Force scale factor:', 'enumeration': None, 'format_string': '.1f', 'help_text': 'The factor to scale the force in damped MD (SMASS).', 'kind': 'float'}, 'iteration history length': {'default': 'default', 'default_units': '', 'description': 'Length of iteration history used:', 'enumeration': ('default',), 'format_string': '', 'help_text': 'How many iterations are remembered when using RMM-DIIS (NFREE).', 'kind': 'integer'}, 'number of steps': {'default': 100, 'default_units': '', 'description': 'Maximum number of steps:', 'enumeration': None, 'format_string': '', 'help_text': 'The maximum number of optimization steps (NSW).', 'kind': 'integer'}, 'optimization method': {'default': 'RMM-DIIS', 'default_units': '', 'description': 'Optimization algorithm:', 'enumeration': ('RMM-DIIS', 'Conjugate Gradients', 'Damped MD'), 'format_string': '', 'help_text': 'The optimization algorithm to employ (IBRION).', 'kind': 'string'}, 'optimize atom positions': {'default': 'yes', 'default_units': '', 'description': 'Optimize the atomic positions:', 'enumeration': ('yes', 'no'), 'format_string': '', 'help_text': 'Whether to allow the atom positions (in fractional coordinates) tochange during the optimization.', 'kind': 'boolean'}, 'optimize cell shape': {'default': 'no', 'default_units': '', 'description': 'Optimize the cell shape:', 'enumeration': ('yes', 'no'), 'format_string': '', 'help_text': 'Whether to allow the shape of the cell tochange during the optimization.', 'kind': 'boolean'}, 'optimize cell volume': {'default': 'no', 'default_units': '', 'description': 'Optimize the cell volume:', 'enumeration': ('yes', 'no'), 'format_string': '', 'help_text': 'Whether to allow the volume of the cell tochange during the optimization.', 'kind': 'boolean'}, 'step scale factor': {'default': 0.5, 'default_units': '', 'description': 'Factor to scale optimization steps:', 'enumeration': None, 'format_string': '.1f', 'help_text': 'The step length predicted by the optimizer is scaled by this factor (POTIM).', 'kind': 'float'}, 'velocity quenching factor': {'default': 1.0, 'default_units': '', 'description': 'Quenching factor:', 'enumeration': None, 'format_string': '.1f', 'help_text': 'The factor to quench the velocity in damped MD (POTIM).', 'kind': 'float'}, 'velocity scale factor': {'default': 0.8, 'default_units': '', 'description': 'Damping factor:', 'enumeration': None, 'format_string': '.1f', 'help_text': 'The factor for scaling the previous velocity (0->1)', 'kind': 'float'}}#

vasp_step.optimization_step module#

class vasp_step.optimization_step.OptimizationStep(flowchart=None, gui=None)[source]#

Bases: object

Helper class needed for the stevedore integration.

This must provide a description() method that returns a dict containing a description of this node, and create_node() and create_tk_node() methods for creating the graphical and non-graphical nodes.

The dictionary for the description is the class variable just below these comments. The felds are as follows:

my_description{str, str}

A human-readable description of this step. It can be several lines long, and needs to be clear to non-expert users. It contains the following keys: description, group, name.

my_description[“description”]tuple

A description of the Optimization step. It must be clear to non-experts.

my_description[“group”]str

Which group in the menus to put this step. If the group does not exist it will be created. Common groups are “Building”, “Control”, “Custom”, “Data”, and “Simulations”.

my_description[“name”]str

The name of this step, to be displayed in the menus.

create_node(flowchart=None, **kwargs)[source]#

Create and return the new node object.

Parameters:
  • flowchart (seamm.Node) – A non-graphical SEAMM node

  • **kwargs (keyword arguments) – Various keyword arguments such as title, namespace or extension representing the title displayed in the flowchart, the namespace for the plugins of a subflowchart and the extension, respectively.

Return type:

Optimization

create_tk_node(canvas=None, **kwargs)[source]#

Create and return the graphical Tk node object.

Parameters:
  • canvas (tk.Canvas) – The Tk Canvas widget

  • **kwargs (keyword arguments) – Various keyword arguments such as tk_flowchart, node, x, y, w, h representing a graphical flowchart object, a non-graphical node for a step, and dimensions of the graphical node.

Return type:

TkOptimization

description()[source]#

Return a description of what this step does.

Returns:

description

Return type:

dict(str, str)

my_description = {'description': 'An interface for Optimization', 'group': 'Calculations', 'name': 'Optimization'}#

vasp_step.potentials module#

The PAW potentials VASP uses by default, by set and element, and named variants of a set (e.g. “hard”), available without the graphical interface.

The tables were in tk_energy.py, so a calculation set up without the dialog had no potentials at all (an empty “potentials” parameter gave a KeyError).

vasp_step.potentials.potentials_for(potential_set, elements, chosen=None, variant=None)[source]#

The potential of each element: the one chosen, else the variant’s, else the set’s default.

Parameters:
  • potential_set (str) – e.g. “potpaw_PBE.64”.

  • elements ([str]) – Element symbols.

  • chosen ({str: str} or None) – Potentials chosen explicitly, by element.

  • variant (str or None) – A named variant, e.g. “hard”.

Returns:

{str

Return type:

str}

vasp_step.potentials.variants = {'hard': {'B': 'B_h', 'C': 'C_h', 'Cl': 'Cl_h', 'F': 'F_h', 'H': 'H_h', 'N': 'N_h', 'O': 'O_h', 'P': 'P_h', 'S': 'S_h'}}#

element -> potential, overriding the defaults. “hard” uses the hard PAW potentials where VASP has them (the MBE water protocol uses O_h and H_h at 1200 eV); other elements keep their default.

Type:

Named variants of a set

vasp_step.resolver module#

Resolve VASP on the machine that runs it (seamm_exec’s resolver hook).

A VASP task’s command names {gamma_code} (and {dftd4} for a -D4 functional). Where the task runs, seamm_exec reads that machine’s <root>/vasp.ini [local] section and calls resolve(), which puts the configured commands into the command; they may themselves use {NTASKS}, which the executor then fills in (e.g. gamma_code = mpiexec -np {NTASKS} vasp_gam).

dftd4 is the dftd4 program (conda-forge dftd4, version 4; on TinkerCliffs /projects/seamm/conda-envs/dftd4/bin/dftd4).

Registered as the entry point vasp in org.molssi.seamm.exec.resolvers.

vasp_step.resolver.resolve(config, cmd, env, ce, root)[source]#

(config, cmd, env) for running VASP here.

Parameters:
  • config (dict) – This machine’s vasp.ini section (empty if there is none).

  • cmd ([str]) – The task’s command template.

  • env (dict) – The task’s extra environment.

  • ce (dict) – The task’s computational environment (NTASKS, …).

  • root (str or Path) – The SEAMM root holding vasp.ini.

vasp_step.tk_energy module#

The graphical part of a Energy step

class vasp_step.tk_energy.TkEnergy(tk_flowchart=None, node=None, canvas=None, x=None, y=None, w=200, h=50)[source]#

Bases: TkNode

The graphical part of a Energy step in a flowchart.

tk_flowchart#

The flowchart that we belong to.

Type:

TkFlowchart = None

node#

The corresponding node of the non-graphical flowchart

Type:

Node = None

canvas#

The Tk Canvas to draw on

Type:

tkCanvas = None

dialog#

The Pmw dialog object

Type:

Dialog

x#

The x-coordinate of the center of the picture of the node

Type:

int = None

y#

The y-coordinate of the center of the picture of the node

Type:

int = None

w#

The width in pixels of the picture of the node

Type:

int = 200

h#

The height in pixels of the picture of the node

Type:

int = 50

self[widget]#

A dictionary of tk widgets built using the information contained in Energy_parameters.py

Type:

dict

See also

Energy, TkEnergy, EnergyParameters

create_dialog(title='Energy')[source]#

Create the dialog. A set of widgets will be chosen by default based on what is specified in the Energy_parameters module.

Parameters:

None

Return type:

None

create_potentials_tab()[source]#

Add a tab with a periodic table for setting the potentials.

find_available_potentials()[source]#
fit_dialog()[source]#

Make the dialog fill the window.

get_Emax()[source]#

Get the maximum ENMAX for the currently slsected potentials

get_current_potentials()[source]#

Get the currently selected potentials from the widgets.

handle_dialog(result)[source]#

Handle closing the dialog.

Parameters:

result (str) – The button that was pressed to close the dialog, or None if the x dialog close button was pressed.

reset_calculation_frame(widget=None)[source]#

Layout the widgets for the calculation control.

Note

The single point energy has nothing that changes, so do nothing.

reset_dialog(widget=None, row=0)[source]#

Layout the widgets in the dialog.

The widgets are chosen by default from the information in Energy_parameter.

This function simply lays them out row by row with aligned labels. You may wish a more complicated layout that is controlled by values of some of the control parameters. If so, edit or override this method

Parameters:

widget (Tk Widget = None)

Return type:

None

reset_kspace_frame(widget=None)[source]#

Layout the widgets in the dialog.

The widgets are chosen by default from the information in Energy_parameter.

This function simply lays them out row by row with aligned labels. You may wish a more complicated layout that is controlled by values of some of the control parameters. If so, edit or override this method

Parameters:

widget (Tk Widget = None)

Return type:

None

reset_model_frame(widget=None)[source]#

Layout the widgets in the dialog.

The widgets are chosen by default from the information in Energy_parameter.

This function simply lays them out row by row with aligned labels. You may wish a more complicated layout that is controlled by values of some of the control parameters. If so, edit or override this method

Parameters:

widget (Tk Widget = None)

Return type:

None

reset_performance_frame(widget=None)[source]#

Layout the widgets in the performance frame.

Parameters:

widget (Tk Widget = None)

Return type:

None

right_click(event)[source]#

Handles the right click event on the node.

Parameters:

event (Tk Event)

Return type:

None

See also

TkEnergy.edit

update_Emax(event=None)[source]#

Update the value of Emax in the display.

vasp_step.tk_optimization module#

The graphical part of a Optimization step

class vasp_step.tk_optimization.TkOptimization(tk_flowchart=None, node=None, canvas=None, x=None, y=None, w=200, h=50)[source]#

Bases: TkEnergy

The graphical part of a Optimization step in a flowchart.

tk_flowchart#

The flowchart that we belong to.

Type:

TkFlowchart = None

node#

The corresponding node of the non-graphical flowchart

Type:

Node = None

canvas#

The Tk Canvas to draw on

Type:

tkCanvas = None

dialog#

The Pmw dialog object

Type:

Dialog

x#

The x-coordinate of the center of the picture of the node

Type:

int = None

y#

The y-coordinate of the center of the picture of the node

Type:

int = None

w#

The width in pixels of the picture of the node

Type:

int = 200

h#

The height in pixels of the picture of the node

Type:

int = 50

self[widget]#

A dictionary of tk widgets built using the information contained in Optimization_parameters.py

Type:

dict

See also

Optimization, TkOptimization, OptimizationParameters

create_dialog(title='Optimization')[source]#

Create the dialog. A set of widgets will be chosen by default based on what is specified in the Optimization_parameters module.

Parameters:

None

Return type:

None

See also

TkOptimization.reset_dialog

reset_calculation_frame(widget=None)[source]#

Layout the widgets in the calculation frame.

Parameters:

widget (Tk Widget = None)

Return type:

None

right_click(event)[source]#

Handles the right click event on the node.

Parameters:

event (Tk Event)

Return type:

None

See also

TkOptimization.edit

vasp_step.tk_vasp module#

The graphical part of a VASP step

class vasp_step.tk_vasp.TkVASP(tk_flowchart=None, node=None, namespace='org.molssi.seamm.vasp.tk', canvas=None, x=None, y=None, w=200, h=50)[source]#

Bases: TkNode

The graphical part of a VASP step in a flowchart.

tk_flowchart#

The flowchart that we belong to.

Type:

TkFlowchart = None

node#

The corresponding node of the non-graphical flowchart

Type:

Node = None

canvas#

The Tk Canvas to draw on

Type:

tkCanvas = None

dialog#

The Pmw dialog object

Type:

Dialog

x#

The x-coordinate of the center of the picture of the node

Type:

int = None

y#

The y-coordinate of the center of the picture of the node

Type:

int = None

w#

The width in pixels of the picture of the node

Type:

int = 200

h#

The height in pixels of the picture of the node

Type:

int = 50

self[widget]#

A dictionary of tk widgets built using the information contained in VASP_parameters.py

Type:

dict

See also

VASP, TkVASP, VASPParameters

create_dialog()[source]#

Create the dialog. A set of widgets will be chosen by default based on what is specified in the VASP_parameters module.

Parameters:

None

Return type:

None

See also

TkVASP.reset_dialog

right_click(event)[source]#

Handles the right click event on the node.

Parameters:

event (Tk Event)

Return type:

None

See also

TkVASP.edit

vasp_step.vasp module#

Non-graphical part of the VASP step in a SEAMM flowchart

class vasp_step.vasp.VASP(flowchart=None, title='VASP', namespace='org.molssi.seamm.vasp', extension=None, logger=<Logger vasp_step.vasp (WARNING)>)[source]#

Bases: Node

The non-graphical part of a VASP step in a flowchart.

parser#

The parser object.

Type:

configargparse.ArgParser

options#

It contains a two item tuple containing the populated namespace and the list of remaining argument strings.

Type:

tuple

subflowchart#

A SEAMM Flowchart object that represents a subflowchart, if needed.

Type:

seamm.Flowchart

parameters#

The control parameters for VASP.

Type:

VASPParameters

See also

TkVASP, VASP, VASPParameters

analyze(indent='', **kwargs)[source]#

Do any analysis of the output from this step.

Also print important results to the local step.out file using “printer”.

Parameters:

indent (str) – An extra indentation for the output

catalog_potentials()[source]#

Create a catalog of the PAW potentials.

create_parser()[source]#

Setup the command-line / config file parser

description_text(P=None)[source]#

Create the text description of what this step will do. The dictionary of control values is passed in as P so that the code can test values, etc.

Parameters:

P (dict) – An optional dictionary of the current values of the control parameters.

Returns:

A description of the current step.

Return type:

str

property git_revision#

The git version of this module.

parse_potcar(path)[source]#

Read a POTCAR file and extract pertinent information.

Parameters:

path (pathlib.Path) – The path to the POTCAR file

Returns:

results – A dictionary of the data from the POTCAR file

Return type:

dict(str, str)

property potential_metadata#

The metadata data for the potentials.

run()[source]#

Run a VASP step.

Parameters:

None

Returns:

The next node object in the flowchart.

Return type:

seamm.Node

set_id(node_id)[source]#

Set the id for node to a given tuple

property version#

The semantic version of this module.

vasp_step.vasp_step module#

class vasp_step.vasp_step.VASPStep(flowchart=None, gui=None)[source]#

Bases: object

Helper class needed for the stevedore integration.

This must provide a description() method that returns a dict containing a description of this node, and create_node() and create_tk_node() methods for creating the graphical and non-graphical nodes.

The dictionary for the description is the class variable just below these comments. The felds are as follows:

my_description{str, str}

A human-readable description of this step. It can be several lines long, and needs to be clear to non-expert users. It contains the following keys: description, group, name.

my_description[“description”]tuple

A description of the VASP step. It must be clear to non-experts.

my_description[“group”]str

Which group in the menus to put this step. If the group does not exist it will be created. Common groups are “Building”, “Control”, “Custom”, “Data”, and “Simulations”.

my_description[“name”]str

The name of this step, to be displayed in the menus.

classmethod analyze_task(result, model_chemistry, configuration, **kwargs)[source]#

The energy (kJ/mol), gradients (kJ/mol/Å) and stress (GPa, sigma = -P) of a finished task from get_task().

classmethod can_run_task(configuration, model_chemistry, **kwargs)[source]#

Whether get_task() can run this structure.

create_node(flowchart=None, **kwargs)[source]#

Create and return the new node object.

Parameters:
  • flowchart (seamm.Node) – A non-graphical SEAMM node

  • **kwargs (keyword arguments) – Various keyword arguments such as title, namespace or extension representing the title displayed in the flowchart, the namespace for the plugins of a subflowchart and the extension, respectively.

Return type:

VASP

create_tk_node(canvas=None, **kwargs)[source]#

Create and return the graphical Tk node object.

Parameters:
  • canvas (tk.Canvas) – The Tk Canvas widget

  • **kwargs (keyword arguments) – Various keyword arguments such as tk_flowchart, node, x, y, w, h representing a graphical flowchart object, a non-graphical node for a step, and dimensions of the graphical node.

Return type:

TkVASP

description()[source]#

Return a description of what this step does.

Returns:

description

Return type:

dict(str, str)

classmethod get_model_chemistry_options(periodic_only=False, mdi_only=False)[source]#

VASP’s model chemistries, VASP:DFT@<functional>/<potentials>.

classmethod get_task(configuration, model_chemistry, **kwargs)[source]#

A task computing VASP’s energy, forces and stress for one structure.

my_description = {'description': 'An interface for VASP', 'group': 'Simulations', 'name': 'VASP'}#

Module contents#

vasp_step A SEAMM plug-in for VASP