@brief Helper functions and data blocks needed to compute one-electron integrals and their derivatives @author Vladimir Mironov
Todo
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
integer, | public | :: | iii | ||||
integer, | public, | parameter | :: | MAX_ANG_PAD | = | 7 | |
integer, | public, | parameter | :: | MAX_NROOTS | = | (2*MAX_ANG+1)/2+1 | |
integer, | public, | parameter | :: | MAX_EL_MOM | = | 3 | |
character(len=1), | public, | parameter | :: | MAX_EL_MOM_S | = | '3' | |
real(kind=REAL64), | public, | parameter | :: | TWOPI | = | pi*2.0_real64 |
@brief Compute primitive block of overlap and kinetic energy 1e integrals
@param[in] cp shell pair data
@param[in] id current pair of primitives
@param[in] dokinetic if .FALSE.
compute only overlap integrals
@param[inout] sblk block of 1e overlap integrals
@param[inout] tblk block of 1e kinetic energy integrals
@author Vladimir Mironov
@date Sep, 2018 Initial release
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(shpair_t), | intent(in) | :: | cp | |||
integer, | intent(in) | :: | id | |||
logical, | intent(in) | :: | dokinetic | |||
real(kind=REAL64), | intent(inout), | CONTIGUOUS | :: | sblk(:) | ||
real(kind=REAL64), | intent(inout), | CONTIGUOUS | :: | tblk(:) |
@brief Compute primitive block of 1e Coulomb atraction integrals @param[in] cp shell pair data @param[in] id current pair of primitives @param[in] c coordinates of the charged particle @param[in] znuc particle charge @param[inout] vblk block of 1e Coulomb integrals @author Vladimir Mironov @date Sep, 2018 Initial release
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(shpair_t), | intent(in) | :: | cp | |||
integer, | intent(in) | :: | id | |||
real(kind=REAL64), | intent(in) | :: | c(3) | |||
real(kind=REAL64), | intent(in) | :: | znuc | |||
real(kind=REAL64), | intent(inout), | CONTIGUOUS | :: | vblk(:) |
@brief Compute primitive block of 1e Coulomb atraction integrals for Ewald summation, long-range part @details 1e integrals using modified Coulomb potential: \f$ \frac{Erf(\omega^{1/2}|r-r_C|)}{|r-r_C|} \f$ @param[in] cp shell pair data @param[in] id current pair of primitives @param[in] c coordinates of the charged particle @param[in] znuc particle charge @param[in] omega Ewald splitting parameter @param[inout] vblk block of 1e Coulomb integrals @author Vladimir Mironov @date Sep, 2018 Initial release
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(shpair_t), | intent(in) | :: | cp | |||
integer, | intent(in) | :: | id | |||
real(kind=REAL64), | intent(in) | :: | c(3) | |||
real(kind=REAL64), | intent(in) | :: | znuc | |||
real(kind=REAL64), | intent(in) | :: | omega | |||
real(kind=REAL64), | intent(inout), | CONTIGUOUS | :: | vblk(:) |
@brief Subtract damping function term from ESP block @details Compute one-electron Coulomb integrals with the damping function: \f$ |r-r_C|^{-1} (1 - \beta e^{-\alpha(r-r_C)^2}) \f$ Only the part \f$ - |r-r_C|^{-1} \beta e^{-\alpha(r-r_C)^2}) \f$ is computed here; the other part is regular Coulomb potential computed elsewhere @param[in] cp shell pair data @param[in] id current pair of primitives @param[in] alpha dumping exponent @param[in] beta dumping function scaling factor @param[in] c coordinates of the charged particle @param[in] znuc particle charge @param[inout] vblk block of 1e Coulomb integrals @author Vladimir Mironov @date Sep, 2018 Initial release
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(shpair_t), | intent(in) | :: | cp | |||
integer, | intent(in) | :: | id | |||
real(kind=REAL64), | intent(in) | :: | alpha | |||
real(kind=REAL64), | intent(in) | :: | beta | |||
real(kind=REAL64), | intent(in) | :: | c(3) | |||
real(kind=REAL64), | intent(in) | :: | znuc | |||
real(kind=REAL64), | intent(inout), | CONTIGUOUS | :: | vblk(:) |
@brief Compute sum of 1e Coulomb integrals over primitive shell pair @param[in] cp shell pair data @param[in] id current pair of primitives @param[in] c coordinates of the charged particle @param[in] den normalized density matrix block @param[inout] vsum sum of Coulomb integrals over pair of primitives @author Vladimir Mironov @date Oct, 2018 Initial release
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(shpair_t), | intent(in) | :: | cp | |||
integer, | intent(in) | :: | id | |||
real(kind=REAL64), | intent(in) | :: | c(3) | |||
real(kind=REAL64), | intent(in) | :: | den(:) | |||
real(kind=REAL64), | intent(inout) | :: | vsum |
@brief Compute primitive block of 1e Coulomb ESP integrals in FMO method @param[in] cp shell pair data @param[in] id current pair of primitives @param[inout] zblk block of 1e Lz-integrals @author Vladimir Mironov @date Sep, 2018 Initial release
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(shpair_t), | intent(in) | :: | cp | |||
integer, | intent(in) | :: | id | |||
real(kind=REAL64), | intent(inout), | CONTIGUOUS | :: | zblk(:) |
@brief Compute primitive block of multipole integrals of order MOM
@param[in] cp shell pair data
@param[in] id current pair of primitives
@param[in] r point in space to compute integrals
@param[in] mom multiplole moment order (1-dipole, 2-quadrupole, 3-octopole)
@param[inout] blk block of 1e multipole moment integrals
@author Vladimir Mironov
@date Sep, 2018 Initial release
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(shpair_t), | intent(in) | :: | cp | |||
integer, | intent(in) | :: | id | |||
real(kind=real64), | intent(in), | contiguous | :: | r(:) | ||
integer, | intent(in) | :: | mom | |||
real(kind=real64), | intent(inout), | contiguous | :: | blk(:,:) |
@brief Compute primitive block of multipole
integrals up to an order MXMOM
@param[in] cp shell pair data
@param[in] id current pair of primitives
@param[in] r point in space to compute integrals
@param[in] mxmom multiplole moment order (1-dipole, 2-quadrupole, 3-octopole)
@param[inout] blk block of 1e multipole moment integrals
@author Vladimir Mironov
@date Sep, 2018 Initial release
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(shpair_t), | intent(in) | :: | cp | |||
integer, | intent(in) | :: | id | |||
real(kind=real64), | intent(in), | contiguous | :: | r(:) | ||
integer, | intent(in) | :: | mxmom | |||
real(kind=real64), | intent(inout), | contiguous | :: | blk(:,:) |
@brief Compute 1e overlap contribution to the gradient @param[in] cp shell pair data @param[in] dij density matrix block @param[inout] de dimension(3), contribution to gradient @author Vladimir Mironov @date Sep, 2018 Initial release
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(shpair_t), | intent(in) | :: | cp | |||
real(kind=REAL64), | intent(in) | :: | dij(:,:) | |||
real(kind=REAL64), | intent(inout), | CONTIGUOUS | :: | de(:) |
@brief Compute 1e kinetic contribution to the gradient @param[in] cp shell pair data @param[in] dij density matrix block @param[inout] de dimension(3), contribution to gradient @author Vladimir Mironov @date Sep, 2018 Initial release
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(shpair_t), | intent(in) | :: | cp | |||
real(kind=REAL64), | intent(in) | :: | dij(:,:) | |||
real(kind=REAL64), | intent(inout), | CONTIGUOUS | :: | de(:) |
@brief Compute 1e Coulomb contribution to the gradient (v.r.t. shifts of shell's centers) @param[in] nroots roots for GaussRys @param[in] cp shell pair data @param[in] c coordinates of the charged particle @param[in] znuc particle charge @param[in] dij density matrix block @param[inout] dernuc dimension(3), contribution to gradient @author Vladimir Mironov @date Sep, 2018 Initial release
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(shpair_t), | intent(in) | :: | cp | |||
real(kind=REAL64), | intent(in) | :: | c(3) | |||
real(kind=REAL64), | intent(in) | :: | znuc | |||
real(kind=REAL64), | intent(in) | :: | dij(:,:) | |||
real(kind=REAL64), | intent(out) | :: | dernuc(3) |
@brief Compute 1e Hellmann-Feynman contribution to the gradient @param[in] nroots roots for GaussRys @param[in] cp shell pair data @param[in] c coordinates of the charged particle @param[in] znuc particle charge @param[in] dij density matrix block @param[inout] derhf dimension(3), contribution to gradient @author Vladimir Mironov @date Sep, 2018 Initial release
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(shpair_t), | intent(in) | :: | cp | |||
real(kind=REAL64), | intent(in) | :: | c(3) | |||
real(kind=REAL64), | intent(in) | :: | znuc | |||
real(kind=REAL64), | intent(in) | :: | dij(:,:) | |||
real(kind=REAL64), | intent(out), | CONTIGUOUS | :: | derhf(:) |
@brief Compute 1e Ewald long-range contribution to the gradient (v.r.t. shifts of shell's centers) @param[in] nroots roots for GaussRys @param[in] cp shell pair data @param[in] c coordinates of the charged particle @param[in] znuc particle charge @param[in] dij density matrix block @param[in] omega Ewald splitting parameter @param[inout] dernuc dimension(3), contribution to gradient @author Vladimir Mironov @date Sep, 2018 Initial release
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(shpair_t), | intent(in) | :: | cp | |||
real(kind=REAL64), | intent(in) | :: | c(3) | |||
real(kind=REAL64), | intent(in) | :: | znuc | |||
real(kind=REAL64), | intent(in) | :: | dij(:,:) | |||
real(kind=REAL64), | intent(in) | :: | omega | |||
real(kind=REAL64), | intent(out) | :: | dernuc(3) |
@brief Compute Ewald long-range 1e Hellmann-Feynman contribution to the gradient @param[in] nroots roots for GaussRys @param[in] cp shell pair data @param[in] c coordinates of the charged particle @param[in] znuc particle charge @param[in] dij density matrix block @param[in] omega Ewald splitting parameter @param[inout] derhf dimension(3), contribution to gradient @author Vladimir Mironov @date Sep, 2018 Initial release
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(shpair_t), | intent(in) | :: | cp | |||
real(kind=REAL64), | intent(in) | :: | c(3) | |||
real(kind=REAL64), | intent(in) | :: | znuc | |||
real(kind=REAL64), | intent(in) | :: | dij(:,:) | |||
real(kind=REAL64), | intent(in) | :: | omega | |||
real(kind=REAL64), | intent(out), | CONTIGUOUS | :: | derhf(:) |
@brief Add contribution of the 1e-integral block to the triangular matrix @param[in] shi first shell data @param[in] shj second shell data @param[in] mblk square block of 1e integrals passed as 1D array @param[inout] m packed triangular matrix of 1e integral contribution @author Vladimir Mironov @date Sep, 2018 Initial release
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(shell_t), | intent(in) | :: | shi | |||
type(shell_t), | intent(in) | :: | shj | |||
real(kind=REAL64), | intent(in), | CONTIGUOUS | :: | mblk(:) | ||
real(kind=REAL64), | intent(inout), | CONTIGUOUS | :: | m(:) |
@brief Add contribution of the 1e-integral block to the rectangular matrix @param[in] shi first shell data @param[in] shj second shell data @param[in] mblk square block of 1e integrals passed as 1D array @param[inout] m rectangular matrix of 1-e integral contribution @author Igor S. Gerasimov @date Oct, 2022 Initial release
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(shell_t), | intent(in) | :: | shi | |||
type(shell_t), | intent(in) | :: | shj | |||
real(kind=REAL64), | intent(in), | CONTIGUOUS | :: | mblk(:) | ||
real(kind=REAL64), | intent(inout), | CONTIGUOUS | :: | m(:,:) |
@brief Copy density block from the triangular density matrix @details This subroutine assumes arbitrary order of shell IDs @param[in] shi first shell data @param[in] shj second shell data @param[in] dij density matrix in packed triangular form @param[out] denab density matrix block for shells shi and shj
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(shell_t), | intent(in) | :: | shi | |||
type(shell_t), | intent(in) | :: | shj | |||
real(kind=REAL64), | intent(out), | CONTIGUOUS | :: | dij(:) | ||
real(kind=REAL64), | intent(in), | CONTIGUOUS | :: | denab(:) |
@brief Copy density block from the triangular density matrix
@details This subroutine assumes shi%shid>=shj%shid
@param[in] shi first shell data
@param[in] shj second shell data
@param[in] dij density matrix in packed triangular form
@param[out] denab density matrix block for shells shi and shj
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(shell_t), | intent(in) | :: | shi | |||
type(shell_t), | intent(in) | :: | shj | |||
real(kind=REAL64), | intent(out), | CONTIGUOUS | :: | dij(:) | ||
real(kind=REAL64), | intent(in), | CONTIGUOUS | :: | denab(:) |