momentGW.uhf.rpa

Construct RPA moments with unrestricted references.

Module Contents

class momentGW.uhf.rpa.dRPA(gw, nmom_max, integrals, mo_energy=None, mo_occ=None)

Bases: momentGW.uhf.tda.dTDA, momentGW.rpa.dRPA

Compute the self-energy moments using dRPA and numerical integration with unrestricted references.

Parameters:
  • gw (BaseUGW) – GW object.

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

  • integrals (UIntegrals) – Integrals object.

  • mo_energy (dict, optional) – Molecular orbital energies for each spin. 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 for each spin. 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 nov

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

property nmo

Get the number of MOs.

property naux

Get the number of auxiliaries.

integrate()

Optimise the quadrature and perform the integration.

Returns:

integrals – Integral array, include the offset part, for each spin channel.

Return type:

: tuple of numpy.ndarray

build_dd_moments(integral=None)

Build the moments of the density-density response.

Parameters:

integral (tuple of numpy.ndarray, optional) – Integral array, include the offset part, for each spin channel. If None, calculate from scratch. Default value is None.

Returns:

moments – Moments of the density-density response.

Return type:

tuple of numpy.ndarray

abstract build_dd_moments_exact()

Build the exact moments of the density-density response.

Notes

Placeholder for future implementation.

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 for each spin channel.

  • moments_vir (numpy.ndarray) – Moments of the virtual self-energy for each spin channel.

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, for each spin channel.

  • mo_energy_g (numpy.ndarray, optional) – Energies of the Green’s function for each spin channel. 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 for each spin channel. If None, use self.mo_occ_g. Default value is None.

Returns:

  • moments_occ (numpy.ndarray) – Moments of the occupied self-energy for each spin channel.

  • moments_vir (numpy.ndarray) – Moments of the virtual self-energy for each spin channel.

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 for each spin channel.

Returns:

  • moments_occ (numpy.ndarray) – Moments of the occupied self-energy for each spin channel.

  • moments_vir (numpy.ndarray) – Moments of the virtual self-energy for each spin channel.

abstract build_dp_moments()

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

Notes

Placeholder for future implementation.

abstract build_dd_moment_inv()

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

Notes

Placeholder for future implementation.

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

static rescale_quad(bare_quad, a)

Rescale quadrature for grid space a.

Parameters:
  • bare_quad (tuple) – The quadrature points and weights.

  • a (float) – Grid spacing.

Returns:

  • points (numpy.ndarray) – The quadrature points.

  • weights (numpy.ndarray) – The quadrature weights.

optimise_offset_quad(d, diag_eri, name='offset')

Optimise the grid spacing of Gauss-Laguerre quadrature for the offset integral.

Parameters:
  • d (numpy.ndarray) – Orbital energy differences.

  • diag_eri (numpy.ndarray) – Diagonal of the ERIs.

  • name (str, optional) – Name of the integral. Default value is “offset”.

Returns:

  • points (numpy.ndarray) – The quadrature points.

  • weights (numpy.ndarray) – The quadrature weights.

optimise_main_quad(d, diag_eri, name='main')

Optimise the grid spacing of Clenshaw-Curtis quadrature for the main integral.

Parameters:
  • d (numpy.ndarray) – Orbital energy differences.

  • diag_eri (numpy.ndarray) – Diagonal of the ERIs.

  • name (str, optional) – Name of the integral. Default value is “main”.

Returns:

  • points (numpy.ndarray) – The quadrature points.

  • weights (numpy.ndarray) – The quadrature weights.

get_optimal_quad(bare_quad, integrand, exact, name=None)

Get the optimal quadrature.

Parameters:
  • bare_quad (tuple) – The quadrature points and weights.

  • integrand (function) – The integrand function.

  • exact (float) – The exact value of the integral.

  • name (str, optional) – Name of the integral. Default value is None.

Returns:

  • points (numpy.ndarray) – The quadrature points.

  • weights (numpy.ndarray) – The quadrature weights.

eval_diag_offset_integral(quad, d, diag_eri)

Evaluate the diagonal of the offset integral.

Parameters:
  • quad (tuple) – The quadrature points and weights.

  • d (numpy.ndarray) – Orbital energy differences.

  • diag_eri (numpy.ndarray) – Diagonal of the ERIs.

Returns:

integral – Offset integral.

Return type:

numpy.ndarray

eval_diag_main_integral(quad, d, diag_eri)

Evaluate the diagonal of the main integral.

Parameters:
  • quad (tuple) – The quadrature points and weights.

  • d (numpy.ndarray) – Orbital energy differences.

  • diag_eri (numpy.ndarray) – Diagonal of the ERIs.

Returns:

integral – Main integral.

Return type:

numpy.ndarray

eval_offset_integral(quad, d, Lia=None)

Evaluate the offset integral.

Parameters:
  • quad (tuple) – The quadrature points and weights.

  • d (numpy.ndarray) – Orbital energy differences.

  • Lia (numpy.ndarray, optional) – The (aux, W occ, W vir) integral array. If None, use self.integrals.Lia. Keyword argument allows for the use of this function with uhf and pbc modules.

Returns:

integral – Offset integral.

Return type:

numpy.ndarray

eval_main_integral(quad, d, Lia=None)

Evaluate the main integral.

Parameters:
  • quad (tuple) – The quadrature points and weights.

  • d (numpy.ndarray) – Orbital energy differences.

  • Lia (numpy.ndarray) – The (aux, W occ, W vir) integral array. If None, use self.integrals.Lia. Keyword argument allows for the use of this function with uhf and pbc modules.

Returns:

integral – Offset integral.

Return type:

numpy.ndarray

gen_clencur_quad_inf(even=False)

Generate quadrature points and weights for Clenshaw-Curtis quadrature over an (-inf, +inf).

Parameters:

even (bool, optional) – Whether to assume an even grid. Default is False.

Returns:

  • points (numpy.ndarray) – Quadrature points.

  • weights (numpy.ndarray) – Quadrature weights.

gen_gausslag_quad_semiinf()

Generate quadrature points and weights for Gauss-Laguerre quadrature over an (0, +inf).

Returns:

  • points (numpy.ndarray) – Quadrature points.

  • weights (numpy.ndarray) – Quadrature weights.

estimate_error_clencur(i4, i2, imag_tol=1e-10)

Estimate the quadrature error for Clenshaw-Curtis quadrature.

Parameters:
  • i4 (numpy.ndarray) – Integral at one-quarter the number of points.

  • i2 (numpy.ndarray) – Integral at one-half the number of points.

  • imag_tol (float, optional) – Threshold to consider the imaginary part of a root to be zero. Default value is 1e-10.

Returns:

error – Estimated error.

Return type:

numpy.ndarray