pyiron.vasp.base module

class pyiron.vasp.base.DFTOutput[source]

Bases: object

This class stores the DFT specific output

log_dict

A dictionary of all tags and values of DFT data

Type

dict

from_hdf(hdf)[source]

Reads the attributes and reconstructs the object from a hdf file :param hdf: The hdf5 instance

to_hdf(hdf)[source]

Save the object in a HDF5 file

Parameters

hdf (pyiron.base.generic.hdfio.ProjectHDFio) – HDF path to which the object is to be saved

class pyiron.vasp.base.GenericOutput[source]

Bases: object

This class stores the generic output like different structures, energies and forces from a simulation in a highly generic format. Usually the user does not have to access this class.

log_dict

A dictionary of all tags and values of generic data (positions, forces, etc)

Type

dict

property bands
from_hdf(hdf)[source]

Reads the attributes and reconstructs the object from a hdf file :param hdf: The hdf5 instance

to_hdf(hdf)[source]

Save the object in a HDF5 file

Parameters

hdf (pyiron.base.generic.hdfio.ProjectHDFio) – HDF path to which the object is to be saved

class pyiron.vasp.base.Incar(input_file_name=None, table_name='incar')[source]

Bases: pyiron.base.generic.parameters.GenericParameters

Class to control the INCAR file of a vasp simulation

load_default()[source]

Loads the default file content

class pyiron.vasp.base.Input[source]

Bases: object

Handles setting the input parameters for a VASP job.

incar

.vasp.vasp.Incar instance to handle the INCAR file inputs in VASP

kpoints

vasp.vasp.Kpoints instance to handle the KPOINTS file inputs in VASP

potcar

vasp.vasp.Potcar instance to set the appropriate POTCAR files for the simulation

Ideally, the user would not have to access the Input instance unless the user wants to set an extremely specific VASP tag which can’t se set using functions in Vasp().

Examples

>>> atoms =  CrystalStructure("Pt", BravaisBasis="fcc", a=3.98)
>>> ham = VaspBase("trial")
>>> ham.structure = atoms
>>> ham.calc_static()
>>> assert(atoms==ham.structure)
>>> assert(ham.input.incar["ISIF"]==-1)
from_hdf(hdf)[source]

Reads the attributes and reconstructs the object from a hdf file

Parameters

hdf – The hdf5 instance

to_hdf(hdf)[source]

Save the object in a HDF5 file

Parameters

hdf (pyiron.base.generic.hdfio.ProjectHDFio) – HDF path to which the object is to be saved

write(structure, modified_elements, directory=None)[source]

Writes all the input files to a specified directory

Parameters
  • structure (atomistics.structure.atoms.Atoms instance) – Structure to be written

  • directory (str) – The working directory for the VASP run

class pyiron.vasp.base.Kpoints(input_file_name=None, table_name='kpoints')[source]

Bases: pyiron.base.generic.parameters.GenericParameters

Class to control the KPOINTS file of a vasp simulation

load_default()[source]

Loads the default file content

set(method=None, size_of_mesh=None, shift=None)[source]

Sets appropriate tags and values in the KPOINTS file :param method: Type of meshing scheme (Gamma Point, MP, Manual or Line) :type method: str :param size_of_mesh: List of size 1x3 specifying the required mesh size :type size_of_mesh: list/numpy.ndarray :param shift: List of size 1x3 specifying the user defined shift from the Gamma point :type shift: list

set_kmesh_by_density(structure)[source]
class pyiron.vasp.base.Output[source]

Bases: object

Handles the output from a VASP simulation.

electronic_structure

Gives the electronic structure of the system

electrostatic_potential

Gives the electrostatic/local potential of the system

charge_density

Gives the charge density of the system

collect(directory='/home/travis/build/pyiron/pyiron/docs', sorted_indices=None)[source]

Collects output from the working directory

Parameters
  • directory (str) – Path to the directory

  • sorted_indices (np.array/None) –

from_hdf(hdf)[source]

Reads the attributes and reconstructs the object from a hdf file :param hdf: The hdf5 instance

property structure

Getter for the output structure

to_hdf(hdf)[source]

Save the object in a HDF5 file

Parameters

hdf (pyiron.base.generic.hdfio.ProjectHDFio) – HDF path to which the object is to be saved

class pyiron.vasp.base.Potcar(input_file_name=None, table_name='potcar')[source]

Bases: pyiron.base.generic.parameters.GenericParameters

load_default()[source]

Load defaults resets the dataset in the background to be empty

modify(**modify)[source]

Modify values for existing parameters. The command is called as modify(param1=val1, param2=val2, …)

Parameters
  • separator (str) – needed if the parameter name contains special characters such as par: use then as input: modify(separator=”:”, par=val) - optional

  • append_if_not_present (bool) – do not raise an exception but append the parameter in practice use set(par=val) - default=False

  • **modify_dict (dict) – dictionary of parameter names and values

pot_path_dict = {'GGA': 'paw-gga-pbe', 'LDA': 'paw-lda', 'PBE': 'paw-gga-pbe'}
potcar_set_structure(structure, modified_elements)[source]
write_file(file_name, cwd=None)[source]
Parameters
  • file_name

  • cwd

Returns:

class pyiron.vasp.base.VaspBase(project, job_name)[source]

Bases: pyiron.dft.job.generic.GenericDFTJob

Class to setup and run and analyze VASP simulations which is a derivative of pyiron.objects.job.generic.GenericJob. The functions in these modules are written in such the function names and attributes are very generic (get_structure(), molecular_dynamics(), version) but the functions are written to handle VASP specific input/output.

Parameters
  • project (pyiron.project.Project instance) – Specifies the project path among other attributes

  • job_name (str) – Name of the job

input

Instance which handles the input

Type

pyiron.vasp.vasp.Input

Examples

Let’s say you need to run a vasp simulation where you would like to control the input parameters manually. To set up a static dft run with Gaussian smearing and a k-point MP mesh of [6, 6, 6]. You would have to set it up as shown below:

>>> ham = VaspBase(job_name="trial_job")
>>> ham.input.incar[IBRION] = -1
>>> ham.input.incar[ISMEAR] = 0
>>> ham.input.kpoints.set(size_of_mesh=[6, 6, 6])

However, the according to pyiron’s philosophy, it is recommended to avoid using code specific tags like IBRION, ISMEAR etc. Therefore the recommended way to set this calculation is as follows:

>>> ham = VaspBase(job_name="trial_job")
>>> ham.calc_static()
>>> ham.set_occupancy_smearing(smearing="gaussian")
>>> ham.set_kpoints(mesh=[6, 6, 6])
The exact same tags as in the first examples are set automatically.
append_charge_density(job_specifier=None, path=None)[source]

Append charge density file (CHGCAR)

Parameters
  • job_specifier (str/int) – name of the job or job ID

  • path (str) – path to CHGCAR file

append_wave_function(job_specifier=None, path=None)[source]

Append wave function file (WAVECAR)

Parameters
  • job_specifier (str/int) – name of the job or job ID

  • path (str) – path to WAVECAR file

calc_md(temperature=None, n_ionic_steps=1000, n_print=1, time_step=1.0, retain_charge_density=False, retain_electrostatic_potential=False, **kwargs)[source]

Sets appropriate tags for molecular dynamics in VASP

Parameters
  • temperature (int/float/list) – Temperature/ range of temperatures in Kelvin

  • n_ionic_steps (int) – Maximum number of ionic steps

  • n_print (int) – Prints outputs every n_print steps

  • time_step (float) – time step (fs)

  • retain_charge_density (bool) – True id the charge density should be written

  • retain_electrostatic_potential (bool) – True if the electrostatic potential should be written

calc_minimize(electronic_steps=400, ionic_steps=100, max_iter=None, pressure=None, algorithm=None, retain_charge_density=False, retain_electrostatic_potential=False, ionic_energy=None, ionic_forces=None, volume_only=False)[source]

Function to setup the hamiltonian to perform ionic relaxations using DFT. The ISIF tag has to be supplied separately.

Parameters
  • electronic_steps (int) – Maximum number of electronic steps

  • ionic_steps (int) – Maximum number of ionic

  • max_iter (int) – Maximum number of iterations

  • pressure (float) – External pressure to be applied

  • algorithm (str) – Type of VASP algorithm to be used “Fast”/”Accurate”

  • retain_charge_density (bool) – True if the charge density should be written

  • retain_electrostatic_potential (boolean) – True if the electrostatic potential should be written

  • ionic_energy (float) – Ionic energy convergence criteria (eV)

  • ionic_forces (float) – Ionic forces convergence criteria (overwrites ionic energy) (ev/A)

  • volume_only (bool) – Option to relax only the volume (keeping the relative coordinates fixed

calc_static(electronic_steps=400, algorithm=None, retain_charge_density=False, retain_electrostatic_potential=False)[source]

Function to setup the hamiltonian to perform static SCF DFT runs.

Parameters
  • electronic_steps (int) – Maximum number of electronic steps

  • algorithm (str) – Type of VASP algorithm to be used “Fast”/”Accurate”

  • retain_charge_density (bool) – True if

  • retain_electrostatic_potential (bool) – True/False

cleanup(files_to_remove=('WAVECAR', 'CHGCAR', 'CHG', 'vasprun.xml'))[source]

Removes excess files (by default: WAVECAR, CHGCAR, CHG)

collect_errors()[source]

Collects errors from the VASP run

collect_logfiles()[source]

Collect errors and warnings.

collect_output()[source]

Collects the outputs and stores them to the hdf file

collect_warnings()[source]

Collects warnings from the VASP run

compress(files_to_compress=None)[source]

Compress the output files of a job object.

Parameters

files_to_compress (list) – A list of files to compress (optional)

convergence_check()[source]

Validate the convergence of the calculation.

Returns

If the calculation is converged

Return type

(bool)

copy_hamiltonian(job_name)[source]

Copies a job to new one with a different name.

Parameters

job_name (str) – Job name

Returns

New job

Return type

pyiron.vasp.vasp.Vasp

property exchange_correlation_functional

The exchange correlation functional used (LDA or GGA)

property fix_spin_constraint

Tells if the type of constraints the spins have for this calculation

Type

bool

property fix_symmetry
from_directory(directory)[source]

The Vasp instance is created by parsing the input and output from the specified directory

Parameters

directory (str) – Path to the directory

from_hdf(hdf=None, group_name=None)[source]

Recreates instance from the hdf5 file

Parameters
get_charge_density()[source]

Gets the charge density from the hdf5 file. This value is normalized by the volume

Returns

atomistics.volumetric.generic.VolumetricData instance

get_eddrmm_handling()[source]
Returns

status of EDDRMM handling

Return type

str

get_electronic_structure()[source]

Gets the electronic structure instance from the hdf5 file

Returns

pyiron.atomistics.waves.electronic.ElectronicStructure instance

get_electrostatic_potential()[source]

Gets the electrostatic potential from the hdf5 file.

Returns

atomistics.volumetric.generic.VolumetricData instance

get_final_structure_from_file(filename='CONTCAR')[source]

Get the final structure of the simulation usually from the CONTCAR file

Parameters

filename (str) – Path to the CONTCAR file in VASP

Returns

The final structure

Return type

pyiron.atomistics.structure.atoms.Atoms

get_nelect()[source]

Returns the number of electrons in the systems

Returns

Number of electrons in the system

Return type

float

get_rwigs()[source]

Gets the radii of Wigner-Seitz cell. (RWIGS tag)

Returns

dictionary of radii

Return type

dict

list_potentials()[source]

Lists all the possible POTCAR files for the elements in the structure depending on the XC functional

Returns

a list of available potentials

Return type

list

property plane_wave_cutoff

Plane wave energy cutoff in eV

property potential
property potential_available
property potential_list
property potential_view
property publication
reset_output()[source]

Resets the output instance

restart(snapshot=-1, job_name=None, job_type=None)[source]

Restart a new job created from an existing Vasp calculation.

Parameters
  • snapshot (int) – Snapshot of the calculations which would be the initial structure of the new job

  • job_name (str) – Job name

  • job_type (str) – Job type. If not specified a Vasp job type is assumed

Returns

New job

Return type

new_ham (vasp.vasp.Vasp instance)

restart_from_charge_density(snapshot=-1, job_name=None, job_type=None, icharg=None, self_consistent_calc=None)[source]

Restart a new job created from an existing Vasp calculation by reading the charge density.

Parameters
  • snapshot (int) – Snapshot of the calculations which would be the initial structure of the new job

  • job_name (str) – Job name

  • job_type (str) – Job type. If not specified a Vasp job type is assumed

  • icharg (int) – Vasp ICHARG tag

  • self_consistent_calc (boolean) – Tells if the new calculation is self consistent

Returns

New job

Return type

new_ham (vasp.vasp.Vasp instance)

restart_from_wave_and_charge(snapshot=-1, job_name=None, job_type=None, icharg=None, self_consistent_calc=False, istart=1)[source]

Restart a new job created from an existing Vasp calculation by reading the charge density and the wave function.

Parameters
  • snapshot (int) – Snapshot of the calculations which would be the initial structure of the new job

  • job_name (str) – Job name

  • job_type (str) – Job type. If not specified a Vasp job type is assumed

  • icharg (int) – Vasp ICHARG tag

  • self_consistent_calc (boolean) – Tells if the new calculation is self consistent

  • istart (int) – Vasp ISTART tag

Returns

New job

Return type

new_ham (vasp.vasp.Vasp instance)

restart_from_wave_functions(snapshot=-1, job_name=None, job_type=None, istart=1)[source]

Restart a new job created from an existing Vasp calculation by reading the wave functions.

Parameters
  • snapshot (int) – Snapshot of the calculations which would be the initial structure of the new job

  • job_name (str) – Job name

  • job_type (str) – Job type. If not specified a Vasp job type is assumed

  • istart (int) – Vasp ISTART tag

Returns

New job

Return type

new_ham (vasp.vasp.Vasp instance)

set_algorithm(algorithm='Fast', ialgo=None)[source]

Sets the type of electronic minimization algorithm

Parameters
  • algorithm (str) – Algorithm defined by VASP (Fast, Normal etc.)

  • ialgo (int) – Sets the IALGO tag in VASP. If not none, this overwrites algorithm

set_convergence_precision(ionic_energy=0.001, electronic_energy=1e-07, ionic_forces=0.01)[source]

Sets the electronic and ionic convergence precision. For ionic convergence either the energy or the force precision is required

Parameters
  • ionic_energy (float) – Ionic energy convergence precision (eV)

  • electronic_energy (float) – Electronic energy convergence precision (eV)

  • ionic_forces (float) – Ionic force convergence precision (eV/A)

set_coulomb_interactions(interaction_type=2, ldau_print=True)[source]

Write the on-site Coulomb interactions in the INCAR file

Parameters
  • interaction_type (int) – Type of Coulombic interaction 1 - Asimov method 2 - Dudarev method

  • ldau_print (boolean) – True/False

set_dipole_correction(direction=2, dipole_center=None)[source]

Apply a dipole correction using the dipole layer method proposed by Neugebauer & Scheffler

Parameters
  • direction (int) – Direction along which the field has to be applied (0, 1, or 2)

  • dipole_center (list/numpy.ndarray) – Position of the center of the dipole (not the center of the vacuum) in relative coordinates

set_eddrmm_handling(status='not_converged')[source]

Sets the way, how EDDRMM warning is handled.

Parameters

status (str) – new status of EDDRMM handling (can be ‘not_converged’, ‘ignore’, or ‘restart’)

set_electric_field(e_field=0.1, direction=2, dipole_center=None)[source]

Set an external electric field using the dipole layer method proposed by Neugebauer & Scheffler

Parameters
  • e_field (float) – Magnitude of the external electric field (eV/A)

  • direction (int) – Direction along which the field has to be applied (0, 1, or 2)

  • dipole_center (list/numpy.ndarray) – Position of the center of the dipole (not the center of the vacuum) in relative coordinates

set_empty_states(n_empty_states=None)[source]

Sets the number of empty states in the calculation :param n_empty_states: Required number of empty states :type n_empty_states: int

set_fft_mesh(nx=None, ny=None, nz=None)[source]

Set the number of points in the respective directions for the 3D FFT mesh used for computing the charge density or electrostatic potentials. In VASP, using PAW potentials, this refers to the “finer fft mesh”. If no values are set, the default settings from Vasp are used to set the number of grid points.

Parameters
  • nx (int) – Number of points on the x-grid

  • ny (int) – Number of points on the y-grid

  • nz (int) – Number of points on the z-grid

set_for_band_structure_calc(num_points, structure=None, read_charge_density=True)[source]

Sets up the input for a non self-consistent bandstructure calculation

Parameters
  • num_points (int) – Number of k-points along the total BZ path

  • structure (atomistics.structure.atoms.Atoms instance) – Structure for which the bandstructure is to be generated. (default is the input structure)

  • read_charge_density (boolean) – If True, a charge density from a previous SCF run is used (recommended)

set_input_to_read_only()[source]

This function enforces read-only mode for the input classes, but it has to be implement in the individual classes.

set_mixing_parameters(method=None, n_pulay_steps=None, density_mixing_parameter=None, spin_mixing_parameter=None)[source]
Parameters
  • method (str) –

  • n_pulay_steps (int) –

  • density_mixing_parameter (float) –

  • spin_mixing_parameter (float) –

set_occupancy_smearing(smearing='fermi', width=0.2, ismear=None)[source]

Set how the finite temperature smearing is applied in determining partial occupancies

Parameters
  • smearing (str) – Type of smearing (fermi/gaussian etc.)

  • width (float) – Smearing width (eV)

  • ismear (int) – Directly sets the ISMEAR tag. Overwrites the smearing tag

set_rwigs(rwigs_dict)[source]

Sets the radii of Wigner-Seitz cell. (RWIGS tag)

Parameters

rwigs_dict (dict) – Dictionary of species and corresponding radii.

set_spin_constraint(lamb, rwigs_dict, direction=False, norm=False)[source]

Sets spin constrains including ‘LAMBDA’ and ‘RWIGS’.

Parameters
  • lamb (float) – LAMBDA tag

  • rwigs_dict (dict) – Dictionary of species and corresponding radii.

  • direction (bool) – (True/False) constrain spin direction.

  • norm (bool) – (True/False) constrain spin norm (magnitude).

property sorted_indices

How the original atom indices are ordered in the vasp format (species by species)

property spin_constraints

Returns True if the calculation is spin polarized

stop_calculation(next_electronic_step=False)[source]

Call to stop the VASP calculation

Parameters

next_electronic_step (bool) – True if the next electronic step should be calculated

property structure

Returns:

to_hdf(hdf=None, group_name=None)[source]

Stores the instance attributes into the hdf5 file

Parameters
validate_ready_to_run()[source]

Returns:

property write_charge_density

True if the charge density file CHGCAR file is/should be written

property write_electrostatic_potential

True if the local potential or electrostatic potential LOCPOT file is/should be written

write_input()[source]

Call routines that generate the INCAR, POTCAR, KPOINTS and POSCAR input files

write_magmoms()[source]

Write the magnetic moments in INCAR from that assigned to the species

property write_resolved_dos

True if the resolved DOS should be written (in the vasprun.xml file)

property write_wave_funct

True if the wave function file WAVECAR file is/should be written

exception pyiron.vasp.base.VaspCollectError[source]

Bases: ValueError

pyiron.vasp.base.get_k_mesh_by_cell(cell, kspace_per_in_ang=0.1)[source]
Parameters
  • cell

  • kspace_per_in_ang

Returns: