12 USE dbcsr_api,
ONLY: dbcsr_p_type,&
31 TYPE(grid_atom_type),
POINTER :: grid_atom => null()
32 END TYPE grid_atom_p_type
34 TYPE harmonics_atom_p_type
35 TYPE(harmonics_atom_type),
POINTER :: harmonics_atom => null()
36 END TYPE harmonics_atom_p_type
51 TYPE(dbcsr_p_type),
DIMENSION(:),
POINTER :: orb_soc => null()
52 TYPE(dbcsr_p_type),
DIMENSION(:),
POINTER :: dipmat_ao => null()
53 TYPE(dbcsr_p_type),
DIMENSION(:),
POINTER :: dipmat => null()
54 REAL(dp),
POINTER,
DIMENSION(:) :: evals_a => null(), &
56 TYPE(cp_fm_type),
DIMENSION(:, :),
ALLOCATABLE :: CdS
57 TYPE(cp_fm_type),
DIMENSION(:),
ALLOCATABLE :: SC, ediff
58 TYPE(cp_fm_type) :: a_coeff = cp_fm_type(), &
59 b_coeff = cp_fm_type()
60 REAL(dp),
ALLOCATABLE,
DIMENSION(:) :: soc_evals, &
72 TYPE soc_atom_env_type
73 INTEGER :: nspins = -1
74 TYPE(grid_atom_p_type),
DIMENSION(:),
POINTER :: grid_atom_set => null()
75 TYPE(harmonics_atom_p_type),
DIMENSION(:),
POINTER :: harmonics_atom_set => null()
76 TYPE(cp_2d_r_p_type),
DIMENSION(:),
POINTER :: orb_sphi_so => null()
77 TYPE(dbcsr_p_type),
DIMENSION(:, :),
POINTER :: soc_pp => null()
87 TYPE(soc_env_type),
TARGET :: soc_env
89 NULLIFY (soc_env%orb_soc)
90 NULLIFY (soc_env%evals_a)
91 NULLIFY (soc_env%evals_b)
92 NULLIFY (soc_env%dipmat, soc_env%dipmat_ao)
101 TYPE(soc_env_type),
TARGET :: soc_env
105 IF (
ASSOCIATED(soc_env%orb_soc))
THEN
106 DO i = 1,
SIZE(soc_env%orb_soc)
107 CALL dbcsr_release(soc_env%orb_soc(i)%matrix)
108 DEALLOCATE (soc_env%orb_soc(i)%matrix)
110 DEALLOCATE (soc_env%orb_soc)
113 CALL cp_fm_release(soc_env%a_coeff)
114 CALL cp_fm_release(soc_env%b_coeff)
115 IF (
ASSOCIATED(soc_env%evals_a))
NULLIFY (soc_env%evals_a)
116 IF (
ASSOCIATED(soc_env%evals_b))
NULLIFY (soc_env%evals_b)
117 IF (
ASSOCIATED(soc_env%dipmat))
THEN
118 DO i = 1,
SIZE(soc_env%dipmat)
119 CALL dbcsr_release(soc_env%dipmat(i)%matrix)
120 DEALLOCATE (soc_env%dipmat(i)%matrix)
122 DEALLOCATE (soc_env%dipmat)
124 IF (
ASSOCIATED(soc_env%dipmat_ao))
THEN
125 DO i = 1,
SIZE(soc_env%dipmat_ao)
126 CALL dbcsr_release(soc_env%dipmat_ao(i)%matrix)
127 DEALLOCATE (soc_env%dipmat_ao(i)%matrix)
129 DEALLOCATE (soc_env%dipmat_ao)
131 IF (
ALLOCATED(soc_env%soc_evals))
DEALLOCATE (soc_env%soc_evals)
132 IF (
ALLOCATED(soc_env%soc_osc))
DEALLOCATE (soc_env%soc_osc)
133 IF (
ALLOCATED(soc_env%CdS))
THEN
134 DO i = 1,
SIZE(soc_env%CdS, 1)
135 DO j = 1,
SIZE(soc_env%CdS, 2)
136 CALL cp_fm_release(soc_env%CdS(i, j))
139 DEALLOCATE (soc_env%CdS)
141 IF (
ALLOCATED(soc_env%SC))
THEN
142 DO i = 1,
SIZE(soc_env%SC)
143 CALL cp_fm_release(soc_env%SC(i))
144 CALL cp_fm_release(soc_env%ediff(i))
146 DEALLOCATE (soc_env%SC, soc_env%ediff)
159 TYPE(soc_atom_env_type),
POINTER :: soc_atom_env
161 ALLOCATE (soc_atom_env)
163 soc_atom_env%nspins = 1
164 NULLIFY (soc_atom_env%grid_atom_set)
165 NULLIFY (soc_atom_env%harmonics_atom_set)
166 NULLIFY (soc_atom_env%orb_sphi_so)
167 NULLIFY (soc_atom_env%soc_pp)
176 TYPE(soc_atom_env_type),
POINTER :: soc_atom_env
180 IF (
ASSOCIATED(soc_atom_env%grid_atom_set))
THEN
181 DO i = 1,
SIZE(soc_atom_env%grid_atom_set)
182 IF (
ASSOCIATED(soc_atom_env%grid_atom_set(i)%grid_atom))
THEN
186 DEALLOCATE (soc_atom_env%grid_atom_set)
189 IF (
ASSOCIATED(soc_atom_env%harmonics_atom_set))
THEN
190 DO i = 1,
SIZE(soc_atom_env%harmonics_atom_set)
191 IF (
ASSOCIATED(soc_atom_env%harmonics_atom_set(i)%harmonics_atom))
THEN
195 DEALLOCATE (soc_atom_env%harmonics_atom_set)
198 IF (
ASSOCIATED(soc_atom_env%orb_sphi_so))
THEN
199 DO i = 1,
SIZE(soc_atom_env%orb_sphi_so)
200 IF (
ASSOCIATED(soc_atom_env%orb_sphi_so(i)%array))
THEN
201 DEALLOCATE (soc_atom_env%orb_sphi_so(i)%array)
204 DEALLOCATE (soc_atom_env%orb_sphi_so)
212 DEALLOCATE (soc_atom_env)
various utilities that regard array of different kinds: output, allocation,... maybe it is not a good...
DBCSR operations in CP2K.
represent a full matrix distributed on many processors
Defines the basic variable types.
integer, parameter, public dp
Interface to the Libint-Library or a c++ wrapper.
subroutine, public cp_libint_static_cleanup()
subroutine, public deallocate_grid_atom(grid_atom)
Deallocate a Gaussian-type orbital (GTO) basis set data set.
subroutine, public deallocate_harmonics_atom(harmonics)
Deallocate the spherical harmonics set for the atom grid.
subroutine, public soc_env_create(soc_env)
...
subroutine, public soc_atom_release(soc_atom_env)
...
subroutine, public soc_atom_create(soc_atom_env)
...
subroutine, public soc_env_release(soc_env)
...