14 USE dbcsr_api,
ONLY: dbcsr_p_type,&
17 USE dbt_api,
ONLY: dbt_destroy,&
26 #include "./base/base_uses.f90"
32 CHARACTER(len=*),
PARAMETER,
PRIVATE :: moduleN =
'rpa_im_time_force_types'
37 TYPE im_time_force_type
40 TYPE(dbt_type),
DIMENSION(3) :: t_2c_der_metric, t_2c_der_pot, t_2c_der_ovlp
43 TYPE(dbt_type),
DIMENSION(3) :: t_3c_der_AO, &
47 TYPE(hfx_compression_type),
ALLOCATABLE,
DIMENSION(:, :) :: t_3c_der_AO_comp, t_3c_der_RI_comp
48 TYPE(block_ind_type),
ALLOCATABLE,
DIMENSION(:, :) :: t_3c_der_AO_ind, t_3c_der_RI_ind
51 TYPE(dbt_type) :: t_2c_pot_psqrt, t_2c_inv_metric, t_2c_K, t_2c_pot_msqrt
52 TYPE(dbcsr_type) :: inv_ovlp, G_PQ
55 TYPE(dbcsr_p_type),
DIMENSION(:),
POINTER :: P_occ => null(), p_virt => null()
58 TYPE(dbcsr_p_type),
DIMENSION(:),
POINTER :: sum_O_tau => null()
61 TYPE(dbcsr_p_type),
DIMENSION(:),
POINTER :: sum_YP_tau => null()
64 INTEGER,
DIMENSION(:),
ALLOCATABLE :: bsizes_RI_split, bsizes_AO_split
67 INTEGER,
DIMENSION(:),
ALLOCATABLE :: idx_to_at_AO, idx_to_at_RI
70 LOGICAL :: do_periodic = .false.
73 TYPE(neighbor_list_set_p_type),
DIMENSION(:),
POINTER :: nl_2c_ovlp => null(), &
74 nl_2c_met => null(), &
76 TYPE(neighbor_list_3c_type),
POINTER :: nl_3c => null()
77 TYPE(dbcsr_type),
POINTER :: RI_virial_pot => null(), &
78 ri_virial_met => null()
79 TYPE(dbt_type),
POINTER :: t_3c_virial => null(), &
80 t_3c_virial_split => null()
82 END TYPE im_time_force_type
92 TYPE(im_time_force_type) :: force_data
94 INTEGER :: dummy_int, i, i_xyz, j
96 CALL dbt_destroy(force_data%t_2c_pot_psqrt)
97 CALL dbt_destroy(force_data%t_2c_pot_msqrt)
98 CALL dbt_destroy(force_data%t_2c_K)
100 CALL dbcsr_release(force_data%inv_ovlp)
101 CALL dbcsr_release(force_data%G_PQ)
108 IF (.NOT. force_data%do_periodic)
CALL dbt_destroy(force_data%t_2c_der_pot(i_xyz))
109 CALL dbt_destroy(force_data%t_2c_der_ovlp(i_xyz))
111 CALL dbt_destroy(force_data%t_3c_der_AO(i_xyz))
112 CALL dbt_destroy(force_data%t_3c_der_RI(i_xyz))
115 CALL dbt_destroy(force_data%t_2c_inv_metric)
117 CALL dbt_destroy(force_data%t_2c_der_metric(i_xyz))
120 DO i = 1,
SIZE(force_data%t_3c_der_AO_comp, 1)
121 DO j = 1,
SIZE(force_data%t_3c_der_AO_comp, 2)
125 DO i = 1,
SIZE(force_data%t_3c_der_RI_comp, 1)
126 DO j = 1,
SIZE(force_data%t_3c_der_RI_comp, 2)
130 DEALLOCATE (force_data%t_3c_der_AO_ind, force_data%t_3c_der_RI_ind)
132 IF (
ASSOCIATED(force_data%nl_2c_ovlp))
THEN
136 IF (
ASSOCIATED(force_data%nl_2c_pot))
THEN
140 IF (
ASSOCIATED(force_data%nl_2c_met))
THEN
144 IF (
ASSOCIATED(force_data%nl_3c))
THEN
146 DEALLOCATE (force_data%nl_3c)
149 IF (
ASSOCIATED(force_data%RI_virial_pot))
THEN
150 CALL dbcsr_release(force_data%RI_virial_pot)
151 DEALLOCATE (force_data%RI_virial_pot)
154 IF (
ASSOCIATED(force_data%RI_virial_met))
THEN
155 CALL dbcsr_release(force_data%RI_virial_met)
156 DEALLOCATE (force_data%RI_virial_met)
159 IF (
ASSOCIATED(force_data%t_3c_virial))
THEN
160 CALL dbt_destroy(force_data%t_3c_virial)
161 DEALLOCATE (force_data%t_3c_virial)
164 IF (
ASSOCIATED(force_data%t_3c_virial_split))
THEN
165 CALL dbt_destroy(force_data%t_3c_virial_split)
166 DEALLOCATE (force_data%t_3c_virial_split)
DBCSR operations in CP2K.
This is the start of a dbt_api, all publically needed functions are exported here....
Types and set/get functions for HFX.
subroutine, public dealloc_containers(DATA, memory_usage)
...
Define the neighbor list data types and the corresponding functionality.
subroutine, public release_neighbor_list_sets(nlists)
releases an array of neighbor_list_sets
Utility methods to build 3-center integral tensors of various types.
Utility methods to build 3-center integral tensors of various types.
subroutine, public neighbor_list_3c_destroy(ijk_list)
Destroy 3c neighborlist.
Types needed for cubic-scaling RPA and SOS-Laplace-MP2 forces.
subroutine, public im_time_force_release(force_data)
Cleans everything up.