Coverage for gpaw/pes/__init__.py: 96%
28 statements
« prev ^ index » next coverage.py v7.7.1, created at 2025-07-20 00:19 +0000
« prev ^ index » next coverage.py v7.7.1, created at 2025-07-20 00:19 +0000
1from ase.units import Bohr
3import gpaw.mpi as mpi
4from gpaw.lrtddft.spectrum import Writer
6ds_prefactor = {
7 'Ang': Bohr ** 2,
8 'a.u.': 1.0,
9 'Mb': Bohr ** 2 * 100}
12class PESpectrum(Writer):
14 def __init__(self,
15 enlist,
16 folding='Gauss',
17 width=0.08): # Gauss/Lorentz width
18 Writer.__init__(self, folding, width)
19 self.title = 'Photo emission spectrum'
20 self.fields = 'Binding energy [eV] '
21 if folding is None:
22 self.fields += 'Spectroscopic factor'
23 else:
24 self.fields += 'Folded spectroscopic factor'
26 self.energies = enlist[0]
27 self.values = []
28 for val in enlist[1]:
29 self.values.append([val])
32class BasePES:
34 def save_folded_pes(self,
35 filename=None,
36 width=0.08, # Gauss/Lorentz width
37 emin=None,
38 emax=None,
39 de=None,
40 folding='Gauss',
41 comment=None):
43 ew = self.get_energies_and_weights()
44 if mpi.rank == 0:
45 sp = PESpectrum(ew, folding, width)
46 sp.write(filename, emin, emax, de, comment)
48 def get_energies_and_weights(self):
49 if self.be is None or self.f is None:
50 self._calculate()
52 return self.be, self.f
54 def set_first_peak_energy(self, energy):
55 self.first_peak_energy = energy