Example #1
0
    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
Example #2
0
    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
Example #3
0
 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
Example #4
0
    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
Example #5
0
 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
Example #6
0
 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
Example #7
0
 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
Example #8
0
    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
Example #9
0
    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
Example #10
0
 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)