def run(self, nsteps, inverse_overlap='exact'): if inverse_overlap == 'exact': self.solver = self.solve elif inverse_overlap == 'approximate': self.solver = self.solve2 elif inverse_overlap == 'noinverse': self.solver = self.solve3 else: raise RuntimeError("Error, inverse_solver must be either 'exact' " "'approximate' or 'noinverse'") self.overlap = Overlap() ni = self.a_uci.shape[2] a_uci = np.empty((self.nmykpts, self.dim, ni + nsteps), self.wfs.dtype) b_uci = np.empty((self.nmykpts, self.dim, ni + nsteps), self.wfs.dtype) a_uci[:, :, :ni] = self.a_uci b_uci[:, :, :ni] = self.b_uci self.a_uci = a_uci self.b_uci = b_uci for u in range(self.nmykpts): for i in range(nsteps): self.step(u, ni + i)
def __init__(self, diagksl, orthoksl, initksl, *args, **kwargs): WaveFunctions.__init__(self, *args, **kwargs) self.diagksl = diagksl self.orthoksl = orthoksl self.initksl = initksl self.set_orthonormalized(False) self.overlap = Overlap(orthoksl, self.timer)