Exemplo n.º 1
0
    def dump_chk(self, envs):
        if self.chk_ci:
            civec = envs['fcivec']
        else:
            civec = None
        ncore = self.ncore
        nocca = self.ncore[0] + self.ncas
        noccb = self.ncore[1] + self.ncas
        occa, ucas = self._eig(-envs['casdm1'][0], ncore[0], nocca)
        moa = envs['mo'][0].copy()
        moa[:,ncore[0]:nocca] = numpy.dot(moa[:,ncore[0]:nocca], ucas)
        occb, ucas = self._eig(-envs['casdm1'][1], ncore[1], noccb)
        mob = envs['mo'][1].copy()
        mob[:,ncore[1]:noccb] = numpy.dot(mob[:,ncore[1]:noccb], ucas)
        mo = numpy.array((moa,mob))
        mo_occ = numpy.zeros((2,moa.shape[1]))
        mo_occ[0,:ncore[0]] = 1
        mo_occ[1,:ncore[1]] = 1
        mo_occ[0,ncore[0]:nocca] = -occa
        mo_occ[1,ncore[1]:noccb] = -occb
        mo_energy = 'None'

        chkfile.dump_mcscf(self, self.chkfile, 'mcscf', envs['e_tot'],
                           mo, self.ncore, self.ncas, mo_occ, mo_energy,
                           envs['e_ci'], civec, overwrite_mol=False)
        return self
Exemplo n.º 2
0
 def dump_chk(self, envs):
     chkfile.dump_mcscf(self.mol, self.chkfile, envs['mo'],
                        mcscf_energy=envs['e_tot'], e_cas=envs['e_ci'],
                        ci_vector=(envs['fcivec'] if envs['dump_chk_ci'] else None),
                        iter_macro=(envs['imacro']+1),
                        iter_micro_tot=(envs['totmicro']),
                        converged=(envs['conv'] or (envs['imacro']+1 >= envs['macro'])))
Exemplo n.º 3
0
    def dump_chk(self, envs):
        if self.chk_ci:
            civec = envs['fcivec']
        else:
            civec = None
        ncore = self.ncore
        nocca = self.ncore[0] + self.ncas
        noccb = self.ncore[1] + self.ncas
        mo_occ = numpy.zeros((2,envs['mo'][0].shape[1]))
        mo_occ[0,:ncore[0]] = 1
        mo_occ[1,:ncore[1]] = 1
        if self.natorb:
            occa, ucas = self._eig(-envs['casdm1'][0], ncore[0], nocca)
            occb, ucas = self._eig(-envs['casdm1'][1], ncore[1], noccb)
            mo_occ[0,ncore[0]:nocca] = -occa
            mo_occ[1,ncore[1]:noccb] = -occb
        else:
            mo_occ[0,ncore[0]:nocca] = envs['casdm1'][0].diagonal()
            mo_occ[1,ncore[1]:noccb] = envs['casdm1'][1].diagonal()
        mo_energy = 'None'

        chkfile.dump_mcscf(self, self.chkfile, 'mcscf', envs['e_tot'],
                           envs['mo'], self.ncore, self.ncas, mo_occ,
                           mo_energy, envs['e_ci'], civec, envs['casdm1'],
                           overwrite_mol=False)
        return self
Exemplo n.º 4
0
 def dump_chk(self, envs):
     if hasattr(self.fcisolver, 'nevpt_intermediate'):
         civec = None
     elif envs['dump_chk_ci']:
         civec = envs['fcivec']
     else:
         civec = None
     ncore = self.ncore
     nocc = self.ncore + self.ncas
     occ, ucas = self._eig(-envs['casdm1'], ncore, nocc)
     mo = envs['mo'].copy()
     mo[:,ncore:nocc] = numpy.dot(mo[:,ncore:nocc], ucas)
     mo_occ = numpy.zeros(mo.shape[1])
     mo_occ[:ncore] = 2
     mo_occ[ncore:nocc] = -occ
     if 'mo_energy' in envs:
         mo_energy = envs['mo_energy']
     else:
         mo_energy = None
     chkfile.dump_mcscf(self.mol, self.chkfile, mo,
                        mcscf_energy=envs['e_tot'], e_cas=envs['e_ci'],
                        ci_vector=civec,
                        iter_macro=(envs['imacro']+1),
                        iter_micro_tot=(envs['totmicro']),
                        converged=envs['conv'],
                        mo_occ=mo_occ, mo_energy=mo_energy)
Exemplo n.º 5
0
    def dump_chk(self, envs):
        if self.chk_ci:
            civec = envs["fcivec"]
        else:
            civec = None
        ncore = self.ncore
        nocca = self.ncore[0] + self.ncas
        noccb = self.ncore[1] + self.ncas
        occa, ucas = self._eig(-envs["casdm1"][0], ncore[0], nocca)
        moa = envs["mo"][0].copy()
        moa[:, ncore[0] : nocca] = numpy.dot(moa[:, ncore[0] : nocca], ucas)
        occb, ucas = self._eig(-envs["casdm1"][1], ncore[1], noccb)
        mob = envs["mo"][1].copy()
        mob[:, ncore[1] : noccb] = numpy.dot(mob[:, ncore[1] : noccb], ucas)
        mo = numpy.array((moa, mob))
        mo_occ = numpy.zeros((2, moa.shape[1]))
        mo_occ[0, : ncore[0]] = 1
        mo_occ[1, : ncore[1]] = 1
        mo_occ[0, ncore[0] : nocca] = -occa
        mo_occ[1, ncore[1] : noccb] = -occb
        mo_energy = "None"

        chkfile.dump_mcscf(
            self,
            self.chkfile,
            "mcscf",
            envs["e_tot"],
            mo,
            self.ncore,
            self.ncas,
            mo_occ,
            mo_energy,
            envs["e_ci"],
            civec,
        )
Exemplo n.º 6
0
    def dump_chk(self, envs):
        if hasattr(self.fcisolver, 'nevpt_intermediate'):
            civec = None
        elif self.chk_ci:
            civec = envs['fcivec']
        else:
            civec = None
        ncore = self.ncore
        nocc = self.ncore + self.ncas
        mo_occ = numpy.zeros(envs['mo'].shape[1])
        mo_occ[:ncore] = 2
        if self.natorb:
            occ = self._eig(-envs['casdm1'], ncore, nocc)[0]
            mo_occ[ncore:nocc] = -occ
        else:
            mo_occ[ncore:nocc] = envs['casdm1'].diagonal()
# Note: mo_energy in active space =/= F_{ii}  (F is general Fock)
        if 'mo_energy' in envs:
            mo_energy = envs['mo_energy']
        else:
            mo_energy = 'None'
        chkfile.dump_mcscf(self,
                           self.chkfile,
                           'mcscf',
                           envs['e_tot'],
                           envs['mo'],
                           self.ncore,
                           self.ncas,
                           mo_occ,
                           mo_energy,
                           envs['e_ci'],
                           civec,
                           envs['casdm1'],
                           overwrite_mol=False)
        return self
Exemplo n.º 7
0
 def dump_chk(self, envs):
     ncore = self.ncore
     nocca = self.ncore[0] + self.ncas
     noccb = self.ncore[1] + self.ncas
     occa, ucas = self._eig(-envs["casdm1"][0], ncore[0], nocca)
     moa = envs["mo"][0].copy()
     moa[:, ncore[0] : nocca] = numpy.dot(moa[:, ncore[0] : nocca], ucas)
     occb, ucas = self._eig(-envs["casdm1"][1], ncore[1], noccb)
     mob = envs["mo"][1].copy()
     mob[:, ncore[1] : noccb] = numpy.dot(mob[:, ncore[1] : noccb], ucas)
     mo = numpy.array((moa, mob))
     mo_occ = numpy.zeros((2, moa.shape[1]))
     mo_occ[0, : ncore[0]] = 1
     mo_occ[1, : ncore[1]] = 1
     mo_occ[0, ncore[0] : nocca] = -occa
     mo_occ[1, ncore[1] : noccb] = -occb
     pyscf.scf.chkfile.dump(self.chkfile, "mcscf/mo_coeff", mo)
     pyscf.scf.chkfile.dump(self.chkfile, "mcscf/mo_occ", mo_occ)
     chkfile.dump_mcscf(
         self.mol,
         self.chkfile,
         mo,
         mcscf_energy=envs["e_tot"],
         e_cas=envs["e_ci"],
         ci_vector=(envs["fcivec"] if envs["dump_chk_ci"] else None),
         iter_macro=(envs["imacro"] + 1),
         iter_micro_tot=(envs["totmicro"]),
         converged=(envs["conv"] or (envs["imacro"] + 1 >= envs["macro"])),
         mo_occ=mo_occ,
     )
Exemplo n.º 8
0
    def dump_chk(self, envs):
        if hasattr(self.fcisolver, 'nevpt_intermediate'):
            civec = None
        elif self.chk_ci:
            civec = envs['fcivec']
        else:
            civec = None
        ncore = self.ncore
        nocc = self.ncore + self.ncas
        mo_occ = numpy.zeros(envs['mo'].shape[1])
        mo_occ[:ncore] = 2
        if self.natorb:
            occ = self._eig(-envs['casdm1'], ncore, nocc)[0]
            mo_occ[ncore:nocc] = -occ
        else:
            mo_occ[ncore:nocc] = envs['casdm1'].diagonal()
# Note: mo_energy in active space =/= F_{ii}  (F is general Fock)
        if 'mo_energy' in envs:
            mo_energy = envs['mo_energy']
        else:
            mo_energy = 'None'
        chkfile.dump_mcscf(self, self.chkfile, 'mcscf', envs['e_tot'],
                           envs['mo'], self.ncore, self.ncas, mo_occ,
                           mo_energy, envs['e_ci'], civec, envs['casdm1'],
                           overwrite_mol=False)
        return self
Exemplo n.º 9
0
    def dump_chk(self, envs):
        if self.chk_ci:
            civec = envs['fcivec']
        else:
            civec = None
        ncore = self.ncore
        nocca = self.ncore[0] + self.ncas
        noccb = self.ncore[1] + self.ncas
        mo_occ = numpy.zeros((2, envs['mo'][0].shape[1]))
        mo_occ[0, :ncore[0]] = 1
        mo_occ[1, :ncore[1]] = 1
        if self.natorb:
            occa, ucas = self._eig(-envs['casdm1'][0], ncore[0], nocca)
            occb, ucas = self._eig(-envs['casdm1'][1], ncore[1], noccb)
            mo_occ[0, ncore[0]:nocca] = -occa
            mo_occ[1, ncore[1]:noccb] = -occb
        else:
            mo_occ[0, ncore[0]:nocca] = envs['casdm1'][0].diagonal()
            mo_occ[1, ncore[1]:noccb] = envs['casdm1'][1].diagonal()
        mo_energy = 'None'

        chkfile.dump_mcscf(self,
                           self.chkfile,
                           'mcscf',
                           envs['e_tot'],
                           envs['mo'],
                           self.ncore,
                           self.ncas,
                           mo_occ,
                           mo_energy,
                           envs['e_ci'],
                           civec,
                           envs['casdm1'],
                           overwrite_mol=False)
        return self
Exemplo n.º 10
0
 def dump_chk(self, envs):
     if hasattr(self.fcisolver, 'nevpt_intermediate'):
         civec = None
     elif self.chk_ci:
         civec = envs['fcivec']
     else:
         civec = None
     ncore = self.ncore
     nocc = self.ncore + self.ncas
     occ, ucas = self._eig(-envs['casdm1'], ncore, nocc)
     mo = envs['mo'].copy()
     mo[:,ncore:nocc] = numpy.dot(mo[:,ncore:nocc], ucas)
     mo_occ = numpy.zeros(mo.shape[1])
     mo_occ[:ncore] = 2
     mo_occ[ncore:nocc] = -occ
     if 'mo_energy' in envs:
         mo_energy = envs['mo_energy']
     else:
         mo_energy = None
     chkfile.dump_mcscf(self.mol, self.chkfile, envs['e_tot'],
                        mo, self.ncore, self.ncas, mo_occ, mo_energy,
                        envs['e_ci'], civec)
Exemplo n.º 11
0
    def dump_chk(self, envs):
        if hasattr(self.fcisolver, 'nevpt_intermediate'):
            civec = None
        elif self.chk_ci:
            civec = envs['fcivec']
        else:
            civec = None
        ncore = self.ncore
        nocc = self.ncore + self.ncas
        occ, ucas = self._eig(-envs['casdm1'], ncore, nocc)
        mo = envs['mo'].copy()
        mo[:,ncore:nocc] = numpy.dot(mo[:,ncore:nocc], ucas)
        mo_occ = numpy.zeros(mo.shape[1])
        mo_occ[:ncore] = 2
        mo_occ[ncore:nocc] = -occ
# Note: mo_energy in active space =/= F_{ii}  (F is general Fock)
        if 'mo_energy' in envs:
            mo_energy = envs['mo_energy']
        else:
            mo_energy = 'None'
        chkfile.dump_mcscf(self, self.chkfile, 'mcscf', envs['e_tot'],
                           mo, self.ncore, self.ncas, mo_occ, mo_energy,
                           envs['e_ci'], civec)
        return self