:py:mod:`momentGW.tda` ====================== .. py:module:: momentGW.tda .. autoapi-nested-parse:: Construct TDA moments. Module Contents --------------- .. py:class:: dTDA(gw, nmom_max, integrals, mo_energy=None, mo_occ=None) Compute the self-energy moments using dTDA. :param gw: GW object. :type gw: BaseGW :param nmom_max: Maximum moment number to calculate. :type nmom_max: int :param integrals: Integrals object. :type integrals: Integrals :param mo_energy: 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`. :type mo_energy: dict, optional :param mo_occ: 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`. :type mo_occ: dict, optional .. py:property:: nmo Get the number of MOs. .. py:property:: naux Get the number of auxiliaries. .. py:property:: nov Get the number of ov states in the screened Coulomb interaction. .. py:method:: build_dd_moments(m0=None) Build the moments of the density-density response. :param m0: 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`. :type m0: numpy.ndarray, optional :returns: **moments** -- Moments of the density-density response. :rtype: numpy.ndarray .. py:method:: kernel(exact=False) Run the polarizability calculation to compute moments of the self-energy. :param exact: Has no effect and is only present for compatibility with `dRPA`. Default value is `False`. :type exact: bool, optional :returns: * **moments_occ** (*numpy.ndarray*) -- Moments of the occupied self-energy. * **moments_vir** (*numpy.ndarray*) -- Moments of the virtual self-energy. .. py:method:: 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. :param eta: Moments of the density-density response partly transformed into moments of the screened Coulomb interaction. :type eta: numpy.ndarray :param mo_energy_g: Energies of the Green's function. If `None`, use `self.mo_energy_g`. Default value is `None`. :type mo_energy_g: numpy.ndarray, optional :param eta_orders: List of orders for the rotated density-density moments in `eta`. If `None`, assume it spans all required orders. Default value is `None`. :type eta_orders: list, optional :param mo_occ_g: Occupancies of the Green's function. If `None`, use `self.mo_occ_g`. Default value is `None`. :type mo_occ_g: numpy.ndarray, optional :returns: * **moments_occ** (*numpy.ndarray*) -- Moments of the occupied self-energy. * **moments_vir** (*numpy.ndarray*) -- Moments of the virtual self-energy. .. py:method:: build_se_moments(moments_dd) Build the moments of the self-energy via convolution. :param moments_dd: Moments of the density-density response. :type moments_dd: numpy.ndarray :returns: * **moments_occ** (*numpy.ndarray*) -- Moments of the occupied self-energy. * **moments_vir** (*numpy.ndarray*) -- Moments of the virtual self-energy. .. py:method:: build_dp_moments() Build the moments of the dynamic polarizability for optical spectra calculations. :returns: **moments** -- Moments of the dynamic polarizability. :rtype: numpy.ndarray .. py:method:: 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. :rtype: numpy.ndarray .. rubric:: Notes This is not the full `n=-1` moment, which is .. math:: D^{-1} - D^{-1} V^\dagger (I + V D^{-1} V^\dagger)^{-1} \\ V D^{-1} but rather .. math:: (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. .. py:method:: mpi_slice(n) Return the start and end index for the current process for total size `n`. :param n: Total size. :type n: int :returns: * **p0** (*int*) -- Start index for current process. * **p1** (*int*) -- End index for current process. .. py:method:: mpi_size(n) Return the number of states in the current process for total size `n`. :param n: Total size. :type n: int :returns: **size** -- Number of states in current process. :rtype: int