65#include "./base/base_uses.f90"
70 LOGICAL,
PRIVATE,
PARAMETER :: debug_this_module = .true.
71 CHARACTER(len=*),
PARAMETER,
PRIVATE :: moduleN =
'qs_ks_types'
138 LOGICAL :: s_mstruct_changed = .true., &
139 rho_changed = .true., &
140 potential_changed = .true., &
141 forces_up_to_date = .false., &
143 INTEGER :: n_evals = 0
160 matrix_p_mp2_admm => null()
172 INTEGER :: neighbor_list_id = -1
177 sap_ppnl => null(), &
183 sab_xtbe => null(), &
184 sab_core => null(), &
186 sab_xtb_pp => null(), &
187 sab_xtb_nonbond => null(), &
190 sab_almo => null(), &
192 sab_kp_nosym => null()
217 ALLOCATE (ks_env%rho)
219 ALLOCATE (ks_env%rho_xc)
313 s_mstruct_changed, rho_changed, &
314 potential_changed, forces_up_to_date, complex_ks, &
315 matrix_h, matrix_h_im, matrix_ks, matrix_ks_im, matrix_vxc, &
317 matrix_s_RI_aux, matrix_w, matrix_p_mp2, matrix_p_mp2_admm, &
318 matrix_h_kp, matrix_h_im_kp, matrix_ks_kp, matrix_vxc_kp, kinetic_kp, matrix_s_kp, matrix_w_kp, &
319 matrix_s_RI_aux_kp, matrix_ks_im_kp, &
321 vppl, rho_core, rho_nlcc, rho_nlcc_g, vee, &
323 sab_orb, sab_all, sac_ae, sac_ppl, sac_lri, sap_ppnl, sap_oce, sab_lrc, &
324 sab_se, sab_xtbe, sab_tbe, sab_core, sab_xb, sab_xtb_pp, sab_xtb_nonbond, &
325 sab_vdw, sab_scp, sab_almo, sab_kp, sab_kp_nosym, &
326 task_list, task_list_soft, &
327 kpoints, do_kpoints, &
328 atomic_kind_set, qs_kind_set, cell, cell_ref, use_ref_cell, &
329 particle_set, energy, force, local_particles, local_molecules, &
330 molecule_kind_set, molecule_set, subsys, cp_subsys, virial, results, atprop, &
331 nkind, natom, dft_control, dbcsr_dist, distribution_2d, pw_env, &
332 para_env, blacs_env, nelectron_total, nelectron_spin)
336 LOGICAL,
OPTIONAL :: s_mstruct_changed, rho_changed, &
337 potential_changed, forces_up_to_date, &
339 TYPE(
dbcsr_p_type),
DIMENSION(:),
OPTIONAL,
POINTER :: matrix_h, matrix_h_im, matrix_ks, &
340 matrix_ks_im, matrix_vxc, kinetic, matrix_s, matrix_s_ri_aux, matrix_w, matrix_p_mp2, &
342 TYPE(
dbcsr_p_type),
DIMENSION(:, :),
OPTIONAL,
POINTER :: matrix_h_kp, matrix_h_im_kp, &
343 matrix_ks_kp, matrix_vxc_kp, kinetic_kp, matrix_s_kp, matrix_w_kp, matrix_s_ri_aux_kp, &
345 TYPE(
qs_rho_type),
OPTIONAL,
POINTER :: rho, rho_xc
351 INTEGER,
OPTIONAL :: neighbor_list_id
353 sac_ppl, sac_lri, sap_ppnl, sap_oce, sab_lrc, sab_se, sab_xtbe, sab_tbe, sab_core, &
354 sab_xb, sab_xtb_pp, sab_xtb_nonbond, sab_vdw, sab_scp, sab_almo, sab_kp, sab_kp_nosym
355 TYPE(
task_list_type),
OPTIONAL,
POINTER :: task_list, task_list_soft
357 LOGICAL,
OPTIONAL :: do_kpoints
359 POINTER :: atomic_kind_set
361 POINTER :: qs_kind_set
362 TYPE(
cell_type),
OPTIONAL,
POINTER :: cell, cell_ref
363 LOGICAL,
OPTIONAL :: use_ref_cell
365 POINTER :: particle_set
371 POINTER :: molecule_kind_set
373 POINTER :: molecule_set
379 INTEGER,
OPTIONAL :: nkind, natom
386 INTEGER,
OPTIONAL :: nelectron_total
387 INTEGER,
DIMENSION(2),
OPTIONAL :: nelectron_spin
389 IF (.NOT.
ASSOCIATED(ks_env%subsys)) cpabort(
"get_ks_env: subsys not associated")
391 IF (
PRESENT(s_mstruct_changed)) s_mstruct_changed = ks_env%s_mstruct_changed
392 IF (
PRESENT(rho_changed)) rho_changed = ks_env%rho_changed
393 IF (
PRESENT(potential_changed)) potential_changed = ks_env%potential_changed
394 IF (
PRESENT(forces_up_to_date)) forces_up_to_date = ks_env%forces_up_to_date
395 IF (
PRESENT(complex_ks)) complex_ks = ks_env%complex_ks
396 IF (
PRESENT(v_hartree_rspace)) v_hartree_rspace => ks_env%v_hartree_rspace
398 IF (
PRESENT(matrix_ks)) matrix_ks =>
get_1d_pointer(ks_env%matrix_ks)
399 IF (
PRESENT(matrix_s)) matrix_s =>
get_1d_pointer(ks_env%matrix_s)
400 IF (
PRESENT(matrix_s_ri_aux)) matrix_s_ri_aux =>
get_1d_pointer(ks_env%matrix_s_RI_aux)
402 IF (
PRESENT(matrix_h)) matrix_h =>
get_1d_pointer(ks_env%matrix_h)
403 IF (
PRESENT(matrix_h_im)) matrix_h_im =>
get_1d_pointer(ks_env%matrix_h_im)
404 IF (
PRESENT(matrix_w)) matrix_w =>
get_1d_pointer(ks_env%matrix_w)
405 IF (
PRESENT(matrix_vxc)) matrix_vxc =>
get_1d_pointer(ks_env%matrix_vxc)
407 IF (
PRESENT(matrix_ks_kp)) matrix_ks_kp =>
get_2d_pointer(ks_env%matrix_ks)
408 IF (
PRESENT(matrix_ks_im_kp)) matrix_ks_im_kp =>
get_2d_pointer(ks_env%matrix_ks_im)
409 IF (
PRESENT(matrix_s_kp)) matrix_s_kp =>
get_2d_pointer(ks_env%matrix_s)
410 IF (
PRESENT(matrix_s_ri_aux_kp)) matrix_s_ri_aux_kp =>
get_2d_pointer(ks_env%matrix_s_RI_aux)
411 IF (
PRESENT(matrix_w_kp)) matrix_w_kp =>
get_2d_pointer(ks_env%matrix_w)
412 IF (
PRESENT(kinetic_kp)) kinetic_kp =>
get_2d_pointer(ks_env%kinetic)
413 IF (
PRESENT(matrix_h_kp)) matrix_h_kp =>
get_2d_pointer(ks_env%matrix_h)
414 IF (
PRESENT(matrix_h_im_kp)) matrix_h_im_kp =>
get_2d_pointer(ks_env%matrix_h_im)
415 IF (
PRESENT(matrix_vxc_kp)) matrix_vxc_kp =>
get_2d_pointer(ks_env%matrix_vxc)
416 IF (
PRESENT(matrix_ks_im)) matrix_ks_im =>
get_1d_pointer(ks_env%matrix_ks_im)
418 IF (
PRESENT(matrix_p_mp2)) matrix_p_mp2 => ks_env%matrix_p_mp2
419 IF (
PRESENT(matrix_p_mp2_admm)) matrix_p_mp2_admm => ks_env%matrix_p_mp2_admm
420 IF (
PRESENT(rho)) rho => ks_env%rho
421 IF (
PRESENT(rho_xc)) rho_xc => ks_env%rho_xc
422 IF (
PRESENT(rho_core)) rho_core => ks_env%rho_core
423 IF (
PRESENT(rho_nlcc)) rho_nlcc => ks_env%rho_nlcc
424 IF (
PRESENT(rho_nlcc_g)) rho_nlcc_g => ks_env%rho_nlcc_g
425 IF (
PRESENT(vppl)) vppl => ks_env%vppl
426 IF (
PRESENT(vee)) vee => ks_env%vee
428 IF (
PRESENT(neighbor_list_id)) neighbor_list_id = ks_env%neighbor_list_id
429 IF (
PRESENT(sab_orb)) sab_orb => ks_env%sab_orb
430 IF (
PRESENT(sab_all)) sab_all => ks_env%sab_all
431 IF (
PRESENT(sab_vdw)) sab_vdw => ks_env%sab_vdw
432 IF (
PRESENT(sab_scp)) sab_scp => ks_env%sab_scp
433 IF (
PRESENT(sac_ae)) sac_ae => ks_env%sac_ae
434 IF (
PRESENT(sac_ppl)) sac_ppl => ks_env%sac_ppl
435 IF (
PRESENT(sac_lri)) sac_lri => ks_env%sac_lri
436 IF (
PRESENT(sap_ppnl)) sap_ppnl => ks_env%sap_ppnl
437 IF (
PRESENT(sap_oce)) sap_oce => ks_env%sap_oce
438 IF (
PRESENT(sab_se)) sab_se => ks_env%sab_se
439 IF (
PRESENT(sab_lrc)) sab_lrc => ks_env%sab_lrc
440 IF (
PRESENT(sab_tbe)) sab_tbe => ks_env%sab_tbe
441 IF (
PRESENT(sab_xtbe)) sab_xtbe => ks_env%sab_xtbe
442 IF (
PRESENT(sab_core)) sab_core => ks_env%sab_core
443 IF (
PRESENT(sab_xb)) sab_xb => ks_env%sab_xb
444 IF (
PRESENT(sab_xtb_pp)) sab_xtb_pp => ks_env%sab_xtb_pp
445 IF (
PRESENT(sab_xtb_nonbond)) sab_xtb_nonbond => ks_env%sab_xtb_nonbond
446 IF (
PRESENT(sab_almo)) sab_almo => ks_env%sab_almo
447 IF (
PRESENT(sab_kp)) sab_kp => ks_env%sab_kp
448 IF (
PRESENT(sab_kp_nosym)) sab_kp_nosym => ks_env%sab_kp_nosym
449 IF (
PRESENT(dft_control)) dft_control => ks_env%dft_control
450 IF (
PRESENT(dbcsr_dist)) dbcsr_dist => ks_env%dbcsr_dist
451 IF (
PRESENT(distribution_2d)) distribution_2d => ks_env%distribution_2d
452 IF (
PRESENT(pw_env)) pw_env => ks_env%pw_env
453 IF (
PRESENT(para_env)) para_env => ks_env%para_env
454 IF (
PRESENT(blacs_env)) blacs_env => ks_env%blacs_env
456 IF (
PRESENT(task_list)) task_list => ks_env%task_list
457 IF (
PRESENT(task_list_soft)) task_list_soft => ks_env%task_list_soft
459 IF (
PRESENT(kpoints)) kpoints => ks_env%kpoints
460 IF (
PRESENT(do_kpoints))
THEN
461 do_kpoints = (ks_env%kpoints%nkp > 0)
464 IF (
PRESENT(subsys)) subsys => ks_env%subsys
466 local_molecules=local_molecules, &
467 local_particles=local_particles, &
473 use_ref_cell=use_ref_cell, &
476 qs_kind_set=qs_kind_set, &
477 cp_subsys=cp_subsys, &
478 atomic_kind_set=atomic_kind_set, &
479 particle_set=particle_set, &
480 molecule_kind_set=molecule_kind_set, &
481 molecule_set=molecule_set, &
484 nelectron_total=nelectron_total, &
485 nelectron_spin=nelectron_spin)
556 s_mstruct_changed, rho_changed, &
557 potential_changed, forces_up_to_date, complex_ks, &
558 matrix_h, matrix_h_im, matrix_ks, matrix_ks_im, matrix_vxc, &
560 matrix_s_RI_aux, matrix_w, matrix_p_mp2, matrix_p_mp2_admm, &
561 matrix_h_kp, matrix_h_im_kp, matrix_ks_kp, matrix_vxc_kp, kinetic_kp, matrix_s_kp, matrix_w_kp, &
562 matrix_s_RI_aux_kp, matrix_ks_im_kp, &
563 vppl, rho_core, rho_nlcc, rho_nlcc_g, vee, &
566 sab_orb, sab_all, sac_ae, sac_ppl, sac_lri, sap_ppnl, sap_oce, sab_lrc, &
567 sab_se, sab_xtbe, sab_tbe, sab_core, sab_xb, sab_xtb_pp, sab_xtb_nonbond, &
568 sab_vdw, sab_scp, sab_almo, sab_kp, sab_kp_nosym, &
569 task_list, task_list_soft, &
570 subsys, dft_control, dbcsr_dist, distribution_2d, pw_env, &
575 LOGICAL,
OPTIONAL :: s_mstruct_changed, rho_changed, &
576 potential_changed, forces_up_to_date, &
578 TYPE(
dbcsr_p_type),
DIMENSION(:),
OPTIONAL,
POINTER :: matrix_h, matrix_h_im, matrix_ks, &
579 matrix_ks_im, matrix_vxc, kinetic, matrix_s, matrix_s_ri_aux, matrix_w, matrix_p_mp2, &
581 TYPE(
dbcsr_p_type),
DIMENSION(:, :),
OPTIONAL,
POINTER :: matrix_h_kp, matrix_h_im_kp, &
582 matrix_ks_kp, matrix_vxc_kp, kinetic_kp, matrix_s_kp, matrix_w_kp, matrix_s_ri_aux_kp, &
589 INTEGER,
OPTIONAL :: neighbor_list_id
592 sac_ppl, sac_lri, sap_ppnl, sap_oce, sab_lrc, sab_se, sab_xtbe, sab_tbe, sab_core, &
593 sab_xb, sab_xtb_pp, sab_xtb_nonbond, sab_vdw, sab_scp, sab_almo, sab_kp, sab_kp_nosym
594 TYPE(
task_list_type),
OPTIONAL,
POINTER :: task_list, task_list_soft
603 IF (
PRESENT(s_mstruct_changed)) ks_env%s_mstruct_changed = s_mstruct_changed
604 IF (
PRESENT(rho_changed)) ks_env%rho_changed = rho_changed
605 IF (
PRESENT(potential_changed)) ks_env%potential_changed = potential_changed
606 IF (
PRESENT(forces_up_to_date)) ks_env%forces_up_to_date = forces_up_to_date
607 IF (
PRESENT(complex_ks)) ks_env%complex_ks = complex_ks
608 IF (ks_env%s_mstruct_changed .OR. ks_env%potential_changed .OR. ks_env%rho_changed) &
609 ks_env%forces_up_to_date = .false.
610 IF (
PRESENT(v_hartree_rspace)) ks_env%v_hartree_rspace => v_hartree_rspace
612 IF (
PRESENT(matrix_h))
CALL set_1d_pointer(ks_env%matrix_h, matrix_h)
613 IF (
PRESENT(matrix_h_kp))
CALL set_2d_pointer(ks_env%matrix_h, matrix_h_kp)
615 IF (
PRESENT(matrix_h_im))
CALL set_1d_pointer(ks_env%matrix_h_im, matrix_h_im)
616 IF (
PRESENT(matrix_h_im_kp))
CALL set_2d_pointer(ks_env%matrix_h_im, matrix_h_im_kp)
618 IF (
PRESENT(matrix_ks))
CALL set_1d_pointer(ks_env%matrix_ks, matrix_ks)
619 IF (
PRESENT(matrix_ks_kp))
CALL set_2d_pointer(ks_env%matrix_ks, matrix_ks_kp)
621 IF (
PRESENT(matrix_vxc))
CALL set_1d_pointer(ks_env%matrix_vxc, matrix_vxc)
622 IF (
PRESENT(matrix_vxc_kp))
CALL set_2d_pointer(ks_env%matrix_vxc, matrix_vxc_kp)
624 IF (
PRESENT(matrix_s))
CALL set_1d_pointer(ks_env%matrix_s, matrix_s)
625 IF (
PRESENT(matrix_s_kp))
CALL set_2d_pointer(ks_env%matrix_s, matrix_s_kp)
627 IF (
PRESENT(kinetic))
CALL set_1d_pointer(ks_env%kinetic, kinetic)
628 IF (
PRESENT(kinetic_kp))
CALL set_2d_pointer(ks_env%kinetic, kinetic_kp)
630 IF (
PRESENT(matrix_w))
CALL set_1d_pointer(ks_env%matrix_w, matrix_w)
631 IF (
PRESENT(matrix_w_kp))
CALL set_2d_pointer(ks_env%matrix_w, matrix_w_kp)
633 IF (
PRESENT(matrix_s_ri_aux))
CALL set_1d_pointer(ks_env%matrix_s_RI_aux, matrix_s_ri_aux)
634 IF (
PRESENT(matrix_s_ri_aux_kp))
CALL set_2d_pointer(ks_env%matrix_s_RI_aux, matrix_s_ri_aux_kp)
636 IF (
PRESENT(matrix_ks_im))
CALL set_1d_pointer(ks_env%matrix_ks_im, matrix_ks_im)
637 IF (
PRESENT(matrix_ks_im_kp))
CALL set_2d_pointer(ks_env%matrix_ks_im, matrix_ks_im_kp)
639 IF (
PRESENT(matrix_p_mp2)) ks_env%matrix_p_mp2 => matrix_p_mp2
640 IF (
PRESENT(matrix_p_mp2_admm)) ks_env%matrix_p_mp2_admm => matrix_p_mp2_admm
641 IF (
PRESENT(rho_core)) ks_env%rho_core => rho_core
642 IF (
PRESENT(rho_nlcc)) ks_env%rho_nlcc => rho_nlcc
643 IF (
PRESENT(rho_nlcc_g)) ks_env%rho_nlcc_g => rho_nlcc_g
644 IF (
PRESENT(vppl)) ks_env%vppl => vppl
645 IF (
PRESENT(vee)) ks_env%vee => vee
647 IF (
PRESENT(neighbor_list_id)) ks_env%neighbor_list_id = neighbor_list_id
648 IF (
PRESENT(kpoints)) ks_env%kpoints => kpoints
649 IF (
PRESENT(sab_orb)) ks_env%sab_orb => sab_orb
650 IF (
PRESENT(sab_vdw)) ks_env%sab_vdw => sab_vdw
651 IF (
PRESENT(sab_scp)) ks_env%sab_scp => sab_scp
652 IF (
PRESENT(sab_all)) ks_env%sab_all => sab_all
653 IF (
PRESENT(sac_ae)) ks_env%sac_ae => sac_ae
654 IF (
PRESENT(sac_ppl)) ks_env%sac_ppl => sac_ppl
655 IF (
PRESENT(sac_lri)) ks_env%sac_lri => sac_lri
656 IF (
PRESENT(sap_ppnl)) ks_env%sap_ppnl => sap_ppnl
657 IF (
PRESENT(sap_oce)) ks_env%sap_oce => sap_oce
658 IF (
PRESENT(sab_se)) ks_env%sab_se => sab_se
659 IF (
PRESENT(sab_lrc)) ks_env%sab_lrc => sab_lrc
660 IF (
PRESENT(sab_tbe)) ks_env%sab_tbe => sab_tbe
661 IF (
PRESENT(sab_xtbe)) ks_env%sab_xtbe => sab_xtbe
662 IF (
PRESENT(sab_core)) ks_env%sab_core => sab_core
663 IF (
PRESENT(sab_xb)) ks_env%sab_xb => sab_xb
664 IF (
PRESENT(sab_xtb_pp)) ks_env%sab_xtb_pp => sab_xtb_pp
665 IF (
PRESENT(sab_xtb_nonbond)) ks_env%sab_xtb_nonbond => sab_xtb_nonbond
666 IF (
PRESENT(sab_almo)) ks_env%sab_almo => sab_almo
667 IF (
PRESENT(sab_kp)) ks_env%sab_kp => sab_kp
668 IF (
PRESENT(sab_kp_nosym)) ks_env%sab_kp_nosym => sab_kp_nosym
670 IF (
PRESENT(task_list)) ks_env%task_list => task_list
671 IF (
PRESENT(task_list_soft)) ks_env%task_list_soft => task_list_soft
673 IF (
PRESENT(subsys))
THEN
674 IF (
ASSOCIATED(ks_env%subsys))
THEN
675 IF (
ASSOCIATED(ks_env%subsys, subsys))
THEN
677 DEALLOCATE (ks_env%subsys)
680 ks_env%subsys => subsys
682 IF (
PRESENT(dft_control))
THEN
683 IF (
ASSOCIATED(ks_env%dft_control))
THEN
684 IF (.NOT.
ASSOCIATED(ks_env%dft_control, dft_control))
THEN
686 DEALLOCATE (ks_env%dft_control)
689 ks_env%dft_control => dft_control
691 IF (
PRESENT(dbcsr_dist))
THEN
692 IF (
ASSOCIATED(ks_env%dbcsr_dist))
THEN
693 IF (.NOT.
ASSOCIATED(ks_env%dbcsr_dist, dbcsr_dist))
THEN
695 DEALLOCATE (ks_env%dbcsr_dist)
698 ks_env%dbcsr_dist => dbcsr_dist
700 IF (
PRESENT(distribution_2d))
THEN
703 ks_env%distribution_2d => distribution_2d
705 IF (
PRESENT(pw_env))
THEN
708 ks_env%pw_env => pw_env
710 IF (
PRESENT(para_env))
THEN
711 CALL para_env%retain()
713 ks_env%para_env => para_env
715 IF (
PRESENT(blacs_env))
THEN
716 CALL blacs_env%retain()
718 ks_env%blacs_env => blacs_env
732 IF (
ASSOCIATED(ks_env%v_hartree_rspace))
THEN
733 CALL ks_env%v_hartree_rspace%release()
734 DEALLOCATE (ks_env%v_hartree_rspace)
747 IF (
ASSOCIATED(ks_env%matrix_p_mp2)) &
749 IF (
ASSOCIATED(ks_env%matrix_p_mp2_admm)) &
751 IF (
ASSOCIATED(ks_env%rho))
THEN
753 DEALLOCATE (ks_env%rho)
755 IF (
ASSOCIATED(ks_env%rho_xc))
THEN
757 DEALLOCATE (ks_env%rho_xc)
759 IF (
ASSOCIATED(ks_env%distribution_2d)) &
761 IF (
ASSOCIATED(ks_env%task_list)) &
763 IF (
ASSOCIATED(ks_env%task_list_soft)) &
766 IF (
ASSOCIATED(ks_env%rho_nlcc_g))
THEN
767 CALL ks_env%rho_nlcc_g%release()
768 DEALLOCATE (ks_env%rho_nlcc_g)
770 IF (
ASSOCIATED(ks_env%rho_nlcc))
THEN
771 CALL ks_env%rho_nlcc%release()
772 DEALLOCATE (ks_env%rho_nlcc)
774 IF (
ASSOCIATED(ks_env%rho_core))
THEN
775 CALL ks_env%rho_core%release()
776 DEALLOCATE (ks_env%rho_core)
778 IF (
ASSOCIATED(ks_env%vppl))
THEN
779 CALL ks_env%vppl%release()
780 DEALLOCATE (ks_env%vppl)
782 IF (
ASSOCIATED(ks_env%vee))
THEN
783 CALL ks_env%vee%release()
784 DEALLOCATE (ks_env%vee)
786 IF (
ASSOCIATED(ks_env%dbcsr_dist))
THEN
788 DEALLOCATE (ks_env%dbcsr_dist)
811 IF (
ASSOCIATED(ks_env%dft_control))
THEN
813 DEALLOCATE (ks_env%dft_control)
816 IF (
ASSOCIATED(ks_env%subsys))
THEN
818 DEALLOCATE (ks_env%subsys)
835 IF (
ASSOCIATED(ks_env%v_hartree_rspace))
THEN
836 CALL ks_env%v_hartree_rspace%release()
837 DEALLOCATE (ks_env%v_hartree_rspace)
848 IF (
ASSOCIATED(ks_env%matrix_p_mp2)) &
850 IF (
ASSOCIATED(ks_env%matrix_p_mp2_admm)) &
852 IF (
ASSOCIATED(ks_env%rho))
THEN
854 DEALLOCATE (ks_env%rho)
856 IF (
ASSOCIATED(ks_env%rho_xc))
THEN
858 DEALLOCATE (ks_env%rho_xc)
860 IF (
ASSOCIATED(ks_env%task_list)) &
862 IF (
ASSOCIATED(ks_env%task_list_soft)) &
865 IF (
ASSOCIATED(ks_env%rho_nlcc_g))
THEN
866 CALL ks_env%rho_nlcc_g%release()
867 DEALLOCATE (ks_env%rho_nlcc_g)
869 IF (
ASSOCIATED(ks_env%rho_nlcc))
THEN
870 CALL ks_env%rho_nlcc%release()
871 DEALLOCATE (ks_env%rho_nlcc)
873 IF (
ASSOCIATED(ks_env%rho_core))
THEN
874 CALL ks_env%rho_core%release()
875 DEALLOCATE (ks_env%rho_core)
877 IF (
ASSOCIATED(ks_env%vppl))
THEN
878 CALL ks_env%vppl%release()
879 DEALLOCATE (ks_env%vppl)
881 IF (
ASSOCIATED(ks_env%vee))
THEN
882 CALL ks_env%vee%release()
883 DEALLOCATE (ks_env%vee)
926 potential_changed, full_reset)
928 LOGICAL,
INTENT(in),
OPTIONAL :: s_mstruct_changed, rho_changed, &
929 potential_changed, full_reset
931 CHARACTER(len=*),
PARAMETER :: routinen =
'qs_ks_did_change'
934 LOGICAL :: my_mstruct_chg
936 CALL timeset(routinen, handle)
937 my_mstruct_chg = .false.
939 IF (
PRESENT(rho_changed))
THEN
940 IF (rho_changed) ks_env%rho_changed = .true.
943 IF (
PRESENT(potential_changed))
THEN
944 IF (potential_changed) ks_env%potential_changed = .true.
947 IF (
PRESENT(s_mstruct_changed))
THEN
948 IF (s_mstruct_changed) my_mstruct_chg = .true.
951 IF (
PRESENT(full_reset))
THEN
953 ks_env%potential_changed = .true.
954 my_mstruct_chg = .true.
958 IF (my_mstruct_chg)
THEN
959 ks_env%s_mstruct_changed = .true.
963 IF (ks_env%complex_ks)
THEN
970 CALL timestop(handle)
Define the atomic kind types and their sub types.
Holds information on atomic properties.
Handles all functions related to the CELL.
methods related to the blacs parallel environment
subroutine, public cp_blacs_env_release(blacs_env)
releases the given blacs_env
Defines control structures, which contain the parameters and the settings for the DFT-based calculati...
subroutine, public dft_control_release(dft_control)
...
subroutine, public dbcsr_distribution_release(dist)
...
DBCSR operations in CP2K.
set of type/routines to handle the storage of results in force_envs
types that represent a subsys, i.e. a part of the system
stores a lists of integer that are local to a processor. The idea is that these integers represent ob...
stores a mapping of 2D info (e.g. matrix) on a 2D processor distribution (i.e. blacs grid) where cpus...
subroutine, public distribution_2d_release(distribution_2d)
...
subroutine, public distribution_2d_retain(distribution_2d)
...
Datatype to translate between k-points (2d) and gamma-point (1d) code.
type(dbcsr_p_type) function, dimension(:), pointer, public get_1d_pointer(this)
Smart getter, raises an error when called during a k-point calculation.
type(dbcsr_p_type) function, dimension(:, :), pointer, public get_2d_pointer(this)
Simple getter, needed because of PRIVATE.
subroutine, public kpoint_transitional_release(this)
Release the matrix set, using the right pointer.
subroutine, public set_1d_pointer(this, ptr_1d)
Assigns a 1D pointer.
subroutine, public set_2d_pointer(this, ptr_2d)
Assigns a 2D pointer.
Types and basic routines needed for a kpoint calculation.
subroutine, public kpoint_release(kpoint)
Release a kpoint environment, deallocate all data.
Interface to the message passing library MPI.
subroutine, public mp_para_env_release(para_env)
releases the para object (to be called when you don't want anymore the shared copy of this object)
Define the molecule kind structure types and the corresponding functionality.
Define the data structure for the molecule information.
Define the data structure for the particle information.
container for various plainwaves related things
subroutine, public pw_env_retain(pw_env)
retains the pw_env (see doc/ReferenceCounting.html)
subroutine, public pw_env_release(pw_env, para_env)
releases the given pw_env (see doc/ReferenceCounting.html)
Define the quickstep kind type and their sub types.
subroutine, public set_ks_env(ks_env, v_hartree_rspace, s_mstruct_changed, rho_changed, potential_changed, forces_up_to_date, complex_ks, matrix_h, matrix_h_im, matrix_ks, matrix_ks_im, matrix_vxc, kinetic, matrix_s, matrix_s_ri_aux, matrix_w, matrix_p_mp2, matrix_p_mp2_admm, matrix_h_kp, matrix_h_im_kp, matrix_ks_kp, matrix_vxc_kp, kinetic_kp, matrix_s_kp, matrix_w_kp, matrix_s_ri_aux_kp, matrix_ks_im_kp, vppl, rho_core, rho_nlcc, rho_nlcc_g, vee, neighbor_list_id, kpoints, sab_orb, sab_all, sac_ae, sac_ppl, sac_lri, sap_ppnl, sap_oce, sab_lrc, sab_se, sab_xtbe, sab_tbe, sab_core, sab_xb, sab_xtb_pp, sab_xtb_nonbond, sab_vdw, sab_scp, sab_almo, sab_kp, sab_kp_nosym, task_list, task_list_soft, subsys, dft_control, dbcsr_dist, distribution_2d, pw_env, para_env, blacs_env)
...
subroutine, public qs_ks_release(ks_env)
releases the ks_env (see doc/ReferenceCounting.html)
subroutine, public qs_ks_did_change(ks_env, s_mstruct_changed, rho_changed, potential_changed, full_reset)
tells that some of the things relevant to the ks calculation did change. has to be called when change...
subroutine, public get_ks_env(ks_env, v_hartree_rspace, s_mstruct_changed, rho_changed, potential_changed, forces_up_to_date, complex_ks, matrix_h, matrix_h_im, matrix_ks, matrix_ks_im, matrix_vxc, kinetic, matrix_s, matrix_s_ri_aux, matrix_w, matrix_p_mp2, matrix_p_mp2_admm, matrix_h_kp, matrix_h_im_kp, matrix_ks_kp, matrix_vxc_kp, kinetic_kp, matrix_s_kp, matrix_w_kp, matrix_s_ri_aux_kp, matrix_ks_im_kp, rho, rho_xc, vppl, rho_core, rho_nlcc, rho_nlcc_g, vee, neighbor_list_id, sab_orb, sab_all, sac_ae, sac_ppl, sac_lri, sap_ppnl, sap_oce, sab_lrc, sab_se, sab_xtbe, sab_tbe, sab_core, sab_xb, sab_xtb_pp, sab_xtb_nonbond, sab_vdw, sab_scp, sab_almo, sab_kp, sab_kp_nosym, task_list, task_list_soft, kpoints, do_kpoints, atomic_kind_set, qs_kind_set, cell, cell_ref, use_ref_cell, particle_set, energy, force, local_particles, local_molecules, molecule_kind_set, molecule_set, subsys, cp_subsys, virial, results, atprop, nkind, natom, dft_control, dbcsr_dist, distribution_2d, pw_env, para_env, blacs_env, nelectron_total, nelectron_spin)
...
subroutine, public qs_ks_part_release(ks_env)
releases part of the ks_env
subroutine, public qs_ks_env_create(ks_env)
Allocates a new instance of ks_env.
Define the neighbor list data types and the corresponding functionality.
subroutine, public release_neighbor_list_sets(nlists)
releases an array of neighbor_list_sets
superstucture that hold various representations of the density and keeps track of which ones are vali...
subroutine, public qs_rho_create(rho)
Allocates a new instance of rho.
subroutine, public qs_rho_release(rho_struct)
releases a rho_struct by decreasing the reference count by one and deallocating if it reaches 0 (to b...
types that represent a quickstep subsys
subroutine, public qs_subsys_release(subsys)
releases a subsys (see doc/ReferenceCounting.html)
subroutine, public qs_subsys_get(subsys, atomic_kinds, atomic_kind_set, particles, particle_set, local_particles, molecules, molecule_set, molecule_kinds, molecule_kind_set, local_molecules, para_env, colvar_p, shell_particles, core_particles, gci, multipoles, natom, nparticle, ncore, nshell, nkind, atprop, virial, results, cell, cell_ref, use_ref_cell, energy, force, qs_kind_set, cp_subsys, nelectron_total, nelectron_spin)
...
subroutine, public deallocate_task_list(task_list)
deallocates the components and the object itself
Provides all information about an atomic kind.
type for the atomic properties
Type defining parameters related to the simulation cell.
represent a blacs multidimensional parallel environment (for the mpi corrispective see cp_paratypes/m...
contains arbitrary information which need to be stored
represents a system: atoms, molecules, their pos,vel,...
structure to store local (to a processor) ordered lists of integers.
distributes pairs on a 2d grid of processors
Contains information about kpoints.
stores all the informations relevant to an mpi environment
contained for different pw related things
Provides all information about a quickstep kind.
calculation environment to calculate the ks matrix, holds all the needed vars. assumes that the core ...
keeps the density in various representations, keeping track of which ones are valid.