Documentation for module s_contract_shg

Routines for calculating the s-integrals and their scalar derivatives with respect to rab2 over solid harmonic Gaussian (SHG) functions + contraction routines for these integrals i) (s|O(r12)|s) where O(r12) is the overlap, coulomb operator etc. ii) (aba) and (abb) s-overlaps

source: s_contract_shg.F
Loading...

public Subroutines/Functions:

Contraction and normalization of the [s|O(r12)|s] integrals and their scalar derivatives; this routine is more efficient for highly contracted basis sets (chigh)
Contraction and normalization of the [s|O(r12)|s] integrals and their scalar derivatives; this routine is more efficient for uncontracted basis sets (clow), e.g. for ri basis sets
Contraction and normalization of the (aba) overlap
Contraction and normalization of the (abb) overlap
Contraction, normalization and combinatiorial combination of the [0a|(r-Ra)^(2m)|0b] integrals and their scalar derivatives
calculates the uncontracted, not normalized [s|1/r12|s] two-center coulomb integral
calculates the uncontracted, not normalized [s|exp(-omega*r12**2)|s] two-center integral
calculates the uncontracted, not normalized [s|s] overlap
calculates [s|ra^n|s] integrals for [aba] and the [s|rb^n|s] integrals for [abb]
calculates the uncontracted, not normalized [0a|ra^(2m)|0b] two-center integral, where ra = r-Ra and Ra center of a
calculates the uncontracted, not normalized [s|1/erfc(omega*r12)/r12|s] two-center integral
calculates the uncontracted, not normalized [s|1/erf(omega*r12)/r12|s] two-center integral
calculates the uncontracted, not normalized [s|exp(-omega*r12**2)/r12|s] two-center integral

SUBROUTINEcontract_sint_ab_chigh(npgfa, nshella, scona, npgfb, nshellb, sconb, nds, swork, swork_cont)

Contraction and normalization of the [s|O(r12)|s] integrals and their scalar derivatives; this routine is more efficient for highly contracted basis sets (chigh)

Arguments:
INTEGER,
INTENT(in)
:: npgfa number of primitive Gaussian on a
INTEGER,
INTENT(in)
:: nshella number of shells for a
REAL(dp),
INTENT(in)
:: scona(:,:) SHG contraction/normalization matrix for a
INTEGER,
INTENT(in)
:: npgfb number of primitive Gaussian on b
INTEGER,
INTENT(in)
:: nshellb number of shells for b
REAL(dp),
INTENT(in)
:: sconb(:,:) SHG contraction/normalization matrix for b
INTEGER,
INTENT(in)
:: nds maximal derivative of [s|O(r12)|s] with respect to rab2
REAL(dp),
INTENT(in)
:: swork(:,:,:) matrix storing the uncontracted and unnormalized s-integrals and derivatives
REAL(dp),
INTENT(inout)
:: swork_cont(:,:,:) matrix storing the contracted and normalized s-integrals and derivatives

SUBROUTINEcontract_sint_ab_clow(la, npgfa, nshella, scona_shg, lb, npgfb, nshellb, sconb_shg, swork, swork_cont, calculate_forces)

Contraction and normalization of the [s|O(r12)|s] integrals and their scalar derivatives; this routine is more efficient for uncontracted basis sets (clow), e.g. for ri basis sets

Arguments:
INTEGER,
INTENT(in)
:: la(:) set of l quantum numbers for a
INTEGER,
INTENT(in)
:: npgfa number of primitive Gaussian on a
INTEGER,
INTENT(in)
:: nshella number of shells for a
REAL(dp),
INTENT(in)
:: scona_shg(:,:) SHG contraction/normalization matrix for a
INTEGER,
INTENT(in)
:: lb(:) set of l quantum numbers for b
INTEGER,
INTENT(in)
:: npgfb number of primitive Gaussian on b
INTEGER,
INTENT(in)
:: nshellb number of shells for b
REAL(dp),
INTENT(in)
:: sconb_shg(:,:) SHG contraction/normalization matrix for b
REAL(dp),
INTENT(in)
:: swork(:,:,:) matrix storing the uncontracted and unnormalized s-integrals and derivatives
REAL(dp),
INTENT(inout)
:: swork_cont(:,:,:) matrix storing the contracted and normalized s-integrals and derivatives
LOGICAL,
INTENT(in)
:: calculate_forces ...

SUBROUTINEcontract_s_overlap_aba(la, npgfa, nshella, lb, npgfb, nshellb, sconb_shg, lca, npgfca, nshellca, orba_index, ria_index, scona_mix, nl_max, nds_max, swork, swork_cont, calculate_forces)

Contraction and normalization of the (aba) overlap

Arguments:
INTEGER,
INTENT(in)
:: la(:) set of l quantum numbers on a; orbital basis
INTEGER,
INTENT(in)
:: npgfa number of primitive Gaussians functions on a; orbital basis
INTEGER,
INTENT(in)
:: nshella number of shells for a; orbital basis
INTEGER,
INTENT(in)
:: lb(:) set of l quantum numbers on b; orbital basis
INTEGER,
INTENT(in)
:: npgfb number of primitive Gaussians functions on b; orbital basis
INTEGER,
INTENT(in)
:: nshellb number of shells for b; orbital basis
REAL(dp),
INTENT(in)
:: sconb_shg(:,:) SHG contraction/normalization matrix for b; orbital basis
INTEGER,
INTENT(in)
:: lca(:) set of l quantum numbers on a; ri basis
INTEGER,
INTENT(in)
:: npgfca number of primitive Gaussians functions on a; ri basis
INTEGER,
INTENT(in)
:: nshellca number of shells for a; ri basis
INTEGER,
INTENT(in)
:: orba_index(:,:) index for orbital basis at A for scona_mix
INTEGER,
INTENT(in)
:: ria_index(:,:) index for ri basis at A for scona_mix
REAL(dp),
INTENT(in)
:: scona_mix(:,:,:,:) mixed contraction matrix for orbital and ri basis at A
INTEGER,
INTENT(in)
:: nl_max related to the parameter m in (a|ra^(2m)|b)
INTEGER,
INTENT(in)
:: nds_max maximal derivative with respect to rab**2
REAL(dp),
INTENT(in)
:: swork(:,:,:,:,:) matrix of storing the uncontracted and unnormalized s-integrals and derivatives
REAL(dp),
INTENT(inout)
:: swork_cont(:,0:,:,:,:) matrix storing the contracted and normalized s-integrals and derivatives
LOGICAL,
INTENT(in)
:: calculate_forces ...

SUBROUTINEcontract_s_overlap_abb(la, npgfa, nshella, scona_shg, lb, npgfb, nshellb, lcb, npgfcb, nshellcb, orbb_index, rib_index, sconb_mix, nl_max, nds_max, swork, swork_cont, calculate_forces)

Contraction and normalization of the (abb) overlap

Arguments:
INTEGER,
INTENT(in)
:: la(:) set of l quantum numbers on a
INTEGER,
INTENT(in)
:: npgfa number of primitive Gaussians functions on a; orbital basis
INTEGER,
INTENT(in)
:: nshella number of shells for a; orbital basis
REAL(dp),
INTENT(in)
:: scona_shg(:,:) SHG contraction/normalization matrix for a; orbital basis
INTEGER,
INTENT(in)
:: lb(:) set of l quantum numbers on b; orbital basis
INTEGER,
INTENT(in)
:: npgfb number of primitive Gaussians functions on b; orbital basis
INTEGER,
INTENT(in)
:: nshellb number of shells for b; orbital basis
INTEGER,
INTENT(in)
:: lcb(:) set of l quantum numbers on b; ri basis
INTEGER,
INTENT(in)
:: npgfcb number of primitive Gaussians functions on b; ri basis
INTEGER,
INTENT(in)
:: nshellcb number of shells for b; ri basis
INTEGER,
INTENT(in)
:: orbb_index(:,:) index for orbital basis at B for sconb_mix
INTEGER,
INTENT(in)
:: rib_index(:,:) index for ri basis at B for sconb_mix
REAL(dp),
INTENT(in)
:: sconb_mix(:,:,:,:) mixed contraction matrix for orbital and ri basis at B
INTEGER,
INTENT(in)
:: nl_max related to the parameter m in (a|rb^(2m)|b)
INTEGER,
INTENT(in)
:: nds_max derivative with respect to rab**2
REAL(dp),
INTENT(in)
:: swork(:,:,:,:,:) matrix of storing the uncontracted and unnormalized s-integrals and derivatives
REAL(dp),
INTENT(inout)
:: swork_cont(:,0:,:,:,:) matrix storing the contracted and normalized s-integrals and derivatives
LOGICAL,
INTENT(in)
:: calculate_forces ...

SUBROUTINEcontract_s_ra2m_ab(npgfa, nshella, scon_ra2m, npgfb, nshellb, sconb, swork, swork_cont, m, nds_max)

Contraction, normalization and combinatiorial combination of the [0a|(r-Ra)^(2m)|0b] integrals and their scalar derivatives

Arguments:
INTEGER,
INTENT(in)
:: npgfa number of primitive Gaussian on a
INTEGER,
INTENT(in)
:: nshella number of shells for a
REAL(dp),
INTENT(in)
:: scon_ra2m(:,:,:) contraction matrix on a containg the combinatorial factors
INTEGER,
INTENT(in)
:: npgfb number of primitive Gaussian on b
INTEGER,
INTENT(in)
:: nshellb number of shells for b
REAL(dp),
INTENT(in)
:: sconb(:,:) SHG contraction/normalization matrix for b
REAL(dp),
INTENT(inout)
:: swork(:,:,:,:) matrix storing the uncontracted and unnormalized s-integrals and derivatives
REAL(dp),
INTENT(inout)
:: swork_cont(:,:,:) matrix storing the contracted and normalized s-integrals and derivatives
INTEGER,
INTENT(in)
:: m exponent in operator (r-Ra)^(2m)
INTEGER,
INTENT(in)
:: nds_max maximal derivative with respect to rab2

SUBROUTINEs_coulomb_ab(la_max, npgfa, zeta, lb_max, npgfb, zetb, omega, rab, v, calculate_forces)

calculates the uncontracted, not normalized [s|1/r12|s] two-center coulomb integral

Arguments:
INTEGER,
INTENT(in)
:: la_max maximal l quantum number on a
INTEGER,
INTENT(in)
:: npgfa number of primitive Gaussian on a
REAL(dp),
INTENT(in)
:: zeta(:) set of exponents on a
INTEGER,
INTENT(in)
:: lb_max maximal l quantum number on b
INTEGER,
INTENT(in)
:: npgfb number of primitive Gaussian on a
REAL(dp),
INTENT(in)
:: zetb(:) set of exponents on a
REAL(dp),
INTENT(in)
:: omega parameter not needed, but given for the sake of the abstract interface
REAL(dp),
INTENT(in)
:: rab(3) distance vector between a and b
REAL(dp),
INTENT(inout)
:: v(:,:,:) uncontracted coulomb integral of s functions
LOGICAL,
INTENT(in)
:: calculate_forces ...

SUBROUTINEs_gauss_ab(la_max, npgfa, zeta, lb_max, npgfb, zetb, omega, rab, v, calculate_forces)

calculates the uncontracted, not normalized [s|exp(-omega*r12**2)|s] two-center integral

Arguments:
INTEGER,
INTENT(in)
:: la_max maximal l quantum number on a
INTEGER,
INTENT(in)
:: npgfa number of primitive Gaussian on a
REAL(dp),
INTENT(in)
:: zeta(:) set of exponents on a
INTEGER,
INTENT(in)
:: lb_max maximal l quantum number on b
INTEGER,
INTENT(in)
:: npgfb number of primitive Gaussian on a
REAL(dp),
INTENT(in)
:: zetb(:) set of exponents on a
REAL(dp),
INTENT(in)
:: omega parameter in the operator
REAL(dp),
INTENT(in)
:: rab(3) distance vector between a and b
REAL(dp),
INTENT(inout)
:: v(:,:,:) uncontracted exp(-omega*r**2) integral of s functions
LOGICAL,
INTENT(in)
:: calculate_forces ...

SUBROUTINEs_overlap_ab(la_max, npgfa, zeta, lb_max, npgfb, zetb, rab, s, calculate_forces)

calculates the uncontracted, not normalized [s|s] overlap

Arguments:
INTEGER,
INTENT(in)
:: la_max maximal l quantum number on a
INTEGER,
INTENT(in)
:: npgfa number of primitive Gaussian on a
REAL(dp),
INTENT(in)
:: zeta(:) set of exponents on a
INTEGER,
INTENT(in)
:: lb_max maximal l quantum number on b
INTEGER,
INTENT(in)
:: npgfb number of primitive Gaussian on a
REAL(dp),
INTENT(in)
:: zetb(:) set of exponents on a
REAL(dp),
INTENT(in)
:: rab(3) distance vector between a and b
REAL(dp),
INTENT(inout)
:: s(:,:,:) uncontracted overlap of s functions
LOGICAL,
INTENT(in)
:: calculate_forces ...

SUBROUTINEs_overlap_abb(la_max, npgfa, zeta, lb_max, npgfb, zetb, lcb_max, npgfcb, zetcb, rab, s, calculate_forces)

calculates [s|ra^n|s] integrals for [aba] and the [s|rb^n|s] integrals for [abb]

Arguments:
INTEGER,
INTENT(in)
:: la_max maximal l quantum number on a, orbital basis
INTEGER,
INTENT(in)
:: npgfa number of primitive Gaussian on a, orbital basis
REAL(dp),
INTENT(in)
:: zeta(:) set of exponents on a, orbital basis
INTEGER,
INTENT(in)
:: lb_max maximal l quantum number on b, orbital basis
INTEGER,
INTENT(in)
:: npgfb number of primitive Gaussian on a, orbital basis
REAL(dp),
INTENT(in)
:: zetb(:) set of exponents on b, orbital basis
INTEGER,
INTENT(in)
:: lcb_max maximal l quantum number of aux basis on b
INTEGER,
INTENT(in)
:: npgfcb number of primitive Gaussian on b. aux basis
REAL(dp),
INTENT(in)
:: zetcb(:) set of exponents on b, aux basis
REAL(dp),
INTENT(in)
:: rab(3) distance vector between a and b
REAL(dp),
INTENT(inout)
:: s(:,:,:,:,:) uncontracted [s|r^n|s] integrals
LOGICAL,
INTENT(in)
:: calculate_forces ...

SUBROUTINEs_ra2m_ab(la_max, npgfa, zeta, lb_max, npgfb, zetb, m, rab, s, calculate_forces)

calculates the uncontracted, not normalized [0a|ra^(2m)|0b] two-center integral, where ra = r-Ra and Ra center of a

Arguments:
INTEGER,
INTENT(in)
:: la_max maximal l quantum number on a
INTEGER,
INTENT(in)
:: npgfa number of primitive Gaussian on a
REAL(dp),
INTENT(in)
:: zeta(:) set of exponents on a
INTEGER,
INTENT(in)
:: lb_max maximal l quantum number on b
INTEGER,
INTENT(in)
:: npgfb number of primitive Gaussian on a
REAL(dp),
INTENT(in)
:: zetb(:) set of exponents on a
INTEGER,
INTENT(in)
:: m exponent of the ra operator
REAL(dp),
INTENT(in)
:: rab(3) distance vector between a and b
REAL(dp),
INTENT(inout)
:: s(:,:,:,:) ...
LOGICAL,
INTENT(in)
:: calculate_forces ...

SUBROUTINEs_verfc_ab(la_max, npgfa, zeta, lb_max, npgfb, zetb, omega, rab, v, calculate_forces)

calculates the uncontracted, not normalized [s|1/erfc(omega*r12)/r12|s] two-center integral

Arguments:
INTEGER,
INTENT(in)
:: la_max maximal l quantum number on a
INTEGER,
INTENT(in)
:: npgfa number of primitive Gaussian on a
REAL(dp),
INTENT(in)
:: zeta(:) set of exponents on a
INTEGER,
INTENT(in)
:: lb_max maximal l quantum number on b
INTEGER,
INTENT(in)
:: npgfb number of primitive Gaussian on a
REAL(dp),
INTENT(in)
:: zetb(:) set of exponents on a
REAL(dp),
INTENT(in)
:: omega parameter in the operator
REAL(dp),
INTENT(in)
:: rab(3) distance vector between a and b
REAL(dp),
INTENT(inout)
:: v(:,:,:) uncontracted erf(r)/r integral of s functions
LOGICAL,
INTENT(in)
:: calculate_forces ...

SUBROUTINEs_verf_ab(la_max, npgfa, zeta, lb_max, npgfb, zetb, omega, rab, v, calculate_forces)

calculates the uncontracted, not normalized [s|1/erf(omega*r12)/r12|s] two-center integral

Arguments:
INTEGER,
INTENT(in)
:: la_max maximal l quantum number on a
INTEGER,
INTENT(in)
:: npgfa number of primitive Gaussian on a
REAL(dp),
INTENT(in)
:: zeta(:) set of exponents on a
INTEGER,
INTENT(in)
:: lb_max maximal l quantum number on b
INTEGER,
INTENT(in)
:: npgfb number of primitive Gaussian on a
REAL(dp),
INTENT(in)
:: zetb(:) set of exponents on a
REAL(dp),
INTENT(in)
:: omega parameter in the operator
REAL(dp),
INTENT(in)
:: rab(3) distance vector between a and b
REAL(dp),
INTENT(inout)
:: v(:,:,:) uncontracted erf(r)/r integral of s functions
LOGICAL,
INTENT(in)
:: calculate_forces ...

SUBROUTINEs_vgauss_ab(la_max, npgfa, zeta, lb_max, npgfb, zetb, omega, rab, v, calculate_forces)

calculates the uncontracted, not normalized [s|exp(-omega*r12**2)/r12|s] two-center integral

Arguments:
INTEGER,
INTENT(in)
:: la_max maximal l quantum number on a
INTEGER,
INTENT(in)
:: npgfa number of primitive Gaussian on a
REAL(dp),
INTENT(in)
:: zeta(:) set of exponents on a
INTEGER,
INTENT(in)
:: lb_max maximal l quantum number on b
INTEGER,
INTENT(in)
:: npgfb number of primitive Gaussian on a
REAL(dp),
INTENT(in)
:: zetb(:) set of exponents on a
REAL(dp),
INTENT(in)
:: omega parameter in the operator
REAL(dp),
INTENT(in)
:: rab(3) distance vector between a and b
REAL(dp),
INTENT(inout)
:: v(:,:,:) uncontracted exp(-omega*r**2)/r integral of s functions
LOGICAL,
INTENT(in)
:: calculate_forces ...