momentGW.tda

Construct TDA moments.

Module Contents

class momentGW.tda.dTDA(gw, nmom_max, integrals, mo_energy=None, mo_occ=None)

Compute the self-energy moments using dTDA.

Parameters:
  • gw (BaseGW) – GW object.

  • nmom_max (int) – Maximum moment number to calculate.

  • integrals (Integrals) – Integrals object.

  • mo_energy (dict, optional) – Molecular orbital energies. Keys are “g” and “w” for the Green’s function and screened Coulomb interaction, respectively. If None, use gw.mo_energy for both. Default value is None.

  • mo_occ (dict, optional) – Molecular orbital occupancies. Keys are “g” and “w” for the Green’s function and screened Coulomb interaction, respectively. If None, use gw.mo_occ for both. Default value is None.

property nmo

Get the number of MOs.

property naux

Get the number of auxiliaries.

property nov

Get the number of ov states in the screened Coulomb interaction.

build_dd_moments(m0=None)

Build the moments of the density-density response.

Parameters:

m0 (numpy.ndarray, optional) – The zeroth moment of the density-density response. If None, use self.integrals.Lia. This argument allows for custom starting points in the recursion i.e. in optical spectra calculations. Default value is None.

Returns:

moments – Moments of the density-density response.

Return type:

numpy.ndarray

kernel(exact=False)

Run the polarizability calculation to compute moments of the self-energy.

Parameters:

exact (bool, optional) – Has no effect and is only present for compatibility with dRPA. Default value is False.

Returns:

  • moments_occ (numpy.ndarray) – Moments of the occupied self-energy.

  • moments_vir (numpy.ndarray) – Moments of the virtual self-energy.

convolve(eta, eta_orders=None, mo_energy_g=None, mo_occ_g=None)

Handle the convolution of the moments of the Green’s function and screened Coulomb interaction.

Parameters:
  • eta (numpy.ndarray) – Moments of the density-density response partly transformed into moments of the screened Coulomb interaction.

  • mo_energy_g (numpy.ndarray, optional) – Energies of the Green’s function. If None, use self.mo_energy_g. Default value is None.

  • eta_orders (list, optional) – List of orders for the rotated density-density moments in eta. If None, assume it spans all required orders. Default value is None.

  • mo_occ_g (numpy.ndarray, optional) – Occupancies of the Green’s function. If None, use self.mo_occ_g. Default value is None.

Returns:

  • moments_occ (numpy.ndarray) – Moments of the occupied self-energy.

  • moments_vir (numpy.ndarray) – Moments of the virtual self-energy.

build_se_moments(moments_dd)

Build the moments of the self-energy via convolution.

Parameters:

moments_dd (numpy.ndarray) – Moments of the density-density response.

Returns:

  • moments_occ (numpy.ndarray) – Moments of the occupied self-energy.

  • moments_vir (numpy.ndarray) – Moments of the virtual self-energy.

build_dp_moments()

Build the moments of the dynamic polarizability for optical spectra calculations.

Returns:

moments – Moments of the dynamic polarizability.

Return type:

numpy.ndarray

build_dd_moment_inv()

Build the first inverse (n=-1) moment of the density-density response.

Returns:

moment – First inverse (n=-1) moment of the density-density response.

Return type:

numpy.ndarray

Notes

This is not the full n=-1 moment, which is

\[\begin{split}D^{-1} - D^{-1} V^\dagger (I + V D^{-1} V^\dagger)^{-1} \\ V D^{-1}\end{split}\]

but rather

\[(I + V D^{-1} V^\dagger)^{-1} V D^{-1}\]

which ensures that the function scales properly. The final contractions are done when constructing the matrix-vector product.

mpi_slice(n)

Return the start and end index for the current process for total size n.

Parameters:

n (int) – Total size.

Returns:

  • p0 (int) – Start index for current process.

  • p1 (int) – End index for current process.

mpi_size(n)

Return the number of states in the current process for total size n.

Parameters:

n (int) – Total size.

Returns:

size – Number of states in current process.

Return type:

int