40 REAL(
dp),
INTENT(IN) :: ra(3), rb(3), zeta, zetb, rab2
46 pair%zetapzetb = zeta + zetb
47 pair%ZetaInv = 1.0_dp/pair%zetapzetb
51 image%S1234 = -zeta*zetb*pair%ZetaInv*rab2
52 image%P = (zeta*ra + zetb*rb)*pair%ZetaInv
64 INTEGER,
INTENT(IN) :: m_max
65 TYPE(eri4_pgf_product_type),
INTENT(INOUT) :: product
67 cpassert(m_max < eri4_fundamentals_size)
69 product%prepared_max_order = m_max
70 product%exponents = [pair_a%zeta, pair_a%zetb, pair_b%zeta, pair_b%zetb]
71 product%ZetaInv = pair_a%ZetaInv
72 product%EtaInv = pair_b%ZetaInv
73 product%ZetapEtaInv = pair_a%zetapzetb + pair_b%zetapzetb
74 product%ZetapEtaInv = 1.0_dp/product%ZetapEtaInv
75 product%Rho = pair_a%zetapzetb*pair_b%zetapzetb*product%ZetapEtaInv
89 TYPE(eri4_pgf_product_type),
INTENT(IN) :: product
91 REAL(
dp),
INTENT(IN) :: attenuation, pq2
93 TYPE(eri4_pgf_product_type),
INTENT(INOUT) :: params
96 REAL(
dp) :: den, fundamentals_work(eri4_fundamentals_size), g(3), normalization, num, &
99 m_max = product%prepared_max_order
100 params%prepared_max_order = m_max
101 params%exponents = product%exponents
102 params%ZetaInv = product%ZetaInv
103 params%EtaInv = product%EtaInv
104 params%ZetapEtaInv = product%ZetapEtaInv
105 params%Rho = product%Rho
106 params%centers(:, 1) = image_a%ra
107 params%centers(:, 2) = image_a%rb
108 params%centers(:, 3) = image_b%ra
109 params%centers(:, 4) = image_b%rb
113 associate(a => image_a%ra, b => image_a%rb, c => image_b%ra, d => image_b%rb, &
114 zeta_a => product%exponents(1), zeta_b => product%exponents(2), &
115 zeta_c => product%exponents(3), zeta_d => product%exponents(4))
116 params%W = ((zeta_a + zeta_b)*params%P + (zeta_c + zeta_d)*params%Q)*params%ZetapEtaInv
120 den = zeta_a + zeta_b
121 ssss = -num/den*sum((a - b)**2)
124 ssss = ssss - num/den*sum((params%P - c)**2)
125 g = (zeta_a*a + zeta_b*b + zeta_c*c)/den
128 ssss = ssss - num/den*sum((g - d)**2)
129 params%Fm(:) = exp(ssss)
131 normalization = 1.0_dp
132 IF (attenuation > epsilon(0.0_dp)) normalization = 1.0_dp/attenuation
135 params%Rho, t, fundamentals_work, &
136 omega=potential_parameter%omega, &
137 cutoff_radius=potential_parameter%cutoff_radius, &
138 scale_coulomb=potential_parameter%scale_coulomb, &
139 scale_longrange=potential_parameter%scale_longrange, &
140 scale_gaussian=potential_parameter%scale_gaussian)
144 prefactor = normalization*attenuation*sqrt((
pi*params%ZetapEtaInv)**3)
146 params%Fm(i) = params%Fm(i)*prefactor
subroutine, public prepare_eri4_primitive(product, image_a, image_b, attenuation, pq2, potential_parameter, params)
Complete a prepared quartet for one selected image, including normalized radial seeds.
subroutine, public prepare_eri4_pair(ra, rb, zeta, zetb, rab2, pair, image)
Prepare one Gaussian pair, retaining the caller's image topology and screening metadata.
subroutine, public compute_r12_fundamentals(f, normalization, m_max, potential_type, rho, t, work, omega, cutoff_radius, scale_coulomb, scale_longrange, scale_gaussian)
Compose radial kernels before applying their common normalization.