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")
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)
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"))
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)