270 qs_force(ikind)%all_potential(:, :) = 0.0_dp
271 qs_force(ikind)%cneo_potential(:, :) = 0.0_dp
272 qs_force(ikind)%core_overlap(:, :) = 0.0_dp
273 qs_force(ikind)%gth_ppl(:, :) = 0.0_dp
274 qs_force(ikind)%gth_nlcc(:, :) = 0.0_dp
275 qs_force(ikind)%gth_ppnl(:, :) = 0.0_dp
276 qs_force(ikind)%kinetic(:, :) = 0.0_dp
277 qs_force(ikind)%overlap(:, :) = 0.0_dp
278 qs_force(ikind)%overlap_admm(:, :) = 0.0_dp
279 qs_force(ikind)%rho_core(:, :) = 0.0_dp
280 qs_force(ikind)%rho_elec(:, :) = 0.0_dp
281 qs_force(ikind)%rho_lri_elec(:, :) = 0.0_dp
282 qs_force(ikind)%rho_cneo_nuc(:, :) = 0.0_dp
283 qs_force(ikind)%vhxc_atom(:, :) = 0.0_dp
284 qs_force(ikind)%g0s_Vh_elec(:, :) = 0.0_dp
285 qs_force(ikind)%repulsive(:, :) = 0.0_dp
286 qs_force(ikind)%dispersion(:, :) = 0.0_dp
288 qs_force(ikind)%other(:, :) = 0.0_dp
289 qs_force(ikind)%fock_4c(:, :) = 0.0_dp
290 qs_force(ikind)%ehrenfest(:, :) = 0.0_dp
291 qs_force(ikind)%efield(:, :) = 0.0_dp
293 qs_force(ikind)%mp2_non_sep(:, :) = 0.0_dp
294 qs_force(ikind)%total(:, :) = 0.0_dp
307 TYPE(
qs_force_type),
DIMENSION(:),
POINTER :: qs_force_out, qs_force_in
311 cpassert(
ASSOCIATED(qs_force_out))
312 cpassert(
ASSOCIATED(qs_force_in))
314 DO ikind = 1,
SIZE(qs_force_out)
315 qs_force_out(ikind)%all_potential(:, :) = qs_force_out(ikind)%all_potential(:, :) + &
316 qs_force_in(ikind)%all_potential(:, :)
317 qs_force_out(ikind)%cneo_potential(:, :) = qs_force_out(ikind)%cneo_potential(:, :) + &
318 qs_force_in(ikind)%cneo_potential(:, :)
319 qs_force_out(ikind)%core_overlap(:, :) = qs_force_out(ikind)%core_overlap(:, :) + &
320 qs_force_in(ikind)%core_overlap(:, :)
321 qs_force_out(ikind)%gth_ppl(:, :) = qs_force_out(ikind)%gth_ppl(:, :) + &
322 qs_force_in(ikind)%gth_ppl(:, :)
323 qs_force_out(ikind)%gth_nlcc(:, :) = qs_force_out(ikind)%gth_nlcc(:, :) + &
324 qs_force_in(ikind)%gth_nlcc(:, :)
325 qs_force_out(ikind)%gth_ppnl(:, :) = qs_force_out(ikind)%gth_ppnl(:, :) + &
326 qs_force_in(ikind)%gth_ppnl(:, :)
327 qs_force_out(ikind)%kinetic(:, :) = qs_force_out(ikind)%kinetic(:, :) + &
328 qs_force_in(ikind)%kinetic(:, :)
329 qs_force_out(ikind)%overlap(:, :) = qs_force_out(ikind)%overlap(:, :) + &
330 qs_force_in(ikind)%overlap(:, :)
331 qs_force_out(ikind)%overlap_admm(:, :) = qs_force_out(ikind)%overlap_admm(:, :) + &
332 qs_force_in(ikind)%overlap_admm(:, :)
333 qs_force_out(ikind)%rho_core(:, :) = qs_force_out(ikind)%rho_core(:, :) + &
334 qs_force_in(ikind)%rho_core(:, :)
335 qs_force_out(ikind)%rho_elec(:, :) = qs_force_out(ikind)%rho_elec(:, :) + &
336 qs_force_in(ikind)%rho_elec(:, :)
337 qs_force_out(ikind)%rho_lri_elec(:, :) = qs_force_out(ikind)%rho_lri_elec(:, :) + &
338 qs_force_in(ikind)%rho_lri_elec(:, :)
339 qs_force_out(ikind)%rho_cneo_nuc(:, :) = qs_force_out(ikind)%rho_cneo_nuc(:, :) + &
340 qs_force_in(ikind)%rho_cneo_nuc(:, :)
341 qs_force_out(ikind)%vhxc_atom(:, :) = qs_force_out(ikind)%vhxc_atom(:, :) + &
342 qs_force_in(ikind)%vhxc_atom(:, :)
343 qs_force_out(ikind)%g0s_Vh_elec(:, :) = qs_force_out(ikind)%g0s_Vh_elec(:, :) + &
344 qs_force_in(ikind)%g0s_Vh_elec(:, :)
345 qs_force_out(ikind)%repulsive(:, :) = qs_force_out(ikind)%repulsive(:, :) + &
346 qs_force_in(ikind)%repulsive(:, :)
347 qs_force_out(ikind)%dispersion(:, :) = qs_force_out(ikind)%dispersion(:, :) + &
348 qs_force_in(ikind)%dispersion(:, :)
349 qs_force_out(ikind)%gcp(:, :) = qs_force_out(ikind)%gcp(:, :) + &
350 qs_force_in(ikind)%gcp(:, :)
351 qs_force_out(ikind)%other(:, :) = qs_force_out(ikind)%other(:, :) + &
352 qs_force_in(ikind)%other(:, :)
353 qs_force_out(ikind)%fock_4c(:, :) = qs_force_out(ikind)%fock_4c(:, :) + &
354 qs_force_in(ikind)%fock_4c(:, :)
355 qs_force_out(ikind)%ehrenfest(:, :) = qs_force_out(ikind)%ehrenfest(:, :) + &
356 qs_force_in(ikind)%ehrenfest(:, :)
357 qs_force_out(ikind)%efield(:, :) = qs_force_out(ikind)%efield(:, :) + &
358 qs_force_in(ikind)%efield(:, :)
359 qs_force_out(ikind)%eev(:, :) = qs_force_out(ikind)%eev(:, :) + &
360 qs_force_in(ikind)%eev(:, :)
361 qs_force_out(ikind)%mp2_non_sep(:, :) = qs_force_out(ikind)%mp2_non_sep(:, :) + &
362 qs_force_in(ikind)%mp2_non_sep(:, :)
363 qs_force_out(ikind)%total(:, :) = qs_force_out(ikind)%total(:, :) + &
364 qs_force_in(ikind)%total(:, :)
386 CALL para_env%sum(
qs_force(ikind)%overlap)
387 CALL para_env%sum(
qs_force(ikind)%overlap_admm)
388 CALL para_env%sum(
qs_force(ikind)%kinetic)
389 CALL para_env%sum(
qs_force(ikind)%gth_ppl)
390 CALL para_env%sum(
qs_force(ikind)%gth_nlcc)
391 CALL para_env%sum(
qs_force(ikind)%gth_ppnl)
392 CALL para_env%sum(
qs_force(ikind)%all_potential)
393 CALL para_env%sum(
qs_force(ikind)%cneo_potential)
394 CALL para_env%sum(
qs_force(ikind)%core_overlap)
395 CALL para_env%sum(
qs_force(ikind)%rho_core)
396 CALL para_env%sum(
qs_force(ikind)%rho_elec)
397 CALL para_env%sum(
qs_force(ikind)%rho_lri_elec)
398 CALL para_env%sum(
qs_force(ikind)%rho_cneo_nuc)
399 CALL para_env%sum(
qs_force(ikind)%vhxc_atom)
400 CALL para_env%sum(
qs_force(ikind)%g0s_Vh_elec)
401 CALL para_env%sum(
qs_force(ikind)%fock_4c)
402 CALL para_env%sum(
qs_force(ikind)%mp2_non_sep)
403 CALL para_env%sum(
qs_force(ikind)%repulsive)
404 CALL para_env%sum(
qs_force(ikind)%dispersion)
405 CALL para_env%sum(
qs_force(ikind)%gcp)
406 CALL para_env%sum(
qs_force(ikind)%ehrenfest)
409 qs_force(ikind)%core_overlap(:, :) + &
413 qs_force(ikind)%all_potential(:, :) + &
414 qs_force(ikind)%cneo_potential(:, :) + &
417 qs_force(ikind)%overlap_admm(:, :) + &
420 qs_force(ikind)%rho_lri_elec(:, :) + &
421 qs_force(ikind)%rho_cneo_nuc(:, :) + &
423 qs_force(ikind)%g0s_Vh_elec(:, :) + &
425 qs_force(ikind)%mp2_non_sep(:, :) + &
427 qs_force(ikind)%dispersion(:, :) + &
563 REAL(kind=
dp),
DIMENSION(:, :),
INTENT(INOUT) :: force
567 INTEGER :: ia, iatom, ikind, natom_kind
573 DO ikind = 1,
SIZE(atomic_kind_set, 1)
574 atomic_kind => atomic_kind_set(ikind)
576 DO ia = 1, natom_kind
577 iatom = atomic_kind%atom_list(ia)
578 force(:, iatom) =
qs_force(ikind)%core_overlap(:, ia) + &
582 qs_force(ikind)%all_potential(:, ia) + &
583 qs_force(ikind)%cneo_potential(:, ia) + &
586 qs_force(ikind)%overlap_admm(:, ia) + &
589 qs_force(ikind)%rho_lri_elec(:, ia) + &
590 qs_force(ikind)%rho_cneo_nuc(:, ia) + &
591 qs_force(ikind)%vhxc_atom(:, ia) + &
592 qs_force(ikind)%g0s_Vh_elec(:, ia) + &
594 qs_force(ikind)%mp2_non_sep(:, ia) + &
595 qs_force(ikind)%repulsive(:, ia) + &
596 qs_force(ikind)%dispersion(:, ia) + &
598 qs_force(ikind)%ehrenfest(:, ia) + &
619 INTEGER,
INTENT(IN),
OPTIONAL :: ikind, iatom, iunit
621 CHARACTER(LEN=35) :: fmtstr2
622 CHARACTER(LEN=48) :: fmtstr1
623 INTEGER :: iounit, jatom, jkind
624 REAL(kind=
dp),
DIMENSION(3) :: total
627 IF (
PRESENT(iunit))
THEN
634 IF (
PRESENT(ikind))
THEN
639 IF (
PRESENT(iatom))
THEN
647 fmtstr1 =
"(/,T2,A,/,T3,A,T11,A,T23,A,T40,A1,2(17X,A1))"
648 fmtstr2 =
"((T2,I5,4X,I4,T18,A,T34,3F18.12))"
650 WRITE (unit=iounit, fmt=fmtstr1) &
651 "FORCES [a.u.]",
"Atom",
"Kind",
"Component",
"X",
"Y",
"Z"
653 total(1:3) =
qs_force(jkind)%overlap(1:3, jatom) &
654 +
qs_force(jkind)%overlap_admm(1:3, jatom) &
655 +
qs_force(jkind)%kinetic(1:3, jatom) &
656 +
qs_force(jkind)%gth_ppl(1:3, jatom) &
657 +
qs_force(jkind)%gth_ppnl(1:3, jatom) &
658 +
qs_force(jkind)%core_overlap(1:3, jatom) &
659 +
qs_force(jkind)%rho_core(1:3, jatom) &
660 +
qs_force(jkind)%rho_elec(1:3, jatom) &
661 +
qs_force(jkind)%dispersion(1:3, jatom) &
662 +
qs_force(jkind)%fock_4c(1:3, jatom) &
663 +
qs_force(jkind)%mp2_non_sep(1:3, jatom)
665 WRITE (unit=iounit, fmt=fmtstr2) &
666 jatom, jkind,
" overlap",
qs_force(jkind)%overlap(1:3, jatom), &
667 jatom, jkind,
" overlap_admm",
qs_force(jkind)%overlap_admm(1:3, jatom), &
668 jatom, jkind,
" kinetic",
qs_force(jkind)%kinetic(1:3, jatom), &
669 jatom, jkind,
" gth_ppl",
qs_force(jkind)%gth_ppl(1:3, jatom), &
670 jatom, jkind,
" gth_ppnl",
qs_force(jkind)%gth_ppnl(1:3, jatom), &
671 jatom, jkind,
" core_overlap",
qs_force(jkind)%core_overlap(1:3, jatom), &
672 jatom, jkind,
" rho_core",
qs_force(jkind)%rho_core(1:3, jatom), &
673 jatom, jkind,
" rho_elec",
qs_force(jkind)%rho_elec(1:3, jatom), &
674 jatom, jkind,
" dispersion",
qs_force(jkind)%dispersion(1:3, jatom), &
675 jatom, jkind,
" fock_4c",
qs_force(jkind)%fock_4c(1:3, jatom), &
676 jatom, jkind,
" mp2_non_sep",
qs_force(jkind)%mp2_non_sep(1:3, jatom), &
677 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.