Coverage for gpaw/lcaotddft/timedensitymatrix.py: 35%
20 statements
« prev ^ index » next coverage.py v7.7.1, created at 2025-07-12 00:18 +0000
« prev ^ index » next coverage.py v7.7.1, created at 2025-07-12 00:18 +0000
1import os
3import numpy as np
5from gpaw.lcaotddft.observer import TDDFTObserver
6from gpaw.tddft.units import au_to_as
9class TimeDensityMatrix(TDDFTObserver):
11 def __init__(self, paw, dmat, ksd, interval=1):
12 TDDFTObserver.__init__(self, paw, interval)
13 self.dmat = dmat
14 self.ksd = ksd
15 if self.ksd.world.rank == 0:
16 self.dpath = 'rho'
17 if not os.path.isdir(self.dpath):
18 os.mkdir(self.dpath)
20 def _update(self, paw):
21 time = paw.time
22 rho_uMM = self.dmat.get_density_matrix((paw.niter, paw.action))
23 rho_up = self.ksd.transform(rho_uMM)
24 if self.ksd.comm.rank == 0:
25 fpath = os.path.join(self.dpath, 't%09.1f.npy' % (time * au_to_as))
26 np.save(fpath, rho_up[0])