32 #include "./base/base_uses.f90"
40 REAL(KIND=
dp),
DIMENSION(:, :),
ALLOCATABLE :: sabint
41 REAL(KIND=
dp),
DIMENSION(:, :),
ALLOCATABLE :: sooint
42 REAL(KIND=
dp),
DIMENSION(:, :, :),
ALLOCATABLE :: abaint
43 REAL(KIND=
dp),
DIMENSION(:, :, :),
ALLOCATABLE :: abbint
47 REAL(KIND=
dp),
DIMENSION(:, :, :),
ALLOCATABLE :: dsabint
48 REAL(KIND=
dp),
DIMENSION(:, :, :),
ALLOCATABLE :: dsooint
49 REAL(KIND=
dp),
DIMENSION(:, :, :, :),
ALLOCATABLE :: dabaint
50 REAL(KIND=
dp),
DIMENSION(:, :, :, :),
ALLOCATABLE :: dabbint
54 CHARACTER(len=*),
PARAMETER,
PRIVATE :: moduleN =
'lri_integrals'
77 SUBROUTINE lri_int(lri_env, lrii, rab, obasa, obasb, fbasa, fbasb, &
78 iatom, jatom, ikind, jkind, calculate_forces)
80 TYPE(lri_environment_type),
POINTER :: lri_env
81 TYPE(lri_int_type),
POINTER :: lrii
82 REAL(kind=
dp),
DIMENSION(3),
INTENT(IN) :: rab
83 TYPE(gto_basis_set_type),
POINTER :: obasa, obasb, fbasa, fbasb
84 INTEGER,
INTENT(IN) :: iatom, jatom, ikind, jkind
85 LOGICAL,
INTENT(IN) :: calculate_forces
87 IF (lri_env%use_shg_integrals)
THEN
88 CALL lri_int_shg(lri_env, lrii, rab, obasa, obasb, fbasa, fbasb, &
89 iatom, jatom, ikind, jkind, calculate_forces)
91 CALL lri_int_os(lri_env, lrii, rab, obasa, obasb, fbasa, fbasb, &
92 iatom, jatom, ikind, calculate_forces)
112 SUBROUTINE lri_int2(lri_env, lrii, lriint, rab, obasa, obasb, fbasa, fbasb, iatom, jatom, ikind, jkind)
114 TYPE(lri_environment_type),
POINTER :: lri_env
115 TYPE(lri_int_type),
POINTER :: lrii
116 TYPE(int_type) :: lriint
117 REAL(kind=
dp),
DIMENSION(3),
INTENT(IN) :: rab
118 TYPE(gto_basis_set_type),
POINTER :: obasa, obasb, fbasa, fbasb
119 INTEGER,
INTENT(IN) :: iatom, jatom, ikind, jkind
122 INTEGER,
DIMENSION(:, :, :),
POINTER :: fba_index, fbb_index, oba_index, &
125 REAL(kind=
dp),
ALLOCATABLE,
DIMENSION(:, :, :) :: dummy1, waux_mat
126 REAL(kind=
dp),
ALLOCATABLE,
DIMENSION(:, :, :, :) :: dummy2, dwaux_mat
127 REAL(kind=
dp),
DIMENSION(:, :, :),
POINTER :: scon_fba, scon_fbb, scon_oba, scon_obb
128 REAL(kind=
dp),
DIMENSION(:, :, :, :),
POINTER :: scona_mix, sconb_mix
130 dab = sqrt(sum(rab*rab))
131 IF (iatom == jatom .AND. dab < lri_env%delta)
THEN
132 cpassert(
ALLOCATED(lriint%sabint))
133 cpassert(
ALLOCATED(lriint%sooint))
134 cpassert(
ALLOCATED(lriint%abaint))
137 lriint%sabint(1:nfa, 1:nfa) = lri_env%bas_prop(ikind)%ri_ovlp(1:nfa, 1:nfa)
138 lriint%sooint(1:nba, 1:nba) = lri_env%bas_prop(ikind)%orb_ovlp(1:nba, 1:nba)
139 lriint%abaint(1:nba, 1:nba, 1:nfa) = lri_env%bas_prop(ikind)%ovlp3
141 IF (lri_env%use_shg_integrals)
THEN
142 scon_oba => lri_env%bas_prop(ikind)%scon_orb
143 scon_obb => lri_env%bas_prop(jkind)%scon_orb
144 scon_fba => lri_env%bas_prop(ikind)%scon_ri
145 scon_fbb => lri_env%bas_prop(jkind)%scon_ri
146 scona_mix => lri_env%bas_prop(ikind)%scon_mix
147 sconb_mix => lri_env%bas_prop(jkind)%scon_mix
148 oba_index => lri_env%bas_prop(ikind)%orb_index
149 fba_index => lri_env%bas_prop(ikind)%ri_index
150 obb_index => lri_env%bas_prop(jkind)%orb_index
151 fbb_index => lri_env%bas_prop(jkind)%ri_index
156 IF (
ALLOCATED(lriint%sabint))
THEN
158 waux_mat, dwaux_mat, .true., .false., contraction_high=.false.)
161 IF (
ALLOCATED(lriint%sooint))
THEN
163 waux_mat, dwaux_mat, .true., .false., contraction_high=.true.)
166 IF (
ALLOCATED(lriint%abaint))
THEN
168 scon_obb, scona_mix, oba_index, fba_index, &
169 lri_env%cg_shg%cg_coeff, lri_env%cg_shg%cg_none0_list, &
170 lri_env%cg_shg%ncg_none0, &
171 waux_mat, dwaux_mat, .true., .false.)
174 IF (
ALLOCATED(lriint%abbint))
THEN
175 IF (ikind == jkind)
THEN
176 cpassert(
ALLOCATED(lriint%abaint))
178 rab, obasa, fbasa, .true., .false.)
181 scon_oba, sconb_mix, obb_index, fbb_index, &
182 lri_env%cg_shg%cg_coeff, lri_env%cg_shg%cg_none0_list, &
183 lri_env%cg_shg%ncg_none0, &
184 waux_mat, dwaux_mat, .true., .false.)
187 DEALLOCATE (waux_mat, dwaux_mat)
190 IF (
ALLOCATED(lriint%sabint))
THEN
192 .false., lri_env%debug, lrii%dmax_ab)
195 IF (
ALLOCATED(lriint%sooint))
THEN
197 .false., lri_env%debug, lrii%dmax_oo)
200 IF (
ALLOCATED(lriint%abaint))
THEN
202 .false., lri_env%debug, lrii%dmax_aba)
205 IF (
ALLOCATED(lriint%abbint))
THEN
207 .false., lri_env%debug, lrii%dmax_abb)
231 SUBROUTINE lri_dint(lri_env, lrii, rab, obasa, obasb, fbasa, fbasb, &
232 iatom, jatom, ikind, jkind, calculate_forces)
234 TYPE(lri_environment_type),
POINTER :: lri_env
235 TYPE(lri_int_type),
POINTER :: lrii
236 REAL(kind=
dp),
DIMENSION(3),
INTENT(IN) :: rab
237 TYPE(gto_basis_set_type),
POINTER :: obasa, obasb, fbasa, fbasb
238 INTEGER,
INTENT(IN) :: iatom, jatom, ikind, jkind
239 LOGICAL,
INTENT(IN) :: calculate_forces
241 IF (lri_env%use_shg_integrals)
THEN
242 CALL lri_int_shg(lri_env, lrii, rab, obasa, obasb, fbasa, fbasb, &
243 iatom, jatom, ikind, jkind, calculate_forces)
245 CALL lri_int_os(lri_env, lrii, rab, obasa, obasb, fbasa, fbasb, &
246 iatom, jatom, ikind, calculate_forces)
266 SUBROUTINE lri_dint2(lri_env, lrii, lridint, rab, obasa, obasb, fbasa, fbasb, &
267 iatom, jatom, ikind, jkind)
269 TYPE(lri_environment_type),
POINTER :: lri_env
270 TYPE(lri_int_type),
POINTER :: lrii
271 TYPE(dint_type) :: lridint
272 REAL(kind=
dp),
DIMENSION(3),
INTENT(IN) :: rab
273 TYPE(gto_basis_set_type),
POINTER :: obasa, obasb, fbasa, fbasb
274 INTEGER,
INTENT(IN) :: iatom, jatom, ikind, jkind
276 INTEGER :: nba, nbb, nfa, nfb
277 INTEGER,
DIMENSION(:, :, :),
POINTER :: fba_index, fbb_index, oba_index, &
280 REAL(kind=
dp),
ALLOCATABLE,
DIMENSION(:, :) :: dummy1
281 REAL(kind=
dp),
ALLOCATABLE,
DIMENSION(:, :, :) :: dummy2, waux_mat
282 REAL(kind=
dp),
ALLOCATABLE,
DIMENSION(:, :, :, :) :: dwaux_mat
283 REAL(kind=
dp),
DIMENSION(:, :, :),
POINTER :: scon_fba, scon_fbb, scon_oba, scon_obb
284 REAL(kind=
dp),
DIMENSION(:, :, :, :),
POINTER :: scona_mix, sconb_mix
286 dab = sqrt(sum(rab*rab))
292 IF (iatom == jatom .AND. dab < lri_env%delta)
THEN
295 IF (lrii%calc_force_pair)
THEN
296 IF (lri_env%use_shg_integrals)
THEN
297 scon_oba => lri_env%bas_prop(ikind)%scon_orb
298 scon_obb => lri_env%bas_prop(jkind)%scon_orb
299 scon_fba => lri_env%bas_prop(ikind)%scon_ri
300 scon_fbb => lri_env%bas_prop(jkind)%scon_ri
301 scona_mix => lri_env%bas_prop(ikind)%scon_mix
302 sconb_mix => lri_env%bas_prop(jkind)%scon_mix
303 oba_index => lri_env%bas_prop(ikind)%orb_index
304 fba_index => lri_env%bas_prop(ikind)%ri_index
305 obb_index => lri_env%bas_prop(jkind)%orb_index
306 fbb_index => lri_env%bas_prop(jkind)%ri_index
309 waux_mat, dwaux_mat, .true.)
311 IF (
ALLOCATED(lridint%dsabint))
THEN
313 waux_mat, dwaux_mat, .false., .true., contraction_high=.false.)
316 IF (
ALLOCATED(lridint%dsooint))
THEN
318 waux_mat, dwaux_mat, .false., .true., contraction_high=.true.)
321 IF (
ALLOCATED(lridint%dabaint))
THEN
323 scon_obb, scona_mix, oba_index, fba_index, &
324 lri_env%cg_shg%cg_coeff, lri_env%cg_shg%cg_none0_list, &
325 lri_env%cg_shg%ncg_none0, &
326 waux_mat, dwaux_mat, .false., .true.)
329 IF (
ALLOCATED(lridint%dabbint))
THEN
330 IF (ikind == jkind)
THEN
331 cpassert(
ALLOCATED(lridint%dabaint))
333 rab, obasa, fbasa, .false., .true.)
336 scon_oba, sconb_mix, obb_index, fbb_index, &
337 lri_env%cg_shg%cg_coeff, lri_env%cg_shg%cg_none0_list, &
338 lri_env%cg_shg%ncg_none0, &
339 waux_mat, dwaux_mat, .false., .true.)
342 DEALLOCATE (waux_mat, dwaux_mat)
347 IF (
ALLOCATED(lridint%dsabint))
THEN
348 ALLOCATE (dummy1(nfa, nfb))
350 .true., lri_env%debug, lrii%dmax_ab)
354 IF (
ALLOCATED(lridint%dsooint))
THEN
355 ALLOCATE (dummy1(nba, nbb))
357 .true., lri_env%debug, lrii%dmax_oo)
361 IF (
ALLOCATED(lridint%dabaint))
THEN
362 ALLOCATE (dummy2(nba, nbb, nfa))
364 .true., lri_env%debug, lrii%dmax_aba)
368 IF (
ALLOCATED(lridint%dabbint))
THEN
369 ALLOCATE (dummy2(nba, nbb, nfb))
371 .true., lri_env%debug, lrii%dmax_abb)
395 SUBROUTINE lri_int_os(lri_env, lrii, rab, obasa, obasb, fbasa, fbasb, &
396 iatom, jatom, ikind, calculate_forces)
398 TYPE(lri_environment_type),
POINTER :: lri_env
399 TYPE(lri_int_type),
POINTER :: lrii
400 REAL(kind=
dp),
DIMENSION(3),
INTENT(IN) :: rab
401 TYPE(gto_basis_set_type),
POINTER :: obasa, obasb, fbasa, fbasb
402 INTEGER,
INTENT(IN) :: iatom, jatom, ikind
403 LOGICAL,
INTENT(IN) :: calculate_forces
405 CHARACTER(LEN=*),
PARAMETER :: routinen =
'lri_int_os'
407 INTEGER :: handle, nba, nbb, nfa, nfb
411 CALL timeset(routinen, handle)
413 dab = sqrt(sum(rab*rab))
420 IF (iatom == jatom .AND. dab < lri_env%delta)
THEN
422 lrii%sab(1:nfa, 1:nfa) = lri_env%bas_prop(ikind)%ri_ovlp(1:nfa, 1:nfa)
424 lrii%soo(1:nba, 1:nba) = lri_env%bas_prop(ikind)%orb_ovlp(1:nba, 1:nba)
427 fba=fbasa, calculate_forces=.false., debug=lri_env%debug, &
429 IF (calculate_forces)
THEN
432 lrii%dabdaint = 0.0_dp
433 lrii%dabbint = 0.0_dp
436 IF (calculate_forces)
THEN
437 do_force = lrii%calc_force_pair
443 do_force, lri_env%debug, lrii%dmax_ab)
446 do_force, lri_env%debug, lrii%dmax_oo)
449 do_force, lri_env%debug, lrii%dmax_aba)
452 do_force, lri_env%debug, lrii%dmax_abb)
455 CALL timestop(handle)
457 END SUBROUTINE lri_int_os
474 SUBROUTINE lri_int_shg(lri_env, lrii, rab, obasa, obasb, fbasa, fbasb, &
475 iatom, jatom, ikind, jkind, calculate_forces)
477 TYPE(lri_environment_type),
POINTER :: lri_env
478 TYPE(lri_int_type),
POINTER :: lrii
479 REAL(kind=
dp),
DIMENSION(3),
INTENT(IN) :: rab
480 TYPE(gto_basis_set_type),
POINTER :: obasa, obasb, fbasa, fbasb
481 INTEGER,
INTENT(IN) :: iatom, jatom, ikind, jkind
482 LOGICAL,
INTENT(IN) :: calculate_forces
484 CHARACTER(LEN=*),
PARAMETER :: routinen =
'lri_int_shg'
486 INTEGER :: handle, nba, nbb, nfa, nfb
487 INTEGER,
DIMENSION(:, :, :),
POINTER :: fba_index, fbb_index, oba_index, &
491 REAL(kind=
dp),
ALLOCATABLE,
DIMENSION(:, :, :) :: waux_mat
492 REAL(kind=
dp),
ALLOCATABLE,
DIMENSION(:, :, :, :) :: dwaux_mat
493 REAL(kind=
dp),
DIMENSION(:, :, :),
POINTER :: scon_fba, scon_fbb, scon_oba, scon_obb
494 REAL(kind=
dp),
DIMENSION(:, :, :, :),
POINTER :: scona_mix, sconb_mix
496 CALL timeset(routinen, handle)
497 NULLIFY (scon_oba, scon_obb, scon_fba, scon_fbb, scona_mix, sconb_mix, &
498 oba_index, obb_index, fba_index, fbb_index)
499 dab = sqrt(sum(rab*rab))
506 IF (iatom == jatom .AND. dab < lri_env%delta)
THEN
508 lrii%sab(1:nfa, 1:nfa) = lri_env%bas_prop(ikind)%ri_ovlp(1:nfa, 1:nfa)
510 lrii%soo(1:nba, 1:nba) = lri_env%bas_prop(ikind)%orb_ovlp(1:nba, 1:nba)
512 lrii%abaint(1:nba, 1:nba, 1:nfa) = lri_env%bas_prop(ikind)%ovlp3
513 IF (calculate_forces)
THEN
516 lrii%dabdaint = 0.0_dp
517 lrii%dabbint = 0.0_dp
520 IF (calculate_forces)
THEN
521 do_force = lrii%calc_force_pair
525 scon_oba => lri_env%bas_prop(ikind)%scon_orb
526 scon_obb => lri_env%bas_prop(jkind)%scon_orb
527 scon_fba => lri_env%bas_prop(ikind)%scon_ri
528 scon_fbb => lri_env%bas_prop(jkind)%scon_ri
529 scona_mix => lri_env%bas_prop(ikind)%scon_mix
530 sconb_mix => lri_env%bas_prop(jkind)%scon_mix
531 oba_index => lri_env%bas_prop(ikind)%orb_index
532 fba_index => lri_env%bas_prop(ikind)%ri_index
533 obb_index => lri_env%bas_prop(jkind)%orb_index
534 fbb_index => lri_env%bas_prop(jkind)%ri_index
539 waux_mat, dwaux_mat, .true., do_force, contraction_high=.false.)
542 waux_mat, dwaux_mat, .true., do_force, contraction_high=.true.)
545 scon_obb, scona_mix, oba_index, fba_index, &
546 lri_env%cg_shg%cg_coeff, lri_env%cg_shg%cg_none0_list, &
547 lri_env%cg_shg%ncg_none0, &
548 waux_mat, dwaux_mat, .true., do_force)
550 IF (ikind == jkind)
THEN
552 rab, obasa, fbasa, .true., do_force)
555 scon_oba, sconb_mix, obb_index, fbb_index, &
556 lri_env%cg_shg%cg_coeff, lri_env%cg_shg%cg_none0_list, &
557 lri_env%cg_shg%ncg_none0, &
558 waux_mat, dwaux_mat, .true., do_force)
561 DEALLOCATE (waux_mat, dwaux_mat)
564 CALL timestop(handle)
566 END SUBROUTINE lri_int_shg
586 skip_sab, skip_soo, skip_aba, skip_abb, &
587 skip_dsab, skip_dsoo, skip_daba, skip_dabb)
589 TYPE(int_type),
INTENT(INOUT),
OPTIONAL :: lriint
590 TYPE(dint_type),
INTENT(INOUT),
OPTIONAL :: lridint
591 INTEGER,
INTENT(IN) :: nba, nbb, nfa, nfb
592 LOGICAL,
INTENT(IN),
OPTIONAL :: skip_sab, skip_soo, skip_aba, skip_abb, &
593 skip_dsab, skip_dsoo, skip_daba, &
596 LOGICAL :: do_aba, do_abb, do_daba, do_dabb, &
597 do_dsab, do_dsoo, do_sab, do_soo
599 IF (
PRESENT(lriint))
THEN
601 IF (
PRESENT(skip_sab)) do_sab = .NOT. skip_sab
603 IF (
PRESENT(skip_soo)) do_soo = .NOT. skip_soo
605 IF (
PRESENT(skip_aba)) do_aba = .NOT. skip_aba
607 IF (
PRESENT(skip_abb)) do_abb = .NOT. skip_abb
610 IF (
ALLOCATED(lriint%sabint))
DEALLOCATE (lriint%sabint)
611 ALLOCATE (lriint%sabint(nfa, nfb))
612 lriint%sabint = 0.0_dp
615 IF (
ALLOCATED(lriint%sooint))
DEALLOCATE (lriint%sooint)
616 ALLOCATE (lriint%sooint(nba, nbb))
617 lriint%sooint = 0.0_dp
620 IF (
ALLOCATED(lriint%abaint))
DEALLOCATE (lriint%abaint)
621 ALLOCATE (lriint%abaint(nba, nbb, nfa))
622 lriint%abaint = 0.0_dp
625 IF (
ALLOCATED(lriint%abbint))
DEALLOCATE (lriint%abbint)
626 ALLOCATE (lriint%abbint(nba, nbb, nfb))
627 lriint%abbint = 0.0_dp
631 IF (
PRESENT(lridint))
THEN
633 IF (
PRESENT(skip_dsab)) do_dsab = .NOT. skip_dsab
635 IF (
PRESENT(skip_dsoo)) do_dsoo = .NOT. skip_dsoo
637 IF (
PRESENT(skip_daba)) do_daba = .NOT. skip_daba
639 IF (
PRESENT(skip_dabb)) do_dabb = .NOT. skip_dabb
642 IF (
ALLOCATED(lridint%dsabint))
DEALLOCATE (lridint%dsabint)
643 ALLOCATE (lridint%dsabint(nfa, nfb, 3))
644 lridint%dsabint = 0.0_dp
647 IF (
ALLOCATED(lridint%dsooint))
DEALLOCATE (lridint%dsooint)
648 ALLOCATE (lridint%dsooint(nba, nbb, 3))
649 lridint%dsooint = 0.0_dp
652 IF (
ALLOCATED(lridint%dabaint))
DEALLOCATE (lridint%dabaint)
653 ALLOCATE (lridint%dabaint(nba, nbb, nfa, 3))
654 lridint%dabaint = 0.0_dp
657 IF (
ALLOCATED(lridint%dabbint))
DEALLOCATE (lridint%dabbint)
658 ALLOCATE (lridint%dabbint(nba, nbb, nfb, 3))
659 lridint%dabbint = 0.0_dp
672 TYPE(int_type),
INTENT(INOUT),
OPTIONAL :: lriint
673 TYPE(dint_type),
INTENT(INOUT),
OPTIONAL :: lridint
675 IF (
PRESENT(lriint))
THEN
676 IF (
ALLOCATED(lriint%sabint))
DEALLOCATE (lriint%sabint)
677 IF (
ALLOCATED(lriint%sooint))
DEALLOCATE (lriint%sooint)
678 IF (
ALLOCATED(lriint%abaint))
DEALLOCATE (lriint%abaint)
679 IF (
ALLOCATED(lriint%abbint))
DEALLOCATE (lriint%abbint)
682 IF (
PRESENT(lridint))
THEN
683 IF (
ALLOCATED(lridint%dsabint))
DEALLOCATE (lridint%dsabint)
684 IF (
ALLOCATED(lridint%dsooint))
DEALLOCATE (lridint%dsooint)
685 IF (
ALLOCATED(lridint%dabaint))
DEALLOCATE (lridint%dabaint)
686 IF (
ALLOCATED(lridint%dabbint))
DEALLOCATE (lridint%dabbint)
Calculation of contracted, spherical Gaussian integrals using the (OS) integral scheme....
subroutine, public int_overlap_aba_os(abaint, dabdaint, rab, oba, obb, fba, calculate_forces, debug, dmax)
calculate integrals (a,b,fa)
subroutine, public int_overlap_ab_os(sab, dsab, rab, fba, fbb, calculate_forces, debug, dmax)
calculate overlap integrals (a,b)
subroutine, public int_overlap_abb_os(abbint, dabbint, rab, oba, obb, fbb, calculate_forces, debug, dmax)
calculate integrals (a,b,fb)
Calculation of contracted, spherical Gaussian integrals using the solid harmonic Gaussian (SHG) integ...
subroutine, public lri_precalc_angular_shg_part(oba, obb, fba, fbb, rab, Waux_mat, dWaux_mat, calculate_forces)
precalculates the angular part of the SHG integrals for the matrices (fa,fb), (a,b),...
subroutine, public int_overlap_ab_shg_low(sab, dsab, rab, fba, fbb, scona_shg, sconb_shg, Waux_mat, dWaux_mat, calculate_ints, calculate_forces, contraction_high)
calculate overlap integrals (a,b); requires angular-dependent part as input
subroutine, public get_abb_same_kind(abbint, dabbint, abaint, dabdaint, rab, oba, fba, calculate_ints, calculate_forces)
obtain integrals (a,b,fb) by symmetry relations from (a,b,fa) if basis sets at a and b are of the sam...
subroutine, public int_overlap_abb_shg_low(abbint, dabbint, rab, oba, obb, fbb, scon_oba, sconb_mix, obb_index, fbb_index, cg_coeff, cg_none0_list, ncg_none0, Waux_mat, dWaux_mat, calculate_ints, calculate_forces)
calculate integrals (a,b,fb); requires angular-dependent part as input
subroutine, public int_overlap_aba_shg_low(abaint, dabdaint, rab, oba, obb, fba, scon_obb, scona_mix, oba_index, fba_index, cg_coeff, cg_none0_list, ncg_none0, Waux_mat, dWaux_mat, calculate_ints, calculate_forces)
calculate integrals (a,b,fa); requires angular-dependent part as input
Defines the basic variable types.
integer, parameter, public dp
contains the types and subroutines for dealing with the lri_env lri : local resolution of the identit...
Calculates integrals for LRIGPW method lri : local resolution of the identity.
subroutine, public deallocate_int_type(lriint, lridint)
...
subroutine, public allocate_int_type(lriint, lridint, nba, nbb, nfa, nfb, skip_sab, skip_soo, skip_aba, skip_abb, skip_dsab, skip_dsoo, skip_daba, skip_dabb)
...
subroutine, public lri_dint(lri_env, lrii, rab, obasa, obasb, fbasa, fbasb, iatom, jatom, ikind, jkind, calculate_forces)
...
subroutine, public lri_int2(lri_env, lrii, lriint, rab, obasa, obasb, fbasa, fbasb, iatom, jatom, ikind, jkind)
calcuates the lri integrals using solid harmonic Gaussians
subroutine, public lri_int(lri_env, lrii, rab, obasa, obasb, fbasa, fbasb, iatom, jatom, ikind, jkind, calculate_forces)
calcuates the lri integrals using solid harmonic Gaussians
subroutine, public lri_dint2(lri_env, lrii, lridint, rab, obasa, obasb, fbasa, fbasb, iatom, jatom, ikind, jkind)
...