Exemple #1
0
    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]
Exemple #2
0
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
Exemple #3
0
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)
Exemple #4
0
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)
Exemple #5
0
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)