84 SUBROUTINE build_core_ae(matrix_h, matrix_p, force, virial, calculate_forces, use_virial, nder, &
85 qs_kind_set, atomic_kind_set, particle_set, sab_orb, sac_ae, &
86 nimages, cell_to_index, basis_type, atcore)
88 TYPE(
dbcsr_p_type),
DIMENSION(:, :),
POINTER :: matrix_h, matrix_p
91 LOGICAL,
INTENT(IN) :: calculate_forces
98 POINTER :: sab_orb, sac_ae
99 INTEGER,
INTENT(IN) :: nimages
100 INTEGER,
DIMENSION(:, :, :),
POINTER :: cell_to_index
101 CHARACTER(LEN=*),
INTENT(IN) :: basis_type
102 REAL(kind=
dp),
DIMENSION(:),
INTENT(INOUT), &
105 CHARACTER(LEN=*),
PARAMETER :: routinen =
'build_core_ae'
107 INTEGER :: atom_a, handle, iatom, icol, ikind, img, irow, iset, jatom, jkind, jset, katom, &
108 kkind, ldai, ldsab, maxco, maxl, maxnset, maxsgf, mepos, na_plus, natom, nb_plus, ncoa, &
109 ncob, nij, nkind, nseta, nsetb, nthread, sgfa, sgfb, slot
110 INTEGER,
ALLOCATABLE,
DIMENSION(:) :: atom_of_kind, kind_of
111 INTEGER,
DIMENSION(3) :: cellind
112 INTEGER,
DIMENSION(:),
POINTER :: la_max, la_min, lb_max, lb_min, npgfa, &
114 INTEGER,
DIMENSION(:, :),
POINTER :: first_sgfa, first_sgfb
115 LOGICAL :: doat, dokp, found
116 REAL(kind=
dp) :: alpha_c, atk0, atk1, core_charge, &
117 core_radius, dab, dac, dbc, f0, rab2, &
119 REAL(kind=
dp),
ALLOCATABLE,
DIMENSION(:) :: ff
120 REAL(kind=
dp),
ALLOCATABLE,
DIMENSION(:, :) :: habd, work
121 REAL(kind=
dp),
ALLOCATABLE,
DIMENSION(:, :, :) :: hab, pab, verf, vnuc
122 REAL(kind=
dp),
DIMENSION(3) :: force_a, force_b, rab, rac, rbc
123 REAL(kind=
dp),
DIMENSION(3, 3) :: pv_thread
125 DIMENSION(:),
POINTER :: ap_iterator
129 REAL(kind=
dp),
DIMENSION(SIZE(particle_set)) :: at_thread
130 REAL(kind=
dp),
DIMENSION(:, :),
POINTER :: h_block, p_block, rpgfa, rpgfb, sphi_a, &
132 REAL(kind=
dp),
DIMENSION(:),
POINTER :: set_radius_a, set_radius_b
133 REAL(kind=
dp),
DIMENSION(3, SIZE(particle_set)) :: force_thread
144 IF (calculate_forces)
THEN
145 CALL timeset(routinen//
"_forces", handle)
147 CALL timeset(routinen, handle)
150 nkind =
SIZE(atomic_kind_set)
151 natom =
SIZE(particle_set)
153 doat =
PRESENT(atcore)
156 IF (calculate_forces .OR. doat)
THEN
157 IF (
SIZE(matrix_p, 1) == 2)
THEN
159 CALL dbcsr_add(matrix_p(1, img)%matrix, matrix_p(2, img)%matrix, &
160 alpha_scalar=1.0_dp, beta_scalar=1.0_dp)
161 CALL dbcsr_add(matrix_p(2, img)%matrix, matrix_p(1, img)%matrix, &
162 alpha_scalar=-2.0_dp, beta_scalar=1.0_dp)
167 force_thread = 0.0_dp
171 ALLOCATE (basis_set_list(nkind))
173 CALL get_qs_kind(qs_kind_set(ikind), basis_set=basis_set_a, basis_type=basis_type)
174 IF (
ASSOCIATED(basis_set_a))
THEN
175 basis_set_list(ikind)%gto_basis_set => basis_set_a
177 NULLIFY (basis_set_list(ikind)%gto_basis_set)
182 maxco=maxco, maxlgto=maxl, maxsgf=maxsgf, maxnset=maxnset)
184 ldsab = max(maxco, maxsgf)
185 ldai =
ncoset(maxl + nder + 1)
223 ALLOCATE (hab(ldsab, ldsab, maxnset*maxnset), work(ldsab, ldsab))
224 ALLOCATE (verf(ldai, ldai, 2*maxl + nder + 1), vnuc(ldai, ldai, 2*maxl + nder + 1), ff(0:2*maxl + nder))
225 IF (calculate_forces .OR. doat)
THEN
226 ALLOCATE (pab(maxco, maxco, maxnset*maxnset))
230 DO slot = 1, sab_orb(1)%nl_size
232 ikind = sab_orb(1)%nlist_task(slot)%ikind
233 jkind = sab_orb(1)%nlist_task(slot)%jkind
234 iatom = sab_orb(1)%nlist_task(slot)%iatom
235 jatom = sab_orb(1)%nlist_task(slot)%jatom
236 cellind(:) = sab_orb(1)%nlist_task(slot)%cell(:)
237 rab(1:3) = sab_orb(1)%nlist_task(slot)%r(1:3)
239 basis_set_a => basis_set_list(ikind)%gto_basis_set
240 IF (.NOT.
ASSOCIATED(basis_set_a)) cycle
241 basis_set_b => basis_set_list(jkind)%gto_basis_set
242 IF (.NOT.
ASSOCIATED(basis_set_b)) cycle
246 first_sgfa => basis_set_a%first_sgf
247 la_max => basis_set_a%lmax
248 la_min => basis_set_a%lmin
249 npgfa => basis_set_a%npgf
250 nseta = basis_set_a%nset
251 nsgfa => basis_set_a%nsgf_set
252 rpgfa => basis_set_a%pgf_radius
253 set_radius_a => basis_set_a%set_radius
254 sphi_a => basis_set_a%sphi
255 zeta => basis_set_a%zet
257 first_sgfb => basis_set_b%first_sgf
258 lb_max => basis_set_b%lmax
259 lb_min => basis_set_b%lmin
260 npgfb => basis_set_b%npgf
261 nsetb = basis_set_b%nset
262 nsgfb => basis_set_b%nsgf_set
263 rpgfb => basis_set_b%pgf_radius
264 set_radius_b => basis_set_b%set_radius
265 sphi_b => basis_set_b%sphi
266 zetb => basis_set_b%zet
268 dab = sqrt(sum(rab*rab))
271 img = cell_to_index(cellind(1), cellind(2), cellind(3))
277 IF (iatom == jatom)
THEN
284 IF (iatom <= jatom)
THEN
293 row=irow, col=icol, block=h_block, found=found)
294 IF (calculate_forces .OR. doat)
THEN
297 row=irow, col=icol, block=p_block, found=found)
298 cpassert(
ASSOCIATED(p_block))
301 ncoa = npgfa(iset)*
ncoset(la_max(iset))
302 sgfa = first_sgfa(1, iset)
304 ncob = npgfb(jset)*
ncoset(lb_max(jset))
305 sgfb = first_sgfb(1, jset)
306 nij = jset + (iset - 1)*maxnset
308 IF (iatom <= jatom)
THEN
309 work(1:ncoa, 1:nsgfb(jset)) = matmul(sphi_a(1:ncoa, sgfa:sgfa + nsgfa(iset) - 1), &
310 p_block(sgfa:sgfa + nsgfa(iset) - 1, sgfb:sgfb + nsgfb(jset) - 1))
312 work(1:ncoa, 1:nsgfb(jset)) = matmul(sphi_a(1:ncoa, sgfa:sgfa + nsgfa(iset) - 1), &
313 transpose(p_block(sgfb:sgfb + nsgfb(jset) - 1, sgfa:sgfa + nsgfa(iset) - 1)))
315 pab(1:ncoa, 1:ncob, nij) = matmul(work(1:ncoa, 1:nsgfb(jset)), &
316 transpose(sphi_b(1:ncob, sgfb:sgfb + nsgfb(jset) - 1)))
324 CALL get_qs_kind(qs_kind_set(kkind), all_potential=all_potential, &
325 sgp_potential=sgp_potential)
326 IF (
ASSOCIATED(all_potential))
THEN
328 alpha_core_charge=alpha_c, zeff=zeta_c, &
329 ccore_charge=core_charge, core_charge_radius=core_radius)
330 ELSE IF (
ASSOCIATED(sgp_potential))
THEN
332 alpha_core_charge=alpha_c, zeff=zeta_c, &
333 ccore_charge=core_charge, core_charge_radius=core_radius)
343 dac = sqrt(sum(rac*rac))
344 rbc(:) = rac(:) - rab(:)
345 dbc = sqrt(sum(rbc*rbc))
346 IF ((maxval(set_radius_a(:)) + core_radius < dac) .OR. &
347 (maxval(set_radius_b(:)) + core_radius < dbc))
THEN
352 IF (set_radius_a(iset) + core_radius < dac) cycle
353 ncoa = npgfa(iset)*
ncoset(la_max(iset))
354 sgfa = first_sgfa(1, iset)
356 IF (set_radius_b(jset) + core_radius < dbc) cycle
357 ncob = npgfb(jset)*
ncoset(lb_max(jset))
358 sgfb = first_sgfb(1, jset)
359 IF (set_radius_a(iset) + set_radius_b(jset) < dab) cycle
363 nij = jset + (iset - 1)*maxnset
366 atk0 = f0*sum(hab(1:ncoa, 1:ncob, nij)*pab(1:ncoa, 1:ncob, nij))
368 IF (calculate_forces)
THEN
369 na_plus = npgfa(iset)*
ncoset(la_max(iset) + nder)
370 nb_plus = npgfb(jset)*
ncoset(lb_max(jset))
371 ALLOCATE (habd(na_plus, nb_plus))
374 la_max(iset) + nder, npgfa(iset), zeta(:, iset), rpgfa(:, iset), la_min(iset), &
375 lb_max(jset), npgfb(jset), zetb(:, jset), rpgfb(:, jset), lb_min(jset), &
376 alpha_c, core_radius, zeta_c, core_charge, &
377 rab, rab2, rac, rac2, rbc2, hab(:, :, nij), verf, vnuc, ff(0:), &
383 CALL verfc_force(habd, pab(:, :, nij), force_a, force_b, nder, &
384 la_max(iset), la_min(iset), npgfa(iset), zeta(:, iset), &
385 lb_max(jset), lb_min(jset), npgfb(jset), zetb(:, jset), rab)
389 force_thread(1, iatom) = force_thread(1, iatom) + f0*force_a(1)
390 force_thread(2, iatom) = force_thread(2, iatom) + f0*force_a(2)
391 force_thread(3, iatom) = force_thread(3, iatom) + f0*force_a(3)
393 force_thread(1, jatom) = force_thread(1, jatom) + f0*force_b(1)
394 force_thread(2, jatom) = force_thread(2, jatom) + f0*force_b(2)
395 force_thread(3, jatom) = force_thread(3, jatom) + f0*force_b(3)
397 force_thread(1, katom) = force_thread(1, katom) - f0*force_a(1) - f0*force_b(1)
398 force_thread(2, katom) = force_thread(2, katom) - f0*force_a(2) - f0*force_b(2)
399 force_thread(3, katom) = force_thread(3, katom) - f0*force_a(3) - f0*force_b(3)
407 la_max(iset), npgfa(iset), zeta(:, iset), rpgfa(:, iset), la_min(iset), &
408 lb_max(jset), npgfb(jset), zetb(:, jset), rpgfb(:, jset), lb_min(jset), &
409 alpha_c, core_radius, zeta_c, core_charge, &
410 rab, rab2, rac, rac2, rbc2, hab(:, :, nij), verf, vnuc, ff(0:))
414 atk1 = f0*sum(hab(1:ncoa, 1:ncob, nij)*pab(1:ncoa, 1:ncob, nij))
415 at_thread(katom) = at_thread(katom) + (atk1 - atk0)
423 ncoa = npgfa(iset)*
ncoset(la_max(iset))
424 sgfa = first_sgfa(1, iset)
426 ncob = npgfb(jset)*
ncoset(lb_max(jset))
427 sgfb = first_sgfb(1, jset)
428 nij = jset + (iset - 1)*maxnset
431 work(1:ncoa, 1:nsgfb(jset)) = matmul(hab(1:ncoa, 1:ncob, nij), &
432 sphi_b(1:ncob, sgfb:sgfb + nsgfb(jset) - 1))
434 IF (iatom <= jatom)
THEN
435 h_block(sgfa:sgfa + nsgfa(iset) - 1, sgfb:sgfb + nsgfb(jset) - 1) = &
436 h_block(sgfa:sgfa + nsgfa(iset) - 1, sgfb:sgfb + nsgfb(jset) - 1) + &
437 matmul(transpose(sphi_a(1:ncoa, sgfa:sgfa + nsgfa(iset) - 1)), work(1:ncoa, 1:nsgfb(jset)))
439 h_block(sgfb:sgfb + nsgfb(jset) - 1, sgfa:sgfa + nsgfa(iset) - 1) = &
440 h_block(sgfb:sgfb + nsgfb(jset) - 1, sgfa:sgfa + nsgfa(iset) - 1) + &
441 matmul(transpose(work(1:ncoa, 1:nsgfb(jset))), sphi_a(1:ncoa, sgfa:sgfa + nsgfa(iset) - 1))
449 DEALLOCATE (hab, work, verf, vnuc, ff)
450 IF (calculate_forces .OR. doat)
THEN
468 DEALLOCATE (basis_set_list)
470 IF (calculate_forces .OR. doat)
THEN
473 IF (
SIZE(matrix_p, 1) == 2)
THEN
475 CALL dbcsr_add(matrix_p(1, img)%matrix, matrix_p(2, img)%matrix, &
476 alpha_scalar=0.5_dp, beta_scalar=0.5_dp)
477 CALL dbcsr_add(matrix_p(2, img)%matrix, matrix_p(1, img)%matrix, &
478 alpha_scalar=-1.0_dp, beta_scalar=1.0_dp)
483 IF (calculate_forces)
THEN
487 atom_a = atom_of_kind(iatom)
488 ikind = kind_of(iatom)
489 force(ikind)%all_potential(:, atom_a) = force(ikind)%all_potential(:, atom_a) + force_thread(:, iatom)
494 atcore(1:natom) = atcore(1:natom) + at_thread(1:natom)
497 IF (calculate_forces .AND. use_virial)
THEN
498 virial%pv_ppl = virial%pv_ppl + pv_thread
499 virial%pv_virial = virial%pv_virial + pv_thread
502 CALL timestop(handle)
607 SUBROUTINE build_erfc(matrix_h, matrix_p, qs_kind_set, atomic_kind_set, particle_set, &
608 calpha, ccore, eps_core_charge, sab_orb, sac_ae, atcore)
612 TYPE(
qs_kind_type),
DIMENSION(:),
POINTER :: qs_kind_set
615 REAL(kind=
dp),
DIMENSION(:),
INTENT(IN) :: calpha, ccore
616 REAL(kind=
dp),
INTENT(IN) :: eps_core_charge
618 POINTER :: sab_orb, sac_ae
619 REAL(kind=
dp),
DIMENSION(:),
INTENT(INOUT), &
622 CHARACTER(LEN=*),
PARAMETER :: routinen =
'build_erfc'
624 INTEGER :: handle, iatom, icol, ikind, img, irow, iset, jatom, jkind, jset, katom, kkind, &
625 ldai, ldsab, maxco, maxl, maxnset, maxsgf, mepos, na_plus, natom, nb_plus, ncoa, ncob, &
626 nij, nkind, nseta, nsetb, nthread, sgfa, sgfb, slot
627 INTEGER,
DIMENSION(3) :: cellind
628 INTEGER,
DIMENSION(:),
POINTER :: la_max, la_min, lb_max, lb_min, npgfa, &
630 INTEGER,
DIMENSION(:, :),
POINTER :: first_sgfa, first_sgfb
631 LOGICAL :: doat, found
632 REAL(kind=
dp) :: alpha_c, atk0, atk1, core_charge, &
633 core_radius, dab, dac, dbc, f0, rab2, &
635 REAL(kind=
dp),
ALLOCATABLE,
DIMENSION(:) :: ff
636 REAL(kind=
dp),
ALLOCATABLE,
DIMENSION(:, :) :: habd, work
637 REAL(kind=
dp),
ALLOCATABLE,
DIMENSION(:, :, :) :: hab, pab, verf, vnuc
638 REAL(kind=
dp),
DIMENSION(3) :: rab, rac, rbc
639 REAL(kind=
dp),
DIMENSION(:),
POINTER :: set_radius_a, set_radius_b
640 REAL(kind=
dp),
DIMENSION(:, :),
POINTER :: h_block, p_block, rpgfa, rpgfb, sphi_a, &
643 DIMENSION(:),
POINTER :: ap_iterator
647 REAL(kind=
dp),
DIMENSION(SIZE(particle_set)) :: at_thread
658 CALL timeset(routinen, handle)
660 nkind =
SIZE(atomic_kind_set)
661 natom =
SIZE(particle_set)
663 doat =
PRESENT(atcore)
666 IF (
SIZE(matrix_p, 1) == 2)
THEN
667 CALL dbcsr_add(matrix_p(1)%matrix, matrix_p(2)%matrix, &
668 alpha_scalar=1.0_dp, beta_scalar=1.0_dp)
669 CALL dbcsr_add(matrix_p(2)%matrix, matrix_p(1)%matrix, &
670 alpha_scalar=-2.0_dp, beta_scalar=1.0_dp)
676 ALLOCATE (basis_set_list(nkind))
678 CALL get_qs_kind(qs_kind_set(ikind), basis_set=basis_set_a)
679 IF (
ASSOCIATED(basis_set_a))
THEN
680 basis_set_list(ikind)%gto_basis_set => basis_set_a
682 NULLIFY (basis_set_list(ikind)%gto_basis_set)
687 maxco=maxco, maxlgto=maxl, maxsgf=maxsgf, maxnset=maxnset)
689 ldsab = max(maxco, maxsgf)
728 ALLOCATE (hab(ldsab, ldsab, maxnset*maxnset), work(ldsab, ldsab))
729 ALLOCATE (verf(ldai, ldai, 2*maxl + 1), vnuc(ldai, ldai, 2*maxl + 1), ff(0:2*maxl))
731 ALLOCATE (pab(maxco, maxco, maxnset*maxnset))
735 DO slot = 1, sab_orb(1)%nl_size
737 ikind = sab_orb(1)%nlist_task(slot)%ikind
738 jkind = sab_orb(1)%nlist_task(slot)%jkind
739 iatom = sab_orb(1)%nlist_task(slot)%iatom
740 jatom = sab_orb(1)%nlist_task(slot)%jatom
741 cellind(:) = sab_orb(1)%nlist_task(slot)%cell(:)
742 rab(1:3) = sab_orb(1)%nlist_task(slot)%r(1:3)
744 basis_set_a => basis_set_list(ikind)%gto_basis_set
745 IF (.NOT.
ASSOCIATED(basis_set_a)) cycle
746 basis_set_b => basis_set_list(jkind)%gto_basis_set
747 IF (.NOT.
ASSOCIATED(basis_set_b)) cycle
751 first_sgfa => basis_set_a%first_sgf
752 la_max => basis_set_a%lmax
753 la_min => basis_set_a%lmin
754 npgfa => basis_set_a%npgf
755 nseta = basis_set_a%nset
756 nsgfa => basis_set_a%nsgf_set
757 rpgfa => basis_set_a%pgf_radius
758 set_radius_a => basis_set_a%set_radius
759 sphi_a => basis_set_a%sphi
760 zeta => basis_set_a%zet
762 first_sgfb => basis_set_b%first_sgf
763 lb_max => basis_set_b%lmax
764 lb_min => basis_set_b%lmin
765 npgfb => basis_set_b%npgf
766 nsetb = basis_set_b%nset
767 nsgfb => basis_set_b%nsgf_set
768 rpgfb => basis_set_b%pgf_radius
769 set_radius_b => basis_set_b%set_radius
770 sphi_b => basis_set_b%sphi
771 zetb => basis_set_b%zet
773 dab = sqrt(sum(rab*rab))
777 IF (iatom == jatom)
THEN
784 IF (iatom <= jatom)
THEN
793 row=irow, col=icol, block=h_block, found=found)
797 row=irow, col=icol, block=p_block, found=found)
798 cpassert(
ASSOCIATED(p_block))
801 ncoa = npgfa(iset)*
ncoset(la_max(iset))
802 sgfa = first_sgfa(1, iset)
804 ncob = npgfb(jset)*
ncoset(lb_max(jset))
805 sgfb = first_sgfb(1, jset)
806 nij = jset + (iset - 1)*maxnset
808 IF (iatom <= jatom)
THEN
809 work(1:ncoa, 1:nsgfb(jset)) = matmul(sphi_a(1:ncoa, sgfa:sgfa + nsgfa(iset) - 1), &
810 p_block(sgfa:sgfa + nsgfa(iset) - 1, sgfb:sgfb + nsgfb(jset) - 1))
812 work(1:ncoa, 1:nsgfb(jset)) = matmul(sphi_a(1:ncoa, sgfa:sgfa + nsgfa(iset) - 1), &
813 transpose(p_block(sgfb:sgfb + nsgfb(jset) - 1, sgfa:sgfa + nsgfa(iset) - 1)))
815 pab(1:ncoa, 1:ncob, nij) = matmul(work(1:ncoa, 1:nsgfb(jset)), &
816 transpose(sphi_b(1:ncob, sgfb:sgfb + nsgfb(jset) - 1)))
825 alpha_c = calpha(kkind)
826 core_charge = ccore(kkind)
827 core_radius =
exp_radius(0, alpha_c, eps_core_charge, core_charge)
828 core_radius = max(core_radius, 10.0_dp)
835 dac = sqrt(sum(rac*rac))
836 rbc(:) = rac(:) - rab(:)
837 dbc = sqrt(sum(rbc*rbc))
838 IF ((maxval(set_radius_a(:)) + core_radius < dac) .OR. &
839 (maxval(set_radius_b(:)) + core_radius < dbc))
THEN
844 IF (set_radius_a(iset) + core_radius < dac) cycle
845 ncoa = npgfa(iset)*
ncoset(la_max(iset))
846 sgfa = first_sgfa(1, iset)
848 IF (set_radius_b(jset) + core_radius < dbc) cycle
849 ncob = npgfb(jset)*
ncoset(lb_max(jset))
850 sgfb = first_sgfb(1, jset)
851 IF (set_radius_a(iset) + set_radius_b(jset) < dab) cycle
855 nij = jset + (iset - 1)*maxnset
857 atk0 = f0*sum(hab(1:ncoa, 1:ncob, nij)*pab(1:ncoa, 1:ncob, nij))
861 la_max(iset), npgfa(iset), zeta(:, iset), rpgfa(:, iset), la_min(iset), &
862 lb_max(jset), npgfb(jset), zetb(:, jset), rpgfb(:, jset), lb_min(jset), &
863 alpha_c, core_radius, zeta_c, core_charge, &
864 rab, rab2, rac, rac2, rbc2, hab(:, :, nij), verf, vnuc, ff(0:))
867 atk1 = f0*sum(hab(1:ncoa, 1:ncob, nij)*pab(1:ncoa, 1:ncob, nij))
868 at_thread(katom) = at_thread(katom) + (atk1 - atk0)
876 ncoa = npgfa(iset)*
ncoset(la_max(iset))
877 sgfa = first_sgfa(1, iset)
879 ncob = npgfb(jset)*
ncoset(lb_max(jset))
880 sgfb = first_sgfb(1, jset)
881 nij = jset + (iset - 1)*maxnset
884 work(1:ncoa, 1:nsgfb(jset)) = matmul(hab(1:ncoa, 1:ncob, nij), &
885 sphi_b(1:ncob, sgfb:sgfb + nsgfb(jset) - 1))
887 IF (iatom <= jatom)
THEN
888 h_block(sgfa:sgfa + nsgfa(iset) - 1, sgfb:sgfb + nsgfb(jset) - 1) = &
889 h_block(sgfa:sgfa + nsgfa(iset) - 1, sgfb:sgfb + nsgfb(jset) - 1) + &
890 matmul(transpose(sphi_a(1:ncoa, sgfa:sgfa + nsgfa(iset) - 1)), work(1:ncoa, 1:nsgfb(jset)))
892 h_block(sgfb:sgfb + nsgfb(jset) - 1, sgfa:sgfa + nsgfa(iset) - 1) = &
893 h_block(sgfb:sgfb + nsgfb(jset) - 1, sgfa:sgfa + nsgfa(iset) - 1) + &
894 matmul(transpose(work(1:ncoa, 1:nsgfb(jset))), sphi_a(1:ncoa, sgfa:sgfa + nsgfa(iset) - 1))
902 DEALLOCATE (hab, work, verf, vnuc, ff)
918 DEALLOCATE (basis_set_list)
923 IF (
SIZE(matrix_p, 1) == 2)
THEN
924 CALL dbcsr_add(matrix_p(1)%matrix, matrix_p(2)%matrix, &
925 alpha_scalar=0.5_dp, beta_scalar=0.5_dp)
926 CALL dbcsr_add(matrix_p(2)%matrix, matrix_p(1)%matrix, &
927 alpha_scalar=-1.0_dp, beta_scalar=1.0_dp)
932 atcore(1:natom) = atcore(1:natom) + at_thread(1:natom)
935 CALL timestop(handle)
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, zatom, 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_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_model_file, pao_potentials, pao_descriptors, nelec)
Get attributes of an atomic kind.