16 USE dbcsr_api,
ONLY: dbcsr_release,&
21 #include "./base/base_uses.f90"
26 PUBLIC :: admm_dm_type, mcweeny_history_type
29 CHARACTER(len=*),
PARAMETER,
PRIVATE :: moduleN =
'admm_dm_types'
31 TYPE mcweeny_history_type
34 TYPE(mcweeny_history_type),
POINTER :: next => null()
35 END TYPE mcweeny_history_type
37 TYPE mcweeny_history_p_type
38 TYPE(mcweeny_history_type),
POINTER :: p => null()
39 END TYPE mcweeny_history_p_type
42 LOGICAL :: purify = .false.
43 INTEGER :: method = -1
44 TYPE(dbcsr_type),
POINTER :: matrix_a => null()
45 REAL(KIND=
dp) :: eps_filter = 1e-20_dp
46 INTEGER :: mcweeny_max_steps = 100
47 INTEGER,
DIMENSION(:, :),
POINTER :: block_map => null()
48 TYPE(mcweeny_history_p_type), &
49 DIMENSION(:),
POINTER :: mcweeny_history => null()
63 TYPE(admm_dm_type),
POINTER :: admm_dm
64 TYPE(admm_control_type),
POINTER :: admm_control
65 INTEGER,
INTENT(IN) :: nspins, natoms
67 INTEGER :: i, iatom, iblock, j, jatom
72 admm_dm%method = admm_control%method
73 admm_dm%eps_filter = admm_control%eps_filter
75 ALLOCATE (admm_dm%mcweeny_history(nspins))
79 ALLOCATE (admm_dm%block_map(natoms, natoms))
80 admm_dm%block_map(:, :) = 0
81 DO iblock = 1,
SIZE(admm_control%blocks)
82 DO i = 1,
SIZE(admm_control%blocks(iblock)%list)
83 iatom = admm_control%blocks(iblock)%list(i)
84 DO j = 1,
SIZE(admm_control%blocks(iblock)%list)
85 jatom = admm_control%blocks(iblock)%list(j)
86 admm_dm%block_map(iatom, jatom) = 1
99 TYPE(admm_dm_type),
POINTER :: admm_dm
101 IF (.NOT.
ASSOCIATED(admm_dm))
RETURN
103 IF (
ASSOCIATED(admm_dm%matrix_a))
THEN
104 CALL dbcsr_release(admm_dm%matrix_a)
105 DEALLOCATE (admm_dm%matrix_a)
108 IF (
ASSOCIATED(admm_dm%block_map)) &
109 DEALLOCATE (admm_dm%block_map)
111 DEALLOCATE (admm_dm%mcweeny_history)
Types and set/get functions for auxiliary density matrix methods.
subroutine, public admm_dm_create(admm_dm, admm_control, nspins, natoms)
Create a new admm_dm type.
subroutine, public admm_dm_release(admm_dm)
Release a admm_dm type.
Defines control structures, which contain the parameters and the settings for the DFT-based calculati...
Defines the basic variable types.
integer, parameter, public dp