def test_scheme4_finite_t(mol_num, j_constant_value, elocalex_value, ph_info, ph_phys_dim, evolve_dt, nsteps): temperature = Quantity(1, "a.u.") 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")) ct1 = ChargeTransport(mol_list.switch_scheme(3), temperature=temperature, stop_at_edge=False) ct1.evolve(evolve_dt, nsteps) ct2 = ChargeTransport(mol_list.switch_scheme(4), temperature=temperature, stop_at_edge=False) ct2.evolve(evolve_dt, nsteps) assert ct1.is_similar(ct2, rtol=1e-2)
def test_reduced_density_matrix( mol_num, j_constant_value, elocalex_value, ph_info, ph_phys_dim, evolve_dt, nsteps, temperature, ): ph_list = [ Phonon.simple_phonon(Quantity(omega, "cm^{-1}"), Quantity(displacement, "a.u."), ph_phys_dim) for omega, displacement in ph_info ] mol_list3 = MolList( [Mol(Quantity(elocalex_value, "a.u."), ph_list)] * mol_num, Quantity(j_constant_value, "eV"), scheme=3, ) ct3 = ChargeTransport(mol_list3, temperature=Quantity(temperature, "K"), stop_at_edge=False, rdm=True) ct3.evolve(evolve_dt, nsteps) mol_list4 = mol_list3.switch_scheme(4) ct4 = ChargeTransport(mol_list4, temperature=Quantity(temperature, "K"), stop_at_edge=False, rdm=True) ct4.evolve(evolve_dt, nsteps) for rdm3, rdm4, e in zip(ct3.reduced_density_matrices, ct4.reduced_density_matrices, ct3.e_occupations_array): assert np.allclose(rdm3, rdm4, atol=1e-3) assert np.allclose(np.diag(rdm3), e)