43#include "./base/base_uses.f90"
51 CHARACTER(len=*),
PARAMETER,
PRIVATE :: moduleN =
'qs_loc_types'
81 LOGICAL :: do_localize = .false., first_time = .false.
84 CHARACTER(LEN=default_string_length) :: tag_mo =
""
87 POINTER :: moloc_coeff => null()
89 POINTER :: op_fm_set => null()
93 POINTER :: localized_wfn_control => null()
95 POINTER :: particle_set => null()
97 POINTER :: op_sm_set => null()
98 REAL(kind=
dp) :: start_time = -1.0_dp, target_time = -1.0_dp
99 REAL(kind=
dp) :: weights(6) = -1.0_dp
100 INTEGER :: dim_op = -1
122 INTEGER :: ref_count = -1
123 INTEGER :: min_or_max = -1
124 INTEGER :: localization_method = -1
125 INTEGER :: operator_type = -1
126 INTEGER,
DIMENSION(2) :: nloc_states = -1, nguess = -1
127 INTEGER :: set_of_states = -1
128 INTEGER,
DIMENSION(2, 2) :: lu_bound_states = -1
129 INTEGER :: max_iter = -1
130 INTEGER :: out_each = -1
131 INTEGER :: nextra = -1
132 INTEGER :: coeff_po_guess = -1, coeff_po_guess_mo_space = -1
133 REAL(kind=
dp) :: eps_localization = -1.0_dp
134 REAL(kind=
dp) :: max_crazy_angle = -1.0_dp
135 REAL(kind=
dp) :: crazy_scale = -1.0_dp
136 REAL(kind=
dp) :: eps_occ = -1.0_dp
137 REAL(kind=
dp),
DIMENSION(2) :: lu_ene_bound = -1.0_dp
138 LOGICAL :: crazy_use_diag = .false.
139 LOGICAL :: print_cubes = .false., jacobi_fallback = .false., jacobi_refinement = .false.
140 LOGICAL :: print_centers = .false.
141 LOGICAL :: print_spreads = .false.
142 LOGICAL :: do_homo = .false.
143 LOGICAL :: do_mixed = .false., do_cg_po = .false.
144 LOGICAL :: loc_restart = .false.
145 LOGICAL :: use_history = .false.
146 INTEGER,
POINTER,
DIMENSION(:, :) :: loc_states => null()
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
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
211 DEALLOCATE (qs_loc_env%moloc_coeff)
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)
222 DEALLOCATE (qs_loc_env%op_sm_set)
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)
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)
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)
319 TYPE(
cell_type),
OPTIONAL,
POINTER :: cell
322 POINTER :: localized_wfn_control
323 TYPE(
cp_fm_type),
DIMENSION(:),
OPTIONAL,
POINTER :: moloc_coeff
326 TYPE(
cp_fm_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)
369 TYPE(
cell_type),
OPTIONAL,
POINTER :: cell
372 POINTER :: localized_wfn_control
373 TYPE(
cp_fm_type),
DIMENSION(:),
OPTIONAL,
POINTER :: moloc_coeff
376 TYPE(
cp_fm_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
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...
subroutine, public dbcsr_deallocate_matrix(matrix)
...
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)
Routines for the calculation of molecular states.
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)
...
Routines for the calculation of wannier states.
Type defining parameters related to the simulation cell.
represent a pointer to a 2d array
structure to store local (to a processor) ordered lists of integers.
stores all the informations relevant to an mpi environment
A type that holds controlling information for the calculation of the spread of wfn and the optimizati...
contains all the info needed by quickstep to calculate the spread of a selected set of orbitals and i...