def load_wfn(self, model): r"""Load tda wavefunction """ mps_l_cano = Mps.load(model, "mps_l_cano.npz") mps_r_cano = Mps.load(model, "mps_r_cano.npz") tangent_u_dict = np.load("tangent_u.npz") tangent_u = [tangent_u_dict[str(i)] if str(i) in tangent_u_dict.keys() else None for i in range(mps_l_cano.site_num)] tda_coeff_list = [] for iroot in range(self.nroots): tda_coeff_dict = np.load(f"tda_coeff_{iroot}.npz") tda_coeff = [tda_coeff_dict[str(i)] if str(i) in tda_coeff_dict.keys() else None for i in range(mps_l_cano.site_num)] tda_coeff_list.append(tda_coeff) self.wfn = [mps_l_cano, mps_r_cano, tangent_u, tda_coeff_list]
def test_csvd(): np.random.seed(0) mps1, mpo = construct_mps_mpo_2(mol_list, procedure[0][0], nexciton) mps1.threshold = 1e-6 mps1.optimize_config.procedure = procedure optimize_mps(mps1, mpo) mps1.compress() mps2 = Mps.load(mol_list, os.path.join(cur_dir, "test_svd_qn.npz")) d = pytest.approx(mps1.distance(mps2), abs=1e-4) # the same direction or opposite direction assert d == 0 or d == 2
def test_save_load(): mps = Mpo.onsite(parameter.mol_list, "a^\dagger", mol_idx_set={0}).apply(Mps.gs(parameter.mol_list, False)) mpo = Mpo(parameter.mol_list) mps1 = mps.copy() for i in range(2): mps1 = mps1.evolve(mpo, 10) mps2 = mps.evolve(mpo, 10) fname = "test.npz" mps2.dump(fname) mps2 = Mps.load(parameter.mol_list, fname) mps2 = mps2.evolve(mpo, 10) assert np.allclose(mps1.e_occupations, mps2.e_occupations) os.remove(fname)
def test_save_load(): model = holstein_model mps = Mpo.onsite(model, r"a^\dagger", dof_set={0}) @ Mps.ground_state( model, False) mpo = Mpo(model) mps1 = mps.copy() for i in range(2): mps1 = mps1.evolve(mpo, 10) mps2 = mps.evolve(mpo, 10) fname = "test.npz" mps2.dump(fname) mps2 = Mps.load(model, fname) mps2 = mps2.evolve(mpo, 10) assert np.allclose(mps1.e_occupations, mps2.e_occupations) os.remove(fname)
def test_save_load(): mol_list = custom_mol_list(hartrees=[True, False]) mps = Mpo.onsite(mol_list, "a^\dagger", mol_idx_set={0}) @ Mps.gs( mol_list, False) mpo = Mpo(mol_list) mps1 = mps.copy() for i in range(2): mps1 = mps1.evolve(mpo, 10) mps2 = mps.evolve(mpo, 10) fname = "test.npz" mps2.dump(fname) mps2 = Mps.load(mol_list, fname) mps2 = mps2.evolve(mpo, 10) assert np.allclose(mps1.e_occupations, mps2.e_occupations) os.remove(fname)