(git:4733e3f)
Loading...
Searching...
No Matches
cp_ddapc_types.F
Go to the documentation of this file.
1!--------------------------------------------------------------------------------------------------!
2! CP2K: A general program to perform molecular dynamics simulations !
3! Copyright 2000-2026 CP2K developers group <https://cp2k.org> !
4! !
5! SPDX-License-Identifier: GPL-2.0-or-later !
6!--------------------------------------------------------------------------------------------------!
7
8! **************************************************************************************************
9!> \brief contains information regarding the decoupling/recoupling method of Bloechl
10!> \author Teodoro Laino
11! **************************************************************************************************
13 USE cell_methods, ONLY: read_cell
14 USE cell_types, ONLY: cell_release,&
28 USE kinds, ONLY: dp
29 USE mathconstants, ONLY: pi
30 USE mathlib, ONLY: det_3x3
34 USE pw_grids, ONLY: pw_grid_release
38 USE pw_types, ONLY: pw_c1d_gs_type,&
40#include "./base/base_uses.f90"
41
42 IMPLICIT NONE
43 PRIVATE
44 LOGICAL, PRIVATE, PARAMETER :: debug_this_module = .true.
45 CHARACTER(len=*), PARAMETER, PRIVATE :: moduleN = 'cp_ddapc_types'
46
49
50! **************************************************************************************************
51!> \author Teodoro Laino
52! **************************************************************************************************
54 REAL(kind=dp) :: c0 = 0.0_dp
55 REAL(kind=dp), DIMENSION(:, :), POINTER :: ami => null()
56 REAL(kind=dp), DIMENSION(:, :), POINTER :: md => null() ! decoupling
57 REAL(kind=dp), DIMENSION(:, :), POINTER :: mr => null() ! recoupling
58 REAL(kind=dp), DIMENSION(:, :), POINTER :: mt => null() ! decoupling+recoupling
59 REAL(kind=dp), DIMENSION(:, :), POINTER :: ms => null() ! solvation
60 REAL(kind=dp), POINTER, DIMENSION(:, :) :: gfunc => null()
61 REAL(kind=dp), POINTER, DIMENSION(:) :: w => null()
62 END TYPE cp_ddapc_type
63
64! **************************************************************************************************
66 LOGICAL :: do_decoupling = .false.
67 LOGICAL :: do_qmmm_periodic_decpl = .false.
68 LOGICAL :: do_solvation = .false.
69 LOGICAL :: do_property = .false.
70 LOGICAL :: do_restraint = .false.
71 TYPE(section_vals_type), POINTER :: ewald_section => null()
72 TYPE(pw_pool_type), POINTER :: pw_pool_qm => null(), pw_pool_mm => null()
73 TYPE(pw_grid_type), POINTER :: pw_grid_qm => null(), pw_grid_mm => null()
74 TYPE(pw_r3d_rs_type), POINTER :: coeff_qm => null(), coeff_mm => null()
75 END TYPE cp_ddapc_ewald_type
76
77CONTAINS
78
79! **************************************************************************************************
80!> \brief ...
81!> \param cp_para_env ...
82!> \param cp_ddapc_env ...
83!> \param cp_ddapc_ewald ...
84!> \param particle_set ...
85!> \param radii ...
86!> \param cell ...
87!> \param super_cell ...
88!> \param rho_tot_g ...
89!> \param gcut ...
90!> \param iw2 ...
91!> \param Vol ...
92!> \param force_env_section ...
93!> \author Tedoro Laino
94!> \note NB receive cp_para_env to pass down to parallelized ewald_ddapc_pot()
95! **************************************************************************************************
96 SUBROUTINE cp_ddapc_create(cp_para_env, cp_ddapc_env, cp_ddapc_ewald, &
97 particle_set, radii, cell, super_cell, rho_tot_g, gcut, iw2, Vol, &
98 force_env_section)
99 TYPE(mp_para_env_type), POINTER :: cp_para_env
100 TYPE(cp_ddapc_type), INTENT(OUT) :: cp_ddapc_env
101 TYPE(cp_ddapc_ewald_type), POINTER :: cp_ddapc_ewald
102 TYPE(particle_type), DIMENSION(:), POINTER :: particle_set
103 REAL(kind=dp), DIMENSION(:), POINTER :: radii
104 TYPE(cell_type), POINTER :: cell, super_cell
105 TYPE(pw_c1d_gs_type), INTENT(IN) :: rho_tot_g
106 REAL(kind=dp), INTENT(IN) :: gcut
107 INTEGER, INTENT(IN) :: iw2
108 REAL(kind=dp), INTENT(IN) :: vol
109 TYPE(section_vals_type), POINTER :: force_env_section
110
111 CHARACTER(len=*), PARAMETER :: routinen = 'cp_ddapc_create'
112
113 INTEGER :: handle
114 TYPE(section_vals_type), POINTER :: param_section, solvation_section
115
116 CALL timeset(routinen, handle)
117 NULLIFY (cp_ddapc_env%AmI, &
118 cp_ddapc_env%Md, &
119 cp_ddapc_env%Mt, &
120 cp_ddapc_env%Mr, &
121 cp_ddapc_env%Ms, &
122 cp_ddapc_env%gfunc, &
123 cp_ddapc_env%w)
124 ! Evaluates gfunc and AmI
125 CALL ddapc_eval_gfunc(cp_ddapc_env%gfunc, cp_ddapc_env%w, gcut, rho_tot_g, radii)
126 CALL ddapc_eval_ami(cp_ddapc_env%AmI, &
127 cp_ddapc_env%c0, &
128 cp_ddapc_env%gfunc, &
129 cp_ddapc_env%w, &
130 particle_set, &
131 gcut, &
132 rho_tot_g, &
133 radii, &
134 iw2, &
135 vol)
136 IF (cp_ddapc_ewald%do_qmmm_periodic_decpl .OR. &
137 cp_ddapc_ewald%do_decoupling) THEN
138 !
139 ! Evaluate the matrix for the Classical contribution to the coupling/decoupling scheme
140 !
141 param_section => cp_ddapc_ewald%ewald_section
142 !NB parallelized ewald_ddapc_pot() needs cp_para_env
143 CALL ewald_ddapc_pot(cp_para_env, cp_ddapc_ewald%coeff_qm, &
144 1.0_dp, &
145 cell, &
146 param_section, &
147 particle_set, &
148 cp_ddapc_env%Md, &
149 radii)
150 IF (cp_ddapc_ewald%do_qmmm_periodic_decpl .OR. cp_ddapc_ewald%do_decoupling) THEN
151 ALLOCATE (cp_ddapc_env%Mt(SIZE(cp_ddapc_env%Md, 1), SIZE(cp_ddapc_env%Md, 2)))
152 IF (cp_ddapc_ewald%do_decoupling) THEN
153 ! Just decoupling
154 cp_ddapc_env%Mt = cp_ddapc_env%Md
155 ELSE
156 ! QMMM periodic calculation
157 !NB parallelized ewald_ddapc_pot() needs cp_para_env
158 CALL ewald_ddapc_pot(cp_para_env, cp_ddapc_ewald%coeff_mm, -1.0_dp, super_cell, param_section, &
159 particle_set, cp_ddapc_env%Mr, radii)
160 cp_ddapc_env%Mt = cp_ddapc_env%Md + cp_ddapc_env%Mr
161 END IF
162 END IF
163 END IF
164 IF (cp_ddapc_ewald%do_solvation) THEN
165 ! Spherical Solvation model
166 solvation_section => section_vals_get_subs_vals(force_env_section, "DFT%SCRF")
167 CALL solvation_ddapc_pot(solvation_section, &
168 particle_set, cp_ddapc_env%Ms, radii)
169 END IF
170 CALL timestop(handle)
171 END SUBROUTINE cp_ddapc_create
172
173! **************************************************************************************************
174!> \brief ...
175!> \param cp_ddapc_env ...
176!> \par History
177!> none
178!> \author Teodoro Laino - [tlaino]
179! **************************************************************************************************
180 SUBROUTINE cp_ddapc_release(cp_ddapc_env)
181 TYPE(cp_ddapc_type), INTENT(INOUT) :: cp_ddapc_env
182
183 IF (ASSOCIATED(cp_ddapc_env%AmI)) THEN
184 DEALLOCATE (cp_ddapc_env%AmI)
185 END IF
186 IF (ASSOCIATED(cp_ddapc_env%Mt)) THEN
187 DEALLOCATE (cp_ddapc_env%Mt)
188 END IF
189 IF (ASSOCIATED(cp_ddapc_env%Md)) THEN
190 DEALLOCATE (cp_ddapc_env%Md)
191 END IF
192 IF (ASSOCIATED(cp_ddapc_env%Mr)) THEN
193 DEALLOCATE (cp_ddapc_env%Mr)
194 END IF
195 IF (ASSOCIATED(cp_ddapc_env%Ms)) THEN
196 DEALLOCATE (cp_ddapc_env%Ms)
197 END IF
198 IF (ASSOCIATED(cp_ddapc_env%gfunc)) THEN
199 DEALLOCATE (cp_ddapc_env%gfunc)
200 END IF
201 IF (ASSOCIATED(cp_ddapc_env%w)) THEN
202 DEALLOCATE (cp_ddapc_env%w)
203 END IF
204
205 END SUBROUTINE cp_ddapc_release
206
207! **************************************************************************************************
208!> \brief ...
209!> \param cp_ddapc_ewald ...
210!> \param qmmm_decoupl ...
211!> \param qm_cell ...
212!> \param force_env_section ...
213!> \param subsys_section ...
214!> \param para_env ...
215!> \par History
216!> none
217!> \author Teodoro Laino - [tlaino]
218! **************************************************************************************************
219 SUBROUTINE cp_ddapc_ewald_create(cp_ddapc_ewald, qmmm_decoupl, qm_cell, &
220 force_env_section, subsys_section, para_env)
221 TYPE(cp_ddapc_ewald_type), POINTER :: cp_ddapc_ewald
222 LOGICAL, INTENT(IN) :: qmmm_decoupl
223 TYPE(cell_type), POINTER :: qm_cell
224 TYPE(section_vals_type), POINTER :: force_env_section, subsys_section
225 TYPE(mp_para_env_type), POINTER :: para_env
226
227 INTEGER :: my_val, npts(3)
228 INTEGER, DIMENSION(:), POINTER :: ngrids
229 LOGICAL :: analyt, decoupling, &
230 do_qmmm_periodic_decpl, do_restraint, &
231 do_restraintb, do_solvation
232 REAL(kind=dp) :: hmat(3, 3)
233 REAL(kind=dp), DIMENSION(:), POINTER :: gx, gy, gz, lg
234 TYPE(cell_type), POINTER :: dummy_cell, mm_cell
235 TYPE(cp_logger_type), POINTER :: logger
236 TYPE(section_vals_type), POINTER :: cell_section, grid_print_section, multipole_section, &
237 poisson_section, printc_section, qmmm_per_section, restraint_section, restraint_sectionb, &
238 solvation_section
239
240 logger => cp_get_default_logger()
241 cpassert(.NOT. ASSOCIATED(cp_ddapc_ewald))
242 ALLOCATE (cp_ddapc_ewald)
243 NULLIFY (cp_ddapc_ewald%pw_grid_mm, &
244 cp_ddapc_ewald%pw_grid_qm, &
245 cp_ddapc_ewald%ewald_section, &
246 cp_ddapc_ewald%pw_pool_mm, &
247 cp_ddapc_ewald%pw_pool_qm, &
248 cp_ddapc_ewald%coeff_mm, &
249 cp_ddapc_ewald%coeff_qm)
250 NULLIFY (multipole_section)
251
252 poisson_section => section_vals_get_subs_vals(force_env_section, "DFT%POISSON")
253 solvation_section => section_vals_get_subs_vals(force_env_section, "DFT%SCRF")
254 qmmm_per_section => section_vals_get_subs_vals(force_env_section, "QMMM%PERIODIC")
255 printc_section => section_vals_get_subs_vals(force_env_section, "PROPERTIES%FIT_CHARGE")
256 restraint_section => section_vals_get_subs_vals(force_env_section, "DFT%QS%DDAPC_RESTRAINT")
257 restraint_sectionb => section_vals_get_subs_vals(force_env_section, &
258 "PROPERTIES%ET_COUPLING%DDAPC_RESTRAINT_A")
259 CALL section_vals_get(solvation_section, explicit=do_solvation)
260 CALL section_vals_get(poisson_section, explicit=decoupling)
261 CALL section_vals_get(restraint_section, explicit=do_restraint)
262 CALL section_vals_get(restraint_sectionb, explicit=do_restraintb)
263 do_qmmm_periodic_decpl = qmmm_decoupl
264 cp_ddapc_ewald%do_solvation = do_solvation
265 cp_ddapc_ewald%do_qmmm_periodic_decpl = do_qmmm_periodic_decpl
266 cp_ddapc_ewald%do_property = cp_printkey_is_on(logger%iter_info, printc_section)
267 cp_ddapc_ewald%do_restraint = do_restraint .OR. do_restraintb
268 ! Determining the tasks and further check
269 IF (do_qmmm_periodic_decpl .AND. decoupling) THEN
270 CALL cp_warn(__location__, &
271 "A calculation with the QMMM periodic model has been requested. "// &
272 "The explicit POISSON section in DFT section will be IGNORED. "// &
273 "QM Electrostatic controlled only by the PERIODIC section in QMMM section")
274 decoupling = .false.
275 END IF
276 IF (decoupling) THEN
277 ! Simple decoupling technique
278 CALL section_vals_val_get(poisson_section, "POISSON_SOLVER", i_val=my_val)
279 SELECT CASE (my_val)
281 multipole_section => section_vals_get_subs_vals(poisson_section, "MULTIPOLE")
282 CASE DEFAULT
283 decoupling = .false.
284 END SELECT
285 END IF
286 cp_ddapc_ewald%do_decoupling = decoupling
287 IF (cp_ddapc_ewald%do_qmmm_periodic_decpl) THEN
288 ! QMMM periodic
289 multipole_section => section_vals_get_subs_vals(qmmm_per_section, "MULTIPOLE")
290 END IF
291 cp_ddapc_ewald%ewald_section => multipole_section
292 IF (cp_ddapc_ewald%do_decoupling .OR. cp_ddapc_ewald%do_qmmm_periodic_decpl) THEN
293 ! Do we do the calculation analytically or interpolating the g-space factor?
294 CALL section_vals_val_get(multipole_section, "ANALYTICAL_GTERM", l_val=analyt)
295 IF (.NOT. analyt) THEN
296 CALL section_vals_val_get(multipole_section, "ngrids", i_vals=ngrids)
297 npts = ngrids
298
299 NULLIFY (lg, gx, gy, gz)
300 hmat = qm_cell%hmat
301 CALL eval_lg(multipole_section, hmat, lg, gx, gy, gz)
302 grid_print_section => section_vals_get_subs_vals(force_env_section, "PRINT%GRID_INFORMATION")
303 CALL setup_ewald_spline(pw_grid=cp_ddapc_ewald%pw_grid_qm, pw_pool=cp_ddapc_ewald%pw_pool_qm, &
304 coeff=cp_ddapc_ewald%coeff_qm, lg=lg, gx=gx, gy=gy, gz=gz, hmat=hmat, npts=npts, &
305 param_section=multipole_section, tag="ddapc", &
306 print_section=grid_print_section)
307 DEALLOCATE (lg)
308 DEALLOCATE (gx)
309 DEALLOCATE (gy)
310 DEALLOCATE (gz)
311 IF (cp_ddapc_ewald%do_qmmm_periodic_decpl) THEN
312 NULLIFY (mm_cell, dummy_cell)
313 cell_section => section_vals_get_subs_vals(subsys_section, "CELL")
314 CALL read_cell(mm_cell, dummy_cell, cell_section=cell_section, para_env=para_env)
315 hmat = mm_cell%hmat
316 CALL eval_lg(multipole_section, hmat, lg, gx, gy, gz)
317 grid_print_section => section_vals_get_subs_vals(force_env_section, "PRINT%GRID_INFORMATION")
318 CALL setup_ewald_spline(pw_grid=cp_ddapc_ewald%pw_grid_mm, pw_pool=cp_ddapc_ewald%pw_pool_mm, &
319 coeff=cp_ddapc_ewald%coeff_mm, lg=lg, gx=gx, gy=gy, gz=gz, hmat=hmat, npts=npts, &
320 param_section=multipole_section, tag="ddapc", &
321 print_section=grid_print_section)
322 DEALLOCATE (lg)
323 DEALLOCATE (gx)
324 DEALLOCATE (gy)
325 DEALLOCATE (gz)
326 CALL cell_release(dummy_cell)
327 CALL cell_release(mm_cell)
328 END IF
329 END IF
330 END IF
331 END SUBROUTINE cp_ddapc_ewald_create
332
333! **************************************************************************************************
334!> \brief ...
335!> \param multipole_section ...
336!> \param hmat ...
337!> \param LG ...
338!> \param gx ...
339!> \param gy ...
340!> \param gz ...
341!> \par History
342!> none
343!> \author Teodoro Laino - [tlaino]
344! **************************************************************************************************
345 SUBROUTINE eval_lg(multipole_section, hmat, LG, gx, gy, gz)
346 TYPE(section_vals_type), POINTER :: multipole_section
347 REAL(kind=dp), INTENT(IN) :: hmat(3, 3)
348 REAL(kind=dp), DIMENSION(:), POINTER :: lg, gx, gy, gz
349
350 INTEGER :: i, k1, k2, k3, n_rep, ndim, nmax1, &
351 nmax2, nmax3
352 REAL(kind=dp) :: alpha, deth, eps, fac, fs, fvec(3), &
353 galpha, gsq, gsqi, rcut, tol, tol1
354
355 deth = abs(det_3x3(hmat))
356 rcut = min(hmat(1, 1), hmat(2, 2), hmat(3, 3))/2.0_dp
357 CALL section_vals_val_get(multipole_section, "RCUT", n_rep_val=n_rep)
358 IF (n_rep == 1) CALL section_vals_val_get(multipole_section, "RCUT", r_val=rcut)
359 CALL section_vals_val_get(multipole_section, "EWALD_PRECISION", r_val=eps)
360 eps = min(abs(eps), 0.5_dp)
361 tol = sqrt(abs(log(eps*rcut)))
362 alpha = sqrt(abs(log(eps*rcut*tol)))/rcut
363 galpha = 1.0_dp/(4.0_dp*alpha*alpha)
364 tol1 = sqrt(-log(eps*rcut*(2.0_dp*tol*alpha)**2))
365 nmax1 = nint(0.25_dp + hmat(1, 1)*alpha*tol1/pi)
366 nmax2 = nint(0.25_dp + hmat(2, 2)*alpha*tol1/pi)
367 nmax3 = nint(0.25_dp + hmat(3, 3)*alpha*tol1/pi)
368 fac = 1.e0_dp/deth
369 fvec = 2.0_dp*pi/[hmat(1, 1), hmat(2, 2), hmat(3, 3)]
370 ndim = (nmax1 + 1)*(2*nmax2 + 1)*(2*nmax3 + 1) - 1
371 ALLOCATE (lg(ndim))
372 ALLOCATE (gx(ndim))
373 ALLOCATE (gy(ndim))
374 ALLOCATE (gz(ndim))
375
376 i = 0
377 DO k1 = 0, nmax1
378 DO k2 = -nmax2, nmax2
379 DO k3 = -nmax3, nmax3
380 IF (k1 == 0 .AND. k2 == 0 .AND. k3 == 0) cycle
381 i = i + 1
382 fs = 2.0_dp; IF (k1 == 0) fs = 1.0_dp
383 gx(i) = fvec(1)*real(k1, kind=dp)
384 gy(i) = fvec(2)*real(k2, kind=dp)
385 gz(i) = fvec(3)*real(k3, kind=dp)
386 gsq = gx(i)*gx(i) + gy(i)*gy(i) + gz(i)*gz(i)
387 gsqi = fs/gsq
388 lg(i) = fac*gsqi*exp(-galpha*gsq)
389 END DO
390 END DO
391 END DO
392
393 END SUBROUTINE eval_lg
394
395! **************************************************************************************************
396!> \brief ...
397!> \param cp_ddapc_ewald ...
398!> \par History
399!> none
400!> \author Teodoro Laino - [tlaino]
401! **************************************************************************************************
402 SUBROUTINE cp_ddapc_ewald_release(cp_ddapc_ewald)
403 TYPE(cp_ddapc_ewald_type), POINTER :: cp_ddapc_ewald
404
405 IF (ASSOCIATED(cp_ddapc_ewald)) THEN
406 IF (ASSOCIATED(cp_ddapc_ewald%coeff_qm)) THEN
407 CALL cp_ddapc_ewald%pw_pool_qm%give_back_pw(cp_ddapc_ewald%coeff_qm)
408 DEALLOCATE (cp_ddapc_ewald%coeff_qm)
409 END IF
410 IF (ASSOCIATED(cp_ddapc_ewald%coeff_mm)) THEN
411 CALL cp_ddapc_ewald%pw_pool_mm%give_back_pw(cp_ddapc_ewald%coeff_mm)
412 DEALLOCATE (cp_ddapc_ewald%coeff_mm)
413 END IF
414 IF (ASSOCIATED(cp_ddapc_ewald%pw_pool_qm)) THEN
415 CALL pw_pool_release(cp_ddapc_ewald%pw_pool_qm)
416 cpassert(.NOT. ASSOCIATED(cp_ddapc_ewald%pw_pool_qm))
417 END IF
418 IF (ASSOCIATED(cp_ddapc_ewald%pw_pool_mm)) THEN
419 CALL pw_pool_release(cp_ddapc_ewald%pw_pool_mm)
420 cpassert(.NOT. ASSOCIATED(cp_ddapc_ewald%pw_pool_mm))
421 END IF
422 IF (ASSOCIATED(cp_ddapc_ewald%pw_grid_qm)) THEN
423 CALL pw_grid_release(cp_ddapc_ewald%pw_grid_qm)
424 cpassert(.NOT. ASSOCIATED(cp_ddapc_ewald%pw_grid_qm))
425 END IF
426 IF (ASSOCIATED(cp_ddapc_ewald%pw_grid_mm)) THEN
427 CALL pw_grid_release(cp_ddapc_ewald%pw_grid_mm)
428 cpassert(.NOT. ASSOCIATED(cp_ddapc_ewald%pw_grid_mm))
429 END IF
430 DEALLOCATE (cp_ddapc_ewald)
431 END IF
432
433 END SUBROUTINE cp_ddapc_ewald_release
434
435END MODULE cp_ddapc_types
Handles all functions related to the CELL.
recursive subroutine, public read_cell(cell, cell_ref, use_ref_cell, cell_section, topology_section, check_for_ref, para_env)
...
Handles all functions related to the CELL.
Definition cell_types.F:15
subroutine, public cell_release(cell)
releases the given cell (see doc/ReferenceCounting.html)
Definition cell_types.F:564
contains information regarding the decoupling/recoupling method of Bloechl
subroutine, public solvation_ddapc_pot(solvation_section, particle_set, m, radii)
Evaluates the electrostatic potential due to a simple solvation model Spherical cavity in a dieletric...
recursive subroutine, public ewald_ddapc_pot(cp_para_env, coeff, factor, cell, multipole_section, particle_set, m, radii)
Evaluates the Ewald term E2 and E3 energy term for the decoupling/coupling of periodic images.
subroutine, public ddapc_eval_ami(gami, c0, gfunc, w, particle_set, gcut, rho_tot_g, radii, iw, vol)
Computes the inverse AmI of the Am matrix.
subroutine, public ddapc_eval_gfunc(gfunc, w, gcut, rho_tot_g, radii)
...
contains information regarding the decoupling/recoupling method of Bloechl
subroutine, public cp_ddapc_release(cp_ddapc_env)
...
subroutine, public cp_ddapc_ewald_create(cp_ddapc_ewald, qmmm_decoupl, qm_cell, force_env_section, subsys_section, para_env)
...
subroutine, public cp_ddapc_ewald_release(cp_ddapc_ewald)
...
subroutine, public cp_ddapc_create(cp_para_env, cp_ddapc_env, cp_ddapc_ewald, particle_set, radii, cell, super_cell, rho_tot_g, gcut, iw2, vol, force_env_section)
...
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...
logical function, public cp_printkey_is_on(iteration_info, print_key)
returns true if the printlevel activates this printkey does not look if this iteration it should be p...
Setting up the Spline coefficients used to Interpolate the G-Term in Ewald sums.
subroutine, public setup_ewald_spline(pw_grid, pw_pool, coeff, lg, gx, gy, gz, hmat, npts, param_section, tag, print_section)
Setup of the G-space Ewald Term Spline Coefficients.
objects that represent the structure of input sections and the data contained in an input section
recursive type(section_vals_type) function, pointer, public section_vals_get_subs_vals(section_vals, subsection_name, i_rep_section, can_return_null)
returns the values of the requested subsection
subroutine, public section_vals_get(section_vals, ref_count, n_repetition, n_subs_vals_rep, section, explicit)
returns various attributes about the section_vals
subroutine, public section_vals_val_get(section_vals, keyword_name, i_rep_section, i_rep_val, n_rep_val, val, l_val, i_val, r_val, c_val, l_vals, i_vals, r_vals, c_vals, explicit)
returns the requested value
Defines the basic variable types.
Definition kinds.F:23
integer, parameter, public dp
Definition kinds.F:34
Definition of mathematical constants and functions.
real(kind=dp), parameter, public pi
real(kind=dp), dimension(0:maxfac), parameter, public fac
Collection of simple mathematical functions and subroutines.
Definition mathlib.F:15
Interface to the message passing library MPI.
Define the data structure for the particle information.
This module defines the grid data type and some basic operations on it.
Definition pw_grids.F:36
subroutine, public pw_grid_release(pw_grid)
releases the given pw grid
Definition pw_grids.F:2163
functions related to the poisson solver on regular grids
integer, parameter, public pw_poisson_multipole
Manages a pool of grids (to be used for example as tmp objects), but can also be used to instantiate ...
subroutine, public pw_pool_release(pool)
releases the given pool (see cp2k/doc/ReferenceCounting.html)
Type defining parameters related to the simulation cell.
Definition cell_types.F:60
type of a logger, at the moment it contains just a print level starting at which level it should be l...
stores all the informations relevant to an mpi environment
Manages a pool of grids (to be used for example as tmp objects), but can also be used to instantiate ...