30 use precisn_gbl,
only: wp
44 print
'(/,A)',
'Running all tests'
70 integer :: i, order(4)
74 print
'(/,A,/)',
'Testing permutations of 4 elements...'
79 print
'(A,I2,A,*(1x,I0))',
' ', i,
':', order
97 real(wp) :: r = 100, z = 1, f, fp, g1, g1p, g2, g2p, g3, g3p, k
98 real(wp) :: Ek(4) = [ -1.000, -0.100, -0.010, -0.001 ]
99 integer :: ls(3) = [ 0, 1, 2 ], ipw, ie, n, l
101 print
'(/,A)',
'Testing Whittaker functions'
102 print
'(/,2x,A,3x,A,7x,A,20x,A,19x,A,17x,A,16x,A,20x,A)',
'l',
'Ek',
'GSL W',
'GSL W''',
'UKRmol W',
'UKRmol W''', &
109 call coul_gsl(z, l, ek(ie), r, f, fp, g1, g1p)
111 f = 1; g3 = 0; g3p = 0
113 if (n > 0) f = f * (l + 1 - 1/k + n - 1) * (-l - 1/k + n - 1) / n / (-2*k*r)
115 g3p = g3p + (1/k - n)/r * f
117 g3p = exp(-k*r) * (2*k*r)**(1/k) * (-k*g3 + g3p)
118 g3 = exp(-k*r) * (2*k*r)**(1/k) * g3
119 print
'(I3,F8.3,6E25.15)', l, ek(ie), g1, g1p, g2, g2p, g3, g3p
136 real(wp) :: ra = 15, rb = 100, c = 0, z = 1
137 integer :: m, s1 = +1, s2, l1, l2
138 complex(wp) :: k1, k2, romb, levn
140 print
'(/,A)',
'Testing Levin quadrature'
141 print
'(/,1x,A,2x,A,6x,A,4x,A,4x,A,4x,A,4x,A,2x,A,2x,A,2x,A,2x,A,4x,A,15x,A,15x,A,17x,A,15x,A,4x,A)', &
142 'Ra',
'Rb',
'Re k1',
'Im k1',
'Re k2',
'Im k2',
'm',
's1',
's2',
'l1',
'l2', &
143 're romberg',
'im romberg',
're levin',
'im levin', μ
's romberg', μ
's levin'
155 romb = 0;
call nested_cgreen_correct_romberg(z, ra, rb, c, 1, s1, s2, [ m ], [ l1, l2 ], [ k1, k2 ], romb)
157 levn = 0;
call nested_cgreen_correct_levin (z, ra, rb, c, 1, s1, s2, [ m ], [ l1, l2 ], [ k1, k2 ], levn)
160 print
'(2(F4.0,1x),4(F8.3,1x),I4,SP,2I4,SS,2I4,4E25.15,2I12)', &
161 ra, rb, k1, k2, m, s1, s2, l1, l2, romb, levn, int(1e6*(t1 - t0)), int(1e6*(t2 - t1))
177 romb = 0;
call nested_cgreen_correct_romberg(z, ra, rb, c, 1, s1, s2, [ m ], [ l1, l2 ], [ k1, k2 ], romb)
179 levn = 0;
call nested_cgreen_correct_levin (z, ra, rb, c, 1, s1, s2, [ m ], [ l1, l2 ], [ k1, k2 ], levn)
182 print
'(2(F4.0,1x),4(F8.3,1x),I4,SP,2I4,SS,2I4,4E25.15,2I12)', &
183 ra, rb, k1, k2, m, s1, s2, l1, l2, romb, levn, int(1e6*(t1 - t0)), int(1e6*(t2 - t1))
202 real(wp) :: Z = 1, a = 150, c = 0
203 real(wp) :: k1(2) = [ 0.011080185297_wp, 0.680747949322_wp ]
204 real(wp) :: k2(2) = [ 1.069105413537_wp, 1.438602233160_wp ]
206 integer :: ie, m, s2, ms(1), ss(2)
208 complex(wp) :: ks(2), integ
209 complex(wp) :: reference(2,3,2) = reshape([(-4.772929e-01_wp, +8.885647e+01_wp), (-8.424650e-04_wp, +5.923864e-01_wp), &
210 (+9.979744e-06_wp, +3.949186e-03_wp), (+1.307372e+00_wp, +3.240230e+02_wp), &
211 (+3.965361e-02_wp, +2.158463e+00_wp), (+4.697322e-04_wp, +1.437268e-02_wp), &
212 (-2.211202e-01_wp, +7.029786e+01_wp), (-9.899674e-06_wp, +4.686525e-01_wp), &
213 (+9.695004e-06_wp, +3.124290e-03_wp), (-1.752969e+00_wp, +1.992839e+02_wp), &
214 (+8.061387e-05_wp, +1.328557e+00_wp), (+7.894722e-05_wp, +8.855647e-03_wp)], &
217 print
'(/,A)',
'Testing one-photon exponential integrals'
218 print
'(/,2x,A,1x,A,1x,A,2x,A,12x,A,13x,A,2x,A,3x,A,4x,A)',
'm',
's2',
's1',
'k2',
'k1', &
219 're calculated',
'im calculated',
're reference',
'im reference'
226 ss = [ (-1)**(s2+1), +1 ]
227 ks = [ k1(ie), k2(ie) ]
231 print
'(SP,3I3,SS,2F14.10,SP,4E16.7)', ms(1), ss(2), ss(1), real(ks(2),wp), real(ks(1),wp), &
232 real(integ, wp), aimag(integ),
real(reference(s2,m+1,ie), wp), aimag(reference(s2,m+1,ie))
250 real(wp) :: a = 150, c = 0, z = 1
251 real(wp) :: k1(2) = [ 0.011080185297_wp, 0.680747949322_wp ]
252 real(wp) :: k2(2) = [ 1.069105413537_wp, 1.438602233160_wp ]
254 integer :: ie, ipw, s2, ms(1), ss(2), ls(2)
255 integer :: l1(8) = [ 1, 1, 3, 1, 3, 3, 3, 3 ]
256 integer :: l2(8) = [ 0, 2, 2, 2, 2, 4, 2, 4 ]
258 complex(wp) :: ks(2), integ
259 complex(wp) :: reference(2,8,2) = reshape([(-3.454030e+13_wp, +1.290212e+14_wp), (+4.518674e+14_wp, +1.770164e+14_wp), &
260 (-1.054015e+14_wp, -8.206518e+13_wp), (-3.390989e+14_wp, +3.473927e+14_wp), &
261 (-1.012103e+14_wp, -8.818320e+13_wp), (-3.209952e+14_wp, +3.673575e+14_wp), &
262 (-1.054015e+14_wp, -8.206518e+13_wp), (-3.390989e+14_wp, +3.473927e+14_wp), &
263 (-1.012103e+14_wp, -8.818320e+13_wp), (-3.209952e+14_wp, +3.673575e+14_wp), &
264 (+1.307948e+14_wp, +3.038993e+13_wp), (+1.111367e+14_wp, -4.753884e+14_wp), &
265 (-1.012103e+14_wp, -8.818320e+13_wp), (-3.209952e+14_wp, +3.673575e+14_wp), &
266 (+1.307948e+14_wp, +3.038993e+13_wp), (+1.111367e+14_wp, -4.753884e+14_wp), &
267 (-6.382646e+01_wp, +2.799838e+01_wp), (+7.071896e+01_wp, +1.844497e+02_wp), &
268 (+1.584632e+01_wp, -6.787748e+01_wp), (-1.900621e+02_wp, -5.395706e+01_wp), &
269 (+5.054597e+01_wp, +4.803432e+01_wp), (+4.962959e+01_wp, +1.911980e+02_wp), &
270 (+1.584632e+01_wp, -6.787748e+01_wp), (-1.900621e+02_wp, -5.395706e+01_wp), &
271 (+5.054597e+01_wp, +4.803432e+01_wp), (+4.962959e+01_wp, +1.911980e+02_wp), &
272 (-6.443654e+01_wp, -2.668020e+01_wp), (-1.150300e+02_wp, -1.606738e+02_wp), &
273 (+5.054597e+01_wp, +4.803432e+01_wp), (+4.962959e+01_wp, +1.911980e+02_wp), &
274 (-6.443654e+01_wp, -2.668020e+01_wp), (-1.150300e+02_wp, -1.606738e+02_wp)], &
277 print
'(/,A)',
'Testing one-photon Coulomb integrals'
278 print
'(/,1x,A,1x,A,1x,A,2x,A,12x,A,13x,A,2x,A,3x,A,4x,A)',
's2',
'l2',
'l1',
'k2',
'k1', &
279 're calculated',
'im calculated',
're reference',
'im reference'
286 ss = [ (-1)**(s2+1), +1 ]
287 ls = [ l1(ipw), l2(ipw) ]
288 ks = [ k1(ie), k2(ie) ]
292 print
'(SP,I3,SS,2I3,2F14.10,SP,4E16.7)', (-1)**(s2+1), l2(ipw), l1(ipw), k2(ie), k1(ie), &
293 real(integ, wp), aimag(integ),
real(reference(s2,ipw,ie), wp), aimag(reference(s2,ipw,ie))
313 real(wp) :: a = 50, b = 150, c = 0, z = 1
315 real(wp) :: k1(2) = [ 0.011080185297_wp, 0.680747949322_wp ]
316 real(wp) :: k2(2) = [ 1.069105413537_wp, 1.438602233160_wp ]
318 integer :: l1(8) = [ 1, 1, 3, 1, 3, 3, 3, 3 ]
319 integer :: l2(8) = [ 0, 2, 2, 2, 2, 4, 2, 4 ]
321 integer :: ie, ipw, s1, s2, sa, sb, ms(1), ls(2)
323 complex(wp) :: ks(2), integ_ai, integ_bi, integ_ab
325 print
'(/,A)',
'Testing one-photon Green integrals (numerical integration)'
326 print
'(/,4(1x,A),2x,A,12x,A,12x,A,3x,A,3x,A,3x,A)',
's2',
's1',
'l2',
'l1',
'k2',
'k1', &
327 're numerical ',
'im numerical ',
're asymptotic',
'im asymptotic'
335 ls = [ l1(ipw), l2(ipw) ]
336 ks = [ k1(ie), k2(ie) ]
345 print
'(SP,2I3,SS,2I3,2F14.10,SP,8E16.7)', sb, sa, l2(ipw), l1(ipw), k2(ie), k1(ie), &
346 real(integ_ab - integ_bi, wp), aimag(integ_ab - integ_bi), &
347 real(integ_ai - integ_bi, wp), aimag(integ_ai - integ_bi)
367 real(wp) :: a = 150, c = 0, z = 1
369 real(wp) :: k1(2) = [ 0.011080185297_wp, 0.680747949322_wp ]
370 real(wp) :: k2(2) = [ 1.069105413537_wp, 1.438602233160_wp ]
371 real(wp) :: k3(2) = [ 1.511902774652_wp, 1.917220644579_wp ]
373 integer :: l1(8) = [ 1, 1, 3, 1, 3, 3, 3, 3 ]
374 integer :: l2(8) = [ 0, 2, 2, 2, 2, 4, 2, 4 ]
375 integer :: l3(8) = [ 1, 1, 1, 3, 3, 3, 3, 3 ]
377 integer :: ie, ipw, s4, ms(2), ss(4), ls(4)
379 complex(wp) :: ks(4), integ1, integ2, integ
380 complex(wp) :: reference(2,8,2) = reshape([(-1.465883e+16_wp, -4.950701e+15_wp), (-3.842765e+16_wp, 8.620168e+16_wp), &
381 (-1.466146e+16_wp, -4.951551e+15_wp), (-3.843793e+16_wp, 8.623263e+16_wp), &
382 (-1.443664e+16_wp, -5.780723e+15_wp), (-3.378946e+16_wp, 8.865409e+16_wp), &
383 ( 1.520251e+16_wp, -2.902864e+15_wp), (-8.964058e+15_wp, -9.400575e+16_wp), &
384 ( 1.541476e+16_wp, -2.070261e+15_wp), (-1.420349e+16_wp, -9.382680e+16_wp), &
385 ( 1.542117e+16_wp, -2.071208e+15_wp), (-1.422236e+16_wp, -9.390101e+16_wp), &
386 ( 1.541476e+16_wp, -2.070261e+15_wp), (-1.420349e+16_wp, -9.382680e+16_wp), &
387 ( 1.542117e+16_wp, -2.071208e+15_wp), (-1.422236e+16_wp, -9.390101e+16_wp), &
388 (-4.322904e+03_wp, -4.890496e+03_wp), (-2.301503e+04_wp, 1.829823e+04_wp), &
389 (-4.323345e+03_wp, -4.890988e+03_wp), (-2.301886e+04_wp, 1.830140e+04_wp), &
390 ( 6.409175e+03_wp, -1.254518e+03_wp), ( 2.742317e+04_wp, 1.058896e+04_wp), &
391 ( 5.914821e+03_wp, 2.763232e+03_wp), ( 1.382079e+04_wp, -2.596191e+04_wp), &
392 (-5.378829e+03_wp, 3.705000e+03_wp), (-2.937519e+04_wp, 1.216512e+03_wp), &
393 (-5.380092e+03_wp, 3.705885e+03_wp), (-2.938678e+04_wp, 1.217206e+03_wp), &
394 (-5.378829e+03_wp, 3.705000e+03_wp), (-2.937519e+04_wp, 1.216512e+03_wp), &
395 (-5.380092e+03_wp, 3.705885e+03_wp), (-2.938678e+04_wp, 1.217206e+03_wp)], &
398 print
'(/,A)',
'Testing two-photon Coulomb integrals'
399 print
'(/,4(1x,A),2x,A,12x,A,12x,A,12x,A,3x,A,3x,A,4x,A)',
's4',
'l3',
'l2',
'l1',
'k3',
'k2',
'k1', &
400 're calculated',
'im calculated',
're reference',
'im reference'
408 ss = [ (-1)**(s4+1), +1, -1, +1 ]
409 ls = [ l1(ipw), l2(ipw), l2(ipw), l3(ipw) ]
410 ks = [ k1(ie), k2(ie), k2(ie), k3(ie) ]
414 ss = [ +1, +1, -1, (-1)**(s4+1) ]
415 ls = [ l3(ipw), l2(ipw), l2(ipw), l1(ipw) ]
416 ks = [ k3(ie), k2(ie), k2(ie), k1(ie) ]
420 integ = integ1 + integ2
422 print
'(SP,I3,SS,3I3,3F14.10,SP,4E16.7)', (-1)**(s4+1), l3(ie), l2(ipw), l1(ipw), k3(ie), k2(ie), k1(ie), &
423 real(integ, wp), aimag(integ),
real(reference(s4,ipw,ie), wp), aimag(reference(s4,ipw,ie))
441 real(wp) :: a = 150, c = 0, z = 1
443 real(wp) :: k1(2) = [ 0.011080185297_wp, 0.680747949322_wp ]
444 real(wp) :: k2(2) = [ 1.069105413537_wp, 1.438602233160_wp ]
445 real(wp) :: k3(2) = [ 1.511902774652_wp, 1.917220644579_wp ]
447 integer :: l1(8) = [ 1, 1, 3, 1, 3, 3, 3, 3 ]
448 integer :: l2(8) = [ 0, 2, 2, 2, 2, 4, 2, 4 ]
449 integer :: l3(8) = [ 1, 1, 1, 3, 3, 3, 3, 3 ]
451 integer :: ie, ipw, s4, ms(2), ls(3)
453 complex(wp) :: ks(3), integ1, integ2
454 complex(wp) :: reference(2,2,8,2) = reshape([(-8.310927e+15_wp, 7.523384e+15_wp), (-5.909915e+16_wp, 6.931934e+16_wp), &
455 ( 5.679523e+16_wp, 4.672527e+16_wp), ( 8.225897e+24_wp, 1.848188e+24_wp), &
456 (-6.506509e+15_wp, 2.066669e+16_wp), (-1.618385e+16_wp, 4.224605e+15_wp), &
457 ( 1.050096e+17_wp, 4.554189e+16_wp), (-4.312479e+24_wp, -7.240598e+24_wp), &
458 (-7.673705e+15_wp, 2.037601e+16_wp), (-1.647265e+16_wp, 3.342092e+15_wp), &
459 ( 1.078882e+17_wp, 3.987695e+16_wp), (-4.728274e+24_wp, -7.026109e+24_wp), &
460 (-4.503787e+15_wp, -2.119630e+16_wp), ( 1.619053e+16_wp, 4.287343e+15_wp), &
461 (-1.138495e+17_wp, 1.201762e+16_wp), ( 2.556995e+23_wp, 8.432496e+24_wp), &
462 (-3.344463e+15_wp, -2.151751e+16_wp), ( 1.600768e+16_wp, 5.199000e+15_wp), &
463 (-1.135684e+17_wp, 1.836697e+16_wp), ( 7.238276e+23_wp, 8.446832e+24_wp), &
464 (-8.612323e+15_wp, -1.723199e+16_wp), ( 3.535435e+16_wp, 4.008848e+16_wp), &
465 (-9.807095e+16_wp, 3.755844e+16_wp), ( 7.275593e+24_wp, 4.341652e+24_wp), &
466 (-3.344463e+15_wp, -2.151751e+16_wp), ( 1.600768e+16_wp, 5.199000e+15_wp), &
467 (-1.135684e+17_wp, 1.836697e+16_wp), ( 7.238276e+23_wp, 8.446832e+24_wp), &
468 (-8.612323e+15_wp, -1.723199e+16_wp), ( 3.535435e+16_wp, 4.008848e+16_wp), &
469 (-9.807095e+16_wp, 3.755844e+16_wp), ( 7.275593e+24_wp, 4.341652e+24_wp), &
470 (-1.247516e+03_wp, 3.118370e+03_wp), (-2.763140e+04_wp, 1.784564e+04_wp), &
471 ( 1.332880e+04_wp, 9.920923e+03_wp), ( 6.345060e+03_wp, 4.578023e+04_wp), &
472 (-3.896753e+03_wp, 9.080720e+02_wp), (-6.662204e+03_wp, 3.014237e+04_wp), &
473 ( 6.717303e+03_wp, 1.712697e+04_wp), ( 4.397613e+04_wp, -1.193480e+04_wp), &
474 ( 1.189054e+03_wp, -3.822275e+03_wp), (-2.263210e+04_wp, -2.099869e+04_wp), &
475 ( 1.136951e+04_wp, -1.445428e+04_wp), (-3.253996e+04_wp, -3.189015e+04_wp), &
476 ( 3.212357e+03_wp, -2.385969e+03_wp), ( 1.813020e+04_wp, -2.499891e+04_wp), &
477 (-1.298806e+04_wp, -1.303291e+04_wp), (-4.510261e+04_wp, -6.582287e+03_wp), &
478 ( 4.327121e+02_wp, 3.979850e+03_wp), ( 1.239242e+04_wp, 2.828936e+04_wp), &
479 (-4.667920e+03_wp, 1.779027e+04_wp), ( 1.713954e+04_wp, 4.222912e+04_wp), &
480 ( 1.147174e+03_wp, 5.355515e+03_wp), ( 1.429665e+04_wp, 1.753491e+04_wp), &
481 (-5.010378e+03_wp, 2.217364e+04_wp), ( 3.781810e+04_wp, 1.923663e+04_wp), &
482 ( 4.327121e+02_wp, 3.979850e+03_wp), ( 1.239242e+04_wp, 2.828936e+04_wp), &
483 (-4.667920e+03_wp, 1.779027e+04_wp), ( 1.713954e+04_wp, 4.222912e+04_wp), &
484 ( 1.147174e+03_wp, 5.355515e+03_wp), ( 1.429665e+04_wp, 1.753491e+04_wp), &
485 (-5.010378e+03_wp, 2.217364e+04_wp), ( 3.781810e+04_wp, 1.923663e+04_wp)], &
488 print
'(/,A)',
'Testing two-photon Green integrals'
489 print
'(/,5(1x,A),2x,A,12x,A,12x,A,12x,A,3x,A,3x,A,4x,A)',
's4',
's1',
'l3',
'l2',
'l1',
'k3',
'k2',
'k1', &
490 're calculated',
'im calculated',
're reference',
'im reference'
497 ls = [ l1(ipw), l2(ipw), l3(ipw) ]
498 ks = [ k1(ie), k2(ie), k3(ie) ]
503 print
'(SP,2I3,SS,3I3,3F14.10,SP,8E16.7)', (-1)**(s4+1), +1, l3(ipw), l2(ipw), l1(ipw), k3(ie), k2(ie), k1(ie),&
504 real(integ1, wp), aimag(integ1),
real(reference(1,s4,ipw,ie), wp), aimag(reference(1,s4,ipw,ie))
505 print
'(SP,2I3,SS,3I3,3F14.10,SP,8E16.7)', (-1)**(s4+1), -1, l3(ipw), l2(ipw), l1(ipw), k3(ie), k2(ie), k1(ie),&
506 real(integ2, wp), aimag(integ2),
real(reference(2,s4,ipw,ie), wp), aimag(reference(2,s4,ipw,ie))
521 use dipelm_special_functions,
only: threej
525 integer :: J = 0, li = 1, lj = 1, mi = 0, mj = 0, ki = 0, kj = 0, qi = 0, qj = 0, p = 0
526 real(wp) :: beta, ref, beta_ap
528 print
'(/,A)',
'Testing one-photon angular integrals'
529 print
'(/,8A4,2A12)',
'J',
'p',
'li',
'lj',
'mi',
'mj',
'qi',
'qj',
'TJij',
'reference'
538 ref = (-1)**(p + mi + qi) * (2*j + 1) * sqrt((2*li +
rone)*(2*lj +
rone)) &
539 * threej(2*li, 0, 2*lj, 0, 2*j, 0) &
540 * threej(2*1, 2*p, 2*1, -2*p, 2*j, 0) &
541 * threej(2*li, 2*mi, 2*lj, -2*mj, 2*j, -2*(mi-mj)) &
542 * threej(2*1, 2*qi, 2*1, -2*qj, 2*j, -2*(mi-mj))
543 if (abs(beta) > 1e-10 .or. abs(ref) > 1e-10)
then
544 print
'(I4,SP,I4,SS,2I4,SP,4I4,2F12.7,A8)', &
545 j, p, li, lj, mi, mj, qi, qj, beta, ref, &
546 merge(
' ok',
'WRONG!', abs(beta - ref) / (abs(beta) + abs(ref)) < 1e-5)
555 print
'(/,A)',
'Testing two-photon angular integrals'
556 print
'(/,10A4,2A12)',
'J',
'p',
'li',
'lj',
'mi',
'mj',
'ki',
'kj',
'qi',
'qj',
'TJij',
'reference'
566 beta =
beta_contraction_tensor(j, 2, [ p, p ], li, mi, [ ki, qi ], lj, mj, [ kj, qj ])
567 ref =
beta_2p_demekhin(j, p, p, li, mi, ki, qi, lj, mj, kj, qj)
568 if (abs(beta) > 1e-10 .or. abs(ref) > 1e-10)
then
569 print
'("1st test ",I4,SP,I4,SS,2I4,SP,6I4,2F12.7,A8)', &
570 j, p, li, lj, mi, mj, ki, kj, qi, qj, beta, ref, &
571 merge(
' ok',
'WRONG!', abs(beta - ref) / (abs(beta) + abs(ref)) < 1e-5)
575 &(j, 0, 2, [ p, p ], li, mi, [ ki, qi ], [ p, p ], lj, mj, [ kj, qj ])
576 if (abs(beta_ap) > 1e-10 .or. abs(ref) > 1e-10)
then
577 print
'("2nd test ",I4,SP,I4,SS,2I4,SP,6I4,2F12.7,A8)', &
578 j, p, li, lj, mi, mj, ki, kj, qi, qj, beta_ap, ref, &
579 merge(
' ok',
'WRONG!', abs(beta_ap - ref) / (abs(beta_ap) + abs(ref)) < 1e-5)
Special integrals needed by MULTIDIP.
complex(wp) function nested_cgreen_integ(Z, a, r0, c, N, sa, sb, m, l, k)
Multi-dimensional integral of Coulomb-Hankel and Coulomb-Green functions and powers.
complex(wp) function nested_exp_integ(Z, a, c, N, m, s, k)
Multi-dimensional triangular integral of exponentials and powers.
complex(wp) function nested_coul_integ(Z, a, c, N, m, s, l, k)
Multi-dimensional triangular integral of Coulomb-Hankel functions and powers.
Levin quadrature for numerical integration.
subroutine nested_cgreen_correct_levin(Z, a, b, c, N, sa, sb, m, l, k, v)
Numerically correct asymptotic approximation of the Coulomb-Green integral (Levin integration)
Hard-coded parameters of MULTIDIP.
integer, parameter ntermsasy
Number of terms in expansion of the Coulomb-Hankel functions.
Romberg quadrature for numerical integration.
subroutine nested_cgreen_correct_romberg(Z, a, b, c, N, sa, sb, m, l, k, v)
Numerically correct asymptotic approximation of the Coulomb-Green integral (Romberg integration)
Special functions and objects used by MULTIDIP.
real(wp) function beta_2p_arb_pol_sph_harm(Lbig, Mbig, n, pB, lp, mp, qB, pA, l, m, qA)
Two-photon asymmetry parameter for the arbitrary polarized case.
subroutine coul_ukrmol(Z, l, Ek, r, F, Fp, G, Gp)
Coulomb functions (UKRmol)
subroutine coul_gsl(Z, l, Ek, r, F, Fp, G, Gp)
Coulomb functions (GSL)
real(wp) function beta_contraction_tensor(J, n, p, li, mi, qi, lj, mj, qj)
Angular part of the beta parameters.
real(wp) function beta_2p_demekhin(L, p1, p2, li, mi, q1i, q2i, lj, mj, q1j, q2j)
Two-photon asymmetry parameter.
logical function next_permutation(p)
Construct or advance permutation.
subroutine test_2p_gint
Two-photon Green integral unit tests.
subroutine test_levin
Tests of the Levin quadrature routine.
subroutine test_coul
Negative-energy Coulomb function tests.
subroutine test_2p_cint
Two-photon Coulomb integral unit tests.
subroutine test_permutations
Permutations unit tests.
subroutine test_1p_eint
One-photon exponential integral unit tests.
subroutine run_tests
Numerical unit tests.
subroutine test_1p_gint
One-photon Green integral unit tests.
subroutine test_1p_cint
One-photon Coulomb integral unit tests.
subroutine test_ang_dist
Angular algebra unit tests.