58 qs_atom_dispersion_type,&
69 neighbor_list_iterator_p_type,&
71 neighbor_list_set_p_type
82 #include "./base/base_uses.f90"
88 CHARACTER(len=*),
PARAMETER,
PRIVATE :: moduleN =
'qs_dispersion_pairpot'
96 INTEGER,
DIMENSION(:),
POINTER :: nlist
97 REAL(KIND=
dp),
DIMENSION(:),
POINTER :: dvals
98 REAL(KIND=
dp),
DIMENSION(:, :),
POINTER :: rik
116 TYPE(atomic_kind_type),
DIMENSION(:),
POINTER :: atomic_kind_set
117 TYPE(qs_kind_type),
DIMENSION(:),
POINTER :: qs_kind_set
118 TYPE(qs_dispersion_type),
POINTER :: dispersion_env
119 TYPE(section_vals_type),
OPTIONAL,
POINTER :: pp_section
120 TYPE(mp_para_env_type),
POINTER :: para_env
122 CHARACTER(len=*),
PARAMETER :: routinen =
'qs_dispersion_pairpot_init'
124 CHARACTER(LEN=2) :: symbol
125 CHARACTER(LEN=default_string_length) :: aname, filename
126 CHARACTER(LEN=default_string_length), &
127 DIMENSION(:),
POINTER :: tmpstringlist
128 INTEGER :: elem, handle, i, ikind, j, max_elem, &
129 maxc, n_rep, nkind, nl, vdw_pp_type, &
131 INTEGER,
DIMENSION(:),
POINTER :: exlist
132 LOGICAL :: at_end, explicit, found, is_available
134 TYPE(qs_atom_dispersion_type),
POINTER :: disp
136 CALL timeset(routinen, handle)
138 vdw_type = dispersion_env%type
139 SELECT CASE (vdw_type)
144 vdw_pp_type = dispersion_env%type
145 SELECT CASE (dispersion_env%pp_type)
155 dispersion_env%max_elem = max_elem
156 dispersion_env%maxc = maxc
157 ALLOCATE (dispersion_env%maxci(max_elem))
158 ALLOCATE (dispersion_env%c6ab(max_elem, max_elem, maxc, maxc, 3))
159 ALLOCATE (dispersion_env%r0ab(max_elem, max_elem))
160 ALLOCATE (dispersion_env%rcov(max_elem))
161 ALLOCATE (dispersion_env%r2r4(max_elem))
162 ALLOCATE (dispersion_env%cn(max_elem))
165 filename = dispersion_env%parameter_file_name
166 CALL dftd3_c6_param(dispersion_env%c6ab, dispersion_env%maxci, filename, para_env)
167 CALL setr0ab(dispersion_env%r0ab, dispersion_env%rcov, dispersion_env%r2r4)
169 CALL setcn(dispersion_env%cn)
177 dum = 0.5_dp*dispersion_env%r2r4(i)*real(i,
dp)**0.5_dp
179 dispersion_env%r2r4(i) = sqrt(dum)
182 dispersion_env%k1 = 16.0_dp
183 dispersion_env%k2 = 4._dp/3._dp
191 dispersion_env%k3 = -4._dp
192 dispersion_env%rcov = dispersion_env%k2*dispersion_env%rcov*
bohr
194 dispersion_env%alp = 14._dp
198 nkind =
SIZE(atomic_kind_set)
199 SELECT CASE (vdw_type)
204 cpabort(
"xc_vdw_fun_none in init routine")
207 SELECT CASE (dispersion_env%pp_type)
213 CALL get_atomic_kind(atomic_kind_set(ikind), element_symbol=symbol, z=elem)
217 filename = dispersion_env%parameter_file_name
220 IF (
PRESENT(pp_section))
THEN
224 c_vals=tmpstringlist)
225 IF (trim(tmpstringlist(1)) == trim(symbol))
THEN
227 READ (tmpstringlist(2), *) disp%c6
228 READ (tmpstringlist(3), *) disp%vdw_radii
234 IF (.NOT. found)
THEN
236 CALL dftd2_param(elem, disp%c6, disp%vdw_radii, found)
238 IF (.NOT. found)
THEN
240 INQUIRE (file=filename, exist=is_available)
241 IF (is_available)
THEN
243 TYPE(cp_parser_type) :: parser
249 CALL parser_get_object(parser, aname)
250 IF (trim(aname) == trim(symbol))
THEN
251 CALL parser_get_object(parser, disp%c6)
254 CALL parser_get_object(parser, disp%vdw_radii)
255 disp%vdw_radii = disp%vdw_radii*
bohr
265 disp%defined = .true.
267 disp%defined = .false.
270 IF (.NOT. disp%defined) &
271 CALL cp_abort(__location__, &
272 "Dispersion parameters for element ("//trim(symbol)//
") are not defined! "// &
273 "Please provide a valid set of parameters through the input section or "// &
274 "through an external file! ")
275 CALL set_qs_kind(qs_kind_set(ikind), dispersion=disp)
279 CALL get_atomic_kind(atomic_kind_set(ikind), element_symbol=symbol, z=elem)
283 disp%defined = .true.
285 disp%defined = .false.
287 IF (.NOT. disp%defined) &
288 CALL cp_abort(__location__, &
289 "Dispersion parameters for element ("//trim(symbol)//
") are not defined! "// &
290 "Please provide a valid set of parameters through the input section or "// &
291 "through an external file! ")
292 CALL set_qs_kind(qs_kind_set(ikind), dispersion=disp)
295 IF (
PRESENT(pp_section))
THEN
299 ALLOCATE (dispersion_env%cnkind(n_rep))
302 c_vals=tmpstringlist)
303 READ (tmpstringlist(1), *) dispersion_env%cnkind(i)%cnum
304 READ (tmpstringlist(2), *) dispersion_env%cnkind(i)%kind
309 ALLOCATE (dispersion_env%cnlist(n_rep))
312 c_vals=tmpstringlist)
313 nl =
SIZE(tmpstringlist)
314 ALLOCATE (dispersion_env%cnlist(i)%atom(nl - 1))
315 dispersion_env%cnlist(i)%natom = nl - 1
316 READ (tmpstringlist(1), *) dispersion_env%cnlist(i)%cnum
318 READ (tmpstringlist(j + 1), *) dispersion_env%cnlist(i)%atom(j)
326 DO j = 1,
SIZE(exlist)
328 CALL get_qs_kind(qs_kind_set(ikind), dispersion=disp)
329 disp%defined = .false.
333 dispersion_env%nd3_exclude_pair = n_rep
335 ALLOCATE (dispersion_env%d3_exclude_pair(n_rep, 2))
339 dispersion_env%d3_exclude_pair(i, :) = exlist
347 CALL timestop(handle)
359 TYPE(atomic_kind_type),
DIMENSION(:),
POINTER :: atomic_kind_set
360 TYPE(qs_kind_type),
DIMENSION(:),
POINTER :: qs_kind_set
361 TYPE(qs_dispersion_type),
POINTER :: dispersion_env
362 TYPE(mp_para_env_type),
POINTER :: para_env
364 CHARACTER(LEN=default_string_length) :: filename
365 INTEGER :: i, ikind, max_elem, maxc, nkind
367 TYPE(qs_atom_dispersion_type),
POINTER :: disp
369 nkind =
SIZE(atomic_kind_set)
370 IF (dispersion_env%type /= xc_vdw_fun_pairpot)
THEN
374 disp%defined = .true.
375 CALL set_qs_kind(qs_kind_set(ikind), dispersion=disp)
381 dispersion_env%max_elem = max_elem
382 dispersion_env%maxc = maxc
383 ALLOCATE (dispersion_env%maxci(max_elem))
384 ALLOCATE (dispersion_env%c6ab(max_elem, max_elem, maxc, maxc, 3))
385 ALLOCATE (dispersion_env%r0ab(max_elem, max_elem))
386 ALLOCATE (dispersion_env%rcov(max_elem))
387 ALLOCATE (dispersion_env%r2r4(max_elem))
388 ALLOCATE (dispersion_env%cn(max_elem))
390 filename = dispersion_env%parameter_file_name
391 CALL dftd3_c6_param(dispersion_env%c6ab, dispersion_env%maxci, filename, para_env)
392 CALL setr0ab(dispersion_env%r0ab, dispersion_env%rcov, dispersion_env%r2r4)
394 CALL setcn(dispersion_env%cn)
396 dum = 0.5_dp*dispersion_env%r2r4(i)*real(i, dp)**0.5_dp
397 dispersion_env%r2r4(i) = sqrt(dum)
399 dispersion_env%k1 = 16.0_dp
400 dispersion_env%k2 = 4._dp/3._dp
401 dispersion_env%k3 = -4._dp
402 dispersion_env%rcov = dispersion_env%k2*dispersion_env%rcov*bohr
403 dispersion_env%alp = 14._dp
413 REAL(kind=dp),
INTENT(inout) :: scaling
414 TYPE(section_vals_type),
POINTER :: vdw_section
416 CHARACTER(LEN=default_string_length) :: functional
418 CALL section_vals_val_get(vdw_section,
"PAIR_POTENTIAL%REFERENCE_FUNCTIONAL", c_val=functional)
420 SELECT CASE (trim(functional))
423 cpabort(
"No DFT-D2 s6 value available for this functional:"//trim(functional))
455 REAL(kind=dp),
INTENT(inout) :: s6, sr6, s8
456 TYPE(section_vals_type),
POINTER :: vdw_section
458 CHARACTER(LEN=default_string_length) :: functional
460 CALL section_vals_val_get(vdw_section,
"PAIR_POTENTIAL%REFERENCE_FUNCTIONAL", c_val=functional)
465 SELECT CASE (trim(functional))
468 cpabort(
"No DFT-D3 values available for this functional:"//trim(functional))
828 REAL(kind=dp),
INTENT(inout) :: s6, a1, s8, a2
829 TYPE(section_vals_type),
POINTER :: vdw_section
831 CHARACTER(LEN=default_string_length) :: functional
833 CALL section_vals_val_get(vdw_section,
"PAIR_POTENTIAL%REFERENCE_FUNCTIONAL", c_val=functional)
838 SELECT CASE (trim(functional))
841 cpabort(
"No DFT-D3(BJ) values available for this functional:"//trim(functional))
1246 TYPE(qs_environment_type),
POINTER :: qs_env
1247 TYPE(qs_dispersion_type),
POINTER :: dispersion_env
1248 REAL(kind=dp),
INTENT(OUT) :: energy
1249 LOGICAL,
INTENT(IN) :: calculate_forces
1250 REAL(kind=dp),
DIMENSION(:),
OPTIONAL :: atevdw
1252 CHARACTER(LEN=*),
PARAMETER :: routinen =
'calculate_dispersion_pairpot'
1254 INTEGER :: atom_a, atom_b, atom_c, atom_d, handle, hashb, hashc, i, ia, iat, iatom, icx, &
1255 icy, icz, idmp, ikind, ilist, imol, jatom, jkind, katom, kkind, kstart, latom, lkind, &
1256 max_elem, maxc, mepos, na, natom, nb, nc, nkind, num_pe, unit_nr, za, zb, zc
1257 INTEGER,
ALLOCATABLE,
DIMENSION(:) :: atom_of_kind, atomnumber, kind_of
1258 INTEGER,
DIMENSION(3) :: cell_b, cell_c, ncell, periodic
1259 INTEGER,
DIMENSION(:),
POINTER :: atom_list
1260 LOGICAL :: atenergy, atex, atstress, debug, debugall, debugx, domol, exclude_pair, &
1261 floating_a, floating_b, floating_c, ghost_a, ghost_b, ghost_c, is000, use_virial
1262 LOGICAL,
ALLOCATABLE,
DIMENSION(:) :: dodisp, floating, ghost
1263 REAL(kind=dp) :: a1, a2, alp6, alp8, ang, c6, c8, c9, cc6ab, cc6bc, cc6ca, cnum, dc6a, dc6b, &
1264 dc8a, dc8b, dcc6aba, dcc6abb, dcc6bcb, dcc6bcc, dcc6caa, dcc6cac, dd, de6, de8, de91, &
1265 de921, de922, dea, devdw, dfdab6, dfdab8, dfdabc, dfdmp, dr, drk, e6, e6tot, e8, e8tot, &
1266 e9, e9tot, elrc6, elrc8, elrc9, eps_cn, er, esrb, evdw, f0ab,
fac, fac0, fdab6, fdab8, &
1267 fdabc, fdmp, gnorm, gsrb, kgc8, nab, nabc, r0, r0ab, r2ab, r2abc, r2bc, r2ca, r6, r8, &
1268 rabc, rc2, rcc, rcut, rs6, rs8, s1, s2, s3, s6, s8, s8i, s9, srbe, ssrb, t1srb, t2srb, xp
1269 REAL(kind=dp),
ALLOCATABLE,
DIMENSION(:) :: atom2mol, c6d2, cnkind, cnumbers, &
1271 REAL(kind=dp),
ALLOCATABLE,
DIMENSION(:, :) :: rcpbc
1272 REAL(kind=dp),
DIMENSION(3) :: fdij, fdik, ra, rab, rb, rb0, rbc, rc, &
1273 rc0, rca, rij, rik, sab_max
1274 REAL(kind=dp),
DIMENSION(3, 3) :: dvirial, pv_loc, pv_virial_thread
1275 REAL(kind=dp),
DIMENSION(:),
POINTER :: atener
1276 REAL(kind=dp),
DIMENSION(:, :, :),
POINTER :: atstr
1277 TYPE(atomic_kind_type),
DIMENSION(:),
POINTER :: atomic_kind_set
1278 TYPE(atprop_type),
POINTER :: atprop
1279 TYPE(cell_type),
POINTER :: cell
1280 TYPE(cp_logger_type),
POINTER :: logger
1281 TYPE(dcnum_type),
ALLOCATABLE,
DIMENSION(:) :: dcnum
1282 TYPE(molecule_type),
DIMENSION(:),
POINTER :: molecule_set
1283 TYPE(mp_para_env_type),
POINTER :: para_env
1284 TYPE(neighbor_list_iterator_p_type), &
1285 DIMENSION(:),
POINTER :: nl_iterator
1286 TYPE(neighbor_list_set_p_type),
DIMENSION(:), &
1288 TYPE(particle_type),
DIMENSION(:),
POINTER :: particle_set
1289 TYPE(qs_atom_dispersion_type),
POINTER :: disp_a, disp_b, disp_c
1290 TYPE(qs_force_type),
DIMENSION(:),
POINTER :: force
1291 TYPE(qs_kind_type),
DIMENSION(:),
POINTER :: qs_kind_set
1292 TYPE(virial_type),
POINTER :: virial
1296 use_virial = .false.
1298 IF (dispersion_env%type .NE. xc_vdw_fun_pairpot)
THEN
1302 CALL timeset(routinen, handle)
1304 NULLIFY (atomic_kind_set, qs_kind_set, sab_vdw)
1306 CALL get_qs_env(qs_env=qs_env, atomic_kind_set=atomic_kind_set, qs_kind_set=qs_kind_set, &
1307 cell=cell, virial=virial, para_env=para_env, atprop=atprop)
1309 debugx = dispersion_env%verbose
1311 debug = debugx .AND. para_env%is_source()
1312 nkind =
SIZE(atomic_kind_set)
1315 logger => cp_get_default_logger()
1316 IF (
ASSOCIATED(dispersion_env%dftd_section))
THEN
1317 unit_nr = cp_print_key_unit_nr(logger, dispersion_env%dftd_section,
"PRINT_DFTD", &
1324 atenergy = atprop%energy
1326 NULLIFY (particle_set)
1327 CALL get_qs_env(qs_env=qs_env, particle_set=particle_set)
1328 natom =
SIZE(particle_set)
1329 CALL atprop_array_init(atprop%atevdw, natom)
1330 atener => atprop%atevdw
1332 atstress = atprop%stress
1333 atstr => atprop%atstress
1336 IF (
PRESENT(atevdw))
THEN
1340 IF (unit_nr > 0)
THEN
1342 WRITE (unit_nr, *)
" Pair potential vdW calculation"
1343 IF (dispersion_env%pp_type == vdw_pairpot_dftd2)
THEN
1344 WRITE (unit_nr, *)
" Dispersion potential type: DFT-D2"
1345 ELSE IF (dispersion_env%pp_type == vdw_pairpot_dftd3)
THEN
1346 WRITE (unit_nr, *)
" Dispersion potential type: DFT-D3"
1347 ELSE IF (dispersion_env%pp_type == vdw_pairpot_dftd3bj)
THEN
1348 WRITE (unit_nr, *)
" Dispersion potential type: DFT-D3(BJ)"
1352 NULLIFY (particle_set)
1353 CALL get_qs_env(qs_env=qs_env, particle_set=particle_set)
1354 natom =
SIZE(particle_set)
1355 IF (calculate_forces .OR. debugall)
THEN
1357 CALL get_qs_env(qs_env=qs_env, force=force)
1358 CALL get_atomic_kind_set(atomic_kind_set, atom_of_kind=atom_of_kind, kind_of=kind_of)
1359 use_virial = virial%pv_availability .AND. (.NOT. virial%pv_numer)
1360 IF (use_virial .AND. debugall)
THEN
1361 dvirial = virial%pv_virial
1363 IF (use_virial)
THEN
1364 pv_loc = virial%pv_virial
1366 ELSE IF ((dispersion_env%pp_type == vdw_pairpot_dftd3 .OR. &
1367 dispersion_env%pp_type == vdw_pairpot_dftd3bj) .AND. dispersion_env%doabc)
THEN
1368 CALL get_atomic_kind_set(atomic_kind_set, atom_of_kind=atom_of_kind, kind_of=kind_of)
1371 ALLOCATE (dodisp(nkind), ghost(nkind), floating(nkind), atomnumber(nkind), c6d2(nkind), radd2(nkind))
1373 CALL get_atomic_kind(atomic_kind_set(ikind), z=za)
1374 CALL get_qs_kind(qs_kind_set(ikind), dispersion=disp_a, ghost=ghost_a, floating=floating_a)
1375 dodisp(ikind) = disp_a%defined
1376 ghost(ikind) = ghost_a
1377 floating(ikind) = floating_a
1378 atomnumber(ikind) = za
1379 c6d2(ikind) = disp_a%c6
1380 radd2(ikind) = disp_a%vdw_radii
1383 ALLOCATE (rcpbc(3, natom))
1385 rcpbc(:, iatom) =
pbc(particle_set(iatom)%r(:), cell)
1388 rcut = 2._dp*dispersion_env%rc_disp
1390 IF (dispersion_env%pp_type == vdw_pairpot_dftd2)
THEN
1391 s6 = dispersion_env%scaling
1392 dd = dispersion_env%exp_pre
1393 IF (unit_nr > 0)
THEN
1394 WRITE (unit_nr, *)
" Scaling parameter (s6) ", s6
1395 WRITE (unit_nr, *)
" Exponential prefactor ", dd
1398 ELSE IF (dispersion_env%pp_type == vdw_pairpot_dftd3 .OR. &
1399 dispersion_env%pp_type == vdw_pairpot_dftd3bj)
THEN
1400 maxc =
SIZE(dispersion_env%c6ab, 3)
1401 max_elem =
SIZE(dispersion_env%c6ab, 1)
1402 alp6 = dispersion_env%alp
1404 s6 = dispersion_env%s6
1405 s8 = dispersion_env%s8
1406 s9 = dispersion_env%s6
1407 rs6 = dispersion_env%sr6
1409 a1 = dispersion_env%a1
1410 a2 = dispersion_env%a2
1411 eps_cn = dispersion_env%eps_cn
1416 domol = dispersion_env%domol
1418 kgc8 = dispersion_env%kgc8
1420 CALL get_qs_env(qs_env=qs_env, molecule_set=molecule_set)
1421 ALLOCATE (atom2mol(natom))
1422 DO imol = 1,
SIZE(molecule_set)
1423 DO iat = molecule_set(imol)%first_atom, molecule_set(imol)%last_atom
1424 atom2mol(iat) = imol
1430 IF (dispersion_env%pp_type == vdw_pairpot_dftd3)
THEN
1432 ELSE IF (dispersion_env%pp_type == vdw_pairpot_dftd3bj)
THEN
1436 ssrb = dispersion_env%srb_params(1)
1437 gsrb = dispersion_env%srb_params(2)
1438 t1srb = dispersion_env%srb_params(3)
1439 t2srb = dispersion_env%srb_params(4)
1441 IF (unit_nr > 0)
THEN
1442 WRITE (unit_nr, *)
" Scaling parameter (s6) ", s6
1443 WRITE (unit_nr, *)
" Scaling parameter (s8) ", s8
1444 IF (dispersion_env%pp_type == vdw_pairpot_dftd3)
THEN
1445 WRITE (unit_nr, *)
" Zero Damping parameter (sr6)", rs6
1446 WRITE (unit_nr, *)
" Zero Damping parameter (sr8)", rs8
1447 ELSE IF (dispersion_env%pp_type == vdw_pairpot_dftd3bj)
THEN
1448 WRITE (unit_nr, *)
" BJ Damping parameter (a1) ", a1
1449 WRITE (unit_nr, *)
" BJ Damping parameter (a2) ", a2
1451 WRITE (unit_nr, *)
" Cutoff coordination numbers", eps_cn
1452 IF (dispersion_env%lrc)
THEN
1453 WRITE (unit_nr, *)
" Apply a long range correction"
1455 IF (dispersion_env%srb)
THEN
1456 WRITE (unit_nr, *)
" Apply a short range bond correction"
1457 WRITE (unit_nr, *)
" SRB parameters (s,g,t1,t2) ", ssrb, gsrb, t1srb, t2srb
1460 WRITE (unit_nr, *)
" Inter-molecule scaling parameter (s8) ", kgc8
1464 NULLIFY (particle_set)
1465 CALL get_qs_env(qs_env=qs_env, particle_set=particle_set)
1466 natom =
SIZE(particle_set)
1467 ALLOCATE (cnumbers(natom))
1470 IF (calculate_forces .OR. debugall)
THEN
1471 ALLOCATE (dcnum(natom))
1472 dcnum(:)%neighbors = 0
1474 ALLOCATE (dcnum(iatom)%nlist(10), dcnum(iatom)%dvals(10), dcnum(iatom)%rik(3, 10))
1480 CALL d3_cnumber(qs_env, dispersion_env, cnumbers, dcnum, ghost, floating, atomnumber, &
1481 calculate_forces, debugall)
1483 CALL para_env%sum(cnumbers)
1485 IF (calculate_forces .OR. debugall)
THEN
1487 IF (unit_nr > 0 .AND.
SIZE(dcnum) > 0)
THEN
1489 WRITE (unit_nr, *)
" ATOM Coordination Neighbors"
1491 WRITE (unit_nr,
"(I6,F20.10,I12)") i, cnumbers(i), dcnum(i)%neighbors
1500 IF (dispersion_env%doabc)
THEN
1501 rcc = 2._dp*dispersion_env%rc_disp
1502 CALL get_cell(cell=cell, periodic=periodic)
1503 sab_max(1) = rcc/plane_distance(1, 0, 0, cell)
1504 sab_max(2) = rcc/plane_distance(0, 1, 0, cell)
1505 sab_max(3) = rcc/plane_distance(0, 0, 1, cell)
1506 ncell(:) = (int(sab_max(:)) + 1)*periodic(:)
1507 IF (unit_nr > 0)
THEN
1508 WRITE (unit_nr, *)
" Calculate C9 Terms"
1509 WRITE (unit_nr,
"(A,T20,I3,A,I3)")
" Search in cells ", -ncell(1),
":", ncell(1)
1510 WRITE (unit_nr,
"(T20,I3,A,I3)") - ncell(2),
":", ncell(2)
1511 WRITE (unit_nr,
"(T20,I3,A,I3)") - ncell(3),
":", ncell(3)
1514 IF (dispersion_env%c9cnst)
THEN
1515 IF (unit_nr > 0)
WRITE (unit_nr, *)
" Use reference coordination numbers for C9 term"
1516 ALLOCATE (cnumfix(natom))
1520 ikind = kind_of(iatom)
1521 CALL get_atomic_kind(atomic_kind_set(ikind), z=za)
1522 cnumfix(iatom) = dispersion_env%cn(za)
1525 IF (
ASSOCIATED(dispersion_env%cnkind))
THEN
1526 DO i = 1,
SIZE(dispersion_env%cnkind)
1527 ikind = dispersion_env%cnkind(i)%kind
1528 cnum = dispersion_env%cnkind(i)%cnum
1529 cpassert(ikind <= nkind)
1531 CALL get_atomic_kind(atomic_kind_set(ikind), natom=na, atom_list=atom_list)
1533 iatom = atom_list(ia)
1534 cnumfix(iatom) = cnum
1538 IF (
ASSOCIATED(dispersion_env%cnlist))
THEN
1539 DO i = 1,
SIZE(dispersion_env%cnlist)
1540 DO ilist = 1, dispersion_env%cnlist(i)%natom
1541 iatom = dispersion_env%cnlist(i)%atom(ilist)
1542 cnumfix(iatom) = dispersion_env%cnlist(i)%cnum
1546 IF (unit_nr > 0)
THEN
1548 IF (abs(cnumbers(i) - cnumfix(i)) > 0.5_dp)
THEN
1549 WRITE (unit_nr,
"(A,T20,A,I6,T41,2F10.3)")
" Difference in CN ",
"Atom:", &
1550 i, cnumbers(i), cnumfix(i)
1559 sab_vdw => dispersion_env%sab_vdw
1560 nkind =
SIZE(atomic_kind_set)
1564 pv_virial_thread(:, :) = 0._dp
1566 CALL neighbor_list_iterator_create(nl_iterator, sab_vdw, nthread=num_pe)
1569 DO WHILE (neighbor_list_iterate(nl_iterator, mepos=mepos) == 0)
1570 CALL get_iterator_info(nl_iterator, mepos=mepos, ikind=ikind, jkind=jkind, iatom=iatom, jatom=jatom, r=rij)
1572 IF (ghost(ikind) .OR. ghost(jkind) .OR. floating(ikind) .OR. floating(jkind)) cycle
1574 IF (.NOT. (dodisp(ikind) .AND. dodisp(jkind))) cycle
1576 za = atomnumber(ikind)
1577 zb = atomnumber(jkind)
1579 dr = sqrt(sum(rij(:)**2))
1580 IF (dr <= rcut)
THEN
1583 IF (iatom == jatom)
fac = 0.5_dp
1584 IF (disp_a%type == dftd2_pp .AND. dr > 0.001_dp)
THEN
1585 c6 = sqrt(c6d2(ikind)*c6d2(jkind))
1586 rcc = radd2(ikind) + radd2(jkind)
1587 er = exp(-dd*(dr/rcc - 1._dp))
1588 fdmp = 1._dp/(1._dp + er)
1590 evdw = evdw - xp*fdmp*
fac
1591 IF (calculate_forces)
THEN
1592 dfdmp = dd/rcc*er*fdmp*fdmp
1593 devdw = -xp*(-6._dp*fdmp/dr + dfdmp)
1594 fdij(:) = devdw*rij(:)/dr*
fac
1595 atom_a = atom_of_kind(iatom)
1596 atom_b = atom_of_kind(jatom)
1597 force(ikind)%dispersion(:, atom_a) = force(ikind)%dispersion(:, atom_a) - fdij(:)
1598 force(jkind)%dispersion(:, atom_b) = force(jkind)%dispersion(:, atom_b) + fdij(:)
1599 IF (use_virial)
THEN
1600 CALL virial_pair_force(pv_virial_thread, -1._dp, fdij, rij)
1603 CALL virial_pair_force(atstr(:, :, iatom), -0.5_dp, fdij, rij)
1604 CALL virial_pair_force(atstr(:, :, jatom), -0.5_dp, fdij, rij)
1608 atener(iatom) = atener(iatom) - 0.5_dp*xp*fdmp*
fac
1609 atener(jatom) = atener(jatom) - 0.5_dp*xp*fdmp*
fac
1612 atevdw(iatom) = atevdw(iatom) - 0.5_dp*xp*fdmp*
fac
1613 atevdw(jatom) = atevdw(jatom) - 0.5_dp*xp*fdmp*
fac
1615 ELSE IF (disp_a%type == dftd3_pp .AND. dr > 0.001_dp)
THEN
1616 IF (dispersion_env%nd3_exclude_pair > 0)
THEN
1617 CALL exclude_d3_kind_pair(dispersion_env%d3_exclude_pair, ikind, jkind, exclude=exclude_pair)
1618 IF (exclude_pair) cycle
1621 CALL getc6(maxc, max_elem, dispersion_env%c6ab, dispersion_env%maxci, za, zb, &
1622 cnumbers(iatom), cnumbers(jatom), dispersion_env%k3, c6, dc6a, dc6b)
1623 c8 = 3.0d0*c6*dispersion_env%r2r4(za)*dispersion_env%r2r4(zb)
1624 dc8a = 3.0d0*dc6a*dispersion_env%r2r4(za)*dispersion_env%r2r4(zb)
1625 dc8b = 3.0d0*dc6b*dispersion_env%r2r4(za)*dispersion_env%r2r4(zb)
1630 IF (atom2mol(iatom) /= atom2mol(jatom))
THEN
1637 CALL damping_d3(dr, dispersion_env%r0ab(za, zb), rs6, alp6, rcut, fdab6, dfdab6)
1638 CALL damping_d3(dr, dispersion_env%r0ab(za, zb), rs8, alp8, rcut, fdab8, dfdab8)
1639 e6 = s6*
fac*c6*fdab6/r6
1640 e8 = s8i*
fac*c8*fdab8/r8
1641 ELSE IF (idmp == 2)
THEN
1643 r0ab = sqrt(3.0d0*dispersion_env%r2r4(za)*dispersion_env%r2r4(zb))
1645 fdab6 = 1.0_dp/(r6 + f0ab**6)
1646 fdab8 = 1.0_dp/(r8 + f0ab**8)
1647 e6 = s6*
fac*c6*fdab6
1648 e8 = s8i*
fac*c8*fdab8
1650 cpabort(
"Unknown DFT-D3 damping function:")
1652 IF (dispersion_env%srb .AND. dr .LT. 30.0d0)
THEN
1653 srbe = ssrb*(real((za*zb), kind=dp))**t1srb*exp(-gsrb*dr*dispersion_env%r0ab(za, zb)**t2srb)
1659 evdw = evdw - e6 - e8
1663 atener(iatom) = atener(iatom) - 0.5_dp*(e6 + e8 + srbe)
1664 atener(jatom) = atener(jatom) - 0.5_dp*(e6 + e8 + srbe)
1667 atevdw(iatom) = atevdw(iatom) - 0.5_dp*(e6 + e8 + srbe)
1668 atevdw(jatom) = atevdw(jatom) - 0.5_dp*(e6 + e8 + srbe)
1670 IF (calculate_forces)
THEN
1674 de6 = -s6*c6/r6*(dfdab6 - 6._dp*fdab6/dr)
1675 de8 = -s8i*c8/r8*(dfdab8 - 8._dp*fdab8/dr)
1676 ELSE IF (idmp == 2)
THEN
1678 de6 = s6*c6*fdab6*fdab6*6.0_dp*dr**5
1679 de8 = s8i*c8*fdab8*fdab8*8.0_dp*dr**7
1681 cpabort(
"Unknown DFT-D3 damping function:")
1683 fdij(:) = (de6 + de8)*rij(:)/dr*
fac
1684 IF (dispersion_env%srb .AND. dr .LT. 30.0d0)
THEN
1685 fdij(:) = fdij(:) + srbe*gsrb*dispersion_env%r0ab(za, zb)**t2srb*rij(:)/dr
1687 atom_a = atom_of_kind(iatom)
1688 atom_b = atom_of_kind(jatom)
1689 force(ikind)%dispersion(:, atom_a) = force(ikind)%dispersion(:, atom_a) - fdij(:)
1690 force(jkind)%dispersion(:, atom_b) = force(jkind)%dispersion(:, atom_b) + fdij(:)
1691 IF (use_virial)
THEN
1692 CALL virial_pair_force(pv_virial_thread, -1._dp, fdij, rij)
1695 CALL virial_pair_force(atstr(:, :, iatom), -0.5_dp, fdij, rij)
1696 CALL virial_pair_force(atstr(:, :, jatom), -0.5_dp, fdij, rij)
1701 dc6a = -s6*
fac*dc6a*fdab6/r6
1702 dc6b = -s6*
fac*dc6b*fdab6/r6
1703 dc8a = -s8i*
fac*dc8a*fdab8/r8
1704 dc8b = -s8i*
fac*dc8b*fdab8/r8
1705 ELSE IF (idmp == 2)
THEN
1707 dc6a = -s6*
fac*dc6a*fdab6
1708 dc6b = -s6*
fac*dc6b*fdab6
1709 dc8a = -s8i*
fac*dc8a*fdab8
1710 dc8b = -s8i*
fac*dc8b*fdab8
1712 cpabort(
"Unknown DFT-D3 damping function:")
1714 DO i = 1, dcnum(iatom)%neighbors
1715 katom = dcnum(iatom)%nlist(i)
1716 kkind = kind_of(katom)
1717 rik = dcnum(iatom)%rik(:, i)
1718 drk = sqrt(sum(rik(:)**2))
1719 fdik(:) = (dc6a + dc8a)*dcnum(iatom)%dvals(i)*rik(:)/drk
1720 atom_c = atom_of_kind(katom)
1721 force(ikind)%dispersion(:, atom_a) = force(ikind)%dispersion(:, atom_a) - fdik(:)
1722 force(kkind)%dispersion(:, atom_c) = force(kkind)%dispersion(:, atom_c) + fdik(:)
1723 IF (use_virial)
THEN
1724 CALL virial_pair_force(pv_virial_thread, -1._dp, fdik, rik)
1727 CALL virial_pair_force(atstr(:, :, iatom), -0.5_dp, fdik, rik)
1728 CALL virial_pair_force(atstr(:, :, katom), -0.5_dp, fdik, rik)
1731 DO i = 1, dcnum(jatom)%neighbors
1732 katom = dcnum(jatom)%nlist(i)
1733 kkind = kind_of(katom)
1734 rik = dcnum(jatom)%rik(:, i)
1735 drk = sqrt(sum(rik(:)**2))
1736 fdik(:) = (dc6b + dc8b)*dcnum(jatom)%dvals(i)*rik(:)/drk
1737 atom_c = atom_of_kind(katom)
1738 force(jkind)%dispersion(:, atom_b) = force(jkind)%dispersion(:, atom_b) - fdik(:)
1739 force(kkind)%dispersion(:, atom_c) = force(kkind)%dispersion(:, atom_c) + fdik(:)
1740 IF (use_virial)
THEN
1741 CALL virial_pair_force(pv_virial_thread, -1._dp, fdik, rik)
1744 CALL virial_pair_force(atstr(:, :, jatom), -0.5_dp, fdik, rik)
1745 CALL virial_pair_force(atstr(:, :, katom), -0.5_dp, fdik, rik)
1749 IF (dispersion_env%doabc)
THEN
1750 CALL get_iterator_info(nl_iterator, cell=cell_b)
1751 hashb = cellhash(cell_b, ncell)
1752 is000 = (all(cell_b == 0))
1753 rb0(:) = matmul(cell%hmat, cell_b)
1754 ra(:) =
pbc(particle_set(iatom)%r(:), cell)
1755 rb(:) =
pbc(particle_set(jatom)%r(:), cell) + rb0
1756 r2ab = sum((ra - rb)**2)
1757 DO icx = -ncell(1), ncell(1)
1758 DO icy = -ncell(2), ncell(2)
1759 DO icz = -ncell(3), ncell(3)
1763 hashc = cellhash(cell_c, ncell)
1764 IF (is000 .AND. (all(cell_c == 0)))
THEN
1766 kstart = max(jatom + 1, iatom + 1)
1768 ELSE IF (is000)
THEN
1776 IF (hashc == hashb) cycle
1777 IF (all(cell_c == 0)) cycle
1780 fac0 = 1.0_dp/3.0_dp
1782 rc0 = matmul(cell%hmat, cell_c)
1783 DO katom = kstart, natom
1784 kkind = kind_of(katom)
1785 IF (ghost(kkind) .OR. floating(kkind) .OR. .NOT. dodisp(kkind)) cycle
1786 rc(:) = rcpbc(:, katom) + rc0(:)
1787 r2bc = sum((rb - rc)**2)
1788 IF (r2bc >= rc2) cycle
1789 r2ca = sum((rc - ra)**2)
1790 IF (r2ca >= rc2) cycle
1791 r2abc = r2ab*r2bc*r2ca
1792 IF (r2abc <= 0.001_dp) cycle
1793 IF (dispersion_env%nd3_exclude_pair > 0)
THEN
1794 CALL exclude_d3_kind_pair(dispersion_env%d3_exclude_pair, ikind, jkind, &
1795 kkind, exclude_pair)
1796 IF (exclude_pair) cycle
1799 IF (r2abc <= 0.01*rc2*rc2*rc2)
THEN
1800 kkind = kind_of(katom)
1801 atom_c = atom_of_kind(katom)
1802 zc = atomnumber(kkind)
1805 IF (iatom == jatom .OR. iatom == katom .OR. jatom == katom)
fac = 0.5_dp
1806 IF (iatom == jatom .AND. iatom == katom)
fac = 1._dp/3._dp
1809 IF (dispersion_env%c9cnst)
THEN
1810 CALL getc6(maxc, max_elem, dispersion_env%c6ab, dispersion_env%maxci, za, zb, &
1811 cnumfix(iatom), cnumfix(jatom), dispersion_env%k3, cc6ab, dcc6aba, dcc6abb)
1812 CALL getc6(maxc, max_elem, dispersion_env%c6ab, dispersion_env%maxci, zb, zc, &
1813 cnumfix(jatom), cnumfix(katom), dispersion_env%k3, cc6bc, dcc6bcb, dcc6bcc)
1814 CALL getc6(maxc, max_elem, dispersion_env%c6ab, dispersion_env%maxci, zc, za, &
1815 cnumfix(katom), cnumfix(iatom), dispersion_env%k3, cc6ca, dcc6cac, dcc6caa)
1817 CALL getc6(maxc, max_elem, dispersion_env%c6ab, dispersion_env%maxci, za, zb, &
1818 cnumbers(iatom), cnumbers(jatom), dispersion_env%k3, cc6ab, dcc6aba, dcc6abb)
1819 CALL getc6(maxc, max_elem, dispersion_env%c6ab, dispersion_env%maxci, zb, zc, &
1820 cnumbers(jatom), cnumbers(katom), dispersion_env%k3, cc6bc, dcc6bcb, dcc6bcc)
1821 CALL getc6(maxc, max_elem, dispersion_env%c6ab, dispersion_env%maxci, zc, za, &
1822 cnumbers(katom), cnumbers(iatom), dispersion_env%k3, cc6ca, dcc6cac, dcc6caa)
1824 c9 = -sqrt(cc6ab*cc6bc*cc6ca)
1825 rabc = r2abc**(1._dp/6._dp)
1826 r0 = (dispersion_env%r0ab(za, zb)*dispersion_env%r0ab(zb, zc)* &
1827 dispersion_env%r0ab(zc, za))**(1._dp/3._dp)
1831 CALL damping_d3(rabc, r0, 4._dp/3._dp, 16.0_dp, rcut, fdabc, dfdabc)
1832 s1 = r2ab + r2bc - r2ca
1833 s2 = r2ab + r2ca - r2bc
1834 s3 = r2ca + r2bc - r2ab
1835 ang = 0.375_dp*s1*s2*s3/r2abc + 1.0_dp
1837 e9 = s9*
fac*fdabc*c9*ang/r2abc**1.50d0
1841 atener(iatom) = atener(iatom) - e9/3._dp
1842 atener(jatom) = atener(jatom) - e9/3._dp
1843 atener(katom) = atener(katom) - e9/3._dp
1846 atevdw(iatom) = atevdw(iatom) - e9/3._dp
1847 atevdw(jatom) = atevdw(jatom) - e9/3._dp
1848 atevdw(katom) = atevdw(katom) - e9/3._dp
1851 IF (calculate_forces)
THEN
1852 rab = rb - ra; rbc = rc - rb; rca = ra - rc
1853 de91 = s9*
fac*dfdabc*c9*ang/r2abc**1.50d0
1854 de91 = -de91/3._dp*rabc + 3._dp*e9
1855 dea = s9*
fac*fdabc*c9/r2abc**2.50d0*0.75_dp
1856 fdij(:) = de91*rab(:)/r2ab
1857 fdij(:) = fdij(:) + dea*s1*s2*s3*rab(:)/r2ab
1858 fdij(:) = fdij(:) - dea*(s2*s3 + s1*s3 - s1*s2)*rab(:)
1859 force(ikind)%dispersion(:, atom_a) = force(ikind)%dispersion(:, atom_a) - fdij(:)
1860 force(jkind)%dispersion(:, atom_b) = force(jkind)%dispersion(:, atom_b) + fdij(:)
1861 IF (use_virial)
THEN
1862 CALL virial_pair_force(pv_virial_thread, -1._dp, fdij, rab)
1865 CALL virial_pair_force(atstr(:, :, iatom), -0.5_dp, fdij, rab)
1866 CALL virial_pair_force(atstr(:, :, jatom), -0.5_dp, fdij, rab)
1868 fdij(:) = de91*rbc(:)/r2bc
1869 fdij(:) = fdij(:) + dea*s1*s2*s3*rbc(:)/r2bc
1870 fdij(:) = fdij(:) - dea*(s2*s3 - s1*s3 + s1*s2)*rbc(:)
1871 force(jkind)%dispersion(:, atom_b) = force(jkind)%dispersion(:, atom_b) - fdij(:)
1872 force(kkind)%dispersion(:, atom_c) = force(kkind)%dispersion(:, atom_c) + fdij(:)
1873 IF (use_virial)
THEN
1874 CALL virial_pair_force(pv_virial_thread, -1._dp, fdij, rbc)
1877 CALL virial_pair_force(atstr(:, :, jatom), -0.5_dp, fdij, rbc)
1878 CALL virial_pair_force(atstr(:, :, katom), -0.5_dp, fdij, rbc)
1880 fdij(:) = de91*rca(:)/r2ca
1881 fdij(:) = fdij(:) + dea*s1*s2*s3*rca(:)/r2ca
1882 fdij(:) = fdij(:) - dea*(-s2*s3 + s1*s3 + s1*s2)*rca(:)
1883 force(kkind)%dispersion(:, atom_c) = force(kkind)%dispersion(:, atom_c) - fdij(:)
1884 force(ikind)%dispersion(:, atom_a) = force(ikind)%dispersion(:, atom_a) + fdij(:)
1885 IF (use_virial)
THEN
1886 CALL virial_pair_force(pv_virial_thread, -1._dp, fdij, rca)
1889 CALL virial_pair_force(atstr(:, :, iatom), -0.5_dp, fdij, rca)
1890 CALL virial_pair_force(atstr(:, :, katom), -0.5_dp, fdij, rca)
1893 IF (.NOT. dispersion_env%c9cnst)
THEN
1897 de91 = 0.5_dp*e9/cc6ab
1898 de921 = de91*dcc6aba
1899 de922 = de91*dcc6abb
1900 DO i = 1, dcnum(iatom)%neighbors
1901 latom = dcnum(iatom)%nlist(i)
1902 lkind = kind_of(latom)
1903 rik(1) = dcnum(iatom)%rik(1, i)
1904 rik(2) = dcnum(iatom)%rik(2, i)
1905 rik(3) = dcnum(iatom)%rik(3, i)
1906 drk = sqrt(rik(1)*rik(1) + rik(2)*rik(2) + rik(3)*rik(3))
1907 fdik(:) = -de921*dcnum(iatom)%dvals(i)*rik(:)/drk
1908 atom_d = atom_of_kind(latom)
1909 force(ikind)%dispersion(:, atom_a) = force(ikind)%dispersion(:, atom_a) - fdik(:)
1910 force(lkind)%dispersion(:, atom_d) = force(lkind)%dispersion(:, atom_d) + fdik(:)
1911 IF (use_virial)
THEN
1912 CALL virial_pair_force(pv_virial_thread, -1._dp, fdik, rik)
1915 DO i = 1, dcnum(jatom)%neighbors
1916 latom = dcnum(jatom)%nlist(i)
1917 lkind = kind_of(latom)
1918 rik(1) = dcnum(jatom)%rik(1, i)
1919 rik(2) = dcnum(jatom)%rik(2, i)
1920 rik(3) = dcnum(jatom)%rik(3, i)
1921 drk = sqrt(rik(1)*rik(1) + rik(2)*rik(2) + rik(3)*rik(3))
1922 fdik(:) = -de922*dcnum(jatom)%dvals(i)*rik(:)/drk
1923 atom_d = atom_of_kind(latom)
1924 force(jkind)%dispersion(:, atom_b) = force(jkind)%dispersion(:, atom_b) - fdik(:)
1925 force(lkind)%dispersion(:, atom_d) = force(lkind)%dispersion(:, atom_d) + fdik(:)
1926 IF (use_virial)
THEN
1927 CALL virial_pair_force(pv_virial_thread, -1._dp, fdik, rik)
1931 de91 = 0.5_dp*e9/cc6bc
1932 de921 = de91*dcc6bcb
1933 de922 = de91*dcc6bcc
1934 DO i = 1, dcnum(jatom)%neighbors
1935 latom = dcnum(jatom)%nlist(i)
1936 lkind = kind_of(latom)
1937 rik(1) = dcnum(jatom)%rik(1, i)
1938 rik(2) = dcnum(jatom)%rik(2, i)
1939 rik(3) = dcnum(jatom)%rik(3, i)
1940 drk = sqrt(rik(1)*rik(1) + rik(2)*rik(2) + rik(3)*rik(3))
1941 fdik(:) = -de921*dcnum(jatom)%dvals(i)*rik(:)/drk
1942 atom_d = atom_of_kind(latom)
1943 force(jkind)%dispersion(:, atom_b) = force(jkind)%dispersion(:, atom_b) - fdik(:)
1944 force(lkind)%dispersion(:, atom_d) = force(lkind)%dispersion(:, atom_d) + fdik(:)
1945 IF (use_virial)
THEN
1946 CALL virial_pair_force(pv_virial_thread, -1._dp, fdik, rik)
1949 DO i = 1, dcnum(katom)%neighbors
1950 latom = dcnum(katom)%nlist(i)
1951 lkind = kind_of(latom)
1952 rik(1) = dcnum(katom)%rik(1, i)
1953 rik(2) = dcnum(katom)%rik(2, i)
1954 rik(3) = dcnum(katom)%rik(3, i)
1955 drk = sqrt(rik(1)*rik(1) + rik(2)*rik(2) + rik(3)*rik(3))
1956 fdik(:) = -de922*dcnum(katom)%dvals(i)*rik(:)/drk
1957 atom_d = atom_of_kind(latom)
1958 force(kkind)%dispersion(:, atom_c) = force(kkind)%dispersion(:, atom_c) - fdik(:)
1959 force(lkind)%dispersion(:, atom_d) = force(lkind)%dispersion(:, atom_d) + fdik(:)
1960 IF (use_virial)
THEN
1961 CALL virial_pair_force(pv_virial_thread, -1._dp, fdik, rik)
1965 de91 = 0.5_dp*e9/cc6ca
1966 de921 = de91*dcc6cac
1967 de922 = de91*dcc6caa
1968 DO i = 1, dcnum(katom)%neighbors
1969 latom = dcnum(katom)%nlist(i)
1970 lkind = kind_of(latom)
1971 rik(1) = dcnum(katom)%rik(1, i)
1972 rik(2) = dcnum(katom)%rik(2, i)
1973 rik(3) = dcnum(katom)%rik(3, i)
1974 drk = sqrt(rik(1)*rik(1) + rik(2)*rik(2) + rik(3)*rik(3))
1975 fdik(:) = -de921*dcnum(katom)%dvals(i)*rik(:)/drk
1976 atom_d = atom_of_kind(latom)
1977 force(kkind)%dispersion(:, atom_c) = force(kkind)%dispersion(:, atom_c) - fdik(:)
1978 force(lkind)%dispersion(:, atom_d) = force(lkind)%dispersion(:, atom_d) + fdik(:)
1979 IF (use_virial)
THEN
1980 CALL virial_pair_force(pv_virial_thread, -1._dp, fdik, rik)
1983 DO i = 1, dcnum(iatom)%neighbors
1984 latom = dcnum(iatom)%nlist(i)
1985 lkind = kind_of(latom)
1986 rik(1) = dcnum(iatom)%rik(1, i)
1987 rik(2) = dcnum(iatom)%rik(2, i)
1988 rik(3) = dcnum(iatom)%rik(3, i)
1989 drk = sqrt(rik(1)*rik(1) + rik(2)*rik(2) + rik(3)*rik(3))
1990 fdik(:) = -de922*dcnum(iatom)%dvals(i)*rik(:)/drk
1991 atom_d = atom_of_kind(latom)
1992 force(ikind)%dispersion(:, atom_a) = force(ikind)%dispersion(:, atom_a) - fdik(:)
1993 force(lkind)%dispersion(:, atom_d) = force(lkind)%dispersion(:, atom_d) + fdik(:)
1994 IF (use_virial)
THEN
1995 CALL virial_pair_force(pv_virial_thread, -1._dp, fdik, rik)
2013 virial%pv_virial = virial%pv_virial + pv_virial_thread
2015 CALL neighbor_list_iterator_release(nl_iterator)
2020 IF (dispersion_env%pp_type == vdw_pairpot_dftd3 .OR. &
2021 dispersion_env%pp_type == vdw_pairpot_dftd3bj)
THEN
2023 IF (dispersion_env%lrc)
THEN
2024 ALLOCATE (cnkind(nkind))
2028 CALL get_atomic_kind(atomic_kind_set(ikind), z=za)
2029 cnkind(ikind) = dispersion_env%cn(za)
2032 IF (
ASSOCIATED(dispersion_env%cnkind))
THEN
2033 DO i = 1,
SIZE(dispersion_env%cnkind)
2034 ikind = dispersion_env%cnkind(i)%kind
2035 cnkind(ikind) = dispersion_env%cnkind(i)%cnum
2039 CALL get_atomic_kind(atomic_kind_set(ikind), natom=na, z=za)
2040 CALL get_qs_kind(qs_kind_set(ikind), dispersion=disp_a, ghost=ghost_a, floating=floating_a)
2041 IF (.NOT. disp_a%defined .OR. ghost_a .OR. floating_a) cycle
2043 CALL get_atomic_kind(atomic_kind_set(jkind), natom=nb, z=zb)
2044 CALL get_qs_kind(qs_kind_set(jkind), dispersion=disp_b, ghost=ghost_b, floating=floating_b)
2045 IF (.NOT. disp_b%defined .OR. ghost_b .OR. floating_b) cycle
2046 IF (dispersion_env%nd3_exclude_pair > 0)
THEN
2047 CALL exclude_d3_kind_pair(dispersion_env%d3_exclude_pair, ikind, jkind, exclude=exclude_pair)
2048 IF (exclude_pair) cycle
2050 CALL getc6(maxc, max_elem, dispersion_env%c6ab, dispersion_env%maxci, za, zb, &
2051 cnkind(ikind), cnkind(jkind), dispersion_env%k3, cc6ab, dcc6aba, dcc6abb)
2052 elrc6 = elrc6 - s6*twopi*real(na*nb, kind=dp)*cc6ab/(3._dp*rcut**3*cell%deth)
2053 c8 = 3.0d0*cc6ab*dispersion_env%r2r4(za)*dispersion_env%r2r4(zb)
2054 elrc8 = elrc8 - s8*twopi*real(na*nb, kind=dp)*c8/(5._dp*rcut**5*cell%deth)
2055 IF (dispersion_env%doabc)
THEN
2057 CALL get_atomic_kind(atomic_kind_set(kkind), natom=nc, z=zc)
2058 CALL get_qs_kind(qs_kind_set(kkind), dispersion=disp_c, ghost=ghost_c, floating=floating_c)
2059 IF (.NOT. disp_c%defined .OR. ghost_c .OR. floating_c) cycle
2060 IF (dispersion_env%nd3_exclude_pair > 0)
THEN
2061 CALL exclude_d3_kind_pair(dispersion_env%d3_exclude_pair, ikind, jkind, kkind, exclude_pair)
2062 IF (exclude_pair) cycle
2064 CALL getc6(maxc, max_elem, dispersion_env%c6ab, dispersion_env%maxci, za, zb, &
2065 cnkind(ikind), cnkind(jkind), dispersion_env%k3, cc6ab, dcc6aba, dcc6abb)
2066 CALL getc6(maxc, max_elem, dispersion_env%c6ab, dispersion_env%maxci, zc, za, &
2067 cnkind(kkind), cnkind(ikind), dispersion_env%k3, cc6ca, dcc6aba, dcc6abb)
2068 CALL getc6(maxc, max_elem, dispersion_env%c6ab, dispersion_env%maxci, zb, zc, &
2069 cnkind(jkind), cnkind(kkind), dispersion_env%k3, cc6bc, dcc6aba, dcc6abb)
2070 c9 = -sqrt(cc6ab*cc6bc*cc6ca)
2071 elrc9 = elrc9 - s9*64._dp*twopi*real(na*nb*nc, kind=dp)*c9/(6._dp*rcut**3*cell%deth**2)
2076 IF (use_virial)
THEN
2077 IF (para_env%is_source())
THEN
2079 virial%pv_virial(i, i) = virial%pv_virial(i, i) + (elrc6 + elrc8 + 2._dp*elrc9)
2087 IF (dispersion_env%pp_type == vdw_pairpot_dftd3 .OR. &
2088 dispersion_env%pp_type == vdw_pairpot_dftd3bj)
THEN
2089 DEALLOCATE (cnumbers)
2090 IF (dispersion_env%doabc .AND. dispersion_env%c9cnst)
THEN
2091 DEALLOCATE (cnumfix)
2093 IF (calculate_forces .OR. debugall)
THEN
2095 DEALLOCATE (dcnum(iatom)%nlist, dcnum(iatom)%dvals, dcnum(iatom)%rik)
2104 CALL para_env%sum(evdw)
2105 evdw = evdw + (elrc6 + elrc8 + elrc9)
2108 IF ((dispersion_env%pp_type == vdw_pairpot_dftd3 .OR. &
2109 dispersion_env%pp_type == vdw_pairpot_dftd3bj) .AND. debugall)
THEN
2110 CALL para_env%sum(e6tot)
2111 CALL para_env%sum(e8tot)
2112 CALL para_env%sum(e9tot)
2113 CALL para_env%sum(nab)
2114 CALL para_env%sum(nabc)
2115 e6tot = e6tot + elrc6
2116 e8tot = e8tot + elrc8
2117 e9tot = e9tot + elrc9
2118 IF (unit_nr > 0)
THEN
2119 WRITE (unit_nr,
"(A,F20.0)")
" E6 vdW terms :", nab
2120 WRITE (unit_nr, *)
" E6 vdW energy [au/kcal] :", e6tot, e6tot*kcalmol
2121 WRITE (unit_nr, *)
" E8 vdW energy [au/kcal] :", e8tot, e8tot*kcalmol
2122 WRITE (unit_nr, *)
" %E8 on total vdW energy :", e8tot/evdw*100._dp
2123 WRITE (unit_nr,
"(A,F20.0)")
" E9 vdW terms :", nabc
2124 WRITE (unit_nr, *)
" E9 vdW energy [au/kcal] :", e9tot, e9tot*kcalmol
2125 WRITE (unit_nr, *)
" %E9 on total vdW energy :", e9tot/evdw*100._dp
2126 IF (dispersion_env%lrc)
THEN
2127 WRITE (unit_nr, *)
" E LRC C6 [au/kcal] :", elrc6, elrc6*kcalmol
2128 WRITE (unit_nr, *)
" E LRC C8 [au/kcal] :", elrc8, elrc8*kcalmol
2129 WRITE (unit_nr, *)
" E LRC C9 [au/kcal] :", elrc9, elrc9*kcalmol
2133 IF (unit_nr > 0)
THEN
2134 WRITE (unit_nr, *)
" Total vdW energy [au] :", evdw
2135 WRITE (unit_nr, *)
" Total vdW energy [kcal] :", evdw*kcalmol
2138 IF (calculate_forces .AND. debugall)
THEN
2139 IF (unit_nr > 0)
THEN
2140 WRITE (unit_nr, *)
" Dispersion Forces "
2141 WRITE (unit_nr, *)
" Atom Kind Forces "
2145 ikind = kind_of(iatom)
2146 atom_a = atom_of_kind(iatom)
2147 fdij(1:3) = force(ikind)%dispersion(:, atom_a)
2148 CALL para_env%sum(fdij)
2149 gnorm = gnorm + sum(abs(fdij))
2150 IF (unit_nr > 0)
WRITE (unit_nr,
"(i5,i7,3F20.14)") iatom, ikind, fdij
2152 IF (unit_nr > 0)
THEN
2154 WRITE (unit_nr, *)
"|G| = ", gnorm
2157 IF (use_virial)
THEN
2158 dvirial = virial%pv_virial - dvirial
2159 CALL para_env%sum(dvirial)
2160 IF (unit_nr > 0)
THEN
2161 WRITE (unit_nr, *)
"Stress Tensor (dispersion)"
2162 WRITE (unit_nr,
"(3G20.12)") dvirial
2163 WRITE (unit_nr, *)
" Tr(P)/3 : ", (dvirial(1, 1) + dvirial(2, 2) + dvirial(3, 3))/3._dp
2169 DEALLOCATE (dodisp, ghost, floating, atomnumber, rcpbc, radd2, c6d2)
2172 DEALLOCATE (atom2mol)
2175 IF (calculate_forces .AND. use_virial)
THEN
2176 virial%pv_vdw = virial%pv_vdw + (virial%pv_virial - pv_loc)
2179 IF (
ASSOCIATED(dispersion_env%dftd_section))
THEN
2180 CALL cp_print_key_finished_output(unit_nr, logger, dispersion_env%dftd_section,
"PRINT_DFTD")
2183 CALL timestop(handle)
2193 FUNCTION cellhash(cell, ncell)
RESULT(hash)
2194 INTEGER,
DIMENSION(3),
INTENT(IN) :: cell, ncell
2197 INTEGER :: ix, iy, iz, nx, ny, nz
2199 cpassert(all(abs(cell) <= ncell))
2203 ix = 2*abs(ix) - (1 + sign(1, ix))/2
2207 iy = 2*abs(iy) - (1 + sign(1, iy))/2
2211 iz = 2*abs(iz) - (1 + sign(1, iz))/2
2218 hash = ix*ny*nz + iy*nz + iz + 1
2220 END FUNCTION cellhash
2228 SUBROUTINE dftd2_param(z, c6, r, found)
2230 INTEGER,
INTENT(in) :: z
2231 REAL(kind=dp),
INTENT(inout) :: c6, r
2232 LOGICAL,
INTENT(inout) :: found
2234 REAL(kind=dp),
DIMENSION(54),
PARAMETER :: c6val = (/0.14_dp, 0.08_dp, 1.61_dp, 1.61_dp, &
2235 3.13_dp, 1.75_dp, 1.23_dp, 0.70_dp, 0.75_dp, 0.63_dp, 5.71_dp, 5.71_dp, 10.79_dp, 9.23_dp,&
2236 7.84_dp, 5.57_dp, 5.07_dp, 4.61_dp, 10.80_dp, 10.80_dp, 10.80_dp, 10.80_dp, 10.80_dp, &
2237 10.80_dp, 10.80_dp, 10.80_dp, 10.80_dp, 10.80_dp, 10.80_dp, 10.80_dp, 16.99_dp, 17.10_dp, &
2238 16.37_dp, 12.64_dp, 12.47_dp, 12.01_dp, 24.67_dp, 24.67_dp, 24.67_dp, 24.67_dp, 24.67_dp, &
2239 24.67_dp, 24.67_dp, 24.67_dp, 24.67_dp, 24.67_dp, 24.67_dp, 24.67_dp, 37.32_dp, 38.71_dp, &
2240 38.44_dp, 31.74_dp, 31.50_dp, 29.99_dp/)
2241 REAL(kind=dp),
DIMENSION(54),
PARAMETER :: rval = (/1.001_dp, 1.012_dp, 0.825_dp, 1.408_dp, &
2242 1.485_dp, 1.452_dp, 1.397_dp, 1.342_dp, 1.287_dp, 1.243_dp, 1.144_dp, 1.364_dp, 1.639_dp, &
2243 1.716_dp, 1.705_dp, 1.683_dp, 1.639_dp, 1.595_dp, 1.485_dp, 1.474_dp, 1.562_dp, 1.562_dp, &
2244 1.562_dp, 1.562_dp, 1.562_dp, 1.562_dp, 1.562_dp, 1.562_dp, 1.562_dp, 1.562_dp, 1.650_dp, &
2245 1.727_dp, 1.760_dp, 1.771_dp, 1.749_dp, 1.727_dp, 1.628_dp, 1.606_dp, 1.639_dp, 1.639_dp, &
2246 1.639_dp, 1.639_dp, 1.639_dp, 1.639_dp, 1.639_dp, 1.639_dp, 1.639_dp, 1.639_dp, 1.672_dp, &
2247 1.804_dp, 1.881_dp, 1.892_dp, 1.892_dp, 1.881_dp/)
2261 IF (z > 0 .AND. z <= 54)
THEN
2263 c6 = c6val(z)*1000._dp*bohr**6/kjmol
2269 END SUBROUTINE dftd2_param
2277 SUBROUTINE dftd3_c6_param(c6ab, maxci, filename, para_env)
2279 REAL(kind=dp),
DIMENSION(:, :, :, :, :) :: c6ab
2280 INTEGER,
DIMENSION(:) :: maxci
2281 CHARACTER(LEN=*) :: filename
2282 TYPE(mp_para_env_type),
POINTER :: para_env
2284 INTEGER :: funit, iadr, iat, jadr, jat, kk, nl, &
2286 REAL(kind=dp),
ALLOCATABLE,
DIMENSION(:) :: pars
2288 IF (para_env%is_source())
THEN
2290 CALL open_file(file_name=filename, unit_number=funit, file_form=
"FORMATTED")
2291 READ (funit, *) nl, nlines
2293 CALL para_env%bcast(nl)
2294 CALL para_env%bcast(nlines)
2296 IF (para_env%is_source())
THEN
2297 READ (funit, *) pars(1:nl)
2298 CALL close_file(unit_number=funit)
2300 CALL para_env%bcast(pars)
2307 iat = nint(pars(kk + 1))
2308 jat = nint(pars(kk + 2))
2309 CALL limit(iat, jat, iadr, jadr)
2310 maxci(iat) = max(maxci(iat), iadr)
2311 maxci(jat) = max(maxci(jat), jadr)
2312 c6ab(iat, jat, iadr, jadr, 1) = pars(kk)
2313 c6ab(iat, jat, iadr, jadr, 2) = pars(kk + 3)
2314 c6ab(iat, jat, iadr, jadr, 3) = pars(kk + 4)
2316 c6ab(jat, iat, jadr, iadr, 1) = pars(kk)
2317 c6ab(jat, iat, jadr, iadr, 2) = pars(kk + 4)
2318 c6ab(jat, iat, jadr, iadr, 3) = pars(kk + 3)
2324 END SUBROUTINE dftd3_c6_param
2333 SUBROUTINE limit(iat, jat, iadr, jadr)
2334 INTEGER :: iat, jat, iadr, jadr
2341 DO WHILE (iat .GT. 100)
2347 DO WHILE (jat .GT. 100)
2351 END SUBROUTINE limit
2359 SUBROUTINE setr0ab(rout, rcov, r2r4)
2361 REAL(kind=dp),
DIMENSION(:, :) :: rout
2362 REAL(kind=dp),
DIMENSION(:) :: rcov, r2r4
2365 REAL(kind=dp),
DIMENSION(4465) :: r0ab(4465)
2368 2.1823, 1.8547, 1.7347, 2.9086, 2.5732, 3.4956, 2.3550 &
2369 , 2.5095, 2.9802, 3.0982, 2.5141, 2.3917, 2.9977, 2.9484 &
2370 , 3.2160, 2.4492, 2.2527, 3.1933, 3.0214, 2.9531, 2.9103 &
2371 , 2.3667, 2.1328, 2.8784, 2.7660, 2.7776, 2.7063, 2.6225 &
2372 , 2.1768, 2.0625, 2.6395, 2.6648, 2.6482, 2.5697, 2.4846 &
2373 , 2.4817, 2.0646, 1.9891, 2.5086, 2.6908, 2.6233, 2.4770 &
2374 , 2.3885, 2.3511, 2.2996, 1.9892, 1.9251, 2.4190, 2.5473 &
2375 , 2.4994, 2.4091, 2.3176, 2.2571, 2.1946, 2.1374, 2.9898 &
2376 , 2.6397, 3.6031, 3.1219, 3.7620, 3.2485, 2.9357, 2.7093 &
2377 , 2.5781, 2.4839, 3.7082, 2.5129, 2.7321, 3.1052, 3.2962 &
2380 3.1331, 3.2000, 2.9586, 3.0822, 2.8582, 2.7120, 3.2570 &
2381 , 3.4839, 2.8766, 2.7427, 3.2776, 3.2363, 3.5929, 3.2826 &
2382 , 3.0911, 2.9369, 2.9030, 2.7789, 3.3921, 3.3970, 4.0106 &
2383 , 2.8884, 2.6605, 3.7513, 3.1613, 3.3605, 3.3325, 3.0991 &
2384 , 2.9297, 2.8674, 2.7571, 3.8129, 3.3266, 3.7105, 3.7917 &
2385 , 2.8304, 2.5538, 3.3932, 3.1193, 3.1866, 3.1245, 3.0465 &
2386 , 2.8727, 2.7664, 2.6926, 3.4608, 3.2984, 3.5142, 3.5418 &
2387 , 3.5017, 2.6190, 2.4797, 3.1331, 3.0540, 3.0651, 2.9879 &
2388 , 2.9054, 2.8805, 2.7330, 2.6331, 3.2096, 3.5668, 3.3684 &
2389 , 3.3686, 3.3180, 3.3107, 2.4757, 2.4019, 2.9789, 3.1468 &
2391 r0ab(141:210) = (/ &
2392 2.9768, 2.8848, 2.7952, 2.7457, 2.6881, 2.5728, 3.0574 &
2393 , 3.3264, 3.3562, 3.2529, 3.1916, 3.1523, 3.1046, 2.3725 &
2394 , 2.3289, 2.8760, 2.9804, 2.9093, 2.8040, 2.7071, 2.6386 &
2395 , 2.5720, 2.5139, 2.9517, 3.1606, 3.2085, 3.1692, 3.0982 &
2396 , 3.0352, 2.9730, 2.9148, 3.2147, 2.8315, 3.8724, 3.4621 &
2397 , 3.8823, 3.3760, 3.0746, 2.8817, 2.7552, 2.6605, 3.9740 &
2398 , 3.6192, 3.6569, 3.9586, 3.6188, 3.3917, 3.2479, 3.1434 &
2399 , 4.2411, 2.7597, 3.0588, 3.3474, 3.6214, 3.4353, 3.4729 &
2400 , 3.2487, 3.3200, 3.0914, 2.9403, 3.4972, 3.7993, 3.6773 &
2401 , 3.8678, 3.5808, 3.8243, 3.5826, 3.4156, 3.8765, 4.1035 &
2403 r0ab(211:280) = (/ &
2404 2.7361, 2.9765, 3.2475, 3.5004, 3.4185, 3.4378, 3.2084 &
2405 , 3.2787, 3.0604, 2.9187, 3.4037, 3.6759, 3.6586, 3.8327 &
2406 , 3.5372, 3.7665, 3.5310, 3.3700, 3.7788, 3.9804, 3.8903 &
2407 , 2.6832, 2.9060, 3.2613, 3.4359, 3.3538, 3.3860, 3.1550 &
2408 , 3.2300, 3.0133, 2.8736, 3.4024, 3.6142, 3.5979, 3.5295 &
2409 , 3.4834, 3.7140, 3.4782, 3.3170, 3.7434, 3.9623, 3.8181 &
2410 , 3.7642, 2.6379, 2.8494, 3.1840, 3.4225, 3.2771, 3.3401 &
2411 , 3.1072, 3.1885, 2.9714, 2.8319, 3.3315, 3.5979, 3.5256 &
2412 , 3.4980, 3.4376, 3.6714, 3.4346, 3.2723, 3.6859, 3.8985 &
2413 , 3.7918, 3.7372, 3.7211, 2.9230, 2.6223, 3.4161, 2.8999 &
2415 r0ab(281:350) = (/ &
2416 3.0557, 3.3308, 3.0555, 2.8508, 2.7385, 2.6640, 3.5263 &
2417 , 3.0277, 3.2990, 3.7721, 3.5017, 3.2751, 3.1368, 3.0435 &
2418 , 3.7873, 3.2858, 3.2140, 3.1727, 3.2178, 3.4414, 2.5490 &
2419 , 2.7623, 3.0991, 3.3252, 3.1836, 3.2428, 3.0259, 3.1225 &
2420 , 2.9032, 2.7621, 3.2490, 3.5110, 3.4429, 3.3845, 3.3574 &
2421 , 3.6045, 3.3658, 3.2013, 3.6110, 3.8241, 3.7090, 3.6496 &
2422 , 3.6333, 3.0896, 3.5462, 2.4926, 2.7136, 3.0693, 3.2699 &
2423 , 3.1272, 3.1893, 2.9658, 3.0972, 2.8778, 2.7358, 3.2206 &
2424 , 3.4566, 3.3896, 3.3257, 3.2946, 3.5693, 3.3312, 3.1670 &
2425 , 3.5805, 3.7711, 3.6536, 3.5927, 3.5775, 3.0411, 3.4885 &
2427 r0ab(351:420) = (/ &
2428 3.4421, 2.4667, 2.6709, 3.0575, 3.2357, 3.0908, 3.1537 &
2429 , 2.9235, 3.0669, 2.8476, 2.7054, 3.2064, 3.4519, 3.3593 &
2430 , 3.2921, 3.2577, 3.2161, 3.2982, 3.1339, 3.5606, 3.7582 &
2431 , 3.6432, 3.5833, 3.5691, 3.0161, 3.4812, 3.4339, 3.4327 &
2432 , 2.4515, 2.6338, 3.0511, 3.2229, 3.0630, 3.1265, 2.8909 &
2433 , 3.0253, 2.8184, 2.6764, 3.1968, 3.4114, 3.3492, 3.2691 &
2434 , 3.2320, 3.1786, 3.2680, 3.1036, 3.5453, 3.7259, 3.6090 &
2435 , 3.5473, 3.5327, 3.0018, 3.4413, 3.3907, 3.3593, 3.3462 &
2436 , 2.4413, 2.6006, 3.0540, 3.1987, 3.0490, 3.1058, 2.8643 &
2437 , 2.9948, 2.7908, 2.6491, 3.1950, 3.3922, 3.3316, 3.2585 &
2439 r0ab(421:490) = (/ &
2440 3.2136, 3.1516, 3.2364, 3.0752, 3.5368, 3.7117, 3.5941 &
2441 , 3.5313, 3.5164, 2.9962, 3.4225, 3.3699, 3.3370, 3.3234 &
2442 , 3.3008, 2.4318, 2.5729, 3.0416, 3.1639, 3.0196, 3.0843 &
2443 , 2.8413, 2.7436, 2.7608, 2.6271, 3.1811, 3.3591, 3.3045 &
2444 , 3.2349, 3.1942, 3.1291, 3.2111, 3.0534, 3.5189, 3.6809 &
2445 , 3.5635, 3.5001, 3.4854, 2.9857, 3.3897, 3.3363, 3.3027 &
2446 , 3.2890, 3.2655, 3.2309, 2.8502, 2.6934, 3.2467, 3.1921 &
2447 , 3.5663, 3.2541, 3.0571, 2.9048, 2.8657, 2.7438, 3.3547 &
2448 , 3.3510, 3.9837, 3.6871, 3.4862, 3.3389, 3.2413, 3.1708 &
2449 , 3.6096, 3.6280, 3.6860, 3.5568, 3.4836, 3.2868, 3.3994 &
2451 r0ab(491:560) = (/ &
2452 3.3476, 3.3170, 3.2950, 3.2874, 3.2606, 3.9579, 2.9226 &
2453 , 2.6838, 3.7867, 3.1732, 3.3872, 3.3643, 3.1267, 2.9541 &
2454 , 2.8505, 2.7781, 3.8475, 3.3336, 3.7359, 3.8266, 3.5733 &
2455 , 3.3959, 3.2775, 3.1915, 3.9878, 3.8816, 3.5810, 3.5364 &
2456 , 3.5060, 3.8097, 3.3925, 3.3348, 3.3019, 3.2796, 3.2662 &
2457 , 3.2464, 3.7136, 3.8619, 2.9140, 2.6271, 3.4771, 3.1774 &
2458 , 3.2560, 3.1970, 3.1207, 2.9406, 2.8322, 2.7571, 3.5455 &
2459 , 3.3514, 3.5837, 3.6177, 3.5816, 3.3902, 3.2604, 3.1652 &
2460 , 3.7037, 3.6283, 3.5858, 3.5330, 3.4884, 3.5789, 3.4094 &
2461 , 3.3473, 3.3118, 3.2876, 3.2707, 3.2521, 3.5570, 3.6496 &
2463 r0ab(561:630) = (/ &
2464 3.6625, 2.7300, 2.5870, 3.2471, 3.1487, 3.1667, 3.0914 &
2465 , 3.0107, 2.9812, 2.8300, 2.7284, 3.3259, 3.3182, 3.4707 &
2466 , 3.4748, 3.4279, 3.4182, 3.2547, 3.1353, 3.5116, 3.9432 &
2467 , 3.8828, 3.8303, 3.7880, 3.3760, 3.7218, 3.3408, 3.3059 &
2468 , 3.2698, 3.2446, 3.2229, 3.4422, 3.5023, 3.5009, 3.5268 &
2469 , 2.6026, 2.5355, 3.1129, 3.2863, 3.1029, 3.0108, 2.9227 &
2470 , 2.8694, 2.8109, 2.6929, 3.1958, 3.4670, 3.4018, 3.3805 &
2471 , 3.3218, 3.2815, 3.2346, 3.0994, 3.3937, 3.7266, 3.6697 &
2472 , 3.6164, 3.5730, 3.2522, 3.5051, 3.4686, 3.4355, 3.4084 &
2473 , 3.3748, 3.3496, 3.3692, 3.4052, 3.3910, 3.3849, 3.3662 &
2475 r0ab(631:700) = (/ &
2476 2.5087, 2.4814, 3.0239, 3.1312, 3.0535, 2.9457, 2.8496 &
2477 , 2.7780, 2.7828, 2.6532, 3.1063, 3.3143, 3.3549, 3.3120 &
2478 , 3.2421, 3.1787, 3.1176, 3.0613, 3.3082, 3.5755, 3.5222 &
2479 , 3.4678, 3.4231, 3.1684, 3.3528, 3.3162, 3.2827, 3.2527 &
2480 , 3.2308, 3.2029, 3.3173, 3.3343, 3.3092, 3.2795, 3.2452 &
2481 , 3.2096, 3.2893, 2.8991, 4.0388, 3.6100, 3.9388, 3.4475 &
2482 , 3.1590, 2.9812, 2.8586, 2.7683, 4.1428, 3.7911, 3.8225 &
2483 , 4.0372, 3.7059, 3.4935, 3.3529, 3.2492, 4.4352, 4.0826 &
2484 , 3.9733, 3.9254, 3.8646, 3.9315, 3.7837, 3.7465, 3.7211 &
2485 , 3.7012, 3.6893, 3.6676, 3.7736, 4.0660, 3.7926, 3.6158 &
2487 r0ab(701:770) = (/ &
2488 3.5017, 3.4166, 4.6176, 2.8786, 3.1658, 3.5823, 3.7689 &
2489 , 3.5762, 3.5789, 3.3552, 3.4004, 3.1722, 3.0212, 3.7241 &
2490 , 3.9604, 3.8500, 3.9844, 3.7035, 3.9161, 3.6751, 3.5075 &
2491 , 4.1151, 4.2877, 4.1579, 4.1247, 4.0617, 3.4874, 3.9848 &
2492 , 3.9280, 3.9079, 3.8751, 3.8604, 3.8277, 3.8002, 3.9981 &
2493 , 3.7544, 4.0371, 3.8225, 3.6718, 4.3092, 4.4764, 2.8997 &
2494 , 3.0953, 3.4524, 3.6107, 3.6062, 3.5783, 3.3463, 3.3855 &
2495 , 3.1746, 3.0381, 3.6019, 3.7938, 3.8697, 3.9781, 3.6877 &
2496 , 3.8736, 3.6451, 3.4890, 3.9858, 4.1179, 4.0430, 3.9563 &
2497 , 3.9182, 3.4002, 3.8310, 3.7716, 3.7543, 3.7203, 3.7053 &
2499 r0ab(771:840) = (/ &
2500 3.6742, 3.8318, 3.7631, 3.7392, 3.9892, 3.7832, 3.6406 &
2501 , 4.1701, 4.3016, 4.2196, 2.8535, 3.0167, 3.3978, 3.5363 &
2502 , 3.5393, 3.5301, 3.2960, 3.3352, 3.1287, 2.9967, 3.6659 &
2503 , 3.7239, 3.8070, 3.7165, 3.6368, 3.8162, 3.5885, 3.4336 &
2504 , 3.9829, 4.0529, 3.9584, 3.9025, 3.8607, 3.3673, 3.7658 &
2505 , 3.7035, 3.6866, 3.6504, 3.6339, 3.6024, 3.7708, 3.7283 &
2506 , 3.6896, 3.9315, 3.7250, 3.5819, 4.1457, 4.2280, 4.1130 &
2507 , 4.0597, 3.0905, 2.7998, 3.6448, 3.0739, 3.2996, 3.5262 &
2508 , 3.2559, 3.0518, 2.9394, 2.8658, 3.7514, 3.2295, 3.5643 &
2509 , 3.7808, 3.6931, 3.4723, 3.3357, 3.2429, 4.0280, 3.5589 &
2511 r0ab(841:910) = (/ &
2512 3.4636, 3.4994, 3.4309, 3.6177, 3.2946, 3.2376, 3.2050 &
2513 , 3.1847, 3.1715, 3.1599, 3.5555, 3.8111, 3.7693, 3.5718 &
2514 , 3.4498, 3.3662, 4.1608, 3.7417, 3.6536, 3.6154, 3.8596 &
2515 , 3.0301, 2.7312, 3.5821, 3.0473, 3.2137, 3.4679, 3.1975 &
2516 , 2.9969, 2.8847, 2.8110, 3.6931, 3.2076, 3.4943, 3.5956 &
2517 , 3.6379, 3.4190, 3.2808, 3.1860, 3.9850, 3.5105, 3.4330 &
2518 , 3.3797, 3.4155, 3.6033, 3.2737, 3.2145, 3.1807, 3.1596 &
2519 , 3.1461, 3.1337, 3.4812, 3.6251, 3.7152, 3.5201, 3.3966 &
2520 , 3.3107, 4.1128, 3.6899, 3.6082, 3.5604, 3.7834, 3.7543 &
2521 , 2.9189, 2.6777, 3.4925, 2.9648, 3.1216, 3.2940, 3.0975 &
2523 r0ab(911:980) = (/ &
2524 2.9757, 2.8493, 2.7638, 3.6085, 3.1214, 3.4006, 3.4793 &
2525 , 3.5147, 3.3806, 3.2356, 3.1335, 3.9144, 3.4183, 3.3369 &
2526 , 3.2803, 3.2679, 3.4871, 3.1714, 3.1521, 3.1101, 3.0843 &
2527 , 3.0670, 3.0539, 3.3890, 3.5086, 3.5895, 3.4783, 3.3484 &
2528 , 3.2559, 4.0422, 3.5967, 3.5113, 3.4576, 3.6594, 3.6313 &
2529 , 3.5690, 2.8578, 2.6334, 3.4673, 2.9245, 3.0732, 3.2435 &
2530 , 3.0338, 2.9462, 2.8143, 2.7240, 3.5832, 3.0789, 3.3617 &
2531 , 3.4246, 3.4505, 3.3443, 3.1964, 3.0913, 3.8921, 3.3713 &
2532 , 3.2873, 3.2281, 3.2165, 3.4386, 3.1164, 3.1220, 3.0761 &
2533 , 3.0480, 3.0295, 3.0155, 3.3495, 3.4543, 3.5260, 3.4413 &
2535 r0ab(981:1050) = (/ &
2536 3.3085, 3.2134, 4.0170, 3.5464, 3.4587, 3.4006, 3.6027 &
2537 , 3.5730, 3.4945, 3.4623, 2.8240, 2.5960, 3.4635, 2.9032 &
2538 , 3.0431, 3.2115, 2.9892, 2.9148, 2.7801, 2.6873, 3.5776 &
2539 , 3.0568, 3.3433, 3.3949, 3.4132, 3.3116, 3.1616, 3.0548 &
2540 , 3.8859, 3.3719, 3.2917, 3.2345, 3.2274, 3.4171, 3.1293 &
2541 , 3.0567, 3.0565, 3.0274, 3.0087, 2.9939, 3.3293, 3.4249 &
2542 , 3.4902, 3.4091, 3.2744, 3.1776, 4.0078, 3.5374, 3.4537 &
2543 , 3.3956, 3.5747, 3.5430, 3.4522, 3.4160, 3.3975, 2.8004 &
2544 , 2.5621, 3.4617, 2.9154, 3.0203, 3.1875, 2.9548, 2.8038 &
2545 , 2.7472, 2.6530, 3.5736, 3.0584, 3.3304, 3.3748, 3.3871 &
2547 r0ab(1051:1120) = (/ &
2548 3.2028, 3.1296, 3.0214, 3.8796, 3.3337, 3.2492, 3.1883 &
2549 , 3.1802, 3.4050, 3.0756, 3.0478, 3.0322, 3.0323, 3.0163 &
2550 , 3.0019, 3.3145, 3.4050, 3.4656, 3.3021, 3.2433, 3.1453 &
2551 , 3.9991, 3.5017, 3.4141, 3.3520, 3.5583, 3.5251, 3.4243 &
2552 , 3.3851, 3.3662, 3.3525, 2.7846, 2.5324, 3.4652, 2.8759 &
2553 , 3.0051, 3.1692, 2.9273, 2.7615, 2.7164, 2.6212, 3.5744 &
2554 , 3.0275, 3.3249, 3.3627, 3.3686, 3.1669, 3.0584, 2.9915 &
2555 , 3.8773, 3.3099, 3.2231, 3.1600, 3.1520, 3.4023, 3.0426 &
2556 , 3.0099, 2.9920, 2.9809, 2.9800, 2.9646, 3.3068, 3.3930 &
2557 , 3.4486, 3.2682, 3.1729, 3.1168, 3.9952, 3.4796, 3.3901 &
2559 r0ab(1121:1190) = (/ &
2560 3.3255, 3.5530, 3.5183, 3.4097, 3.3683, 3.3492, 3.3360 &
2561 , 3.3308, 2.5424, 2.6601, 3.2555, 3.2807, 3.1384, 3.1737 &
2562 , 2.9397, 2.8429, 2.8492, 2.7225, 3.3875, 3.4910, 3.4520 &
2563 , 3.3608, 3.3036, 3.2345, 3.2999, 3.1487, 3.7409, 3.8392 &
2564 , 3.7148, 3.6439, 3.6182, 3.1753, 3.5210, 3.4639, 3.4265 &
2565 , 3.4075, 3.3828, 3.3474, 3.4071, 3.3754, 3.3646, 3.3308 &
2566 , 3.4393, 3.2993, 3.8768, 3.9891, 3.8310, 3.7483, 3.3417 &
2567 , 3.3019, 3.2250, 3.1832, 3.1578, 3.1564, 3.1224, 3.4620 &
2568 , 2.9743, 2.8058, 3.4830, 3.3474, 3.6863, 3.3617, 3.1608 &
2569 , 3.0069, 2.9640, 2.8427, 3.5885, 3.5219, 4.1314, 3.8120 &
2571 r0ab(1191:1260) = (/ &
2572 3.6015, 3.4502, 3.3498, 3.2777, 3.8635, 3.8232, 3.8486 &
2573 , 3.7215, 3.6487, 3.4724, 3.5627, 3.5087, 3.4757, 3.4517 &
2574 , 3.4423, 3.4139, 4.1028, 3.8388, 3.6745, 3.5562, 3.4806 &
2575 , 3.4272, 4.0182, 3.9991, 4.0007, 3.9282, 3.7238, 3.6498 &
2576 , 3.5605, 3.5211, 3.5009, 3.4859, 3.4785, 3.5621, 4.2623 &
2577 , 3.0775, 2.8275, 4.0181, 3.3385, 3.5379, 3.5036, 3.2589 &
2578 , 3.0804, 3.0094, 2.9003, 4.0869, 3.5088, 3.9105, 3.9833 &
2579 , 3.7176, 3.5323, 3.4102, 3.3227, 4.2702, 4.0888, 3.7560 &
2580 , 3.7687, 3.6681, 3.6405, 3.5569, 3.4990, 3.4659, 3.4433 &
2581 , 3.4330, 3.4092, 3.8867, 4.0190, 3.7961, 3.6412, 3.5405 &
2583 r0ab(1261:1330) = (/ &
2584 3.4681, 4.3538, 4.2136, 3.9381, 3.8912, 3.9681, 3.7909 &
2585 , 3.6774, 3.6262, 3.5999, 3.5823, 3.5727, 3.5419, 4.0245 &
2586 , 4.1874, 3.0893, 2.7917, 3.7262, 3.3518, 3.4241, 3.5433 &
2587 , 3.2773, 3.0890, 2.9775, 2.9010, 3.8048, 3.5362, 3.7746 &
2588 , 3.7911, 3.7511, 3.5495, 3.4149, 3.3177, 4.0129, 3.8370 &
2589 , 3.7739, 3.7125, 3.7152, 3.7701, 3.5813, 3.5187, 3.4835 &
2590 , 3.4595, 3.4439, 3.4242, 3.7476, 3.8239, 3.8346, 3.6627 &
2591 , 3.5479, 3.4639, 4.1026, 3.9733, 3.9292, 3.8667, 3.9513 &
2592 , 3.8959, 3.7698, 3.7089, 3.6765, 3.6548, 3.6409, 3.5398 &
2593 , 3.8759, 3.9804, 4.0150, 2.9091, 2.7638, 3.5066, 3.3377 &
2595 r0ab(1331:1400) = (/ &
2596 3.3481, 3.2633, 3.1810, 3.1428, 2.9872, 2.8837, 3.5929 &
2597 , 3.5183, 3.6729, 3.6596, 3.6082, 3.5927, 3.4224, 3.2997 &
2598 , 3.8190, 4.1865, 4.1114, 4.0540, 3.6325, 3.5697, 3.5561 &
2599 , 3.5259, 3.4901, 3.4552, 3.4315, 3.4091, 3.6438, 3.6879 &
2600 , 3.6832, 3.7043, 3.5557, 3.4466, 3.9203, 4.2919, 4.2196 &
2601 , 4.1542, 3.7573, 3.7039, 3.6546, 3.6151, 3.5293, 3.4849 &
2602 , 3.4552, 3.5192, 3.7673, 3.8359, 3.8525, 3.8901, 2.7806 &
2603 , 2.7209, 3.3812, 3.4958, 3.2913, 3.1888, 3.0990, 3.0394 &
2604 , 2.9789, 2.8582, 3.4716, 3.6883, 3.6105, 3.5704, 3.5059 &
2605 , 3.4619, 3.4138, 3.2742, 3.7080, 3.9773, 3.9010, 3.8409 &
2607 r0ab(1401:1470) = (/ &
2608 3.7944, 3.4465, 3.7235, 3.6808, 3.6453, 3.6168, 3.5844 &
2609 , 3.5576, 3.5772, 3.5959, 3.5768, 3.5678, 3.5486, 3.4228 &
2610 , 3.8107, 4.0866, 4.0169, 3.9476, 3.6358, 3.5800, 3.5260 &
2611 , 3.4838, 3.4501, 3.4204, 3.3553, 3.6487, 3.6973, 3.7398 &
2612 , 3.7405, 3.7459, 3.7380, 2.6848, 2.6740, 3.2925, 3.3386 &
2613 , 3.2473, 3.1284, 3.0301, 2.9531, 2.9602, 2.8272, 3.3830 &
2614 , 3.5358, 3.5672, 3.5049, 3.4284, 3.3621, 3.3001, 3.2451 &
2615 , 3.6209, 3.8299, 3.7543, 3.6920, 3.6436, 3.3598, 3.5701 &
2616 , 3.5266, 3.4904, 3.4590, 3.4364, 3.4077, 3.5287, 3.5280 &
2617 , 3.4969, 3.4650, 3.4304, 3.3963, 3.7229, 3.9402, 3.8753 &
2619 r0ab(1471:1540) = (/ &
2620 3.8035, 3.5499, 3.4913, 3.4319, 3.3873, 3.3520, 3.3209 &
2621 , 3.2948, 3.5052, 3.6465, 3.6696, 3.6577, 3.6388, 3.6142 &
2622 , 3.5889, 3.3968, 3.0122, 4.2241, 3.7887, 4.0049, 3.5384 &
2623 , 3.2698, 3.1083, 2.9917, 2.9057, 4.3340, 3.9900, 4.6588 &
2624 , 4.1278, 3.8125, 3.6189, 3.4851, 3.3859, 4.6531, 4.3134 &
2625 , 4.2258, 4.1309, 4.0692, 4.0944, 3.9850, 3.9416, 3.9112 &
2626 , 3.8873, 3.8736, 3.8473, 4.6027, 4.1538, 3.8994, 3.7419 &
2627 , 3.6356, 3.5548, 4.8353, 4.5413, 4.3891, 4.3416, 4.3243 &
2628 , 4.2753, 4.2053, 4.1790, 4.1685, 4.1585, 4.1536, 4.0579 &
2629 , 4.1980, 4.4564, 4.2192, 4.0528, 3.9489, 3.8642, 5.0567 &
2631 r0ab(1541:1610) = (/ &
2632 3.0630, 3.3271, 4.0432, 4.0046, 4.1555, 3.7426, 3.5130 &
2633 , 3.5174, 3.2884, 3.1378, 4.1894, 4.2321, 4.1725, 4.1833 &
2634 , 3.8929, 4.0544, 3.8118, 3.6414, 4.6373, 4.6268, 4.4750 &
2635 , 4.4134, 4.3458, 3.8582, 4.2583, 4.1898, 4.1562, 4.1191 &
2636 , 4.1069, 4.0639, 4.1257, 4.1974, 3.9532, 4.1794, 3.9660 &
2637 , 3.8130, 4.8160, 4.8272, 4.6294, 4.5840, 4.0770, 4.0088 &
2638 , 3.9103, 3.8536, 3.8324, 3.7995, 3.7826, 4.2294, 4.3380 &
2639 , 4.4352, 4.1933, 4.4580, 4.2554, 4.1072, 5.0454, 5.1814 &
2640 , 3.0632, 3.2662, 3.6432, 3.8088, 3.7910, 3.7381, 3.5093 &
2641 , 3.5155, 3.3047, 3.1681, 3.7871, 3.9924, 4.0637, 4.1382 &
2643 r0ab(1611:1680) = (/ &
2644 3.8591, 4.0164, 3.7878, 3.6316, 4.1741, 4.3166, 4.2395 &
2645 , 4.1831, 4.1107, 3.5857, 4.0270, 3.9676, 3.9463, 3.9150 &
2646 , 3.9021, 3.8708, 4.0240, 4.1551, 3.9108, 4.1337, 3.9289 &
2647 , 3.7873, 4.3666, 4.5080, 4.4232, 4.3155, 3.8461, 3.8007 &
2648 , 3.6991, 3.6447, 3.6308, 3.5959, 3.5749, 4.0359, 4.3124 &
2649 , 4.3539, 4.1122, 4.3772, 4.1785, 4.0386, 4.7004, 4.8604 &
2650 , 4.6261, 2.9455, 3.2470, 3.6108, 3.8522, 3.6625, 3.6598 &
2651 , 3.4411, 3.4660, 3.2415, 3.0944, 3.7514, 4.0397, 3.9231 &
2652 , 4.0561, 3.7860, 3.9845, 3.7454, 3.5802, 4.1366, 4.3581 &
2653 , 4.2351, 4.2011, 4.1402, 3.5381, 4.0653, 4.0093, 3.9883 &
2655 r0ab(1681:1750) = (/ &
2656 3.9570, 3.9429, 3.9112, 3.8728, 4.0682, 3.8351, 4.1054 &
2657 , 3.8928, 3.7445, 4.3415, 4.5497, 4.3833, 4.3122, 3.8051 &
2658 , 3.7583, 3.6622, 3.6108, 3.5971, 3.5628, 3.5408, 4.0780 &
2659 , 4.0727, 4.2836, 4.0553, 4.3647, 4.1622, 4.0178, 4.5802 &
2660 , 4.9125, 4.5861, 4.6201, 2.9244, 3.2241, 3.5848, 3.8293 &
2661 , 3.6395, 3.6400, 3.4204, 3.4499, 3.2253, 3.0779, 3.7257 &
2662 , 4.0170, 3.9003, 4.0372, 3.7653, 3.9672, 3.7283, 3.5630 &
2663 , 4.1092, 4.3347, 4.2117, 4.1793, 4.1179, 3.5139, 4.0426 &
2664 , 3.9867, 3.9661, 3.9345, 3.9200, 3.8883, 3.8498, 4.0496 &
2665 , 3.8145, 4.0881, 3.8756, 3.7271, 4.3128, 4.5242, 4.3578 &
2667 r0ab(1751:1820) = (/ &
2668 4.2870, 3.7796, 3.7318, 3.6364, 3.5854, 3.5726, 3.5378 &
2669 , 3.5155, 4.0527, 4.0478, 4.2630, 4.0322, 4.3449, 4.1421 &
2670 , 3.9975, 4.5499, 4.8825, 4.5601, 4.5950, 4.5702, 2.9046 &
2671 , 3.2044, 3.5621, 3.8078, 3.6185, 3.6220, 3.4019, 3.4359 &
2672 , 3.2110, 3.0635, 3.7037, 3.9958, 3.8792, 4.0194, 3.7460 &
2673 , 3.9517, 3.7128, 3.5474, 4.0872, 4.3138, 4.1906, 4.1593 &
2674 , 4.0973, 3.4919, 4.0216, 3.9657, 3.9454, 3.9134, 3.8986 &
2675 , 3.8669, 3.8289, 4.0323, 3.7954, 4.0725, 3.8598, 3.7113 &
2676 , 4.2896, 4.5021, 4.3325, 4.2645, 3.7571, 3.7083, 3.6136 &
2677 , 3.5628, 3.5507, 3.5155, 3.4929, 4.0297, 4.0234, 4.2442 &
2679 r0ab(1821:1890) = (/ &
2680 4.0112, 4.3274, 4.1240, 3.9793, 4.5257, 4.8568, 4.5353 &
2681 , 4.5733, 4.5485, 4.5271, 2.8878, 3.1890, 3.5412, 3.7908 &
2682 , 3.5974, 3.6078, 3.3871, 3.4243, 3.1992, 3.0513, 3.6831 &
2683 , 3.9784, 3.8579, 4.0049, 3.7304, 3.9392, 3.7002, 3.5347 &
2684 , 4.0657, 4.2955, 4.1705, 4.1424, 4.0800, 3.4717, 4.0043 &
2685 , 3.9485, 3.9286, 3.8965, 3.8815, 3.8500, 3.8073, 4.0180 &
2686 , 3.7796, 4.0598, 3.8470, 3.6983, 4.2678, 4.4830, 4.3132 &
2687 , 4.2444, 3.7370, 3.6876, 3.5935, 3.5428, 3.5314, 3.4958 &
2688 , 3.4730, 4.0117, 4.0043, 4.2287, 3.9939, 4.3134, 4.1096 &
2689 , 3.9646, 4.5032, 4.8356, 4.5156, 4.5544, 4.5297, 4.5083 &
2691 r0ab(1891:1960) = (/ &
2692 4.4896, 2.8709, 3.1737, 3.5199, 3.7734, 3.5802, 3.5934 &
2693 , 3.3724, 3.4128, 3.1877, 3.0396, 3.6624, 3.9608, 3.8397 &
2694 , 3.9893, 3.7145, 3.9266, 3.6877, 3.5222, 4.0448, 4.2771 &
2695 , 4.1523, 4.1247, 4.0626, 3.4530, 3.9866, 3.9310, 3.9115 &
2696 , 3.8792, 3.8641, 3.8326, 3.7892, 4.0025, 3.7636, 4.0471 &
2697 , 3.8343, 3.6854, 4.2464, 4.4635, 4.2939, 4.2252, 3.7169 &
2698 , 3.6675, 3.5739, 3.5235, 3.5126, 3.4768, 3.4537, 3.9932 &
2699 , 3.9854, 4.2123, 3.9765, 4.2992, 4.0951, 3.9500, 4.4811 &
2700 , 4.8135, 4.4959, 4.5351, 4.5105, 4.4891, 4.4705, 4.4515 &
2701 , 2.8568, 3.1608, 3.5050, 3.7598, 3.5665, 3.5803, 3.3601 &
2703 r0ab(1961:2030) = (/ &
2704 3.4031, 3.1779, 3.0296, 3.6479, 3.9471, 3.8262, 3.9773 &
2705 , 3.7015, 3.9162, 3.6771, 3.5115, 4.0306, 4.2634, 4.1385 &
2706 , 4.1116, 4.0489, 3.4366, 3.9732, 3.9176, 3.8983, 3.8659 &
2707 , 3.8507, 3.8191, 3.7757, 3.9907, 3.7506, 4.0365, 3.8235 &
2708 , 3.6745, 4.2314, 4.4490, 4.2792, 4.2105, 3.7003, 3.6510 &
2709 , 3.5578, 3.5075, 3.4971, 3.4609, 3.4377, 3.9788, 3.9712 &
2710 , 4.1997, 3.9624, 4.2877, 4.0831, 3.9378, 4.4655, 4.7974 &
2711 , 4.4813, 4.5209, 4.4964, 4.4750, 4.4565, 4.4375, 4.4234 &
2712 , 2.6798, 3.0151, 3.2586, 3.5292, 3.5391, 3.4902, 3.2887 &
2713 , 3.3322, 3.1228, 2.9888, 3.4012, 3.7145, 3.7830, 3.6665 &
2715 r0ab(2031:2100) = (/ &
2716 3.5898, 3.8077, 3.5810, 3.4265, 3.7726, 4.0307, 3.9763 &
2717 , 3.8890, 3.8489, 3.2706, 3.7595, 3.6984, 3.6772, 3.6428 &
2718 , 3.6243, 3.5951, 3.7497, 3.6775, 3.6364, 3.9203, 3.7157 &
2719 , 3.5746, 3.9494, 4.2076, 4.1563, 4.0508, 3.5329, 3.4780 &
2720 , 3.3731, 3.3126, 3.2846, 3.2426, 3.2135, 3.7491, 3.9006 &
2721 , 3.8332, 3.8029, 4.1436, 3.9407, 3.7998, 4.1663, 4.5309 &
2722 , 4.3481, 4.2911, 4.2671, 4.2415, 4.2230, 4.2047, 4.1908 &
2723 , 4.1243, 2.5189, 2.9703, 3.3063, 3.6235, 3.4517, 3.3989 &
2724 , 3.2107, 3.2434, 3.0094, 2.8580, 3.4253, 3.8157, 3.7258 &
2725 , 3.6132, 3.5297, 3.7566, 3.5095, 3.3368, 3.7890, 4.1298 &
2727 r0ab(2101:2170) = (/ &
2728 4.0190, 3.9573, 3.9237, 3.2677, 3.8480, 3.8157, 3.7656 &
2729 , 3.7317, 3.7126, 3.6814, 3.6793, 3.6218, 3.5788, 3.8763 &
2730 , 3.6572, 3.5022, 3.9737, 4.3255, 4.1828, 4.1158, 3.5078 &
2731 , 3.4595, 3.3600, 3.3088, 3.2575, 3.2164, 3.1856, 3.8522 &
2732 , 3.8665, 3.8075, 3.7772, 4.1391, 3.9296, 3.7772, 4.2134 &
2733 , 4.7308, 4.3787, 4.3894, 4.3649, 4.3441, 4.3257, 4.3073 &
2734 , 4.2941, 4.1252, 4.2427, 3.0481, 2.9584, 3.6919, 3.5990 &
2735 , 3.8881, 3.4209, 3.1606, 3.1938, 2.9975, 2.8646, 3.8138 &
2736 , 3.7935, 3.7081, 3.9155, 3.5910, 3.4808, 3.4886, 3.3397 &
2737 , 4.1336, 4.1122, 3.9888, 3.9543, 3.8917, 3.5894, 3.8131 &
2739 r0ab(2171:2240) = (/ &
2740 3.7635, 3.7419, 3.7071, 3.6880, 3.6574, 3.6546, 3.9375 &
2741 , 3.6579, 3.5870, 3.6361, 3.5039, 4.3149, 4.2978, 4.1321 &
2742 , 4.1298, 3.8164, 3.7680, 3.7154, 3.6858, 3.6709, 3.6666 &
2743 , 3.6517, 3.8174, 3.8608, 4.1805, 3.9102, 3.8394, 3.8968 &
2744 , 3.7673, 4.5274, 4.6682, 4.3344, 4.3639, 4.3384, 4.3162 &
2745 , 4.2972, 4.2779, 4.2636, 4.0253, 4.1168, 4.1541, 2.8136 &
2746 , 3.0951, 3.4635, 3.6875, 3.4987, 3.5183, 3.2937, 3.3580 &
2747 , 3.1325, 2.9832, 3.6078, 3.8757, 3.7616, 3.9222, 3.6370 &
2748 , 3.8647, 3.6256, 3.4595, 3.9874, 4.1938, 4.0679, 4.0430 &
2749 , 3.9781, 3.3886, 3.9008, 3.8463, 3.8288, 3.7950, 3.7790 &
2751 r0ab(2241:2310) = (/ &
2752 3.7472, 3.7117, 3.9371, 3.6873, 3.9846, 3.7709, 3.6210 &
2753 , 4.1812, 4.3750, 4.2044, 4.1340, 3.6459, 3.5929, 3.5036 &
2754 , 3.4577, 3.4528, 3.4146, 3.3904, 3.9014, 3.9031, 4.1443 &
2755 , 3.8961, 4.2295, 4.0227, 3.8763, 4.4086, 4.7097, 4.4064 &
2756 , 4.4488, 4.4243, 4.4029, 4.3842, 4.3655, 4.3514, 4.1162 &
2757 , 4.2205, 4.1953, 4.2794, 2.8032, 3.0805, 3.4519, 3.6700 &
2758 , 3.4827, 3.5050, 3.2799, 3.3482, 3.1233, 2.9747, 3.5971 &
2759 , 3.8586, 3.7461, 3.9100, 3.6228, 3.8535, 3.6147, 3.4490 &
2760 , 3.9764, 4.1773, 4.0511, 4.0270, 3.9614, 3.3754, 3.8836 &
2761 , 3.8291, 3.8121, 3.7780, 3.7619, 3.7300, 3.6965, 3.9253 &
2763 r0ab(2311:2380) = (/ &
2764 3.6734, 3.9733, 3.7597, 3.6099, 4.1683, 4.3572, 4.1862 &
2765 , 4.1153, 3.6312, 3.5772, 3.4881, 3.4429, 3.4395, 3.4009 &
2766 , 3.3766, 3.8827, 3.8868, 4.1316, 3.8807, 4.2164, 4.0092 &
2767 , 3.8627, 4.3936, 4.6871, 4.3882, 4.4316, 4.4073, 4.3858 &
2768 , 4.3672, 4.3485, 4.3344, 4.0984, 4.2036, 4.1791, 4.2622 &
2769 , 4.2450, 2.7967, 3.0689, 3.4445, 3.6581, 3.4717, 3.4951 &
2770 , 3.2694, 3.3397, 3.1147, 2.9661, 3.5898, 3.8468, 3.7358 &
2771 , 3.9014, 3.6129, 3.8443, 3.6054, 3.4396, 3.9683, 4.1656 &
2772 , 4.0394, 4.0158, 3.9498, 3.3677, 3.8718, 3.8164, 3.8005 &
2773 , 3.7662, 3.7500, 3.7181, 3.6863, 3.9170, 3.6637, 3.9641 &
2775 r0ab(2381:2450) = (/ &
2776 3.7503, 3.6004, 4.1590, 4.3448, 4.1739, 4.1029, 3.6224 &
2777 , 3.5677, 3.4785, 3.4314, 3.4313, 3.3923, 3.3680, 3.8698 &
2778 , 3.8758, 4.1229, 3.8704, 4.2063, 3.9987, 3.8519, 4.3832 &
2779 , 4.6728, 4.3759, 4.4195, 4.3952, 4.3737, 4.3551, 4.3364 &
2780 , 4.3223, 4.0861, 4.1911, 4.1676, 4.2501, 4.2329, 4.2208 &
2781 , 2.7897, 3.0636, 3.4344, 3.6480, 3.4626, 3.4892, 3.2626 &
2782 , 3.3344, 3.1088, 2.9597, 3.5804, 3.8359, 3.7251, 3.8940 &
2783 , 3.6047, 3.8375, 3.5990, 3.4329, 3.9597, 4.1542, 4.0278 &
2784 , 4.0048, 3.9390, 3.3571, 3.8608, 3.8056, 3.7899, 3.7560 &
2785 , 3.7400, 3.7081, 3.6758, 3.9095, 3.6552, 3.9572, 3.7436 &
2787 r0ab(2451:2520) = (/ &
2788 3.5933, 4.1508, 4.3337, 4.1624, 4.0916, 3.6126, 3.5582 &
2789 , 3.4684, 3.4212, 3.4207, 3.3829, 3.3586, 3.8604, 3.8658 &
2790 , 4.1156, 3.8620, 4.1994, 3.9917, 3.8446, 4.3750, 4.6617 &
2791 , 4.3644, 4.4083, 4.3840, 4.3625, 4.3439, 4.3253, 4.3112 &
2792 , 4.0745, 4.1807, 4.1578, 4.2390, 4.2218, 4.2097, 4.1986 &
2793 , 2.8395, 3.0081, 3.3171, 3.4878, 3.5360, 3.5145, 3.2809 &
2794 , 3.3307, 3.1260, 2.9940, 3.4741, 3.6675, 3.7832, 3.6787 &
2795 , 3.6156, 3.8041, 3.5813, 3.4301, 3.8480, 3.9849, 3.9314 &
2796 , 3.8405, 3.8029, 3.2962, 3.7104, 3.6515, 3.6378, 3.6020 &
2797 , 3.5849, 3.5550, 3.7494, 3.6893, 3.6666, 3.9170, 3.7150 &
2799 r0ab(2521:2590) = (/ &
2800 3.5760, 4.0268, 4.1596, 4.1107, 3.9995, 3.5574, 3.5103 &
2801 , 3.4163, 3.3655, 3.3677, 3.3243, 3.2975, 3.7071, 3.9047 &
2802 , 3.8514, 3.8422, 3.8022, 3.9323, 3.7932, 4.2343, 4.4583 &
2803 , 4.3115, 4.2457, 4.2213, 4.1945, 4.1756, 4.1569, 4.1424 &
2804 , 4.0620, 4.0494, 3.9953, 4.0694, 4.0516, 4.0396, 4.0280 &
2805 , 4.0130, 2.9007, 2.9674, 3.8174, 3.5856, 3.6486, 3.5339 &
2806 , 3.2832, 3.3154, 3.1144, 2.9866, 3.9618, 3.8430, 3.9980 &
2807 , 3.8134, 3.6652, 3.7985, 3.5756, 3.4207, 4.4061, 4.2817 &
2808 , 4.1477, 4.0616, 3.9979, 3.6492, 3.8833, 3.8027, 3.7660 &
2809 , 3.7183, 3.6954, 3.6525, 3.9669, 3.8371, 3.7325, 3.9160 &
2811 r0ab(2591:2660) = (/ &
2812 3.7156, 3.5714, 4.6036, 4.4620, 4.3092, 4.2122, 3.8478 &
2813 , 3.7572, 3.6597, 3.5969, 3.5575, 3.5386, 3.5153, 3.7818 &
2814 , 4.1335, 4.0153, 3.9177, 3.8603, 3.9365, 3.7906, 4.7936 &
2815 , 4.7410, 4.5461, 4.5662, 4.5340, 4.5059, 4.4832, 4.4604 &
2816 , 4.4429, 4.2346, 4.4204, 4.3119, 4.3450, 4.3193, 4.3035 &
2817 , 4.2933, 4.1582, 4.2450, 2.8559, 2.9050, 3.8325, 3.5442 &
2818 , 3.5077, 3.4905, 3.2396, 3.2720, 3.0726, 2.9467, 3.9644 &
2819 , 3.8050, 3.8981, 3.7762, 3.6216, 3.7531, 3.5297, 3.3742 &
2820 , 4.3814, 4.2818, 4.1026, 4.0294, 3.9640, 3.6208, 3.8464 &
2821 , 3.7648, 3.7281, 3.6790, 3.6542, 3.6117, 3.8650, 3.8010 &
2823 r0ab(2661:2730) = (/ &
2824 3.6894, 3.8713, 3.6699, 3.5244, 4.5151, 4.4517, 4.2538 &
2825 , 4.1483, 3.8641, 3.7244, 3.6243, 3.5589, 3.5172, 3.4973 &
2826 , 3.4715, 3.7340, 4.0316, 3.9958, 3.8687, 3.8115, 3.8862 &
2827 , 3.7379, 4.7091, 4.7156, 4.5199, 4.5542, 4.5230, 4.4959 &
2828 , 4.4750, 4.4529, 4.4361, 4.1774, 4.3774, 4.2963, 4.3406 &
2829 , 4.3159, 4.3006, 4.2910, 4.1008, 4.1568, 4.0980, 2.8110 &
2830 , 2.8520, 3.7480, 3.5105, 3.4346, 3.3461, 3.1971, 3.2326 &
2831 , 3.0329, 2.9070, 3.8823, 3.7928, 3.8264, 3.7006, 3.5797 &
2832 , 3.7141, 3.4894, 3.3326, 4.3048, 4.2217, 4.0786, 3.9900 &
2833 , 3.9357, 3.6331, 3.8333, 3.7317, 3.6957, 3.6460, 3.6197 &
2835 r0ab(2731:2800) = (/ &
2836 3.5779, 3.7909, 3.7257, 3.6476, 3.5729, 3.6304, 3.4834 &
2837 , 4.4368, 4.3921, 4.2207, 4.1133, 3.8067, 3.7421, 3.6140 &
2838 , 3.5491, 3.5077, 3.4887, 3.4623, 3.6956, 3.9568, 3.8976 &
2839 , 3.8240, 3.7684, 3.8451, 3.6949, 4.6318, 4.6559, 4.4533 &
2840 , 4.4956, 4.4641, 4.4366, 4.4155, 4.3936, 4.3764, 4.1302 &
2841 , 4.3398, 4.2283, 4.2796, 4.2547, 4.2391, 4.2296, 4.0699 &
2842 , 4.1083, 4.0319, 3.9855, 2.7676, 2.8078, 3.6725, 3.4804 &
2843 , 3.3775, 3.2411, 3.1581, 3.1983, 2.9973, 2.8705, 3.8070 &
2844 , 3.7392, 3.7668, 3.6263, 3.5402, 3.6807, 3.4545, 3.2962 &
2845 , 4.2283, 4.1698, 4.0240, 3.9341, 3.8711, 3.5489, 3.7798 &
2847 r0ab(2801:2870) = (/ &
2848 3.7000, 3.6654, 3.6154, 3.5882, 3.5472, 3.7289, 3.6510 &
2849 , 3.6078, 3.5355, 3.5963, 3.4480, 4.3587, 4.3390, 4.1635 &
2850 , 4.0536, 3.7193, 3.6529, 3.5512, 3.4837, 3.4400, 3.4191 &
2851 , 3.3891, 3.6622, 3.8934, 3.8235, 3.7823, 3.7292, 3.8106 &
2852 , 3.6589, 4.5535, 4.6013, 4.3961, 4.4423, 4.4109, 4.3835 &
2853 , 4.3625, 4.3407, 4.3237, 4.0863, 4.2835, 4.1675, 4.2272 &
2854 , 4.2025, 4.1869, 4.1774, 4.0126, 4.0460, 3.9815, 3.9340 &
2855 , 3.8955, 2.6912, 2.7604, 3.6037, 3.4194, 3.3094, 3.1710 &
2856 , 3.0862, 3.1789, 2.9738, 2.8427, 3.7378, 3.6742, 3.6928 &
2857 , 3.5512, 3.4614, 3.4087, 3.4201, 3.2607, 4.1527, 4.0977 &
2859 r0ab(2871:2940) = (/ &
2860 3.9523, 3.8628, 3.8002, 3.4759, 3.7102, 3.6466, 3.6106 &
2861 , 3.5580, 3.5282, 3.4878, 3.6547, 3.5763, 3.5289, 3.5086 &
2862 , 3.5593, 3.4099, 4.2788, 4.2624, 4.0873, 3.9770, 3.6407 &
2863 , 3.5743, 3.5178, 3.4753, 3.3931, 3.3694, 3.3339, 3.6002 &
2864 , 3.8164, 3.7478, 3.7028, 3.6952, 3.7669, 3.6137, 4.4698 &
2865 , 4.5488, 4.3168, 4.3646, 4.3338, 4.3067, 4.2860, 4.2645 &
2866 , 4.2478, 4.0067, 4.2349, 4.0958, 4.1543, 4.1302, 4.1141 &
2867 , 4.1048, 3.9410, 3.9595, 3.8941, 3.8465, 3.8089, 3.7490 &
2868 , 2.7895, 2.5849, 3.6484, 3.0162, 3.1267, 3.2125, 3.0043 &
2869 , 2.9572, 2.8197, 2.7261, 3.7701, 3.2446, 3.5239, 3.4696 &
2871 r0ab(2941:3010) = (/ &
2872 3.4261, 3.3508, 3.1968, 3.0848, 4.1496, 3.6598, 3.5111 &
2873 , 3.4199, 3.3809, 3.5382, 3.2572, 3.2100, 3.1917, 3.1519 &
2874 , 3.1198, 3.1005, 3.5071, 3.5086, 3.5073, 3.4509, 3.3120 &
2875 , 3.2082, 4.2611, 3.8117, 3.6988, 3.5646, 3.6925, 3.6295 &
2876 , 3.5383, 3.4910, 3.4625, 3.4233, 3.4007, 3.2329, 3.6723 &
2877 , 3.6845, 3.6876, 3.6197, 3.4799, 3.3737, 4.4341, 4.0525 &
2878 , 3.9011, 3.8945, 3.8635, 3.8368, 3.8153, 3.7936, 3.7758 &
2879 , 3.4944, 3.4873, 3.9040, 3.7110, 3.6922, 3.6799, 3.6724 &
2880 , 3.5622, 3.6081, 3.5426, 3.4922, 3.4498, 3.3984, 3.4456 &
2881 , 2.7522, 2.5524, 3.5742, 2.9508, 3.0751, 3.0158, 2.9644 &
2883 r0ab(3011:3080) = (/ &
2884 2.8338, 2.7891, 2.6933, 3.6926, 3.1814, 3.4528, 3.4186 &
2885 , 3.3836, 3.2213, 3.1626, 3.0507, 4.0548, 3.5312, 3.4244 &
2886 , 3.3409, 3.2810, 3.4782, 3.1905, 3.1494, 3.1221, 3.1128 &
2887 , 3.0853, 3.0384, 3.4366, 3.4562, 3.4638, 3.3211, 3.2762 &
2888 , 3.1730, 4.1632, 3.6825, 3.5822, 3.4870, 3.6325, 3.5740 &
2889 , 3.4733, 3.4247, 3.3969, 3.3764, 3.3525, 3.1984, 3.5989 &
2890 , 3.6299, 3.6433, 3.4937, 3.4417, 3.3365, 4.3304, 3.9242 &
2891 , 3.7793, 3.7623, 3.7327, 3.7071, 3.6860, 3.6650, 3.6476 &
2892 , 3.3849, 3.3534, 3.8216, 3.5870, 3.5695, 3.5584, 3.5508 &
2893 , 3.4856, 3.5523, 3.4934, 3.4464, 3.4055, 3.3551, 3.3888 &
2895 r0ab(3081:3150) = (/ &
2896 3.3525, 2.7202, 2.5183, 3.4947, 2.8731, 3.0198, 3.1457 &
2897 , 2.9276, 2.7826, 2.7574, 2.6606, 3.6090, 3.0581, 3.3747 &
2898 , 3.3677, 3.3450, 3.1651, 3.1259, 3.0147, 3.9498, 3.3857 &
2899 , 3.2917, 3.2154, 3.1604, 3.4174, 3.0735, 3.0342, 3.0096 &
2900 , 3.0136, 2.9855, 2.9680, 3.3604, 3.4037, 3.4243, 3.2633 &
2901 , 3.1810, 3.1351, 4.0557, 3.5368, 3.4526, 3.3699, 3.5707 &
2902 , 3.5184, 3.4085, 3.3595, 3.3333, 3.3143, 3.3041, 3.1094 &
2903 , 3.5193, 3.5745, 3.6025, 3.4338, 3.3448, 3.2952, 4.2158 &
2904 , 3.7802, 3.6431, 3.6129, 3.5853, 3.5610, 3.5406, 3.5204 &
2905 , 3.5036, 3.2679, 3.2162, 3.7068, 3.4483, 3.4323, 3.4221 &
2907 r0ab(3151:3220) = (/ &
2908 3.4138, 3.3652, 3.4576, 3.4053, 3.3618, 3.3224, 3.2711 &
2909 , 3.3326, 3.2950, 3.2564, 2.5315, 2.6104, 3.2734, 3.2299 &
2910 , 3.1090, 2.9942, 2.9159, 2.8324, 2.8350, 2.7216, 3.3994 &
2911 , 3.4475, 3.4354, 3.3438, 3.2807, 3.2169, 3.2677, 3.1296 &
2912 , 3.7493, 3.8075, 3.6846, 3.6104, 3.5577, 3.2052, 3.4803 &
2913 , 3.4236, 3.3845, 3.3640, 3.3365, 3.3010, 3.3938, 3.3624 &
2914 , 3.3440, 3.3132, 3.4035, 3.2754, 3.8701, 3.9523, 3.8018 &
2915 , 3.7149, 3.3673, 3.3199, 3.2483, 3.2069, 3.1793, 3.1558 &
2916 , 3.1395, 3.4097, 3.5410, 3.5228, 3.5116, 3.4921, 3.4781 &
2917 , 3.4690, 4.0420, 4.1759, 4.0078, 4.0450, 4.0189, 3.9952 &
2919 r0ab(3221:3290) = (/ &
2920 3.9770, 3.9583, 3.9434, 3.7217, 3.8228, 3.7826, 3.8640 &
2921 , 3.8446, 3.8314, 3.8225, 3.6817, 3.7068, 3.6555, 3.6159 &
2922 , 3.5831, 3.5257, 3.2133, 3.1689, 3.1196, 3.3599, 2.9852 &
2923 , 2.7881, 3.5284, 3.3493, 3.6958, 3.3642, 3.1568, 3.0055 &
2924 , 2.9558, 2.8393, 3.6287, 3.5283, 4.1511, 3.8259, 3.6066 &
2925 , 3.4527, 3.3480, 3.2713, 3.9037, 3.8361, 3.8579, 3.7311 &
2926 , 3.6575, 3.5176, 3.5693, 3.5157, 3.4814, 3.4559, 3.4445 &
2927 , 3.4160, 4.1231, 3.8543, 3.6816, 3.5602, 3.4798, 3.4208 &
2928 , 4.0542, 4.0139, 4.0165, 3.9412, 3.7698, 3.6915, 3.6043 &
2929 , 3.5639, 3.5416, 3.5247, 3.5153, 3.5654, 4.2862, 4.0437 &
2931 r0ab(3291:3360) = (/ &
2932 3.8871, 3.7741, 3.6985, 3.6413, 4.2345, 4.3663, 4.3257 &
2933 , 4.0869, 4.0612, 4.0364, 4.0170, 3.9978, 3.9834, 3.9137 &
2934 , 3.8825, 3.8758, 3.9143, 3.8976, 3.8864, 3.8768, 3.9190 &
2935 , 4.1613, 4.0566, 3.9784, 3.9116, 3.8326, 3.7122, 3.6378 &
2936 , 3.5576, 3.5457, 4.3127, 3.1160, 2.8482, 4.0739, 3.3599 &
2937 , 3.5698, 3.5366, 3.2854, 3.1039, 2.9953, 2.9192, 4.1432 &
2938 , 3.5320, 3.9478, 4.0231, 3.7509, 3.5604, 3.4340, 3.3426 &
2939 , 4.3328, 3.8288, 3.7822, 3.7909, 3.6907, 3.6864, 3.5793 &
2940 , 3.5221, 3.4883, 3.4649, 3.4514, 3.4301, 3.9256, 4.0596 &
2941 , 3.8307, 3.6702, 3.5651, 3.4884, 4.4182, 4.2516, 3.9687 &
2943 r0ab(3361:3430) = (/ &
2944 3.9186, 3.9485, 3.8370, 3.7255, 3.6744, 3.6476, 3.6295 &
2945 , 3.6193, 3.5659, 4.0663, 4.2309, 4.0183, 3.8680, 3.7672 &
2946 , 3.6923, 4.5240, 4.4834, 4.1570, 4.3204, 4.2993, 4.2804 &
2947 , 4.2647, 4.2481, 4.2354, 3.8626, 3.8448, 4.2267, 4.1799 &
2948 , 4.1670, 3.8738, 3.8643, 3.8796, 4.0575, 4.0354, 3.9365 &
2949 , 3.8611, 3.7847, 3.7388, 3.6826, 3.6251, 3.5492, 4.0889 &
2950 , 4.2764, 3.1416, 2.8325, 3.7735, 3.3787, 3.4632, 3.5923 &
2951 , 3.3214, 3.1285, 3.0147, 2.9366, 3.8527, 3.5602, 3.8131 &
2952 , 3.8349, 3.7995, 3.5919, 3.4539, 3.3540, 4.0654, 3.8603 &
2953 , 3.7972, 3.7358, 3.7392, 3.8157, 3.6055, 3.5438, 3.5089 &
2955 r0ab(3431:3500) = (/ &
2956 3.4853, 3.4698, 3.4508, 3.7882, 3.8682, 3.8837, 3.7055 &
2957 , 3.5870, 3.5000, 4.1573, 4.0005, 3.9568, 3.8936, 3.9990 &
2958 , 3.9433, 3.8172, 3.7566, 3.7246, 3.7033, 3.6900, 3.5697 &
2959 , 3.9183, 4.0262, 4.0659, 3.8969, 3.7809, 3.6949, 4.2765 &
2960 , 4.2312, 4.1401, 4.0815, 4.0580, 4.0369, 4.0194, 4.0017 &
2961 , 3.9874, 3.8312, 3.8120, 3.9454, 3.9210, 3.9055, 3.8951 &
2962 , 3.8866, 3.8689, 3.9603, 3.9109, 3.9122, 3.8233, 3.7438 &
2963 , 3.7436, 3.6981, 3.6555, 3.5452, 3.9327, 4.0658, 4.1175 &
2964 , 2.9664, 2.8209, 3.5547, 3.3796, 3.3985, 3.3164, 3.2364 &
2965 , 3.1956, 3.0370, 2.9313, 3.6425, 3.5565, 3.7209, 3.7108 &
2967 r0ab(3501:3570) = (/ &
2968 3.6639, 3.6484, 3.4745, 3.3492, 3.8755, 4.2457, 3.7758 &
2969 , 3.7161, 3.6693, 3.6155, 3.5941, 3.5643, 3.5292, 3.4950 &
2970 , 3.4720, 3.4503, 3.6936, 3.7392, 3.7388, 3.7602, 3.6078 &
2971 , 3.4960, 3.9800, 4.3518, 4.2802, 3.8580, 3.8056, 3.7527 &
2972 , 3.7019, 3.6615, 3.5768, 3.5330, 3.5038, 3.5639, 3.8192 &
2973 , 3.8883, 3.9092, 3.9478, 3.7995, 3.6896, 4.1165, 4.5232 &
2974 , 4.4357, 4.4226, 4.4031, 4.3860, 4.3721, 4.3580, 4.3466 &
2975 , 4.2036, 4.2037, 3.8867, 4.2895, 4.2766, 4.2662, 4.2598 &
2976 , 3.8408, 3.9169, 3.8681, 3.8250, 3.7855, 3.7501, 3.6753 &
2977 , 3.5499, 3.4872, 3.5401, 3.8288, 3.9217, 3.9538, 4.0054 &
2979 r0ab(3571:3640) = (/ &
2980 2.8388, 2.7890, 3.4329, 3.5593, 3.3488, 3.2486, 3.1615 &
2981 , 3.1000, 3.0394, 2.9165, 3.5267, 3.7479, 3.6650, 3.6263 &
2982 , 3.5658, 3.5224, 3.4762, 3.3342, 3.7738, 4.0333, 3.9568 &
2983 , 3.8975, 3.8521, 3.4929, 3.7830, 3.7409, 3.7062, 3.6786 &
2984 , 3.6471, 3.6208, 3.6337, 3.6519, 3.6363, 3.6278, 3.6110 &
2985 , 3.4825, 3.8795, 4.1448, 4.0736, 4.0045, 3.6843, 3.6291 &
2986 , 3.5741, 3.5312, 3.4974, 3.4472, 3.4034, 3.7131, 3.7557 &
2987 , 3.7966, 3.8005, 3.8068, 3.8015, 3.6747, 4.0222, 4.3207 &
2988 , 4.2347, 4.2191, 4.1990, 4.1811, 4.1666, 4.1521, 4.1401 &
2989 , 3.9970, 3.9943, 3.9592, 4.0800, 4.0664, 4.0559, 4.0488 &
2991 r0ab(3641:3710) = (/ &
2992 3.9882, 4.0035, 3.9539, 3.9138, 3.8798, 3.8355, 3.5359 &
2993 , 3.4954, 3.3962, 3.5339, 3.7595, 3.8250, 3.8408, 3.8600 &
2994 , 3.8644, 2.7412, 2.7489, 3.3374, 3.3950, 3.3076, 3.1910 &
2995 , 3.0961, 3.0175, 3.0280, 2.8929, 3.4328, 3.5883, 3.6227 &
2996 , 3.5616, 3.4894, 3.4241, 3.3641, 3.3120, 3.6815, 3.8789 &
2997 , 3.8031, 3.7413, 3.6939, 3.4010, 3.6225, 3.5797, 3.5443 &
2998 , 3.5139, 3.4923, 3.4642, 3.5860, 3.5849, 3.5570, 3.5257 &
2999 , 3.4936, 3.4628, 3.7874, 3.9916, 3.9249, 3.8530, 3.5932 &
3000 , 3.5355, 3.4757, 3.4306, 3.3953, 3.3646, 3.3390, 3.5637 &
3001 , 3.7053, 3.7266, 3.7177, 3.6996, 3.6775, 3.6558, 3.9331 &
3003 r0ab(3711:3780) = (/ &
3004 4.1655, 4.0879, 4.0681, 4.0479, 4.0299, 4.0152, 4.0006 &
3005 , 3.9883, 3.8500, 3.8359, 3.8249, 3.9269, 3.9133, 3.9025 &
3006 , 3.8948, 3.8422, 3.8509, 3.7990, 3.7570, 3.7219, 3.6762 &
3007 , 3.4260, 3.3866, 3.3425, 3.5294, 3.7022, 3.7497, 3.7542 &
3008 , 3.7494, 3.7370, 3.7216, 3.4155, 3.0522, 4.2541, 3.8218 &
3009 , 4.0438, 3.5875, 3.3286, 3.1682, 3.0566, 2.9746, 4.3627 &
3010 , 4.0249, 4.6947, 4.1718, 3.8639, 3.6735, 3.5435, 3.4479 &
3011 , 4.6806, 4.3485, 4.2668, 4.1690, 4.1061, 4.1245, 4.0206 &
3012 , 3.9765, 3.9458, 3.9217, 3.9075, 3.8813, 3.9947, 4.1989 &
3013 , 3.9507, 3.7960, 3.6925, 3.6150, 4.8535, 4.5642, 4.4134 &
3015 r0ab(3781:3850) = (/ &
3016 4.3688, 4.3396, 4.2879, 4.2166, 4.1888, 4.1768, 4.1660 &
3017 , 4.1608, 4.0745, 4.2289, 4.4863, 4.2513, 4.0897, 3.9876 &
3018 , 3.9061, 5.0690, 5.0446, 4.6186, 4.6078, 4.5780, 4.5538 &
3019 , 4.5319, 4.5101, 4.4945, 4.1912, 4.2315, 4.5534, 4.4373 &
3020 , 4.4224, 4.4120, 4.4040, 4.2634, 4.7770, 4.6890, 4.6107 &
3021 , 4.5331, 4.4496, 4.4082, 4.3095, 4.2023, 4.0501, 4.2595 &
3022 , 4.5497, 4.3056, 4.1506, 4.0574, 3.9725, 5.0796, 3.0548 &
3023 , 3.3206, 3.8132, 3.9720, 3.7675, 3.7351, 3.5167, 3.5274 &
3024 , 3.3085, 3.1653, 3.9500, 4.1730, 4.0613, 4.1493, 3.8823 &
3025 , 4.0537, 3.8200, 3.6582, 4.3422, 4.5111, 4.3795, 4.3362 &
3027 r0ab(3851:3920) = (/ &
3028 4.2751, 3.7103, 4.1973, 4.1385, 4.1129, 4.0800, 4.0647 &
3029 , 4.0308, 4.0096, 4.1619, 3.9360, 4.1766, 3.9705, 3.8262 &
3030 , 4.5348, 4.7025, 4.5268, 4.5076, 3.9562, 3.9065, 3.8119 &
3031 , 3.7605, 3.7447, 3.7119, 3.6916, 4.1950, 4.2110, 4.3843 &
3032 , 4.1631, 4.4427, 4.2463, 4.1054, 4.7693, 5.0649, 4.7365 &
3033 , 4.7761, 4.7498, 4.7272, 4.7076, 4.6877, 4.6730, 4.4274 &
3034 , 4.5473, 4.5169, 4.5975, 4.5793, 4.5667, 4.5559, 4.3804 &
3035 , 4.6920, 4.6731, 4.6142, 4.5600, 4.4801, 4.0149, 3.8856 &
3036 , 3.7407, 4.1545, 4.2253, 4.4229, 4.1923, 4.5022, 4.3059 &
3037 , 4.1591, 4.7883, 4.9294, 3.3850, 3.4208, 3.7004, 3.8800 &
3039 r0ab(3921:3990) = (/ &
3040 3.9886, 3.9040, 3.6719, 3.6547, 3.4625, 3.3370, 3.8394 &
3041 , 4.0335, 4.2373, 4.3023, 4.0306, 4.1408, 3.9297, 3.7857 &
3042 , 4.1907, 4.3230, 4.2664, 4.2173, 4.1482, 3.6823, 4.0711 &
3043 , 4.0180, 4.0017, 3.9747, 3.9634, 3.9383, 4.1993, 4.3205 &
3044 , 4.0821, 4.2547, 4.0659, 3.9359, 4.3952, 4.5176, 4.3888 &
3045 , 4.3607, 3.9583, 3.9280, 3.8390, 3.7971, 3.7955, 3.7674 &
3046 , 3.7521, 4.1062, 4.3633, 4.2991, 4.2767, 4.4857, 4.3039 &
3047 , 4.1762, 4.6197, 4.8654, 4.6633, 4.5878, 4.5640, 4.5422 &
3048 , 4.5231, 4.5042, 4.4901, 4.3282, 4.3978, 4.3483, 4.4202 &
3049 , 4.4039, 4.3926, 4.3807, 4.2649, 4.6135, 4.5605, 4.5232 &
3051 r0ab(3991:4060) = (/ &
3052 4.4676, 4.3948, 4.0989, 3.9864, 3.8596, 4.0942, 4.2720 &
3053 , 4.3270, 4.3022, 4.5410, 4.3576, 4.2235, 4.6545, 4.7447 &
3054 , 4.7043, 3.0942, 3.2075, 3.5152, 3.6659, 3.8289, 3.7459 &
3055 , 3.5156, 3.5197, 3.3290, 3.2069, 3.6702, 3.8448, 4.0340 &
3056 , 3.9509, 3.8585, 3.9894, 3.7787, 3.6365, 4.1425, 4.1618 &
3057 , 4.0940, 4.0466, 3.9941, 3.5426, 3.8952, 3.8327, 3.8126 &
3058 , 3.7796, 3.7635, 3.7356, 4.0047, 3.9655, 3.9116, 4.1010 &
3059 , 3.9102, 3.7800, 4.2964, 4.3330, 4.2622, 4.2254, 3.8195 &
3060 , 3.7560, 3.6513, 3.5941, 3.5810, 3.5420, 3.5178, 3.8861 &
3061 , 4.1459, 4.1147, 4.0772, 4.3120, 4.1207, 3.9900, 4.4733 &
3063 r0ab(4061:4130) = (/ &
3064 4.6157, 4.4580, 4.4194, 4.3954, 4.3739, 4.3531, 4.3343 &
3065 , 4.3196, 4.2140, 4.2339, 4.1738, 4.2458, 4.2278, 4.2158 &
3066 , 4.2039, 4.1658, 4.3595, 4.2857, 4.2444, 4.1855, 4.1122 &
3067 , 3.7839, 3.6879, 3.5816, 3.8633, 4.1585, 4.1402, 4.1036 &
3068 , 4.3694, 4.1735, 4.0368, 4.5095, 4.5538, 4.5240, 4.4252 &
3069 , 3.0187, 3.1918, 3.5127, 3.6875, 3.7404, 3.6943, 3.4702 &
3070 , 3.4888, 3.2914, 3.1643, 3.6669, 3.8724, 3.9940, 4.0816 &
3071 , 3.8054, 3.9661, 3.7492, 3.6024, 4.0428, 4.1951, 4.1466 &
3072 , 4.0515, 4.0075, 3.5020, 3.9158, 3.8546, 3.8342, 3.8008 &
3073 , 3.7845, 3.7549, 3.9602, 3.8872, 3.8564, 4.0793, 3.8835 &
3075 r0ab(4131:4200) = (/ &
3076 3.7495, 4.2213, 4.3704, 4.3300, 4.2121, 3.7643, 3.7130 &
3077 , 3.6144, 3.5599, 3.5474, 3.5093, 3.4853, 3.9075, 4.1115 &
3078 , 4.0473, 4.0318, 4.2999, 4.1050, 3.9710, 4.4320, 4.6706 &
3079 , 4.5273, 4.4581, 4.4332, 4.4064, 4.3873, 4.3684, 4.3537 &
3080 , 4.2728, 4.2549, 4.2032, 4.2794, 4.2613, 4.2491, 4.2375 &
3081 , 4.2322, 4.3665, 4.3061, 4.2714, 4.2155, 4.1416, 3.7660 &
3082 , 3.6628, 3.5476, 3.8790, 4.1233, 4.0738, 4.0575, 4.3575 &
3083 , 4.1586, 4.0183, 4.4593, 4.5927, 4.4865, 4.3813, 4.4594 &
3084 , 2.9875, 3.1674, 3.4971, 3.6715, 3.7114, 3.6692, 3.4446 &
3085 , 3.4676, 3.2685, 3.1405, 3.6546, 3.8579, 3.9637, 4.0581 &
3087 r0ab(4201:4270) = (/ &
3088 3.7796, 3.9463, 3.7275, 3.5792, 4.0295, 4.1824, 4.1247 &
3089 , 4.0357, 3.9926, 3.4827, 3.9007, 3.8392, 3.8191, 3.7851 &
3090 , 3.7687, 3.7387, 3.9290, 3.8606, 3.8306, 4.0601, 3.8625 &
3091 , 3.7269, 4.2062, 4.3566, 4.3022, 4.1929, 3.7401, 3.6888 &
3092 , 3.5900, 3.5350, 3.5226, 3.4838, 3.4594, 3.8888, 4.0813 &
3093 , 4.0209, 4.0059, 4.2810, 4.0843, 3.9486, 4.4162, 4.6542 &
3094 , 4.5005, 4.4444, 4.4196, 4.3933, 4.3741, 4.3552, 4.3406 &
3095 , 4.2484, 4.2413, 4.1907, 4.2656, 4.2474, 4.2352, 4.2236 &
3096 , 4.2068, 4.3410, 4.2817, 4.2479, 4.1921, 4.1182, 3.7346 &
3097 , 3.6314, 3.5168, 3.8582, 4.0927, 4.0469, 4.0313, 4.3391 &
3099 r0ab(4271:4340) = (/ &
3100 4.1381, 3.9962, 4.4429, 4.5787, 4.4731, 4.3588, 4.4270 &
3101 , 4.3957, 2.9659, 3.1442, 3.4795, 3.6503, 3.6814, 3.6476 &
3102 , 3.4222, 3.4491, 3.2494, 3.1209, 3.6324, 3.8375, 3.9397 &
3103 , 3.8311, 3.7581, 3.9274, 3.7085, 3.5598, 4.0080, 4.1641 &
3104 , 4.1057, 4.0158, 3.9726, 3.4667, 3.8802, 3.8188, 3.7989 &
3105 , 3.7644, 3.7474, 3.7173, 3.9049, 3.8424, 3.8095, 4.0412 &
3106 , 3.8436, 3.7077, 4.1837, 4.3366, 4.2816, 4.1686, 3.7293 &
3107 , 3.6709, 3.5700, 3.5153, 3.5039, 3.4684, 3.4437, 3.8663 &
3108 , 4.0575, 4.0020, 3.9842, 4.2612, 4.0643, 3.9285, 4.3928 &
3109 , 4.6308, 4.4799, 4.4244, 4.3996, 4.3737, 4.3547, 4.3358 &
3111 r0ab(4341:4410) = (/ &
3112 4.3212, 4.2275, 4.2216, 4.1676, 4.2465, 4.2283, 4.2161 &
3113 , 4.2045, 4.1841, 4.3135, 4.2562, 4.2226, 4.1667, 4.0932 &
3114 , 3.7134, 3.6109, 3.4962, 3.8352, 4.0688, 4.0281, 4.0099 &
3115 , 4.3199, 4.1188, 3.9768, 4.4192, 4.5577, 4.4516, 4.3365 &
3116 , 4.4058, 4.3745, 4.3539, 2.8763, 3.1294, 3.5598, 3.7465 &
3117 , 3.5659, 3.5816, 3.3599, 3.4024, 3.1877, 3.0484, 3.7009 &
3118 , 3.9451, 3.8465, 3.9873, 3.7079, 3.9083, 3.6756, 3.5150 &
3119 , 4.0829, 4.2780, 4.1511, 4.1260, 4.0571, 3.4865, 3.9744 &
3120 , 3.9150, 3.8930, 3.8578, 3.8402, 3.8073, 3.7977, 4.0036 &
3121 , 3.7604, 4.0288, 3.8210, 3.6757, 4.2646, 4.4558, 4.2862 &
3123 r0ab(4411:4465) = (/ &
3124 4.2122, 3.7088, 3.6729, 3.5800, 3.5276, 3.5165, 3.4783 &
3125 , 3.4539, 3.9553, 3.9818, 4.2040, 3.9604, 4.2718, 4.0689 &
3126 , 3.9253, 4.4869, 4.7792, 4.4918, 4.5342, 4.5090, 4.4868 &
3127 , 4.4680, 4.4486, 4.4341, 4.2023, 4.3122, 4.2710, 4.3587 &
3128 , 4.3407, 4.3281, 4.3174, 4.1499, 4.3940, 4.3895, 4.3260 &
3129 , 4.2725, 4.1961, 3.7361, 3.6193, 3.4916, 3.9115, 3.9914 &
3130 , 3.9809, 3.9866, 4.3329, 4.1276, 3.9782, 4.5097, 4.6769 &
3131 , 4.5158, 4.3291, 4.3609, 4.3462, 4.3265, 4.4341 &
3135 DO i = 1,
SIZE(rout, 1)
3138 rout(i, j) = r0ab(k)*bohr
3139 rout(j, i) = r0ab(k)*bohr
3146 0.32, 0.46, 1.20, 0.94, 0.77, 0.75, 0.71, 0.63, 0.64, 0.67 &
3147 , 1.40, 1.25, 1.13, 1.04, 1.10, 1.02, 0.99, 0.96, 1.76, 1.54 &
3148 , 1.33, 1.22, 1.21, 1.10, 1.07, 1.04, 1.00, 0.99, 1.01, 1.09 &
3149 , 1.12, 1.09, 1.15, 1.10, 1.14, 1.17, 1.89, 1.67, 1.47, 1.39 &
3150 , 1.32, 1.24, 1.15, 1.13, 1.13, 1.08, 1.15, 1.23, 1.28, 1.26 &
3151 , 1.26, 1.23, 1.32, 1.31, 2.09, 1.76, 1.62, 1.47, 1.58, 1.57 &
3152 , 1.56, 1.55, 1.51, 1.52, 1.51, 1.50, 1.49, 1.49, 1.48, 1.53 &
3153 , 1.46, 1.37, 1.31, 1.23, 1.18, 1.16, 1.11, 1.12, 1.13, 1.32 &
3154 , 1.30, 1.30, 1.36, 1.31, 1.38, 1.42, 2.01, 1.81, 1.67, 1.58 &
3155 , 1.52, 1.53, 1.54, 1.55 &
3160 8.0589, 3.4698, 29.0974, 14.8517, 11.8799, 7.8715, 5.5588, &
3161 4.7566, 3.8025, 3.1036, 26.1552, 17.2304, 17.7210, 12.7442, &
3162 9.5361, 8.1652, 6.7463, 5.6004, 29.2012, 22.3934, 19.0598, &
3163 16.8590, 15.4023, 12.5589, 13.4788, 12.2309, 11.2809, 10.5569, &
3164 10.1428, 9.4907, 13.4606, 10.8544, 8.9386, 8.1350, 7.1251, &
3165 6.1971, 30.0162, 24.4103, 20.3537, 17.4780, 13.5528, 11.8451, &
3166 11.0355, 10.1997, 9.5414, 9.0061, 8.6417, 8.9975, 14.0834, &
3167 11.8333, 10.0179, 9.3844, 8.4110, 7.5152, 32.7622, 27.5708, &
3168 23.1671, 21.6003, 20.9615, 20.4562, 20.1010, 19.7475, 19.4828, &
3169 15.6013, 19.2362, 17.4717, 17.8321, 17.4237, 17.1954, 17.1631, &
3170 14.5716, 15.8758, 13.8989, 12.4834, 11.4421, 10.2671, 8.3549, &
3171 7.8496, 7.3278, 7.4820, 13.5124, 11.6554, 10.0959, 9.7340, &
3172 8.8584, 8.0125, 29.8135, 26.3157, 19.1885, 15.8542, 16.1305, &
3173 15.6161, 15.1226, 16.1576 &
3176 END SUBROUTINE setr0ab
3182 SUBROUTINE setcn(cnout)
3184 REAL(kind=dp),
DIMENSION(:) :: cnout
3187 REAL(kind=dp),
DIMENSION(104) :: cn
3190 1.0, 0.0, 1.0, 2.0, 3.0, 4.0, 3.0, 2.0, 1.0, 0.0, 1.0, 2.0, 3.0, 4.0, 5.0 &
3191 , 2.0, 1.0, 0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 3.0, 2.0, 3.0, 2.0, 2.0, 2.0, 2.0 &
3192 , 3.0, 4.0, 3.0, 4.0, 1.0, 0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 4.0, 3.0 &
3193 , 2.0, 1.0, 2.0, 3.0, 2.0, 3.0, 4.0, 1.0, 0.0, 1.0, 2.0, 3.0, 3.0, 3.0, 3.0 &
3194 , 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 4.0, 5.0, 6.0, 7.0 &
3195 , 4.0, 4.0, 4.0, 3.0, 2.0, 1.0, 2.0, 3.0, 4.0, 1.0, 0.0, 1.0, 2.0, 3.0, 4.0 &
3196 , 5.0, 6.0, 5.0, 4.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 2.0, 3.0, 3.0 &
3200 n = min(
SIZE(cn),
SIZE(cnout))
3201 cnout(1:n) = cn(1:n)
3203 END SUBROUTINE setcn
3214 SUBROUTINE cnparam_d3(rab, rcova, rcovb, k1, cnab, dcnab)
3216 REAL(kind=dp),
INTENT(IN) :: rab, rcova, rcovb, k1
3217 REAL(kind=dp),
INTENT(OUT) :: cnab, dcnab
3219 REAL(kind=dp) :: dfz, ee, fz, rco, rr
3228 ee = exp(-k1*(rr - 1.0_dp))
3230 fz = 0.5_dp*(1.0_dp - tanh(rab - 2.0_dp*rco))
3231 dfz = 0.5_dp*((tanh(rab - 2.0_dp*rco))**2 - 1.0_dp)
3232 cnab = 1.0_dp/(1.0_dp + ee)*fz
3233 dcnab = -cnab*cnab*k1*rr/rab*ee + 1.0_dp/(1.0_dp + ee)*dfz
3235 END SUBROUTINE cnparam_d3
3247 SUBROUTINE damping_d3(rab, rcutab, srn, alpn, rcut, fdab, dfdab)
3249 REAL(kind=dp),
INTENT(IN) :: rab, rcutab, srn, alpn, rcut
3250 REAL(kind=dp),
INTENT(OUT) :: fdab, dfdab
3252 REAL(kind=dp) :: a, b, c, d, dd, dfab, dfcc, dz, fab, &
3253 fcc, rl, rr, ru, z, zz
3260 ELSEIF (rab <= rl)
THEN
3272 fcc = 1._dp + zz*(a + b*z + c*z*z)
3273 dfcc = zz*dz/z*(3._dp*a + 4._dp*b*z + 5._dp*c*z*z)
3276 rr = 6._dp*(rab/(srn*rcutab))**(-alpn)
3277 fab = 1._dp/(1._dp + rr)
3278 dfab = fab*fab*rr*alpn/rab
3280 dfdab = dfab*fcc + fab*dfcc
3282 END SUBROUTINE damping_d3
3299 SUBROUTINE getc6(maxc, max_elem, c6ab, mxc, iat, jat, nci, ncj, k3, c6, dc6a, dc6b)
3301 INTEGER,
INTENT(IN) :: maxc, max_elem
3302 REAL(kind=dp),
INTENT(IN) :: c6ab(max_elem, max_elem, maxc, maxc, 3)
3303 INTEGER,
INTENT(IN) :: mxc(max_elem), iat, jat
3304 REAL(kind=dp),
INTENT(IN) :: nci, ncj, k3
3305 REAL(kind=dp),
INTENT(OUT) :: c6, dc6a, dc6b
3308 REAL(kind=dp) :: c6mem, cn1, cn2, csum, dtmpa, dtmpb, &
3309 dwa, dwb, dza, dzb, r, rsave, rsum, &
3326 c6 = c6ab(iat, jat, i, j, 1)
3327 IF (c6 > 0.0_dp)
THEN
3328 cn1 = c6ab(iat, jat, i, j, 2)
3329 cn2 = c6ab(iat, jat, i, j, 3)
3331 r = (cn1 - nci)**2 + (cn2 - ncj)**2
3337 dtmpa = -2.0_dp*k3*(cn1 - nci)*tmp1
3338 dtmpb = -2.0_dp*k3*(cn2 - ncj)*tmp1
3340 csum = csum + tmp1*c6
3341 dza = dza + dtmpa*c6
3343 dzb = dzb + dtmpb*c6
3349 IF (c6 == 0.0_dp) c6mem = 0.0_dp
3351 IF (rsum > 1.0e-66_dp)
THEN
3353 dc6a = (dza - c6*dwa)/rsum
3354 dc6b = (dzb - c6*dwb)/rsum
3361 END SUBROUTINE getc6
3370 TYPE(dcnum_type),
DIMENSION(:) :: dcnum
3371 TYPE(mp_para_env_type),
POINTER :: para_env
3373 INTEGER :: i, ia, ipe, jn, n, natom, ntmax, ntot
3374 INTEGER,
ALLOCATABLE,
DIMENSION(:) ::
list, nloc
3375 REAL(kind=dp),
ALLOCATABLE,
DIMENSION(:) :: dvals
3376 REAL(kind=dp),
ALLOCATABLE,
DIMENSION(:, :) :: rik
3380 IF (para_env%num_pe > 1)
THEN
3383 ALLOCATE (nloc(natom))
3385 nloc(ia) = dcnum(ia)%neighbors
3389 CALL para_env%max(ntmax)
3390 ALLOCATE (
list(ntmax), dvals(ntmax), rik(3, ntmax))
3398 list(i) = dcnum(ia)%nlist(jn)
3399 dvals(i) = dcnum(ia)%dvals(jn)
3400 rik(1:3, i) = dcnum(ia)%rik(1:3, jn)
3403 DO ipe = 1, para_env%num_pe - 1
3405 CALL para_env%shift(nloc)
3407 CALL para_env%shift(
list)
3408 CALL para_env%shift(dvals)
3409 CALL para_env%shift(rik)
3413 n = dcnum(ia)%neighbors + nloc(ia)
3414 IF (n >
SIZE(dcnum(ia)%nlist))
THEN
3415 CALL reallocate(dcnum(ia)%nlist, 1, 2*n)
3416 CALL reallocate(dcnum(ia)%dvals, 1, 2*n)
3417 CALL reallocate(dcnum(ia)%rik, 1, 3, 1, 2*n)
3421 n = dcnum(ia)%neighbors + jn
3422 dcnum(ia)%nlist(n) =
list(i)
3423 dcnum(ia)%dvals(n) = dvals(i)
3424 dcnum(ia)%rik(1:3, n) = rik(1:3, i)
3426 dcnum(ia)%neighbors = dcnum(ia)%neighbors + nloc(ia)
3430 DEALLOCATE (
list, dvals, rik)
3447 SUBROUTINE d3_cnumber(qs_env, dispersion_env, cnumbers, dcnum, ghost, floating, atomnumber, &
3448 calculate_forces, debugall)
3450 TYPE(qs_environment_type),
POINTER :: qs_env
3451 TYPE(qs_dispersion_type),
POINTER :: dispersion_env
3452 REAL(kind=dp),
DIMENSION(:),
INTENT(INOUT) :: cnumbers
3453 TYPE(dcnum_type),
DIMENSION(:),
INTENT(INOUT) :: dcnum
3454 LOGICAL,
DIMENSION(:),
INTENT(IN) :: ghost, floating
3455 INTEGER,
DIMENSION(:),
INTENT(IN) :: atomnumber
3456 LOGICAL,
INTENT(IN) :: calculate_forces, debugall
3458 CHARACTER(LEN=*),
PARAMETER :: routinen =
'd3_cnumber'
3460 INTEGER :: handle, iatom, ikind, jatom, jkind, &
3461 mepos, natom, ni, nj, num_pe, za, zb
3462 LOGICAL :: exclude_pair
3463 REAL(kind=dp) :: cnab, dcnab, eps_cn, rcc, rcova, rcovb
3464 REAL(kind=dp),
DIMENSION(3) :: rij
3465 TYPE(neighbor_list_iterator_p_type), &
3466 DIMENSION(:),
POINTER :: nl_iterator
3467 TYPE(neighbor_list_set_p_type),
DIMENSION(:), &
3469 TYPE(particle_type),
DIMENSION(:),
POINTER :: particle_set
3474 CALL timeset(routinen, handle)
3477 NULLIFY (particle_set)
3478 CALL get_qs_env(qs_env=qs_env, particle_set=particle_set)
3479 natom =
SIZE(particle_set)
3481 eps_cn = dispersion_env%eps_cn
3482 sab_cn => dispersion_env%sab_cn
3485 CALL neighbor_list_iterator_create(nl_iterator, sab_cn, nthread=num_pe)
3512 DO WHILE (neighbor_list_iterate(nl_iterator, mepos=mepos) == 0)
3514 CALL get_iterator_info(nl_iterator, mepos=mepos, ikind=ikind, jkind=jkind, iatom=iatom, jatom=jatom, r=rij)
3515 IF (ghost(ikind) .OR. ghost(jkind) .OR. floating(ikind) .OR. floating(jkind)) cycle
3516 IF (dispersion_env%nd3_exclude_pair > 0)
THEN
3517 CALL exclude_d3_kind_pair(dispersion_env%d3_exclude_pair, ikind, jkind, exclude=exclude_pair)
3518 IF (exclude_pair) cycle
3521 rcc = sqrt(rij(1)*rij(1) + rij(2)*rij(2) + rij(3)*rij(3))
3522 IF (rcc > 1.e-6_dp)
THEN
3523 za = atomnumber(ikind)
3524 zb = atomnumber(jkind)
3525 rcova = dispersion_env%rcov(za)
3526 rcovb = dispersion_env%rcov(zb)
3527 CALL cnparam_d3(rcc, rcova, rcovb, dispersion_env%k1, cnab, dcnab)
3528 IF (cnab > eps_cn)
THEN
3530 cnumbers(iatom) = cnumbers(iatom) + cnab
3531 IF (iatom /= jatom)
THEN
3533 cnumbers(jatom) = cnumbers(jatom) + cnab
3536 IF (calculate_forces .OR. debugall .AND. cnab > eps_cn)
THEN
3538 dcnum(iatom)%neighbors = dcnum(iatom)%neighbors + 1
3539 ni = dcnum(iatom)%neighbors
3540 IF (ni >
SIZE(dcnum(iatom)%nlist))
THEN
3541 CALL reallocate(dcnum(iatom)%nlist, 1, 2*ni)
3542 CALL reallocate(dcnum(iatom)%dvals, 1, 2*ni)
3543 CALL reallocate(dcnum(iatom)%rik, 1, 3, 1, 2*ni)
3545 dcnum(iatom)%nlist(ni) = jatom
3546 dcnum(iatom)%dvals(ni) = dcnab
3547 dcnum(iatom)%rik(1:3, ni) = rij(1:3)
3550 IF (iatom /= jatom)
THEN
3552 dcnum(jatom)%neighbors = dcnum(jatom)%neighbors + 1
3553 nj = dcnum(jatom)%neighbors
3554 IF (nj >
SIZE(dcnum(jatom)%dvals))
THEN
3555 CALL reallocate(dcnum(jatom)%nlist, 1, 2*nj)
3556 CALL reallocate(dcnum(jatom)%dvals, 1, 2*nj)
3557 CALL reallocate(dcnum(jatom)%rik, 1, 3, 1, 2*nj)
3559 dcnum(jatom)%nlist(nj) = iatom
3560 dcnum(jatom)%dvals(nj) = dcnab
3561 dcnum(jatom)%rik(1:3, nj) = -rij(1:3)
3579 CALL neighbor_list_iterator_release(nl_iterator)
3581 CALL timestop(handle)
3595 SUBROUTINE exclude_d3_kind_pair(exclude_list, za, zb, zc, exclude)
3597 INTEGER,
DIMENSION(:, :),
INTENT(IN) :: exclude_list
3598 INTEGER,
INTENT(in) :: za, zb
3599 INTEGER,
INTENT(in),
OPTIONAL :: zc
3600 LOGICAL,
INTENT(out) :: exclude
3602 CHARACTER(LEN=*),
PARAMETER :: routinen =
'exclude_d3_kind_pair'
3604 INTEGER :: handle, i
3606 CALL timeset(routinen, handle)
3608 DO i = 1,
SIZE(exclude_list, 1)
3609 IF (exclude_list(i, 1) == za .AND. exclude_list(i, 2) == zb .OR. &
3610 exclude_list(i, 1) == zb .AND. exclude_list(i, 2) == za)
THEN
3614 IF (
PRESENT(zc))
THEN
3615 IF (exclude_list(i, 1) == za .AND. exclude_list(i, 2) == zc .OR. &
3616 exclude_list(i, 1) == zc .AND. exclude_list(i, 2) == za .OR. &
3617 exclude_list(i, 1) == zb .AND. exclude_list(i, 2) == zc .OR. &
3618 exclude_list(i, 1) == zc .AND. exclude_list(i, 2) == zb)
THEN
3625 CALL timestop(handle)
3627 END SUBROUTINE exclude_d3_kind_pair
static unsigned int hash(const dbm_task_t task)
Private hash function based on Szudzik's elegant pairing. Using unsigned int to return a positive num...
subroutine pbc(r, r_pbc, s, s_pbc, a, b, c, alpha, beta, gamma, debug, info, pbc0, h, hinv)
...
subroutine uppercase(string)
...
static GRID_HOST_DEVICE double fac(const int i)
Factorial function, e.g. fac(5) = 5! = 120.
Define the atomic kind types and their sub types.
subroutine, public get_atomic_kind_set(atomic_kind_set, atom_of_kind, kind_of, natom_of_kind, maxatom, natom, nshell, fist_potential_present, shell_present, shell_adiabatic, shell_check_distance, damping_present)
Get attributes of an atomic kind set.
subroutine, public get_atomic_kind(atomic_kind, fist_potential, element_symbol, name, mass, kind_number, natom, atom_list, rcov, rvdw, z, qeff, apol, cpol, mm_radius, shell, shell_active, damping)
Get attributes of an atomic kind.
Holds information on atomic properties.
subroutine, public atprop_array_init(atarray, natom)
...
collects all references to literature in CP2K as new algorithms / method are included from literature...
integer, save, public grimme2006
integer, save, public goerigk2017
integer, save, public grimme2011
integer, save, public grimme2010
Handles all functions related to the CELL.
subroutine, public get_cell(cell, alpha, beta, gamma, deth, orthorhombic, abc, periodic, h, h_inv, symmetry_id, tag)
Get informations about a simulation cell.
real(kind=dp) function, public plane_distance(h, k, l, cell)
Calculate the distance between two lattice planes as defined by a triple of Miller indices (hkl).
Utility routines to open and close files. Tracking of preconnections.
subroutine, public open_file(file_name, file_status, file_form, file_action, file_position, file_pad, unit_number, debug, skip_get_unit_number, file_access)
Opens the requested file using a free unit number.
subroutine, public close_file(unit_number, file_status, keep_preconnection)
Close an open file given by its logical unit number. Optionally, keep the file and unit preconnected.
various routines to log and control the output. The idea is that decisions about where to log should ...
type(cp_logger_type) function, pointer, public cp_get_default_logger()
returns the default logger
routines to handle the output, The idea is to remove the decision of wheter to output and what to out...
integer function, public cp_print_key_unit_nr(logger, basis_section, print_key_path, extension, middle_name, local, log_filename, ignore_should_output, file_form, file_position, file_action, file_status, do_backup, on_file, is_new_file, mpi_io, fout)
...
subroutine, public cp_print_key_finished_output(unit_nr, logger, basis_section, print_key_path, local, ignore_should_output, on_file, mpi_io)
should be called after you finish working with a unit obtained with cp_print_key_unit_nr,...
Utility routines to read data from files. Kept as close as possible to the old parser because.
subroutine, public parser_get_next_line(parser, nline, at_end)
Read the next input line and broadcast the input information. Skip (nline-1) lines and skip also all ...
Utility routines to read data from files. Kept as close as possible to the old parser because.
subroutine, public parser_release(parser)
releases the parser
subroutine, public parser_create(parser, file_name, unit_nr, para_env, end_section_label, separator_chars, comment_char, continuation_char, quote_char, section_char, parse_white_lines, initial_variables, apply_preprocessing)
Start a parser run. Initial variables allow to @SET stuff before opening the file.
Defines the basic variable types.
integer, parameter, public dp
integer, parameter, public default_string_length
An array-based list which grows on demand. When the internal array is full, a new array of twice the ...
Definition of mathematical constants and functions.
real(kind=dp), parameter, public twopi
Utility routines for the memory handling.
Interface to the message passing library MPI.
Define the data structure for the molecule information.
Define the data structure for the particle information.
Definition of physical constants:
real(kind=dp), parameter, public kcalmol
real(kind=dp), parameter, public kjmol
real(kind=dp), parameter, public bohr
Calculation of dispersion using pair potentials.
subroutine, public qs_scaling_dftd3bj(s6, a1, s8, a2, vdw_section)
...
subroutine, public qs_dispersion_pairpot_init(atomic_kind_set, qs_kind_set, dispersion_env, pp_section, para_env)
...
subroutine, public dcnum_distribute(dcnum, para_env)
...
subroutine, public d3_cnumber(qs_env, dispersion_env, cnumbers, dcnum, ghost, floating, atomnumber, calculate_forces, debugall)
...
subroutine, public qs_dispersion_setcn(atomic_kind_set, qs_kind_set, dispersion_env, para_env)
...
subroutine, public qs_scaling_init(scaling, vdw_section)
...
subroutine, public calculate_dispersion_pairpot(qs_env, dispersion_env, energy, calculate_forces, atevdw)
...
subroutine, public qs_scaling_dftd3(s6, sr6, s8, vdw_section)
...
Definition of disperson types for DFT calculations.
integer, parameter, public dftd2_pp
integer, parameter, public dftd3_pp
subroutine, public get_qs_env(qs_env, atomic_kind_set, qs_kind_set, cell, super_cell, cell_ref, use_ref_cell, kpoints, dft_control, mos, sab_orb, sab_all, qmmm, qmmm_periodic, sac_ae, sac_ppl, sac_lri, sap_ppnl, sab_vdw, sab_scp, sap_oce, sab_lrc, sab_se, sab_xtbe, sab_tbe, sab_core, sab_xb, sab_xtb_nonbond, sab_almo, sab_kp, sab_kp_nosym, particle_set, energy, force, matrix_h, matrix_h_im, matrix_ks, matrix_ks_im, matrix_vxc, run_rtp, rtp, matrix_h_kp, matrix_h_im_kp, matrix_ks_kp, matrix_ks_im_kp, matrix_vxc_kp, kinetic_kp, matrix_s_kp, matrix_w_kp, matrix_s_RI_aux_kp, matrix_s, matrix_s_RI_aux, matrix_w, matrix_p_mp2, matrix_p_mp2_admm, rho, rho_xc, pw_env, ewald_env, ewald_pw, active_space, mpools, input, para_env, blacs_env, scf_control, rel_control, kinetic, qs_charges, vppl, rho_core, rho_nlcc, rho_nlcc_g, ks_env, ks_qmmm_env, wf_history, scf_env, local_particles, local_molecules, distribution_2d, dbcsr_dist, molecule_kind_set, molecule_set, subsys, cp_subsys, oce, local_rho_set, rho_atom_set, task_list, task_list_soft, rho0_atom_set, rho0_mpole, rhoz_set, ecoul_1c, rho0_s_rs, rho0_s_gs, do_kpoints, has_unit_metric, requires_mo_derivs, mo_derivs, mo_loc_history, nkind, natom, nelectron_total, nelectron_spin, efield, neighbor_list_id, linres_control, xas_env, virial, cp_ddapc_env, cp_ddapc_ewald, outer_scf_history, outer_scf_ihistory, x_data, et_coupling, dftb_potential, results, se_taper, se_store_int_env, se_nddo_mpole, se_nonbond_env, admm_env, lri_env, lri_density, exstate_env, ec_env, dispersion_env, gcp_env, vee, rho_external, external_vxc, mask, mp2_env, bs_env, kg_env, WannierCentres, atprop, ls_scf_env, do_transport, transport_env, v_hartree_rspace, s_mstruct_changed, rho_changed, potential_changed, forces_up_to_date, mscfg_env, almo_scf_env, gradient_history, variable_history, embed_pot, spin_embed_pot, polar_env, mos_last_converged, rhs)
Get the QUICKSTEP environment.
Define the quickstep kind type and their sub types.
subroutine, public get_qs_kind(qs_kind, basis_set, basis_type, ncgf, nsgf, all_potential, tnadd_potential, gth_potential, sgp_potential, upf_potential, se_parameter, dftb_parameter, xtb_parameter, dftb3_param, zeff, elec_conf, mao, lmax_dftb, alpha_core_charge, ccore_charge, core_charge, core_charge_radius, paw_proj_set, paw_atom, hard_radius, hard0_radius, max_rad_local, covalent_radius, vdw_radius, gpw_r3d_rs_type_forced, harmonics, max_iso_not0, max_s_harm, grid_atom, ngrid_ang, ngrid_rad, lmax_rho0, dft_plus_u_atom, l_of_dft_plus_u, n_of_dft_plus_u, u_minus_j, U_of_dft_plus_u, J_of_dft_plus_u, alpha_of_dft_plus_u, beta_of_dft_plus_u, J0_of_dft_plus_u, occupation_of_dft_plus_u, dispersion, bs_occupation, magnetization, no_optimize, addel, laddel, naddel, orbitals, max_scf, eps_scf, smear, u_ramping, u_minus_j_target, eps_u_ramping, init_u_ramping_each_scf, reltmat, ghost, floating, name, element_symbol, pao_basis_size, pao_potentials, pao_descriptors, nelec)
Get attributes of an atomic kind.
subroutine, public set_qs_kind(qs_kind, paw_atom, ghost, floating, hard_radius, hard0_radius, covalent_radius, vdw_radius, lmax_rho0, zeff, no_optimize, dispersion, u_minus_j, reltmat, dftb_parameter, xtb_parameter, elec_conf, pao_basis_size)
Set the components of an atomic kind data set.
Define the neighbor list data types and the corresponding functionality.
subroutine, public neighbor_list_iterator_create(iterator_set, nl, search, nthread)
Neighbor list iterator functions.
subroutine, public neighbor_list_iterator_release(iterator_set)
...
integer function, public neighbor_list_iterate(iterator_set, mepos)
...
subroutine, public get_iterator_info(iterator_set, mepos, ikind, jkind, nkind, ilist, nlist, inode, nnode, iatom, jatom, r, cell)
...
Utilities for string manipulations.
elemental subroutine, public uppercase(string)
Convert all lower case characters in a string to upper case.
pure subroutine, public virial_pair_force(pv_virial, f0, force, rab)
Computes the contribution to the stress tensor from two-body pair-wise forces.