33 USE dbcsr_api,
ONLY: dbcsr_deallocate_matrix,&
43 #include "./base/base_uses.f90"
51 CHARACTER(len=*),
PARAMETER,
PRIVATE :: moduleN =
'qs_loc_types'
81 LOGICAL :: do_localize, first_time
82 LOGICAL :: molecular_states
83 LOGICAL :: wannier_states
84 CHARACTER(LEN=default_string_length) :: tag_mo
85 TYPE(mp_para_env_type),
POINTER :: para_env => null()
86 TYPE(cp_fm_type),
DIMENSION(:), &
87 POINTER :: moloc_coeff => null()
88 TYPE(cp_fm_type),
DIMENSION(:, :), &
89 POINTER :: op_fm_set => null()
90 TYPE(distribution_1d_type),
POINTER :: local_molecules => null()
91 TYPE(cell_type),
POINTER :: cell => null()
92 TYPE(localized_wfn_control_type), &
93 POINTER :: localized_wfn_control => null()
94 TYPE(particle_type),
DIMENSION(:), &
95 POINTER :: particle_set => null()
96 TYPE(dbcsr_p_type),
DIMENSION(:, :), &
97 POINTER :: op_sm_set => null()
98 REAL(KIND=
dp) :: start_time, target_time
99 REAL(KIND=
dp) :: weights(6)
101 END TYPE qs_loc_env_type
121 TYPE localized_wfn_control_type
123 INTEGER :: min_or_max
124 INTEGER :: localization_method
125 INTEGER :: operator_type
126 INTEGER,
DIMENSION(2) :: nloc_states, nguess
127 INTEGER :: set_of_states
128 INTEGER,
DIMENSION(2, 2) :: lu_bound_states
132 INTEGER :: coeff_po_guess, coeff_po_guess_mo_space
133 REAL(KIND=
dp) :: eps_localization
134 REAL(KIND=
dp) :: max_crazy_angle
135 REAL(KIND=
dp) :: crazy_scale
136 REAL(KIND=
dp) :: eps_occ
137 REAL(KIND=
dp),
DIMENSION(2) :: lu_ene_bound
138 LOGICAL :: crazy_use_diag
139 LOGICAL :: print_cubes, jacobi_fallback, jacobi_refinement
140 LOGICAL :: print_centers
141 LOGICAL :: print_spreads
143 LOGICAL :: do_mixed, do_cg_po
144 LOGICAL :: loc_restart
145 LOGICAL :: use_history
146 INTEGER,
POINTER,
DIMENSION(:, :) :: loc_states => null()
147 TYPE(cp_2d_r_p_type),
DIMENSION(2) :: centers_set
148 END TYPE localized_wfn_control_type
154 PUBLIC :: qs_loc_env_type, localized_wfn_control_type
167 TYPE(qs_loc_env_type),
INTENT(OUT) :: qs_loc_env
169 qs_loc_env%tag_mo =
""
170 NULLIFY (qs_loc_env%para_env)
171 NULLIFY (qs_loc_env%cell)
172 NULLIFY (qs_loc_env%op_sm_set)
173 NULLIFY (qs_loc_env%op_fm_set)
174 NULLIFY (qs_loc_env%local_molecules)
175 NULLIFY (qs_loc_env%moloc_coeff)
176 NULLIFY (qs_loc_env%particle_set)
177 NULLIFY (qs_loc_env%localized_wfn_control)
178 qs_loc_env%weights = 0.0_dp
193 TYPE(qs_loc_env_type),
INTENT(INOUT) :: qs_loc_env
197 IF (
ASSOCIATED(qs_loc_env%cell))
CALL cell_release(qs_loc_env%cell)
198 IF (
ASSOCIATED(qs_loc_env%local_molecules)) &
200 IF (
ASSOCIATED(qs_loc_env%localized_wfn_control))
THEN
204 IF (
ASSOCIATED(qs_loc_env%particle_set))
NULLIFY (qs_loc_env%particle_set)
206 IF (
ASSOCIATED(qs_loc_env%moloc_coeff))
THEN
207 DO i = 1,
SIZE(qs_loc_env%moloc_coeff, 1)
208 ii = lbound(qs_loc_env%moloc_coeff, 1) + i - 1
209 CALL cp_fm_release(qs_loc_env%moloc_coeff(ii))
211 DEALLOCATE (qs_loc_env%moloc_coeff)
214 CALL cp_fm_release(qs_loc_env%op_fm_set)
216 IF (
ASSOCIATED(qs_loc_env%op_sm_set))
THEN
217 DO i = 1,
SIZE(qs_loc_env%op_sm_set, 2)
218 DO j = 1,
SIZE(qs_loc_env%op_sm_set, 1)
219 CALL dbcsr_deallocate_matrix(qs_loc_env%op_sm_set(j, i)%matrix)
222 DEALLOCATE (qs_loc_env%op_sm_set)
234 TYPE(localized_wfn_control_type),
POINTER :: localized_wfn_control
236 cpassert(.NOT.
ASSOCIATED(localized_wfn_control))
237 ALLOCATE (localized_wfn_control)
239 localized_wfn_control%ref_count = 1
240 localized_wfn_control%nloc_states = 0
241 localized_wfn_control%nextra = 0
242 localized_wfn_control%nguess = 0
243 localized_wfn_control%lu_bound_states = 0
244 localized_wfn_control%lu_ene_bound = 0.0_dp
245 localized_wfn_control%print_cubes = .false.
246 localized_wfn_control%print_centers = .false.
247 localized_wfn_control%print_spreads = .false.
248 localized_wfn_control%do_homo = .true.
249 localized_wfn_control%use_history = .false.
250 NULLIFY (localized_wfn_control%loc_states)
251 NULLIFY (localized_wfn_control%centers_set(1)%array)
252 NULLIFY (localized_wfn_control%centers_set(2)%array)
263 TYPE(localized_wfn_control_type),
POINTER :: localized_wfn_control
265 IF (
ASSOCIATED(localized_wfn_control))
THEN
266 cpassert(localized_wfn_control%ref_count > 0)
267 localized_wfn_control%ref_count = localized_wfn_control%ref_count - 1
268 IF (localized_wfn_control%ref_count == 0)
THEN
269 IF (
ASSOCIATED(localized_wfn_control%loc_states))
THEN
270 DEALLOCATE (localized_wfn_control%loc_states)
272 IF (
ASSOCIATED(localized_wfn_control%centers_set(1)%array))
THEN
273 DEALLOCATE (localized_wfn_control%centers_set(1)%array)
275 IF (
ASSOCIATED(localized_wfn_control%centers_set(2)%array))
THEN
276 DEALLOCATE (localized_wfn_control%centers_set(2)%array)
278 localized_wfn_control%ref_count = 0
279 DEALLOCATE (localized_wfn_control)
290 SUBROUTINE localized_wfn_control_retain(localized_wfn_control)
291 TYPE(localized_wfn_control_type),
POINTER :: localized_wfn_control
293 cpassert(
ASSOCIATED(localized_wfn_control))
295 localized_wfn_control%ref_count = localized_wfn_control%ref_count + 1
296 END SUBROUTINE localized_wfn_control_retain
315 SUBROUTINE get_qs_loc_env(qs_loc_env, cell, local_molecules, localized_wfn_control, &
316 moloc_coeff, op_sm_set, op_fm_set, para_env, particle_set, weights, dim_op)
318 TYPE(qs_loc_env_type),
INTENT(IN) :: qs_loc_env
319 TYPE(cell_type),
OPTIONAL,
POINTER :: cell
320 TYPE(distribution_1d_type),
OPTIONAL,
POINTER :: local_molecules
321 TYPE(localized_wfn_control_type),
OPTIONAL, &
322 POINTER :: localized_wfn_control
323 TYPE(cp_fm_type),
DIMENSION(:),
OPTIONAL,
POINTER :: moloc_coeff
324 TYPE(dbcsr_p_type),
DIMENSION(:, :),
OPTIONAL, &
326 TYPE(cp_fm_type),
DIMENSION(:, :),
OPTIONAL, &
328 TYPE(mp_para_env_type),
OPTIONAL,
POINTER :: para_env
329 TYPE(particle_type),
DIMENSION(:),
OPTIONAL, &
330 POINTER :: particle_set
331 REAL(
dp),
DIMENSION(6),
OPTIONAL :: weights
332 INTEGER,
OPTIONAL :: dim_op
334 IF (
PRESENT(cell)) cell => qs_loc_env%cell
335 IF (
PRESENT(moloc_coeff)) moloc_coeff => qs_loc_env%moloc_coeff
336 IF (
PRESENT(local_molecules)) local_molecules => qs_loc_env%local_molecules
337 IF (
PRESENT(localized_wfn_control)) &
338 localized_wfn_control => qs_loc_env%localized_wfn_control
339 IF (
PRESENT(op_sm_set)) op_sm_set => qs_loc_env%op_sm_set
340 IF (
PRESENT(op_fm_set)) op_fm_set => qs_loc_env%op_fm_set
341 IF (
PRESENT(para_env)) para_env => qs_loc_env%para_env
342 IF (
PRESENT(particle_set)) particle_set => qs_loc_env%particle_set
343 IF (
PRESENT(weights)) weights(1:6) = qs_loc_env%weights(1:6)
344 IF (
PRESENT(dim_op)) dim_op = qs_loc_env%dim_op
365 SUBROUTINE set_qs_loc_env(qs_loc_env, cell, local_molecules, localized_wfn_control, &
366 moloc_coeff, op_sm_set, op_fm_set, para_env, particle_set, weights, dim_op)
368 TYPE(qs_loc_env_type),
INTENT(INOUT) :: qs_loc_env
369 TYPE(cell_type),
OPTIONAL,
POINTER :: cell
370 TYPE(distribution_1d_type),
OPTIONAL,
POINTER :: local_molecules
371 TYPE(localized_wfn_control_type),
OPTIONAL, &
372 POINTER :: localized_wfn_control
373 TYPE(cp_fm_type),
DIMENSION(:),
OPTIONAL,
POINTER :: moloc_coeff
374 TYPE(dbcsr_p_type),
DIMENSION(:, :),
OPTIONAL, &
376 TYPE(cp_fm_type),
DIMENSION(:, :),
OPTIONAL, &
378 TYPE(mp_para_env_type),
OPTIONAL,
POINTER :: para_env
379 TYPE(particle_type),
DIMENSION(:),
OPTIONAL, &
380 POINTER :: particle_set
381 REAL(
dp),
DIMENSION(6),
OPTIONAL :: weights
382 INTEGER,
OPTIONAL :: dim_op
384 IF (
PRESENT(cell))
THEN
387 qs_loc_env%cell => cell
390 IF (
PRESENT(local_molecules))
THEN
392 IF (
ASSOCIATED(qs_loc_env%local_molecules)) &
394 qs_loc_env%local_molecules => local_molecules
397 IF (
PRESENT(localized_wfn_control))
THEN
398 CALL localized_wfn_control_retain(localized_wfn_control)
400 qs_loc_env%localized_wfn_control => localized_wfn_control
402 IF (
PRESENT(para_env))
THEN
403 CALL para_env%retain()
405 qs_loc_env%para_env => para_env
407 IF (
PRESENT(particle_set)) qs_loc_env%particle_set => particle_set
408 IF (
PRESENT(moloc_coeff))
THEN
409 CALL cp_fm_release(qs_loc_env%moloc_coeff)
410 qs_loc_env%moloc_coeff => moloc_coeff
412 IF (
PRESENT(op_sm_set))
THEN
413 qs_loc_env%op_sm_set => op_sm_set
415 IF (
PRESENT(op_fm_set))
THEN
416 qs_loc_env%op_fm_set => op_fm_set
418 IF (
PRESENT(weights))
THEN
419 qs_loc_env%weights = weights
421 IF (
PRESENT(dim_op))
THEN
422 qs_loc_env%dim_op = dim_op
Handles all functions related to the CELL.
subroutine, public cell_release(cell)
releases the given cell (see doc/ReferenceCounting.html)
subroutine, public cell_retain(cell)
retains the given cell (see doc/ReferenceCounting.html)
various utilities that regard array of different kinds: output, allocation,... maybe it is not a good...
represent a full matrix distributed on many processors
stores a lists of integer that are local to a processor. The idea is that these integers represent ob...
subroutine, public distribution_1d_retain(distribution_1d)
retains a distribution_1d
subroutine, public distribution_1d_release(distribution_1d)
releases the given distribution_1d
Defines the basic variable types.
integer, parameter, public dp
integer, parameter, public default_string_length
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 data structure for the particle information.
New version of the module for the localization of the molecular orbitals This should be able to use d...
subroutine, public localized_wfn_control_create(localized_wfn_control)
create the localized_wfn_control_type
subroutine, public qs_loc_env_release(qs_loc_env)
...
subroutine, public localized_wfn_control_release(localized_wfn_control)
release the localized_wfn_control_type
subroutine, public get_qs_loc_env(qs_loc_env, cell, local_molecules, localized_wfn_control, moloc_coeff, op_sm_set, op_fm_set, para_env, particle_set, weights, dim_op)
...
subroutine, public set_qs_loc_env(qs_loc_env, cell, local_molecules, localized_wfn_control, moloc_coeff, op_sm_set, op_fm_set, para_env, particle_set, weights, dim_op)
...
subroutine, public qs_loc_env_create(qs_loc_env)
...