def run(self): maxiter = self.options['maxiter'] etol = self.options['etol'] for self.iteration in range(1, maxiter + 1): log.iteration(self.iteration, self.verbose) self.fock_loop() self.build() self.energy() if self.iteration > 1: e_dif = abs(self._energies['tot'][-2] - self._energies['tot'][-1]) if e_dif < etol and self.converged: break self.converged = e_dif < etol if self.converged: log.write( '\nAuxiliary GF2 converged after %d iterations.\n' % self.iteration, self.verbose) else: log.write('\nAuxiliary GF2 failed to converge.\n', self.verbose) self._timings['total'] = self._timings.get('total', 0.0) + self._timer.total() log.title('Timings', self.verbose) log.timings(self._timings, self.verbose) return self
def setup(self): self.h1e = self.hf.h1e_mo self.eri = self.hf.eri_mo if self.options['dm0'] is None: self.rdm1 = self.hf.rdm1_mo else: self.rdm1 = np.array(self.options['dm0'], dtype=types.float64) self.converged = False self.iteration = 0 chempot = self.hf.chempot self.gf = aux.Aux(self.hf.e, np.eye(self.hf.nao), chempot=chempot) self.se = aux.Aux([], [ [], ] * self.hf.nao, chempot=chempot) self._se_prev = None self.rpa = None self.e_qp = self.hf.e.copy() self._timings = {} self._energies = {} log.title('Options', self.verbose) log.options(self.options, self.verbose) log.title('Input', self.verbose) log.molecule(self.hf.mol, self.verbose) log.write('Basis = %s\n' % self.hf.mol.basis, self.verbose) log.write('E(nuc) = %.12f\n' % self.hf.e_nuc, self.verbose) log.write('E(hf) = %.12f\n' % self.hf.e_tot, self.verbose) log.write('nao = %d\n' % self.hf.nao, self.verbose) log.write('nmom = (%s, %s)\n' % self.nmom, self.verbose)
def setup(self): super().setup() log.title('Options', self.verbose) log.options(self.options, self.verbose) log.title('Input', self.verbose) log.molecule(self.hf.mol, self.verbose) log.write('Basis = %s\n' % self.hf.mol.basis, self.verbose) log.write('E(nuc) = %.12f\n' % self.hf.e_nuc, self.verbose) log.write('E(hf) = %.12f\n' % self.hf.e_tot, self.verbose) log.write('nao = %d\n' % self.hf.nao, self.verbose)
def run(self): self.build() self.merge() self.energy_mp2() self._timings['total'] = self._timings.get('total', 0.0) + self._timer.total() log.title('Timings', self.verbose) log.timings(self._timings, self.verbose) return self
def setup(self): super().setup() log.title('Options', self.verbose) log.options(self.options, self.verbose) log.title('Input', self.verbose) log.molecule(self.hf.mol, self.verbose) log.write('Basis = %s\n' % self.hf.mol.basis, self.verbose) log.write('E(nuc) = %.12f\n' % self.hf.e_nuc, self.verbose) log.write('E(hf) = %.12f\n' % self.hf.e_tot, self.verbose) log.write('<S^2> = %.6f\n' % self.hf.spin_square[0], self.verbose) log.write('nao = %d\n' % self.hf.nao, self.verbose) log.write('nfrozen = (%d, %d)\n' % self.options['frozen'], self.verbose) log.write('nmom = (%s, %s)\n' % self.nmom, self.verbose)
def run(self): self.get_1p_or_1h() self.build() self.merge() self.diagonalise() log.write('E(mp2) = %.12f\n' % self.e_mp2, self.verbose) e_excite = self.ip[0] if self.method == 'ip' else self.ea[0] log.write('E(%s) = %.12f\n' % (self.method, e_excite), self.verbose) self._timings['total'] = self._timings.get('total', 0.0) + self._timer.total() log.title('Timings', self.verbose) log.timings(self._timings, self.verbose) return self
def setup(self): super().setup() self.gf = self.se.new(self.hf.e, np.eye(self.hf.nao)) if self.eri.ndim == 3: self.eri = lib.pack_tril(self.eri) log.title('Options', self.verbose) log.options(self.options, self.verbose) log.title('Input', self.verbose) log.molecule(self.hf.mol, self.verbose) log.write('Basis = %s\n' % self.hf.mol.basis, self.verbose) log.write('E(nuc) = %.12f\n' % self.hf.e_nuc, self.verbose) log.write('E(hf) = %.12f\n' % self.hf.e_tot, self.verbose) log.write('nao = %d\n' % self.hf.nao, self.verbose) log.write('nmom = (%s, %s)\n' % self.nmom, self.verbose) self.run_mp2()
def setup(self): super().setup() self.gf = (self.se[0].new(self.hf.e[0], np.eye(self.hf.nao)), self.se[1].new(self.hf.e[1], np.eye(self.hf.nao))) if self.eri.ndim == 4: self.eri = np.stack([lib.pack_tril(x) for x in self.eri], axis=0) log.title('Options', self.verbose) log.options(self.options, self.verbose) log.title('Input', self.verbose) log.molecule(self.hf.mol, self.verbose) log.write('Basis = %s\n' % self.hf.mol.basis, self.verbose) log.write('E(nuc) = %.12f\n' % self.hf.e_nuc, self.verbose) log.write('E(hf) = %.12f\n' % self.hf.e_tot, self.verbose) log.write('nao = %d\n' % self.hf.nao, self.verbose) log.write('nmom = (%s, %s)\n' % self.nmom, self.verbose) self.run_mp2()
def run(self): maxiter = self.options['maxiter'] etol = self.options['etol'] checkpoint = self.options['checkpoint'] for self.iteration in range(1, maxiter + 1): log.iteration(self.iteration, self.verbose) self.fock_loop() self.build() self.energy() if self.iteration > 1: e_dif = abs(self._energies['tot'][-2] - self._energies['tot'][-1]) if e_dif < etol and self.converged: break self.converged = e_dif < etol if checkpoint and mpi.rank == 0: np.savetxt('rdm1_alph_chk.dat', self.rdm1[0]) np.savetxt('rdm1_beta_chk.dat', self.rdm1[1]) self.se[0].save('se_alph_chk.pickle') self.se[1].save('se_beta_chk.pickle') if self.converged: log.write( '\nAuxiliary GF2 converged after %d iterations.\n' % self.iteration, self.verbose) else: log.write('\nAuxiliary GF2 failed to converge.\n', self.verbose) self._timings['total'] = self._timings.get('total', 0.0) + self._timer.total() log.title('Timings', self.verbose) log.timings(self._timings, self.verbose) return self
def run(self): for self.iteration in range(1, self.options['maxiter'] + 1): log.iteration(self.iteration, self.verbose) self.build_gf() if self.iteration == 1 or self.options['update_w']: self.solve_casida() self.build_se() self.merge() self.energy() if self.options['update_eig']: self.iterate_qp() if self.iteration > 1: e_dif = abs(self._energies['tot'][-2] - \ self._energies['tot'][-1]) if e_dif < self.options['etol'] and self.converged: break self.converged = e_dif < self.options['etol'] if self.converged: log.write( '\nAuxiliary GW converged after %d iterations.\n' % self.iteration, self.verbose) else: log.write('\nAuxiliary GW failed to converge.\n', self.verbose) self._timings['total'] = self._timings.get('total', 0.0) \ + self._timer.total() log.title('Timings', self.verbose) log.timings(self._timings, self.verbose) return self
def test_title(self): sys.stdout = stdout = StringIO() log.title('Test') sys.stdout = sys.__stdout__