Open
Description
I encountered a problem with providing a set of k-points near high-symmetry points (e.g.) to estimate effective mass using Koopmans eigenvalues with finite difference formula.
To reproduce the error, one could e.g. load the .json with any calculation on a high symmetry path and then provide a new k-points list:
from koopmans.io import read
from ase.dft.kpoints import bandpath
kpath_raw =[[0.0 , 0.0 , 0.0 ],
[0.005 , 0.0 , 0.0 ],
...]
wf = read('gaas.json')
cell = wf.kpoints.path.cell
kpath = bandpath(kpath_raw, cell, npoints=1)
wf.kpoints.set_path(kpath)
wf.run()
The problem of parsing non-high symmetry points results in the error:
Wannierization
==============
Not running wannier/scf as it is already complete
Not running wannier/nscf as it is already complete
Traceback (most recent call last):
File "eff_mass_prepare.py", line 34, in <module>
wf.run()
File "/home/poliukhi/soft/koopmans/src/koopmans/workflows/_workflow.py", line 361, in run
self._run()
File "/home/poliukhi/soft/koopmans/src/koopmans/workflows/_singlepoint.py", line 162, in _run
dscf_workflow.run()
File "/home/poliukhi/soft/koopmans/src/koopmans/workflows/_workflow.py", line 359, in run
self._run()
File "/home/poliukhi/soft/koopmans/src/koopmans/workflows/_koopmans_dscf.py", line 238, in _run
self.perform_initialization()
File "/home/poliukhi/soft/koopmans/src/koopmans/workflows/_koopmans_dscf.py", line 340, in perform_initialization
wannier_workflow.run(subdirectory='init')
File "/home/poliukhi/soft/koopmans/src/koopmans/workflows/_workflow.py", line 359, in run
self._run()
File "/home/poliukhi/soft/koopmans/src/koopmans/workflows/_wannierize.py", line 164, in _run
calc_w90 = self.new_calculator(calc_type, init_orbitals=init_orbs, directory=w90_dir,
File "/home/poliukhi/soft/koopmans/src/koopmans/workflows/_wannierize.py", line 315, in new_calculator
calc: CalcExtType = super().new_calculator(calc_type, *args, **kwargs)
File "/home/poliukhi/soft/koopmans/src/koopmans/workflows/_workflow.py", line 664, in new_calculator
calc = calc_class(atoms=copy.deepcopy(self.atoms), **all_kwargs)
File "/home/poliukhi/soft/koopmans/src/koopmans/calculators/_wannier90.py", line 33, in __init__
CalculatorExt.__init__(self, *args, **kwargs)
File "/home/poliukhi/soft/koopmans/src/koopmans/calculators/_utils.py", line 81, in __init__
self.parameters.update(**kwargs)
File "/home/poliukhi/soft/koopmans/src/koopmans/settings/_wannier90.py", line 29, in update
self.kpath = kpath
File "/home/poliukhi/soft/koopmans/src/koopmans/settings/_utils.py", line 112, in __setattr__
self.__setitem__(name, value)
File "/home/poliukhi/soft/koopmans/src/koopmans/settings/_wannier90.py", line 70, in __setitem__
self.kpoint_path = construct_kpoint_path(
File "/home/poliukhi/soft/ase_koopmans/ase/io/wannier90.py", line 377, in construct_kpoint_path
path_lengths = _path_lengths(path, cell, bands_point_num)
File "/home/poliukhi/soft/ase_koopmans/ase/io/wannier90.py", line 328, in _path_lengths
path_list = path_str_to_list(path, special_points)
File "/home/poliukhi/soft/ase_koopmans/ase/io/wannier90.py", line 372, in path_str_to_list
raise ValueError(f'Could not deconstruct {path} into individual high-symmetry points')
ValueError: Could not deconstruct GKpt0Kpt1Kpt2Kpt3Kpt4Kpt5Kpt6Kpt7Kpt8Kpt9Kpt10Kpt11Kpt12Kpt13Kpt14Kpt15Kpt16Kpt17 into individual high-symmetry points
Once the problem is solved, I think it will be very easy to implement a simple and useful calculator of effective mass for arbitrary k-points.
Metadata
Metadata
Assignees
Labels
No labels