(git:374b731)
Loading...
Searching...
No Matches
qs_efield_local.F
Go to the documentation of this file.
1!--------------------------------------------------------------------------------------------------!
2! CP2K: A general program to perform molecular dynamics simulations !
3! Copyright 2000-2024 CP2K developers group <https://cp2k.org> !
4! !
5! SPDX-License-Identifier: GPL-2.0-or-later !
6!--------------------------------------------------------------------------------------------------!
7
8! **************************************************************************************************
9!> \brief Calculates the energy contribution and the mo_derivative of
10!> a static electric field (nonperiodic)
11!> \par History
12!> none
13!> \author JGH (05.2015)
14! **************************************************************************************************
16 USE ai_moments, ONLY: dipole_force
22 USE cell_types, ONLY: cell_type,&
23 pbc
25 USE dbcsr_api, ONLY: dbcsr_add,&
26 dbcsr_copy,&
27 dbcsr_dot,&
28 dbcsr_get_block_p,&
29 dbcsr_p_type,&
30 dbcsr_set
31 USE kinds, ONLY: dp
33 USE orbital_pointers, ONLY: ncoset
40 USE qs_kind_types, ONLY: get_qs_kind,&
52 USE qs_rho_types, ONLY: qs_rho_get,&
54#include "./base/base_uses.f90"
55
56 IMPLICIT NONE
57
58 PRIVATE
59
60 CHARACTER(len=*), PARAMETER, PRIVATE :: moduleN = 'qs_efield_local'
61
62 ! *** Public subroutines ***
63
65
66! **************************************************************************************************
67
68CONTAINS
69
70! **************************************************************************************************
71
72! **************************************************************************************************
73!> \brief ...
74!> \param qs_env ...
75!> \param just_energy ...
76!> \param calculate_forces ...
77! **************************************************************************************************
78 SUBROUTINE qs_efield_local_operator(qs_env, just_energy, calculate_forces)
79
80 TYPE(qs_environment_type), POINTER :: qs_env
81 LOGICAL, INTENT(IN) :: just_energy, calculate_forces
82
83 CHARACTER(LEN=*), PARAMETER :: routinen = 'qs_efield_local_operator'
84
85 INTEGER :: handle
86 LOGICAL :: s_mstruct_changed
87 REAL(dp), DIMENSION(3) :: rpoint
88 TYPE(dft_control_type), POINTER :: dft_control
89
90 CALL timeset(routinen, handle)
91
92 NULLIFY (dft_control)
93 CALL get_qs_env(qs_env, s_mstruct_changed=s_mstruct_changed, &
94 dft_control=dft_control)
95
96 IF (dft_control%apply_efield) THEN
97 rpoint = 0.0_dp
98 IF (s_mstruct_changed) CALL qs_efield_integrals(qs_env, rpoint)
99 CALL qs_efield_mo_derivatives(qs_env, rpoint, just_energy, calculate_forces)
100 END IF
101
102 CALL timestop(handle)
103
104 END SUBROUTINE qs_efield_local_operator
105
106! **************************************************************************************************
107!> \brief ...
108!> \param qs_env ...
109!> \param rpoint ...
110! **************************************************************************************************
111 SUBROUTINE qs_efield_integrals(qs_env, rpoint)
112
113 TYPE(qs_environment_type), POINTER :: qs_env
114 REAL(dp), DIMENSION(3), INTENT(IN) :: rpoint
115
116 CHARACTER(LEN=*), PARAMETER :: routinen = 'qs_efield_integrals'
117
118 INTEGER :: handle, i
119 TYPE(dbcsr_p_type), DIMENSION(:), POINTER :: dipmat, matrix_s
120 TYPE(dft_control_type), POINTER :: dft_control
121 TYPE(efield_berry_type), POINTER :: efield
122
123 CALL timeset(routinen, handle)
124 cpassert(ASSOCIATED(qs_env))
125
126 CALL get_qs_env(qs_env=qs_env, dft_control=dft_control)
127 NULLIFY (matrix_s)
128 CALL get_qs_env(qs_env=qs_env, efield=efield, matrix_s=matrix_s)
129 CALL init_efield_matrices(efield)
130 ALLOCATE (dipmat(3))
131 DO i = 1, 3
132 ALLOCATE (dipmat(i)%matrix)
133 CALL dbcsr_copy(dipmat(i)%matrix, matrix_s(1)%matrix, 'DIP MAT')
134 CALL dbcsr_set(dipmat(i)%matrix, 0.0_dp)
135 END DO
136 CALL build_local_moment_matrix(qs_env, dipmat, 1, rpoint)
137 CALL set_efield_matrices(efield=efield, dipmat=dipmat)
138 CALL set_qs_env(qs_env=qs_env, efield=efield)
139 CALL timestop(handle)
140
141 END SUBROUTINE qs_efield_integrals
142
143! **************************************************************************************************
144!> \brief ...
145!> \param qs_env ...
146!> \param rpoint ...
147!> \param just_energy ...
148!> \param calculate_forces ...
149! **************************************************************************************************
150 SUBROUTINE qs_efield_mo_derivatives(qs_env, rpoint, just_energy, calculate_forces)
151 TYPE(qs_environment_type), POINTER :: qs_env
152 REAL(kind=dp), DIMENSION(3), INTENT(IN) :: rpoint
153 LOGICAL :: just_energy, calculate_forces
154
155 CHARACTER(LEN=*), PARAMETER :: routinen = 'qs_efield_mo_derivatives'
156
157 INTEGER :: atom_a, atom_b, handle, i, ia, iatom, icol, idir, ikind, irow, iset, ispin, &
158 jatom, jkind, jset, ldab, natom, ncoa, ncob, nkind, nseta, nsetb, sgfa, sgfb
159 INTEGER, ALLOCATABLE, DIMENSION(:) :: atom_of_kind
160 INTEGER, DIMENSION(:), POINTER :: la_max, la_min, lb_max, lb_min, npgfa, &
161 npgfb, nsgfa, nsgfb
162 INTEGER, DIMENSION(:, :), POINTER :: first_sgfa, first_sgfb
163 LOGICAL :: found, trans
164 REAL(dp) :: charge, ci(3), dab, ener_field, fdir, &
165 fieldpol(3), tmp
166 REAL(dp), DIMENSION(3) :: ra, rab, rac, rbc, ria
167 REAL(dp), DIMENSION(3, 3) :: forcea, forceb
168 REAL(dp), DIMENSION(:, :), POINTER :: p_block_a, p_block_b, pblock, pmat, work
169 REAL(kind=dp), DIMENSION(:), POINTER :: set_radius_a, set_radius_b
170 REAL(kind=dp), DIMENSION(:, :), POINTER :: rpgfa, rpgfb, sphi_a, sphi_b, zeta, zetb
171 TYPE(atomic_kind_type), DIMENSION(:), POINTER :: atomic_kind_set
172 TYPE(cell_type), POINTER :: cell
173 TYPE(dbcsr_p_type), DIMENSION(:), POINTER :: dipmat, matrix_ks, matrix_p
174 TYPE(dft_control_type), POINTER :: dft_control
175 TYPE(efield_berry_type), POINTER :: efield
176 TYPE(gto_basis_set_p_type), DIMENSION(:), POINTER :: basis_set_list
177 TYPE(gto_basis_set_type), POINTER :: basis_set_a, basis_set_b
178 TYPE(mp_para_env_type), POINTER :: para_env
180 DIMENSION(:), POINTER :: nl_iterator
181 TYPE(neighbor_list_set_p_type), DIMENSION(:), &
182 POINTER :: sab_orb
183 TYPE(particle_type), DIMENSION(:), POINTER :: particle_set
184 TYPE(qs_energy_type), POINTER :: energy
185 TYPE(qs_force_type), DIMENSION(:), POINTER :: force
186 TYPE(qs_kind_type), DIMENSION(:), POINTER :: qs_kind_set
187 TYPE(qs_kind_type), POINTER :: qs_kind
188 TYPE(qs_rho_type), POINTER :: rho
189
190 CALL timeset(routinen, handle)
191
192 CALL get_qs_env(qs_env, dft_control=dft_control, cell=cell, particle_set=particle_set)
193 CALL get_qs_env(qs_env=qs_env, qs_kind_set=qs_kind_set, &
194 efield=efield, energy=energy, para_env=para_env, sab_orb=sab_orb)
195
196 fieldpol = dft_control%efield_fields(1)%efield%polarisation* &
197 dft_control%efield_fields(1)%efield%strength
198
199 ! nuclear contribution
200 natom = SIZE(particle_set)
201 IF (calculate_forces) THEN
202 CALL get_qs_env(qs_env=qs_env, atomic_kind_set=atomic_kind_set, force=force)
203 CALL get_atomic_kind_set(atomic_kind_set, atom_of_kind=atom_of_kind)
204 END IF
205 ci = 0.0_dp
206 DO ia = 1, natom
207 CALL get_atomic_kind(particle_set(ia)%atomic_kind, kind_number=ikind)
208 CALL get_qs_kind(qs_kind_set(ikind), core_charge=charge)
209 ria = particle_set(ia)%r - rpoint
210 ria = pbc(ria, cell)
211 ci(:) = ci(:) + charge*ria(:)
212 IF (calculate_forces) THEN
213 IF (para_env%mepos == 0) THEN
214 iatom = atom_of_kind(ia)
215 DO idir = 1, 3
216 force(ikind)%efield(idir, iatom) = force(ikind)%efield(idir, iatom) - fieldpol(idir)*charge
217 END DO
218 END IF
219 END IF
220 END DO
221 ener_field = -sum(ci(:)*fieldpol(:))
222
223 ! Energy
224 dipmat => efield%dipmat
225 NULLIFY (rho, matrix_p)
226 CALL get_qs_env(qs_env=qs_env, rho=rho)
227 CALL qs_rho_get(rho, rho_ao=matrix_p)
228 DO ispin = 1, SIZE(matrix_p)
229 DO idir = 1, 3
230 CALL dbcsr_dot(matrix_p(ispin)%matrix, dipmat(idir)%matrix, tmp)
231 ener_field = ener_field + fieldpol(idir)*tmp
232 END DO
233 END DO
234 energy%efield = ener_field
235
236 IF (.NOT. just_energy) THEN
237
238 ! Update KS matrix
239 NULLIFY (matrix_ks)
240 CALL get_qs_env(qs_env=qs_env, matrix_ks=matrix_ks)
241 DO ispin = 1, SIZE(matrix_ks)
242 DO idir = 1, 3
243 CALL dbcsr_add(matrix_ks(ispin)%matrix, dipmat(idir)%matrix, &
244 alpha_scalar=1.0_dp, beta_scalar=fieldpol(idir))
245 END DO
246 END DO
247
248 ! forces from the efield contribution
249 IF (calculate_forces) THEN
250 nkind = SIZE(qs_kind_set)
251 natom = SIZE(particle_set)
252
253 ALLOCATE (basis_set_list(nkind))
254 DO ikind = 1, nkind
255 qs_kind => qs_kind_set(ikind)
256 CALL get_qs_kind(qs_kind=qs_kind, basis_set=basis_set_a)
257 IF (ASSOCIATED(basis_set_a)) THEN
258 basis_set_list(ikind)%gto_basis_set => basis_set_a
259 ELSE
260 NULLIFY (basis_set_list(ikind)%gto_basis_set)
261 END IF
262 END DO
263 !
264 CALL neighbor_list_iterator_create(nl_iterator, sab_orb)
265 DO WHILE (neighbor_list_iterate(nl_iterator) == 0)
266 CALL get_iterator_info(nl_iterator, ikind=ikind, jkind=jkind, &
267 iatom=iatom, jatom=jatom, r=rab)
268 basis_set_a => basis_set_list(ikind)%gto_basis_set
269 IF (.NOT. ASSOCIATED(basis_set_a)) cycle
270 basis_set_b => basis_set_list(jkind)%gto_basis_set
271 IF (.NOT. ASSOCIATED(basis_set_b)) cycle
272 ! basis ikind
273 first_sgfa => basis_set_a%first_sgf
274 la_max => basis_set_a%lmax
275 la_min => basis_set_a%lmin
276 npgfa => basis_set_a%npgf
277 nseta = basis_set_a%nset
278 nsgfa => basis_set_a%nsgf_set
279 rpgfa => basis_set_a%pgf_radius
280 set_radius_a => basis_set_a%set_radius
281 sphi_a => basis_set_a%sphi
282 zeta => basis_set_a%zet
283 ! basis jkind
284 first_sgfb => basis_set_b%first_sgf
285 lb_max => basis_set_b%lmax
286 lb_min => basis_set_b%lmin
287 npgfb => basis_set_b%npgf
288 nsetb = basis_set_b%nset
289 nsgfb => basis_set_b%nsgf_set
290 rpgfb => basis_set_b%pgf_radius
291 set_radius_b => basis_set_b%set_radius
292 sphi_b => basis_set_b%sphi
293 zetb => basis_set_b%zet
294
295 atom_a = atom_of_kind(iatom)
296 atom_b = atom_of_kind(jatom)
297
298 ra(:) = particle_set(iatom)%r(:) - rpoint(:)
299 rac(:) = pbc(ra(:), cell)
300 rbc(:) = rac(:) + rab(:)
301 dab = sqrt(rab(1)*rab(1) + rab(2)*rab(2) + rab(3)*rab(3))
302
303 IF (iatom <= jatom) THEN
304 irow = iatom
305 icol = jatom
306 trans = .false.
307 ELSE
308 irow = jatom
309 icol = iatom
310 trans = .true.
311 END IF
312
313 fdir = 2.0_dp
314 IF (iatom == jatom .AND. dab < 1.e-10_dp) fdir = 1.0_dp
315
316 ! density matrix
317 NULLIFY (p_block_a)
318 CALL dbcsr_get_block_p(matrix_p(1)%matrix, irow, icol, p_block_a, found)
319 IF (.NOT. found) cycle
320 IF (SIZE(matrix_p) > 1) THEN
321 NULLIFY (p_block_b)
322 CALL dbcsr_get_block_p(matrix_p(2)%matrix, irow, icol, p_block_b, found)
323 cpassert(found)
324 END IF
325 forcea = 0.0_dp
326 forceb = 0.0_dp
327
328 DO iset = 1, nseta
329 ncoa = npgfa(iset)*ncoset(la_max(iset))
330 sgfa = first_sgfa(1, iset)
331 DO jset = 1, nsetb
332 IF (set_radius_a(iset) + set_radius_b(jset) < dab) cycle
333 ncob = npgfb(jset)*ncoset(lb_max(jset))
334 sgfb = first_sgfb(1, jset)
335 ! Calculate the primitive integrals (da|O|b) and (a|O|db)
336 ldab = max(ncoa, ncob)
337 ALLOCATE (work(ldab, ldab), pmat(ncoa, ncob))
338 ! Decontract P matrix block
339 pmat = 0.0_dp
340 DO i = 1, SIZE(matrix_p)
341 IF (i == 1) THEN
342 pblock => p_block_a
343 ELSE
344 pblock => p_block_b
345 END IF
346 IF (trans) THEN
347 CALL dgemm("N", "T", ncoa, nsgfb(jset), nsgfa(iset), &
348 1.0_dp, sphi_a(1, sgfa), SIZE(sphi_a, 1), &
349 pblock(sgfb, sgfa), SIZE(pblock, 1), &
350 0.0_dp, work(1, 1), ldab)
351 ELSE
352 CALL dgemm("N", "N", ncoa, nsgfb(jset), nsgfa(iset), &
353 1.0_dp, sphi_a(1, sgfa), SIZE(sphi_a, 1), &
354 pblock(sgfa, sgfb), SIZE(pblock, 1), &
355 0.0_dp, work(1, 1), ldab)
356 END IF
357 CALL dgemm("N", "T", ncoa, ncob, nsgfb(jset), &
358 1.0_dp, work(1, 1), ldab, &
359 sphi_b(1, sgfb), SIZE(sphi_b, 1), &
360 1.0_dp, pmat(1, 1), ncoa)
361 END DO
362
363 CALL dipole_force(la_max(iset), npgfa(iset), zeta(:, iset), rpgfa(:, iset), la_min(iset), &
364 lb_max(jset), npgfb(jset), zetb(:, jset), rpgfb(:, jset), lb_min(jset), &
365 1, rac, rbc, pmat, forcea, forceb)
366
367 DEALLOCATE (work, pmat)
368 END DO
369 END DO
370
371 DO idir = 1, 3
372 force(ikind)%efield(1:3, atom_a) = force(ikind)%efield(1:3, atom_a) &
373 + fdir*fieldpol(idir)*forcea(idir, 1:3)
374 force(jkind)%efield(1:3, atom_b) = force(jkind)%efield(1:3, atom_b) &
375 + fdir*fieldpol(idir)*forceb(idir, 1:3)
376 END DO
377
378 END DO
379 CALL neighbor_list_iterator_release(nl_iterator)
380 DEALLOCATE (basis_set_list)
381 END IF
382
383 END IF
384
385 IF (calculate_forces) THEN
386 DO ikind = 1, SIZE(atomic_kind_set)
387 CALL para_env%sum(force(ikind)%efield)
388 END DO
389 END IF
390
391 CALL timestop(handle)
392
393 END SUBROUTINE qs_efield_mo_derivatives
394
395END MODULE qs_efield_local
static void dgemm(const char transa, const char transb, const int m, const int n, const int k, const double alpha, const double *a, const int lda, const double *b, const int ldb, const double beta, double *c, const int ldc)
Convenient wrapper to hide Fortran nature of dgemm_, swapping a and b.
Calculation of the moment integrals over Cartesian Gaussian-type functions.
Definition ai_moments.F:17
subroutine, public dipole_force(la_max, npgfa, zeta, rpgfa, la_min, lb_max, npgfb, zetb, rpgfb, lb_min, order, rac, rbc, pab, forcea, forceb)
This returns the derivative of the dipole integrals [a|x|b], with respect to the position of the prim...
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_atomic_kind(atomic_kind, fist_potential, element_symbol, name, mass, kind_number, natom, atom_list, rcov, rvdw, z, qeff, apol, cpol, mm_radius, shell, shell_active, damping)
Get attributes of an atomic kind.
Handles all functions related to the CELL.
Definition cell_types.F:15
Defines control structures, which contain the parameters and the settings for the DFT-based calculati...
Defines the basic variable types.
Definition kinds.F:23
integer, parameter, public dp
Definition kinds.F:34
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.
Calculates the energy contribution and the mo_derivative of a static electric field (nonperiodic)
subroutine, public qs_efield_local_operator(qs_env, just_energy, calculate_forces)
...
subroutine, public set_qs_env(qs_env, super_cell, mos, qmmm, qmmm_periodic, ewald_env, ewald_pw, mpools, rho_external, external_vxc, mask, scf_control, rel_control, qs_charges, ks_env, ks_qmmm_env, wf_history, scf_env, active_space, input, oce, rho_atom_set, rho0_atom_set, rho0_mpole, run_rtp, rtp, rhoz_set, rhoz_tot, ecoul_1c, has_unit_metric, requires_mo_derivs, mo_derivs, mo_loc_history, efield, linres_control, xas_env, cp_ddapc_env, cp_ddapc_ewald, outer_scf_history, outer_scf_ihistory, x_data, et_coupling, dftb_potential, se_taper, se_store_int_env, se_nddo_mpole, se_nonbond_env, admm_env, ls_scf_env, do_transport, transport_env, lri_env, lri_density, exstate_env, ec_env, dispersion_env, gcp_env, mp2_env, bs_env, kg_env, force, kpoints, wanniercentres, almo_scf_env, gradient_history, variable_history, embed_pot, spin_embed_pot, polar_env, mos_last_converged, rhs)
Set the QUICKSTEP environment.
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_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, 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, rhs)
Get the QUICKSTEP environment.
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, 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_r3d_rs_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_potentials, pao_descriptors, nelec)
Get attributes of an atomic kind.
Calculates the moment integrals <a|r^m|b> and <a|r x d/dr|b>
Definition qs_moments.F:14
subroutine, public build_local_moment_matrix(qs_env, moments, nmoments, ref_point, ref_points, basis_type)
...
Definition qs_moments.F:558
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)
...
type for berry phase efield matrices. At the moment only used for cosmat and sinmat
subroutine, public set_efield_matrices(efield, sinmat, cosmat, dipmat)
...
subroutine, public init_efield_matrices(efield)
...
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...
Provides all information about an atomic kind.
Type defining parameters related to the simulation cell.
Definition cell_types.F:55
stores all the informations relevant to an mpi environment
Provides all information about a quickstep kind.
keeps the density in various representations, keeping track of which ones are valid.