(git:ed6f26b)
Loading...
Searching...
No Matches
gw_integrals.F
Go to the documentation of this file.
1!--------------------------------------------------------------------------------------------------!
2! CP2K: A general program to perform molecular dynamics simulations !
3! Copyright 2000-2025 CP2K developers group <https://cp2k.org> !
4! !
5! SPDX-License-Identifier: GPL-2.0-or-later !
6!--------------------------------------------------------------------------------------------------!
7
8! **************************************************************************************************
9!> \brief Utility method to build 3-center integrals for small cell GW
10! **************************************************************************************************
12 USE omp_lib, ONLY: omp_get_thread_num
19 USE cell_types, ONLY: cell_type,&
20 get_cell,&
21 pbc
24 USE cp_files, ONLY: close_file,&
26 USE gamma, ONLY: init_md_ftable
31 USE kinds, ONLY: dp
40 USE orbital_pointers, ONLY: ncoset
45 USE t_c_g0, ONLY: get_lmax_init,&
46 init
47
48!$ USE OMP_LIB, ONLY: omp_get_max_threads, omp_get_thread_num
49#include "./base/base_uses.f90"
50
51 IMPLICIT NONE
52
53 PRIVATE
54
55 CHARACTER(len=*), PARAMETER, PRIVATE :: moduleN = 'gw_integrals'
56
58
59CONTAINS
60
61! **************************************************************************************************
62!> \brief ...
63!> \param int_3c ...
64!> \param qs_env ...
65!> \param potential_parameter ...
66!> \param basis_j ...
67!> \param basis_k ...
68!> \param basis_i ...
69!> \param cell_j ...
70!> \param cell_k ...
71!> \param cell_i ...
72!> \param atom_j ...
73!> \param atom_k ...
74!> \param atom_i ...
75!> \param j_bf_start_from_atom ...
76!> \param k_bf_start_from_atom ...
77!> \param i_bf_start_from_atom ...
78! **************************************************************************************************
79 SUBROUTINE build_3c_integral_block(int_3c, qs_env, potential_parameter, &
80 basis_j, basis_k, basis_i, &
81 cell_j, cell_k, cell_i, atom_j, atom_k, atom_i, &
82 j_bf_start_from_atom, k_bf_start_from_atom, &
83 i_bf_start_from_atom)
84
85 REAL(kind=dp), DIMENSION(:, :, :) :: int_3c
86 TYPE(qs_environment_type), POINTER :: qs_env
87 TYPE(libint_potential_type), INTENT(IN) :: potential_parameter
88 TYPE(gto_basis_set_p_type), DIMENSION(:) :: basis_j, basis_k, basis_i
89 INTEGER, DIMENSION(3), INTENT(IN), OPTIONAL :: cell_j, cell_k, cell_i
90 INTEGER, INTENT(IN), OPTIONAL :: atom_j, atom_k, atom_i
91 INTEGER, DIMENSION(:), OPTIONAL :: j_bf_start_from_atom, &
92 k_bf_start_from_atom, &
93 i_bf_start_from_atom
94
95 CHARACTER(LEN=*), PARAMETER :: routinen = 'build_3c_integral_block'
96
97 INTEGER :: at_i, at_j, at_k, block_end_i, block_end_j, block_end_k, block_start_i, &
98 block_start_j, block_start_k, egfi, handle, i, i_offset, ibasis, ikind, ilist, imax, is, &
99 iset, j_offset, jkind, js, jset, k_offset, kkind, ks, kset, m_max, max_ncoi, max_ncoj, &
100 max_ncok, max_nset, max_nsgfi, max_nsgfj, max_nsgfk, maxli, maxlj, maxlk, natom, nbasis, &
101 ncoi, ncoj, ncok, nseti, nsetj, nsetk, op_ij, op_jk, sgfi, sgfj, sgfk, unit_id
102 INTEGER, ALLOCATABLE, DIMENSION(:) :: kind_of
103 INTEGER, DIMENSION(3) :: my_cell_i, my_cell_j, my_cell_k
104 INTEGER, DIMENSION(:), POINTER :: lmax_i, lmax_j, lmax_k, lmin_i, lmin_j, &
105 lmin_k, npgfi, npgfj, npgfk, nsgfi, &
106 nsgfj, nsgfk
107 INTEGER, DIMENSION(:, :), POINTER :: first_sgf_i, first_sgf_j, first_sgf_k
108 REAL(kind=dp) :: dij, dik, djk, dr_ij, dr_ik, dr_jk, &
109 kind_radius_i, kind_radius_j, &
110 kind_radius_k, sijk_ext
111 REAL(kind=dp), ALLOCATABLE, DIMENSION(:) :: ccp_buffer, cpp_buffer, &
112 max_contraction_i, max_contraction_j, &
113 max_contraction_k
114 REAL(kind=dp), ALLOCATABLE, DIMENSION(:, :, :) :: sijk, sijk_contr
115 REAL(kind=dp), DIMENSION(3) :: ri, rij, rik, rj, rjk, rk
116 REAL(kind=dp), DIMENSION(3, 3) :: hmat
117 REAL(kind=dp), DIMENSION(:), POINTER :: set_radius_i, set_radius_j, set_radius_k
118 REAL(kind=dp), DIMENSION(:, :), POINTER :: rpgf_i, rpgf_j, rpgf_k, sphi_i, sphi_j, &
119 sphi_k, zeti, zetj, zetk
120 TYPE(atomic_kind_type), DIMENSION(:), POINTER :: atomic_kind_set
121 TYPE(cell_type), POINTER :: cell
122 TYPE(cp_2d_r_p_type), DIMENSION(:, :), POINTER :: spi, spk, tspj
123 TYPE(cp_libint_t) :: lib
124 TYPE(dft_control_type), POINTER :: dft_control
125 TYPE(gto_basis_set_type), POINTER :: basis_set
126 TYPE(mp_para_env_type), POINTER :: para_env
127 TYPE(particle_type), DIMENSION(:), POINTER :: particle_set
128 TYPE(qs_kind_type), DIMENSION(:), POINTER :: qs_kind_set
129
130 CALL timeset(routinen, handle)
131
132 op_ij = potential_parameter%potential_type
133 op_jk = do_potential_id
134
135 dr_ij = 0.0_dp; dr_jk = 0.0_dp; dr_ik = 0.0_dp
136
137 IF (op_ij == do_potential_truncated .OR. op_ij == do_potential_short) THEN
138 dr_ij = potential_parameter%cutoff_radius*cutoff_screen_factor
139 dr_ik = potential_parameter%cutoff_radius*cutoff_screen_factor
140 ELSEIF (op_ij == do_potential_coulomb) THEN
141 dr_ij = 1000000.0_dp
142 dr_ik = 1000000.0_dp
143 END IF
144
145 NULLIFY (qs_kind_set, atomic_kind_set)
146
147 ! get stuff
148 CALL get_qs_env(qs_env, atomic_kind_set=atomic_kind_set, qs_kind_set=qs_kind_set, cell=cell, &
149 natom=natom, dft_control=dft_control, para_env=para_env, &
150 particle_set=particle_set)
151 CALL get_atomic_kind_set(atomic_kind_set=atomic_kind_set, kind_of=kind_of)
152 CALL get_cell(cell=cell, h=hmat)
153
154 !Need the max l for each basis for libint and max nset, nco and nsgf for LIBXSMM contraction
155 nbasis = SIZE(basis_i)
156 max_nsgfi = 0
157 max_ncoi = 0
158 max_nset = 0
159 maxli = 0
160 DO ibasis = 1, nbasis
161 CALL get_gto_basis_set(gto_basis_set=basis_i(ibasis)%gto_basis_set, maxl=imax, &
162 nset=iset, nsgf_set=nsgfi, npgf=npgfi)
163 maxli = max(maxli, imax)
164 max_nset = max(max_nset, iset)
165 max_nsgfi = max(max_nsgfi, maxval(nsgfi))
166 max_ncoi = max(max_ncoi, maxval(npgfi)*ncoset(maxli))
167 END DO
168 max_nsgfj = 0
169 max_ncoj = 0
170 maxlj = 0
171 DO ibasis = 1, nbasis
172 CALL get_gto_basis_set(gto_basis_set=basis_j(ibasis)%gto_basis_set, maxl=imax, &
173 nset=jset, nsgf_set=nsgfj, npgf=npgfj)
174 maxlj = max(maxlj, imax)
175 max_nset = max(max_nset, jset)
176 max_nsgfj = max(max_nsgfj, maxval(nsgfj))
177 max_ncoj = max(max_ncoj, maxval(npgfj)*ncoset(maxlj))
178 END DO
179 max_nsgfk = 0
180 max_ncok = 0
181 maxlk = 0
182 DO ibasis = 1, nbasis
183 CALL get_gto_basis_set(gto_basis_set=basis_k(ibasis)%gto_basis_set, maxl=imax, &
184 nset=kset, nsgf_set=nsgfk, npgf=npgfk)
185 maxlk = max(maxlk, imax)
186 max_nset = max(max_nset, kset)
187 max_nsgfk = max(max_nsgfk, maxval(nsgfk))
188 max_ncok = max(max_ncok, maxval(npgfk)*ncoset(maxlk))
189 END DO
190 m_max = maxli + maxlj + maxlk
191
192 !To minimize expensive memory opsand generally optimize contraction, pre-allocate
193 !contiguous sphi arrays (and transposed in the cas of sphi_i)
194
195 NULLIFY (tspj, spi, spk)
196 ALLOCATE (spi(max_nset, nbasis), tspj(max_nset, nbasis), spk(max_nset, nbasis))
197
198 DO ibasis = 1, nbasis
199 DO iset = 1, max_nset
200 NULLIFY (spi(iset, ibasis)%array)
201 NULLIFY (tspj(iset, ibasis)%array)
202
203 NULLIFY (spk(iset, ibasis)%array)
204 END DO
205 END DO
206
207 DO ilist = 1, 3
208 DO ibasis = 1, nbasis
209 IF (ilist == 1) basis_set => basis_i(ibasis)%gto_basis_set
210 IF (ilist == 2) basis_set => basis_j(ibasis)%gto_basis_set
211 IF (ilist == 3) basis_set => basis_k(ibasis)%gto_basis_set
212
213 DO iset = 1, basis_set%nset
214
215 ncoi = basis_set%npgf(iset)*ncoset(basis_set%lmax(iset))
216 sgfi = basis_set%first_sgf(1, iset)
217 egfi = sgfi + basis_set%nsgf_set(iset) - 1
218
219 IF (ilist == 1) THEN
220 ALLOCATE (spi(iset, ibasis)%array(ncoi, basis_set%nsgf_set(iset)))
221 spi(iset, ibasis)%array(:, :) = basis_set%sphi(1:ncoi, sgfi:egfi)
222
223 ELSE IF (ilist == 2) THEN
224 ALLOCATE (tspj(iset, ibasis)%array(basis_set%nsgf_set(iset), ncoi))
225 tspj(iset, ibasis)%array(:, :) = transpose(basis_set%sphi(1:ncoi, sgfi:egfi))
226
227 ELSE
228 ALLOCATE (spk(iset, ibasis)%array(ncoi, basis_set%nsgf_set(iset)))
229 spk(iset, ibasis)%array(:, :) = basis_set%sphi(1:ncoi, sgfi:egfi)
230 END IF
231
232 END DO !iset
233 END DO !ibasis
234 END DO !ilist
235
236 !Init the truncated Coulomb operator
237 IF (op_ij == do_potential_truncated .OR. op_jk == do_potential_truncated) THEN
238
239 IF (m_max > get_lmax_init()) THEN
240 IF (para_env%mepos == 0) THEN
241 CALL open_file(unit_number=unit_id, file_name=potential_parameter%filename)
242 END IF
243 CALL init(m_max, unit_id, para_env%mepos, para_env)
244 IF (para_env%mepos == 0) THEN
245 CALL close_file(unit_id)
246 END IF
247 END IF
248 END IF
249
250 CALL init_md_ftable(nmax=m_max)
251
252 CALL cp_libint_init_3eri(lib, max(maxli, maxlj, maxlk))
253 CALL cp_libint_set_contrdepth(lib, 1)
254
255 !pre-allocate contraction buffers
256 ALLOCATE (cpp_buffer(max_nsgfj*max_ncok), ccp_buffer(max_nsgfj*max_nsgfk*max_ncoi))
257 int_3c(:, :, :) = 0.0_dp
258
259 ! loop over all RI atoms
260 DO at_i = 1, natom
261
262 ! loop over all AO atoms
263 DO at_j = 1, natom
264
265 ! loop over all AO atoms
266 DO at_k = 1, natom
267
268 IF (PRESENT(atom_i)) THEN
269 IF (at_i .NE. atom_i) cycle
270 END IF
271 IF (PRESENT(atom_j)) THEN
272 IF (at_j .NE. atom_j) cycle
273 END IF
274 IF (PRESENT(atom_k)) THEN
275 IF (at_k .NE. atom_k) cycle
276 END IF
277
278 my_cell_i(1:3) = 0
279 IF (PRESENT(cell_i)) my_cell_i(1:3) = cell_i(1:3)
280 my_cell_j(1:3) = 0
281 IF (PRESENT(cell_j)) my_cell_j(1:3) = cell_j(1:3)
282 my_cell_k(1:3) = 0
283 IF (PRESENT(cell_k)) my_cell_k(1:3) = cell_k(1:3)
284
285 ri = pbc(particle_set(at_i)%r(1:3), cell) + matmul(hmat, real(my_cell_i, dp))
286 rj = pbc(particle_set(at_j)%r(1:3), cell) + matmul(hmat, real(my_cell_j, dp))
287 rk = pbc(particle_set(at_k)%r(1:3), cell) + matmul(hmat, real(my_cell_k, dp))
288
289 rjk(1:3) = rk(1:3) - rj(1:3)
290 rij(1:3) = rj(1:3) - ri(1:3)
291 rik(1:3) = rk(1:3) - ri(1:3)
292
293 djk = norm2(rjk)
294 dij = norm2(rij)
295 dik = norm2(rik)
296
297 ikind = kind_of(at_i)
298 jkind = kind_of(at_j)
299 kkind = kind_of(at_k)
300
301 CALL get_gto_basis_set(basis_i(ikind)%gto_basis_set, first_sgf=first_sgf_i, &
302 lmax=lmax_i, lmin=lmin_i, npgf=npgfi, nset=nseti, &
303 nsgf_set=nsgfi, pgf_radius=rpgf_i, set_radius=set_radius_i, &
304 sphi=sphi_i, zet=zeti, kind_radius=kind_radius_i)
305
306 CALL get_gto_basis_set(basis_j(jkind)%gto_basis_set, first_sgf=first_sgf_j, &
307 lmax=lmax_j, lmin=lmin_j, npgf=npgfj, nset=nsetj, &
308 nsgf_set=nsgfj, pgf_radius=rpgf_j, set_radius=set_radius_j, &
309 sphi=sphi_j, zet=zetj, kind_radius=kind_radius_j)
310
311 CALL get_gto_basis_set(basis_k(kkind)%gto_basis_set, first_sgf=first_sgf_k, &
312 lmax=lmax_k, lmin=lmin_k, npgf=npgfk, nset=nsetk, &
313 nsgf_set=nsgfk, pgf_radius=rpgf_k, set_radius=set_radius_k, &
314 sphi=sphi_k, zet=zetk, kind_radius=kind_radius_k)
315
316 IF (kind_radius_j + kind_radius_i + dr_ij < dij) cycle
317 IF (kind_radius_j + kind_radius_k + dr_jk < djk) cycle
318 IF (kind_radius_k + kind_radius_i + dr_ik < dik) cycle
319
320 ALLOCATE (max_contraction_i(nseti))
321 max_contraction_i = 0.0_dp
322 DO iset = 1, nseti
323 sgfi = first_sgf_i(1, iset)
324 max_contraction_i(iset) = maxval((/(sum(abs(sphi_i(:, i))), i=sgfi, &
325 sgfi + nsgfi(iset) - 1)/))
326 END DO
327
328 ALLOCATE (max_contraction_j(nsetj))
329 max_contraction_j = 0.0_dp
330 DO jset = 1, nsetj
331 sgfj = first_sgf_j(1, jset)
332 max_contraction_j(jset) = maxval((/(sum(abs(sphi_j(:, i))), i=sgfj, &
333 sgfj + nsgfj(jset) - 1)/))
334 END DO
335
336 ALLOCATE (max_contraction_k(nsetk))
337 max_contraction_k = 0.0_dp
338 DO kset = 1, nsetk
339 sgfk = first_sgf_k(1, kset)
340 max_contraction_k(kset) = maxval((/(sum(abs(sphi_k(:, i))), i=sgfk, &
341 sgfk + nsgfk(kset) - 1)/))
342 END DO
343
344 DO iset = 1, nseti
345
346 DO jset = 1, nsetj
347
348 IF (set_radius_j(jset) + set_radius_i(iset) + dr_ij < dij) cycle
349
350 DO kset = 1, nsetk
351
352 IF (set_radius_j(jset) + set_radius_k(kset) + dr_jk < djk) cycle
353 IF (set_radius_k(kset) + set_radius_i(iset) + dr_ik < dik) cycle
354
355 ncoi = npgfi(iset)*ncoset(lmax_i(iset))
356 ncoj = npgfj(jset)*ncoset(lmax_j(jset))
357 ncok = npgfk(kset)*ncoset(lmax_k(kset))
358
359 sgfi = first_sgf_i(1, iset)
360 sgfj = first_sgf_j(1, jset)
361 sgfk = first_sgf_k(1, kset)
362
363 IF (ncoj*ncok*ncoi .LE. 0) cycle
364 ALLOCATE (sijk(ncoj, ncok, ncoi))
365 sijk(:, :, :) = 0.0_dp
366
367 is = iset
368 js = jset
369 ks = kset
370
371 CALL eri_3center(sijk, &
372 lmin_j(js), lmax_j(js), npgfj(js), zetj(:, js), &
373 rpgf_j(:, js), rj, &
374 lmin_k(ks), lmax_k(ks), npgfk(ks), zetk(:, ks), &
375 rpgf_k(:, ks), rk, &
376 lmin_i(is), lmax_i(is), npgfi(is), zeti(:, is), &
377 rpgf_i(:, is), ri, &
378 djk, dij, dik, lib, potential_parameter, &
379 int_abc_ext=sijk_ext)
380
381 ALLOCATE (sijk_contr(nsgfj(jset), nsgfk(kset), nsgfi(iset)))
382 CALL abc_contract_xsmm(sijk_contr, sijk, tspj(jset, jkind)%array, &
383 spk(kset, kkind)%array, spi(iset, ikind)%array, &
384 ncoj, ncok, ncoi, nsgfj(jset), nsgfk(kset), &
385 nsgfi(iset), cpp_buffer, ccp_buffer)
386 DEALLOCATE (sijk)
387
388 IF (PRESENT(atom_j)) THEN
389 j_offset = 0
390 ELSE
391 cpassert(PRESENT(j_bf_start_from_atom))
392 j_offset = j_bf_start_from_atom(at_j) - 1
393 END IF
394 IF (PRESENT(atom_k)) THEN
395 k_offset = 0
396 ELSE
397 cpassert(PRESENT(k_bf_start_from_atom))
398 k_offset = k_bf_start_from_atom(at_k) - 1
399 END IF
400 IF (PRESENT(atom_i)) THEN
401 i_offset = 0
402 ELSE
403 cpassert(PRESENT(i_bf_start_from_atom))
404 i_offset = i_bf_start_from_atom(at_i) - 1
405 END IF
406
407 block_start_j = sgfj + j_offset
408 block_end_j = sgfj + nsgfj(jset) - 1 + j_offset
409 block_start_k = sgfk + k_offset
410 block_end_k = sgfk + nsgfk(kset) - 1 + k_offset
411 block_start_i = sgfi + i_offset
412 block_end_i = sgfi + nsgfi(iset) - 1 + i_offset
413
414 int_3c(block_start_j:block_end_j, &
415 block_start_k:block_end_k, &
416 block_start_i:block_end_i) = &
417 int_3c(block_start_j:block_end_j, &
418 block_start_k:block_end_k, &
419 block_start_i:block_end_i) + &
420 sijk_contr(:, :, :)
421 DEALLOCATE (sijk_contr)
422
423 END DO
424
425 END DO
426
427 END DO
428
429 DEALLOCATE (max_contraction_i, max_contraction_j, max_contraction_k)
430
431 END DO ! atom_k (AO)
432 END DO ! atom_j (AO)
433 END DO ! atom_i (RI)
434
435 CALL cp_libint_cleanup_3eri(lib)
436
437 DO iset = 1, max_nset
438 DO ibasis = 1, nbasis
439 IF (ASSOCIATED(spi(iset, ibasis)%array)) DEALLOCATE (spi(iset, ibasis)%array)
440 IF (ASSOCIATED(tspj(iset, ibasis)%array)) DEALLOCATE (tspj(iset, ibasis)%array)
441
442 IF (ASSOCIATED(spk(iset, ibasis)%array)) DEALLOCATE (spk(iset, ibasis)%array)
443 END DO
444 END DO
445 DEALLOCATE (spi, tspj, spk)
446
447 CALL timestop(handle)
448
449 END SUBROUTINE build_3c_integral_block
450
451END MODULE
452
static int imax(int x, int y)
Returns the larger of two given integers (missing from the C standard)
Contraction of integrals over primitive Cartesian Gaussians based on the contraction matrix sphi whic...
subroutine, public abc_contract_xsmm(abcint, sabc, sphi_a, sphi_b, sphi_c, ncoa, ncob, ncoc, nsgfa, nsgfb, nsgfc, cpp_buffer, ccp_buffer, prefac, pstfac)
3-center contraction routine from primitive cartesian Gaussians to spherical Gaussian functions; can ...
Define the atomic kind types and their sub types.
subroutine, public get_atomic_kind_set(atomic_kind_set, atom_of_kind, kind_of, natom_of_kind, maxatom, natom, nshell, fist_potential_present, shell_present, shell_adiabatic, shell_check_distance, damping_present)
Get attributes of an atomic kind set.
subroutine, public get_gto_basis_set(gto_basis_set, name, aliases, norm_type, kind_radius, ncgf, nset, nsgf, cgf_symbol, sgf_symbol, norm_cgf, set_radius, lmax, lmin, lx, ly, lz, m, ncgf_set, npgf, nsgf_set, nshell, cphi, pgf_radius, sphi, scon, zet, first_cgf, first_sgf, l, last_cgf, last_sgf, n, gcc, maxco, maxl, maxpgf, maxsgf_set, maxshell, maxso, nco_sum, npgf_sum, nshell_sum, maxder, short_kind_radius, npgf_seg_sum)
...
Handles all functions related to the CELL.
Definition cell_types.F:15
subroutine, public get_cell(cell, alpha, beta, gamma, deth, orthorhombic, abc, periodic, h, h_inv, symmetry_id, tag)
Get informations about a simulation cell.
Definition cell_types.F:195
various utilities that regard array of different kinds: output, allocation,... maybe it is not a good...
Defines control structures, which contain the parameters and the settings for the DFT-based calculati...
Utility routines to open and close files. Tracking of preconnections.
Definition cp_files.F:16
subroutine, public open_file(file_name, file_status, file_form, file_action, file_position, file_pad, unit_number, debug, skip_get_unit_number, file_access)
Opens the requested file using a free unit number.
Definition cp_files.F:308
subroutine, public close_file(unit_number, file_status, keep_preconnection)
Close an open file given by its logical unit number. Optionally, keep the file and unit preconnected.
Definition cp_files.F:119
Calculation of the incomplete Gamma function F_n(t) for multi-center integrals over Cartesian Gaussia...
Definition gamma.F:15
subroutine, public init_md_ftable(nmax)
Initialize a table of F_n(t) values in the range 0 <= t <= 12 with a stepsize of 0....
Definition gamma.F:540
Utility method to build 3-center integrals for small cell GW.
subroutine, public build_3c_integral_block(int_3c, qs_env, potential_parameter, basis_j, basis_k, basis_i, cell_j, cell_k, cell_i, atom_j, atom_k, atom_i, j_bf_start_from_atom, k_bf_start_from_atom, i_bf_start_from_atom)
...
collects all constants needed in input so that they can be used without circular dependencies
integer, parameter, public do_potential_truncated
integer, parameter, public do_potential_id
integer, parameter, public do_potential_coulomb
integer, parameter, public do_potential_short
Defines the basic variable types.
Definition kinds.F:23
integer, parameter, public dp
Definition kinds.F:34
2- and 3-center electron repulsion integral routines based on libint2 Currently available operators: ...
subroutine, public eri_3center(int_abc, la_min, la_max, npgfa, zeta, rpgfa, ra, lb_min, lb_max, npgfb, zetb, rpgfb, rb, lc_min, lc_max, npgfc, zetc, rpgfc, rc, dab, dac, dbc, lib, potential_parameter, int_abc_ext)
Computes the 3-center electron repulsion integrals (ab|c) for a given set of cartesian gaussian orbit...
real(kind=dp), parameter, public cutoff_screen_factor
Interface to the Libint-Library or a c++ wrapper.
subroutine, public cp_libint_init_3eri(lib, max_am)
subroutine, public cp_libint_cleanup_3eri(lib)
subroutine, public cp_libint_set_contrdepth(lib, contrdepth)
Interface to the message passing library MPI.
Provides Cartesian and spherical orbital pointers and indices.
integer, dimension(:), allocatable, public ncoset
Define the data structure for the particle information.
subroutine, public get_qs_env(qs_env, atomic_kind_set, qs_kind_set, cell, super_cell, cell_ref, use_ref_cell, kpoints, dft_control, mos, sab_orb, sab_all, qmmm, qmmm_periodic, sac_ae, sac_ppl, sac_lri, sap_ppnl, sab_vdw, sab_scp, sap_oce, sab_lrc, sab_se, sab_xtbe, sab_tbe, sab_core, sab_xb, sab_xtb_pp, sab_xtb_nonbond, sab_almo, sab_kp, sab_kp_nosym, particle_set, energy, force, matrix_h, matrix_h_im, matrix_ks, matrix_ks_im, matrix_vxc, run_rtp, rtp, matrix_h_kp, matrix_h_im_kp, matrix_ks_kp, matrix_ks_im_kp, matrix_vxc_kp, kinetic_kp, matrix_s_kp, matrix_w_kp, matrix_s_ri_aux_kp, matrix_s, matrix_s_ri_aux, matrix_w, matrix_p_mp2, matrix_p_mp2_admm, rho, rho_xc, pw_env, ewald_env, ewald_pw, active_space, mpools, input, para_env, blacs_env, scf_control, rel_control, kinetic, qs_charges, vppl, rho_core, rho_nlcc, rho_nlcc_g, ks_env, ks_qmmm_env, wf_history, scf_env, local_particles, local_molecules, distribution_2d, dbcsr_dist, molecule_kind_set, molecule_set, subsys, cp_subsys, oce, local_rho_set, rho_atom_set, task_list, task_list_soft, rho0_atom_set, rho0_mpole, rhoz_set, ecoul_1c, rho0_s_rs, rho0_s_gs, do_kpoints, has_unit_metric, requires_mo_derivs, mo_derivs, mo_loc_history, nkind, natom, nelectron_total, nelectron_spin, efield, neighbor_list_id, linres_control, xas_env, virial, cp_ddapc_env, cp_ddapc_ewald, outer_scf_history, outer_scf_ihistory, x_data, et_coupling, dftb_potential, results, se_taper, se_store_int_env, se_nddo_mpole, se_nonbond_env, admm_env, lri_env, lri_density, exstate_env, ec_env, harris_env, dispersion_env, gcp_env, vee, rho_external, external_vxc, mask, mp2_env, bs_env, kg_env, wanniercentres, atprop, ls_scf_env, do_transport, transport_env, v_hartree_rspace, s_mstruct_changed, rho_changed, potential_changed, forces_up_to_date, mscfg_env, almo_scf_env, gradient_history, variable_history, embed_pot, spin_embed_pot, polar_env, mos_last_converged, eeq, rhs)
Get the QUICKSTEP environment.
Define the quickstep kind type and their sub types.
This module computes the basic integrals for the truncated coulomb operator.
Definition t_c_g0.F:57
subroutine, public init(nder, iunit, mepos, group)
...
Definition t_c_g0.F:1357
integer function, public get_lmax_init()
Returns the value of nderiv_init so that one can check if opening the potential file is worhtwhile.
Definition t_c_g0.F:1464
Provides all information about an atomic kind.
Type defining parameters related to the simulation cell.
Definition cell_types.F:55
represent a pointer to a 2d array
stores all the informations relevant to an mpi environment
Provides all information about a quickstep kind.