22 gto_basis_set_p_type,&
25 USE dbcsr_api,
ONLY: dbcsr_p_type
33 neighbor_list_iterator_p_type,&
35 neighbor_list_set_p_type,&
39 #include "./base/base_uses.f90"
48 INTEGER :: compression
49 REAL(KIND=
dp),
DIMENSION(:),
POINTER :: cdp
50 REAL(KIND=
sp),
DIMENSION(:),
POINTER :: csp
51 INTEGER(INT_8),
DIMENSION(:),
POINTER :: cip
55 TYPE(carray),
DIMENSION(:),
POINTER :: ca
56 END TYPE int_container
68 REAL(KIND=
dp),
DIMENSION(:),
POINTER :: avec
69 REAL(KIND=
dp),
DIMENSION(:),
POINTER :: aveca
70 REAL(KIND=
dp),
DIMENSION(:),
POINTER :: avecb
72 REAL(KIND=
dp),
DIMENSION(:),
POINTER :: tvec
73 REAL(KIND=
dp),
DIMENSION(:),
POINTER :: tveca
74 REAL(KIND=
dp),
DIMENSION(:),
POINTER :: tvecb
80 REAL(KIND=
dp) :: lambda
81 REAL(KIND=
dp) :: lambdaa
82 REAL(KIND=
dp) :: lambdab
84 REAL(KIND=
dp) :: charge
85 REAL(KIND=
dp) :: chargea
86 REAL(KIND=
dp) :: chargeb
87 END TYPE lri_rhoab_type
93 LOGICAL :: calc_force_pair
103 REAL(KIND=
dp) :: cond_num
105 REAL(KIND=
dp),
DIMENSION(:, :, :),
ALLOCATABLE :: abaint
106 REAL(KIND=
dp),
DIMENSION(:),
ALLOCATABLE :: abascr
108 REAL(KIND=
dp),
DIMENSION(:, :, :),
ALLOCATABLE :: abbint
109 REAL(KIND=
dp),
DIMENSION(:),
ALLOCATABLE :: abbscr
111 TYPE(int_container) :: cabai
113 TYPE(int_container) :: cabbi
115 REAL(KIND=
dp),
DIMENSION(:, :, :, :),
ALLOCATABLE :: dabdaint
117 REAL(KIND=
dp),
DIMENSION(:, :, :, :),
ALLOCATABLE :: dabbint
119 REAL(KIND=
dp),
DIMENSION(:, :),
ALLOCATABLE :: soo
121 REAL(KIND=
dp),
DIMENSION(:, :, :),
ALLOCATABLE :: dsoo
123 REAL(KIND=
dp),
DIMENSION(:, :),
ALLOCATABLE :: sab
125 REAL(KIND=
dp),
DIMENSION(:, :, :),
ALLOCATABLE :: dsab
127 REAL(KIND=
dp),
DIMENSION(:, :),
POINTER :: sinv
129 REAL(KIND=
dp),
DIMENSION(:),
POINTER :: n
131 REAL(KIND=
dp),
DIMENSION(:),
POINTER :: sn
137 REAL(KIND=
dp) :: wsr, wff, dwsr, dwff
138 REAL(KIND=
dp),
DIMENSION(:, :),
POINTER :: asinv, bsinv
139 REAL(KIND=
dp),
DIMENSION(:),
POINTER :: na, nb
140 REAL(KIND=
dp),
DIMENSION(:),
POINTER :: sna, snb
141 REAL(KIND=
dp) :: nsna, nsnb
145 REAL(KIND=
dp) :: dmax_ab
147 REAL(KIND=
dp) :: dmax_oo
149 REAL(KIND=
dp) :: dmax_aba
151 REAL(KIND=
dp) :: dmax_abb
152 END TYPE lri_int_type
154 TYPE lri_int_rho_type
156 REAL(KIND=
dp),
DIMENSION(:, :, :, :),
POINTER :: soaabb
158 REAL(KIND=
dp) :: dmax_aabb
159 END TYPE lri_int_rho_type
163 TYPE(lri_int_type),
DIMENSION(:),
POINTER :: lri_int => null()
164 TYPE(lri_int_rho_type),
DIMENSION(:),
POINTER :: lri_int_rho => null()
165 TYPE(lri_rhoab_type),
DIMENSION(:),
POINTER :: lri_rhoab => null()
166 END TYPE lri_node_type
170 TYPE(lri_node_type),
DIMENSION(:),
POINTER :: lri_node => null()
171 END TYPE lri_atom_type
175 TYPE(lri_atom_type),
DIMENSION(:),
POINTER :: lri_atom => null()
176 END TYPE lri_list_type
179 TYPE(lri_list_type),
POINTER :: lri_list => null()
180 END TYPE lri_list_p_type
185 INTEGER,
DIMENSION(:, :, :),
POINTER :: orb_index
186 INTEGER,
DIMENSION(:, :, :),
POINTER :: ri_index
188 REAL(KIND=
dp),
DIMENSION(:),
POINTER :: int_fbas
190 REAL(KIND=
dp),
DIMENSION(:, :),
POINTER :: ri_ovlp
192 REAL(KIND=
dp),
DIMENSION(:, :),
POINTER :: ri_ovlp_inv
194 REAL(KIND=
dp),
DIMENSION(:, :),
POINTER :: orb_ovlp
196 REAL(KIND=
dp),
DIMENSION(:, :, :),
ALLOCATABLE :: ovlp3
198 REAL(KIND=
dp),
DIMENSION(:, :, :),
POINTER :: scon_ri
200 REAL(KIND=
dp),
DIMENSION(:, :, :),
POINTER :: scon_orb
202 REAL(KIND=
dp),
DIMENSION(:, :, :, :),
POINTER :: scon_mix
203 END TYPE lri_bas_type
207 TYPE lri_clebsch_gordon_type
209 REAL(KIND=
dp),
DIMENSION(:, :, :),
POINTER :: cg_coeff
211 INTEGER,
DIMENSION(:, :, :),
POINTER :: cg_none0_list
213 INTEGER,
DIMENSION(:, :),
POINTER :: ncg_none0
214 END TYPE lri_clebsch_gordon_type
220 REAL(KIND=
dp),
DIMENSION(:, :),
POINTER :: v_int
221 END TYPE lri_ppl_type
223 TYPE lri_ppl_int_type
224 TYPE(lri_ppl_type),
DIMENSION(:),
POINTER :: lri_ppl
225 REAL(KIND=
dp) :: ecore_pp_ri
226 END TYPE lri_ppl_int_type
231 INTEGER,
DIMENSION(:, :),
POINTER :: bas_ptr
232 REAL(KIND=
dp),
DIMENSION(:),
POINTER :: nvec
233 REAL(KIND=
dp),
DIMENSION(:),
POINTER :: rm1n
234 REAL(KIND=
dp),
DIMENSION(:, :),
POINTER :: tvec
235 REAL(KIND=
dp),
DIMENSION(:, :),
POINTER :: rm1t
236 REAL(KIND=
dp),
DIMENSION(:, :),
POINTER :: avec
237 REAL(KIND=
dp),
DIMENSION(:, :),
POINTER :: fout
238 REAL(KIND=
dp) :: ntrm1n
239 REAL(KIND=
dp),
DIMENSION(2) :: ftrm1n
240 REAL(KIND=
dp),
DIMENSION(2) :: echarge
241 REAL(KIND=
dp),
DIMENSION(2) :: lambda
246 REAL(KIND=
dp),
DIMENSION(:, :),
POINTER :: mat
249 REAL(KIND=
dp),
DIMENSION(:),
POINTER :: vec
253 REAL(KIND=
dp) :: pairs_tt
254 REAL(KIND=
dp) :: pairs_sr
255 REAL(KIND=
dp) :: pairs_ff
256 REAL(KIND=
dp) :: overlap_error
257 REAL(KIND=
dp) :: rho_tt
258 REAL(KIND=
dp) :: rho_sr
259 REAL(KIND=
dp) :: rho_ff
260 REAL(KIND=
dp) :: rho_1c
261 REAL(KIND=
dp) :: coef_mem
262 REAL(KIND=
dp) :: oint_mem
263 REAL(KIND=
dp) :: rhos_mem
264 REAL(KIND=
dp) :: abai_mem
265 REAL(KIND=
dp) :: ppli_mem
269 TYPE lri_environment_type
271 INTEGER :: lri_overlap_inv
275 LOGICAL :: use_shg_integrals
278 REAL(KIND=
dp) :: cond_max
280 REAL(KIND=
dp) :: delta
282 REAL(KIND=
dp) :: eps_o3_int
284 TYPE(gto_basis_set_p_type),
DIMENSION(:),
POINTER :: orb_basis
286 TYPE(gto_basis_set_p_type),
DIMENSION(:),
POINTER :: ri_basis
288 TYPE(neighbor_list_set_p_type),
DIMENSION(:),
POINTER :: soo_list
289 TYPE(neighbor_list_set_p_type),
DIMENSION(:),
POINTER :: saa_list
290 TYPE(neighbor_list_set_p_type),
DIMENSION(:),
POINTER :: soa_list
292 TYPE(lri_list_type),
POINTER :: lri_ints
294 TYPE(lri_ppl_int_type),
POINTER :: lri_ppl_ints
296 TYPE(lri_list_type),
POINTER :: lri_ints_rho
298 TYPE(lri_bas_type),
DIMENSION(:),
POINTER :: bas_prop
300 TYPE(lri_clebsch_gordon_type),
POINTER :: cg_shg
302 TYPE(dbcsr_p_type),
DIMENSION(:),
POINTER :: ob_smat
304 LOGICAL :: statistics
305 TYPE(stat_type) :: stat
307 LOGICAL :: exact_1c_terms
311 LOGICAL :: store_integrals
313 LOGICAL :: distant_pair_approximation
314 CHARACTER(len=10) :: distant_pair_method
315 REAL(KIND=
dp) :: r_in
316 REAL(KIND=
dp) :: r_out
317 REAL(KIND=
dp),
DIMENSION(:),
POINTER :: aradius
318 TYPE(wbas_type),
DIMENSION(:),
POINTER :: wbas
319 TYPE(wmat_type),
DIMENSION(:, :),
POINTER :: wmat
321 TYPE(dbcsr_p_type),
DIMENSION(:),
POINTER :: ri_smat, &
323 TYPE(ri_fit_type),
POINTER :: ri_fit
324 CHARACTER(len=10) :: ri_sinv_app
325 TYPE(o3c_container_type),
POINTER :: o3c
326 END TYPE lri_environment_type
332 REAL(KIND=
dp),
DIMENSION(:, :),
POINTER :: acoef
334 REAL(KIND=
dp),
DIMENSION(:, :),
POINTER :: v_int
336 REAL(KIND=
dp),
DIMENSION(:, :),
POINTER :: v_dadr
338 REAL(KIND=
dp),
DIMENSION(:, :),
POINTER :: v_dfdr
339 END TYPE lri_kind_type
342 TYPE(lri_kind_type),
DIMENSION(:),
POINTER :: lri_kinds
343 END TYPE lri_spin_type
348 REAL(KIND=
dp),
DIMENSION(:),
POINTER :: st
349 REAL(KIND=
dp),
DIMENSION(:, :),
POINTER :: dssn, &
352 REAL(KIND=
dp),
DIMENSION(:, :),
POINTER :: dtvec
353 END TYPE lri_force_type
357 TYPE lri_density_type
360 TYPE(lri_list_p_type),
DIMENSION(:),
POINTER :: lri_rhos => null()
362 TYPE(lri_spin_type),
DIMENSION(:),
POINTER :: lri_coefs => null()
363 END TYPE lri_density_type
367 CHARACTER(len=*),
PARAMETER,
PRIVATE :: moduleN =
'lri_environment_types'
369 PUBLIC :: lri_environment_type, &
370 lri_force_type, lri_list_type, &
371 lri_int_type, lri_int_rho_type, lri_density_type, &
372 lri_kind_type, lri_rhoab_type
373 PUBLIC :: int_container, carray
391 TYPE(lri_environment_type),
INTENT(OUT) :: lri_env
393 lri_env%debug = .false.
394 lri_env%delta = 1.e-6_dp
396 lri_env%store_integrals = .false.
398 NULLIFY (lri_env%orb_basis)
399 NULLIFY (lri_env%ri_basis)
401 NULLIFY (lri_env%soo_list)
402 NULLIFY (lri_env%saa_list)
403 NULLIFY (lri_env%soa_list)
404 NULLIFY (lri_env%lri_ints)
405 NULLIFY (lri_env%lri_ppl_ints)
406 NULLIFY (lri_env%lri_ints_rho)
407 NULLIFY (lri_env%bas_prop)
409 NULLIFY (lri_env%ob_smat)
410 NULLIFY (lri_env%ri_smat)
411 NULLIFY (lri_env%ri_sinv)
412 NULLIFY (lri_env%ri_fit)
413 NULLIFY (lri_env%o3c)
414 NULLIFY (lri_env%aradius)
415 NULLIFY (lri_env%wmat)
416 NULLIFY (lri_env%wbas)
418 NULLIFY (lri_env%cg_shg)
419 ALLOCATE (lri_env%cg_shg)
420 NULLIFY (lri_env%cg_shg%cg_coeff)
421 NULLIFY (lri_env%cg_shg%cg_none0_list)
422 NULLIFY (lri_env%cg_shg%ncg_none0)
432 TYPE(lri_environment_type),
INTENT(INOUT) :: lri_env
434 INTEGER :: i, ikind, j, nkind
437 IF (
ASSOCIATED(lri_env%orb_basis))
THEN
438 nkind =
SIZE(lri_env%orb_basis)
442 DEALLOCATE (lri_env%orb_basis)
444 IF (
ASSOCIATED(lri_env%ri_basis))
THEN
445 nkind =
SIZE(lri_env%ri_basis)
449 DEALLOCATE (lri_env%ri_basis)
454 IF (
ASSOCIATED(lri_env%lri_ints))
THEN
457 IF (
ASSOCIATED(lri_env%lri_ppl_ints))
THEN
460 IF (
ASSOCIATED(lri_env%lri_ints_rho))
THEN
464 IF (
ASSOCIATED(lri_env%aradius))
THEN
465 DEALLOCATE (lri_env%aradius)
467 IF (
ASSOCIATED(lri_env%wmat))
THEN
468 DO i = 1,
SIZE(lri_env%wmat, 1)
469 DO j = 1,
SIZE(lri_env%wmat, 2)
470 IF (
ASSOCIATED(lri_env%wmat(i, j)%mat))
THEN
471 DEALLOCATE (lri_env%wmat(i, j)%mat)
475 DEALLOCATE (lri_env%wmat)
477 IF (
ASSOCIATED(lri_env%wbas))
THEN
478 DO i = 1,
SIZE(lri_env%wbas, 1)
479 IF (
ASSOCIATED(lri_env%wbas(i)%vec))
THEN
480 DEALLOCATE (lri_env%wbas(i)%vec)
483 DEALLOCATE (lri_env%wbas)
485 IF (
ASSOCIATED(lri_env%cg_shg))
THEN
486 IF (
ASSOCIATED(lri_env%cg_shg%cg_coeff))
THEN
487 DEALLOCATE (lri_env%cg_shg%cg_coeff)
489 IF (
ASSOCIATED(lri_env%cg_shg%cg_none0_list))
THEN
490 DEALLOCATE (lri_env%cg_shg%cg_none0_list)
492 IF (
ASSOCIATED(lri_env%cg_shg%ncg_none0))
THEN
493 DEALLOCATE (lri_env%cg_shg%ncg_none0)
495 DEALLOCATE (lri_env%cg_shg)
501 IF (
ASSOCIATED(lri_env%ri_fit))
THEN
502 IF (
ASSOCIATED(lri_env%ri_fit%nvec))
THEN
503 DEALLOCATE (lri_env%ri_fit%nvec)
505 IF (
ASSOCIATED(lri_env%ri_fit%rm1n))
THEN
506 DEALLOCATE (lri_env%ri_fit%rm1n)
508 IF (
ASSOCIATED(lri_env%ri_fit%tvec))
THEN
509 DEALLOCATE (lri_env%ri_fit%tvec)
511 IF (
ASSOCIATED(lri_env%ri_fit%rm1t))
THEN
512 DEALLOCATE (lri_env%ri_fit%rm1t)
514 IF (
ASSOCIATED(lri_env%ri_fit%avec))
THEN
515 DEALLOCATE (lri_env%ri_fit%avec)
517 IF (
ASSOCIATED(lri_env%ri_fit%fout))
THEN
518 DEALLOCATE (lri_env%ri_fit%fout)
520 IF (
ASSOCIATED(lri_env%ri_fit%bas_ptr))
THEN
521 DEALLOCATE (lri_env%ri_fit%bas_ptr)
523 DEALLOCATE (lri_env%ri_fit)
525 IF (
ASSOCIATED(lri_env%o3c))
THEN
527 DEALLOCATE (lri_env%o3c)
538 TYPE(lri_density_type),
INTENT(OUT) :: lri_density
540 lri_density%nspin = 0
542 NULLIFY (lri_density%lri_rhos)
543 NULLIFY (lri_density%lri_coefs)
553 TYPE(lri_density_type),
INTENT(INOUT) :: lri_density
555 CALL deallocate_lri_rhos(lri_density%lri_rhos)
556 CALL deallocate_lri_coefs(lri_density%lri_coefs)
568 TYPE(lri_environment_type),
POINTER :: lri_env
569 TYPE(lri_list_type),
POINTER :: lri_ints
570 INTEGER,
INTENT(IN) :: nkind
572 INTEGER :: i, iac, iatom, ikind, ilist, jatom, &
573 jkind, jneighbor, nba, nbb, nfa, nfb, &
576 REAL(kind=
dp) :: dab, ra, rab(3), rb
577 TYPE(gto_basis_set_type),
POINTER :: fbasa, fbasb, obasa, obasb
578 TYPE(lri_int_type),
POINTER :: lrii
579 TYPE(neighbor_list_iterator_p_type), &
580 DIMENSION(:),
POINTER :: nl_iterator
582 cpassert(
ASSOCIATED(lri_env))
584 NULLIFY (fbasa, fbasb, lrii, nl_iterator, obasa, obasb)
588 dpa = lri_env%distant_pair_approximation
591 lri_env%stat%oint_mem = 0.0_dp
593 lri_ints%nkind = nkind
594 ALLOCATE (lri_ints%lri_atom(nkind*nkind))
596 DO i = 1, nkind*nkind
597 NULLIFY (lri_ints%lri_atom(i)%lri_node)
598 lri_ints%lri_atom(i)%natom = 0
605 nlist=nlist, ilist=ilist, nnode=nneighbor, inode=jneighbor, &
606 iatom=iatom, jatom=jatom, r=rab)
608 iac = ikind + nkind*(jkind - 1)
609 dab = sqrt(sum(rab*rab))
611 obasa => lri_env%orb_basis(ikind)%gto_basis_set
612 obasb => lri_env%orb_basis(jkind)%gto_basis_set
613 fbasa => lri_env%ri_basis(ikind)%gto_basis_set
614 fbasb => lri_env%ri_basis(jkind)%gto_basis_set
616 IF (.NOT.
ASSOCIATED(obasa)) cycle
617 IF (.NOT.
ASSOCIATED(obasb)) cycle
619 IF (.NOT.
ASSOCIATED(lri_ints%lri_atom(iac)%lri_node))
THEN
620 lri_ints%lri_atom(iac)%natom = nlist
621 ALLOCATE (lri_ints%lri_atom(iac)%lri_node(nlist))
623 NULLIFY (lri_ints%lri_atom(iac)%lri_node(i)%lri_int)
624 lri_ints%lri_atom(iac)%lri_node(i)%nnode = 0
627 IF (.NOT.
ASSOCIATED(lri_ints%lri_atom(iac)%lri_node(ilist)%lri_int))
THEN
628 lri_ints%lri_atom(iac)%lri_node(ilist)%nnode = nneighbor
629 ALLOCATE (lri_ints%lri_atom(iac)%lri_node(ilist)%lri_int(nneighbor))
632 lrii => lri_ints%lri_atom(iac)%lri_node(ilist)%lri_int(jneighbor)
640 IF (iatom == jatom .AND. dab < lri_env%delta)
THEN
641 e1c = lri_env%exact_1c_terms
647 ALLOCATE (lrii%abascr(nfa))
649 ALLOCATE (lrii%abbscr(nfb))
651 lri_env%stat%oint_mem = lri_env%stat%oint_mem + nfa + nfb
655 lrii%wsr =
pswitch(dab, ra, rb, 0)
656 lrii%wff = 1.0_dp - lrii%wsr
657 lrii%dwsr =
pswitch(dab, ra, rb, 1)
658 lrii%dwff = -lrii%dwsr
659 lrii%lrisr = (lrii%wsr > 0.0_dp)
660 lrii%lriff = (lrii%wff > 0.0_dp)
661 NULLIFY (lrii%asinv, lrii%bsinv)
669 NULLIFY (lrii%asinv, lrii%bsinv)
673 NULLIFY (lrii%cabai%ca, lrii%cabbi%ca)
678 NULLIFY (lrii%n, lrii%sn)
681 ALLOCATE (lrii%soo(nba, nbb))
682 lri_env%stat%oint_mem = lri_env%stat%oint_mem + nba*nbb
685 IF (iatom == jatom .AND. dab < lri_env%delta)
THEN
686 ALLOCATE (lrii%sinv(nfa, nfa))
687 lri_env%stat%oint_mem = lri_env%stat%oint_mem + nfa*nfa
689 ALLOCATE (lrii%sinv(nn, nn))
690 lri_env%stat%oint_mem = lri_env%stat%oint_mem + nn*nn
694 IF (iatom == jatom .AND. dab < lri_env%delta)
THEN
695 ALLOCATE (lrii%n(nfa), lrii%sn(nfa))
696 lri_env%stat%oint_mem = lri_env%stat%oint_mem + 2.*nfa
698 ALLOCATE (lrii%n(nn), lrii%sn(nn))
699 lri_env%stat%oint_mem = lri_env%stat%oint_mem + 2.*nn
705 NULLIFY (lrii%n, lrii%sn)
711 lrii%asinv => lri_env%bas_prop(ikind)%ri_ovlp_inv
712 lrii%bsinv => lri_env%bas_prop(jkind)%ri_ovlp_inv
713 ALLOCATE (lrii%na(nfa), lrii%sna(nfa))
714 lri_env%stat%oint_mem = lri_env%stat%oint_mem + 2.*nfa
717 ALLOCATE (lrii%nb(nfb), lrii%snb(nfb))
718 lri_env%stat%oint_mem = lri_env%stat%oint_mem + 2.*nfb
721 IF (.NOT.
ALLOCATED(lrii%soo))
THEN
722 ALLOCATE (lrii%soo(nba, nbb))
723 lri_env%stat%oint_mem = lri_env%stat%oint_mem + nba*nbb
726 cpassert(
SIZE(lrii%soo, 1) == nba .AND.
SIZE(lrii%soo, 2) == nbb)
729 NULLIFY (lrii%na, lrii%sna)
730 NULLIFY (lrii%nb, lrii%snb)
735 lrii%dmax_aba = 0._dp
736 lrii%dmax_abb = 0._dp
738 lrii%calc_force_pair = .false.
754 TYPE(lri_environment_type),
POINTER :: lri_env
755 TYPE(lri_ppl_int_type),
POINTER :: lri_ppl_ints
756 TYPE(atomic_kind_type),
DIMENSION(:),
POINTER :: atomic_kind_set
758 INTEGER :: ikind, natom, nfa, nkind
759 TYPE(atomic_kind_type),
POINTER :: atomic_kind
760 TYPE(gto_basis_set_type),
POINTER :: fbasa
762 cpassert(
ASSOCIATED(lri_env))
764 lri_env%stat%ppli_mem = 0.0_dp
765 nkind =
SIZE(atomic_kind_set)
766 ALLOCATE (lri_ppl_ints)
767 ALLOCATE (lri_ppl_ints%lri_ppl(nkind))
769 fbasa => lri_env%ri_basis(ikind)%gto_basis_set
771 atomic_kind => atomic_kind_set(ikind)
773 ALLOCATE (lri_ppl_ints%lri_ppl(ikind)%v_int(natom, nfa))
774 lri_env%stat%ppli_mem = lri_env%stat%ppli_mem + natom*nfa
787 TYPE(lri_environment_type),
POINTER :: lri_env
788 TYPE(lri_list_type),
POINTER :: lri_ints_rho
789 INTEGER,
INTENT(IN) :: nkind
791 INTEGER :: i, iac, iatom, ikind, ilist, jatom, &
792 jkind, jneighbor, nba, nbb, nlist, &
794 TYPE(gto_basis_set_type),
POINTER :: obasa, obasb
795 TYPE(lri_int_rho_type),
POINTER :: lriir
796 TYPE(neighbor_list_iterator_p_type), &
797 DIMENSION(:),
POINTER :: nl_iterator
799 cpassert(
ASSOCIATED(lri_env))
801 ALLOCATE (lri_ints_rho)
803 lri_ints_rho%nkind = nkind
804 ALLOCATE (lri_ints_rho%lri_atom(nkind*nkind))
806 DO i = 1, nkind*nkind
807 NULLIFY (lri_ints_rho%lri_atom(i)%lri_node)
808 lri_ints_rho%lri_atom(i)%natom = 0
815 nlist=nlist, ilist=ilist, nnode=nneighbor, inode=jneighbor, &
816 iatom=iatom, jatom=jatom)
818 iac = ikind + nkind*(jkind - 1)
820 obasa => lri_env%orb_basis(ikind)%gto_basis_set
821 obasb => lri_env%orb_basis(jkind)%gto_basis_set
823 IF (.NOT.
ASSOCIATED(obasa)) cycle
824 IF (.NOT.
ASSOCIATED(obasb)) cycle
826 IF (.NOT.
ASSOCIATED(lri_ints_rho%lri_atom(iac)%lri_node))
THEN
827 lri_ints_rho%lri_atom(iac)%natom = nlist
828 ALLOCATE (lri_ints_rho%lri_atom(iac)%lri_node(nlist))
830 NULLIFY (lri_ints_rho%lri_atom(iac)%lri_node(i)%lri_int_rho)
831 lri_ints_rho%lri_atom(iac)%lri_node(i)%nnode = 0
834 IF (.NOT.
ASSOCIATED(lri_ints_rho%lri_atom(iac)%lri_node(ilist)%lri_int_rho))
THEN
835 lri_ints_rho%lri_atom(iac)%lri_node(ilist)%nnode = nneighbor
836 ALLOCATE (lri_ints_rho%lri_atom(iac)%lri_node(ilist)%lri_int_rho(nneighbor))
839 lriir => lri_ints_rho%lri_atom(iac)%lri_node(ilist)%lri_int_rho(jneighbor)
844 ALLOCATE (lriir%soaabb(nba, nba, nbb, nbb))
846 lriir%dmax_aabb = 0._dp
863 TYPE(lri_environment_type),
POINTER :: lri_env
864 TYPE(lri_list_p_type),
DIMENSION(:),
POINTER :: lri_rhos
865 INTEGER,
INTENT(IN) :: nspin, nkind
867 INTEGER :: i, iac, iatom, ikind, ilist, ispin, &
868 jatom, jkind, jneighbor, nfa, nfb, &
870 REAL(kind=
dp) :: dab, rab(3)
871 TYPE(lri_int_type),
POINTER :: lrii
872 TYPE(lri_list_type),
POINTER :: lri_rho
873 TYPE(lri_rhoab_type),
POINTER :: lrho
874 TYPE(neighbor_list_iterator_p_type), &
875 DIMENSION(:),
POINTER :: nl_iterator
877 cpassert(
ASSOCIATED(lri_env))
879 NULLIFY (lri_rho, lrho, lrii, nl_iterator)
881 ALLOCATE (lri_rhos(nspin))
883 lri_env%stat%rhos_mem = 0.0_dp
887 ALLOCATE (lri_rhos(ispin)%lri_list)
889 lri_rhos(ispin)%lri_list%nkind = nkind
890 ALLOCATE (lri_rhos(ispin)%lri_list%lri_atom(nkind*nkind))
892 DO i = 1, nkind*nkind
893 NULLIFY (lri_rhos(ispin)%lri_list%lri_atom(i)%lri_node)
894 lri_rhos(ispin)%lri_list%lri_atom(i)%natom = 0
897 lri_rho => lri_rhos(ispin)%lri_list
902 iatom=iatom, jatom=jatom, nlist=nlist, ilist=ilist, &
903 nnode=nneighbor, inode=jneighbor, r=rab)
905 iac = ikind + nkind*(jkind - 1)
906 dab = sqrt(sum(rab*rab))
908 IF (.NOT.
ASSOCIATED(lri_env%lri_ints%lri_atom(iac)%lri_node)) cycle
910 IF (.NOT.
ASSOCIATED(lri_rho%lri_atom(iac)%lri_node))
THEN
911 lri_rho%lri_atom(iac)%natom = nlist
912 ALLOCATE (lri_rho%lri_atom(iac)%lri_node(nlist))
914 NULLIFY (lri_rho%lri_atom(iac)%lri_node(i)%lri_rhoab)
915 lri_rho%lri_atom(iac)%lri_node(i)%nnode = 0
918 IF (.NOT.
ASSOCIATED(lri_rho%lri_atom(iac)%lri_node(ilist)%lri_rhoab))
THEN
919 lri_rho%lri_atom(iac)%lri_node(ilist)%nnode = nneighbor
920 ALLOCATE (lri_rho%lri_atom(iac)%lri_node(ilist)%lri_rhoab(nneighbor))
923 lrho => lri_rho%lri_atom(iac)%lri_node(ilist)%lri_rhoab(jneighbor)
924 lrii => lri_env%lri_ints%lri_atom(iac)%lri_node(ilist)%lri_int(jneighbor)
935 NULLIFY (lrho%avec, lrho%tvec)
937 IF (iatom == jatom .AND. dab < lri_env%delta)
THEN
938 IF (.NOT. lri_env%exact_1c_terms)
THEN
939 ALLOCATE (lrho%avec(nfa))
940 ALLOCATE (lrho%tvec(nfa))
941 lri_env%stat%rhos_mem = lri_env%stat%rhos_mem + 2*nfa
944 ALLOCATE (lrho%avec(nn))
945 ALLOCATE (lrho%tvec(nn))
946 lri_env%stat%rhos_mem = lri_env%stat%rhos_mem + 2*nn
949 NULLIFY (lrho%aveca, lrho%tveca)
950 NULLIFY (lrho%avecb, lrho%tvecb)
952 ALLOCATE (lrho%aveca(nfa))
953 ALLOCATE (lrho%avecb(nfb))
954 ALLOCATE (lrho%tveca(nfa))
955 ALLOCATE (lrho%tvecb(nfb))
956 lri_env%stat%rhos_mem = lri_env%stat%rhos_mem + 2*(nfa + nfb)
975 TYPE(lri_environment_type),
POINTER :: lri_env
976 TYPE(lri_density_type),
POINTER :: lri_density
977 TYPE(atomic_kind_type),
DIMENSION(:),
POINTER :: atomic_kind_set
979 INTEGER :: ikind, ispin, natom, nkind, nsgf, nspin
980 TYPE(atomic_kind_type),
POINTER :: atomic_kind
981 TYPE(gto_basis_set_type),
POINTER :: fbas
982 TYPE(lri_spin_type),
DIMENSION(:),
POINTER :: lri_coefs
984 cpassert(
ASSOCIATED(lri_density))
986 NULLIFY (atomic_kind, fbas, lri_coefs)
988 nkind =
SIZE(atomic_kind_set)
989 nspin = lri_density%nspin
991 lri_env%stat%coef_mem = 0.0_dp
993 ALLOCATE (lri_density%lri_coefs(nspin))
994 lri_coefs => lri_density%lri_coefs
997 ALLOCATE (lri_coefs(ispin)%lri_kinds(nkind))
999 NULLIFY (lri_coefs(ispin)%lri_kinds(ikind)%acoef)
1000 NULLIFY (lri_coefs(ispin)%lri_kinds(ikind)%v_int)
1001 NULLIFY (lri_coefs(ispin)%lri_kinds(ikind)%v_dadr)
1002 NULLIFY (lri_coefs(ispin)%lri_kinds(ikind)%v_dfdr)
1003 atomic_kind => atomic_kind_set(ikind)
1005 fbas => lri_env%ri_basis(ikind)%gto_basis_set
1007 ALLOCATE (lri_coefs(ispin)%lri_kinds(ikind)%acoef(natom, nsgf))
1008 lri_coefs(ispin)%lri_kinds(ikind)%acoef = 0._dp
1009 ALLOCATE (lri_coefs(ispin)%lri_kinds(ikind)%v_int(natom, nsgf))
1010 lri_coefs(ispin)%lri_kinds(ikind)%v_int = 0._dp
1011 ALLOCATE (lri_coefs(ispin)%lri_kinds(ikind)%v_dadr(natom, 3))
1012 lri_coefs(ispin)%lri_kinds(ikind)%v_dadr = 0._dp
1013 ALLOCATE (lri_coefs(ispin)%lri_kinds(ikind)%v_dfdr(natom, 3))
1014 lri_coefs(ispin)%lri_kinds(ikind)%v_dfdr = 0._dp
1016 lri_env%stat%coef_mem = lri_env%stat%coef_mem + 2._dp*natom*(nsgf + 3)
1030 TYPE(lri_force_type),
POINTER :: lri_force
1031 INTEGER,
INTENT(IN) :: nfa, nfb
1037 cpassert(.NOT.
ASSOCIATED(lri_force))
1039 ALLOCATE (lri_force)
1041 ALLOCATE (lri_force%st(nn))
1042 lri_force%st = 0._dp
1043 ALLOCATE (lri_force%dsst(nn, 3))
1044 lri_force%dsst = 0._dp
1045 ALLOCATE (lri_force%dssn(nn, 3))
1046 lri_force%dssn = 0._dp
1047 ALLOCATE (lri_force%dtvec(nn, 3))
1048 lri_force%dtvec = 0._dp
1059 TYPE(lri_environment_type),
INTENT(INOUT) :: lri_env
1063 IF (
ASSOCIATED(lri_env%bas_prop))
THEN
1064 DO i = 1,
SIZE(lri_env%bas_prop)
1065 IF (
ASSOCIATED(lri_env%bas_prop(i)%int_fbas))
THEN
1066 DEALLOCATE (lri_env%bas_prop(i)%int_fbas)
1068 IF (
ASSOCIATED(lri_env%bas_prop(i)%ri_ovlp))
THEN
1069 DEALLOCATE (lri_env%bas_prop(i)%ri_ovlp)
1071 IF (
ASSOCIATED(lri_env%bas_prop(i)%ri_ovlp_inv))
THEN
1072 DEALLOCATE (lri_env%bas_prop(i)%ri_ovlp_inv)
1074 IF (
ASSOCIATED(lri_env%bas_prop(i)%orb_ovlp))
THEN
1075 DEALLOCATE (lri_env%bas_prop(i)%orb_ovlp)
1077 IF (
ALLOCATED(lri_env%bas_prop(i)%ovlp3))
THEN
1078 DEALLOCATE (lri_env%bas_prop(i)%ovlp3)
1080 IF (
ASSOCIATED(lri_env%bas_prop(i)%scon_ri))
THEN
1081 DEALLOCATE (lri_env%bas_prop(i)%scon_ri)
1083 IF (
ASSOCIATED(lri_env%bas_prop(i)%scon_orb))
THEN
1084 DEALLOCATE (lri_env%bas_prop(i)%scon_orb)
1086 IF (
ASSOCIATED(lri_env%bas_prop(i)%orb_index))
THEN
1087 DEALLOCATE (lri_env%bas_prop(i)%orb_index)
1089 IF (
ASSOCIATED(lri_env%bas_prop(i)%ri_index))
THEN
1090 DEALLOCATE (lri_env%bas_prop(i)%ri_index)
1092 IF (
ASSOCIATED(lri_env%bas_prop(i)%scon_mix))
THEN
1093 DEALLOCATE (lri_env%bas_prop(i)%scon_mix)
1096 DEALLOCATE (lri_env%bas_prop)
1107 TYPE(lri_list_type),
POINTER :: lri_ints
1109 INTEGER :: i, iatom, ijkind, inode, natom, nkind, &
1111 TYPE(lri_int_type),
POINTER :: lri_int
1113 cpassert(
ASSOCIATED(lri_ints))
1114 nkind = lri_ints%nkind
1117 DO ijkind = 1,
SIZE(lri_ints%lri_atom)
1118 natom = lri_ints%lri_atom(ijkind)%natom
1121 nnode = lri_ints%lri_atom(ijkind)%lri_node(iatom)%nnode
1123 IF (
ASSOCIATED(lri_ints%lri_atom(ijkind)%lri_node(iatom)%lri_int))
THEN
1125 lri_int => lri_ints%lri_atom(ijkind)%lri_node(iatom)%lri_int(inode)
1126 IF (
ALLOCATED(lri_int%sab))
THEN
1127 DEALLOCATE (lri_int%sab)
1129 IF (
ALLOCATED(lri_int%soo))
THEN
1130 DEALLOCATE (lri_int%soo)
1132 IF (
ALLOCATED(lri_int%abaint))
THEN
1133 DEALLOCATE (lri_int%abaint)
1135 IF (
ALLOCATED(lri_int%abascr))
THEN
1136 DEALLOCATE (lri_int%abascr)
1138 IF (
ALLOCATED(lri_int%abbint))
THEN
1139 DEALLOCATE (lri_int%abbint)
1141 IF (
ALLOCATED(lri_int%abbscr))
THEN
1142 DEALLOCATE (lri_int%abbscr)
1144 IF (
ALLOCATED(lri_int%dsab))
THEN
1145 DEALLOCATE (lri_int%dsab)
1147 IF (
ALLOCATED(lri_int%dsoo))
THEN
1148 DEALLOCATE (lri_int%dsoo)
1150 IF (
ALLOCATED(lri_int%dabbint))
THEN
1151 DEALLOCATE (lri_int%dabbint)
1153 IF (
ALLOCATED(lri_int%dabdaint))
THEN
1154 DEALLOCATE (lri_int%dabdaint)
1156 IF (
ASSOCIATED(lri_int%sinv))
THEN
1157 DEALLOCATE (lri_int%sinv)
1159 IF (
ASSOCIATED(lri_int%n))
THEN
1160 DEALLOCATE (lri_int%n)
1162 IF (
ASSOCIATED(lri_int%sn))
THEN
1163 DEALLOCATE (lri_int%sn)
1165 IF (
ASSOCIATED(lri_int%na))
THEN
1166 DEALLOCATE (lri_int%na)
1168 IF (
ASSOCIATED(lri_int%nb))
THEN
1169 DEALLOCATE (lri_int%nb)
1171 IF (
ASSOCIATED(lri_int%sna))
THEN
1172 DEALLOCATE (lri_int%sna)
1174 IF (
ASSOCIATED(lri_int%snb))
THEN
1175 DEALLOCATE (lri_int%snb)
1178 IF (
ASSOCIATED(lri_int%cabai%ca))
THEN
1179 DO i = 1,
SIZE(lri_int%cabai%ca)
1180 IF (
ASSOCIATED(lri_int%cabai%ca(i)%cdp))
DEALLOCATE (lri_int%cabai%ca(i)%cdp)
1181 IF (
ASSOCIATED(lri_int%cabai%ca(i)%csp))
DEALLOCATE (lri_int%cabai%ca(i)%csp)
1182 IF (
ASSOCIATED(lri_int%cabai%ca(i)%cip))
DEALLOCATE (lri_int%cabai%ca(i)%cip)
1184 DEALLOCATE (lri_int%cabai%ca)
1186 IF (
ASSOCIATED(lri_int%cabbi%ca))
THEN
1187 DO i = 1,
SIZE(lri_int%cabbi%ca)
1188 IF (
ASSOCIATED(lri_int%cabbi%ca(i)%cdp))
DEALLOCATE (lri_int%cabbi%ca(i)%cdp)
1189 IF (
ASSOCIATED(lri_int%cabbi%ca(i)%csp))
DEALLOCATE (lri_int%cabbi%ca(i)%csp)
1190 IF (
ASSOCIATED(lri_int%cabbi%ca(i)%cip))
DEALLOCATE (lri_int%cabbi%ca(i)%cip)
1192 DEALLOCATE (lri_int%cabbi%ca)
1195 DEALLOCATE (lri_ints%lri_atom(ijkind)%lri_node(iatom)%lri_int)
1199 DEALLOCATE (lri_ints%lri_atom(ijkind)%lri_node)
1202 DEALLOCATE (lri_ints%lri_atom)
1204 DEALLOCATE (lri_ints)
1214 TYPE(lri_ppl_int_type),
POINTER :: lri_ppl_ints
1216 INTEGER :: ikind, nkind
1218 cpassert(
ASSOCIATED(lri_ppl_ints))
1219 IF (
ASSOCIATED(lri_ppl_ints%lri_ppl))
THEN
1220 nkind =
SIZE(lri_ppl_ints%lri_ppl)
1222 IF (
ASSOCIATED(lri_ppl_ints%lri_ppl(ikind)%v_int))
THEN
1223 DEALLOCATE (lri_ppl_ints%lri_ppl(ikind)%v_int)
1226 DEALLOCATE (lri_ppl_ints%lri_ppl)
1228 DEALLOCATE (lri_ppl_ints)
1238 TYPE(lri_list_type),
POINTER :: lri_ints_rho
1240 INTEGER :: iatom, ijkind, inode, natom, nkind, nnode
1242 cpassert(
ASSOCIATED(lri_ints_rho))
1243 nkind = lri_ints_rho%nkind
1246 DO ijkind = 1,
SIZE(lri_ints_rho%lri_atom)
1247 natom = lri_ints_rho%lri_atom(ijkind)%natom
1250 nnode = lri_ints_rho%lri_atom(ijkind)%lri_node(iatom)%nnode
1252 IF (
ASSOCIATED(lri_ints_rho%lri_atom(ijkind)%lri_node(iatom)%lri_int_rho))
THEN
1254 IF (
ASSOCIATED(lri_ints_rho%lri_atom(ijkind)%lri_node(iatom)%lri_int_rho(inode)%soaabb))
THEN
1255 DEALLOCATE (lri_ints_rho%lri_atom(ijkind)%lri_node(iatom)%lri_int_rho(inode)%soaabb)
1258 DEALLOCATE (lri_ints_rho%lri_atom(ijkind)%lri_node(iatom)%lri_int_rho)
1262 DEALLOCATE (lri_ints_rho%lri_atom(ijkind)%lri_node)
1265 DEALLOCATE (lri_ints_rho%lri_atom)
1267 DEALLOCATE (lri_ints_rho)
1275 SUBROUTINE deallocate_lri_rhos(lri_rhos)
1277 TYPE(lri_list_p_type),
DIMENSION(:),
POINTER :: lri_rhos
1279 INTEGER :: i, iatom, ijkind, inode, natom, nkind, &
1281 TYPE(lri_list_type),
POINTER :: lri_rho
1282 TYPE(lri_rhoab_type),
POINTER :: lri_rhoab
1284 IF (
ASSOCIATED(lri_rhos))
THEN
1285 DO i = 1,
SIZE(lri_rhos)
1286 lri_rho => lri_rhos(i)%lri_list
1287 cpassert(
ASSOCIATED(lri_rho))
1288 nkind = lri_rho%nkind
1290 cpassert(
ASSOCIATED(lri_rho%lri_atom))
1291 DO ijkind = 1,
SIZE(lri_rho%lri_atom)
1292 natom = lri_rho%lri_atom(ijkind)%natom
1294 cpassert(
ASSOCIATED(lri_rho%lri_atom(ijkind)%lri_node))
1296 nnode = lri_rho%lri_atom(ijkind)%lri_node(iatom)%nnode
1298 IF (
ASSOCIATED(lri_rho%lri_atom(ijkind)%lri_node(iatom)%lri_rhoab))
THEN
1300 lri_rhoab => lri_rho%lri_atom(ijkind)%lri_node(iatom)%lri_rhoab(inode)
1301 IF (
ASSOCIATED(lri_rhoab%avec))
DEALLOCATE (lri_rhoab%avec)
1302 IF (
ASSOCIATED(lri_rhoab%tvec))
DEALLOCATE (lri_rhoab%tvec)
1303 IF (
ASSOCIATED(lri_rhoab%aveca))
DEALLOCATE (lri_rhoab%aveca)
1304 IF (
ASSOCIATED(lri_rhoab%tveca))
DEALLOCATE (lri_rhoab%tveca)
1305 IF (
ASSOCIATED(lri_rhoab%avecb))
DEALLOCATE (lri_rhoab%avecb)
1306 IF (
ASSOCIATED(lri_rhoab%tvecb))
DEALLOCATE (lri_rhoab%tvecb)
1308 DEALLOCATE (lri_rho%lri_atom(ijkind)%lri_node(iatom)%lri_rhoab)
1312 DEALLOCATE (lri_rho%lri_atom(ijkind)%lri_node)
1315 DEALLOCATE (lri_rho%lri_atom)
1317 DEALLOCATE (lri_rho)
1320 DEALLOCATE (lri_rhos)
1325 END SUBROUTINE deallocate_lri_rhos
1331 SUBROUTINE deallocate_lri_coefs(lri_coefs)
1332 TYPE(lri_spin_type),
DIMENSION(:),
POINTER :: lri_coefs
1336 IF (
ASSOCIATED(lri_coefs))
THEN
1337 DO i = 1,
SIZE(lri_coefs)
1338 DO j = 1,
SIZE(lri_coefs(i)%lri_kinds)
1339 IF (
ASSOCIATED(lri_coefs(i)%lri_kinds(j)%acoef))
THEN
1340 DEALLOCATE (lri_coefs(i)%lri_kinds(j)%acoef)
1342 IF (
ASSOCIATED(lri_coefs(i)%lri_kinds(j)%v_int))
THEN
1343 DEALLOCATE (lri_coefs(i)%lri_kinds(j)%v_int)
1345 IF (
ASSOCIATED(lri_coefs(i)%lri_kinds(j)%v_dadr))
THEN
1346 DEALLOCATE (lri_coefs(i)%lri_kinds(j)%v_dadr)
1348 IF (
ASSOCIATED(lri_coefs(i)%lri_kinds(j)%v_dfdr))
THEN
1349 DEALLOCATE (lri_coefs(i)%lri_kinds(j)%v_dfdr)
1352 DEALLOCATE (lri_coefs(i)%lri_kinds)
1354 DEALLOCATE (lri_coefs)
1359 END SUBROUTINE deallocate_lri_coefs
1367 TYPE(lri_force_type),
POINTER :: lri_force
1369 IF (
ASSOCIATED(lri_force))
THEN
1370 IF (
ASSOCIATED(lri_force%st))
THEN
1371 DEALLOCATE (lri_force%st)
1373 IF (
ASSOCIATED(lri_force%dssn))
THEN
1374 DEALLOCATE (lri_force%dssn)
1376 IF (
ASSOCIATED(lri_force%dsst))
THEN
1377 DEALLOCATE (lri_force%dsst)
1379 IF (
ASSOCIATED(lri_force%dtvec))
THEN
1380 DEALLOCATE (lri_force%dtvec)
1382 DEALLOCATE (lri_force)
Define the atomic kind types and their sub types.
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.
subroutine, public deallocate_gto_basis_set(gto_basis_set)
...
DBCSR operations in CP2K.
Defines the basic variable types.
integer, parameter, public int_8
integer, parameter, public dp
integer, parameter, public sp
contains the types and subroutines for dealing with the lri_env lri : local resolution of the identit...
subroutine, public deallocate_bas_properties(lri_env)
deallocates one-center overlap integrals, integral of ri basis and scon matrices
subroutine, public allocate_lri_ints_rho(lri_env, lri_ints_rho, nkind)
allocate lri_ints_rho, storing integral for the exact density
subroutine, public lri_env_create(lri_env)
creates and initializes an lri_env
subroutine, public deallocate_lri_ppl_ints(lri_ppl_ints)
deallocates the given lri_ppl_ints
subroutine, public allocate_lri_ppl_ints(lri_env, lri_ppl_ints, atomic_kind_set)
allocate lri_ppl_ints, matrices that store LRI integrals
subroutine, public deallocate_lri_force_components(lri_force)
releases the given lri_force_type
subroutine, public allocate_lri_coefs(lri_env, lri_density, atomic_kind_set)
creates and initializes lri_coefs
subroutine, public allocate_lri_force_components(lri_force, nfa, nfb)
creates and initializes lri_force
subroutine, public lri_density_release(lri_density)
releases the given lri_density
subroutine, public allocate_lri_ints(lri_env, lri_ints, nkind)
allocate lri_ints, matrices that store LRI integrals
subroutine, public deallocate_lri_ints(lri_ints)
deallocates the given lri_ints
subroutine, public deallocate_lri_ints_rho(lri_ints_rho)
deallocates the given lri_ints_rho
subroutine, public lri_env_release(lri_env)
releases the given lri_env
subroutine, public lri_density_create(lri_density)
creates and initializes an lri_density environment
subroutine, public allocate_lri_rhos(lri_env, lri_rhos, nspin, nkind)
creates and initializes lri_rhos
Collection of simple mathematical functions and subroutines.
real(kind=dp) function, public pswitch(x, a, b, order)
Polynomial (5th degree) switching function f(a) = 1 .... f(b) = 0 with f'(a) = f"(a) = f'(b) = f"(b) ...
Define the neighbor list data types and the corresponding functionality.
subroutine, public release_neighbor_list_sets(nlists)
releases an array of neighbor_list_sets
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)
...
3-center overlap type integrals containers
subroutine, public release_o3c_container(o3c_container)
...