def kernel(self, mo_coeff=None, ci0=None, callback=None, _kern=None): if mo_coeff is None: mo_coeff = self.mo_coeff else: self.mo_coeff = mo_coeff if callback is None: callback = self.callback if _kern is None: _kern = mc1step.kernel if self.verbose >= logger.WARN: self.check_sanity() self.dump_flags() log = logger.Logger(self.stdout, self.verbose) casci_symm.label_symmetry_(self, self.mo_coeff) if (hasattr(self.fcisolver, 'wfnsym') and self.fcisolver.wfnsym is None and hasattr(self.fcisolver, 'guess_wfnsym')): wfnsym = self.fcisolver.guess_wfnsym(self.ncas, self.nelecas, ci0, verbose=log) wfnsym = symm.irrep_id2name(self.mol.groupname, wfnsym) log.info('Active space CI wfn symmetry = %s', wfnsym) self.converged, self.e_tot, self.e_cas, self.ci, \ self.mo_coeff, self.mo_energy = \ _kern(self, mo_coeff, tol=self.conv_tol, conv_tol_grad=self.conv_tol_grad, ci0=ci0, callback=callback, verbose=self.verbose) log.note('CASSCF energy = %.15g', self.e_tot) self._finalize() return self.e_tot, self.e_cas, self.ci, self.mo_coeff, self.mo_energy
def cas_natorb_(self, mo_coeff=None, ci=None, eris=None, sort=False, casdm1=None, verbose=None): self.mo_coeff, self.ci, occ = self.cas_natorb(mo_coeff, ci, eris, sort, casdm1, verbose) if sort: casci_symm.label_symmetry_(self, self.mo_coeff) return self.mo_coeff, self.ci, occ
def kernel(self, mo_coeff=None, ci0=None, macro=None, micro=None, callback=None, _kern=None): if mo_coeff is None: mo_coeff = self.mo_coeff else: self.mo_coeff = mo_coeff if macro is None: macro = self.max_cycle_macro if micro is None: micro = self.max_cycle_micro if callback is None: callback = self.callback if _kern is None: _kern = mc1step.kernel if self.verbose > logger.QUIET: pyscf.gto.mole.check_sanity(self, self._keys, self.stdout) self.mol.check_sanity(self) self.dump_flags() casci_symm.label_symmetry_(self, self.mo_coeff) self.converged, self.e_tot, self.e_cas, self.ci, \ self.mo_coeff, self.mo_energy = \ _kern(self, mo_coeff, tol=self.conv_tol, conv_tol_grad=self.conv_tol_grad, macro=macro, micro=micro, ci0=ci0, callback=callback, verbose=self.verbose) logger.note(self, 'CASSCF energy = %.15g', self.e_tot) self._finalize_() return self.e_tot, self.e_cas, self.ci, self.mo_coeff, self.mo_energy
def cas_natorb_(self, mo_coeff=None, ci=None, eris=None, sort=False, casdm1=None, verbose=None): self.mo_coeff, self.ci, occ = cas_natorb(self, mo_coeff, ci, eris, sort, casdm1, verbose) if sort: casci_symm.label_symmetry_(self, self.mo_coeff) return self.mo_coeff, self.ci, occ
def canonicalize_(self, mo_coeff=None, ci=None, eris=None, sort=False, cas_natorb=False, casdm1=None, verbose=None): self.mo_coeff, ci, self.mo_energy = \ self.canonicalize(mo_coeff, ci, eris, sort, cas_natorb, casdm1, verbose) if sort: casci_symm.label_symmetry_(self, self.mo_coeff) if cas_natorb: # When active space is changed, the ci solution needs to be updated self.ci = ci return self.mo_coeff, ci, self.mo_energy
def kernel(self, mo_coeff=None, ci0=None, callback=None, _kern=None): if mo_coeff is None: mo_coeff = self.mo_coeff if callback is None: callback = self.callback if _kern is None: _kern = mc1step.kernel self.check_sanity() self.dump_flags() log = logger.Logger(self.stdout, self.verbose) # Initialize/overwrite self.fcisolver.orbsym and self.fcisolver.wfnsym mo_coeff = self.mo_coeff = casci_symm.label_symmetry_( self, mo_coeff, ci0) self.converged, self.e_tot, self.e_cas, self.ci, \ self.mo_coeff, self.mo_energy = \ _kern(self, mo_coeff, tol=self.conv_tol, conv_tol_grad=self.conv_tol_grad, ci0=ci0, callback=callback, verbose=self.verbose) log.note('CASSCF energy = %.15g', self.e_tot) self._finalize() return self.e_tot, self.e_cas, self.ci, self.mo_coeff, self.mo_energy
def kernel(self, mo_coeff=None, ci0=None, callback=None, _kern=None): if mo_coeff is None: mo_coeff = self.mo_coeff if callback is None: callback = self.callback if _kern is None: _kern = mc1step.kernel if self.verbose >= logger.WARN: self.check_sanity() self.dump_flags() log = logger.Logger(self.stdout, self.verbose) # Initialize/overwrite self.fcisolver.orbsym and self.fcisolver.wfnsym mo_coeff = self.mo_coeff = casci_symm.label_symmetry_(self, mo_coeff, ci0) self.converged, self.e_tot, self.e_cas, self.ci, \ self.mo_coeff, self.mo_energy = \ _kern(self, mo_coeff, tol=self.conv_tol, conv_tol_grad=self.conv_tol_grad, ci0=ci0, callback=callback, verbose=self.verbose) log.note('CASSCF energy = %.15g', self.e_tot) self._finalize() return self.e_tot, self.e_cas, self.ci, self.mo_coeff, self.mo_energy
def localize_init_guess (self, frags_atoms, mo_coeff=None, spin=None, lo_coeff=None, fock=None): if mo_coeff is None: mo_coeff = self.mo_coeff mo_coeff = casci_symm.label_symmetry_(self, mo_coeff) return LASSCFNoSymm.localize_init_guess (self, frags_atoms, mo_coeff=mo_coeff, spin=spin, lo_coeff=lo_coeff, fock=fock)