def test_FT_dynamics_TDH():

    log.init_log(logging.WARNING)

    mol_list = parameter_PBI.construct_mol(4, dmrg_nphs=0, hartree_nphs=10)

    operators = []
    for imol in range(len(mol_list)):
        dipoleO = tdh.construct_onsiteO(mol_list,
                                        r"a^\dagger a",
                                        dipole=False,
                                        mol_idx_set={imol})
        operators.append(dipoleO)

    T = Quantity(2000, "K")
    insteps = 1
    dynamics = tdh.Dynamics(mol_list,
                            property_ops=operators,
                            temperature=T,
                            insteps=insteps)
    nsteps = 300 - 1
    dt = 10.0
    dynamics.evolve(dt, nsteps)

    with open(os.path.join(cur_dir, "FT_occ10.npy"), "rb") as f:
        std = np.load(f)
    assert np.allclose(dynamics.properties, std, atol=1e-2)
Beispiel #2
0
def test_TDH_ZT_abs():

    log.init_log(logging.WARNING)
    nsteps = 300 - 1
    dt = 10.0

    E_offset = -2.28614053 / constant.au2ev

    ls = tdh.LinearSpectra("abs",
                           hartree_mol_list,
                           E_offset=E_offset,
                           prop_method="unitary")
    ls.evolve(dt, nsteps)
    with open(os.path.join(cur_dir, "TDH_ZT_abs_prop1.npy"), "rb") as f:
        TDH_ZT_abs_prop1_std = np.load(f)
    assert np.allclose(ls.autocorr, TDH_ZT_abs_prop1_std)

    ls = tdh.LinearSpectra("abs",
                           hartree_mol_list,
                           E_offset=E_offset,
                           prop_method="C_RK4")
    ls.evolve(dt, nsteps)
    with open(os.path.join(cur_dir, "TDH_ZT_abs_RK4.npy"), "rb") as f:
        TDH_ZT_abs_RK4_std = np.load(f)
    assert np.allclose(ls.autocorr, TDH_ZT_abs_RK4_std, rtol=1e-3)
Beispiel #3
0
def test_ZT_dynamics_TDH():

    log.init_log(logging.INFO)
    sites = 4
    mol_list = parameter_PBI.construct_mol(sites, dmrg_nphs=0, hartree_nphs=10)

    nsteps = 100 - 1
    dt = 10.0
    dynamics = tdh.Dynamics(mol_list, init_idx=0)
    dynamics.info_interval = 50
    dynamics.evolve(dt, nsteps)
    with open(os.path.join(cur_dir, "ZT_occ10.npy"), "rb") as f:
        std = np.load(f)
    assert np.allclose(dynamics.e_occupations_array, std.T, atol=1e-2)
Beispiel #4
0
def test_FT_dynamics_TDH():

    log.init_log(logging.WARNING)

    mol_list = parameter_PBI.construct_mol(4, dmrg_nphs=0, hartree_nphs=10)

    T = Quantity(2000, "K")
    insteps = 1
    dynamics = tdh.Dynamics(mol_list, temperature=T, insteps=insteps)
    nsteps = 300 - 1
    dt = 10.0
    dynamics.evolve(dt, nsteps)

    with open(os.path.join(cur_dir, "FT_occ10.npy"), "rb") as f:
        std = np.load(f)
    assert np.allclose(dynamics.e_occupations_array, std.T, atol=1e-2)
Beispiel #5
0
def test_TDH_ZT_emi():

    # disable tons of logging information
    log.init_log(logging.WARNING)
    nsteps = 3000 - 1
    dt = 30.0

    ls = tdh.LinearSpectra("emi", hartree_mol_list, prop_method="unitary")
    ls.evolve(dt, nsteps)
    with open(os.path.join(cur_dir, "TDH_ZT_emi_prop1.npy"), "rb") as f:
        TDH_ZT_emi_prop1_std = np.load(f)
    assert np.allclose(ls.autocorr, TDH_ZT_emi_prop1_std)

    ls = tdh.LinearSpectra("emi", hartree_mol_list, prop_method="C_RK4")
    ls.evolve(dt, nsteps)
    with open(os.path.join(cur_dir, "TDH_ZT_emi_RK4.npy"), "rb") as f:
        TDH_ZT_emi_RK4_std = np.load(f)
    assert np.allclose(ls.autocorr, TDH_ZT_emi_RK4_std, rtol=1e-2)
def test_ZT_dynamics_TDH():

    log.init_log(logging.INFO)
    sites = 4
    mol_list = parameter_PBI.construct_mol(sites, dmrg_nphs=0, hartree_nphs=10)

    operators = []
    nsteps = 100 - 1
    dt = 10.0
    dynamics = tdh.Dynamics(mol_list, property_ops=operators, init_idx=0)
    dynamics.info_interval = 50
    dynamics.evolve(dt, nsteps)
    electrons = np.array([wfn[0] for wfn in dynamics.tdmps_list])
    electrons = (electrons.conj() * electrons).real
    # debug code to calculate r
    # r_list = []
    # for electron in electrons:
    #     r = np.average(np.arange(sites)**2, weights=electron) - np.average(np.arange(sites), weights=electron) ** 2
    #     r_list.append(r)
    with open(os.path.join(cur_dir, "ZT_occ10.npy"), "rb") as f:
        std = np.load(f)
    assert np.allclose(electrons.T, std, atol=1e-2)
Beispiel #7
0
def test_1mol_ZTabs():
    log.init_log(logging.WARNING)
    nmols = 1

    mol_list = MolList(
        [Mol(elocalex, hartree_ph_list, dipole_abs) for _ in range(nmols)],
        np.zeros([1, 1]),
    )

    E_offset = -mol_list[0].elocalex - mol_list[0].hartree_e0

    ls = tdh.LinearSpectra("abs",
                           mol_list,
                           E_offset=E_offset,
                           prop_method="unitary")

    nsteps = 1000 - 1
    dt = 30.0
    ls.evolve(dt, nsteps)

    with open(os.path.join(cur_dir, "1mol_ZTabs.npy"), "rb") as f:
        mol1_ZTabs_std = np.load(f)

    assert np.allclose(ls.autocorr, mol1_ZTabs_std)
Beispiel #8
0
# -*- coding: utf-8 -*-
# Author: Jiajun Ren <*****@*****.**>
import os
import sys

if "numpy" in sys.modules:
    raise ImportError(
        "renormalizer should be imported before numpy is imported")

# set environment variables to limit NumPy cpu usage
# Note that this should be done before NumPy is imported
for env in ["MKL_NUM_THREADS", "NUMEXPR_NUM_THREADS", "OMP_NUM_THREADS"]:
    os.environ[env] = "1"
    del env

# NEP-18 not working. For compatibility of newer NumPy version. See gh-cupy/cupy#2130
os.environ["NUMPY_EXPERIMENTAL_ARRAY_FUNCTION"] = "0"

del os, sys

from renormalizer.utils.log import init_log

init_log()

del init_log
Beispiel #9
0
# -*- coding: utf-8 -*-

import logging

from renormalizer.sbm import SpinBosonDynamics, param2mollist
from renormalizer.utils import Quantity, CompressConfig, EvolveConfig, log

log.init_log(logging.INFO)

if __name__ == "__main__":
    alpha = 0.05
    raw_delta = Quantity(1)
    raw_omega_c = Quantity(20)
    n_phonons = 300
    renormalization_p = 1
    model = param2mollist(alpha, raw_delta, raw_omega_c, renormalization_p,
                          n_phonons)

    compress_config = CompressConfig(threshold=1e-4)
    evolve_config = EvolveConfig(adaptive=True, guess_dt=0.1)
    sbm = SpinBosonDynamics(model,
                            Quantity(0),
                            compress_config=compress_config,
                            evolve_config=evolve_config,
                            dump_dir="./",
                            job_name="sbm")
    sbm.evolve(evolve_dt=0.1, evolve_time=20)