nanotools.restart module

Created on 2020-06-16

@author: Vincent Michaud-Rioux

class nanotools.restart.Restart(densityPath: str = '', DMkPath: str = '', DMRPath: str = '', HkPath: str = '', HRPath: str = '', ground_state_density_return: bool = True, partial_core_density_return: bool = True, neutral_atom_density_return: bool = True, potential_return: bool = True)[source]

Bases: Base

Restart class.

The restart class gathers the paths of files containing previously calculated results, which can be used for restart.

By default, the density is saved upon completing a ground state calculation. The densityPath field is then updated to point to the results. Any kind of restart will then automatically import the density given in densityPath. If the ground state density is not found in densityPath then the code ignores it and proceeds without restart.

If DMkPath or DMRPath is set, then the k-space or real space density matrix is saved to the specified path. Next, a calculation can be restarted from either density matrix. If the ground state density matrix is not found then the code ignores it and proceeds without restart. Attention: if DMkPath or DMRPath is set, the ground state density is no longer saved in the output file.

If several attributes have valid restart data, then the precedence goes as follows: densityPath, DMkPath, DMRPath.

Example:

from nanotools import Atoms, Cell, Kpoint, System, TotalEnergy
a = 2.818 # lattice constant (ang)
cell = Cell(avec=[[0.,a,a],[a,0.,a],[a,a,0.]], resolution=0.12)
fxyz = [[0.00,0.00,0.00],[0.25,0.25,0.25]]
atoms = Atoms(fractional_positions=fxyz, formula="GaAs")
sys = System(cell=cell, atoms=atoms)
sys.kpoint.set_grid([5,5,5])
calc = TotalEnergy(sys)
calc.solver.set_mpi_command(mpi="mpiexec -n 4")
calccpy = calc.copy()

# SCF
calc.solve()

# Restart from density (and save density automatically)
calc = calccpy.copy()
calc.solver.mix.maxit = 1
calc.solver.restart.densityPath = "nano_scf_out.h5"
calc.solve()

# Restart from density and save k-space density matrix
calc = calccpy.copy()
calc.solver.mix.maxit = 1
calc.solver.restart.densityPath = "nano_scf_out.h5"
calc.solver.restart.DMkPath = "nano_scf_out.h5"
calc.solve()

# Restart from k-space density matrix and save real space density matrix
calc = calccpy.copy()
calc.solver.mix.maxit = 1
calc.solver.restart.DMkPath = "nano_scf_out.h5"
calc.solver.restart.DMRPath = "nano_scf_out.h5"
calc.solve()

# Restart from real space density matrix
calc = calccpy.copy()
calc.solver.mix.maxit = 1
calc.solver.restart.DMRPath = "nano_scf_out.h5"
calc.solve()

Attributes:

densityPath (string):

Path to an HDF5 file. The group /density/groundstate will be read and used as an initial guess. Examples:

restart.densityPath = "/path/to/hdf5/file"
DMkPath (string):

Path to an HDF5 file. The group /aomtrx/DMk, containing the k-space density matrix, will be read and used as an initial guess. Examples:

restart.DMkPath = "/path/to/hdf5/file"
DMRPath (string):

Path to an HDF5 file. The group /aomtrx/DMR, containing the real space density matrix, will be read and used as an initial guess. Examples:

restart.DMRPath = "/path/to/hdf5/file"
HkPath (string):

Path to an HDF5 file. The group /hamiltonian, containing the Gamma - point hamiltonian and orbital-overlap matrix. Examples:

restart.HkPath = "/path/to/hdf5/file"
HRPath (string):

Path to an HDF5 file. The group /hamiltonian, containing the real space hamiltonian and orbital-overlap matrix. Examples:

restart.HRPath = "/path/to/hdf5/file"
ground_state_density_return (bool):

Save the ground state density to densityPath if True, and do not save otherwise.

partial_core_density_return (bool):

Save the partial core density to densityPath if True, and do not save otherwise.

neutral_atom_density_return (bool):

Save the neutral atom density to densityPath if True, and do not save otherwise.

potential_return (bool):

Save the potential to densityPath if True, and do not save otherwise.