(git:ed6f26b)
Loading...
Searching...
No Matches
xtb_qresp.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 Calculation of charge response in xTB (EEQ only)
10!> Reference: Stefan Grimme, Christoph Bannwarth, Philip Shushkov
11!> JCTC 13, 1989-2009, (2017)
12!> DOI: 10.1021/acs.jctc.7b00118
13!> \author JGH
14! **************************************************************************************************
16 USE ai_contraction, ONLY: block_add,&
18 USE ai_overlap, ONLY: overlap_ab
25 USE cp_dbcsr_api, ONLY: dbcsr_add,&
30 USE eeq_input, ONLY: eeq_solver_type
32 USE kinds, ONLY: dp
33 USE kpoint_types, ONLY: get_kpoint_info,&
36 USE orbital_pointers, ONLY: ncoset
47 USE qs_kind_types, ONLY: get_qs_kind,&
49 USE qs_ks_types, ONLY: get_ks_env,&
57 USE qs_rho_types, ONLY: qs_rho_get,&
59 USE xtb_eeq, ONLY: xtb_eeq_calculation,&
61 USE xtb_hcore, ONLY: gfn0_huckel,&
63 USE xtb_types, ONLY: get_xtb_atom_param,&
65#include "./base/base_uses.f90"
66
67 IMPLICIT NONE
68
69 PRIVATE
70
71 CHARACTER(len=*), PARAMETER, PRIVATE :: moduleN = 'xtb_qresp'
72
73 PUBLIC :: build_xtb_qresp
74
75CONTAINS
76
77! **************************************************************************************************
78!> \brief ...
79!> \param qs_env ...
80!> \param qresp ...
81! **************************************************************************************************
82 SUBROUTINE build_xtb_qresp(qs_env, qresp)
83
84 TYPE(qs_environment_type), POINTER :: qs_env
85 REAL(kind=dp), DIMENSION(:), INTENT(INOUT) :: qresp
86
87 INTEGER :: gfn_type
88 TYPE(dft_control_type), POINTER :: dft_control
89
90 CALL get_qs_env(qs_env=qs_env, dft_control=dft_control)
91 gfn_type = dft_control%qs_control%xtb_control%gfn_type
92
93 qresp = 0.0_dp
94 SELECT CASE (gfn_type)
95 CASE (0)
96 CALL build_gfn0_qresp(qs_env, qresp)
97 CASE (1)
98 cpabort("QRESP: gfn_type = 1 not available")
99 CASE (2)
100 cpabort("QRESP: gfn_type = 2 not available")
101 CASE DEFAULT
102 cpabort("QRESP: Unknown gfn_type")
103 END SELECT
104
105 END SUBROUTINE build_xtb_qresp
106
107! **************************************************************************************************
108!> \brief ...
109!> \param qs_env ...
110!> \param qresp ...
111! **************************************************************************************************
112 SUBROUTINE build_gfn0_qresp(qs_env, qresp)
113
114 TYPE(qs_environment_type), POINTER :: qs_env
115 REAL(kind=dp), DIMENSION(:), INTENT(INOUT) :: qresp
116
117 CHARACTER(LEN=*), PARAMETER :: routinen = 'build_gfn0_qresp'
118
119 INTEGER :: atom_a, atom_b, handle, i, iatom, ic, icol, ikind, img, irow, iset, j, jatom, &
120 jkind, jset, ldsab, lmaxa, lmaxb, maxder, n1, n2, na, natom, natorb_a, natorb_b, nb, &
121 ncoa, ncob, nderivatives, nimg, nkind, nsa, nsb, nseta, nsetb, sgfa, sgfb, za, zb
122 INTEGER, ALLOCATABLE, DIMENSION(:) :: atom_of_kind, kind_of
123 INTEGER, DIMENSION(25) :: laoa, laob, naoa, naob
124 INTEGER, DIMENSION(3) :: cell
125 INTEGER, DIMENSION(:), POINTER :: la_max, la_min, lb_max, lb_min, npgfa, &
126 npgfb, nsgfa, nsgfb
127 INTEGER, DIMENSION(:, :), POINTER :: first_sgfa, first_sgfb
128 INTEGER, DIMENSION(:, :, :), POINTER :: cell_to_index
129 LOGICAL :: defined, diagblock, do_nonbonded, found
130 REAL(kind=dp) :: dr, drx, eeq_energy, ef_energy, etaa, &
131 etab, f2, fqa, fqb, hij, qlambda, &
132 rcova, rcovab, rcovb, rrab
133 REAL(kind=dp), ALLOCATABLE, DIMENSION(:) :: charges, cnumbers, dcharges
134 REAL(kind=dp), ALLOCATABLE, DIMENSION(:, :) :: dhuckel, dqhuckel, huckel, owork
135 REAL(kind=dp), ALLOCATABLE, DIMENSION(:, :, :) :: oint, sint
136 REAL(kind=dp), ALLOCATABLE, DIMENSION(:, :, :, :) :: kijab
137 REAL(kind=dp), DIMENSION(3) :: rij
138 REAL(kind=dp), DIMENSION(5) :: hena, henb, kpolya, kpolyb, pia, pib
139 REAL(kind=dp), DIMENSION(:), POINTER :: set_radius_a, set_radius_b
140 REAL(kind=dp), DIMENSION(:, :), POINTER :: pblock, rpgfa, rpgfb, scon_a, scon_b, &
141 zeta, zetb
142 TYPE(atomic_kind_type), DIMENSION(:), POINTER :: atomic_kind_set
143 TYPE(cp_logger_type), POINTER :: logger
144 TYPE(dbcsr_p_type), DIMENSION(:, :), POINTER :: matrix_p, matrix_w
145 TYPE(dcnum_type), ALLOCATABLE, DIMENSION(:) :: dcnum
146 TYPE(dft_control_type), POINTER :: dft_control
147 TYPE(eeq_solver_type) :: eeq_sparam
148 TYPE(gto_basis_set_p_type), DIMENSION(:), POINTER :: basis_set_list
149 TYPE(gto_basis_set_type), POINTER :: basis_set_a, basis_set_b
150 TYPE(kpoint_type), POINTER :: kpoints
151 TYPE(mp_para_env_type), POINTER :: para_env
153 DIMENSION(:), POINTER :: nl_iterator
154 TYPE(neighbor_list_set_p_type), DIMENSION(:), &
155 POINTER :: sab_orb
156 TYPE(particle_type), DIMENSION(:), POINTER :: particle_set
157 TYPE(qs_dispersion_type), POINTER :: dispersion_env
158 TYPE(qs_energy_type), POINTER :: energy
159 TYPE(qs_kind_type), DIMENSION(:), POINTER :: qs_kind_set
160 TYPE(qs_ks_env_type), POINTER :: ks_env
161 TYPE(qs_rho_type), POINTER :: rho
162 TYPE(xtb_atom_type), POINTER :: xtb_atom_a, xtb_atom_b
163 TYPE(xtb_control_type), POINTER :: xtb_control
164
165 CALL timeset(routinen, handle)
166
167 NULLIFY (logger)
168 logger => cp_get_default_logger()
169
170 NULLIFY (matrix_p, atomic_kind_set, qs_kind_set, sab_orb, ks_env)
171 CALL get_qs_env(qs_env=qs_env, &
172 ks_env=ks_env, &
173 energy=energy, &
174 atomic_kind_set=atomic_kind_set, &
175 qs_kind_set=qs_kind_set, &
176 para_env=para_env, &
177 dft_control=dft_control, &
178 sab_orb=sab_orb)
179
180 nkind = SIZE(atomic_kind_set)
181 xtb_control => dft_control%qs_control%xtb_control
182 do_nonbonded = xtb_control%do_nonbonded
183 nimg = dft_control%nimages
184 nderivatives = 0
185 maxder = ncoset(nderivatives)
186
187 NULLIFY (particle_set)
188 CALL get_qs_env(qs_env=qs_env, particle_set=particle_set)
189 natom = SIZE(particle_set)
190 CALL get_atomic_kind_set(atomic_kind_set=atomic_kind_set, &
191 atom_of_kind=atom_of_kind, kind_of=kind_of)
192
193 NULLIFY (rho, matrix_w)
194 CALL get_qs_env(qs_env=qs_env, rho=rho)
195 CALL qs_rho_get(rho, rho_ao_kp=matrix_p)
196
197 IF (SIZE(matrix_p, 1) == 2) THEN
198 DO img = 1, nimg
199 CALL dbcsr_add(matrix_p(1, img)%matrix, matrix_p(2, img)%matrix, &
200 alpha_scalar=1.0_dp, beta_scalar=1.0_dp)
201 CALL dbcsr_add(matrix_w(1, img)%matrix, matrix_w(2, img)%matrix, &
202 alpha_scalar=1.0_dp, beta_scalar=1.0_dp)
203 END DO
204 END IF
205
206 NULLIFY (cell_to_index)
207 IF (nimg > 1) THEN
208 CALL get_ks_env(ks_env=ks_env, kpoints=kpoints)
209 CALL get_kpoint_info(kpoint=kpoints, cell_to_index=cell_to_index)
210 END IF
211
212 ! set up basis set lists
213 ALLOCATE (basis_set_list(nkind))
214 CALL basis_set_list_setup(basis_set_list, "ORB", qs_kind_set)
215
216 ! Calculate coordination numbers
217 ! needed for effective atomic energy levels
218 ! code taken from D3 dispersion energy
219 CALL cnumber_init(qs_env, cnumbers, dcnum, 2, .true.)
220
221 ALLOCATE (charges(natom), dcharges(natom))
222 charges = 0.0_dp
223 CALL xtb_eeq_calculation(qs_env, charges, cnumbers, eeq_sparam, eeq_energy, ef_energy, qlambda)
224 dcharges = qlambda/real(para_env%num_pe, kind=dp)
225
226 CALL get_qs_env(qs_env=qs_env, dispersion_env=dispersion_env)
227 IF (dispersion_env%pp_type == vdw_pairpot_dftd4 .AND. dispersion_env%ext_charges) THEN
228 IF (ASSOCIATED(dispersion_env%dcharges)) THEN
229 dcharges(1:natom) = dcharges(1:natom) + dispersion_env%dcharges(1:natom)
230 ELSE
231 cpwarn("gfn0-xTB variational dipole DFTD4 contribution missing")
232 END IF
233 END IF
234
235 ! Calculate Huckel parameters
236 CALL gfn0_huckel(qs_env, cnumbers, charges, huckel, dhuckel, dqhuckel, .true.)
237
238 ! Calculate KAB parameters and electronegativity correction
239 CALL gfn0_kpair(qs_env, kijab)
240
241 ! loop over all atom pairs with a non-zero overlap (sab_orb)
242 CALL neighbor_list_iterator_create(nl_iterator, sab_orb)
243 DO WHILE (neighbor_list_iterate(nl_iterator) == 0)
244 CALL get_iterator_info(nl_iterator, ikind=ikind, jkind=jkind, &
245 iatom=iatom, jatom=jatom, r=rij, cell=cell)
246 CALL get_qs_kind(qs_kind_set(ikind), xtb_parameter=xtb_atom_a)
247 CALL get_xtb_atom_param(xtb_atom_a, defined=defined, natorb=natorb_a)
248 IF (.NOT. defined .OR. natorb_a < 1) cycle
249 CALL get_qs_kind(qs_kind_set(jkind), xtb_parameter=xtb_atom_b)
250 CALL get_xtb_atom_param(xtb_atom_b, defined=defined, natorb=natorb_b)
251 IF (.NOT. defined .OR. natorb_b < 1) cycle
252
253 dr = sqrt(sum(rij(:)**2))
254
255 ! atomic parameters
256 CALL get_xtb_atom_param(xtb_atom_a, z=za, nao=naoa, lao=laoa, rcov=rcova, eta=etaa, &
257 lmax=lmaxa, nshell=nsa, kpoly=kpolya, hen=hena)
258 CALL get_xtb_atom_param(xtb_atom_b, z=zb, nao=naob, lao=laob, rcov=rcovb, eta=etab, &
259 lmax=lmaxb, nshell=nsb, kpoly=kpolyb, hen=henb)
260
261 IF (nimg == 1) THEN
262 ic = 1
263 ELSE
264 ic = cell_to_index(cell(1), cell(2), cell(3))
265 cpassert(ic > 0)
266 END IF
267
268 icol = max(iatom, jatom)
269 irow = min(iatom, jatom)
270
271 NULLIFY (pblock)
272 CALL dbcsr_get_block_p(matrix=matrix_p(1, ic)%matrix, &
273 row=irow, col=icol, block=pblock, found=found)
274 cpassert(ASSOCIATED(pblock))
275
276 ! overlap
277 basis_set_a => basis_set_list(ikind)%gto_basis_set
278 IF (.NOT. ASSOCIATED(basis_set_a)) cycle
279 basis_set_b => basis_set_list(jkind)%gto_basis_set
280 IF (.NOT. ASSOCIATED(basis_set_b)) cycle
281 atom_a = atom_of_kind(iatom)
282 atom_b = atom_of_kind(jatom)
283 ! basis ikind
284 first_sgfa => basis_set_a%first_sgf
285 la_max => basis_set_a%lmax
286 la_min => basis_set_a%lmin
287 npgfa => basis_set_a%npgf
288 nseta = basis_set_a%nset
289 nsgfa => basis_set_a%nsgf_set
290 rpgfa => basis_set_a%pgf_radius
291 set_radius_a => basis_set_a%set_radius
292 scon_a => basis_set_a%scon
293 zeta => basis_set_a%zet
294 ! basis jkind
295 first_sgfb => basis_set_b%first_sgf
296 lb_max => basis_set_b%lmax
297 lb_min => basis_set_b%lmin
298 npgfb => basis_set_b%npgf
299 nsetb = basis_set_b%nset
300 nsgfb => basis_set_b%nsgf_set
301 rpgfb => basis_set_b%pgf_radius
302 set_radius_b => basis_set_b%set_radius
303 scon_b => basis_set_b%scon
304 zetb => basis_set_b%zet
305
306 ldsab = get_memory_usage(qs_kind_set, "ORB", "ORB")
307 ALLOCATE (oint(ldsab, ldsab, maxder), owork(ldsab, ldsab))
308 ALLOCATE (sint(natorb_a, natorb_b, maxder))
309 sint = 0.0_dp
310
311 DO iset = 1, nseta
312 ncoa = npgfa(iset)*ncoset(la_max(iset))
313 n1 = npgfa(iset)*(ncoset(la_max(iset)) - ncoset(la_min(iset) - 1))
314 sgfa = first_sgfa(1, iset)
315 DO jset = 1, nsetb
316 IF (set_radius_a(iset) + set_radius_b(jset) < dr) cycle
317 ncob = npgfb(jset)*ncoset(lb_max(jset))
318 n2 = npgfb(jset)*(ncoset(lb_max(jset)) - ncoset(lb_min(jset) - 1))
319 sgfb = first_sgfb(1, jset)
320 CALL overlap_ab(la_max(iset), la_min(iset), npgfa(iset), rpgfa(:, iset), zeta(:, iset), &
321 lb_max(jset), lb_min(jset), npgfb(jset), rpgfb(:, jset), zetb(:, jset), &
322 rij, sab=oint(:, :, 1))
323 ! Contraction
324 CALL contraction(oint(:, :, 1), owork, ca=scon_a(:, sgfa:), na=n1, ma=nsgfa(iset), &
325 cb=scon_b(:, sgfb:), nb=n2, mb=nsgfb(jset), fscale=1.0_dp, trans=.false.)
326 CALL block_add("IN", owork, nsgfa(iset), nsgfb(jset), sint(:, :, 1), sgfa, sgfb, trans=.false.)
327 END DO
328 END DO
329
330 ! Calculate Pi = Pia * Pib (Eq. 11)
331 rcovab = rcova + rcovb
332 rrab = sqrt(dr/rcovab)
333 pia(1:nsa) = 1._dp + kpolya(1:nsa)*rrab
334 pib(1:nsb) = 1._dp + kpolyb(1:nsb)*rrab
335
336 ! diagonal block
337 diagblock = .false.
338 IF (iatom == jatom .AND. dr < 0.001_dp) diagblock = .true.
339 !
340 f2 = 1.0_dp
341 IF (iatom /= jatom) f2 = 2.0_dp
342 ! Derivative wrt coordination number
343 fqa = 0.0_dp
344 fqb = 0.0_dp
345 IF (diagblock) THEN
346 DO i = 1, natorb_a
347 na = naoa(i)
348 fqa = fqa + pblock(i, i)*dqhuckel(na, iatom)
349 END DO
350 dcharges(iatom) = dcharges(iatom) + fqa
351 ELSE
352 DO j = 1, natorb_b
353 nb = naob(j)
354 DO i = 1, natorb_a
355 na = naoa(i)
356 hij = 0.5_dp*pia(na)*pib(nb)
357 drx = f2*hij*kijab(i, j, ikind, jkind)*sint(i, j, 1)
358 IF (iatom <= jatom) THEN
359 fqa = fqa + drx*pblock(i, j)*dqhuckel(na, iatom)
360 fqb = fqb + drx*pblock(i, j)*dqhuckel(nb, jatom)
361 ELSE
362 fqa = fqa + drx*pblock(j, i)*dqhuckel(na, iatom)
363 fqb = fqb + drx*pblock(j, i)*dqhuckel(nb, jatom)
364 END IF
365 END DO
366 END DO
367 dcharges(iatom) = dcharges(iatom) + fqa
368 dcharges(jatom) = dcharges(jatom) + fqb
369 END IF
370
371 DEALLOCATE (oint, owork, sint)
372
373 END DO
374 CALL neighbor_list_iterator_release(nl_iterator)
375
376 ! EEQ response
377 CALL para_env%sum(dcharges)
378 CALL xtb_eeq_lagrange(qs_env, dcharges, qresp, eeq_sparam)
379
380 ! deallocate coordination numbers
381 CALL cnumber_release(cnumbers, dcnum, .true.)
382
383 ! deallocate Huckel parameters
384 DEALLOCATE (huckel, dhuckel, dqhuckel)
385 ! deallocate KAB parameters
386 DEALLOCATE (kijab)
387
388 ! deallocate charges
389 DEALLOCATE (charges, dcharges)
390
391 DEALLOCATE (basis_set_list)
392 IF (SIZE(matrix_p, 1) == 2) THEN
393 DO img = 1, nimg
394 CALL dbcsr_add(matrix_p(1, img)%matrix, matrix_p(2, img)%matrix, alpha_scalar=1.0_dp, &
395 beta_scalar=-1.0_dp)
396 END DO
397 END IF
398
399 CALL timestop(handle)
400
401 END SUBROUTINE build_gfn0_qresp
402
403END MODULE xtb_qresp
404
Set of routines to: Contract integrals over primitive Gaussians Decontract (density) matrices Trace m...
Calculation of the overlap integrals over Cartesian Gaussian-type functions.
Definition ai_overlap.F:18
subroutine, public overlap_ab(la_max, la_min, npgfa, rpgfa, zeta, lb_max, lb_min, npgfb, rpgfb, zetb, rab, sab, dab, ddab)
Calculation of the two-center overlap integrals [a|b] over Cartesian Gaussian-type functions....
Definition ai_overlap.F:680
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.
Defines control structures, which contain the parameters and the settings for the DFT-based calculati...
subroutine, public dbcsr_get_block_p(matrix, row, col, block, found, row_size, col_size)
...
subroutine, public dbcsr_add(matrix_a, matrix_b, alpha_scalar, beta_scalar)
...
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
Input definition and setup for EEQ model.
Definition eeq_input.F:12
collects all constants needed in input so that they can be used without circular dependencies
integer, parameter, public vdw_pairpot_dftd4
Defines the basic variable types.
Definition kinds.F:23
integer, parameter, public dp
Definition kinds.F:34
Types and basic routines needed for a kpoint calculation.
subroutine, public get_kpoint_info(kpoint, kp_scheme, nkp_grid, kp_shift, symmetry, verbose, full_grid, use_real_wfn, eps_geo, parallel_group_size, kp_range, nkp, xkp, wkp, para_env, blacs_env_all, para_env_kp, para_env_inter_kp, blacs_env, kp_env, kp_aux_env, mpools, iogrp, nkp_groups, kp_dist, cell_to_index, index_to_cell, sab_nl, sab_nl_nosym)
Retrieve information from a kpoint environment.
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.
Coordination number routines for dispersion pairpotentials.
subroutine, public cnumber_release(cnumbers, dcnum, derivatives)
...
subroutine, public cnumber_init(qs_env, cnumbers, dcnum, ftype, derivatives, disp_env)
...
Definition of disperson types for DFT calculations.
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.
Some utility functions for the calculation of integrals.
subroutine, public basis_set_list_setup(basis_set_list, basis_type, qs_kind_set)
Set up an easy accessible list of the basis sets for all kinds.
Define the quickstep kind type and their sub types.
subroutine, public get_qs_kind(qs_kind, basis_set, basis_type, ncgf, nsgf, all_potential, tnadd_potential, gth_potential, sgp_potential, upf_potential, se_parameter, dftb_parameter, xtb_parameter, dftb3_param, zatom, zeff, elec_conf, mao, lmax_dftb, alpha_core_charge, ccore_charge, core_charge, core_charge_radius, paw_proj_set, paw_atom, hard_radius, hard0_radius, max_rad_local, covalent_radius, vdw_radius, gpw_type_forced, harmonics, max_iso_not0, max_s_harm, grid_atom, ngrid_ang, ngrid_rad, lmax_rho0, dft_plus_u_atom, l_of_dft_plus_u, n_of_dft_plus_u, u_minus_j, u_of_dft_plus_u, j_of_dft_plus_u, alpha_of_dft_plus_u, beta_of_dft_plus_u, j0_of_dft_plus_u, occupation_of_dft_plus_u, dispersion, bs_occupation, magnetization, no_optimize, addel, laddel, naddel, orbitals, max_scf, eps_scf, smear, u_ramping, u_minus_j_target, eps_u_ramping, init_u_ramping_each_scf, reltmat, ghost, floating, name, element_symbol, pao_basis_size, pao_model_file, pao_potentials, pao_descriptors, nelec)
Get attributes of an atomic kind.
subroutine, public get_ks_env(ks_env, v_hartree_rspace, s_mstruct_changed, rho_changed, potential_changed, forces_up_to_date, complex_ks, matrix_h, matrix_h_im, matrix_ks, matrix_ks_im, matrix_vxc, kinetic, matrix_s, matrix_s_ri_aux, matrix_w, matrix_p_mp2, matrix_p_mp2_admm, matrix_h_kp, matrix_h_im_kp, matrix_ks_kp, matrix_vxc_kp, kinetic_kp, matrix_s_kp, matrix_w_kp, matrix_s_ri_aux_kp, matrix_ks_im_kp, rho, rho_xc, vppl, rho_core, rho_nlcc, rho_nlcc_g, vee, neighbor_list_id, sab_orb, sab_all, sac_ae, sac_ppl, sac_lri, sap_ppnl, sap_oce, sab_lrc, sab_se, sab_xtbe, sab_tbe, sab_core, sab_xb, sab_xtb_pp, sab_xtb_nonbond, sab_vdw, sab_scp, sab_almo, sab_kp, sab_kp_nosym, task_list, task_list_soft, kpoints, do_kpoints, atomic_kind_set, qs_kind_set, cell, cell_ref, use_ref_cell, particle_set, energy, force, local_particles, local_molecules, molecule_kind_set, molecule_set, subsys, cp_subsys, virial, results, atprop, nkind, natom, dft_control, dbcsr_dist, distribution_2d, pw_env, para_env, blacs_env, nelectron_total, nelectron_spin)
...
Define the neighbor list data types and the corresponding functionality.
subroutine, public neighbor_list_iterator_create(iterator_set, nl, search, nthread)
Neighbor list iterator functions.
subroutine, public neighbor_list_iterator_release(iterator_set)
...
integer function, public neighbor_list_iterate(iterator_set, mepos)
...
subroutine, public get_iterator_info(iterator_set, mepos, ikind, jkind, nkind, ilist, nlist, inode, nnode, iatom, jatom, r, cell)
...
superstucture that hold various representations of the density and keeps track of which ones are vali...
subroutine, public qs_rho_get(rho_struct, rho_ao, rho_ao_im, rho_ao_kp, rho_ao_im_kp, rho_r, drho_r, rho_g, drho_g, tau_r, tau_g, rho_r_valid, drho_r_valid, rho_g_valid, drho_g_valid, tau_r_valid, tau_g_valid, tot_rho_r, tot_rho_g, rho_r_sccs, soft_valid, complex_rho_ao)
returns info about the density described by this object. If some representation is not available an e...
Calculation of charge equilibration in xTB.
Definition xtb_eeq.F:12
subroutine, public xtb_eeq_lagrange(qs_env, dcharges, qlagrange, eeq_sparam)
...
Definition xtb_eeq.F:507
subroutine, public xtb_eeq_calculation(qs_env, charges, cnumbers, eeq_sparam, eeq_energy, ef_energy, lambda)
...
Definition xtb_eeq.F:79
Calculation of EHT matrix elements in xTB Reference: Stefan Grimme, Christoph Bannwarth,...
Definition xtb_hcore.F:15
subroutine, public gfn0_kpair(qs_env, kijab)
...
Definition xtb_hcore.F:203
subroutine, public gfn0_huckel(qs_env, cnumbers, charges, huckel, dhuckel, dqhuckel, calculate_forces)
...
Definition xtb_hcore.F:57
Calculation of charge response in xTB (EEQ only) Reference: Stefan Grimme, Christoph Bannwarth,...
Definition xtb_qresp.F:15
subroutine, public build_xtb_qresp(qs_env, qresp)
...
Definition xtb_qresp.F:83
Definition of the xTB parameter types.
Definition xtb_types.F:20
subroutine, public get_xtb_atom_param(xtb_parameter, symbol, aname, typ, defined, z, zeff, natorb, lmax, nao, lao, rcut, rcov, kx, eta, xgamma, alpha, zneff, nshell, nval, lval, kpoly, kappa, hen, zeta, xi, kappa0, alpg, occupation, electronegativity, chmax, en, kqat2, kcn, kq)
...
Definition xtb_types.F:199
Provides all information about an atomic kind.
type of a logger, at the moment it contains just a print level starting at which level it should be l...
Contains information about kpoints.
stores all the informations relevant to an mpi environment
Provides all information about a quickstep kind.
calculation environment to calculate the ks matrix, holds all the needed vars. assumes that the core ...
keeps the density in various representations, keeping track of which ones are valid.