36 qs_diis_buffer_type_kp
43 #include "./base/base_uses.f90"
49 CHARACTER(len=*),
PARAMETER,
PRIVATE :: moduleN =
'kpoint_types'
54 PUBLIC :: kpoint_env_type, kpoint_env_p_type
56 PUBLIC :: kpoint_sym_type
75 REAL(KIND=
dp),
DIMENSION(3) :: xkp
77 TYPE(mo_set_type),
DIMENSION(:, :),
POINTER :: mos
78 TYPE(cp_fm_type),
DIMENSION(:, :),
POINTER :: pmat
79 TYPE(cp_fm_type),
DIMENSION(:, :),
POINTER :: wmat
80 TYPE(cp_fm_type),
DIMENSION(:, :),
POINTER :: smat
81 TYPE(cp_fm_type),
DIMENSION(:, :),
POINTER :: amat
82 END TYPE kpoint_env_type
84 TYPE kpoint_env_p_type
85 TYPE(kpoint_env_type),
POINTER :: kpoint_env
86 END TYPE kpoint_env_p_type
98 LOGICAL :: apply_symmetry
100 REAL(KIND=
dp),
DIMENSION(:, :),
POINTER :: xkp
101 REAL(KIND=
dp),
DIMENSION(:, :, :),
POINTER :: rot
102 INTEGER,
DIMENSION(:, :),
POINTER :: f0
103 END TYPE kpoint_sym_type
105 TYPE kpoint_sym_p_type
106 TYPE(kpoint_sym_type),
POINTER :: kpoint_sym
107 END TYPE kpoint_sym_p_type
139 CHARACTER(LEN=default_string_length) :: kp_scheme
140 INTEGER,
DIMENSION(3) :: nkp_grid
141 REAL(KIND=
dp),
DIMENSION(3) :: kp_shift
142 LOGICAL :: use_real_wfn
146 REAL(KIND=
dp) :: eps_geo
147 INTEGER :: parallel_group_size
149 REAL(KIND=
dp),
DIMENSION(:, :),
POINTER :: xkp => null()
150 REAL(KIND=
dp),
DIMENSION(:),
POINTER :: wkp => null()
152 TYPE(mp_para_env_type),
POINTER :: para_env => null()
153 TYPE(cp_blacs_env_type),
POINTER :: blacs_env_all => null()
154 TYPE(mp_para_env_type),
POINTER :: para_env_kp => null(), &
155 para_env_inter_kp => null()
157 INTEGER :: nkp_groups
158 INTEGER,
DIMENSION(:, :),
POINTER :: kp_dist => null()
159 INTEGER,
DIMENSION(2) :: kp_range
160 TYPE(cp_blacs_env_type),
POINTER :: blacs_env => null()
161 INTEGER,
DIMENSION(:, :, :),
POINTER :: cell_to_index => null()
162 INTEGER,
DIMENSION(:, :),
POINTER :: index_to_cell => null()
163 TYPE(neighbor_list_set_p_type), &
164 DIMENSION(:),
POINTER :: sab_nl => null(), &
165 sab_nl_nosym => null()
167 TYPE(kpoint_env_p_type),
DIMENSION(:), &
168 POINTER :: kp_env => null()
169 TYPE(kpoint_env_p_type),
DIMENSION(:), &
170 POINTER :: kp_aux_env => null()
171 TYPE(kpoint_sym_p_type),
DIMENSION(:), &
172 POINTER :: kp_sym => null()
173 TYPE(qs_matrix_pools_type),
POINTER :: mpools => null()
174 TYPE(qs_diis_buffer_type_kp),
POINTER :: scf_diis_buffer => null()
175 TYPE(qs_matrix_pools_type),
POINTER :: mpools_aux_fit => null()
188 TYPE(kpoint_type),
POINTER :: kpoint
190 cpassert(.NOT.
ASSOCIATED(kpoint))
194 kpoint%kp_scheme =
""
196 kpoint%kp_shift = 0.0_dp
197 kpoint%symmetry = .false.
198 kpoint%verbose = .false.
199 kpoint%full_grid = .false.
200 kpoint%use_real_wfn = .false.
201 kpoint%eps_geo = 1.0e-6_dp
202 kpoint%parallel_group_size = -1
206 NULLIFY (kpoint%xkp, kpoint%wkp)
207 NULLIFY (kpoint%kp_dist)
209 NULLIFY (kpoint%para_env)
210 NULLIFY (kpoint%blacs_env_all)
211 NULLIFY (kpoint%para_env_kp, kpoint%para_env_inter_kp)
212 NULLIFY (kpoint%blacs_env)
213 kpoint%nkp_groups = 0
214 kpoint%iogrp = .false.
217 NULLIFY (kpoint%kp_env)
218 NULLIFY (kpoint%mpools)
220 ALLOCATE (kpoint%cell_to_index(0:0, 0:0, 0:0))
221 kpoint%cell_to_index(:, :, :) = 1
223 ALLOCATE (kpoint%index_to_cell(0:0, 0:0))
224 kpoint%index_to_cell(:, :) = 0
234 TYPE(kpoint_type),
POINTER :: kpoint
238 IF (
ASSOCIATED(kpoint))
THEN
240 IF (
ASSOCIATED(kpoint%xkp))
THEN
241 DEALLOCATE (kpoint%xkp)
243 IF (
ASSOCIATED(kpoint%wkp))
THEN
244 DEALLOCATE (kpoint%wkp)
246 IF (
ASSOCIATED(kpoint%kp_dist))
THEN
247 DEALLOCATE (kpoint%kp_dist)
260 IF (
ASSOCIATED(kpoint%cell_to_index))
DEALLOCATE (kpoint%cell_to_index)
261 IF (
ASSOCIATED(kpoint%index_to_cell))
DEALLOCATE (kpoint%index_to_cell)
263 IF (
ASSOCIATED(kpoint%kp_env))
THEN
264 DO ik = 1,
SIZE(kpoint%kp_env)
265 CALL kpoint_env_release(kpoint%kp_env(ik)%kpoint_env)
267 DEALLOCATE (kpoint%kp_env)
270 IF (
ASSOCIATED(kpoint%kp_aux_env))
THEN
271 DO ik = 1,
SIZE(kpoint%kp_aux_env)
272 CALL kpoint_env_release(kpoint%kp_aux_env(ik)%kpoint_env)
274 DEALLOCATE (kpoint%kp_aux_env)
277 IF (
ASSOCIATED(kpoint%kp_sym))
THEN
278 DO ik = 1,
SIZE(kpoint%kp_sym)
279 CALL kpoint_sym_release(kpoint%kp_sym(ik)%kpoint_sym)
281 DEALLOCATE (kpoint%kp_sym)
284 IF (
ASSOCIATED(kpoint%scf_diis_buffer))
THEN
286 DEALLOCATE (kpoint%scf_diis_buffer)
328 SUBROUTINE get_kpoint_info(kpoint, kp_scheme, nkp_grid, kp_shift, symmetry, verbose, &
329 full_grid, use_real_wfn, eps_geo, parallel_group_size, kp_range, nkp, xkp, wkp, &
330 para_env, blacs_env_all, para_env_kp, para_env_inter_kp, blacs_env, &
331 kp_env, kp_aux_env, mpools, iogrp, nkp_groups, kp_dist, cell_to_index, index_to_cell, &
332 sab_nl, sab_nl_nosym)
333 TYPE(kpoint_type),
INTENT(IN) :: kpoint
334 CHARACTER(LEN=*),
OPTIONAL :: kp_scheme
335 INTEGER,
DIMENSION(3),
OPTIONAL :: nkp_grid
336 REAL(kind=
dp),
DIMENSION(3),
OPTIONAL :: kp_shift
337 LOGICAL,
OPTIONAL :: symmetry, verbose, full_grid, &
339 REAL(kind=
dp),
OPTIONAL :: eps_geo
340 INTEGER,
OPTIONAL :: parallel_group_size
341 INTEGER,
DIMENSION(2),
OPTIONAL :: kp_range
342 INTEGER,
OPTIONAL :: nkp
343 REAL(kind=
dp),
DIMENSION(:, :),
OPTIONAL,
POINTER :: xkp
344 REAL(kind=
dp),
DIMENSION(:),
OPTIONAL,
POINTER :: wkp
345 TYPE(mp_para_env_type),
OPTIONAL,
POINTER :: para_env
346 TYPE(cp_blacs_env_type),
OPTIONAL,
POINTER :: blacs_env_all
347 TYPE(mp_para_env_type),
OPTIONAL,
POINTER :: para_env_kp, para_env_inter_kp
348 TYPE(cp_blacs_env_type),
OPTIONAL,
POINTER :: blacs_env
349 TYPE(kpoint_env_p_type),
DIMENSION(:),
OPTIONAL, &
350 POINTER :: kp_env, kp_aux_env
351 TYPE(qs_matrix_pools_type),
OPTIONAL,
POINTER :: mpools
352 LOGICAL,
OPTIONAL :: iogrp
353 INTEGER,
OPTIONAL :: nkp_groups
354 INTEGER,
DIMENSION(:, :),
OPTIONAL,
POINTER :: kp_dist
355 INTEGER,
DIMENSION(:, :, :),
OPTIONAL,
POINTER :: cell_to_index
356 INTEGER,
DIMENSION(:, :),
OPTIONAL,
POINTER :: index_to_cell
357 TYPE(neighbor_list_set_p_type),
DIMENSION(:), &
358 OPTIONAL,
POINTER :: sab_nl, sab_nl_nosym
360 IF (
PRESENT(kp_scheme)) kp_scheme = kpoint%kp_scheme
361 IF (
PRESENT(nkp_grid)) nkp_grid = kpoint%nkp_grid
362 IF (
PRESENT(kp_shift)) kp_shift = kpoint%kp_shift
363 IF (
PRESENT(symmetry)) symmetry = kpoint%symmetry
364 IF (
PRESENT(verbose)) verbose = kpoint%verbose
365 IF (
PRESENT(full_grid)) full_grid = kpoint%full_grid
367 IF (
PRESENT(eps_geo)) eps_geo = kpoint%eps_geo
368 IF (
PRESENT(parallel_group_size)) parallel_group_size = kpoint%parallel_group_size
370 IF (
PRESENT(nkp)) nkp = kpoint%nkp
371 IF (
PRESENT(wkp)) wkp => kpoint%wkp
372 IF (
PRESENT(xkp)) xkp => kpoint%xkp
374 IF (
PRESENT(para_env)) para_env => kpoint%para_env
375 IF (
PRESENT(para_env_kp)) para_env_kp => kpoint%para_env_kp
376 IF (
PRESENT(para_env_inter_kp)) para_env_inter_kp => kpoint%para_env_inter_kp
377 IF (
PRESENT(blacs_env_all)) blacs_env_all => kpoint%blacs_env_all
378 IF (
PRESENT(blacs_env)) blacs_env => kpoint%blacs_env
380 IF (
PRESENT(iogrp)) iogrp = kpoint%iogrp
381 IF (
PRESENT(kp_range)) kp_range = kpoint%kp_range
382 IF (
PRESENT(nkp_groups)) nkp_groups = kpoint%nkp_groups
383 IF (
PRESENT(kp_dist)) kp_dist => kpoint%kp_dist
385 IF (
PRESENT(kp_env)) kp_env => kpoint%kp_env
386 IF (
PRESENT(kp_aux_env)) kp_aux_env => kpoint%kp_aux_env
387 IF (
PRESENT(mpools)) mpools => kpoint%mpools
389 IF (
PRESENT(cell_to_index)) cell_to_index => kpoint%cell_to_index
390 IF (
PRESENT(index_to_cell)) index_to_cell => kpoint%index_to_cell
391 IF (
PRESENT(sab_nl)) sab_nl => kpoint%sab_nl
392 IF (
PRESENT(sab_nl_nosym)) sab_nl_nosym => kpoint%sab_nl_nosym
429 SUBROUTINE set_kpoint_info(kpoint, kp_scheme, nkp_grid, kp_shift, symmetry, verbose, &
430 full_grid, use_real_wfn, eps_geo, parallel_group_size, kp_range, nkp, xkp, wkp, &
431 para_env, blacs_env_all, para_env_kp, para_env_inter_kp, blacs_env, &
432 kp_env, kp_aux_env, mpools, iogrp, nkp_groups, kp_dist, cell_to_index, index_to_cell, &
433 sab_nl, sab_nl_nosym)
434 TYPE(kpoint_type),
INTENT(INOUT) :: kpoint
435 CHARACTER(LEN=*),
OPTIONAL :: kp_scheme
436 INTEGER,
DIMENSION(3),
OPTIONAL :: nkp_grid
437 REAL(kind=
dp),
DIMENSION(3),
OPTIONAL :: kp_shift
438 LOGICAL,
OPTIONAL :: symmetry, verbose, full_grid, &
440 REAL(kind=
dp),
OPTIONAL :: eps_geo
441 INTEGER,
OPTIONAL :: parallel_group_size
442 INTEGER,
DIMENSION(2),
OPTIONAL :: kp_range
443 INTEGER,
OPTIONAL :: nkp
444 REAL(kind=
dp),
DIMENSION(:, :),
OPTIONAL,
POINTER :: xkp
445 REAL(kind=
dp),
DIMENSION(:),
OPTIONAL,
POINTER :: wkp
446 TYPE(mp_para_env_type),
OPTIONAL,
POINTER :: para_env
447 TYPE(cp_blacs_env_type),
OPTIONAL,
POINTER :: blacs_env_all
448 TYPE(mp_para_env_type),
OPTIONAL,
POINTER :: para_env_kp, para_env_inter_kp
449 TYPE(cp_blacs_env_type),
OPTIONAL,
POINTER :: blacs_env
450 TYPE(kpoint_env_p_type),
DIMENSION(:),
OPTIONAL, &
451 POINTER :: kp_env, kp_aux_env
452 TYPE(qs_matrix_pools_type),
OPTIONAL,
POINTER :: mpools
453 LOGICAL,
OPTIONAL :: iogrp
454 INTEGER,
OPTIONAL :: nkp_groups
455 INTEGER,
DIMENSION(:, :),
OPTIONAL,
POINTER :: kp_dist
456 INTEGER,
DIMENSION(:, :, :),
OPTIONAL,
POINTER :: cell_to_index
457 INTEGER,
DIMENSION(:, :),
OPTIONAL,
POINTER :: index_to_cell
458 TYPE(neighbor_list_set_p_type),
DIMENSION(:), &
459 OPTIONAL,
POINTER :: sab_nl, sab_nl_nosym
461 IF (
PRESENT(kp_scheme)) kpoint%kp_scheme = kp_scheme
462 IF (
PRESENT(nkp_grid)) kpoint%nkp_grid = nkp_grid
463 IF (
PRESENT(kp_shift)) kpoint%kp_shift = kp_shift
464 IF (
PRESENT(symmetry)) kpoint%symmetry = symmetry
465 IF (
PRESENT(verbose)) kpoint%verbose = verbose
466 IF (
PRESENT(full_grid)) kpoint%full_grid = full_grid
468 IF (
PRESENT(eps_geo)) kpoint%eps_geo = eps_geo
469 IF (
PRESENT(parallel_group_size)) kpoint%parallel_group_size = parallel_group_size
471 IF (
PRESENT(nkp)) kpoint%nkp = nkp
472 IF (
PRESENT(wkp)) kpoint%wkp => wkp
473 IF (
PRESENT(xkp)) kpoint%xkp => xkp
475 IF (
PRESENT(para_env)) kpoint%para_env => para_env
476 IF (
PRESENT(para_env_kp)) kpoint%para_env_kp => para_env_kp
477 IF (
PRESENT(para_env_inter_kp)) kpoint%para_env_inter_kp => para_env_inter_kp
478 IF (
PRESENT(blacs_env_all)) kpoint%blacs_env_all => blacs_env_all
479 IF (
PRESENT(blacs_env)) kpoint%blacs_env => blacs_env
481 IF (
PRESENT(iogrp)) kpoint%iogrp = iogrp
482 IF (
PRESENT(kp_range)) kpoint%kp_range = kp_range
483 IF (
PRESENT(nkp_groups)) kpoint%nkp_groups = nkp_groups
484 IF (
PRESENT(kp_dist)) kpoint%kp_dist => kp_dist
486 IF (
PRESENT(kp_env)) kpoint%kp_env => kp_env
487 IF (
PRESENT(kp_env)) kpoint%kp_aux_env => kp_aux_env
488 IF (
PRESENT(mpools)) kpoint%mpools => mpools
489 IF (
PRESENT(sab_nl)) kpoint%sab_nl => sab_nl
490 IF (
PRESENT(sab_nl_nosym)) kpoint%sab_nl_nosym => sab_nl_nosym
492 IF (
PRESENT(cell_to_index))
THEN
493 IF (
ASSOCIATED(kpoint%cell_to_index))
DEALLOCATE (kpoint%cell_to_index)
494 kpoint%cell_to_index => cell_to_index
497 IF (
PRESENT(index_to_cell))
THEN
498 IF (
ASSOCIATED(kpoint%index_to_cell))
DEALLOCATE (kpoint%index_to_cell)
499 kpoint%index_to_cell => index_to_cell
512 TYPE(kpoint_type),
INTENT(INOUT) :: kpoint
513 TYPE(section_vals_type),
POINTER :: kpoint_section
514 REAL(kind=
dp),
DIMENSION(3, 3),
INTENT(IN) :: a_vec
516 CHARACTER(LEN=default_string_length) :: ustr
517 CHARACTER(LEN=default_string_length), &
518 DIMENSION(:),
POINTER :: tmpstringlist
519 INTEGER :: i, n_rep, nval, wfntype
522 REAL(kind=
dp),
DIMENSION(:),
POINTER :: reallist
528 nval =
SIZE(tmpstringlist)
530 kpoint%kp_scheme = tmpstringlist(1)
534 SELECT CASE (kpoint%kp_scheme)
539 CASE (
"MONKHORST-PACK")
542 READ (tmpstringlist(i), *) kpoint%nkp_grid(i - 1)
547 READ (tmpstringlist(i), *) kpoint%nkp_grid(i - 1)
550 READ (tmpstringlist(i), *) kpoint%kp_shift(i - 4)
557 ALLOCATE (kpoint%xkp(3, n_rep), kpoint%wkp(n_rep))
561 nval =
SIZE(reallist)
565 kpoint%xkp(1:3, i) = reallist(1:3)
566 CASE (
"CART_ANGSTROM")
567 kpoint%xkp(1:3, i) = (reallist(1)*a_vec(1, 1:3) + &
568 reallist(2)*a_vec(2, 1:3) + &
571 kpoint%xkp(1:3, i) = (reallist(1)*a_vec(1, 1:3) + &
572 reallist(2)*a_vec(2, 1:3) + &
573 reallist(3)*a_vec(3, 1:3))/
twopi
575 cpabort(
"Unknown Unit for kpoint definition")
577 kpoint%wkp(i) = reallist(4)
579 ff = 1.0_dp/sum(kpoint%wkp(:))
580 kpoint%wkp(:) = ff*kpoint%wkp(:)
591 i_val=kpoint%parallel_group_size)
592 SELECT CASE (wfntype)
594 kpoint%use_real_wfn = .true.
596 kpoint%use_real_wfn = .false.
602 kpoint%kp_scheme =
"NONE"
614 TYPE(kpoint_type),
INTENT(IN) :: kpoint
615 TYPE(section_vals_type),
INTENT(IN) :: dft_section
618 TYPE(cp_logger_type),
POINTER :: logger
626 IF (kpoint%kp_scheme /=
"NONE")
THEN
627 WRITE (punit,
'(/," ",79("*"),/,T37,A,/," ",79("*"))')
"Kpoints"
629 SELECT CASE (kpoint%kp_scheme)
633 WRITE (punit,
'(A,T57,A)')
' BRILLOUIN|',
' Gamma-point calculation'
634 CASE (
"MONKHORST-PACK")
635 WRITE (punit,
'(A,T61,A20)')
' BRILLOUIN| K-point scheme ',
' Monkhorst-Pack'
636 WRITE (punit,
'(A,T66,3I5)')
' BRILLOUIN| K-Point grid', kpoint%nkp_grid
637 WRITE (punit,
'(A,T66,G15.6)')
' BRILLOUIN| Accuracy in Symmetry determination', kpoint%eps_geo
639 WRITE (punit,
'(A,T71,A10)')
' BRILLOUIN| K-point scheme ',
' MacDonald'
640 WRITE (punit,
'(A,T66,3I5)')
' BRILLOUIN| K-Point grid', kpoint%nkp_grid
641 WRITE (punit,
'(A,T51,3F10.4)')
' BRILLOUIN| K-Point shift', kpoint%kp_shift
642 WRITE (punit,
'(A,T66,G15.6)')
' BRILLOUIN| Accuracy in Symmetry determination', kpoint%eps_geo
644 WRITE (punit,
'(A,T71,A10)')
' BRILLOUIN| K-point scheme ',
' General'
648 IF (kpoint%kp_scheme /=
"NONE")
THEN
649 IF (kpoint%symmetry)
THEN
650 WRITE (punit,
'(A,T76,A)')
' BRILLOUIN| K-Point point group symmetrization',
' ON'
652 WRITE (punit,
'(A,T76,A)')
' BRILLOUIN| K-Point point group symmetrization',
' OFF'
654 IF (kpoint%use_real_wfn)
THEN
655 WRITE (punit,
'(A,T76,A)')
' BRILLOUIN| Wavefunction type',
' REAL'
657 WRITE (punit,
'(A,T73,A)')
' BRILLOUIN| Wavefunction type',
' COMPLEX'
659 IF (kpoint%full_grid)
THEN
660 WRITE (punit,
'(A,T76,A)')
' BRILLOUIN| Use full k-point grid '
662 IF (kpoint%kp_scheme /=
"GAMMA")
THEN
663 WRITE (punit,
'(A,T71,I10)')
' BRILLOUIN| List of Kpoints [2 Pi/Bohr]', kpoint%nkp
664 WRITE (punit,
'(A,T30,A,T48,A,T63,A,T78,A)') &
665 ' BRILLOUIN| Number ',
'Weight',
'X',
'Y',
'Z'
667 WRITE (punit,
'(A,I5,3X,4F15.5)')
' BRILLOUIN| ', i, kpoint%wkp(i), &
668 kpoint%xkp(1, i), kpoint%xkp(2, i), kpoint%xkp(3, i)
671 WRITE (punit,
'(" ",79("*"))')
685 TYPE(kpoint_env_type),
POINTER :: kp_env
687 cpassert(.NOT.
ASSOCIATED(kp_env))
694 kp_env%is_local = .false.
697 NULLIFY (kp_env%pmat)
698 NULLIFY (kp_env%wmat)
699 NULLIFY (kp_env%smat)
700 NULLIFY (kp_env%amat)
709 SUBROUTINE kpoint_env_release(kp_env)
710 TYPE(kpoint_env_type),
POINTER :: kp_env
714 IF (
ASSOCIATED(kp_env))
THEN
716 IF (
ASSOCIATED(kp_env%mos))
THEN
717 DO is = 1,
SIZE(kp_env%mos, 2)
718 DO ic = 1,
SIZE(kp_env%mos, 1)
722 DEALLOCATE (kp_env%mos)
725 CALL cp_fm_release(kp_env%pmat)
726 CALL cp_fm_release(kp_env%wmat)
727 CALL cp_fm_release(kp_env%smat)
728 CALL cp_fm_release(kp_env%amat)
734 END SUBROUTINE kpoint_env_release
747 TYPE(kpoint_env_type),
INTENT(IN) :: kpoint_env
748 INTEGER,
OPTIONAL :: nkpoint
749 REAL(kind=
dp),
OPTIONAL :: wkp
750 REAL(kind=
dp),
DIMENSION(3),
OPTIONAL :: xkp
751 LOGICAL,
OPTIONAL :: is_local
752 TYPE(mo_set_type),
DIMENSION(:, :),
OPTIONAL, &
755 IF (
PRESENT(nkpoint)) nkpoint = kpoint_env%nkpoint
756 IF (
PRESENT(wkp)) wkp = kpoint_env%wkp
757 IF (
PRESENT(xkp)) xkp = kpoint_env%xkp
758 IF (
PRESENT(is_local)) is_local = kpoint_env%is_local
759 IF (
PRESENT(mos)) mos => kpoint_env%mos
769 TYPE(kpoint_sym_type),
POINTER :: kp_sym
771 cpassert(.NOT.
ASSOCIATED(kp_sym))
776 kp_sym%apply_symmetry = .false.
789 SUBROUTINE kpoint_sym_release(kp_sym)
790 TYPE(kpoint_sym_type),
POINTER :: kp_sym
792 IF (
ASSOCIATED(kp_sym))
THEN
794 IF (
ASSOCIATED(kp_sym%rot))
THEN
795 DEALLOCATE (kp_sym%rot)
797 IF (
ASSOCIATED(kp_sym%xkp))
THEN
798 DEALLOCATE (kp_sym%xkp)
800 IF (
ASSOCIATED(kp_sym%f0))
THEN
801 DEALLOCATE (kp_sym%f0)
808 END SUBROUTINE kpoint_sym_release
methods related to the blacs parallel environment
subroutine, public cp_blacs_env_release(blacs_env)
releases the given blacs_env
represent a full matrix distributed on many processors
various routines to log and control the output. The idea is that decisions about where to log should ...
type(cp_logger_type) function, pointer, public cp_get_default_logger()
returns the default logger
routines to handle the output, The idea is to remove the decision of wheter to output and what to out...
integer function, public cp_print_key_unit_nr(logger, basis_section, print_key_path, extension, middle_name, local, log_filename, ignore_should_output, file_form, file_position, file_action, file_status, do_backup, on_file, is_new_file, mpi_io, fout)
...
subroutine, public cp_print_key_finished_output(unit_nr, logger, basis_section, print_key_path, local, ignore_should_output, on_file, mpi_io)
should be called after you finish working with a unit obtained with cp_print_key_unit_nr,...
Defines the basic variable types.
integer, parameter, public dp
integer, parameter, public default_string_length
Types and basic routines needed for a kpoint calculation.
subroutine, public read_kpoint_section(kpoint, kpoint_section, a_vec)
Read the kpoint input section.
subroutine, public kpoint_sym_create(kp_sym)
Create a single kpoint symmetry environment.
subroutine, public set_kpoint_info(kpoint, kp_scheme, nkp_grid, kp_shift, symmetry, verbose, full_grid, use_real_wfn, eps_geo, parallel_group_size, kp_range, nkp, xkp, wkp, para_env, blacs_env_all, para_env_kp, para_env_inter_kp, blacs_env, kp_env, kp_aux_env, mpools, iogrp, nkp_groups, kp_dist, cell_to_index, index_to_cell, sab_nl, sab_nl_nosym)
Set information in a kpoint environment.
subroutine, public get_kpoint_env(kpoint_env, nkpoint, wkp, xkp, is_local, mos)
Get information from a single kpoint environment.
subroutine, public write_kpoint_info(kpoint, dft_section)
Write information on the kpoints to output.
subroutine, public kpoint_env_create(kp_env)
Create a single kpoint environment.
subroutine, public kpoint_release(kpoint)
Release a kpoint environment, deallocate all data.
subroutine, public kpoint_create(kpoint)
Create a kpoint environment.
subroutine, public get_kpoint_info(kpoint, kp_scheme, nkp_grid, kp_shift, symmetry, verbose, full_grid, use_real_wfn, eps_geo, parallel_group_size, kp_range, nkp, xkp, wkp, para_env, blacs_env_all, para_env_kp, para_env_inter_kp, blacs_env, kp_env, kp_aux_env, mpools, iogrp, nkp_groups, kp_dist, cell_to_index, index_to_cell, sab_nl, sab_nl_nosym)
Retrieve information from a kpoint environment.
Definition of mathematical constants and functions.
real(kind=dp), parameter, public twopi
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)
Definition of physical constants:
real(kind=dp), parameter, public angstrom
buffer for the diis of the scf
subroutine, public qs_diis_b_release_kp(diis_buffer)
releases the given diis KP buffer
wrapper for the pools of matrixes
subroutine, public mpools_release(mpools)
releases the given mpools
Definition and initialisation of the mo data type.
subroutine, public deallocate_mo_set(mo_set)
Deallocate a wavefunction data structure.
Define the neighbor list data types and the corresponding functionality.
Utilities for string manipulations.
elemental subroutine, public uppercase(string)
Convert all lower case characters in a string to upper case.