258 qs_force(ikind)%all_potential(:, :) = 0.0_dp
259 qs_force(ikind)%core_overlap(:, :) = 0.0_dp
260 qs_force(ikind)%gth_ppl(:, :) = 0.0_dp
261 qs_force(ikind)%gth_nlcc(:, :) = 0.0_dp
262 qs_force(ikind)%gth_ppnl(:, :) = 0.0_dp
263 qs_force(ikind)%kinetic(:, :) = 0.0_dp
264 qs_force(ikind)%overlap(:, :) = 0.0_dp
265 qs_force(ikind)%overlap_admm(:, :) = 0.0_dp
266 qs_force(ikind)%rho_core(:, :) = 0.0_dp
267 qs_force(ikind)%rho_elec(:, :) = 0.0_dp
268 qs_force(ikind)%rho_lri_elec(:, :) = 0.0_dp
269 qs_force(ikind)%vhxc_atom(:, :) = 0.0_dp
270 qs_force(ikind)%g0s_Vh_elec(:, :) = 0.0_dp
271 qs_force(ikind)%repulsive(:, :) = 0.0_dp
272 qs_force(ikind)%dispersion(:, :) = 0.0_dp
274 qs_force(ikind)%other(:, :) = 0.0_dp
275 qs_force(ikind)%fock_4c(:, :) = 0.0_dp
276 qs_force(ikind)%ehrenfest(:, :) = 0.0_dp
277 qs_force(ikind)%efield(:, :) = 0.0_dp
279 qs_force(ikind)%mp2_non_sep(:, :) = 0.0_dp
280 qs_force(ikind)%total(:, :) = 0.0_dp
293 TYPE(
qs_force_type),
DIMENSION(:),
POINTER :: qs_force_out, qs_force_in
297 cpassert(
ASSOCIATED(qs_force_out))
298 cpassert(
ASSOCIATED(qs_force_in))
300 DO ikind = 1,
SIZE(qs_force_out)
301 qs_force_out(ikind)%all_potential(:, :) = qs_force_out(ikind)%all_potential(:, :) + &
302 qs_force_in(ikind)%all_potential(:, :)
303 qs_force_out(ikind)%core_overlap(:, :) = qs_force_out(ikind)%core_overlap(:, :) + &
304 qs_force_in(ikind)%core_overlap(:, :)
305 qs_force_out(ikind)%gth_ppl(:, :) = qs_force_out(ikind)%gth_ppl(:, :) + &
306 qs_force_in(ikind)%gth_ppl(:, :)
307 qs_force_out(ikind)%gth_nlcc(:, :) = qs_force_out(ikind)%gth_nlcc(:, :) + &
308 qs_force_in(ikind)%gth_nlcc(:, :)
309 qs_force_out(ikind)%gth_ppnl(:, :) = qs_force_out(ikind)%gth_ppnl(:, :) + &
310 qs_force_in(ikind)%gth_ppnl(:, :)
311 qs_force_out(ikind)%kinetic(:, :) = qs_force_out(ikind)%kinetic(:, :) + &
312 qs_force_in(ikind)%kinetic(:, :)
313 qs_force_out(ikind)%overlap(:, :) = qs_force_out(ikind)%overlap(:, :) + &
314 qs_force_in(ikind)%overlap(:, :)
315 qs_force_out(ikind)%overlap_admm(:, :) = qs_force_out(ikind)%overlap_admm(:, :) + &
316 qs_force_in(ikind)%overlap_admm(:, :)
317 qs_force_out(ikind)%rho_core(:, :) = qs_force_out(ikind)%rho_core(:, :) + &
318 qs_force_in(ikind)%rho_core(:, :)
319 qs_force_out(ikind)%rho_elec(:, :) = qs_force_out(ikind)%rho_elec(:, :) + &
320 qs_force_in(ikind)%rho_elec(:, :)
321 qs_force_out(ikind)%rho_lri_elec(:, :) = qs_force_out(ikind)%rho_lri_elec(:, :) + &
322 qs_force_in(ikind)%rho_lri_elec(:, :)
323 qs_force_out(ikind)%vhxc_atom(:, :) = qs_force_out(ikind)%vhxc_atom(:, :) + &
324 qs_force_in(ikind)%vhxc_atom(:, :)
325 qs_force_out(ikind)%g0s_Vh_elec(:, :) = qs_force_out(ikind)%g0s_Vh_elec(:, :) + &
326 qs_force_in(ikind)%g0s_Vh_elec(:, :)
327 qs_force_out(ikind)%repulsive(:, :) = qs_force_out(ikind)%repulsive(:, :) + &
328 qs_force_in(ikind)%repulsive(:, :)
329 qs_force_out(ikind)%dispersion(:, :) = qs_force_out(ikind)%dispersion(:, :) + &
330 qs_force_in(ikind)%dispersion(:, :)
331 qs_force_out(ikind)%gcp(:, :) = qs_force_out(ikind)%gcp(:, :) + &
332 qs_force_in(ikind)%gcp(:, :)
333 qs_force_out(ikind)%other(:, :) = qs_force_out(ikind)%other(:, :) + &
334 qs_force_in(ikind)%other(:, :)
335 qs_force_out(ikind)%fock_4c(:, :) = qs_force_out(ikind)%fock_4c(:, :) + &
336 qs_force_in(ikind)%fock_4c(:, :)
337 qs_force_out(ikind)%ehrenfest(:, :) = qs_force_out(ikind)%ehrenfest(:, :) + &
338 qs_force_in(ikind)%ehrenfest(:, :)
339 qs_force_out(ikind)%efield(:, :) = qs_force_out(ikind)%efield(:, :) + &
340 qs_force_in(ikind)%efield(:, :)
341 qs_force_out(ikind)%eev(:, :) = qs_force_out(ikind)%eev(:, :) + &
342 qs_force_in(ikind)%eev(:, :)
343 qs_force_out(ikind)%mp2_non_sep(:, :) = qs_force_out(ikind)%mp2_non_sep(:, :) + &
344 qs_force_in(ikind)%mp2_non_sep(:, :)
345 qs_force_out(ikind)%total(:, :) = qs_force_out(ikind)%total(:, :) + &
346 qs_force_in(ikind)%total(:, :)
368 CALL para_env%sum(
qs_force(ikind)%overlap)
369 CALL para_env%sum(
qs_force(ikind)%overlap_admm)
370 CALL para_env%sum(
qs_force(ikind)%kinetic)
371 CALL para_env%sum(
qs_force(ikind)%gth_ppl)
372 CALL para_env%sum(
qs_force(ikind)%gth_nlcc)
373 CALL para_env%sum(
qs_force(ikind)%gth_ppnl)
374 CALL para_env%sum(
qs_force(ikind)%all_potential)
375 CALL para_env%sum(
qs_force(ikind)%core_overlap)
376 CALL para_env%sum(
qs_force(ikind)%rho_core)
377 CALL para_env%sum(
qs_force(ikind)%rho_elec)
378 CALL para_env%sum(
qs_force(ikind)%rho_lri_elec)
379 CALL para_env%sum(
qs_force(ikind)%vhxc_atom)
380 CALL para_env%sum(
qs_force(ikind)%g0s_Vh_elec)
381 CALL para_env%sum(
qs_force(ikind)%fock_4c)
382 CALL para_env%sum(
qs_force(ikind)%mp2_non_sep)
383 CALL para_env%sum(
qs_force(ikind)%repulsive)
384 CALL para_env%sum(
qs_force(ikind)%dispersion)
385 CALL para_env%sum(
qs_force(ikind)%gcp)
386 CALL para_env%sum(
qs_force(ikind)%ehrenfest)
389 qs_force(ikind)%core_overlap(:, :) + &
393 qs_force(ikind)%all_potential(:, :) + &
396 qs_force(ikind)%overlap_admm(:, :) + &
399 qs_force(ikind)%rho_lri_elec(:, :) + &
401 qs_force(ikind)%g0s_Vh_elec(:, :) + &
403 qs_force(ikind)%mp2_non_sep(:, :) + &
405 qs_force(ikind)%dispersion(:, :) + &
541 REAL(kind=
dp),
DIMENSION(:, :),
INTENT(INOUT) :: force
545 INTEGER :: ia, iatom, ikind, natom_kind
551 DO ikind = 1,
SIZE(atomic_kind_set, 1)
552 atomic_kind => atomic_kind_set(ikind)
554 DO ia = 1, natom_kind
555 iatom = atomic_kind%atom_list(ia)
556 force(:, iatom) =
qs_force(ikind)%core_overlap(:, ia) + &
560 qs_force(ikind)%all_potential(:, ia) + &
563 qs_force(ikind)%overlap_admm(:, ia) + &
566 qs_force(ikind)%rho_lri_elec(:, ia) + &
567 qs_force(ikind)%vhxc_atom(:, ia) + &
568 qs_force(ikind)%g0s_Vh_elec(:, ia) + &
570 qs_force(ikind)%mp2_non_sep(:, ia) + &
571 qs_force(ikind)%repulsive(:, ia) + &
572 qs_force(ikind)%dispersion(:, ia) + &
574 qs_force(ikind)%ehrenfest(:, ia) + &
595 INTEGER,
INTENT(IN),
OPTIONAL :: ikind, iatom, iunit
597 CHARACTER(LEN=35) :: fmtstr2
598 CHARACTER(LEN=48) :: fmtstr1
599 INTEGER :: iounit, jatom, jkind
600 REAL(kind=
dp),
DIMENSION(3) :: total
603 IF (
PRESENT(iunit))
THEN
610 IF (
PRESENT(ikind))
THEN
615 IF (
PRESENT(iatom))
THEN
623 fmtstr1 =
"(/,T2,A,/,T3,A,T11,A,T23,A,T40,A1,2(17X,A1))"
624 fmtstr2 =
"((T2,I5,4X,I4,T18,A,T34,3F18.12))"
626 WRITE (unit=iounit, fmt=fmtstr1) &
627 "FORCES [a.u.]",
"Atom",
"Kind",
"Component",
"X",
"Y",
"Z"
629 total(1:3) =
qs_force(jkind)%overlap(1:3, jatom) &
630 +
qs_force(jkind)%overlap_admm(1:3, jatom) &
631 +
qs_force(jkind)%kinetic(1:3, jatom) &
632 +
qs_force(jkind)%gth_ppl(1:3, jatom) &
633 +
qs_force(jkind)%gth_ppnl(1:3, jatom) &
634 +
qs_force(jkind)%core_overlap(1:3, jatom) &
635 +
qs_force(jkind)%rho_core(1:3, jatom) &
636 +
qs_force(jkind)%rho_elec(1:3, jatom) &
637 +
qs_force(jkind)%dispersion(1:3, jatom) &
638 +
qs_force(jkind)%fock_4c(1:3, jatom) &
639 +
qs_force(jkind)%mp2_non_sep(1:3, jatom)
641 WRITE (unit=iounit, fmt=fmtstr2) &
642 jatom, jkind,
" overlap",
qs_force(jkind)%overlap(1:3, jatom), &
643 jatom, jkind,
" overlap_admm",
qs_force(jkind)%overlap_admm(1:3, jatom), &
644 jatom, jkind,
" kinetic",
qs_force(jkind)%kinetic(1:3, jatom), &
645 jatom, jkind,
" gth_ppl",
qs_force(jkind)%gth_ppl(1:3, jatom), &
646 jatom, jkind,
" gth_ppnl",
qs_force(jkind)%gth_ppnl(1:3, jatom), &
647 jatom, jkind,
" core_overlap",
qs_force(jkind)%core_overlap(1:3, jatom), &
648 jatom, jkind,
" rho_core",
qs_force(jkind)%rho_core(1:3, jatom), &
649 jatom, jkind,
" rho_elec",
qs_force(jkind)%rho_elec(1:3, jatom), &
650 jatom, jkind,
" dispersion",
qs_force(jkind)%dispersion(1:3, jatom), &
651 jatom, jkind,
" fock_4c",
qs_force(jkind)%fock_4c(1:3, jatom), &
652 jatom, jkind,
" mp2_non_sep",
qs_force(jkind)%mp2_non_sep(1:3, jatom), &
653 jatom, jkind,
" total", total(1:3)
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.