Beispiel #1
0
def test_evolve(mol_num, j_constant_value, elocalex_value, ph_info,
                ph_phys_dim, evolve_dt, nsteps):
    ph_list = [
        Phonon.simple_phonon(Quantity(omega, "cm^{-1}"),
                             Quantity(displacement, "a.u."), ph_phys_dim)
        for omega, displacement in ph_info
    ]
    mol_list = MolList(
        [Mol(Quantity(elocalex_value, "a.u."), ph_list)] * mol_num,
        Quantity(j_constant_value, "eV"),
        scheme=3,
    )
    ct1 = ChargeTransport(mol_list, stop_at_edge=False)
    half_nsteps = nsteps // 2
    ct1.evolve(evolve_dt, half_nsteps)
    ct1.evolve(evolve_dt, nsteps - half_nsteps)
    ct2 = ChargeTransport(mol_list, stop_at_edge=False)
    ct2.evolve(evolve_dt, nsteps)
    assert ct1.is_similar(ct2)
    assert_iterable_equal(ct1.get_dump_dict(), ct2.get_dump_dict())

    # test dump
    ct2.dump_dir = "."
    ct2.job_name = "test"
    ct2.dump_dict()
    os.remove("test.npz")
Beispiel #2
0
    lams = hr_factors * omegas_au
    phonons = [
        Phonon.simplest_phonon(Quantity(o), Quantity(l), lam=True)
        for o, l in zip(omegas_au, lams)
    ]

    j_matrix_au = j_matrix_cm * cm2au

    mlist = []
    for j in np.diag(j_matrix_au):
        m = Mol(Quantity(j), phonons)
        mlist.append(m)

    # starts from 1
    mol_arangement = np.array([7, 5, 3, 1, 2, 4, 6]) - 1
    mol_list = MolList(list(np.array(mlist)[mol_arangement]),
                       j_matrix_au[mol_arangement][:, mol_arangement])

    evolve_dt = 40
    evolve_config = EvolveConfig(evolve_dt=evolve_dt)
    compress_config = CompressConfig(CompressCriteria.fixed, max_bonddim=16)
    ct = ChargeTransport(mol_list,
                         evolve_config=evolve_config,
                         compress_config=compress_config)
    ct.dump_dir = "./fmo"
    ct.job_name = 'hybrid'
    ct.stop_at_edge = False
    ct.evolve(evolve_dt=evolve_dt, nsteps=10)
    new_evolve_config = EvolveConfig(EvolveMethod.tdvp_mctdh_new)
    ct.latest_mps.evolve_config = ct.evolve_config = new_evolve_config
    ct.evolve(evolve_dt=evolve_dt, nsteps=100000)
Beispiel #3
0
if __name__ == "__main__":
    if len(sys.argv) != 2:
        print("No or more than one parameter file are provided, abort")
        exit(1)
    parameter_path = sys.argv[1]
    with open(parameter_path) as fin:
        param = yaml.safe_load(fin)
    log.register_file_output(
        os.path.join(param["output dir"], param["fname"] + ".log"), "w")
    mol_list, temperature = load_from_dict(param, 3, False)
    compress_config = CompressConfig(threshold=1e-4)
    evolve_config = EvolveConfig(adaptive=True, evolve_dt=2)
    ct = ChargeTransport(
        mol_list,
        temperature=temperature,
        compress_config=compress_config,
        evolve_config=evolve_config,
        rdm=False,
    )
    # ct.stop_at_edge = True
    # ct.memory_limit = 2 ** 30  # 1 GB
    # ct.memory_limit /= 10 # 100 MB
    ct.dump_dir = param["output dir"]
    ct.job_name = param["fname"]
    ct.custom_dump_info["comment"] = param["comment"]
    # ct.latest_mps.compress_add = True
    logger.debug(f"ground energy of the Hamiltonian: {ct.mpo_e_lbound:g}")
    ct.evolve(param.get("evolve dt"), param.get("nsteps"),
              param.get("evolve time"))
    # ct.evolve(evolve_dt, 100, param.get("evolve time"))
Beispiel #4
0
    hr_factors *= TOTAL_HR / hr_factors.sum()

    lams = hr_factors * omegas_au
    phonons = [
        Phonon.simplest_phonon(Quantity(o), Quantity(l), lam=True)
        for o, l in zip(omegas_au, lams)
    ]

    j_matrix_au = j_matrix_cm * cm2au

    mlist = []
    for j in np.diag(j_matrix_au):
        m = Mol(Quantity(j), phonons)
        mlist.append(m)

    # starts from 1
    mol_arangement = np.array([7, 5, 3, 1, 2, 4, 6]) - 1
    mol_list = MolList(list(np.array(mlist)[mol_arangement]),
                       j_matrix_au[mol_arangement][:, mol_arangement])

    evolve_dt = 160
    evolve_config = EvolveConfig(EvolveMethod.tdvp_ps, guess_dt=evolve_dt)
    compress_config = CompressConfig(CompressCriteria.fixed, max_bonddim=32)
    ct = ChargeTransport(mol_list,
                         evolve_config=evolve_config,
                         compress_config=compress_config,
                         init_electron=InitElectron.fc)
    ct.dump_dir = "./"
    ct.job_name = 'fmo'
    ct.stop_at_edge = False
    ct.evolve(evolve_dt=evolve_dt, evolve_time=40000)