62 eri_coulomb, eri_exchange, all_nu)
66 LOGICAL,
INTENT(IN),
OPTIONAL :: eri_coulomb, eri_exchange, all_nu
68 CHARACTER(len=*),
PARAMETER :: routinen =
'atom_int_setup'
70 INTEGER :: handle, i, ii, info, ipiv(1000), l, l1, &
71 l2, ll, lwork, m, m1, m2, mm1, mm2, n, &
72 n1, n2, nn1, nn2, nu, nx
73 REAL(kind=
dp) :: om, rc, ron, sc, x
74 REAL(kind=
dp),
ALLOCATABLE,
DIMENSION(:) :: cpot, w, work
75 REAL(kind=
dp),
ALLOCATABLE,
DIMENSION(:, :) :: omat, vmat
76 REAL(kind=
dp),
DIMENSION(:, :),
POINTER ::
eri
78 CALL timeset(routinen, handle)
80 IF (integrals%status == 0)
THEN
81 n = maxval(basis%nbas)
82 integrals%n = basis%nbas
84 IF (
PRESENT(eri_coulomb))
THEN
85 integrals%eri_coulomb = eri_coulomb
87 integrals%eri_coulomb = .false.
89 IF (
PRESENT(eri_exchange))
THEN
90 integrals%eri_exchange = eri_exchange
92 integrals%eri_exchange = .false.
94 IF (
PRESENT(all_nu))
THEN
95 integrals%all_nu = all_nu
97 integrals%all_nu = .false.
100 NULLIFY (integrals%ovlp, integrals%kin, integrals%core, integrals%conf)
101 DO ll = 1,
SIZE(integrals%ceri)
102 NULLIFY (integrals%ceri(ll)%int, integrals%eeri(ll)%int)
105 ALLOCATE (integrals%ovlp(n, n, 0:
lmat))
106 integrals%ovlp = 0._dp
108 ALLOCATE (integrals%kin(n, n, 0:
lmat))
109 integrals%kin = 0._dp
113 IF (
PRESENT(potential))
THEN
114 IF (potential%confinement)
THEN
115 ALLOCATE (integrals%conf(n, n, 0:
lmat))
116 integrals%conf = 0._dp
119 IF (potential%conf_type ==
poly_conf)
THEN
122 cpot(1:m) = (basis%grid%rad(1:m)/rc)**sc
128 IF (basis%grid%rad(i) < ron)
THEN
130 ELSEIF (basis%grid%rad(i) < rc)
THEN
131 x = (basis%grid%rad(i) - ron)/om
133 cpot(i) = -6._dp*x**5 + 15._dp*x**4 - 10._dp*x**3 + 1._dp
134 x = (rc - basis%grid%rad(i))**2/om/(basis%grid%rad(i) - ron)
148 SELECT CASE (basis%basis_type)
154 CALL sg_overlap(integrals%ovlp(1:n, 1:n, l), l, basis%am(1:n, l), basis%am(1:n, l))
155 CALL sg_kinetic(integrals%kin(1:n, 1:n, l), l, basis%am(1:n, l), basis%am(1:n, l))
157 IF (integrals%eri_coulomb)
THEN
161 nn1 = (n1*(n1 + 1))/2
164 nn2 = (n2*(n2 + 1))/2
165 IF (integrals%all_nu)
THEN
172 cpassert(ll <=
SIZE(integrals%ceri))
173 ALLOCATE (integrals%ceri(ll)%int(nn1, nn2))
174 integrals%ceri(ll)%int = 0._dp
175 eri => integrals%ceri(ll)%int
176 CALL sg_coulomb(
eri, nu, basis%am(1:n1, l1), l1, basis%am(1:n2, l2), l2)
181 IF (integrals%eri_exchange)
THEN
185 nn1 = (n1*(n1 + 1))/2
188 nn2 = (n2*(n2 + 1))/2
189 DO nu = abs(l1 - l2), l1 + l2, 2
191 cpassert(ll <=
SIZE(integrals%eeri))
192 ALLOCATE (integrals%eeri(ll)%int(nn1, nn2))
193 integrals%eeri(ll)%int = 0._dp
194 eri => integrals%eeri(ll)%int
195 CALL sg_exchange(
eri, nu, basis%am(1:n1, l1), l1, basis%am(1:n2, l2), l2)
204 IF (n > 0 .AND. m > 0)
THEN
205 ALLOCATE (omat(m, m))
207 CALL sg_overlap(omat(1:m, 1:m), l, basis%am(1:m, l), basis%am(1:m, l))
208 CALL contract2(integrals%ovlp(1:n, 1:n, l), omat(1:m, 1:m), basis%cm(1:m, 1:n, l))
209 CALL sg_kinetic(omat(1:m, 1:m), l, basis%am(1:m, l), basis%am(1:m, l))
210 CALL contract2(integrals%kin(1:n, 1:n, l), omat(1:m, 1:m), basis%cm(1:m, 1:n, l))
214 IF (integrals%eri_coulomb)
THEN
218 nn1 = (n1*(n1 + 1))/2
220 mm1 = (m1*(m1 + 1))/2
223 nn2 = (n2*(n2 + 1))/2
225 mm2 = (m2*(m2 + 1))/2
226 IF (integrals%all_nu)
THEN
233 cpassert(ll <=
SIZE(integrals%ceri))
234 ALLOCATE (integrals%ceri(ll)%int(nn1, nn2))
235 integrals%ceri(ll)%int = 0._dp
236 ALLOCATE (omat(mm1, mm2))
238 eri => integrals%ceri(ll)%int
239 CALL sg_coulomb(omat, nu, basis%am(1:m1, l1), l1, basis%am(1:m2, l2), l2)
240 CALL contract4(
eri, omat, basis%cm(1:m1, 1:n1, l1), basis%cm(1:m2, 1:n2, l2))
247 IF (integrals%eri_exchange)
THEN
251 nn1 = (n1*(n1 + 1))/2
253 mm1 = (m1*(m1 + 1))/2
256 nn2 = (n2*(n2 + 1))/2
258 mm2 = (m2*(m2 + 1))/2
259 DO nu = abs(l1 - l2), l1 + l2, 2
261 cpassert(ll <=
SIZE(integrals%eeri))
262 ALLOCATE (integrals%eeri(ll)%int(nn1, nn2))
263 integrals%eeri(ll)%int = 0._dp
264 ALLOCATE (omat(mm1, mm2))
266 eri => integrals%eeri(ll)%int
267 CALL sg_exchange(omat, nu, basis%am(1:m1, l1), l1, basis%am(1:m2, l2), l2)
268 CALL contract4(
eri, omat, basis%cm(1:m1, 1:n1, l1), basis%cm(1:m2, 1:n2, l2))
278 CALL sto_overlap(integrals%ovlp(1:n, 1:n, l), basis%ns(1:n, l), basis%as(1:n, l), &
279 basis%ns(1:n, l), basis%as(1:n, l))
280 CALL sto_kinetic(integrals%kin(1:n, 1:n, l), l, basis%ns(1:n, l), basis%as(1:n, l), &
281 basis%ns(1:n, l), basis%as(1:n, l))
283 cpassert(.NOT. integrals%eri_coulomb)
284 cpassert(.NOT. integrals%eri_exchange)
290 NULLIFY (integrals%utrans, integrals%uptrans)
291 n = maxval(basis%nbas)
292 ALLOCATE (integrals%utrans(n, n, 0:
lmat), integrals%uptrans(n, n, 0:
lmat))
293 integrals%utrans = 0._dp
294 integrals%uptrans = 0._dp
295 integrals%nne = integrals%n
297 ALLOCATE (omat(n, n), vmat(n, n), w(n), work(lwork))
301 omat(1:n, 1:n) = integrals%ovlp(1:n, 1:n, l)
302 CALL jacobi(omat(1:n, 1:n), w(1:n), vmat(1:n, 1:n))
303 omat(1:n, 1:n) = vmat(1:n, 1:n)
306 IF (w(i) > basis%eps_eig)
THEN
308 integrals%utrans(1:n, ii, l) = omat(1:n, i)/sqrt(w(i))
311 integrals%nne(l) = ii
313 omat(1:ii, 1:ii) = matmul(transpose(integrals%utrans(1:n, 1:ii, l)), integrals%utrans(1:n, 1:ii, l))
315 integrals%uptrans(i, i, l) = 1._dp
317 CALL dgesv(ii, ii, omat(1:ii, 1:ii), ii, ipiv, integrals%uptrans(1:ii, 1:ii, l), ii, info)
322 DEALLOCATE (omat, vmat, w, work)
325 CALL timestop(handle)
340 CHARACTER(len=*),
PARAMETER :: routinen =
'atom_ppint_setup'
342 INTEGER :: handle, i, ii, j, k, l, m, n
343 REAL(kind=
dp) :: al, alpha, rc
344 REAL(kind=
dp),
ALLOCATABLE,
DIMENSION(:) :: cpot, xmat
345 REAL(kind=
dp),
ALLOCATABLE,
DIMENSION(:, :) :: omat, spmat
346 REAL(kind=
dp),
DIMENSION(:),
POINTER :: rad
348 CALL timeset(routinen, handle)
350 IF (integrals%ppstat == 0)
THEN
351 n = maxval(basis%nbas)
352 integrals%n = basis%nbas
354 NULLIFY (integrals%core, integrals%hnl)
356 ALLOCATE (integrals%hnl(n, n, 0:
lmat))
357 integrals%hnl = 0._dp
359 ALLOCATE (integrals%core(n, n, 0:
lmat))
360 integrals%core = 0._dp
362 ALLOCATE (integrals%clsd(n, n, 0:
lmat))
363 integrals%clsd = 0._dp
367 SELECT CASE (basis%basis_type)
372 SELECT CASE (potential%ppot_type)
376 CALL sg_nuclear(integrals%core(1:n, 1:n, l), l, basis%am(1:n, l), basis%am(1:n, l))
379 IF (potential%gth_pot%soc)
THEN
380 cpwarn(
"Atom code: GTH SOC is ignored")
382 alpha = 1._dp/potential%gth_pot%rc/sqrt(2._dp)
385 ALLOCATE (omat(n, n), spmat(n, 5))
388 CALL sg_erf(omat(1:n, 1:n), l, alpha, basis%am(1:n, l), basis%am(1:n, l))
389 integrals%core(1:n, 1:n, l) = -potential%gth_pot%zion*omat(1:n, 1:n)
390 DO i = 1, potential%gth_pot%ncl
392 CALL sg_gpot(omat(1:n, 1:n), i - 1, potential%gth_pot%rc, l, basis%am(1:n, l), basis%am(1:n, l))
393 integrals%core(1:n, 1:n, l) = integrals%core(1:n, 1:n, l) + &
394 potential%gth_pot%cl(i)*omat(1:n, 1:n)
396 IF (potential%gth_pot%lpotextended)
THEN
397 DO k = 1, potential%gth_pot%nexp_lpot
398 DO i = 1, potential%gth_pot%nct_lpot(k)
400 CALL sg_gpot(omat(1:n, 1:n), i - 1, potential%gth_pot%alpha_lpot(k), l, &
401 basis%am(1:n, l), basis%am(1:n, l))
402 integrals%core(1:n, 1:n, l) = integrals%core(1:n, 1:n, l) + &
403 potential%gth_pot%cval_lpot(i, k)*omat(1:n, 1:n)
407 IF (potential%gth_pot%lsdpot)
THEN
408 DO k = 1, potential%gth_pot%nexp_lsd
409 DO i = 1, potential%gth_pot%nct_lsd(k)
411 CALL sg_gpot(omat(1:n, 1:n), i - 1, potential%gth_pot%alpha_lsd(k), l, &
412 basis%am(1:n, l), basis%am(1:n, l))
413 integrals%clsd(1:n, 1:n, l) = integrals%clsd(1:n, 1:n, l) + &
414 potential%gth_pot%cval_lsd(i, k)*omat(1:n, 1:n)
420 m = potential%gth_pot%nl(l)
422 CALL sg_proj_ol(spmat(1:n, i), l, basis%am(1:n, l), i - 1, potential%gth_pot%rcnl(l))
424 integrals%hnl(1:n, 1:n, l) = matmul(spmat(1:n, 1:m), &
425 matmul(potential%gth_pot%hnl(1:m, 1:m, l), transpose(spmat(1:n, 1:m))))
427 DEALLOCATE (omat, spmat)
430 CALL upfint_setup(integrals, basis, potential)
432 CALL sgpint_setup(integrals, basis, potential)
439 SELECT CASE (potential%ppot_type)
444 ALLOCATE (omat(m, m))
446 CALL sg_nuclear(omat(1:m, 1:m), l, basis%am(1:m, l), basis%am(1:m, l))
447 CALL contract2(integrals%core(1:n, 1:n, l), omat(1:m, 1:m), basis%cm(1:m, 1:n, l))
452 alpha = 1._dp/potential%gth_pot%rc/sqrt(2._dp)
456 IF (n > 0 .AND. m > 0)
THEN
457 ALLOCATE (omat(m, m), spmat(n, 5), xmat(m))
460 CALL sg_erf(omat(1:m, 1:m), l, alpha, basis%am(1:m, l), basis%am(1:m, l))
461 omat(1:m, 1:m) = -potential%gth_pot%zion*omat(1:m, 1:m)
462 CALL contract2(integrals%core(1:n, 1:n, l), omat(1:m, 1:m), basis%cm(1:m, 1:n, l))
463 DO i = 1, potential%gth_pot%ncl
465 CALL sg_gpot(omat(1:m, 1:m), i - 1, potential%gth_pot%rc, l, basis%am(1:m, l), basis%am(1:m, l))
466 omat(1:m, 1:m) = potential%gth_pot%cl(i)*omat(1:m, 1:m)
467 CALL contract2add(integrals%core(1:n, 1:n, l), omat(1:m, 1:m), basis%cm(1:m, 1:n, l))
469 IF (potential%gth_pot%lpotextended)
THEN
470 DO k = 1, potential%gth_pot%nexp_lpot
471 DO i = 1, potential%gth_pot%nct_lpot(k)
473 CALL sg_gpot(omat(1:m, 1:m), i - 1, potential%gth_pot%alpha_lpot(k), l, &
474 basis%am(1:m, l), basis%am(1:m, l))
475 omat(1:m, 1:m) = potential%gth_pot%cval_lpot(i, k)*omat(1:m, 1:m)
476 CALL contract2add(integrals%core(1:n, 1:n, l), omat(1:m, 1:m), basis%cm(1:m, 1:n, l))
480 IF (potential%gth_pot%lsdpot)
THEN
481 DO k = 1, potential%gth_pot%nexp_lsd
482 DO i = 1, potential%gth_pot%nct_lsd(k)
484 CALL sg_gpot(omat(1:m, 1:m), i - 1, potential%gth_pot%alpha_lsd(k), l, &
485 basis%am(1:m, l), basis%am(1:m, l))
486 omat(1:m, 1:m) = potential%gth_pot%cval_lsd(i, k)*omat(1:m, 1:m)
487 CALL contract2add(integrals%clsd(1:n, 1:n, l), omat(1:m, 1:m), basis%cm(1:m, 1:n, l))
493 k = potential%gth_pot%nl(l)
495 CALL sg_proj_ol(xmat(1:m), l, basis%am(1:m, l), i - 1, potential%gth_pot%rcnl(l))
496 spmat(1:n, i) = matmul(transpose(basis%cm(1:m, 1:n, l)), xmat(1:m))
499 integrals%hnl(1:n, 1:n, l) = matmul(spmat(1:n, 1:k), &
500 matmul(potential%gth_pot%hnl(1:k, 1:k, l), &
501 transpose(spmat(1:n, 1:k))))
503 DEALLOCATE (omat, spmat, xmat)
507 CALL upfint_setup(integrals, basis, potential)
509 CALL sgpint_setup(integrals, basis, potential)
516 SELECT CASE (potential%ppot_type)
520 CALL sto_nuclear(integrals%core(1:n, 1:n, l), basis%ns(1:n, l), basis%as(1:n, l), &
521 basis%ns(1:n, l), basis%as(1:n, l))
524 rad => basis%grid%rad
527 rc = potential%gth_pot%rc
528 alpha = 1._dp/rc/sqrt(2._dp)
531 integrals%core = 0._dp
533 cpot(i) = potential%gth_pot%zion*erfc(alpha*rad(i))/rad(i)
535 DO i = 1, potential%gth_pot%ncl
537 cpot(1:m) = cpot(1:m) + potential%gth_pot%cl(i)*(rad/rc)**ii*exp(-0.5_dp*(rad/rc)**2)
539 IF (potential%gth_pot%lpotextended)
THEN
540 DO k = 1, potential%gth_pot%nexp_lpot
541 al = potential%gth_pot%alpha_lpot(k)
542 DO i = 1, potential%gth_pot%nct_lpot(k)
544 cpot(1:m) = cpot(1:m) + potential%gth_pot%cval_lpot(i, k)*(rad/al)**ii*exp(-0.5_dp*(rad/al)**2)
551 ALLOCATE (omat(n, n))
553 CALL sto_nuclear(omat(1:n, 1:n), basis%ns(1:n, l), basis%as(1:n, l), &
554 basis%ns(1:n, l), basis%as(1:n, l))
555 integrals%core(1:n, 1:n, l) = integrals%core(1:n, 1:n, l) - potential%gth_pot%zion*omat(1:n, 1:n)
559 IF (potential%gth_pot%lsdpot)
THEN
561 DO k = 1, potential%gth_pot%nexp_lsd
562 al = potential%gth_pot%alpha_lsd(k)
563 DO i = 1, potential%gth_pot%nct_lsd(k)
565 cpot(:) = cpot + potential%gth_pot%cval_lsd(i, k)*(rad/al)**ii*exp(-0.5_dp*(rad/al)**2)
574 ALLOCATE (spmat(n, 5))
576 k = potential%gth_pot%nl(l)
578 rc = potential%gth_pot%rcnl(l)
579 cpot(:) =
sqrt2/sqrt(
gamma1(l + 2*i - 1))*rad**(l + 2*i - 2)*exp(-0.5_dp*(rad/rc)**2)/rc**(l + 2*i - 0.5_dp)
580 DO j = 1, basis%nbas(l)
584 integrals%hnl(1:n, 1:n, l) = matmul(spmat(1:n, 1:k), &
585 matmul(potential%gth_pot%hnl(1:k, 1:k, l), &
586 transpose(spmat(1:n, 1:k))))
592 CALL upfint_setup(integrals, basis, potential)
594 CALL sgpint_setup(integrals, basis, potential)
606 IF (any(potential%ecp_pot%nrloc(1:potential%ecp_pot%nloc) == 1))
THEN
608 DO k = 1, potential%ecp_pot%nloc
609 n = potential%ecp_pot%nrloc(k)
610 IF (n == 1) alpha = alpha + potential%ecp_pot%aloc(k)
612 integrals%core = (alpha - potential%ecp_pot%zion)*integrals%core
614 integrals%core = -potential%ecp_pot%zion*integrals%core
618 rad => basis%grid%rad
621 DO k = 1, potential%ecp_pot%nloc
622 n = potential%ecp_pot%nrloc(k)
623 alpha = potential%ecp_pot%bloc(k)
625 cpot(:) = cpot + potential%ecp_pot%aloc(k)/rad*(exp(-alpha*rad**2) - 1.0_dp)
627 cpot(:) = cpot + potential%ecp_pot%aloc(k)*rad**(n - 2)*exp(-alpha*rad**2)
632 DO l = 0, min(potential%ecp_pot%lmax,
lmat)
634 DO k = 1, potential%ecp_pot%npot(l)
635 n = potential%ecp_pot%nrpot(k, l)
636 alpha = potential%ecp_pot%bpot(k, l)
637 cpot(:) = cpot + potential%ecp_pot%apot(k, l)*rad**(n - 2)*exp(-alpha*rad**2)
639 DO i = 1, basis%nbas(l)
640 DO j = i, basis%nbas(l)
641 integrals%hnl(i, j, l) =
integrate_grid(cpot, basis%bf(:, i, l), basis%bf(:, j, l), basis%grid)
642 integrals%hnl(j, i, l) = integrals%hnl(i, j, l)
651 CALL timestop(handle)
819 INTEGER,
INTENT(IN) :: reltyp
820 REAL(
dp),
INTENT(IN) :: zcore
821 REAL(
dp),
INTENT(IN),
OPTIONAL :: alpha
823 CHARACTER(len=*),
PARAMETER :: routinen =
'atom_relint_setup'
825 INTEGER :: dkhorder, handle, i, k1, k2, l, m, n, nl
827 REAL(
dp),
ALLOCATABLE,
DIMENSION(:) :: cpot
828 REAL(kind=
dp),
ALLOCATABLE,
DIMENSION(:) :: modpot
829 REAL(kind=
dp),
ALLOCATABLE,
DIMENSION(:, :) :: ener, sps
830 REAL(kind=
dp),
ALLOCATABLE,
DIMENSION(:, :, :) :: hmat, pvp,
sp, tp, vp, wfn
832 CALL timeset(routinen, handle)
854 NULLIFY (integrals%tzora, integrals%hdkh)
857 NULLIFY (integrals%hdkh)
859 IF (integrals%zorastat == 0)
THEN
860 n = maxval(basis%nbas)
861 ALLOCATE (integrals%tzora(n, n, 0:
lmat))
862 integrals%tzora = 0._dp
864 ALLOCATE (modpot(1:m), cpot(1:m))
868 cpot(1:m) = cpot(1:m)/basis%grid%rad2(1:m)
872 integrals%tzora(1:nl, 1:nl, l) = real(l*(l + 1),
dp)*integrals%tzora(1:nl, 1:nl, l)
874 cpot(1:m) = cpot(1:m)*basis%grid%rad2(1:m)
879 ALLOCATE (hmat(n, n, 0:
lmat), wfn(n, n, 0:
lmat), ener(n, 0:
lmat), pvp(n, n, 0:
lmat), sps(n, n))
880 hmat(:, :, :) = integrals%kin + integrals%tzora
884 CALL atom_solve(hmat, integrals%utrans, wfn, ener, basis%nbas, integrals%nne,
lmat)
887 cpot(1:m) = cpot(1:m)/basis%grid%rad2(1:m)
892 pvp(1:nl, 1:nl, l) = real(l*(l + 1),
dp)*pvp(1:nl, 1:nl, l)
894 cpot(1:m) = cpot(1:m)*basis%grid%rad2(1:m)
900 DO i = 1, integrals%nne(l)
901 IF (ener(i, l) < 0._dp)
THEN
902 ascal = sum(wfn(1:nl, i, l)*matmul(pvp(1:nl, 1:nl, l), wfn(1:nl, i, l)))
903 ener(i, l) = ener(i, l)*ascal/(1.0_dp + ascal)
913 DO i = 1, integrals%nne(l)
916 hmat(k1, k2, l) = hmat(k1, k2, l) + ener(i, l)*wfn(k1, i, l)*wfn(k2, i, l)
921 sps(1:nl, 1:nl) = matmul(integrals%ovlp(1:nl, 1:nl, l), &
922 matmul(hmat(1:nl, 1:nl, l), integrals%ovlp(1:nl, 1:nl, l)))
924 integrals%tzora(1:nl, 1:nl, l) = integrals%tzora(1:nl, 1:nl, l) - sps(1:nl, 1:nl)
927 DEALLOCATE (hmat, wfn, ener, pvp, sps)
930 DEALLOCATE (modpot, cpot)
932 integrals%zorastat = 1
938 NULLIFY (integrals%tzora)
940 IF (integrals%dkhstat == 0)
THEN
941 n = maxval(basis%nbas)
942 ALLOCATE (integrals%hdkh(n, n, 0:
lmat))
943 integrals%hdkh = 0._dp
945 m = maxval(basis%nprim)
946 ALLOCATE (tp(m, m, 0:
lmat),
sp(m, m, 0:
lmat), vp(m, m, 0:
lmat), pvp(m, m, 0:
lmat))
952 SELECT CASE (basis%basis_type)
960 CALL sg_kinetic(tp(1:m, 1:m, l), l, basis%am(1:m, l), basis%am(1:m, l))
961 CALL sg_overlap(
sp(1:m, 1:m, l), l, basis%am(1:m, l), basis%am(1:m, l))
962 IF (
PRESENT(alpha))
THEN
963 CALL sg_erfc(vp(1:m, 1:m, l), l, alpha, basis%am(1:m, l), basis%am(1:m, l))
965 CALL sg_nuclear(vp(1:m, 1:m, l), l, basis%am(1:m, l), basis%am(1:m, l))
967 CALL sg_kinnuc(pvp(1:m, 1:m, l), l, basis%am(1:m, l), basis%am(1:m, l))
968 vp(1:m, 1:m, l) = -zcore*vp(1:m, 1:m, l)
969 pvp(1:m, 1:m, l) = -zcore*pvp(1:m, 1:m, l)
979 CALL dkh_integrals(integrals, basis, dkhorder,
sp, tp, vp, pvp)
981 integrals%dkhstat = 1
983 DEALLOCATE (tp,
sp, vp, pvp)
986 cpassert(
ASSOCIATED(integrals%hdkh))
991 CALL timestop(handle)