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
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'])))
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
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)
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, )
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
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, )
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
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)
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