16 USE dbcsr_api,
ONLY: dbcsr_p_type
37 #include "./base/base_uses.f90"
43 CHARACTER(len=*),
PARAMETER,
PRIVATE :: moduleN =
'ec_env_types'
53 TYPE energy_correction_type
54 CHARACTER(len=20) :: ec_name =
""
55 INTEGER :: energy_functional = 0
56 INTEGER :: ks_solver = 0
57 INTEGER :: factorization = 0
58 INTEGER :: ec_initial_guess = 0
59 REAL(KIND=
dp) :: eps_default = 0.0_dp
60 LOGICAL :: do_ec_admm = .false.
61 LOGICAL :: do_ec_hfx = .false.
62 LOGICAL :: should_update = .false.
63 LOGICAL :: use_ls_solver = .false.
64 LOGICAL :: reuse_hfx = .false.
65 LOGICAL :: basis_inconsistent = .false.
67 LOGICAL :: debug_forces = .false.
68 LOGICAL :: debug_stress = .false.
70 CHARACTER(len=20) :: basis =
""
71 LOGICAL :: mao = .false.
73 LOGICAL :: do_skip = .false., skip_ec = .false.
74 INTEGER :: mao_max_iter = 0
75 REAL(KIND=
dp) :: mao_eps_grad = 0.0_dp
76 REAL(KIND=
dp) :: mao_eps1 = 0.0_dp
77 INTEGER :: mao_iolevel = 0
79 REAL(KIND=
dp) :: etotal = 0.0_dp, old_etotal = 0.0_dp
80 REAL(KIND=
dp) :: eband = 0.0_dp, ecore = 0.0_dp, exc = 0.0_dp, &
81 ehartree = 0.0_dp, vhxc = 0.0_dp
82 REAL(KIND=
dp) :: edispersion = 0.0_dp, efield_elec = 0.0_dp, &
83 efield_nuclear = 0.0_dp, ex = 0.0_dp, exc_aux_fit = 0.0_dp
85 TYPE(qs_force_type),
DIMENSION(:),
POINTER :: force => null()
87 TYPE(neighbor_list_set_p_type), &
88 DIMENSION(:),
POINTER :: sab_orb => null(), sac_ppl => null(), sap_ppnl => null()
89 TYPE(task_list_type),
POINTER :: task_list => null()
91 TYPE(section_vals_type),
POINTER :: xc_section => null()
92 TYPE(qs_dispersion_type),
POINTER :: dispersion_env => null()
96 TYPE(dbcsr_p_type),
DIMENSION(:, :),
POINTER :: matrix_ks => null(), &
100 matrix_p => null(), &
103 TYPE(dbcsr_p_type),
DIMENSION(:),
POINTER :: mao_coef => null()
105 TYPE(qs_p_env_type),
POINTER :: p_env => null()
106 TYPE(dbcsr_p_type),
DIMENSION(:),
POINTER :: matrix_hz => null(), matrix_wz => null(), &
107 matrix_z => null(), z_admm => null()
109 TYPE(pw_r3d_rs_type),
DIMENSION(:),
POINTER :: rhoout_r => null(), rhoz_r => null()
111 TYPE(pw_r3d_rs_type) :: vh_rspace = pw_r3d_rs_type()
112 TYPE(pw_r3d_rs_type),
DIMENSION(:),
POINTER :: vxc_rspace => null(), vtau_rspace => null(), vadmm_rspace => null()
114 TYPE(efield_berry_type),
POINTER :: efield => null()
116 TYPE(ls_scf_env_type),
POINTER :: ls_env => null()
118 TYPE(hfx_type),
DIMENSION(:, :),
POINTER :: x_data => null()
120 TYPE(section_vals_type),
POINTER :: xc_section_primary => null(), &
121 xc_section_aux => null()
122 END TYPE energy_correction_type
131 TYPE(energy_correction_type),
POINTER :: ec_env
133 CHARACTER(LEN=*),
PARAMETER :: routinen =
'ec_env_release'
135 INTEGER :: handle, iab
137 CALL timeset(routinen, handle)
139 IF (
ASSOCIATED(ec_env))
THEN
153 IF (
ASSOCIATED(ec_env%task_list))
THEN
159 IF (
ASSOCIATED(ec_env%dispersion_env))
THEN
167 NULLIFY (ec_env%matrix_z, ec_env%matrix_hz, ec_env%matrix_wz)
168 NULLIFY (ec_env%z_admm)
170 IF (
ASSOCIATED(ec_env%p_env))
THEN
172 DEALLOCATE (ec_env%p_env)
175 IF (
ASSOCIATED(ec_env%vh_rspace%pw_grid))
THEN
176 CALL ec_env%vh_rspace%release()
178 IF (
ASSOCIATED(ec_env%vxc_rspace))
THEN
179 DO iab = 1,
SIZE(ec_env%vxc_rspace)
180 CALL ec_env%vxc_rspace(iab)%release()
182 DEALLOCATE (ec_env%vxc_rspace)
184 IF (
ASSOCIATED(ec_env%vtau_rspace))
THEN
185 DO iab = 1,
SIZE(ec_env%vtau_rspace)
186 CALL ec_env%vtau_rspace(iab)%release()
188 DEALLOCATE (ec_env%vtau_rspace)
190 IF (
ASSOCIATED(ec_env%vadmm_rspace))
THEN
191 DO iab = 1,
SIZE(ec_env%vadmm_rspace)
192 CALL ec_env%vadmm_rspace(iab)%release()
194 DEALLOCATE (ec_env%vadmm_rspace)
198 IF (
ASSOCIATED(ec_env%ls_env))
THEN
202 IF (.NOT. ec_env%reuse_hfx)
THEN
203 IF (
ASSOCIATED(ec_env%x_data))
CALL hfx_release(ec_env%x_data)
215 CALL timestop(handle)
DBCSR operations in CP2K.
Types needed for a linear scaling quickstep SCF run based on the density matrix.
subroutine, public ls_scf_release(ls_scf_env)
release the LS type.
Types needed for a for a Energy Correction.
subroutine, public ec_env_release(ec_env)
...
Types and set/get functions for HFX.
subroutine, public hfx_release(x_data)
This routine deallocates all data structures
Defines the basic variable types.
integer, parameter, public dp
Definition of disperson types for DFT calculations.
subroutine, public qs_dispersion_release(dispersion_env)
...
subroutine, public deallocate_qs_force(qs_force)
Deallocate a Quickstep force data structure.
Define the neighbor list data types and the corresponding functionality.
subroutine, public release_neighbor_list_sets(nlists)
releases an array of neighbor_list_sets
basis types for the calculation of the perturbation of density theory.
subroutine, public p_env_release(p_env)
relases the given p_env (see doc/ReferenceCounting.html)
type for berry phase efield matrices. At the moment only used for cosmat and sinmat
subroutine, public efield_berry_release(efield)
...
subroutine, public deallocate_task_list(task_list)
deallocates the components and the object itself