9. Frequency domain DMRG#

9.1. cv — correction vector#

Use correction vector to calculate spectral function (currently only auto-correlalation funtion, general correlation function will be implemented later), here the spectral function is:

\[I_{\mu\mu}=-\frac{1}{\pi}\rm{Im}\langle\Psi_0|\hat{\mu}^\dagger\frac{1}{\omega-\hat{H}+\omega_0)+i\eta}\hat{\mu}|\Psi_0\rangle.\]

at zero temperature, where \(\hat{\mu}\) is the dipole operator here to calculate the absorption/emission spectrum, properties such as optical conductivity is with current operator, also will be implemented soon. \(\eta\) is a Lorentzian broaden width.

\[I_{\mu\mu}=-\frac{1}{\pi}\rm{Im}\rm{Tr}\{\hat{\mu}\frac{1}{\omega-\hat{L}+i\eta}\hat{\mu}\hat{\rho}_{\beta}\}.\]

which is actually calculated in a symmetrized form:

\[I_{\mu\mu}=-\frac{1}{\pi}\rm{Im}\rm{Tr}\{\hat{\rho}_{\beta}^{1/2}\hat{\mu}\frac{1}{\omega-\hat{L}+i\eta}\hat{\mu}\hat{\rho}_{\beta}^{1/2}\}.\]

at finite temperature, where \(\hat{\rho}_{\beta}^{1/2}\) represents \(e^{-\beta H/2}\), which is obtianed from imaginary time evolution, \(\hat{L}\) is a Liouville operator.

class renormalizer.cv.zerot.SpectraZtCV(model, spectratype, m_max, eta, h_mpo=None, method='1site', procedure_cv=None, rtol=1e-05, b_mps=None, e0=None, cv_mps=None, procedure_gs=None)[source]#

Use DDMRG to calculate the zero temperature spectrum from frequency domain

Parameters:
  • model (Model) – system information.

  • spectratype (str) – “abs” or “emi”.

  • m_max (int) – maximal bond dimension of correction vector.

  • eta (float) – Lorentzian broadening width (a.u.).

  • h_mpo (Mpo) – system Hamiltonian.

  • method (str) – “1site” or “2site”.

  • procedure_cv (list) – percent used for each sweep.

  • rtol (float) – the relative tolerance of the spectrum strength, default:1e-5.

  • b_mps (Mps) – the b vector -eta * dipole * psi_0, default: None. (Holstein model could construct b_mps implicitly).

  • e0 (float) – gs energy, default: None (Holstein model could calculate e0 implicitly).

  • cv_mps (Mps) – initial guess of cv_mps, default: None.

  • procedure_gs (list) – list, optional, the procedure for ground state calculation, if not provided, use [[10, 0.4], [20, 0.2], [30, 0.1], [40, 0], [40, 0]], warning: the default one won’t be enough for large systems!

Example::

see test/test_abs.py for example

init_b_mps()[source]#
init_cv_mps()[source]#
initialize_LR()[source]#
oper_prepare(omega)[source]#
optimize_cv(lr_group, isite, percent=0.0)[source]#
update_LR(lr_group, isite)[source]#
class renormalizer.cv.finitet.SpectraFtCV(model, spectratype, m_max, eta, temperature, h_mpo=None, method='1site', procedure_cv=None, rtol=1e-05, b_mps=None, cv_mps=None, icompress_config=None, ievolve_config=None, insteps=None, dump_dir: Optional[str] = None, job_name=None)[source]#

Use DDMRG to calculate the finite temperature spectrum from frequency domain

Parameters:
  • model (Model) – system information.

  • spectratype (string) – “abs” or “emi”.

  • m_max (int) – maximal bond dimension of correction vector.

  • eta (float) – Lorentzian broadening width (a.u.).

  • temperature (Quantity) – simulation temperature.

  • h_mpo (Mpo) – system Hamiltonian.

  • method (str) – “1site” or “2site”.

  • procedure_cv (list) – percent used for each sweep.

  • rtol (float) – the relative tolerance of the spectrum strength, default: 1e-5.

  • b_mps (Mps) – the b vector -eta * dipole * psi_0, default: None. (Holstein model could construct b_mps implicitly).

  • cv_mps (Mps) – initial guess of cv_mps, default: None.

  • icompress_config (CompressConfig) – config when compressing MPS/MPO during the imaginary time evolution..

  • ievolve_config (EvolveConfig) – evolution config for imaginary time evolution.

  • insteps (int) – evolve steps for imaginary time evolution. have to be provided when calculating emission.

  • dump_dir (str) – the directory for logging and numerical result output. Also the directory from which to load previous thermal propagated initial state (if exists).

  • job_name (str) – the name of the calculation job which determines the file name of the logging and numerical result output.

Example::

see test/test_abs.py for example

condition(mat, qn)[source]#
construct_X_qnmat(addlist)[source]#
dag2mat(xshape, x, dag_qnmat)[source]#
init_b_mpo()[source]#
init_b_mps()#
init_cv_mpo()[source]#
init_cv_mps()#
initialize_LR()[source]#
oper_prepare(omega)[source]#
optimize_cv(lr_group, isite, percent=0)[source]#
qnmat_add(mat_l, mat_r)[source]#
swap(mat, qnbigl, qnbigr)[source]#
update_LR(lr_group, isite)[source]#
x_svd(xstruct, xqnbigl, xqnbigr, nexciton, percent=0)[source]#