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 (seevasp_step.grid), in a box of its extent plus"padding"(7.5 Å), with the dipole correction. Withoutgrida 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.Taskcomputing VASP’s energy, forces and (for a cell, if asked) stress. See the module docstring.
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:
NodeThe 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:
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
- 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_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.
- property git_revision#
The git version of this module.
- property header#
A printable header for this section of output
- 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_parameters module#
Control parameters for the Energy substep in a VASP step
- class vasp_step.energy_parameters.EnergyParameters(defaults={}, data=None)[source]#
Bases:
ParametersThe 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:
objectHelper 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:
- 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:
- 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.grid_points(length, max_spacing=0.0829)[source]#
Grid points along an axis of
lengthÅ with spacing <=max_spacing.
- 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.
formulaisconfiguration.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:
EnergyThe 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:
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
- 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:
EnergyParametersThe 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:
objectHelper 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:
- 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:
- 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.inisection (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:
TkNodeThe 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
See also
- 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
See also
- 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
See also
- 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
See also
- reset_performance_frame(widget=None)[source]#
Layout the widgets in the performance frame.
- Parameters:
widget (Tk Widget = None)
- Return type:
None
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:
TkEnergyThe 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
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:
TkNodeThe 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
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:
NodeThe 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
- 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
- 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:
objectHelper 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:
- 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:
- 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