(git:08825b9)
Loading...
Searching...
No Matches
qs_environment_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!> \par History
10!> - mo_set_p_type added to qs_env (23.04.02,MK)
11!> - qs_force_type added to qs_env (05.06.02,MK)
12!> \author MK (23.01.2002)
13! **************************************************************************************************
15 USE admm_types, ONLY: admm_env_release,&
20 USE atprop_types, ONLY: atprop_type
21 USE cell_types, ONLY: cell_release,&
33 USE cp_fm_types, ONLY: cp_fm_release,&
41 USE ec_env_types, ONLY: ec_env_release,&
60 USE hfx_types, ONLY: hfx_release,&
69 USE kinds, ONLY: dp
70 USE kpoint_types, ONLY: kpoint_type
78 USE mp2_types, ONLY: mp2_env_release,&
85 USE pw_env_types, ONLY: pw_env_type
86 USE pw_types, ONLY: pw_c1d_gs_type,&
100 USE qs_gcp_types, ONLY: qs_gcp_release,&
104 USE qs_kind_types, ONLY: qs_kind_type
107 USE qs_ks_types, ONLY: get_ks_env,&
120 rhoz_type,&
125 USE qs_mo_types, ONLY: deallocate_mo_set,&
134 USE qs_rho0_types, ONLY: rho0_atom_type,&
137 USE qs_rho_types, ONLY: qs_rho_p_type,&
140 USE qs_scf_types, ONLY: qs_scf_env_type,&
142 USE qs_subsys_types, ONLY: qs_subsys_set,&
164 USE virial_types, ONLY: virial_type
166 USE xas_env_types, ONLY: xas_env_release,&
170#include "./base/base_uses.f90"
171
172 IMPLICIT NONE
173
174 PRIVATE
175
176 CHARACTER(len=*), PARAMETER, PRIVATE :: moduleN = 'qs_environment_types'
177
178 ! Public data types
179
180 PUBLIC :: qs_environment_type
181
182 ! Public subroutines
183
184 PUBLIC :: get_qs_env, &
189
190! **************************************************************************************************
191!> \param local_rho_set contains the atomic, compensations and core densities
192!> and the local parts of the xc terms
193!> \param hartree_local contains the 1, 2 and 3 centers coulomb terms
194!> \param requires_mo_derivs logical, true if dE/dC is required (e.g. OT)
195!> \param has_unit_metric logical, true if the S matrix is considered unity for the SCF
196!> \param mo_derivs the actual derivatives of the total energy wrt to MO coeffs (divided by 2*f_i)
197!> \param xas_env temporary information for xas calculation
198!> \param dftb_potential pair potentials for use with DFTB
199!> \param dispersion_env environment for use with QS dispersion
200!>
201!> compatibility get (things that you should get from the subsys):
202!> \param atomic_kind_set array with infos about the species (atomic_kinds)
203!> present in the system
204!> \param particle_set info on the atoms you simulate, pos,...
205!> \param local_particles which particles ar local to this processor
206!> new:
207!> \param local_molecules which molecules are local to this processor
208!> \param molecule_kind_set description of the molecule kinds
209!> \param molecule_set all the molecule description
210!> \param rtp all data needed for real time propagation
211!> \param x contains data used in Hartree-Fock-Exchange calculations
212!> \param task_list the list of tasks used in collocate and integrate
213!> \param task_list_soft the list of tasks used in collocate and integrate in case of soft basis functions
214!> \param mo_loc_history if a history of localized wfn is kept, they are stored here.
215!> \param molecular_scf_guess_env contains inforamation about and results of claculations
216!> on separate molecules
217!> \par History
218!> 11.2002 added doc and attribute description [fawzi]
219!> 08.2004 renamed some of the very short names (s,c,k,h) for easier grepping
220!> 06.2018 polar_env added (MK)
221!> \author Matthias Krack & fawzi
222! **************************************************************************************************
223
225 LOGICAL :: qmmm = .false., qmmm_periodic = .false.
226 LOGICAL :: mimic = .false.
227 LOGICAL :: requires_mo_derivs = .false.
228 LOGICAL :: requires_matrix_vxc = .false.
229 LOGICAL :: has_unit_metric = .false.
230 LOGICAL :: run_rtp = .false.
231 LOGICAL :: linres_run = .false.
232 LOGICAL :: calc_image_preconditioner = .false.
233 LOGICAL :: do_transport = .false.
234 LOGICAL :: single_point_run = .false.
235 ! Set only by the standalone single-point driver, not by library callers.
236 LOGICAL :: skip_wf_history = .false.
237 LOGICAL :: given_embed_pot = .false.
238 LOGICAL :: energy_correction = .false.
239 LOGICAL :: harris_method = .false.
240 LOGICAL :: do_rixs = .false.
241 REAL(kind=dp) :: sim_time = -1.0_dp
242 REAL(kind=dp) :: start_time = -1.0_dp, target_time = -1.0_dp
243 REAL(kind=dp), DIMENSION(:, :), POINTER :: image_matrix => null()
244 REAL(kind=dp), DIMENSION(:), POINTER :: image_coeff => null()
245 INTEGER, DIMENSION(:), POINTER :: ipiv => null()
246 INTEGER :: sim_step = -1
247 TYPE(ls_scf_env_type), POINTER :: ls_scf_env => null()
248 TYPE(almo_scf_env_type), POINTER :: almo_scf_env => null()
249 TYPE(transport_env_type), POINTER :: transport_env => null()
250 TYPE(cell_type), POINTER :: super_cell => null()
251 TYPE(mo_set_type), DIMENSION(:), POINTER :: mos => null()
252 TYPE(cp_fm_type), DIMENSION(:), POINTER :: mo_loc_history => null()
253 TYPE(dbcsr_p_type), DIMENSION(:), POINTER :: mo_derivs => null()
254 TYPE(scf_control_type), POINTER :: scf_control => null()
255 TYPE(rel_control_type), POINTER :: rel_control => null()
256 ! ZMP adding variables
257 TYPE(qs_rho_type), POINTER :: rho_external => null()
258 TYPE(pw_r3d_rs_type), POINTER :: external_vxc => null()
259 TYPE(pw_r3d_rs_type), POINTER :: mask => null()
260 TYPE(qs_charges_type), POINTER :: qs_charges => null()
261 TYPE(qs_ks_env_type), POINTER :: ks_env => null()
262 TYPE(qs_ks_qmmm_env_type), POINTER :: ks_qmmm_env => null()
263 TYPE(qmmm_env_qm_type), POINTER :: qmmm_env_qm => null()
264 TYPE(qs_wf_history_type), POINTER :: wf_history => null()
265 TYPE(qs_scf_env_type), POINTER :: scf_env => null()
266 LOGICAL :: scf_convergence_available = .false., scf_converged = .false.
267 TYPE(qs_matrix_pools_type), POINTER :: mpools => null()
268 TYPE(oce_matrix_type), POINTER :: oce => null()
269 TYPE(local_rho_type), POINTER :: local_rho_set => null()
270 TYPE(hartree_local_type), POINTER :: hartree_local => null()
271 TYPE(section_vals_type), POINTER :: input => null()
272 TYPE(linres_control_type), POINTER :: linres_control => null()
273 TYPE(xas_environment_type), POINTER :: xas_env => null()
274 TYPE(cp_ddapc_type), POINTER :: cp_ddapc_env => null()
275 TYPE(cp_ddapc_ewald_type), POINTER :: cp_ddapc_ewald => null()
276 REAL(kind=dp), DIMENSION(:, :), POINTER :: outer_scf_history => null()
277 INTEGER :: outer_scf_ihistory = -1
278 REAL(kind=dp), DIMENSION(:, :), POINTER :: gradient_history => null(), &
279 variable_history => null()
280 TYPE(hfx_type), DIMENSION(:, :), POINTER :: x_data => null()
281 TYPE(et_coupling_type), POINTER :: et_coupling => null()
282 TYPE(qs_dftb_pairpot_type), DIMENSION(:, :), POINTER :: dftb_potential => null()
283 TYPE(admm_type), POINTER :: admm_env => null()
284 TYPE(active_space_type), POINTER :: active_space => null()
285 ! LRI
286 TYPE(lri_environment_type), POINTER :: lri_env => null()
287 TYPE(lri_density_type), POINTER :: lri_density => null()
288 ! Harris model
289 TYPE(harris_type), POINTER :: harris_env => null()
290 ! Energy correction
291 TYPE(energy_correction_type), POINTER :: ec_env => null()
292 ! Excited States
293 LOGICAL :: excited_state = .false.
294 TYPE(excited_energy_type), POINTER :: exstate_env => null()
295 ! Empirical dispersion
296 TYPE(qs_dispersion_type), POINTER :: dispersion_env => null()
297 ! Empirical geometrical BSSE correction
298 TYPE(qs_gcp_type), POINTER :: gcp_env => null()
299 ! Semi-empirical and DFTB types
300 TYPE(ewald_environment_type), POINTER :: ewald_env => null()
301 TYPE(ewald_pw_type), POINTER :: ewald_pw => null()
302 ! Semi-empirical types
303 TYPE(se_taper_type), POINTER :: se_taper => null()
304 TYPE(semi_empirical_si_type), POINTER :: se_store_int_env => null()
305 TYPE(nddo_mpole_type), POINTER :: se_nddo_mpole => null()
306 TYPE(fist_nonbond_env_type), POINTER :: se_nonbond_env => null()
307 TYPE(rt_prop_type), POINTER :: rtp => null()
308 TYPE(efield_berry_type), POINTER :: efield => null()
309 ! a history for the broyden ot
310 REAL(kind=dp) :: broyden_adaptive_sigma = -1.0_dp
311 TYPE(mp2_type), POINTER :: mp2_env => null()
312 TYPE(post_scf_bandstructure_type), POINTER :: bs_env => null()
313 TYPE(kg_environment_type), POINTER :: kg_env => null()
314 TYPE(wannier_centres_type), POINTER, DIMENSION(:) :: wanniercentres => null()
315 TYPE(molecular_scf_guess_env_type), POINTER :: molecular_scf_guess_env => null()
316 ! Subsystem densities
317 TYPE(qs_rho_p_type), DIMENSION(:), POINTER :: subsys_dens => null()
318 ! Embedding potential
319 TYPE(pw_r3d_rs_type), POINTER :: embed_pot => null()
320 TYPE(pw_r3d_rs_type), POINTER :: spin_embed_pot => null()
321 ! Polarizability tensor
322 TYPE(polar_env_type), POINTER :: polar_env => null()
323 ! EEQ charges
324 REAL(kind=dp), DIMENSION(:), POINTER :: eeq => null()
325 ! Resp charges
326 REAL(kind=dp), DIMENSION(:), POINTER :: rhs => null()
327 REAL(kind=dp) :: total_zeff_corr = -1.0_dp, surface_dipole_moment = -1.0_dp
328 ! Plane-averaged Hartree potential (incl. dipole correction) just below/above the dipole
329 ! correction reference plane, i.e. the vacuum level on either side of the slab
330 REAL(kind=dp) :: vacuum_level_below = 0.0_dp, vacuum_level_above = 0.0_dp
331 ! Position of the dipole correction reference plane [Angstrom]
332 REAL(kind=dp) :: surface_dipole_ref_pos = 0.0_dp
333 LOGICAL :: surface_dipole_switch_off = .false.
334 TYPE(mo_set_type), DIMENSION(:), POINTER :: mos_last_converged => null()
335 ! tblite
336 TYPE(tblite_type), POINTER :: tb_tblite => null()
337 TYPE(cp_gauxc_cache_type), POINTER :: gauxc_cache => null()
338 TYPE(native_grid_cache_type) :: native_grid_cache
339 END TYPE qs_environment_type
340
341CONTAINS
342
343! **************************************************************************************************
344!> \brief Get the QUICKSTEP environment.
345!> \param qs_env ...
346!> \param atomic_kind_set ...
347!> \param qs_kind_set ...
348!> \param cell ...
349!> \param super_cell ...
350!> \param cell_ref ...
351!> \param use_ref_cell ...
352!> \param kpoints ...
353!> \param dft_control ...
354!> \param mos ...
355!> \param sab_orb ...
356!> \param sab_all ...
357!> \param qmmm ...
358!> \param qmmm_periodic ...
359!> \param mimic ...
360!> \param sac_ae ...
361!> \param sac_ppl ...
362!> \param sac_lri ...
363!> \param sap_ppnl ...
364!> \param sab_vdw ...
365!> \param sab_scp ...
366!> \param sap_oce ...
367!> \param sab_lrc ...
368!> \param sab_se ...
369!> \param sab_xtbe ...
370!> \param sab_tbe ...
371!> \param sab_core ...
372!> \param sab_xb ...
373!> \param sab_xtb_pp ...
374!> \param sab_xtb_nonbond ...
375!> \param sab_almo ...
376!> \param sab_kp ...
377!> \param sab_kp_nosym ...
378!> \param sab_cneo ...
379!> \param particle_set ...
380!> \param energy ...
381!> \param force ...
382!> \param matrix_h ...
383!> \param matrix_h_im ...
384!> \param matrix_ks ...
385!> \param matrix_ks_im ...
386!> \param matrix_vxc ...
387!> \param run_rtp ...
388!> \param rtp ...
389!> \param matrix_h_kp ...
390!> \param matrix_h_im_kp ...
391!> \param matrix_ks_kp ...
392!> \param matrix_ks_im_kp ...
393!> \param matrix_vxc_kp ...
394!> \param kinetic_kp ...
395!> \param matrix_s_kp ...
396!> \param matrix_w_kp ...
397!> \param matrix_s_RI_aux_kp ...
398!> \param matrix_s ...
399!> \param matrix_s_RI_aux ...
400!> \param matrix_w ...
401!> \param matrix_p_mp2 ...
402!> \param matrix_p_mp2_admm ...
403!> \param matrix_vhxc ...
404!> \param rho ...
405!> \param rho_xc ...
406!> \param pw_env ...
407!> \param ewald_env ...
408!> \param ewald_pw ...
409!> \param active_space ...
410!> \param mpools ...
411!> \param input ...
412!> \param para_env ...
413!> \param blacs_env ...
414!> \param scf_control ...
415!> \param rel_control ...
416!> \param kinetic ...
417!> \param qs_charges ...
418!> \param vppl ...
419!> \param xcint_weights ...
420!> \param rho_core ...
421!> \param rho_nlcc ...
422!> \param rho_nlcc_g ...
423!> \param ks_env ...
424!> \param ks_qmmm_env ...
425!> \param wf_history ...
426!> \param scf_env ...
427!> \param local_particles ...
428!> \param local_molecules ...
429!> \param distribution_2d ...
430!> \param dbcsr_dist ...
431!> \param molecule_kind_set ...
432!> \param molecule_set ...
433!> \param subsys ...
434!> \param cp_subsys ...
435!> \param oce ...
436!> \param local_rho_set ...
437!> \param rho_atom_set ...
438!> \param task_list ...
439!> \param task_list_soft ...
440!> \param rho0_atom_set ...
441!> \param rho0_mpole ...
442!> \param rhoz_set ...
443!> \param rhoz_cneo_set ...
444!> \param ecoul_1c ...
445!> \param rho0_s_rs ...
446!> \param rho0_s_gs ...
447!> \param rhoz_cneo_s_rs ...
448!> \param rhoz_cneo_s_gs ...
449!> \param do_kpoints ...
450!> \param has_unit_metric ...
451!> \param requires_mo_derivs ...
452!> \param mo_derivs ...
453!> \param mo_loc_history ...
454!> \param nkind ...
455!> \param natom ...
456!> \param nelectron_total ...
457!> \param nelectron_spin ...
458!> \param efield ...
459!> \param neighbor_list_id ...
460!> \param linres_control ...
461!> \param xas_env ...
462!> \param virial ...
463!> \param cp_ddapc_env ...
464!> \param cp_ddapc_ewald ...
465!> \param outer_scf_history ...
466!> \param outer_scf_ihistory ...
467!> \param x_data ...
468!> \param et_coupling ...
469!> \param dftb_potential ...
470!> \param results ...
471!> \param se_taper ...
472!> \param se_store_int_env ...
473!> \param se_nddo_mpole ...
474!> \param se_nonbond_env ...
475!> \param admm_env ...
476!> \param lri_env ...
477!> \param lri_density ...
478!> \param exstate_env ...
479!> \param ec_env ...
480!> \param harris_env ...
481!> \param dispersion_env ...
482!> \param gcp_env ...
483!> \param vee ...
484!> \param rho_external ...
485!> \param external_vxc ...
486!> \param mask ...
487!> \param mp2_env ...
488!> \param bs_env ...
489!> \param kg_env ...
490!> \param WannierCentres ...
491!> \param atprop ...
492!> \param ls_scf_env ...
493!> \param do_transport ...
494!> \param transport_env ...
495!> \param v_hartree_rspace ...
496!> \param s_mstruct_changed ...
497!> \param rho_changed ...
498!> \param potential_changed ...
499!> \param forces_up_to_date ...
500!> \param mscfg_env ...
501!> \param almo_scf_env ...
502!> \param gradient_history ...
503!> \param variable_history ...
504!> \param embed_pot ...
505!> \param spin_embed_pot ...
506!> \param polar_env ...
507!> \param mos_last_converged ... [SGh]
508!> \param eeq ...
509!> \param rhs ...
510!> \param do_rixs ...
511!> \param tb_tblite ...
512!> \date 23.01.2002
513!> \author MK
514!> \version 1.0
515! **************************************************************************************************
516 SUBROUTINE get_qs_env(qs_env, atomic_kind_set, qs_kind_set, cell, super_cell, cell_ref, use_ref_cell, kpoints, &
517 dft_control, mos, sab_orb, sab_all, qmmm, qmmm_periodic, mimic, sac_ae, sac_ppl, sac_lri, &
518 sap_ppnl, sab_vdw, sab_scp, sap_oce, sab_lrc, sab_se, sab_xtbe, sab_tbe, sab_core, &
519 sab_xb, sab_xtb_pp, sab_xtb_nonbond, sab_almo, &
520 sab_kp, sab_kp_nosym, sab_cneo, particle_set, energy, force, &
521 matrix_h, matrix_h_im, matrix_ks, matrix_ks_im, matrix_vxc, run_rtp, rtp, &
522 matrix_h_kp, matrix_h_im_kp, matrix_ks_kp, matrix_ks_im_kp, matrix_vxc_kp, kinetic_kp, matrix_s_kp, &
523 matrix_w_kp, matrix_s_RI_aux_kp, matrix_s, matrix_s_RI_aux, matrix_w, &
524 matrix_p_mp2, matrix_p_mp2_admm, matrix_vhxc, rho, &
525 rho_xc, pw_env, ewald_env, ewald_pw, active_space, &
526 mpools, input, para_env, blacs_env, scf_control, rel_control, kinetic, qs_charges, &
527 vppl, xcint_weights, rho_core, rho_nlcc, rho_nlcc_g, &
528 ks_env, ks_qmmm_env, wf_history, scf_env, local_particles, &
529 local_molecules, distribution_2d, dbcsr_dist, molecule_kind_set, &
530 molecule_set, subsys, cp_subsys, oce, local_rho_set, rho_atom_set, &
531 task_list, task_list_soft, &
532 rho0_atom_set, rho0_mpole, rhoz_set, rhoz_cneo_set, ecoul_1c, &
533 rho0_s_rs, rho0_s_gs, rhoz_cneo_s_rs, rhoz_cneo_s_gs, &
534 do_kpoints, has_unit_metric, requires_mo_derivs, mo_derivs, &
535 mo_loc_history, nkind, natom, nelectron_total, nelectron_spin, efield, &
536 neighbor_list_id, linres_control, xas_env, virial, cp_ddapc_env, cp_ddapc_ewald, &
537 outer_scf_history, outer_scf_ihistory, x_data, et_coupling, dftb_potential, results, &
538 se_taper, se_store_int_env, se_nddo_mpole, se_nonbond_env, admm_env, &
539 lri_env, lri_density, exstate_env, ec_env, harris_env, dispersion_env, gcp_env, vee, &
540 rho_external, external_vxc, mask, mp2_env, bs_env, kg_env, &
541 WannierCentres, atprop, ls_scf_env, do_transport, transport_env, v_hartree_rspace, &
542 s_mstruct_changed, rho_changed, potential_changed, forces_up_to_date, mscfg_env, almo_scf_env, &
543 gradient_history, variable_history, embed_pot, spin_embed_pot, polar_env, mos_last_converged, &
544 eeq, rhs, do_rixs, tb_tblite)
545
546 TYPE(qs_environment_type), INTENT(IN) :: qs_env
547 TYPE(atomic_kind_type), DIMENSION(:), OPTIONAL, &
548 POINTER :: atomic_kind_set
549 TYPE(qs_kind_type), DIMENSION(:), OPTIONAL, &
550 POINTER :: qs_kind_set
551 TYPE(cell_type), OPTIONAL, POINTER :: cell, super_cell, cell_ref
552 LOGICAL, OPTIONAL :: use_ref_cell
553 TYPE(kpoint_type), OPTIONAL, POINTER :: kpoints
554 TYPE(dft_control_type), OPTIONAL, POINTER :: dft_control
555 TYPE(mo_set_type), DIMENSION(:), OPTIONAL, POINTER :: mos
556 TYPE(neighbor_list_set_p_type), DIMENSION(:), &
557 OPTIONAL, POINTER :: sab_orb, sab_all
558 LOGICAL, OPTIONAL :: qmmm, qmmm_periodic, mimic
559 TYPE(neighbor_list_set_p_type), DIMENSION(:), OPTIONAL, POINTER :: sac_ae, sac_ppl, sac_lri, &
560 sap_ppnl, sab_vdw, sab_scp, sap_oce, sab_lrc, sab_se, sab_xtbe, sab_tbe, sab_core, &
561 sab_xb, sab_xtb_pp, sab_xtb_nonbond, sab_almo, sab_kp, sab_kp_nosym, sab_cneo
562 TYPE(particle_type), DIMENSION(:), OPTIONAL, &
563 POINTER :: particle_set
564 TYPE(qs_energy_type), OPTIONAL, POINTER :: energy
565 TYPE(qs_force_type), DIMENSION(:), OPTIONAL, &
566 POINTER :: force
567 TYPE(dbcsr_p_type), DIMENSION(:), OPTIONAL, &
568 POINTER :: matrix_h, matrix_h_im, matrix_ks, &
569 matrix_ks_im, matrix_vxc
570 LOGICAL, OPTIONAL :: run_rtp
571 TYPE(rt_prop_type), OPTIONAL, POINTER :: rtp
572 TYPE(dbcsr_p_type), DIMENSION(:, :), OPTIONAL, POINTER :: matrix_h_kp, matrix_h_im_kp, &
573 matrix_ks_kp, matrix_ks_im_kp, matrix_vxc_kp, kinetic_kp, matrix_s_kp, matrix_w_kp, &
574 matrix_s_ri_aux_kp
575 TYPE(dbcsr_p_type), DIMENSION(:), OPTIONAL, &
576 POINTER :: matrix_s, matrix_s_ri_aux, matrix_w, &
577 matrix_p_mp2, matrix_p_mp2_admm, &
578 matrix_vhxc
579 TYPE(qs_rho_type), OPTIONAL, POINTER :: rho, rho_xc
580 TYPE(pw_env_type), OPTIONAL, POINTER :: pw_env
581 TYPE(ewald_environment_type), OPTIONAL, POINTER :: ewald_env
582 TYPE(ewald_pw_type), OPTIONAL, POINTER :: ewald_pw
583 TYPE(active_space_type), OPTIONAL, POINTER :: active_space
584 TYPE(qs_matrix_pools_type), OPTIONAL, POINTER :: mpools
585 TYPE(section_vals_type), OPTIONAL, POINTER :: input
586 TYPE(mp_para_env_type), OPTIONAL, POINTER :: para_env
587 TYPE(cp_blacs_env_type), OPTIONAL, POINTER :: blacs_env
588 TYPE(scf_control_type), OPTIONAL, POINTER :: scf_control
589 TYPE(rel_control_type), OPTIONAL, POINTER :: rel_control
590 TYPE(dbcsr_p_type), DIMENSION(:), OPTIONAL, &
591 POINTER :: kinetic
592 TYPE(qs_charges_type), OPTIONAL, POINTER :: qs_charges
593 TYPE(pw_r3d_rs_type), OPTIONAL, POINTER :: vppl, xcint_weights
594 TYPE(pw_c1d_gs_type), OPTIONAL, POINTER :: rho_core
595 TYPE(pw_r3d_rs_type), OPTIONAL, POINTER :: rho_nlcc
596 TYPE(pw_c1d_gs_type), OPTIONAL, POINTER :: rho_nlcc_g
597 TYPE(qs_ks_env_type), OPTIONAL, POINTER :: ks_env
598 TYPE(qs_ks_qmmm_env_type), OPTIONAL, POINTER :: ks_qmmm_env
599 TYPE(qs_wf_history_type), OPTIONAL, POINTER :: wf_history
600 TYPE(qs_scf_env_type), OPTIONAL, POINTER :: scf_env
601 TYPE(distribution_1d_type), OPTIONAL, POINTER :: local_particles, local_molecules
602 TYPE(distribution_2d_type), OPTIONAL, POINTER :: distribution_2d
603 TYPE(dbcsr_distribution_type), OPTIONAL, POINTER :: dbcsr_dist
604 TYPE(molecule_kind_type), DIMENSION(:), OPTIONAL, &
605 POINTER :: molecule_kind_set
606 TYPE(molecule_type), DIMENSION(:), OPTIONAL, &
607 POINTER :: molecule_set
608 TYPE(qs_subsys_type), OPTIONAL, POINTER :: subsys
609 TYPE(cp_subsys_type), OPTIONAL, POINTER :: cp_subsys
610 TYPE(oce_matrix_type), OPTIONAL, POINTER :: oce
611 TYPE(local_rho_type), OPTIONAL, POINTER :: local_rho_set
612 TYPE(rho_atom_type), DIMENSION(:), OPTIONAL, &
613 POINTER :: rho_atom_set
614 TYPE(task_list_type), OPTIONAL, POINTER :: task_list, task_list_soft
615 TYPE(rho0_atom_type), DIMENSION(:), OPTIONAL, &
616 POINTER :: rho0_atom_set
617 TYPE(rho0_mpole_type), OPTIONAL, POINTER :: rho0_mpole
618 TYPE(rhoz_type), DIMENSION(:), OPTIONAL, POINTER :: rhoz_set
619 TYPE(rhoz_cneo_type), DIMENSION(:), OPTIONAL, &
620 POINTER :: rhoz_cneo_set
621 TYPE(ecoul_1center_type), DIMENSION(:), OPTIONAL, &
622 POINTER :: ecoul_1c
623 TYPE(pw_r3d_rs_type), OPTIONAL, POINTER :: rho0_s_rs
624 TYPE(pw_c1d_gs_type), OPTIONAL, POINTER :: rho0_s_gs
625 TYPE(pw_r3d_rs_type), OPTIONAL, POINTER :: rhoz_cneo_s_rs
626 TYPE(pw_c1d_gs_type), OPTIONAL, POINTER :: rhoz_cneo_s_gs
627 LOGICAL, OPTIONAL :: do_kpoints, has_unit_metric, &
628 requires_mo_derivs
629 TYPE(dbcsr_p_type), DIMENSION(:), OPTIONAL, &
630 POINTER :: mo_derivs
631 TYPE(cp_fm_type), DIMENSION(:), OPTIONAL, POINTER :: mo_loc_history
632 INTEGER, OPTIONAL :: nkind, natom, nelectron_total
633 INTEGER, DIMENSION(2), OPTIONAL :: nelectron_spin
634 TYPE(efield_berry_type), OPTIONAL, POINTER :: efield
635 INTEGER, OPTIONAL :: neighbor_list_id
636 TYPE(linres_control_type), OPTIONAL, POINTER :: linres_control
637 TYPE(xas_environment_type), OPTIONAL, POINTER :: xas_env
638 TYPE(virial_type), OPTIONAL, POINTER :: virial
639 TYPE(cp_ddapc_type), OPTIONAL, POINTER :: cp_ddapc_env
640 TYPE(cp_ddapc_ewald_type), OPTIONAL, POINTER :: cp_ddapc_ewald
641 REAL(kind=dp), DIMENSION(:, :), OPTIONAL, POINTER :: outer_scf_history
642 INTEGER, INTENT(out), OPTIONAL :: outer_scf_ihistory
643 TYPE(hfx_type), DIMENSION(:, :), OPTIONAL, POINTER :: x_data
644 TYPE(et_coupling_type), OPTIONAL, POINTER :: et_coupling
645 TYPE(qs_dftb_pairpot_type), DIMENSION(:, :), &
646 OPTIONAL, POINTER :: dftb_potential
647 TYPE(cp_result_type), OPTIONAL, POINTER :: results
648 TYPE(se_taper_type), OPTIONAL, POINTER :: se_taper
649 TYPE(semi_empirical_si_type), OPTIONAL, POINTER :: se_store_int_env
650 TYPE(nddo_mpole_type), OPTIONAL, POINTER :: se_nddo_mpole
651 TYPE(fist_nonbond_env_type), OPTIONAL, POINTER :: se_nonbond_env
652 TYPE(admm_type), OPTIONAL, POINTER :: admm_env
653 TYPE(lri_environment_type), OPTIONAL, POINTER :: lri_env
654 TYPE(lri_density_type), OPTIONAL, POINTER :: lri_density
655 TYPE(excited_energy_type), OPTIONAL, POINTER :: exstate_env
656 TYPE(energy_correction_type), OPTIONAL, POINTER :: ec_env
657 TYPE(harris_type), OPTIONAL, POINTER :: harris_env
658 TYPE(qs_dispersion_type), OPTIONAL, POINTER :: dispersion_env
659 TYPE(qs_gcp_type), OPTIONAL, POINTER :: gcp_env
660 TYPE(pw_r3d_rs_type), OPTIONAL, POINTER :: vee
661 TYPE(qs_rho_type), OPTIONAL, POINTER :: rho_external
662 TYPE(pw_r3d_rs_type), OPTIONAL, POINTER :: external_vxc, mask
663 TYPE(mp2_type), OPTIONAL, POINTER :: mp2_env
664 TYPE(post_scf_bandstructure_type), OPTIONAL, &
665 POINTER :: bs_env
666 TYPE(kg_environment_type), OPTIONAL, POINTER :: kg_env
667 TYPE(wannier_centres_type), DIMENSION(:), &
668 OPTIONAL, POINTER :: wanniercentres
669 TYPE(atprop_type), OPTIONAL, POINTER :: atprop
670 TYPE(ls_scf_env_type), OPTIONAL, POINTER :: ls_scf_env
671 LOGICAL, OPTIONAL :: do_transport
672 TYPE(transport_env_type), OPTIONAL, POINTER :: transport_env
673 TYPE(pw_r3d_rs_type), OPTIONAL, POINTER :: v_hartree_rspace
674 LOGICAL, OPTIONAL :: s_mstruct_changed, rho_changed, &
675 potential_changed, forces_up_to_date
676 TYPE(molecular_scf_guess_env_type), OPTIONAL, &
677 POINTER :: mscfg_env
678 TYPE(almo_scf_env_type), OPTIONAL, POINTER :: almo_scf_env
679 REAL(kind=dp), DIMENSION(:, :), OPTIONAL, POINTER :: gradient_history, variable_history
680 TYPE(pw_r3d_rs_type), OPTIONAL, POINTER :: embed_pot, spin_embed_pot
681 TYPE(polar_env_type), OPTIONAL, POINTER :: polar_env
682 TYPE(mo_set_type), DIMENSION(:), OPTIONAL, POINTER :: mos_last_converged
683 REAL(kind=dp), DIMENSION(:), OPTIONAL, POINTER :: eeq, rhs
684 LOGICAL, OPTIONAL :: do_rixs
685 TYPE(tblite_type), OPTIONAL, POINTER :: tb_tblite
686
687 TYPE(rho0_mpole_type), POINTER :: rho0_m
688
689 NULLIFY (rho0_m)
690 cpassert(ASSOCIATED(qs_env%ks_env))
691
692 IF (PRESENT(outer_scf_history)) outer_scf_history => qs_env%outer_scf_history
693 IF (PRESENT(outer_scf_ihistory)) outer_scf_ihistory = qs_env%outer_scf_ihistory
694 IF (PRESENT(gradient_history)) gradient_history => qs_env%gradient_history
695 IF (PRESENT(variable_history)) variable_history => qs_env%variable_history
696 IF (PRESENT(mp2_env)) mp2_env => qs_env%mp2_env
697 IF (PRESENT(bs_env)) bs_env => qs_env%bs_env
698 IF (PRESENT(kg_env)) kg_env => qs_env%kg_env
699 IF (PRESENT(super_cell)) super_cell => qs_env%super_cell
700 IF (PRESENT(qmmm)) qmmm = qs_env%qmmm
701 IF (PRESENT(qmmm_periodic)) qmmm_periodic = qs_env%qmmm_periodic
702 IF (PRESENT(mimic)) mimic = qs_env%mimic
703 IF (PRESENT(mos)) mos => qs_env%mos
704 IF (PRESENT(mos_last_converged)) mos_last_converged => qs_env%mos_last_converged
705 IF (PRESENT(ewald_env)) ewald_env => qs_env%ewald_env
706 IF (PRESENT(ewald_pw)) ewald_pw => qs_env%ewald_pw
707 IF (PRESENT(mpools)) mpools => qs_env%mpools
708 IF (PRESENT(scf_control)) scf_control => qs_env%scf_control
709 IF (PRESENT(rel_control)) rel_control => qs_env%rel_control
710 ! ZMP pointing vectors
711 IF (PRESENT(rho_external)) rho_external => qs_env%rho_external
712 IF (PRESENT(external_vxc)) external_vxc => qs_env%external_vxc
713 IF (PRESENT(mask)) mask => qs_env%mask
714 IF (PRESENT(qs_charges)) qs_charges => qs_env%qs_charges
715 IF (PRESENT(ks_env)) ks_env => qs_env%ks_env
716 IF (PRESENT(ks_qmmm_env)) ks_qmmm_env => qs_env%ks_qmmm_env
717 IF (PRESENT(wf_history)) wf_history => qs_env%wf_history
718 IF (PRESENT(scf_env)) scf_env => qs_env%scf_env
719 IF (PRESENT(oce)) oce => qs_env%oce
720 IF (PRESENT(requires_mo_derivs)) requires_mo_derivs = qs_env%requires_mo_derivs
721 IF (PRESENT(has_unit_metric)) has_unit_metric = qs_env%has_unit_metric
722 IF (PRESENT(mo_derivs)) mo_derivs => qs_env%mo_derivs
723 IF (PRESENT(mo_loc_history)) mo_loc_history => qs_env%mo_loc_history
724 IF (PRESENT(linres_control)) linres_control => qs_env%linres_control
725 IF (PRESENT(se_taper)) se_taper => qs_env%se_taper
726 IF (PRESENT(se_store_int_env)) se_store_int_env => qs_env%se_store_int_env
727 IF (PRESENT(se_nddo_mpole)) se_nddo_mpole => qs_env%se_nddo_mpole
728 IF (PRESENT(se_nonbond_env)) se_nonbond_env => qs_env%se_nonbond_env
729 IF (PRESENT(lri_env)) lri_env => qs_env%lri_env
730 IF (PRESENT(lri_density)) lri_density => qs_env%lri_density
731 IF (PRESENT(harris_env)) harris_env => qs_env%harris_env
732 IF (PRESENT(ec_env)) ec_env => qs_env%ec_env
733 IF (PRESENT(exstate_env)) exstate_env => qs_env%exstate_env
734 IF (PRESENT(dispersion_env)) dispersion_env => qs_env%dispersion_env
735 IF (PRESENT(gcp_env)) gcp_env => qs_env%gcp_env
736 IF (PRESENT(run_rtp)) run_rtp = qs_env%run_rtp
737 IF (PRESENT(rtp)) rtp => qs_env%rtp
738 IF (PRESENT(ls_scf_env)) ls_scf_env => qs_env%ls_scf_env
739 IF (PRESENT(almo_scf_env)) almo_scf_env => qs_env%almo_scf_env
740 IF (PRESENT(do_transport)) do_transport = qs_env%do_transport
741 IF (PRESENT(transport_env)) transport_env => qs_env%transport_env
742 IF (PRESENT(mscfg_env)) mscfg_env => qs_env%molecular_scf_guess_env
743 IF (PRESENT(active_space)) active_space => qs_env%active_space
744 IF (PRESENT(admm_env)) admm_env => qs_env%admm_env
745 IF (PRESENT(do_rixs)) do_rixs = qs_env%do_rixs
746
747 ! Embedding potential
748 IF (PRESENT(embed_pot)) embed_pot => qs_env%embed_pot
749 IF (PRESENT(spin_embed_pot)) spin_embed_pot => qs_env%spin_embed_pot
750
751 ! Polarisability tensor
752 IF (PRESENT(polar_env)) polar_env => qs_env%polar_env
753
754 ! EEQ charges
755 IF (PRESENT(eeq)) eeq => qs_env%eeq
756
757 ! Resp charges
758 IF (PRESENT(rhs)) rhs => qs_env%rhs
759
760 IF (PRESENT(local_rho_set)) THEN
761 local_rho_set => qs_env%local_rho_set
762 END IF
763 IF (PRESENT(rho_atom_set)) THEN
764 CALL get_local_rho(qs_env%local_rho_set, rho_atom_set=rho_atom_set)
765 END IF
766 IF (PRESENT(rho0_atom_set)) THEN
767 CALL get_local_rho(qs_env%local_rho_set, rho0_atom_set=rho0_atom_set)
768 END IF
769 IF (PRESENT(rho0_mpole)) THEN
770 CALL get_local_rho(qs_env%local_rho_set, rho0_mpole=rho0_mpole)
771 END IF
772 IF (PRESENT(rhoz_set)) THEN
773 CALL get_local_rho(qs_env%local_rho_set, rhoz_set=rhoz_set)
774 END IF
775 IF (PRESENT(rhoz_cneo_set)) THEN
776 CALL get_local_rho(qs_env%local_rho_set, rhoz_cneo_set=rhoz_cneo_set)
777 END IF
778 IF (PRESENT(ecoul_1c)) THEN
779 CALL get_hartree_local(qs_env%hartree_local, ecoul_1c=ecoul_1c)
780 END IF
781 IF (PRESENT(rho0_s_rs)) THEN
782 CALL get_local_rho(qs_env%local_rho_set, rho0_mpole=rho0_m)
783 IF (ASSOCIATED(rho0_m)) THEN
784 rho0_s_rs => rho0_m%rho0_s_rs
785 END IF
786 END IF
787 IF (PRESENT(rho0_s_gs)) THEN
788 CALL get_local_rho(qs_env%local_rho_set, rho0_mpole=rho0_m)
789 IF (ASSOCIATED(rho0_m)) THEN
790 rho0_s_gs => rho0_m%rho0_s_gs
791 END IF
792 END IF
793 IF (PRESENT(rhoz_cneo_s_rs)) THEN
794 CALL get_local_rho(qs_env%local_rho_set, rho0_mpole=rho0_m)
795 IF (ASSOCIATED(rho0_m)) THEN
796 rhoz_cneo_s_rs => rho0_m%rhoz_cneo_s_rs
797 END IF
798 END IF
799 IF (PRESENT(rhoz_cneo_s_gs)) THEN
800 CALL get_local_rho(qs_env%local_rho_set, rho0_mpole=rho0_m)
801 IF (ASSOCIATED(rho0_m)) THEN
802 rhoz_cneo_s_gs => rho0_m%rhoz_cneo_s_gs
803 END IF
804 END IF
805
806 IF (PRESENT(xas_env)) xas_env => qs_env%xas_env
807 IF (PRESENT(input)) input => qs_env%input
808 IF (PRESENT(cp_ddapc_env)) cp_ddapc_env => qs_env%cp_ddapc_env
809 IF (PRESENT(cp_ddapc_ewald)) cp_ddapc_ewald => qs_env%cp_ddapc_ewald
810 IF (PRESENT(x_data)) x_data => qs_env%x_data
811 IF (PRESENT(et_coupling)) et_coupling => qs_env%et_coupling
812 IF (PRESENT(dftb_potential)) dftb_potential => qs_env%dftb_potential
813 IF (PRESENT(efield)) efield => qs_env%efield
814 IF (PRESENT(wanniercentres)) wanniercentres => qs_env%WannierCentres
815
816 CALL get_ks_env(qs_env%ks_env, &
817 v_hartree_rspace=v_hartree_rspace, &
818 s_mstruct_changed=s_mstruct_changed, &
819 rho_changed=rho_changed, &
820 potential_changed=potential_changed, &
821 forces_up_to_date=forces_up_to_date, &
822 matrix_h=matrix_h, &
823 matrix_h_im=matrix_h_im, &
824 matrix_ks=matrix_ks, &
825 matrix_ks_im=matrix_ks_im, &
826 matrix_vxc=matrix_vxc, &
827 kinetic=kinetic, &
828 matrix_s=matrix_s, &
829 matrix_s_ri_aux=matrix_s_ri_aux, &
830 matrix_ks_im_kp=matrix_ks_im_kp, &
831 matrix_w=matrix_w, &
832 matrix_p_mp2=matrix_p_mp2, &
833 matrix_p_mp2_admm=matrix_p_mp2_admm, &
834 matrix_vhxc=matrix_vhxc, &
835 matrix_h_kp=matrix_h_kp, &
836 matrix_h_im_kp=matrix_h_im_kp, &
837 matrix_ks_kp=matrix_ks_kp, &
838 matrix_vxc_kp=matrix_vxc_kp, &
839 kinetic_kp=kinetic_kp, &
840 matrix_s_kp=matrix_s_kp, &
841 matrix_w_kp=matrix_w_kp, &
842 matrix_s_ri_aux_kp=matrix_s_ri_aux_kp, &
843 rho=rho, &
844 rho_xc=rho_xc, &
845 xcint_weights=xcint_weights, &
846 rho_core=rho_core, &
847 rho_nlcc=rho_nlcc, &
848 rho_nlcc_g=rho_nlcc_g, &
849 vppl=vppl, &
850 vee=vee, &
851 neighbor_list_id=neighbor_list_id, &
852 sab_orb=sab_orb, &
853 sab_all=sab_all, &
854 sab_scp=sab_scp, &
855 sab_vdw=sab_vdw, &
856 sac_ae=sac_ae, &
857 sac_ppl=sac_ppl, &
858 sac_lri=sac_lri, &
859 sap_ppnl=sap_ppnl, &
860 sap_oce=sap_oce, &
861 sab_se=sab_se, &
862 sab_lrc=sab_lrc, &
863 sab_tbe=sab_tbe, &
864 sab_xtbe=sab_xtbe, &
865 sab_core=sab_core, &
866 sab_xb=sab_xb, &
867 sab_xtb_pp=sab_xtb_pp, &
868 sab_xtb_nonbond=sab_xtb_nonbond, &
869 sab_almo=sab_almo, &
870 sab_kp=sab_kp, &
871 sab_kp_nosym=sab_kp_nosym, &
872 sab_cneo=sab_cneo, &
873 task_list=task_list, &
874 task_list_soft=task_list_soft, &
875 kpoints=kpoints, &
876 do_kpoints=do_kpoints, &
877 local_molecules=local_molecules, &
878 local_particles=local_particles, &
879 atprop=atprop, &
880 virial=virial, &
881 results=results, &
882 cell=cell, &
883 cell_ref=cell_ref, &
884 use_ref_cell=use_ref_cell, &
885 energy=energy, &
886 force=force, &
887 qs_kind_set=qs_kind_set, &
888 subsys=subsys, &
889 cp_subsys=cp_subsys, &
890 atomic_kind_set=atomic_kind_set, &
891 particle_set=particle_set, &
892 molecule_kind_set=molecule_kind_set, &
893 molecule_set=molecule_set, &
894 natom=natom, &
895 nkind=nkind, &
896 dft_control=dft_control, &
897 dbcsr_dist=dbcsr_dist, &
898 distribution_2d=distribution_2d, &
899 pw_env=pw_env, &
900 para_env=para_env, &
901 blacs_env=blacs_env, &
902 nelectron_total=nelectron_total, &
903 nelectron_spin=nelectron_spin)
904
905 IF (PRESENT(tb_tblite)) tb_tblite => qs_env%tb_tblite
906
907 END SUBROUTINE get_qs_env
908
909! **************************************************************************************************
910!> \brief Initialise the QUICKSTEP environment.
911!> \param qs_env ...
912!> \param globenv ...
913!> \date 25.01.2002
914!> \author MK
915!> \version 1.0
916! **************************************************************************************************
917 SUBROUTINE init_qs_env(qs_env, globenv)
918
919 TYPE(qs_environment_type), INTENT(INOUT) :: qs_env
920 TYPE(global_environment_type), OPTIONAL, POINTER :: globenv
921
922 NULLIFY (qs_env%ls_scf_env)
923 NULLIFY (qs_env%almo_scf_env)
924 NULLIFY (qs_env%transport_env)
925 NULLIFY (qs_env%image_matrix)
926 NULLIFY (qs_env%ipiv)
927 NULLIFY (qs_env%image_coeff)
928 NULLIFY (qs_env%super_cell)
929 NULLIFY (qs_env%mos)
930 NULLIFY (qs_env%mos_last_converged)
931 NULLIFY (qs_env%mpools)
932 NULLIFY (qs_env%ewald_env)
933 NULLIFY (qs_env%ewald_pw)
934 NULLIFY (qs_env%scf_control)
935 NULLIFY (qs_env%rel_control)
936 NULLIFY (qs_env%qs_charges)
937 ! ZMP initializing arrays
938 NULLIFY (qs_env%rho_external)
939 NULLIFY (qs_env%external_vxc)
940 NULLIFY (qs_env%mask)
941 ! Embedding potential
942 NULLIFY (qs_env%embed_pot)
943 NULLIFY (qs_env%spin_embed_pot)
944
945 ! Polarisability tensor
946 NULLIFY (qs_env%polar_env)
947
948 NULLIFY (qs_env%ks_env)
949 NULLIFY (qs_env%ks_qmmm_env)
950 NULLIFY (qs_env%wf_history)
951 NULLIFY (qs_env%scf_env)
952 NULLIFY (qs_env%oce)
953 NULLIFY (qs_env%local_rho_set)
954 NULLIFY (qs_env%hartree_local)
955 NULLIFY (qs_env%input)
956 NULLIFY (qs_env%linres_control)
957 NULLIFY (qs_env%xas_env)
958 NULLIFY (qs_env%cp_ddapc_env)
959 NULLIFY (qs_env%cp_ddapc_ewald)
960 NULLIFY (qs_env%outer_scf_history)
961 NULLIFY (qs_env%gradient_history)
962 NULLIFY (qs_env%variable_history)
963 NULLIFY (qs_env%x_data)
964 NULLIFY (qs_env%et_coupling)
965 NULLIFY (qs_env%dftb_potential)
966 NULLIFY (qs_env%active_space)
967
968 NULLIFY (qs_env%se_taper)
969 NULLIFY (qs_env%se_store_int_env)
970 NULLIFY (qs_env%se_nddo_mpole)
971 NULLIFY (qs_env%se_nonbond_env)
972 NULLIFY (qs_env%admm_env)
973 NULLIFY (qs_env%efield)
974 NULLIFY (qs_env%lri_env)
975 NULLIFY (qs_env%harris_env)
976 NULLIFY (qs_env%ec_env)
977 NULLIFY (qs_env%exstate_env)
978 NULLIFY (qs_env%lri_density)
979 NULLIFY (qs_env%gcp_env)
980 NULLIFY (qs_env%rtp)
981 NULLIFY (qs_env%mp2_env)
982 NULLIFY (qs_env%bs_env)
983 NULLIFY (qs_env%kg_env)
984 NULLIFY (qs_env%WannierCentres)
985
986 qs_env%outer_scf_ihistory = 0
987 qs_env%broyden_adaptive_sigma = -1.0_dp
988
989 CALL local_rho_set_create(qs_env%local_rho_set)
990 CALL hartree_local_create(qs_env%hartree_local)
991 qs_env%run_rtp = .false.
992 qs_env%linres_run = .false.
993 qs_env%single_point_run = .false.
994 qs_env%skip_wf_history = .false.
995 qs_env%qmmm = .false.
996 qs_env%qmmm_periodic = .false.
997 qs_env%mimic = .false.
998 qs_env%requires_mo_derivs = .false.
999 qs_env%requires_matrix_vxc = .false.
1000 qs_env%has_unit_metric = .false.
1001 qs_env%calc_image_preconditioner = .true.
1002 qs_env%do_transport = .false.
1003 qs_env%given_embed_pot = .false.
1004 qs_env%do_rixs = .false.
1005 IF (PRESENT(globenv)) THEN
1006 qs_env%target_time = globenv%cp2k_target_time
1007 qs_env%start_time = globenv%cp2k_start_time
1008 qs_env%single_point_run = (globenv%run_type_id == energy_run .OR. &
1009 globenv%run_type_id == energy_force_run)
1010 ELSE
1011 qs_env%target_time = 0.0_dp
1012 qs_env%start_time = 0.0_dp
1013 END IF
1014
1015 qs_env%sim_time = 0._dp
1016 qs_env%sim_step = 0
1017
1018 qs_env%total_zeff_corr = 0.0_dp
1019 qs_env%surface_dipole_moment = 0.0_dp
1020 qs_env%vacuum_level_below = 0.0_dp
1021 qs_env%vacuum_level_above = 0.0_dp
1022 qs_env%surface_dipole_ref_pos = 0.0_dp
1023 qs_env%surface_dipole_switch_off = .false.
1024
1025 ! Zero all variables containing results
1026 NULLIFY (qs_env%mo_derivs)
1027 NULLIFY (qs_env%mo_loc_history)
1028
1029 IF (.NOT. ASSOCIATED(qs_env%molecular_scf_guess_env)) ALLOCATE (qs_env%molecular_scf_guess_env)
1030
1031 NULLIFY (qs_env%tb_tblite)
1032 NULLIFY (qs_env%gauxc_cache)
1033
1034 END SUBROUTINE init_qs_env
1035
1036! **************************************************************************************************
1037!> \brief Set the QUICKSTEP environment.
1038!> \param qs_env ...
1039!> \param super_cell ...
1040!> \param mos ...
1041!> \param qmmm ...
1042!> \param qmmm_periodic ...
1043!> \param mimic ...
1044!> \param ewald_env ...
1045!> \param ewald_pw ...
1046!> \param mpools ...
1047!> \param rho_external ...
1048!> \param external_vxc ...
1049!> \param mask ...
1050!> \param scf_control ...
1051!> \param rel_control ...
1052!> \param qs_charges ...
1053!> \param ks_env ...
1054!> \param ks_qmmm_env ...
1055!> \param wf_history ...
1056!> \param scf_env ...
1057!> \param active_space ...
1058!> \param input ...
1059!> \param oce ...
1060!> \param rho_atom_set ...
1061!> \param rho0_atom_set ...
1062!> \param rho0_mpole ...
1063!> \param run_rtp ...
1064!> \param rtp ...
1065!> \param rhoz_set ...
1066!> \param rhoz_tot ...
1067!> \param ecoul_1c ...
1068!> \param has_unit_metric ...
1069!> \param requires_mo_derivs ...
1070!> \param mo_derivs ...
1071!> \param mo_loc_history ...
1072!> \param efield ...
1073!> \param rhoz_cneo_set ...
1074!> \param linres_control ...
1075!> \param xas_env ...
1076!> \param cp_ddapc_env ...
1077!> \param cp_ddapc_ewald ...
1078!> \param outer_scf_history ...
1079!> \param outer_scf_ihistory ...
1080!> \param x_data ...
1081!> \param et_coupling ...
1082!> \param dftb_potential ...
1083!> \param se_taper ...
1084!> \param se_store_int_env ...
1085!> \param se_nddo_mpole ...
1086!> \param se_nonbond_env ...
1087!> \param admm_env ...
1088!> \param ls_scf_env ...
1089!> \param do_transport ...
1090!> \param transport_env ...
1091!> \param lri_env ...
1092!> \param lri_density ...
1093!> \param exstate_env ...
1094!> \param ec_env ...
1095!> \param dispersion_env ...
1096!> \param harris_env ...
1097!> \param gcp_env ...
1098!> \param mp2_env ...
1099!> \param bs_env ...
1100!> \param kg_env ...
1101!> \param force ...
1102!> \param kpoints ...
1103!> \param WannierCentres ...
1104!> \param almo_scf_env ...
1105!> \param gradient_history ...
1106!> \param variable_history ...
1107!> \param embed_pot ...
1108!> \param spin_embed_pot ...
1109!> \param polar_env ...
1110!> \param mos_last_converged ... [SGh]
1111!> \param eeq ...
1112!> \param rhs ...
1113!> \param do_rixs ...
1114!> \param tb_tblite ...
1115!> \date 23.01.2002
1116!> \author MK
1117!> \version 1.0
1118! **************************************************************************************************
1119 SUBROUTINE set_qs_env(qs_env, super_cell, &
1120 mos, qmmm, qmmm_periodic, mimic, &
1121 ewald_env, ewald_pw, mpools, &
1122 rho_external, external_vxc, mask, &
1123 scf_control, rel_control, qs_charges, ks_env, &
1124 ks_qmmm_env, wf_history, scf_env, active_space, &
1125 input, oce, rho_atom_set, rho0_atom_set, rho0_mpole, run_rtp, rtp, &
1126 rhoz_set, rhoz_tot, ecoul_1c, has_unit_metric, requires_mo_derivs, mo_derivs, &
1127 mo_loc_history, efield, rhoz_cneo_set, &
1128 linres_control, xas_env, cp_ddapc_env, cp_ddapc_ewald, &
1129 outer_scf_history, outer_scf_ihistory, x_data, et_coupling, dftb_potential, &
1130 se_taper, se_store_int_env, se_nddo_mpole, se_nonbond_env, admm_env, ls_scf_env, &
1131 do_transport, transport_env, lri_env, lri_density, exstate_env, ec_env, dispersion_env, &
1132 harris_env, gcp_env, mp2_env, bs_env, kg_env, force, &
1133 kpoints, WannierCentres, almo_scf_env, gradient_history, variable_history, embed_pot, &
1134 spin_embed_pot, polar_env, mos_last_converged, eeq, rhs, do_rixs, tb_tblite)
1135
1136 TYPE(qs_environment_type), INTENT(INOUT) :: qs_env
1137 TYPE(cell_type), OPTIONAL, POINTER :: super_cell
1138 TYPE(mo_set_type), DIMENSION(:), OPTIONAL, POINTER :: mos
1139 LOGICAL, OPTIONAL :: qmmm, qmmm_periodic, mimic
1140 TYPE(ewald_environment_type), OPTIONAL, POINTER :: ewald_env
1141 TYPE(ewald_pw_type), OPTIONAL, POINTER :: ewald_pw
1142 TYPE(qs_matrix_pools_type), OPTIONAL, POINTER :: mpools
1143 TYPE(qs_rho_type), OPTIONAL, POINTER :: rho_external
1144 TYPE(pw_r3d_rs_type), OPTIONAL, POINTER :: external_vxc, mask
1145 TYPE(scf_control_type), OPTIONAL, POINTER :: scf_control
1146 TYPE(rel_control_type), OPTIONAL, POINTER :: rel_control
1147 TYPE(qs_charges_type), OPTIONAL, POINTER :: qs_charges
1148 TYPE(qs_ks_env_type), OPTIONAL, POINTER :: ks_env
1149 TYPE(qs_ks_qmmm_env_type), OPTIONAL, POINTER :: ks_qmmm_env
1150 TYPE(qs_wf_history_type), OPTIONAL, POINTER :: wf_history
1151 TYPE(qs_scf_env_type), OPTIONAL, POINTER :: scf_env
1152 TYPE(active_space_type), OPTIONAL, POINTER :: active_space
1153 TYPE(section_vals_type), OPTIONAL, POINTER :: input
1154 TYPE(oce_matrix_type), OPTIONAL, POINTER :: oce
1155 TYPE(rho_atom_type), DIMENSION(:), OPTIONAL, &
1156 POINTER :: rho_atom_set
1157 TYPE(rho0_atom_type), DIMENSION(:), OPTIONAL, &
1158 POINTER :: rho0_atom_set
1159 TYPE(rho0_mpole_type), OPTIONAL, POINTER :: rho0_mpole
1160 LOGICAL, OPTIONAL :: run_rtp
1161 TYPE(rt_prop_type), OPTIONAL, POINTER :: rtp
1162 TYPE(rhoz_type), DIMENSION(:), OPTIONAL, POINTER :: rhoz_set
1163 REAL(dp), OPTIONAL :: rhoz_tot
1164 TYPE(ecoul_1center_type), DIMENSION(:), OPTIONAL, &
1165 POINTER :: ecoul_1c
1166 LOGICAL, OPTIONAL :: has_unit_metric, requires_mo_derivs
1167 TYPE(dbcsr_p_type), DIMENSION(:), OPTIONAL, &
1168 POINTER :: mo_derivs
1169 TYPE(cp_fm_type), DIMENSION(:), OPTIONAL, POINTER :: mo_loc_history
1170 TYPE(efield_berry_type), OPTIONAL, POINTER :: efield
1171 TYPE(rhoz_cneo_type), DIMENSION(:), OPTIONAL, &
1172 POINTER :: rhoz_cneo_set
1173 TYPE(linres_control_type), OPTIONAL, POINTER :: linres_control
1174 TYPE(xas_environment_type), OPTIONAL, POINTER :: xas_env
1175 TYPE(cp_ddapc_type), OPTIONAL, POINTER :: cp_ddapc_env
1176 TYPE(cp_ddapc_ewald_type), OPTIONAL, POINTER :: cp_ddapc_ewald
1177 REAL(kind=dp), DIMENSION(:, :), OPTIONAL, POINTER :: outer_scf_history
1178 INTEGER, INTENT(IN), OPTIONAL :: outer_scf_ihistory
1179 TYPE(hfx_type), DIMENSION(:, :), OPTIONAL, POINTER :: x_data
1180 TYPE(et_coupling_type), OPTIONAL, POINTER :: et_coupling
1181 TYPE(qs_dftb_pairpot_type), DIMENSION(:, :), &
1182 OPTIONAL, POINTER :: dftb_potential
1183 TYPE(se_taper_type), OPTIONAL, POINTER :: se_taper
1184 TYPE(semi_empirical_si_type), OPTIONAL, POINTER :: se_store_int_env
1185 TYPE(nddo_mpole_type), OPTIONAL, POINTER :: se_nddo_mpole
1186 TYPE(fist_nonbond_env_type), OPTIONAL, POINTER :: se_nonbond_env
1187 TYPE(admm_type), OPTIONAL, POINTER :: admm_env
1188 TYPE(ls_scf_env_type), OPTIONAL, POINTER :: ls_scf_env
1189 LOGICAL, OPTIONAL :: do_transport
1190 TYPE(transport_env_type), OPTIONAL, POINTER :: transport_env
1191 TYPE(lri_environment_type), OPTIONAL, POINTER :: lri_env
1192 TYPE(lri_density_type), OPTIONAL, POINTER :: lri_density
1193 TYPE(excited_energy_type), OPTIONAL, POINTER :: exstate_env
1194 TYPE(energy_correction_type), OPTIONAL, POINTER :: ec_env
1195 TYPE(qs_dispersion_type), OPTIONAL, POINTER :: dispersion_env
1196 TYPE(harris_type), OPTIONAL, POINTER :: harris_env
1197 TYPE(qs_gcp_type), OPTIONAL, POINTER :: gcp_env
1198 TYPE(mp2_type), OPTIONAL, POINTER :: mp2_env
1199 TYPE(post_scf_bandstructure_type), OPTIONAL, &
1200 POINTER :: bs_env
1201 TYPE(kg_environment_type), OPTIONAL, POINTER :: kg_env
1202 TYPE(qs_force_type), DIMENSION(:), OPTIONAL, &
1203 POINTER :: force
1204 TYPE(kpoint_type), OPTIONAL, POINTER :: kpoints
1205 TYPE(wannier_centres_type), DIMENSION(:), &
1206 OPTIONAL, POINTER :: wanniercentres
1207 TYPE(almo_scf_env_type), OPTIONAL, POINTER :: almo_scf_env
1208 REAL(kind=dp), DIMENSION(:, :), OPTIONAL, POINTER :: gradient_history, variable_history
1209 TYPE(pw_r3d_rs_type), OPTIONAL, POINTER :: embed_pot, spin_embed_pot
1210 TYPE(polar_env_type), OPTIONAL, POINTER :: polar_env
1211 TYPE(mo_set_type), DIMENSION(:), OPTIONAL, POINTER :: mos_last_converged
1212 REAL(kind=dp), DIMENSION(:), OPTIONAL, POINTER :: eeq, rhs
1213 LOGICAL, OPTIONAL :: do_rixs
1214 TYPE(tblite_type), OPTIONAL, POINTER :: tb_tblite
1215
1216 TYPE(qs_subsys_type), POINTER :: subsys
1217
1218 IF (PRESENT(mp2_env)) qs_env%mp2_env => mp2_env
1219 IF (PRESENT(bs_env)) qs_env%bs_env => bs_env
1220 IF (PRESENT(kg_env)) qs_env%kg_env => kg_env
1221 IF (PRESENT(super_cell)) THEN
1222 CALL cell_retain(super_cell)
1223 CALL cell_release(qs_env%super_cell)
1224 qs_env%super_cell => super_cell
1225 END IF
1226 !
1227 IF (PRESENT(qmmm)) qs_env%qmmm = qmmm
1228 IF (PRESENT(qmmm_periodic)) qs_env%qmmm_periodic = qmmm_periodic
1229 IF (PRESENT(mimic)) qs_env%mimic = mimic
1230 IF (PRESENT(mos)) qs_env%mos => mos
1231 IF (PRESENT(mos_last_converged)) qs_env%mos_last_converged => mos_last_converged
1232 IF (PRESENT(ls_scf_env)) qs_env%ls_scf_env => ls_scf_env
1233 IF (PRESENT(almo_scf_env)) qs_env%almo_scf_env => almo_scf_env
1234 IF (PRESENT(do_transport)) qs_env%do_transport = do_transport
1235 IF (PRESENT(transport_env)) qs_env%transport_env => transport_env
1236 ! if intels checking (-C) complains here, you have rediscovered a bug in the intel
1237 ! compiler (present in at least 10.0.025). A testcase has been submitted to intel.
1238 IF (PRESENT(oce)) qs_env%oce => oce
1239 IF (PRESENT(outer_scf_history)) qs_env%outer_scf_history => outer_scf_history
1240 IF (PRESENT(gradient_history)) qs_env%gradient_history => gradient_history
1241 IF (PRESENT(variable_history)) qs_env%variable_history => variable_history
1242 IF (PRESENT(outer_scf_ihistory)) qs_env%outer_scf_ihistory = outer_scf_ihistory
1243 IF (PRESENT(requires_mo_derivs)) qs_env%requires_mo_derivs = requires_mo_derivs
1244 IF (PRESENT(has_unit_metric)) qs_env%has_unit_metric = has_unit_metric
1245 IF (PRESENT(mo_derivs)) qs_env%mo_derivs => mo_derivs
1246 IF (PRESENT(mo_loc_history)) qs_env%mo_loc_history => mo_loc_history
1247 IF (PRESENT(run_rtp)) qs_env%run_rtp = run_rtp
1248 IF (PRESENT(rtp)) qs_env%rtp => rtp
1249 IF (PRESENT(efield)) qs_env%efield => efield
1250 IF (PRESENT(active_space)) qs_env%active_space => active_space
1251 IF (PRESENT(do_rixs)) do_rixs = qs_env%do_rixs
1252
1253 IF (PRESENT(ewald_env)) THEN ! accept also null pointers?
1254 IF (ASSOCIATED(qs_env%ewald_env)) THEN
1255 IF (.NOT. ASSOCIATED(qs_env%ewald_env, ewald_env)) THEN
1256 CALL ewald_env_release(qs_env%ewald_env)
1257 DEALLOCATE (qs_env%ewald_env)
1258 END IF
1259 END IF
1260 qs_env%ewald_env => ewald_env
1261 END IF
1262 IF (PRESENT(ewald_pw)) THEN ! accept also null pointers?
1263 IF (ASSOCIATED(qs_env%ewald_pw)) THEN
1264 IF (.NOT. ASSOCIATED(ewald_pw, qs_env%ewald_pw)) THEN
1265 CALL ewald_pw_release(qs_env%ewald_pw)
1266 DEALLOCATE (qs_env%ewald_pw)
1267 END IF
1268 END IF
1269 qs_env%ewald_pw => ewald_pw
1270 END IF
1271 IF (PRESENT(scf_control)) THEN ! accept also null pointers?
1272 IF (ASSOCIATED(qs_env%scf_control)) THEN
1273 IF (.NOT. ASSOCIATED(qs_env%scf_control, scf_control)) THEN
1274 CALL scf_c_release(qs_env%scf_control)
1275 DEALLOCATE (qs_env%scf_control)
1276 END IF
1277 END IF
1278 qs_env%scf_control => scf_control
1279 END IF
1280 IF (PRESENT(rel_control)) THEN ! accept also null pointers?
1281 IF (ASSOCIATED(qs_env%rel_control)) THEN
1282 IF (.NOT. ASSOCIATED(qs_env%rel_control, rel_control)) THEN
1283 CALL rel_c_release(qs_env%rel_control)
1284 DEALLOCATE (qs_env%rel_control)
1285 END IF
1286 END IF
1287 qs_env%rel_control => rel_control
1288 END IF
1289 IF (PRESENT(linres_control)) THEN ! accept also null pointers?
1290 IF (ASSOCIATED(qs_env%linres_control)) THEN
1291 IF (.NOT. ASSOCIATED(qs_env%linres_control, linres_control)) THEN
1292 CALL linres_control_release(qs_env%linres_control)
1293 DEALLOCATE (qs_env%linres_control)
1294 END IF
1295 END IF
1296 qs_env%linres_control => linres_control
1297 END IF
1298 ! ZMP associating variables
1299 IF (PRESENT(rho_external)) THEN
1300 IF (ASSOCIATED(qs_env%rho_external)) THEN
1301 IF (.NOT. ASSOCIATED(qs_env%rho_external, rho_external)) THEN
1302 CALL qs_rho_release(qs_env%rho_external)
1303 DEALLOCATE (qs_env%rho_external)
1304 END IF
1305 END IF
1306 qs_env%rho_external => rho_external
1307 END IF
1308 IF (PRESENT(external_vxc)) qs_env%external_vxc => external_vxc
1309 IF (PRESENT(mask)) qs_env%mask => mask
1310 ! Embedding potential
1311 IF (PRESENT(embed_pot)) qs_env%embed_pot => embed_pot
1312 IF (PRESENT(spin_embed_pot)) qs_env%spin_embed_pot => spin_embed_pot
1313
1314 ! Polarisability tensor
1315 IF (PRESENT(polar_env)) qs_env%polar_env => polar_env
1316
1317 IF (PRESENT(qs_charges)) THEN
1318 IF (ASSOCIATED(qs_env%qs_charges)) THEN
1319 IF (.NOT. ASSOCIATED(qs_env%qs_charges, qs_charges)) THEN
1320 CALL qs_charges_release(qs_env%qs_charges)
1321 DEALLOCATE (qs_env%qs_charges)
1322 END IF
1323 END IF
1324 qs_env%qs_charges => qs_charges
1325 END IF
1326 IF (PRESENT(ks_qmmm_env)) THEN
1327 IF (ASSOCIATED(qs_env%ks_qmmm_env)) THEN
1328 IF (.NOT. ASSOCIATED(qs_env%ks_qmmm_env, ks_qmmm_env)) THEN
1329 CALL qs_ks_qmmm_release(qs_env%ks_qmmm_env)
1330 DEALLOCATE (qs_env%ks_qmmm_env)
1331 END IF
1332 END IF
1333 qs_env%ks_qmmm_env => ks_qmmm_env
1334 END IF
1335 IF (PRESENT(ks_env)) THEN ! accept also null pointers?
1336 IF (ASSOCIATED(qs_env%ks_env)) THEN
1337 IF (.NOT. ASSOCIATED(qs_env%ks_env, ks_env)) THEN
1338 CALL qs_ks_release(qs_env%ks_env)
1339 DEALLOCATE (qs_env%ks_env)
1340 END IF
1341 END IF
1342 qs_env%ks_env => ks_env
1343 END IF
1344 IF (PRESENT(wf_history)) THEN ! accept also null pointers ?
1345 CALL wfi_retain(wf_history)
1346 CALL wfi_release(qs_env%wf_history)
1347 qs_env%wf_history => wf_history
1348 END IF
1349 IF (PRESENT(scf_env)) THEN ! accept also null pointers ?
1350 IF (ASSOCIATED(qs_env%scf_env)) THEN
1351 IF (.NOT. ASSOCIATED(qs_env%scf_env, scf_env)) THEN
1352 CALL scf_env_release(qs_env%scf_env)
1353 DEALLOCATE (qs_env%scf_env)
1354 END IF
1355 END IF
1356 qs_env%scf_env => scf_env
1357 END IF
1358 IF (PRESENT(xas_env)) THEN ! accept also null pointers?
1359 IF (ASSOCIATED(qs_env%xas_env)) THEN
1360 IF (.NOT. ASSOCIATED(qs_env%xas_env, xas_env)) THEN
1361 CALL xas_env_release(qs_env%xas_env)
1362 DEALLOCATE (qs_env%xas_env)
1363 END IF
1364 END IF
1365 qs_env%xas_env => xas_env
1366 END IF
1367 IF (PRESENT(mpools)) THEN
1368 CALL mpools_retain(mpools)
1369 CALL mpools_release(qs_env%mpools)
1370 qs_env%mpools => mpools
1371 END IF
1372 IF (PRESENT(rho_atom_set)) THEN
1373 CALL set_local_rho(qs_env%local_rho_set, rho_atom_set=rho_atom_set)
1374 END IF
1375 IF (PRESENT(rho0_atom_set)) THEN
1376 CALL set_local_rho(qs_env%local_rho_set, rho0_atom_set=rho0_atom_set)
1377 END IF
1378 IF (PRESENT(rho0_mpole)) THEN
1379 CALL set_local_rho(qs_env%local_rho_set, rho0_mpole=rho0_mpole)
1380 END IF
1381 IF (PRESENT(rhoz_set)) THEN
1382 CALL set_local_rho(qs_env%local_rho_set, rhoz_set=rhoz_set)
1383 END IF
1384 IF (PRESENT(rhoz_cneo_set)) THEN
1385 CALL set_local_rho(qs_env%local_rho_set, rhoz_cneo_set=rhoz_cneo_set)
1386 END IF
1387 IF (PRESENT(rhoz_tot)) qs_env%local_rho_set%rhoz_tot = rhoz_tot
1388 IF (PRESENT(ecoul_1c)) THEN
1389 CALL set_hartree_local(qs_env%hartree_local, ecoul_1c=ecoul_1c)
1390 END IF
1391 IF (PRESENT(input)) THEN
1392 CALL section_vals_retain(input)
1393 CALL section_vals_release(qs_env%input)
1394 qs_env%input => input
1395 END IF
1396 IF (PRESENT(cp_ddapc_env)) THEN
1397 IF (ASSOCIATED(qs_env%cp_ddapc_env)) THEN
1398 IF (.NOT. ASSOCIATED(qs_env%cp_ddapc_env, cp_ddapc_env)) THEN
1399 CALL cp_ddapc_release(qs_env%cp_ddapc_env)
1400 DEALLOCATE (qs_env%cp_ddapc_env)
1401 END IF
1402 END IF
1403 qs_env%cp_ddapc_env => cp_ddapc_env
1404 END IF
1405 IF (PRESENT(cp_ddapc_ewald)) THEN
1406 qs_env%cp_ddapc_ewald => cp_ddapc_ewald
1407 END IF
1408 IF (PRESENT(x_data)) qs_env%x_data => x_data
1409 IF (PRESENT(et_coupling)) qs_env%et_coupling => et_coupling
1410 IF (PRESENT(dftb_potential)) qs_env%dftb_potential => dftb_potential
1411 IF (PRESENT(se_taper)) THEN
1412 CALL se_taper_release(qs_env%se_taper)
1413 qs_env%se_taper => se_taper
1414 END IF
1415 IF (PRESENT(se_store_int_env)) THEN
1416 CALL semi_empirical_si_release(qs_env%se_store_int_env)
1417 qs_env%se_store_int_env => se_store_int_env
1418 END IF
1419 IF (PRESENT(se_nddo_mpole)) THEN
1420 CALL nddo_mpole_release(qs_env%se_nddo_mpole)
1421 qs_env%se_nddo_mpole => se_nddo_mpole
1422 END IF
1423 IF (PRESENT(se_nonbond_env)) THEN
1424 IF (ASSOCIATED(qs_env%se_nonbond_env)) THEN
1425 IF (.NOT. ASSOCIATED(qs_env%se_nonbond_env, se_nonbond_env)) THEN
1426 CALL fist_nonbond_env_release(qs_env%se_nonbond_env)
1427 DEALLOCATE (qs_env%se_nonbond_env)
1428 END IF
1429 END IF
1430 qs_env%se_nonbond_env => se_nonbond_env
1431 END IF
1432 IF (PRESENT(admm_env)) qs_env%admm_env => admm_env
1433 IF (PRESENT(lri_env)) qs_env%lri_env => lri_env
1434 IF (PRESENT(lri_density)) qs_env%lri_density => lri_density
1435 IF (PRESENT(harris_env)) qs_env%harris_env => harris_env
1436 IF (PRESENT(ec_env)) qs_env%ec_env => ec_env
1437 IF (PRESENT(exstate_env)) qs_env%exstate_env => exstate_env
1438 IF (PRESENT(dispersion_env)) qs_env%dispersion_env => dispersion_env
1439 IF (PRESENT(gcp_env)) qs_env%gcp_env => gcp_env
1440 IF (PRESENT(wanniercentres)) qs_env%WannierCentres => wanniercentres
1441 IF (PRESENT(kpoints)) CALL set_ks_env(qs_env%ks_env, kpoints=kpoints)
1442
1443 ! EEQ charges
1444 IF (PRESENT(eeq)) qs_env%eeq => eeq
1445
1446 ! Resp charges
1447 IF (PRESENT(rhs)) qs_env%rhs => rhs
1448
1449 IF (PRESENT(force)) THEN
1450 CALL get_qs_env(qs_env, subsys=subsys)
1451 CALL qs_subsys_set(subsys, force=force)
1452 END IF
1453
1454 IF (PRESENT(tb_tblite)) qs_env%tb_tblite => tb_tblite
1455
1456 END SUBROUTINE set_qs_env
1457
1458! **************************************************************************************************
1459!> \brief allocates and intitializes a qs_env
1460!> \param qs_env the object to create
1461!> \param globenv ...
1462!> \par History
1463!> 12.2002 created [fawzi]
1464!> \author Fawzi Mohamed
1465! **************************************************************************************************
1466 SUBROUTINE qs_env_create(qs_env, globenv)
1467 TYPE(qs_environment_type), INTENT(OUT) :: qs_env
1468 TYPE(global_environment_type), OPTIONAL, POINTER :: globenv
1469
1470 CALL init_qs_env(qs_env, globenv=globenv)
1471 END SUBROUTINE qs_env_create
1472
1473! **************************************************************************************************
1474!> \brief releases the given qs_env (see doc/ReferenceCounting.html)
1475!> \param qs_env the object to release
1476!> \par History
1477!> 12.2002 created [fawzi]
1478!> 06.2018 polar_env added (MK)
1479!> \author Fawzi Mohamed
1480! **************************************************************************************************
1481 SUBROUTINE qs_env_release(qs_env)
1482 TYPE(qs_environment_type), INTENT(INOUT) :: qs_env
1483
1484 INTEGER :: i
1485
1486 CALL cell_release(qs_env%super_cell)
1487 IF (ASSOCIATED(qs_env%mos)) THEN
1488 DO i = 1, SIZE(qs_env%mos)
1489 CALL deallocate_mo_set(qs_env%mos(i))
1490 END DO
1491 DEALLOCATE (qs_env%mos)
1492 END IF
1493 IF (ASSOCIATED(qs_env%mos_last_converged)) THEN
1494 DO i = 1, SIZE(qs_env%mos_last_converged)
1495 CALL deallocate_mo_set(qs_env%mos_last_converged(i))
1496 END DO
1497 DEALLOCATE (qs_env%mos_last_converged)
1498 END IF
1499
1500 IF (ASSOCIATED(qs_env%mo_derivs)) THEN
1501 DO i = 1, SIZE(qs_env%mo_derivs)
1502 CALL dbcsr_release_p(qs_env%mo_derivs(i)%matrix)
1503 END DO
1504 DEALLOCATE (qs_env%mo_derivs)
1505 END IF
1506
1507 CALL cp_fm_release(qs_env%mo_loc_history)
1508
1509 IF (ASSOCIATED(qs_env%rtp)) THEN
1510 CALL rt_prop_release(qs_env%rtp)
1511 DEALLOCATE (qs_env%rtp)
1512 END IF
1513 IF (ASSOCIATED(qs_env%outer_scf_history)) THEN
1514 DEALLOCATE (qs_env%outer_scf_history)
1515 qs_env%outer_scf_ihistory = 0
1516 END IF
1517 IF (ASSOCIATED(qs_env%gradient_history)) THEN
1518 DEALLOCATE (qs_env%gradient_history)
1519 END IF
1520 IF (ASSOCIATED(qs_env%variable_history)) THEN
1521 DEALLOCATE (qs_env%variable_history)
1522 END IF
1523 IF (ASSOCIATED(qs_env%oce)) CALL deallocate_oce_set(qs_env%oce)
1524 IF (ASSOCIATED(qs_env%local_rho_set)) THEN
1525 CALL local_rho_set_release(qs_env%local_rho_set)
1526 END IF
1527 IF (ASSOCIATED(qs_env%hartree_local)) THEN
1528 CALL hartree_local_release(qs_env%hartree_local)
1529 END IF
1530 IF (ASSOCIATED(qs_env%scf_control)) THEN
1531 CALL scf_c_release(qs_env%scf_control)
1532 DEALLOCATE (qs_env%scf_control)
1533 END IF
1534 IF (ASSOCIATED(qs_env%rel_control)) THEN
1535 CALL rel_c_release(qs_env%rel_control)
1536 DEALLOCATE (qs_env%rel_control)
1537 END IF
1538
1539 IF (ASSOCIATED(qs_env%linres_control)) THEN
1540 CALL linres_control_release(qs_env%linres_control)
1541 DEALLOCATE (qs_env%linres_control)
1542 END IF
1543
1544 IF (ASSOCIATED(qs_env%almo_scf_env)) THEN
1545 CALL almo_scf_env_release(qs_env%almo_scf_env)
1546 END IF
1547
1548 IF (ASSOCIATED(qs_env%ls_scf_env)) THEN
1549 CALL ls_scf_release(qs_env%ls_scf_env)
1550 END IF
1551 IF (ASSOCIATED(qs_env%molecular_scf_guess_env)) THEN
1552 CALL molecular_scf_guess_env_destroy(qs_env%molecular_scf_guess_env)
1553 DEALLOCATE (qs_env%molecular_scf_guess_env)
1554 END IF
1555
1556 IF (ASSOCIATED(qs_env%transport_env)) THEN
1557 CALL transport_env_release(qs_env%transport_env)
1558 END IF
1559
1560 !Only if do_xas_calculation
1561 IF (ASSOCIATED(qs_env%xas_env)) THEN
1562 CALL xas_env_release(qs_env%xas_env)
1563 DEALLOCATE (qs_env%xas_env)
1564 END IF
1565 IF (ASSOCIATED(qs_env%ewald_env)) THEN
1566 CALL ewald_env_release(qs_env%ewald_env)
1567 DEALLOCATE (qs_env%ewald_env)
1568 END IF
1569 IF (ASSOCIATED(qs_env%ewald_pw)) THEN
1570 CALL ewald_pw_release(qs_env%ewald_pw)
1571 DEALLOCATE (qs_env%ewald_pw)
1572 END IF
1573 IF (ASSOCIATED(qs_env%image_matrix)) THEN
1574 DEALLOCATE (qs_env%image_matrix)
1575 END IF
1576 IF (ASSOCIATED(qs_env%ipiv)) THEN
1577 DEALLOCATE (qs_env%ipiv)
1578 END IF
1579 IF (ASSOCIATED(qs_env%image_coeff)) THEN
1580 DEALLOCATE (qs_env%image_coeff)
1581 END IF
1582 ! ZMP
1583 IF (ASSOCIATED(qs_env%rho_external)) THEN
1584 CALL qs_rho_release(qs_env%rho_external)
1585 DEALLOCATE (qs_env%rho_external)
1586 END IF
1587 IF (ASSOCIATED(qs_env%external_vxc)) THEN
1588 CALL qs_env%external_vxc%release()
1589 DEALLOCATE (qs_env%external_vxc)
1590 END IF
1591 IF (ASSOCIATED(qs_env%mask)) THEN
1592 CALL qs_env%mask%release()
1593 DEALLOCATE (qs_env%mask)
1594 END IF
1595 IF (ASSOCIATED(qs_env%active_space)) THEN
1596 CALL release_active_space_type(qs_env%active_space)
1597 END IF
1598 ! Embedding potentials if provided as input
1599 IF (qs_env%given_embed_pot) THEN
1600 CALL qs_env%embed_pot%release()
1601 DEALLOCATE (qs_env%embed_pot)
1602 IF (ASSOCIATED(qs_env%spin_embed_pot)) THEN
1603 CALL qs_env%spin_embed_pot%release()
1604 DEALLOCATE (qs_env%spin_embed_pot)
1605 END IF
1606 END IF
1607
1608 ! Polarisability tensor
1609 CALL polar_env_release(qs_env%polar_env)
1610
1611 IF (ASSOCIATED(qs_env%qs_charges)) THEN
1612 CALL qs_charges_release(qs_env%qs_charges)
1613 DEALLOCATE (qs_env%qs_charges)
1614 END IF
1615 IF (ASSOCIATED(qs_env%ks_env)) THEN
1616 CALL qs_ks_release(qs_env%ks_env)
1617 DEALLOCATE (qs_env%ks_env)
1618 END IF
1619 IF (ASSOCIATED(qs_env%ks_qmmm_env)) THEN
1620 CALL qs_ks_qmmm_release(qs_env%ks_qmmm_env)
1621 DEALLOCATE (qs_env%ks_qmmm_env)
1622 END IF
1623 CALL wfi_release(qs_env%wf_history)
1624 IF (ASSOCIATED(qs_env%scf_env)) THEN
1625 CALL scf_env_release(qs_env%scf_env)
1626 DEALLOCATE (qs_env%scf_env)
1627 END IF
1628 CALL mpools_release(qs_env%mpools)
1629 CALL section_vals_release(qs_env%input)
1630 IF (ASSOCIATED(qs_env%cp_ddapc_env)) THEN
1631 CALL cp_ddapc_release(qs_env%cp_ddapc_env)
1632 DEALLOCATE (qs_env%cp_ddapc_env)
1633 END IF
1634 CALL cp_ddapc_ewald_release(qs_env%cp_ddapc_ewald)
1635 CALL efield_berry_release(qs_env%efield)
1636 IF (ASSOCIATED(qs_env%x_data)) THEN
1637 CALL hfx_release(qs_env%x_data)
1638 END IF
1639 IF (ASSOCIATED(qs_env%et_coupling)) THEN
1640 CALL et_coupling_release(qs_env%et_coupling)
1641 END IF
1642 IF (ASSOCIATED(qs_env%dftb_potential)) THEN
1643 CALL qs_dftb_pairpot_release(qs_env%dftb_potential)
1644 END IF
1645 IF (ASSOCIATED(qs_env%se_taper)) THEN
1646 CALL se_taper_release(qs_env%se_taper)
1647 END IF
1648 IF (ASSOCIATED(qs_env%se_store_int_env)) THEN
1649 CALL semi_empirical_si_release(qs_env%se_store_int_env)
1650 END IF
1651 IF (ASSOCIATED(qs_env%se_nddo_mpole)) THEN
1652 CALL nddo_mpole_release(qs_env%se_nddo_mpole)
1653 END IF
1654 IF (ASSOCIATED(qs_env%se_nonbond_env)) THEN
1655 CALL fist_nonbond_env_release(qs_env%se_nonbond_env)
1656 DEALLOCATE (qs_env%se_nonbond_env)
1657 END IF
1658 IF (ASSOCIATED(qs_env%admm_env)) THEN
1659 CALL admm_env_release(qs_env%admm_env)
1660 END IF
1661 IF (ASSOCIATED(qs_env%lri_env)) THEN
1662 CALL lri_env_release(qs_env%lri_env)
1663 DEALLOCATE (qs_env%lri_env)
1664 END IF
1665 IF (ASSOCIATED(qs_env%lri_density)) THEN
1666 CALL lri_density_release(qs_env%lri_density)
1667 DEALLOCATE (qs_env%lri_density)
1668 END IF
1669 IF (ASSOCIATED(qs_env%harris_env)) THEN
1670 CALL harris_env_release(qs_env%harris_env)
1671 END IF
1672 IF (ASSOCIATED(qs_env%ec_env)) THEN
1673 CALL ec_env_release(qs_env%ec_env)
1674 END IF
1675 IF (ASSOCIATED(qs_env%exstate_env)) THEN
1676 CALL exstate_release(qs_env%exstate_env)
1677 END IF
1678 IF (ASSOCIATED(qs_env%mp2_env)) THEN
1679 CALL mp2_env_release(qs_env%mp2_env)
1680 DEALLOCATE (qs_env%mp2_env)
1681 NULLIFY (qs_env%mp2_env)
1682 END IF
1683 IF (ASSOCIATED(qs_env%bs_env)) THEN
1684 CALL bs_env_release(qs_env%bs_env)
1685 END IF
1686 IF (ASSOCIATED(qs_env%kg_env)) THEN
1687 CALL kg_env_release(qs_env%kg_env)
1688 END IF
1689
1690 ! dispersion
1691 CALL qs_dispersion_release(qs_env%dispersion_env)
1692 ! gCP
1693 IF (ASSOCIATED(qs_env%gcp_env)) THEN
1694 CALL qs_gcp_release(qs_env%gcp_env)
1695 END IF
1696
1697 IF (ASSOCIATED(qs_env%WannierCentres)) THEN
1698 DO i = 1, SIZE(qs_env%WannierCentres)
1699 DEALLOCATE (qs_env%WannierCentres(i)%WannierHamDiag)
1700 DEALLOCATE (qs_env%WannierCentres(i)%centres)
1701 END DO
1702 DEALLOCATE (qs_env%WannierCentres)
1703 END IF
1704 ! EEQ charges
1705 IF (ASSOCIATED(qs_env%eeq)) DEALLOCATE (qs_env%eeq)
1706 ! Resp chargeqq
1707 IF (ASSOCIATED(qs_env%rhs)) DEALLOCATE (qs_env%rhs)
1708
1709 ! tblite
1710 IF (ASSOCIATED(qs_env%tb_tblite)) THEN
1711 CALL deallocate_tblite_type(qs_env%tb_tblite)
1712 END IF
1713
1714 IF (ASSOCIATED(qs_env%gauxc_cache)) THEN
1715 CALL gauxc_cache_release(qs_env%gauxc_cache)
1716 DEALLOCATE (qs_env%gauxc_cache)
1717 END IF
1718
1719 CALL release_native_grid_cache(qs_env%native_grid_cache)
1720
1721 END SUBROUTINE qs_env_release
1722
1723! **************************************************************************************************
1724!> \brief releases part of the given qs_env in order to save memory
1725!> \param qs_env the object to release
1726!> \par History
1727!> 04.2022 created [JGH]
1728! **************************************************************************************************
1729 SUBROUTINE qs_env_part_release(qs_env)
1730 TYPE(qs_environment_type), INTENT(INOUT) :: qs_env
1731
1732 INTEGER :: i
1733
1734 IF (ASSOCIATED(qs_env%mos_last_converged)) THEN
1735 DO i = 1, SIZE(qs_env%mos_last_converged)
1736 CALL deallocate_mo_set(qs_env%mos_last_converged(i))
1737 END DO
1738 DEALLOCATE (qs_env%mos_last_converged)
1739 END IF
1740
1741 IF (ASSOCIATED(qs_env%mo_derivs)) THEN
1742 DO i = 1, SIZE(qs_env%mo_derivs)
1743 CALL dbcsr_release_p(qs_env%mo_derivs(i)%matrix)
1744 END DO
1745 DEALLOCATE (qs_env%mo_derivs)
1746 END IF
1747
1748 CALL cp_fm_release(qs_env%mo_loc_history)
1749
1750 IF (ASSOCIATED(qs_env%rtp)) THEN
1751 CALL rt_prop_release(qs_env%rtp)
1752 DEALLOCATE (qs_env%rtp)
1753 END IF
1754 IF (ASSOCIATED(qs_env%outer_scf_history)) THEN
1755 DEALLOCATE (qs_env%outer_scf_history)
1756 qs_env%outer_scf_ihistory = 0
1757 END IF
1758 IF (ASSOCIATED(qs_env%gradient_history)) THEN
1759 DEALLOCATE (qs_env%gradient_history)
1760 END IF
1761 IF (ASSOCIATED(qs_env%variable_history)) THEN
1762 DEALLOCATE (qs_env%variable_history)
1763 END IF
1764 IF (ASSOCIATED(qs_env%oce)) CALL deallocate_oce_set(qs_env%oce)
1765 IF (ASSOCIATED(qs_env%local_rho_set)) THEN
1766 CALL local_rho_set_release(qs_env%local_rho_set)
1767 END IF
1768 IF (ASSOCIATED(qs_env%hartree_local)) THEN
1769 CALL hartree_local_release(qs_env%hartree_local)
1770 END IF
1771 IF (ASSOCIATED(qs_env%scf_control)) THEN
1772 CALL scf_c_release(qs_env%scf_control)
1773 DEALLOCATE (qs_env%scf_control)
1774 END IF
1775 IF (ASSOCIATED(qs_env%rel_control)) THEN
1776 CALL rel_c_release(qs_env%rel_control)
1777 DEALLOCATE (qs_env%rel_control)
1778 END IF
1779
1780 IF (ASSOCIATED(qs_env%linres_control)) THEN
1781 CALL linres_control_release(qs_env%linres_control)
1782 DEALLOCATE (qs_env%linres_control)
1783 END IF
1784
1785 IF (ASSOCIATED(qs_env%almo_scf_env)) THEN
1786 CALL almo_scf_env_release(qs_env%almo_scf_env)
1787 END IF
1788
1789 IF (ASSOCIATED(qs_env%ls_scf_env)) THEN
1790 CALL ls_scf_release(qs_env%ls_scf_env)
1791 END IF
1792 IF (ASSOCIATED(qs_env%molecular_scf_guess_env)) THEN
1793 CALL molecular_scf_guess_env_destroy(qs_env%molecular_scf_guess_env)
1794 DEALLOCATE (qs_env%molecular_scf_guess_env)
1795 END IF
1796
1797 IF (ASSOCIATED(qs_env%transport_env)) THEN
1798 CALL transport_env_release(qs_env%transport_env)
1799 END IF
1800
1801 !Only if do_xas_calculation
1802 IF (ASSOCIATED(qs_env%xas_env)) THEN
1803 CALL xas_env_release(qs_env%xas_env)
1804 DEALLOCATE (qs_env%xas_env)
1805 END IF
1806 IF (ASSOCIATED(qs_env%ewald_env)) THEN
1807 CALL ewald_env_release(qs_env%ewald_env)
1808 DEALLOCATE (qs_env%ewald_env)
1809 END IF
1810 IF (ASSOCIATED(qs_env%ewald_pw)) THEN
1811 CALL ewald_pw_release(qs_env%ewald_pw)
1812 DEALLOCATE (qs_env%ewald_pw)
1813 END IF
1814 IF (ASSOCIATED(qs_env%image_matrix)) THEN
1815 DEALLOCATE (qs_env%image_matrix)
1816 END IF
1817 IF (ASSOCIATED(qs_env%ipiv)) THEN
1818 DEALLOCATE (qs_env%ipiv)
1819 END IF
1820 IF (ASSOCIATED(qs_env%image_coeff)) THEN
1821 DEALLOCATE (qs_env%image_coeff)
1822 END IF
1823 ! ZMP
1824 IF (ASSOCIATED(qs_env%rho_external)) THEN
1825 CALL qs_rho_release(qs_env%rho_external)
1826 DEALLOCATE (qs_env%rho_external)
1827 END IF
1828 IF (ASSOCIATED(qs_env%external_vxc)) THEN
1829 CALL qs_env%external_vxc%release()
1830 DEALLOCATE (qs_env%external_vxc)
1831 END IF
1832 IF (ASSOCIATED(qs_env%mask)) THEN
1833 CALL qs_env%mask%release()
1834 DEALLOCATE (qs_env%mask)
1835 END IF
1836 IF (ASSOCIATED(qs_env%active_space)) THEN
1837 CALL release_active_space_type(qs_env%active_space)
1838 END IF
1839 ! Embedding potentials if provided as input
1840 IF (qs_env%given_embed_pot) THEN
1841 CALL qs_env%embed_pot%release()
1842 DEALLOCATE (qs_env%embed_pot)
1843 IF (ASSOCIATED(qs_env%spin_embed_pot)) THEN
1844 CALL qs_env%spin_embed_pot%release()
1845 DEALLOCATE (qs_env%spin_embed_pot)
1846 END IF
1847 END IF
1848
1849 ! Polarisability tensor
1850 CALL polar_env_release(qs_env%polar_env)
1851
1852 IF (ASSOCIATED(qs_env%qs_charges)) THEN
1853 CALL qs_charges_release(qs_env%qs_charges)
1854 DEALLOCATE (qs_env%qs_charges)
1855 END IF
1856 CALL qs_ks_part_release(qs_env%ks_env)
1857 IF (ASSOCIATED(qs_env%ks_qmmm_env)) THEN
1858 CALL qs_ks_qmmm_release(qs_env%ks_qmmm_env)
1859 DEALLOCATE (qs_env%ks_qmmm_env)
1860 END IF
1861 CALL wfi_release(qs_env%wf_history)
1862 IF (ASSOCIATED(qs_env%scf_env)) THEN
1863 CALL scf_env_release(qs_env%scf_env)
1864 DEALLOCATE (qs_env%scf_env)
1865 END IF
1866 IF (ASSOCIATED(qs_env%cp_ddapc_env)) THEN
1867 CALL cp_ddapc_release(qs_env%cp_ddapc_env)
1868 DEALLOCATE (qs_env%cp_ddapc_env)
1869 END IF
1870 CALL cp_ddapc_ewald_release(qs_env%cp_ddapc_ewald)
1871 CALL efield_berry_release(qs_env%efield)
1872 IF (ASSOCIATED(qs_env%x_data)) THEN
1873 CALL hfx_release(qs_env%x_data)
1874 END IF
1875 IF (ASSOCIATED(qs_env%et_coupling)) THEN
1876 CALL et_coupling_release(qs_env%et_coupling)
1877 END IF
1878 IF (ASSOCIATED(qs_env%dftb_potential)) THEN
1879 CALL qs_dftb_pairpot_release(qs_env%dftb_potential)
1880 END IF
1881 IF (ASSOCIATED(qs_env%se_taper)) THEN
1882 CALL se_taper_release(qs_env%se_taper)
1883 END IF
1884 IF (ASSOCIATED(qs_env%se_store_int_env)) THEN
1885 CALL semi_empirical_si_release(qs_env%se_store_int_env)
1886 END IF
1887 IF (ASSOCIATED(qs_env%se_nddo_mpole)) THEN
1888 CALL nddo_mpole_release(qs_env%se_nddo_mpole)
1889 END IF
1890 IF (ASSOCIATED(qs_env%se_nonbond_env)) THEN
1891 CALL fist_nonbond_env_release(qs_env%se_nonbond_env)
1892 DEALLOCATE (qs_env%se_nonbond_env)
1893 END IF
1894 IF (ASSOCIATED(qs_env%admm_env)) THEN
1895 CALL admm_env_release(qs_env%admm_env)
1896 END IF
1897 IF (ASSOCIATED(qs_env%lri_env)) THEN
1898 CALL lri_env_release(qs_env%lri_env)
1899 DEALLOCATE (qs_env%lri_env)
1900 END IF
1901 IF (ASSOCIATED(qs_env%lri_density)) THEN
1902 CALL lri_density_release(qs_env%lri_density)
1903 DEALLOCATE (qs_env%lri_density)
1904 END IF
1905 IF (ASSOCIATED(qs_env%harris_env)) THEN
1906 CALL harris_env_release(qs_env%harris_env)
1907 END IF
1908 IF (ASSOCIATED(qs_env%ec_env)) THEN
1909 CALL ec_env_release(qs_env%ec_env)
1910 END IF
1911 IF (ASSOCIATED(qs_env%exstate_env)) THEN
1912 CALL exstate_release(qs_env%exstate_env)
1913 END IF
1914 IF (ASSOCIATED(qs_env%mp2_env)) THEN
1915 CALL mp2_env_release(qs_env%mp2_env)
1916 DEALLOCATE (qs_env%mp2_env)
1917 NULLIFY (qs_env%mp2_env)
1918 END IF
1919 IF (ASSOCIATED(qs_env%kg_env)) THEN
1920 CALL kg_env_release(qs_env%kg_env)
1921 END IF
1922
1923 ! dispersion
1924 CALL qs_dispersion_release(qs_env%dispersion_env)
1925 ! gCP
1926 IF (ASSOCIATED(qs_env%gcp_env)) THEN
1927 CALL qs_gcp_release(qs_env%gcp_env)
1928 END IF
1929
1930 IF (ASSOCIATED(qs_env%WannierCentres)) THEN
1931 DO i = 1, SIZE(qs_env%WannierCentres)
1932 DEALLOCATE (qs_env%WannierCentres(i)%WannierHamDiag)
1933 DEALLOCATE (qs_env%WannierCentres(i)%centres)
1934 END DO
1935 DEALLOCATE (qs_env%WannierCentres)
1936 END IF
1937 ! EEQ charges
1938 IF (ASSOCIATED(qs_env%eeq)) DEALLOCATE (qs_env%eeq)
1939 ! Resp charges
1940 IF (ASSOCIATED(qs_env%rhs)) DEALLOCATE (qs_env%rhs)
1941
1942 ! tblite
1943 IF (ASSOCIATED(qs_env%tb_tblite)) THEN
1944 CALL deallocate_tblite_type(qs_env%tb_tblite)
1945 END IF
1946
1947 IF (ASSOCIATED(qs_env%gauxc_cache)) THEN
1948 CALL gauxc_cache_release(qs_env%gauxc_cache)
1949 DEALLOCATE (qs_env%gauxc_cache)
1950 END IF
1951
1952 CALL release_native_grid_cache(qs_env%native_grid_cache)
1953
1954 END SUBROUTINE qs_env_part_release
1955
1956END MODULE qs_environment_types
Types and set/get functions for auxiliary density matrix methods.
Definition admm_types.F:15
subroutine, public admm_env_release(admm_env)
releases the ADMM environment, cleans up all types
Definition admm_types.F:429
Types for all ALMO-based methods.
subroutine, public almo_scf_env_release(almo_scf_env)
release the almo scf envirnoment
Define the atomic kind types and their sub types.
Holds information on atomic properties.
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:704
subroutine, public cell_retain(cell)
retains the given cell (see doc/ReferenceCounting.html)
Definition cell_types.F:687
methods related to the blacs parallel environment
Defines control structures, which contain the parameters and the settings for the DFT-based calculati...
subroutine, public dbcsr_release_p(matrix)
...
contains information regarding the decoupling/recoupling method of Bloechl
subroutine, public cp_ddapc_release(cp_ddapc_env)
...
subroutine, public cp_ddapc_ewald_release(cp_ddapc_ewald)
...
represent a full matrix distributed on many processors
Definition cp_fm_types.F:15
set of type/routines to handle the storage of results in force_envs
types that represent a subsys, i.e. a part of the system
stores a lists of integer that are local to a processor. The idea is that these integers represent ob...
stores a mapping of 2D info (e.g. matrix) on a 2D processor distribution (i.e. blacs grid) where cpus...
Types needed for a linear scaling quickstep SCF run based on the density matrix.
subroutine, public ls_scf_release(ls_scf_env)
release the LS type.
Types needed for a for a Energy Correction.
subroutine, public ec_env_release(ec_env)
...
Definition and initialisation of the et_coupling data type.
subroutine, public et_coupling_release(et_coupling)
...
calculates the electron transfer coupling elements Wu, Van Voorhis, JCP 125, 164105 (2006)
Definition et_coupling.F:13
subroutine, public ewald_env_release(ewald_env)
releases the given ewald_env (see doc/ReferenceCounting.html)
subroutine, public ewald_pw_release(ewald_pw)
releases the memory used by the ewald_pw
Types for excited states potential energies.
subroutine, public exstate_release(ex_env)
...
subroutine, public fist_nonbond_env_release(fist_nonbond_env)
releases the given fist_nonbond_env (see doc/ReferenceCounting.html)
Define type storing the global information of a run. Keep the amount of stored data small....
subroutine, public get_hartree_local(hartree_local, ecoul_1c)
...
subroutine, public set_hartree_local(hartree_local, ecoul_1c)
...
subroutine, public hartree_local_release(hartree_local)
...
subroutine, public hartree_local_create(hartree_local)
...
Types and set/get functions for HFX.
Definition hfx_types.F:16
subroutine, public hfx_release(x_data)
This routine deallocates all data structures
Definition hfx_types.F:1971
collects all constants needed in input so that they can be used without circular dependencies
integer, parameter, public energy_run
integer, parameter, public energy_force_run
objects that represent the structure of input sections and the data contained in an input section
subroutine, public section_vals_retain(section_vals)
retains the given section values (see doc/ReferenceCounting.html)
recursive subroutine, public section_vals_release(section_vals)
releases the given object
Types needed for a Kim-Gordon-like partitioning into molecular subunits.
subroutine, public kg_env_release(kg_env)
...
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.
contains the types and subroutines for dealing with the lri_env lri : local resolution of the identit...
subroutine, public lri_density_release(lri_density)
releases the given lri_density
subroutine, public lri_env_release(lri_env)
releases the given lri_env
Interface to the message passing library MPI.
Define the molecule kind structure types and the corresponding functionality.
Define the data structure for the molecule information.
Types needed for MP2 calculations.
Definition mp2_types.F:14
subroutine, public mp2_env_release(mp2_env)
...
Definition mp2_types.F:408
Types used to generate the molecular SCF guess.
Definition mscfg_types.F:14
subroutine, public molecular_scf_guess_env_destroy(env)
Destroyes both data and environment.
Definition mscfg_types.F:94
Define the data structure for the particle information.
subroutine, public bs_env_release(bs_env)
...
container for various plainwaves related things
The types needed for the calculation of active space Hamiltonians.
subroutine, public release_active_space_type(active_space_env)
Releases all quantities in the active space environment.
container for information about total charges on the grids
subroutine, public qs_charges_release(qs_charges)
releases the charges object (see cp2k/doc/ReferenceCounting.html)
Types used by CNEO-DFT (see J. Chem. Theory Comput. 2025, 21, 16, 7865–7877).
Definition of the DFTB parameter types.
subroutine, public qs_dftb_pairpot_release(pairpot)
...
Definition of disperson types for DFT calculations.
subroutine, public qs_dispersion_release(dispersion_env)
...
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, mimic, 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, sab_cneo, 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, matrix_vhxc, 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, xcint_weights, 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, rhoz_cneo_set, ecoul_1c, rho0_s_rs, rho0_s_gs, rhoz_cneo_s_rs, rhoz_cneo_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, do_rixs, tb_tblite)
Get the QUICKSTEP environment.
subroutine, public qs_env_release(qs_env)
releases the given qs_env (see doc/ReferenceCounting.html)
subroutine, public qs_env_part_release(qs_env)
releases part of the given qs_env in order to save memory
subroutine, public qs_env_create(qs_env, globenv)
allocates and intitializes a qs_env
subroutine, public set_qs_env(qs_env, super_cell, mos, qmmm, qmmm_periodic, mimic, 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, rhoz_cneo_set, 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, harris_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, eeq, rhs, do_rixs, tb_tblite)
Set the QUICKSTEP environment.
Definition of gCP types for DFT calculations.
subroutine, public qs_gcp_release(gcp_env)
...
Types needed for a for a Harris model calculation.
subroutine, public harris_env_release(harris_env)
...
Define the quickstep kind type and their sub types.
subroutine, public qs_ks_qmmm_release(ks_qmmm_env)
releases the ks_qmmm_env (see doc/ReferenceCounting.html)
subroutine, public set_ks_env(ks_env, v_hartree_rspace, s_mstruct_changed, rho_changed, exc_accint, 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_vhxc, 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, vppl, xcint_weights, rho_core, rho_nlcc, rho_nlcc_g, vee, neighbor_list_id, kpoints, 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, sab_cneo, task_list, task_list_soft, subsys, dft_control, dbcsr_dist, distribution_2d, pw_env, para_env, blacs_env)
...
subroutine, public qs_ks_release(ks_env)
releases the ks_env (see doc/ReferenceCounting.html)
subroutine, public qs_ks_part_release(ks_env)
releases part of the ks_env
subroutine, public get_ks_env(ks_env, v_hartree_rspace, s_mstruct_changed, rho_changed, exc_accint, 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_vhxc, 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, xcint_weights, 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, sab_cneo, 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)
...
Type definitiona for linear response calculations.
subroutine, public polar_env_release(polar_env)
Deallocate the polar environment.
subroutine, public linres_control_release(linres_control)
...
subroutine, public local_rho_set_create(local_rho_set)
...
subroutine, public get_local_rho(local_rho_set, rho_atom_set, rho0_atom_set, rho0_mpole, rhoz_set, rhoz_cneo_set)
...
subroutine, public local_rho_set_release(local_rho_set)
...
subroutine, public set_local_rho(local_rho_set, rho_atom_set, rho0_atom_set, rho0_mpole, rhoz_set, rhoz_cneo_set)
...
wrapper for the pools of matrixes
subroutine, public mpools_release(mpools)
releases the given mpools
subroutine, public mpools_retain(mpools)
retains the given qs_matrix_pools_type
Definition and initialisation of the mo data type.
Definition qs_mo_types.F:22
subroutine, public deallocate_mo_set(mo_set)
Deallocate a wavefunction data structure.
Bounded geometry-only cache for native atom-grid interpolation.
subroutine, public release_native_grid_cache(cache)
Release geometry storage, including when the QS environment is only partly released.
Define the neighbor list data types and the corresponding functionality.
subroutine, public deallocate_oce_set(oce_set)
Deallocate the matrix set of oce coefficients.
type for berry phase efield matrices. At the moment only used for cosmat and sinmat
subroutine, public efield_berry_release(efield)
...
superstucture that hold various representations of the density and keeps track of which ones are vali...
subroutine, public qs_rho_release(rho_struct)
releases a rho_struct by decreasing the reference count by one and deallocating if it reaches 0 (to b...
module that contains the definitions of the scf types
subroutine, public scf_env_release(scf_env)
releases an scf_env (see doc/ReferenceCounting.html)
types that represent a quickstep subsys
subroutine, public qs_subsys_set(subsys, cp_subsys, local_particles, local_molecules, cell, cell_ref, use_ref_cell, energy, force, qs_kind_set, nelectron_total, nelectron_spin)
...
interpolate the wavefunctions to speed up the convergence when doing MD
subroutine, public wfi_retain(wf_history)
retains a wf history (see doc/ReferenceCounting.html)
subroutine, public wfi_release(wf_history)
releases a wf_history of a wavefunction (see doc/ReferenceCounting.html)
parameters that control a relativistic calculation
subroutine, public rel_c_release(rel_control)
releases the given rel_control (see cp2k/doc/ReferenceCounting.html)
Types and set_get for real time propagation depending on runtype and diagonalization method different...
subroutine, public rt_prop_release(rtp)
...
parameters that control an scf iteration
subroutine, public scf_c_release(scf_control)
releases the given scf_control (see cp2k/doc/ReferenceCounting.html)
Definition of the semi empirical multipole integral expansions types.
subroutine, public nddo_mpole_release(nddo_mpole)
Deallocate NDDO multipole type.
Type to store integrals for semi-empirical calculations.
subroutine, public semi_empirical_si_release(store_int_env)
Deallocate the semi-empirical store integrals type.
Definition of the semi empirical parameter types.
subroutine, public se_taper_release(se_taper)
Releases the taper type used in SE calculations.
types for task lists
types for tblite
subroutine, public deallocate_tblite_type(tb_tblite)
...
CP2K transport environment and related C-interoperable types.
subroutine, public transport_env_release(transport_env)
releases the transport_env
defines the type needed for computing wannier states expectations
define create destroy get and put information in xas_env to calculate the x-ray absorption spectra
subroutine, public xas_env_release(xas_env)
...
subroutine, public gauxc_cache_release(cache)
Release all GauXC objects in a cache and deallocate arrays.
stores some data used in wavefunction fitting
Definition admm_types.F:120
Provides all information about an atomic kind.
type for the atomic properties
Type defining parameters related to the simulation cell.
Definition cell_types.F:60
represent a blacs multidimensional parallel environment (for the mpi corrispective see cp_paratypes/m...
represent a full matrix
contains arbitrary information which need to be stored
represents a system: atoms, molecules, their pos,vel,...
structure to store local (to a processor) ordered lists of integers.
distributes pairs on a 2d grid of processors
Contains information on the energy correction functional for KG.
Contains information on the excited states energy.
contains the initially parsed file and the initial parallel environment
stores some data used in construction of Kohn-Sham matrix
Definition hfx_types.F:514
Contains all the info needed for KG runs...
Contains information about kpoints.
stores all the informations relevant to an mpi environment
contained for different pw related things
Container for information about total charges on the grids.
Contains information on the Harris method.
Provides all information about a quickstep kind.
calculation environment to calculate the ks_qmmm matrix, holds the QM/MM potential and all the needed...
calculation environment to calculate the ks matrix, holds all the needed vars. assumes that the core ...
General settings for linear response calculations.
container for the pools of matrixes used by qs
keeps the density in various representations, keeping track of which ones are valid.
keeps track of the previous wavefunctions and can extrapolate them for the next step of md
contains the parameters needed by a relativistic calculation
Global Multipolar NDDO information type.
Taper type use in semi-empirical calculations.