|
CP2K 2.4 (Revision 12889)
|
00001 !-----------------------------------------------------------------------------! 00002 ! CP2K: A general program to perform molecular dynamics simulations ! 00003 ! Copyright (C) 2000 - 2013 CP2K developers group ! 00004 !-----------------------------------------------------------------------------! 00005 00006 ! ***************************************************************************** 00012 MODULE qs_environment_types 00013 USE admm_types, ONLY: admm_env_release,& 00014 admm_type 00015 USE atomic_kind_list_types, ONLY: atomic_kind_list_type 00016 USE atomic_kind_types, ONLY: atomic_kind_type 00017 USE atprop_types, ONLY: atprop_type 00018 USE cell_types, ONLY: cell_release,& 00019 cell_retain,& 00020 cell_type 00021 USE cp_blacs_env, ONLY: cp_blacs_env_create,& 00022 cp_blacs_env_release 00023 USE cp_control_types, ONLY: dft_control_release,& 00024 dft_control_retain,& 00025 dft_control_type,& 00026 tddfpt_control_type 00027 USE cp_dbcsr_interface, ONLY: cp_dbcsr_distribution_release,& 00028 cp_dbcsr_release_p 00029 USE cp_dbcsr_operations, ONLY: cp_dbcsr_deallocate_matrix_set 00030 USE cp_dbcsr_types, ONLY: cp_dbcsr_p_type 00031 USE cp_ddapc_types, ONLY: cp_ddapc_ewald_release,& 00032 cp_ddapc_ewald_type,& 00033 cp_ddapc_release,& 00034 cp_ddapc_retain,& 00035 cp_ddapc_type 00036 USE cp_fm_pool_types, ONLY: cp_fm_pool_type 00037 USE cp_fm_types, ONLY: cp_fm_get_info,& 00038 cp_fm_p_type,& 00039 cp_fm_release,& 00040 cp_fm_type 00041 USE cp_para_env, ONLY: cp_para_env_release,& 00042 cp_para_env_retain 00043 USE cp_para_types, ONLY: cp_blacs_env_type,& 00044 cp_para_env_type 00045 USE cp_result_types, ONLY: cp_result_create,& 00046 cp_result_release,& 00047 cp_result_type 00048 USE cp_subsys_types, ONLY: cp_subsys_create,& 00049 cp_subsys_get,& 00050 cp_subsys_release,& 00051 cp_subsys_retain,& 00052 cp_subsys_type 00053 USE dbcsr_types, ONLY: dbcsr_distribution_obj 00054 USE distribution_1d_types, ONLY: distribution_1d_type 00055 USE distribution_2d_types, ONLY: distribution_2d_release,& 00056 distribution_2d_retain,& 00057 distribution_2d_type 00058 USE dm_ls_scf_types, ONLY: ls_scf_env_type,& 00059 ls_scf_release 00060 USE ep_qs_types, ONLY: ep_qs_release,& 00061 ep_qs_retain,& 00062 ep_qs_type 00063 USE et_coupling_types, ONLY: et_coupling_release,& 00064 et_coupling_type 00065 USE ewald_environment_types, ONLY: ewald_env_release,& 00066 ewald_env_retain,& 00067 ewald_environment_type 00068 USE ewald_pw_types, ONLY: ewald_pw_release,& 00069 ewald_pw_retain,& 00070 ewald_pw_type 00071 USE f77_blas 00072 USE fist_nonbond_env_types, ONLY: fist_nonbond_env_release,& 00073 fist_nonbond_env_type 00074 USE ga_environment_types, ONLY: ga_env_release,& 00075 ga_env_retain,& 00076 ga_environment_type 00077 USE global_types, ONLY: global_environment_type 00078 USE harris_env_types, ONLY: harris_env_release,& 00079 harris_env_type 00080 USE hartree_local_types, ONLY: ecoul_1center_type,& 00081 get_hartree_local,& 00082 hartree_local_create,& 00083 hartree_local_release,& 00084 hartree_local_type,& 00085 set_hartree_local 00086 USE hfx_types, ONLY: hfx_release,& 00087 hfx_type 00088 USE input_section_types, ONLY: section_vals_release,& 00089 section_vals_retain,& 00090 section_vals_type 00091 USE kg_environment_types, ONLY: kg_env_release,& 00092 kg_environment_type 00093 USE kinds, ONLY: dp 00094 USE lri_environment_types, ONLY: lri_density_release,& 00095 lri_density_type,& 00096 lri_env_release,& 00097 lri_environment_type 00098 USE mol_kind_new_list_types, ONLY: mol_kind_new_list_type 00099 USE mol_new_list_types, ONLY: mol_new_list_type 00100 USE molecule_kind_types, ONLY: molecule_kind_type 00101 USE molecule_types_new, ONLY: molecule_type 00102 USE mp2_types, ONLY: mp2_env_release,& 00103 mp2_type 00104 USE particle_list_types, ONLY: particle_list_type 00105 USE particle_types, ONLY: particle_type 00106 USE pw_env_types, ONLY: pw_env_release,& 00107 pw_env_retain,& 00108 pw_env_type 00109 USE pw_types, ONLY: pw_p_type,& 00110 pw_release 00111 USE qmmm_types, ONLY: qmmm_env_qm_type 00112 USE qs_charges_types, ONLY: qs_charges_release,& 00113 qs_charges_retain,& 00114 qs_charges_type 00115 USE qs_dftb_types, ONLY: qs_dftb_pairpot_release,& 00116 qs_dftb_pairpot_type 00117 USE qs_dispersion_types, ONLY: qs_dispersion_type 00118 USE qs_energy_types, ONLY: deallocate_qs_energy,& 00119 qs_energy_type 00120 USE qs_force_types, ONLY: deallocate_qs_force,& 00121 qs_force_type 00122 USE qs_ks_qmmm_types, ONLY: qs_ks_qmmm_env_type,& 00123 qs_ks_qmmm_release,& 00124 qs_ks_qmmm_retain 00125 USE qs_ks_types, ONLY: qs_ks_env_type,& 00126 qs_ks_release,& 00127 qs_ks_retain 00128 USE qs_linres_types, ONLY: linres_control_release,& 00129 linres_control_retain,& 00130 linres_control_type 00131 USE qs_local_rho_types, ONLY: get_local_rho,& 00132 local_rho_set_create,& 00133 local_rho_set_release,& 00134 local_rho_type,& 00135 rhoz_type,& 00136 set_local_rho 00137 USE qs_matrix_pools, ONLY: mpools_get,& 00138 mpools_release,& 00139 mpools_retain,& 00140 qs_matrix_pools_type 00141 USE qs_mo_methods, ONLY: make_basis_cholesky,& 00142 make_basis_lowdin,& 00143 make_basis_simple,& 00144 make_basis_sm 00145 USE qs_mo_types, ONLY: deallocate_mo_set,& 00146 mo_set_p_type 00147 USE qs_neighbor_list_types, ONLY: deallocate_neighbor_list_set,& 00148 neighbor_list_set_p_type 00149 USE qs_oce_types, ONLY: deallocate_oce_set,& 00150 oce_matrix_type 00151 USE qs_period_efield_types, ONLY: efield_berry_release,& 00152 efield_berry_type 00153 USE qs_rho0_types, ONLY: rho0_atom_type,& 00154 rho0_mpole_type 00155 USE qs_rho_atom_types, ONLY: rho_atom_type 00156 USE qs_rho_types, ONLY: qs_rho_release,& 00157 qs_rho_retain,& 00158 qs_rho_type 00159 USE qs_scf_types, ONLY: ot_method_nr,& 00160 qs_scf_env_type,& 00161 scf_env_release,& 00162 scf_env_retain 00163 USE qs_wf_history_types, ONLY: qs_wf_history_type,& 00164 wfi_release,& 00165 wfi_retain 00166 USE rel_control_types, ONLY: rel_c_release,& 00167 rel_c_retain,& 00168 rel_control_type 00169 USE ri_environment_types, ONLY: ri_env_release,& 00170 ri_environment_type 00171 USE rt_propagation_types, ONLY: rt_prop_release,& 00172 rt_prop_type 00173 USE scf_control_types, ONLY: scf_c_release,& 00174 scf_c_retain,& 00175 scf_control_type 00176 USE scp_environment_types, ONLY: scp_env_release,& 00177 scp_env_retain,& 00178 scp_environment_type 00179 USE semi_empirical_mpole_types, ONLY: nddo_mpole_release,& 00180 nddo_mpole_type 00181 USE semi_empirical_store_int_types, ONLY: semi_empirical_si_release,& 00182 semi_empirical_si_type 00183 USE semi_empirical_types, ONLY: se_taper_release,& 00184 se_taper_type 00185 USE task_list_types, ONLY: deallocate_task_list,& 00186 task_list_type 00187 USE timings, ONLY: timeset,& 00188 timestop 00189 USE virial_types, ONLY: virial_release,& 00190 virial_retain,& 00191 virial_type 00192 USE wannier_states_types, ONLY: wannier_centres_type 00193 USE xas_env_types, ONLY: xas_env_release,& 00194 xas_env_retain,& 00195 xas_environment_type 00196 #include "cp_common_uses.h" 00197 00198 IMPLICIT NONE 00199 00200 PRIVATE 00201 00202 CHARACTER(len=*), PARAMETER, PRIVATE :: moduleN = 'qs_environment_types' 00203 INTEGER, PRIVATE, SAVE :: last_qs_env_id_nr=0 00204 00205 ! *** Public data types *** 00206 00207 PUBLIC :: qs_environment_p_type,& 00208 qs_environment_type 00209 00210 ! *** Public subroutines *** 00211 00212 PUBLIC :: get_qs_env,& 00213 init_qs_env,& 00214 qs_env_create,& 00215 qs_env_release,& 00216 qs_env_reorthogonalize_vectors,& 00217 qs_env_retain,& 00218 set_qs_env 00219 00220 ! ***************************************************************************** 00322 TYPE qs_environment_type 00323 INTEGER :: id_nr, ref_count 00324 LOGICAL :: use_ref_cell 00325 LOGICAL :: qmmm, qmmm_periodic 00326 LOGICAL :: requires_mo_derivs 00327 LOGICAL :: requires_matrix_vxc 00328 LOGICAL :: has_unit_metric 00329 LOGICAL :: use_harris 00330 LOGICAL :: run_rtp 00331 LOGICAL :: calc_image_preconditioner 00332 INTEGER :: nelectron_total 00333 INTEGER :: nelectron_spin(2) 00334 REAL(KIND=dp) :: sim_time 00335 REAL(KIND=dp) :: start_time, target_time 00336 REAL(KIND=dp),DIMENSION(:,:),POINTER :: image_matrix 00337 REAL(KIND=dp),DIMENSION(:),POINTER :: image_coeff 00338 INTEGER,DIMENSION(:),POINTER :: ipiv 00339 INTEGER :: sim_step 00340 TYPE(ga_environment_type), POINTER :: ga_env 00341 TYPE(ls_scf_env_type), POINTER :: ls_scf_env 00342 TYPE(cell_type), POINTER :: cell, super_cell 00343 TYPE(cell_type), POINTER :: cell_ref 00344 TYPE(dft_control_type), POINTER :: dft_control 00345 TYPE(mo_set_p_type), DIMENSION(:), POINTER :: mos, mos_aux_fit 00346 TYPE(cp_fm_p_type), DIMENSION(:), POINTER :: mo_derivs_aux_fit 00347 TYPE(cp_fm_p_type), DIMENSION(:), POINTER :: mo_loc_history 00348 TYPE(cp_dbcsr_p_type), DIMENSION(:), POINTER :: mo_derivs 00349 INTEGER :: neighbor_list_id 00350 TYPE(neighbor_list_set_p_type), DIMENSION(:), POINTER :: sab_orb,sac_ae, 00351 sac_ppl,sap_ppnl, 00352 sap_oce,sab_se,sab_vdw,sab_cn, 00353 sab_tbe,sab_core,sab_all,sab_scp, 00354 sab_aux_fit, sab_aux_fit_vs_orb, 00355 sab_aux_fit_asymm, sab_lrc 00356 TYPE(qs_energy_type), POINTER :: energy 00357 TYPE(qs_force_type), DIMENSION(:), POINTER :: force 00358 TYPE(harris_env_type), POINTER :: harris_env 00359 TYPE(cp_dbcsr_p_type), DIMENSION(:), POINTER :: matrix_h, 00360 matrix_ks, 00361 matrix_vxc, 00362 matrix_s, 00363 kinetic, 00364 matrix_w, 00365 gamma_matrix, 00366 matrix_s_aux_fit, 00367 matrix_s_aux_fit_vs_orb, 00368 matrix_ks_aux_fit 00369 TYPE(qs_rho_type), POINTER :: rho, 00370 rho_buffer, 00371 rho_xc, 00372 rho_aux_fit 00373 TYPE(scf_control_type), POINTER :: scf_control 00374 TYPE(rel_control_type), POINTER :: rel_control 00375 TYPE(scp_environment_type), POINTER :: scp_env 00376 TYPE(pw_env_type), POINTER :: pw_env 00377 TYPE(cp_para_env_type), POINTER :: para_env 00378 TYPE(cp_blacs_env_type), POINTER :: blacs_env 00379 TYPE(pw_p_type), POINTER :: rho_core 00380 TYPE(pw_p_type), POINTER :: vppl 00381 TYPE(pw_p_type), POINTER :: rho_nlcc 00382 TYPE(pw_p_type), POINTER :: rho_nlcc_g 00383 TYPE(pw_p_type), POINTER :: vee 00384 TYPE(qs_charges_type), POINTER :: qs_charges 00385 TYPE(qs_ks_env_type), POINTER :: ks_env 00386 TYPE(qs_ks_qmmm_env_type), POINTER :: ks_qmmm_env 00387 TYPE(qmmm_env_qm_type),POINTER :: qmmm_env_qm 00388 TYPE(qs_wf_history_type), POINTER :: wf_history 00389 TYPE(qs_scf_env_type), POINTER :: scf_env 00390 TYPE(qs_matrix_pools_type), POINTER :: mpools 00391 TYPE(qs_matrix_pools_type), POINTER :: mpools_aux_fit 00392 TYPE(distribution_2d_type), POINTER :: distribution_2d 00393 TYPE(dbcsr_distribution_obj), POINTER :: dbcsr_dist 00394 TYPE(cp_subsys_type), POINTER :: subsys 00395 TYPE(oce_matrix_type), POINTER :: oce 00396 TYPE(local_rho_type), POINTER :: local_rho_set 00397 TYPE(hartree_local_type), POINTER :: hartree_local 00398 TYPE(section_vals_type), POINTER :: input 00399 TYPE(linres_control_type), POINTER :: linres_control 00400 TYPE(xas_environment_type), POINTER :: xas_env 00401 TYPE(cp_ddapc_type), POINTER :: cp_ddapc_env 00402 TYPE(cp_ddapc_ewald_type), POINTER :: cp_ddapc_ewald 00403 TYPE(virial_type), POINTER :: virial 00404 REAL(KIND = dp), DIMENSION(:,:), POINTER :: outer_scf_history 00405 INTEGER :: outer_scf_ihistory 00406 TYPE(ep_qs_type), POINTER :: ep_qs_env 00407 TYPE(hfx_type),DIMENSION(:,:), POINTER :: x_data 00408 TYPE(et_coupling_type),POINTER :: et_coupling 00409 TYPE(qs_dftb_pairpot_type), DIMENSION(:,:), POINTER :: dftb_potential 00410 TYPE(cp_result_type) ,POINTER :: results 00411 TYPE(task_list_type), POINTER :: task_list 00412 TYPE(task_list_type), POINTER :: task_list_aux_fit 00413 TYPE(task_list_type), POINTER :: task_list_soft 00414 TYPE(admm_type), POINTER :: admm_env 00415 ! LRI 00416 TYPE(lri_environment_type), POINTER :: lri_env 00417 TYPE(lri_density_type), POINTER :: lri_density 00418 ! HFX RI 00419 TYPE(ri_environment_type), POINTER :: hfx_ri_env 00420 ! Empirical dispersion 00421 TYPE(qs_dispersion_type), POINTER :: dispersion_env 00422 ! Semi-empirical and DFTB types 00423 TYPE(ewald_environment_type),POINTER :: ewald_env 00424 TYPE(ewald_pw_type),POINTER :: ewald_pw 00425 ! Semi-empirical types 00426 TYPE(se_taper_type), POINTER :: se_taper 00427 TYPE(semi_empirical_si_type),POINTER :: se_store_int_env 00428 TYPE(nddo_mpole_type), POINTER :: se_nddo_mpole 00429 TYPE(fist_nonbond_env_type), POINTER :: se_nonbond_env 00430 TYPE(rt_prop_type),POINTER :: rtp 00431 TYPE(efield_berry_type),POINTER :: efield 00432 ! a history for the broyden ot 00433 REAL(KIND = dp) :: broyden_adaptive_sigma 00434 TYPE(mp2_type), POINTER :: mp2_env 00435 TYPE(kg_environment_type), POINTER :: kg_env 00436 TYPE(wannier_centres_type), POINTER,DIMENSION(:) :: WannierCentres=>NULL() 00437 ! atomic properties 00438 TYPE(atprop_type),POINTER :: atprop 00439 END TYPE qs_environment_type 00440 00441 ! ***************************************************************************** 00448 TYPE qs_environment_p_type 00449 TYPE(qs_environment_type), POINTER :: qs_env 00450 END TYPE qs_environment_p_type 00451 00452 CONTAINS 00453 00454 ! ***************************************************************************** 00460 SUBROUTINE get_qs_env(qs_env,atomic_kind_set,cell,super_cell,cell_ref,use_ref_cell,& 00461 dft_control,mos,mos_aux_fit,sab_orb,sab_aux_fit,sab_aux_fit_asymm, sab_aux_fit_vs_orb,& 00462 sab_all,qmmm,qmmm_periodic,sac_ae,sac_ppl,sap_ppnl,sab_vdw,sab_cn,sab_scp,sap_oce,sab_lrc,& 00463 sab_se,sab_tbe,sab_core,particle_set,energy,force,harris_env,matrix_h,matrix_ks,matrix_vxc,run_rtp,rtp,& 00464 matrix_ks_aux_fit,matrix_s,matrix_s_aux_fit,matrix_s_aux_fit_vs_orb,matrix_w,& 00465 gamma_matrix, rho, rho_aux_fit,rho_buffer, rho_xc, pw_env, ewald_env, ewald_pw, & 00466 mpools,mpools_aux_fit,input, para_env, blacs_env, scf_control,rel_control,kinetic,qs_charges,& 00467 vppl, rho_core, rho_nlcc, rho_nlcc_g, ks_env, ks_qmmm_env, wf_history,scf_env,use_harris, id_nr, local_particles,& 00468 local_molecules, distribution_2d, dbcsr_dist, molecule_kind_set,molecule_set,subsys,oce,rho_atom_set,& 00469 task_list,task_list_aux_fit,task_list_soft,rho0_atom_set,rho0_mpole,rhoz_set,ecoul_1c,& 00470 rho0_s_rs,rho0_s_gs,has_unit_metric,requires_mo_derivs,mo_derivs,& 00471 mo_derivs_aux_fit, mo_loc_history, tddfpt_control,nkind,natom,nelectron_total,nelectron_spin,efield,& 00472 neighbor_list_id,linres_control,xas_env,virial,cp_ddapc_env,cp_ddapc_ewald,& 00473 outer_scf_history,outer_scf_ihistory,ep_qs_env,x_data,et_coupling,dftb_potential,results,& 00474 scp_env,se_taper,se_store_int_env,se_nddo_mpole,se_nonbond_env, admm_env, & 00475 lri_env,lri_density,hfx_ri_env,dispersion_env, vee,mp2_env,kg_env,WannierCentres,ga_env,atprop,ls_scf_env,error) 00476 TYPE(qs_environment_type), POINTER :: qs_env 00477 TYPE(atomic_kind_type), DIMENSION(:), 00478 OPTIONAL, POINTER :: atomic_kind_set 00479 TYPE(cell_type), OPTIONAL, POINTER :: cell, super_cell, cell_ref 00480 LOGICAL, OPTIONAL :: use_ref_cell 00481 TYPE(dft_control_type), OPTIONAL, 00482 POINTER :: dft_control 00483 TYPE(mo_set_p_type), DIMENSION(:), 00484 OPTIONAL, POINTER :: mos, mos_aux_fit 00485 TYPE(neighbor_list_set_p_type), 00486 DIMENSION(:), OPTIONAL, POINTER :: sab_orb, sab_aux_fit, 00487 sab_aux_fit_asymm, 00488 sab_aux_fit_vs_orb, sab_all 00489 LOGICAL, OPTIONAL :: qmmm, qmmm_periodic 00490 TYPE(neighbor_list_set_p_type), DIMENSION(:), OPTIONAL, POINTER :: 00491 sac_ae, sac_ppl, sap_ppnl, sab_vdw, sab_cn, sab_scp, sap_oce, sab_lrc, 00492 sab_se, sab_tbe, sab_core 00493 TYPE(particle_type), DIMENSION(:), 00494 OPTIONAL, POINTER :: particle_set 00495 TYPE(qs_energy_type), OPTIONAL, POINTER :: energy 00496 TYPE(qs_force_type), DIMENSION(:), 00497 OPTIONAL, POINTER :: force 00498 TYPE(harris_env_type), OPTIONAL, POINTER :: harris_env 00499 TYPE(cp_dbcsr_p_type), DIMENSION(:), 00500 OPTIONAL, POINTER :: matrix_h, matrix_ks, 00501 matrix_vxc 00502 LOGICAL, OPTIONAL :: run_rtp 00503 TYPE(rt_prop_type), OPTIONAL, POINTER :: rtp 00504 TYPE(cp_dbcsr_p_type), DIMENSION(:), OPTIONAL, POINTER :: 00505 matrix_ks_aux_fit, matrix_s, matrix_s_aux_fit, matrix_s_aux_fit_vs_orb, 00506 matrix_w, gamma_matrix 00507 TYPE(qs_rho_type), OPTIONAL, POINTER :: rho, rho_aux_fit, rho_buffer, 00508 rho_xc 00509 TYPE(pw_env_type), OPTIONAL, POINTER :: pw_env 00510 TYPE(ewald_environment_type), OPTIONAL, 00511 POINTER :: ewald_env 00512 TYPE(ewald_pw_type), OPTIONAL, POINTER :: ewald_pw 00513 TYPE(qs_matrix_pools_type), OPTIONAL, 00514 POINTER :: mpools, mpools_aux_fit 00515 TYPE(section_vals_type), OPTIONAL, 00516 POINTER :: input 00517 TYPE(cp_para_env_type), OPTIONAL, 00518 POINTER :: para_env 00519 TYPE(cp_blacs_env_type), OPTIONAL, 00520 POINTER :: blacs_env 00521 TYPE(scf_control_type), OPTIONAL, 00522 POINTER :: scf_control 00523 TYPE(rel_control_type), OPTIONAL, 00524 POINTER :: rel_control 00525 TYPE(cp_dbcsr_p_type), DIMENSION(:), 00526 OPTIONAL, POINTER :: kinetic 00527 TYPE(qs_charges_type), OPTIONAL, POINTER :: qs_charges 00528 TYPE(pw_p_type), OPTIONAL, POINTER :: vppl, rho_core, rho_nlcc, 00529 rho_nlcc_g 00530 TYPE(qs_ks_env_type), OPTIONAL, POINTER :: ks_env 00531 TYPE(qs_ks_qmmm_env_type), OPTIONAL, 00532 POINTER :: ks_qmmm_env 00533 TYPE(qs_wf_history_type), OPTIONAL, 00534 POINTER :: wf_history 00535 TYPE(qs_scf_env_type), OPTIONAL, POINTER :: scf_env 00536 LOGICAL, OPTIONAL :: use_harris 00537 INTEGER, INTENT(out), OPTIONAL :: id_nr 00538 TYPE(distribution_1d_type), OPTIONAL, 00539 POINTER :: local_particles, 00540 local_molecules 00541 TYPE(distribution_2d_type), OPTIONAL, 00542 POINTER :: distribution_2d 00543 TYPE(dbcsr_distribution_obj), OPTIONAL, 00544 POINTER :: dbcsr_dist 00545 TYPE(molecule_kind_type), DIMENSION(:), 00546 OPTIONAL, POINTER :: molecule_kind_set 00547 TYPE(molecule_type), DIMENSION(:), 00548 OPTIONAL, POINTER :: molecule_set 00549 TYPE(cp_subsys_type), OPTIONAL, POINTER :: subsys 00550 TYPE(oce_matrix_type), OPTIONAL, POINTER :: oce 00551 TYPE(rho_atom_type), DIMENSION(:), 00552 OPTIONAL, POINTER :: rho_atom_set 00553 TYPE(task_list_type), OPTIONAL, POINTER :: task_list, task_list_aux_fit, 00554 task_list_soft 00555 TYPE(rho0_atom_type), DIMENSION(:), 00556 OPTIONAL, POINTER :: rho0_atom_set 00557 TYPE(rho0_mpole_type), OPTIONAL, POINTER :: rho0_mpole 00558 TYPE(rhoz_type), DIMENSION(:), 00559 OPTIONAL, POINTER :: rhoz_set 00560 TYPE(ecoul_1center_type), DIMENSION(:), 00561 OPTIONAL, POINTER :: ecoul_1c 00562 TYPE(pw_p_type), OPTIONAL, POINTER :: rho0_s_rs, rho0_s_gs 00563 LOGICAL, OPTIONAL :: has_unit_metric, 00564 requires_mo_derivs 00565 TYPE(cp_dbcsr_p_type), DIMENSION(:), 00566 OPTIONAL, POINTER :: mo_derivs 00567 TYPE(cp_fm_p_type), DIMENSION(:), 00568 OPTIONAL, POINTER :: mo_derivs_aux_fit, 00569 mo_loc_history 00570 TYPE(tddfpt_control_type), OPTIONAL, 00571 POINTER :: tddfpt_control 00572 INTEGER, OPTIONAL :: nkind, natom, nelectron_total 00573 INTEGER, DIMENSION(2), OPTIONAL :: nelectron_spin 00574 TYPE(efield_berry_type), OPTIONAL, 00575 POINTER :: efield 00576 INTEGER, OPTIONAL :: neighbor_list_id 00577 TYPE(linres_control_type), OPTIONAL, 00578 POINTER :: linres_control 00579 TYPE(xas_environment_type), OPTIONAL, 00580 POINTER :: xas_env 00581 TYPE(virial_type), OPTIONAL, POINTER :: virial 00582 TYPE(cp_ddapc_type), OPTIONAL, POINTER :: cp_ddapc_env 00583 TYPE(cp_ddapc_ewald_type), OPTIONAL, 00584 POINTER :: cp_ddapc_ewald 00585 REAL(KIND=dp), DIMENSION(:, :), 00586 OPTIONAL, POINTER :: outer_scf_history 00587 INTEGER, INTENT(out), OPTIONAL :: outer_scf_ihistory 00588 TYPE(ep_qs_type), OPTIONAL, POINTER :: ep_qs_env 00589 TYPE(hfx_type), DIMENSION(:, :), 00590 OPTIONAL, POINTER :: x_data 00591 TYPE(et_coupling_type), OPTIONAL, 00592 POINTER :: et_coupling 00593 TYPE(qs_dftb_pairpot_type), 00594 DIMENSION(:, :), OPTIONAL, POINTER :: dftb_potential 00595 TYPE(cp_result_type), OPTIONAL, POINTER :: results 00596 TYPE(scp_environment_type), OPTIONAL, 00597 POINTER :: scp_env 00598 TYPE(se_taper_type), OPTIONAL, POINTER :: se_taper 00599 TYPE(semi_empirical_si_type), OPTIONAL, 00600 POINTER :: se_store_int_env 00601 TYPE(nddo_mpole_type), OPTIONAL, POINTER :: se_nddo_mpole 00602 TYPE(fist_nonbond_env_type), OPTIONAL, 00603 POINTER :: se_nonbond_env 00604 TYPE(admm_type), OPTIONAL, POINTER :: admm_env 00605 TYPE(lri_environment_type), OPTIONAL, 00606 POINTER :: lri_env 00607 TYPE(lri_density_type), OPTIONAL, 00608 POINTER :: lri_density 00609 TYPE(ri_environment_type), OPTIONAL, 00610 POINTER :: hfx_ri_env 00611 TYPE(qs_dispersion_type), OPTIONAL, 00612 POINTER :: dispersion_env 00613 TYPE(pw_p_type), OPTIONAL, POINTER :: vee 00614 TYPE(mp2_type), OPTIONAL, POINTER :: mp2_env 00615 TYPE(kg_environment_type), OPTIONAL, 00616 POINTER :: kg_env 00617 TYPE(wannier_centres_type), 00618 DIMENSION(:), OPTIONAL, POINTER :: WannierCentres 00619 TYPE(ga_environment_type), OPTIONAL, 00620 POINTER :: ga_env 00621 TYPE(atprop_type), OPTIONAL, POINTER :: atprop 00622 TYPE(ls_scf_env_type), OPTIONAL, POINTER :: ls_scf_env 00623 TYPE(cp_error_type), INTENT(INOUT) :: error 00624 00625 CHARACTER(len=*), PARAMETER :: routineN = 'get_qs_env', 00626 routineP = moduleN//':'//routineN 00627 00628 LOGICAL :: failure 00629 TYPE(atomic_kind_list_type), POINTER :: atomic_kinds 00630 TYPE(mol_kind_new_list_type), POINTER :: molecule_kinds_new 00631 TYPE(mol_new_list_type), POINTER :: molecules_new 00632 TYPE(particle_list_type), POINTER :: particles 00633 TYPE(rho0_mpole_type), POINTER :: rho0_m 00634 00635 failure=.FALSE. 00636 NULLIFY(atomic_kinds, particles, molecules_new,& 00637 molecule_kinds_new) 00638 CPPrecondition(qs_env%ref_count>0,cp_failure_level,routineP,error,failure) 00639 CPPrecondition(ASSOCIATED(qs_env%subsys),cp_failure_level,routineP,error,failure) 00640 IF (PRESENT(nelectron_total)) nelectron_total=qs_env%nelectron_total 00641 IF (PRESENT(nelectron_spin)) nelectron_spin=qs_env%nelectron_spin 00642 IF (PRESENT(outer_scf_history)) outer_scf_history=>qs_env%outer_scf_history 00643 IF (PRESENT(outer_scf_ihistory)) outer_scf_ihistory=qs_env%outer_scf_ihistory 00644 IF (PRESENT(ga_env)) ga_env => qs_env%ga_env 00645 IF (PRESENT(cell)) cell => qs_env%cell 00646 IF (PRESENT(mp2_env)) mp2_env => qs_env%mp2_env 00647 IF (PRESENT(kg_env)) kg_env => qs_env%kg_env 00648 IF (PRESENT(super_cell)) super_cell => qs_env%super_cell 00649 IF (PRESENT(cell_ref)) cell_ref => qs_env%cell_ref 00650 IF (PRESENT(use_ref_cell)) use_ref_cell = qs_env%use_ref_cell 00651 IF (PRESENT(qmmm)) qmmm = qs_env%qmmm 00652 IF (PRESENT(qmmm_periodic)) qmmm_periodic = qs_env%qmmm_periodic 00653 IF (PRESENT(dft_control)) dft_control => qs_env%dft_control 00654 IF (PRESENT(mos)) mos => qs_env%mos 00655 IF (PRESENT(mos_aux_fit)) mos_aux_fit => qs_env%mos_aux_fit 00656 IF (PRESENT(neighbor_list_id)) neighbor_list_id=qs_env%neighbor_list_id 00657 IF (PRESENT(sab_orb)) sab_orb => qs_env%sab_orb 00658 IF (PRESENT(sab_aux_fit)) sab_aux_fit => qs_env%sab_aux_fit 00659 IF (PRESENT(sab_aux_fit_asymm)) sab_aux_fit_asymm => qs_env%sab_aux_fit_asymm 00660 IF (PRESENT(sab_aux_fit_vs_orb)) sab_aux_fit_vs_orb => qs_env%sab_aux_fit_vs_orb 00661 IF (PRESENT(sab_all)) sab_all => qs_env%sab_all 00662 IF (PRESENT(sab_scp)) sab_scp => qs_env%sab_scp 00663 IF (PRESENT(sab_vdw)) sab_vdw => qs_env%sab_vdw 00664 IF (PRESENT(sab_cn)) sab_cn => qs_env%sab_cn 00665 IF (PRESENT(sac_ae)) sac_ae => qs_env%sac_ae 00666 IF (PRESENT(sac_ppl)) sac_ppl => qs_env%sac_ppl 00667 IF (PRESENT(sap_ppnl)) sap_ppnl => qs_env%sap_ppnl 00668 IF (PRESENT(sap_oce)) sap_oce => qs_env%sap_oce 00669 IF (PRESENT(sab_se)) sab_se => qs_env%sab_se 00670 IF (PRESENT(sab_lrc)) sab_lrc => qs_env%sab_lrc 00671 IF (PRESENT(sab_tbe)) sab_tbe => qs_env%sab_tbe 00672 IF (PRESENT(sab_core)) sab_core => qs_env%sab_core 00673 IF (PRESENT(energy)) energy => qs_env%energy 00674 IF (PRESENT(force)) force => qs_env%force 00675 IF (PRESENT(use_harris)) use_harris = qs_env%use_harris 00676 IF (PRESENT(harris_env)) harris_env => qs_env%harris_env 00677 IF (PRESENT(matrix_h)) matrix_h => qs_env%matrix_h 00678 IF (PRESENT(matrix_ks)) matrix_ks => qs_env%matrix_ks 00679 IF (PRESENT(matrix_vxc)) matrix_vxc => qs_env%matrix_vxc 00680 IF (PRESENT(matrix_ks_aux_fit)) matrix_ks_aux_fit => qs_env%matrix_ks_aux_fit 00681 IF (PRESENT(kinetic)) kinetic => qs_env%kinetic 00682 IF (PRESENT(matrix_s)) matrix_s => qs_env%matrix_s 00683 IF (PRESENT(matrix_s_aux_fit)) matrix_s_aux_fit => qs_env%matrix_s_aux_fit 00684 IF (PRESENT(matrix_s_aux_fit_vs_orb)) matrix_s_aux_fit_vs_orb => qs_env%matrix_s_aux_fit_vs_orb 00685 IF (PRESENT(matrix_w)) matrix_w => qs_env%matrix_w 00686 IF (PRESENT(gamma_matrix)) gamma_matrix => qs_env%gamma_matrix 00687 IF (PRESENT(rho)) rho => qs_env%rho 00688 IF (PRESENT(rho_aux_fit)) rho_aux_fit => qs_env%rho_aux_fit 00689 IF (PRESENT(rho_buffer)) rho_buffer => qs_env%rho_buffer 00690 IF (PRESENT(rho_xc)) rho_xc => qs_env%rho_xc 00691 IF (PRESENT(pw_env)) pw_env => qs_env%pw_env 00692 IF (PRESENT(ewald_env)) ewald_env => qs_env%ewald_env 00693 IF (PRESENT(ewald_pw)) ewald_pw => qs_env%ewald_pw 00694 IF (PRESENT(mpools)) mpools => qs_env%mpools 00695 IF (PRESENT(mpools_aux_fit)) mpools_aux_fit => qs_env%mpools_aux_fit 00696 IF (PRESENT(blacs_env)) blacs_env => qs_env%blacs_env 00697 IF (PRESENT(scf_control)) scf_control => qs_env%scf_control 00698 IF (PRESENT(rel_control)) rel_control => qs_env%rel_control 00699 IF (PRESENT(rho_core)) rho_core => qs_env%rho_core 00700 IF (PRESENT(rho_nlcc)) rho_nlcc => qs_env%rho_nlcc 00701 IF (PRESENT(rho_nlcc_g)) rho_nlcc_g => qs_env%rho_nlcc_g 00702 IF (PRESENT(vppl)) vppl => qs_env%vppl 00703 IF (PRESENT(vee)) vee => qs_env%vee 00704 IF (PRESENT(qs_charges)) qs_charges => qs_env%qs_charges 00705 IF (PRESENT(ks_env)) ks_env => qs_env%ks_env 00706 IF (PRESENT(ks_qmmm_env)) ks_qmmm_env => qs_env%ks_qmmm_env 00707 IF (PRESENT(wf_history)) wf_history => qs_env%wf_history 00708 IF (PRESENT(scf_env)) scf_env => qs_env%scf_env 00709 IF (PRESENT(id_nr)) id_nr=qs_env%id_nr 00710 IF (PRESENT(subsys)) subsys => qs_env%subsys 00711 IF (PRESENT(para_env)) para_env => qs_env%para_env 00712 IF (PRESENT(distribution_2d)) distribution_2d => qs_env%distribution_2d 00713 IF (PRESENT(dbcsr_dist)) dbcsr_dist => qs_env%dbcsr_dist 00714 IF (PRESENT(oce)) oce => qs_env%oce 00715 IF (PRESENT(requires_mo_derivs)) requires_mo_derivs = qs_env%requires_mo_derivs 00716 IF (PRESENT(has_unit_metric)) has_unit_metric = qs_env%has_unit_metric 00717 IF (PRESENT(mo_derivs)) mo_derivs => qs_env%mo_derivs 00718 IF (PRESENT(mo_derivs_aux_fit)) mo_derivs_aux_fit => qs_env%mo_derivs_aux_fit 00719 IF (PRESENT(mo_loc_history)) mo_loc_history => qs_env%mo_loc_history 00720 IF (PRESENT(tddfpt_control)) tddfpt_control => qs_env%dft_control%tddfpt_control 00721 IF (PRESENT(linres_control)) linres_control => qs_env%linres_control 00722 IF (PRESENT(virial)) virial => qs_env%virial 00723 IF (PRESENT(se_taper)) se_taper => qs_env%se_taper 00724 IF (PRESENT(se_store_int_env)) se_store_int_env => qs_env%se_store_int_env 00725 IF (PRESENT(se_nddo_mpole)) se_nddo_mpole => qs_env%se_nddo_mpole 00726 IF (PRESENT(se_nonbond_env)) se_nonbond_env => qs_env%se_nonbond_env 00727 IF (PRESENT(admm_env)) admm_env => qs_env%admm_env 00728 IF (PRESENT(lri_env)) lri_env => qs_env%lri_env 00729 IF (PRESENT(lri_density)) lri_density => qs_env%lri_density 00730 IF (PRESENT(hfx_ri_env)) hfx_ri_env => qs_env%hfx_ri_env 00731 IF (PRESENT(dispersion_env)) dispersion_env => qs_env%dispersion_env 00732 IF (PRESENT(run_rtp)) run_rtp=qs_env%run_rtp 00733 IF (PRESENT(rtp)) rtp=>qs_env%rtp 00734 IF (PRESENT(ls_scf_env)) ls_scf_env=>qs_env%ls_scf_env 00735 00736 IF (PRESENT(rho_atom_set)) & 00737 CALL get_local_rho(qs_env%local_rho_set, rho_atom_set=rho_atom_set) 00738 IF (PRESENT(rho0_atom_set)) & 00739 CALL get_local_rho(qs_env%local_rho_set, rho0_atom_set=rho0_atom_set) 00740 IF (PRESENT(rho0_mpole)) & 00741 CALL get_local_rho(qs_env%local_rho_set, rho0_mpole=rho0_mpole) 00742 IF (PRESENT(rhoz_set)) & 00743 CALL get_local_rho(qs_env%local_rho_set, rhoz_set=rhoz_set) 00744 IF (PRESENT(ecoul_1c)) & 00745 CALL get_hartree_local(qs_env%hartree_local,ecoul_1c=ecoul_1c) 00746 IF (PRESENT(rho0_s_rs)) THEN 00747 CALL get_local_rho(qs_env%local_rho_set, rho0_mpole=rho0_m) 00748 IF(ASSOCIATED(rho0_m)) THEN 00749 rho0_s_rs => rho0_m%rho0_s_rs 00750 END IF 00751 END IF 00752 IF (PRESENT(rho0_s_gs)) THEN 00753 CALL get_local_rho(qs_env%local_rho_set, rho0_mpole=rho0_m) 00754 IF(ASSOCIATED(rho0_m)) THEN 00755 rho0_s_gs => rho0_m%rho0_s_gs 00756 END IF 00757 END IF 00758 00759 IF(PRESENT(xas_env)) xas_env => qs_env%xas_env 00760 00761 CALL cp_subsys_get(qs_env%subsys,& 00762 atomic_kinds=atomic_kinds,& 00763 local_molecules_new=local_molecules,& 00764 local_particles=local_particles,& 00765 particles=particles,& 00766 molecule_kinds_new=molecule_kinds_new,& 00767 molecules_new=molecules_new,& 00768 error=error) 00769 00770 IF (PRESENT(natom)) natom=SIZE(particles%els) 00771 IF (PRESENT(nkind)) nkind=SIZE(atomic_kinds%els) 00772 IF (PRESENT(atomic_kind_set)) atomic_kind_set => atomic_kinds%els 00773 IF (PRESENT(particle_set)) particle_set => particles%els 00774 IF (PRESENT(molecule_kind_set)) molecule_kind_set => molecule_kinds_new%els 00775 IF (PRESENT(molecule_set)) molecule_set => molecules_new%els 00776 IF (PRESENT(input)) input => qs_env%input 00777 IF (PRESENT(cp_ddapc_env)) cp_ddapc_env => qs_env%cp_ddapc_env 00778 IF (PRESENT(cp_ddapc_ewald)) cp_ddapc_ewald => qs_env%cp_ddapc_ewald 00779 IF (PRESENT(ep_qs_env)) ep_qs_env => qs_env%ep_qs_env 00780 IF (PRESENT(x_data)) x_data => qs_env%x_data 00781 IF (PRESENT(et_coupling)) et_coupling => qs_env%et_coupling 00782 IF (PRESENT(dftb_potential)) dftb_potential => qs_env%dftb_potential 00783 IF (PRESENT(scp_env)) scp_env => qs_env%scp_env 00784 IF (PRESENT(efield)) efield => qs_env%efield 00785 00786 IF (PRESENT(atprop)) atprop => qs_env%atprop 00787 00788 IF (PRESENT(results)) results => qs_env%results 00789 IF (PRESENT(task_list)) task_list => qs_env%task_list 00790 IF (PRESENT(task_list_aux_fit)) task_list_aux_fit => qs_env%task_list_aux_fit 00791 IF (PRESENT(task_list_soft)) task_list_soft => qs_env%task_list_soft 00792 00793 IF (PRESENT(WannierCentres)) WannierCentres => qs_env%WannierCentres 00794 00795 END SUBROUTINE get_qs_env 00796 00797 ! ***************************************************************************** 00803 SUBROUTINE init_qs_env(qs_env,para_env,globenv,error) 00804 00805 TYPE(qs_environment_type), POINTER :: qs_env 00806 TYPE(cp_para_env_type), POINTER :: para_env 00807 TYPE(global_environment_type), POINTER :: globenv 00808 TYPE(cp_error_type), INTENT(inout) :: error 00809 00810 NULLIFY (qs_env%blacs_env) 00811 NULLIFY (qs_env%ls_scf_env) 00812 NULLIFY (qs_env%image_matrix) 00813 NULLIFY (qs_env%ipiv) 00814 NULLIFY (qs_env%image_coeff) 00815 NULLIFY (qs_env%ga_env) 00816 NULLIFY (qs_env%cell) 00817 NULLIFY (qs_env%super_cell) 00818 NULLIFY (qs_env%cell_ref) 00819 NULLIFY (qs_env%dft_control) 00820 NULLIFY (qs_env%mos) 00821 NULLIFY (qs_env%mos_aux_fit) 00822 NULLIFY (qs_env%sab_orb) 00823 NULLIFY (qs_env%sab_aux_fit) 00824 NULLIFY (qs_env%sab_aux_fit_asymm) 00825 NULLIFY (qs_env%sab_aux_fit_vs_orb) 00826 NULLIFY (qs_env%sab_scp) 00827 NULLIFY (qs_env%sab_vdw) 00828 NULLIFY (qs_env%sab_cn) 00829 NULLIFY (qs_env%sab_all) 00830 NULLIFY (qs_env%sac_ae) 00831 NULLIFY (qs_env%sac_ppl) 00832 NULLIFY (qs_env%sap_ppnl) 00833 NULLIFY (qs_env%sap_oce) 00834 NULLIFY (qs_env%sab_se) 00835 NULLIFY (qs_env%sab_lrc) 00836 NULLIFY (qs_env%sab_tbe) 00837 NULLIFY (qs_env%sab_core) 00838 NULLIFY (qs_env%energy) 00839 NULLIFY (qs_env%force) 00840 NULLIFY (qs_env%harris_env) 00841 NULLIFY (qs_env%matrix_h) 00842 NULLIFY (qs_env%matrix_ks) 00843 NULLIFY (qs_env%matrix_vxc) 00844 NULLIFY (qs_env%matrix_ks_aux_fit) 00845 NULLIFY (qs_env%kinetic) 00846 NULLIFY (qs_env%matrix_s) 00847 NULLIFY (qs_env%matrix_s_aux_fit) 00848 NULLIFY (qs_env%matrix_s_aux_fit_vs_orb) 00849 NULLIFY (qs_env%matrix_w) 00850 NULLIFY (qs_env%gamma_matrix) 00851 NULLIFY (qs_env%mpools) 00852 NULLIFY (qs_env%mpools_aux_fit) 00853 NULLIFY (qs_env%rho) 00854 NULLIFY (qs_env%rho_aux_fit) 00855 NULLIFY (qs_env%rho_buffer) 00856 NULLIFY (qs_env%rho_xc) 00857 NULLIFY (qs_env%pw_env) 00858 NULLIFY (qs_env%ewald_env) 00859 NULLIFY (qs_env%ewald_pw) 00860 NULLIFY (qs_env%scf_control) 00861 NULLIFY (qs_env%rel_control) 00862 NULLIFY (qs_env%qs_charges) 00863 NULLIFY (qs_env%rho_nlcc) 00864 NULLIFY (qs_env%rho_nlcc_g) 00865 NULLIFY (qs_env%rho_core) 00866 NULLIFY (qs_env%vppl) 00867 NULLIFY (qs_env%vee) 00868 NULLIFY (qs_env%ks_env) 00869 NULLIFY (qs_env%ks_qmmm_env) 00870 NULLIFY (qs_env%wf_history) 00871 NULLIFY (qs_env%scf_env) 00872 NULLIFY (qs_env%distribution_2d) 00873 NULLIFY (qs_env%dbcsr_dist) 00874 NULLIFY (qs_env%subsys) 00875 NULLIFY (qs_env%blacs_env) 00876 NULLIFY (qs_env%oce) 00877 NULLIFY (qs_env%local_rho_set) 00878 NULLIFY (qs_env%hartree_local) 00879 NULLIFY (qs_env%input) 00880 NULLIFY (qs_env%linres_control) 00881 NULLIFY (qs_env%xas_env) 00882 NULLIFY (qs_env%virial) 00883 NULLIFY (qs_env%cp_ddapc_env) 00884 NULLIFY (qs_env%cp_ddapc_ewald) 00885 NULLIFY (qs_env%outer_scf_history) 00886 NULLIFY (qs_env%ep_qs_env) 00887 NULLIFY (qs_env%x_data) 00888 NULLIFY (qs_env%et_coupling) 00889 NULLIFY (qs_env%dftb_potential) 00890 NULLIFY (qs_env%results) 00891 NULLIFY (qs_env%task_list) 00892 NULLIFY (qs_env%task_list_aux_fit) 00893 NULLIFY (qs_env%task_list_soft) 00894 NULLIFY (qs_env%scp_env) 00895 NULLIFY (qs_env%se_taper) 00896 NULLIFY (qs_env%se_store_int_env) 00897 NULLIFY (qs_env%se_nddo_mpole) 00898 NULLIFY (qs_env%se_nonbond_env) 00899 NULLIFY (qs_env%admm_env) 00900 NULLIFY (qs_env%efield) 00901 NULLIFY (qs_env%lri_env) 00902 NULLIFY (qs_env%lri_density) 00903 NULLIFY (qs_env%hfx_ri_env) 00904 NULLIFY (qs_env%dispersion_env) 00905 NULLIFY (qs_env%rtp) 00906 NULLIFY (qs_env%mp2_env) 00907 NULLIFY (qs_env%kg_env) 00908 NULLIFY (qs_env%WannierCentres) 00909 NULLIFY (qs_env%atprop) 00910 00911 qs_env%outer_scf_ihistory=0 00912 qs_env%broyden_adaptive_sigma=-1.0_dp 00913 qs_env%neighbor_list_id=-1 00914 qs_env%nelectron_total=-1 00915 qs_env%nelectron_spin=-1 00916 00917 CALL local_rho_set_create(qs_env%local_rho_set, error=error) 00918 CALL hartree_local_create(qs_env%hartree_local, error=error) 00919 CALL cp_subsys_create(qs_env%subsys, para_env=para_env, error=error) 00920 CALL cp_para_env_retain(para_env,error=error) 00921 qs_env%para_env => para_env 00922 CALL cp_blacs_env_create(qs_env%blacs_env,qs_env%para_env,& 00923 globenv%blacs_grid_layout,& 00924 globenv%blacs_repeatable,error=error) 00925 qs_env%ref_count=1 00926 last_qs_env_id_nr=last_qs_env_id_nr+1 00927 qs_env%id_nr=last_qs_env_id_nr 00928 qs_env%run_rtp=.FALSE. 00929 qs_env%use_ref_cell=.FALSE. 00930 qs_env%qmmm=.FALSE. 00931 qs_env%qmmm_periodic=.FALSE. 00932 qs_env%requires_mo_derivs=.FALSE. 00933 qs_env%requires_matrix_vxc=.FALSE. 00934 qs_env%has_unit_metric=.FALSE. 00935 qs_env%use_harris=.FALSE. 00936 qs_env%calc_image_preconditioner=.TRUE. 00937 qs_env%target_time = globenv%cp2k_target_time 00938 qs_env%start_time = globenv%cp2k_start_time 00939 00940 qs_env%sim_time=0._dp 00941 qs_env%sim_step=0 00942 ! Zero all variables containing results 00943 CALL cp_result_create(qs_env%results, error) 00944 NULLIFY(qs_env%mo_derivs) 00945 NULLIFY(qs_env%mo_derivs_aux_fit) 00946 NULLIFY(qs_env%mo_loc_history) 00947 00948 END SUBROUTINE init_qs_env 00949 00950 ! ***************************************************************************** 00956 SUBROUTINE set_qs_env(qs_env,cell,super_cell,cell_ref,use_ref_cell,dft_control,& 00957 mos,mos_aux_fit,qmmm,qmmm_periodic,sab_orb,sab_aux_fit,sab_aux_fit_asymm, & 00958 sab_aux_fit_vs_orb,sab_all,sac_ae,sac_ppl,sap_ppnl,sap_oce,sab_lrc,& 00959 sab_se,sab_tbe,sab_core,sab_scp,sab_vdw,sab_cn,energy,force,harris_env,matrix_h,matrix_ks,matrix_vxc,& 00960 matrix_ks_aux_fit, matrix_s,matrix_s_aux_fit,matrix_s_aux_fit_vs_orb,matrix_w,& 00961 gamma_matrix,pw_env,ewald_env,ewald_pw,mpools,mpools_aux_fit,rho,vee,& 00962 rho_aux_fit,rho_buffer,rho_xc,kinetic,scf_control,rel_control,qs_charges,vppl,rho_core,rho_nlcc, rho_nlcc_g, ks_env,& 00963 ks_qmmm_env,wf_history,scf_env,use_harris,task_list,task_list_aux_fit,task_list_soft,& 00964 distribution_2d,dbcsr_dist,input, subsys, oce,rho_atom_set,rho0_atom_set,rho0_mpole,run_rtp,rtp,& 00965 rhoz_set,rhoz_tot,ecoul_1c,has_unit_metric,requires_mo_derivs,mo_derivs,& 00966 mo_derivs_aux_fit, mo_loc_history, nelectron_total, nelectron_spin, efield,& 00967 neighbor_list_id,linres_control,xas_env,virial,cp_ddapc_env,cp_ddapc_ewald,& 00968 outer_scf_history,outer_scf_ihistory,ep_qs_env,x_data,et_coupling,dftb_potential,& 00969 scp_env,se_taper,se_store_int_env,se_nddo_mpole,se_nonbond_env,admm_env,ls_scf_env,& 00970 lri_env,lri_density,hfx_ri_env,dispersion_env,mp2_env,kg_env,WannierCentres,ga_env,atprop,error) 00971 00972 TYPE(qs_environment_type), POINTER :: qs_env 00973 TYPE(cell_type), OPTIONAL, POINTER :: cell, super_cell, cell_ref 00974 LOGICAL, OPTIONAL :: use_ref_cell 00975 TYPE(dft_control_type), OPTIONAL, 00976 POINTER :: dft_control 00977 TYPE(mo_set_p_type), DIMENSION(:), 00978 OPTIONAL, POINTER :: mos, mos_aux_fit 00979 LOGICAL, OPTIONAL :: qmmm, qmmm_periodic 00980 TYPE(neighbor_list_set_p_type), DIMENSION(:), OPTIONAL, POINTER :: 00981 sab_orb, sab_aux_fit, sab_aux_fit_asymm, sab_aux_fit_vs_orb, sab_all, 00982 sac_ae, sac_ppl, sap_ppnl, sap_oce, sab_lrc, sab_se, sab_tbe, sab_core, 00983 sab_scp, sab_vdw, sab_cn 00984 TYPE(qs_energy_type), OPTIONAL, POINTER :: energy 00985 TYPE(qs_force_type), DIMENSION(:), 00986 OPTIONAL, POINTER :: force 00987 TYPE(harris_env_type), OPTIONAL, POINTER :: harris_env 00988 TYPE(cp_dbcsr_p_type), DIMENSION(:), OPTIONAL, POINTER :: matrix_h, 00989 matrix_ks, matrix_vxc, matrix_ks_aux_fit, matrix_s, matrix_s_aux_fit, 00990 matrix_s_aux_fit_vs_orb, matrix_w, gamma_matrix 00991 TYPE(pw_env_type), OPTIONAL, POINTER :: pw_env 00992 TYPE(ewald_environment_type), OPTIONAL, 00993 POINTER :: ewald_env 00994 TYPE(ewald_pw_type), OPTIONAL, POINTER :: ewald_pw 00995 TYPE(qs_matrix_pools_type), OPTIONAL, 00996 POINTER :: mpools, mpools_aux_fit 00997 TYPE(qs_rho_type), OPTIONAL, POINTER :: rho 00998 TYPE(pw_p_type), OPTIONAL, POINTER :: vee 00999 TYPE(qs_rho_type), OPTIONAL, POINTER :: rho_aux_fit, rho_buffer, 01000 rho_xc 01001 TYPE(cp_dbcsr_p_type), DIMENSION(:), 01002 OPTIONAL, POINTER :: kinetic 01003 TYPE(scf_control_type), OPTIONAL, 01004 POINTER :: scf_control 01005 TYPE(rel_control_type), OPTIONAL, 01006 POINTER :: rel_control 01007 TYPE(qs_charges_type), OPTIONAL, POINTER :: qs_charges 01008 TYPE(pw_p_type), OPTIONAL, POINTER :: vppl, rho_core, rho_nlcc, 01009 rho_nlcc_g 01010 TYPE(qs_ks_env_type), OPTIONAL, POINTER :: ks_env 01011 TYPE(qs_ks_qmmm_env_type), OPTIONAL, 01012 POINTER :: ks_qmmm_env 01013 TYPE(qs_wf_history_type), OPTIONAL, 01014 POINTER :: wf_history 01015 TYPE(qs_scf_env_type), OPTIONAL, POINTER :: scf_env 01016 LOGICAL, OPTIONAL :: use_harris 01017 TYPE(task_list_type), OPTIONAL, POINTER :: task_list, task_list_aux_fit, 01018 task_list_soft 01019 TYPE(distribution_2d_type), OPTIONAL, 01020 POINTER :: distribution_2d 01021 TYPE(dbcsr_distribution_obj), OPTIONAL, 01022 POINTER :: dbcsr_dist 01023 TYPE(section_vals_type), OPTIONAL, 01024 POINTER :: input 01025 TYPE(cp_subsys_type), OPTIONAL, POINTER :: subsys 01026 TYPE(oce_matrix_type), OPTIONAL, POINTER :: oce 01027 TYPE(rho_atom_type), DIMENSION(:), 01028 OPTIONAL, POINTER :: rho_atom_set 01029 TYPE(rho0_atom_type), DIMENSION(:), 01030 OPTIONAL, POINTER :: rho0_atom_set 01031 TYPE(rho0_mpole_type), OPTIONAL, POINTER :: rho0_mpole 01032 LOGICAL, OPTIONAL :: run_rtp 01033 TYPE(rt_prop_type), OPTIONAL, POINTER :: rtp 01034 TYPE(rhoz_type), DIMENSION(:), 01035 OPTIONAL, POINTER :: rhoz_set 01036 REAL(dp), OPTIONAL :: rhoz_tot 01037 TYPE(ecoul_1center_type), DIMENSION(:), 01038 OPTIONAL, POINTER :: ecoul_1c 01039 LOGICAL, OPTIONAL :: has_unit_metric, 01040 requires_mo_derivs 01041 TYPE(cp_dbcsr_p_type), DIMENSION(:), 01042 OPTIONAL, POINTER :: mo_derivs 01043 TYPE(cp_fm_p_type), DIMENSION(:), 01044 OPTIONAL, POINTER :: mo_derivs_aux_fit, 01045 mo_loc_history 01046 INTEGER, OPTIONAL :: nelectron_total 01047 INTEGER, DIMENSION(2), OPTIONAL :: nelectron_spin 01048 TYPE(efield_berry_type), OPTIONAL, 01049 POINTER :: efield 01050 INTEGER, OPTIONAL :: neighbor_list_id 01051 TYPE(linres_control_type), OPTIONAL, 01052 POINTER :: linres_control 01053 TYPE(xas_environment_type), OPTIONAL, 01054 POINTER :: xas_env 01055 TYPE(virial_type), OPTIONAL, POINTER :: virial 01056 TYPE(cp_ddapc_type), OPTIONAL, POINTER :: cp_ddapc_env 01057 TYPE(cp_ddapc_ewald_type), OPTIONAL, 01058 POINTER :: cp_ddapc_ewald 01059 REAL(KIND=dp), DIMENSION(:, :), 01060 OPTIONAL, POINTER :: outer_scf_history 01061 INTEGER, INTENT(IN), OPTIONAL :: outer_scf_ihistory 01062 TYPE(ep_qs_type), OPTIONAL, POINTER :: ep_qs_env 01063 TYPE(hfx_type), DIMENSION(:, :), 01064 OPTIONAL, POINTER :: x_data 01065 TYPE(et_coupling_type), OPTIONAL, 01066 POINTER :: et_coupling 01067 TYPE(qs_dftb_pairpot_type), 01068 DIMENSION(:, :), OPTIONAL, POINTER :: dftb_potential 01069 TYPE(scp_environment_type), OPTIONAL, 01070 POINTER :: scp_env 01071 TYPE(se_taper_type), OPTIONAL, POINTER :: se_taper 01072 TYPE(semi_empirical_si_type), OPTIONAL, 01073 POINTER :: se_store_int_env 01074 TYPE(nddo_mpole_type), OPTIONAL, POINTER :: se_nddo_mpole 01075 TYPE(fist_nonbond_env_type), OPTIONAL, 01076 POINTER :: se_nonbond_env 01077 TYPE(admm_type), OPTIONAL, POINTER :: admm_env 01078 TYPE(ls_scf_env_type), OPTIONAL, POINTER :: ls_scf_env 01079 TYPE(lri_environment_type), OPTIONAL, 01080 POINTER :: lri_env 01081 TYPE(lri_density_type), OPTIONAL, 01082 POINTER :: lri_density 01083 TYPE(ri_environment_type), OPTIONAL, 01084 POINTER :: hfx_ri_env 01085 TYPE(qs_dispersion_type), OPTIONAL, 01086 POINTER :: dispersion_env 01087 TYPE(mp2_type), OPTIONAL, POINTER :: mp2_env 01088 TYPE(kg_environment_type), OPTIONAL, 01089 POINTER :: kg_env 01090 TYPE(wannier_centres_type), 01091 DIMENSION(:), OPTIONAL, POINTER :: WannierCentres 01092 TYPE(ga_environment_type), OPTIONAL, 01093 POINTER :: ga_env 01094 TYPE(atprop_type), OPTIONAL, POINTER :: atprop 01095 TYPE(cp_error_type), INTENT(INOUT) :: error 01096 01097 CHARACTER(len=*), PARAMETER :: routineN = 'set_qs_env', 01098 routineP = moduleN//':'//routineN 01099 01100 LOGICAL :: failure 01101 01102 failure=.FALSE. 01103 ! CPPrecondition(ASSOCIATED(qs_env),cp_failure_level,routineP,error,failure) 01104 CPPrecondition(qs_env%ref_count>0,cp_failure_level,routineP,error,failure) 01105 IF (PRESENT(ga_env)) THEN 01106 CALL ga_env_retain(ga_env, error) 01107 CALL ga_env_release(qs_env%ga_env,error) 01108 qs_env%ga_env => ga_env 01109 END IF 01110 IF (PRESENT(cell)) THEN 01111 CALL cell_retain(cell, error=error) 01112 CALL cell_release(qs_env%cell,error=error) 01113 qs_env%cell => cell 01114 END IF 01115 IF (PRESENT(nelectron_total)) qs_env%nelectron_total=nelectron_total 01116 IF (PRESENT(mp2_env)) qs_env%mp2_env=>mp2_env 01117 IF (PRESENT(kg_env)) qs_env%kg_env => kg_env 01118 IF (PRESENT(nelectron_spin)) qs_env%nelectron_spin=nelectron_spin 01119 IF (PRESENT(super_cell)) THEN 01120 CALL cell_retain(super_cell, error=error) 01121 CALL cell_release(qs_env%super_cell,error=error) 01122 qs_env%super_cell => super_cell 01123 END IF 01124 IF (PRESENT(cell_ref)) THEN 01125 CALL cell_retain(cell_ref, error=error) 01126 CALL cell_release(qs_env%cell_ref,error=error) 01127 qs_env%cell_ref => cell_ref 01128 END IF 01129 IF (PRESENT(dft_control)) THEN 01130 CALL dft_control_retain(dft_control, error=error) 01131 CALL dft_control_release(qs_env%dft_control, error=error) 01132 qs_env%dft_control => dft_control 01133 END IF 01134 IF ( PRESENT ( use_ref_cell ) ) qs_env%use_ref_cell = use_ref_cell 01135 IF ( PRESENT ( qmmm ) ) qs_env%qmmm = qmmm 01136 IF ( PRESENT ( qmmm_periodic ) ) qs_env%qmmm_periodic = qmmm_periodic 01137 IF (PRESENT(mos)) qs_env%mos => mos 01138 IF (PRESENT(mos_aux_fit)) qs_env%mos_aux_fit => mos_aux_fit 01139 IF (PRESENT(neighbor_list_id)) qs_env%neighbor_list_id=neighbor_list_id 01140 IF (PRESENT(sab_orb)) qs_env%sab_orb => sab_orb 01141 IF (PRESENT(sab_aux_fit)) qs_env%sab_aux_fit => sab_aux_fit 01142 IF (PRESENT(sab_aux_fit_asymm)) qs_env%sab_aux_fit_asymm => sab_aux_fit_asymm 01143 IF (PRESENT(sab_aux_fit_vs_orb)) qs_env%sab_aux_fit_vs_orb => sab_aux_fit_vs_orb 01144 IF (PRESENT(sab_scp)) qs_env%sab_scp => sab_scp 01145 IF (PRESENT(sab_vdw)) qs_env%sab_vdw => sab_vdw 01146 IF (PRESENT(sab_cn)) qs_env%sab_cn => sab_cn 01147 IF (PRESENT(sab_all)) qs_env%sab_all => sab_all 01148 IF (PRESENT(sac_ae)) qs_env%sac_ae => sac_ae 01149 IF (PRESENT(sac_ppl)) qs_env%sac_ppl => sac_ppl 01150 IF (PRESENT(sap_ppnl)) qs_env%sap_ppnl => sap_ppnl 01151 IF (PRESENT(ls_scf_env)) qs_env%ls_scf_env => ls_scf_env 01152 IF (PRESENT(sap_oce)) qs_env%sap_oce => sap_oce 01153 IF (PRESENT(sab_se)) qs_env%sab_se => sab_se 01154 IF (PRESENT(sab_lrc)) qs_env%sab_lrc => sab_lrc 01155 IF (PRESENT(sab_tbe)) qs_env%sab_tbe => sab_tbe 01156 IF (PRESENT(sab_core)) qs_env%sab_core => sab_core 01157 IF (PRESENT(energy)) qs_env%energy => energy 01158 ! if intels checking (-C) complains here, you have rediscovered a bug in the intel 01159 ! compiler (present in at least 10.0.025). A testcase has been submitted to intel. 01160 IF (PRESENT(force)) qs_env%force => force 01161 IF (PRESENT(use_harris)) qs_env%use_harris = use_harris 01162 IF (PRESENT(harris_env)) qs_env%harris_env => harris_env 01163 IF (PRESENT(matrix_h)) qs_env%matrix_h => matrix_h 01164 IF (PRESENT(matrix_ks)) qs_env%matrix_ks => matrix_ks 01165 IF (PRESENT(matrix_vxc)) qs_env%matrix_vxc => matrix_vxc 01166 IF (PRESENT(matrix_ks_aux_fit)) qs_env%matrix_ks_aux_fit => matrix_ks_aux_fit 01167 IF (PRESENT(matrix_s)) qs_env%matrix_s => matrix_s 01168 IF (PRESENT(matrix_s_aux_fit)) qs_env%matrix_s_aux_fit => matrix_s_aux_fit 01169 IF (PRESENT(matrix_s_aux_fit_vs_orb)) qs_env%matrix_s_aux_fit_vs_orb => matrix_s_aux_fit_vs_orb 01170 IF (PRESENT(matrix_w)) qs_env%matrix_w => matrix_w 01171 IF (PRESENT(gamma_matrix)) qs_env%gamma_matrix => gamma_matrix 01172 IF (PRESENT(oce)) qs_env%oce => oce 01173 IF (PRESENT(outer_scf_history)) qs_env%outer_scf_history=>outer_scf_history 01174 IF (PRESENT(outer_scf_ihistory)) qs_env%outer_scf_ihistory=outer_scf_ihistory 01175 IF (PRESENT(requires_mo_derivs)) qs_env%requires_mo_derivs=requires_mo_derivs 01176 IF (PRESENT(has_unit_metric)) qs_env%has_unit_metric=has_unit_metric 01177 IF (PRESENT(mo_derivs)) qs_env%mo_derivs=>mo_derivs 01178 IF (PRESENT(mo_derivs_aux_fit)) qs_env%mo_derivs_aux_fit=>mo_derivs_aux_fit 01179 IF (PRESENT(mo_loc_history)) qs_env%mo_loc_history=>mo_loc_history 01180 IF (PRESENT(task_list)) qs_env%task_list=>task_list 01181 IF (PRESENT(task_list_aux_fit)) qs_env%task_list_aux_fit=>task_list_aux_fit 01182 IF (PRESENT(task_list_soft)) qs_env%task_list_soft=>task_list_soft 01183 IF (PRESENT(run_rtp)) qs_env%run_rtp=run_rtp 01184 IF (PRESENT(rtp)) qs_env%rtp=>rtp 01185 IF (PRESENT(efield)) qs_env%efield=>efield 01186 IF (PRESENT(atprop)) qs_env%atprop=>atprop 01187 IF (PRESENT(rho)) THEN ! accepts also null pointers ! 01188 IF (ASSOCIATED(rho)) CALL qs_rho_retain(rho,error=error) 01189 CALL qs_rho_release(qs_env%rho,error=error) 01190 qs_env%rho => rho 01191 END IF 01192 IF (PRESENT(rho_aux_fit)) THEN ! accepts also null pointers ! 01193 IF (ASSOCIATED(rho_aux_fit)) CALL qs_rho_retain(rho_aux_fit,error=error) 01194 CALL qs_rho_release(qs_env%rho_aux_fit,error=error) 01195 qs_env%rho_aux_fit => rho_aux_fit 01196 END IF 01197 IF (PRESENT(rho_buffer)) THEN ! accepts also null pointers ! 01198 IF (ASSOCIATED(rho_buffer)) CALL qs_rho_retain(rho_buffer,error=error) 01199 CALL qs_rho_release(qs_env%rho_buffer,error=error) 01200 qs_env%rho_buffer => rho_buffer 01201 END IF 01202 IF (PRESENT(rho_xc)) THEN ! accepts also null pointers ! 01203 IF (ASSOCIATED(rho_xc)) CALL qs_rho_retain(rho_xc,error=error) 01204 CALL qs_rho_release(qs_env%rho_xc,error=error) 01205 qs_env%rho_xc => rho_xc 01206 END IF 01207 01208 IF (PRESENT(pw_env)) THEN ! accept also null pointers? 01209 CALL pw_env_retain(pw_env,error=error) 01210 CALL pw_env_release(qs_env%pw_env,error=error) 01211 qs_env%pw_env => pw_env 01212 END IF 01213 IF (PRESENT(ewald_env)) THEN ! accept also null pointers? 01214 CALL ewald_env_retain(ewald_env,error=error) 01215 CALL ewald_env_release(qs_env%ewald_env,error=error) 01216 qs_env%ewald_env => ewald_env 01217 END IF 01218 IF (PRESENT(ewald_pw)) THEN ! accept also null pointers? 01219 CALL ewald_pw_retain(ewald_pw,error=error) 01220 CALL ewald_pw_release(qs_env%ewald_pw,error=error) 01221 qs_env%ewald_pw => ewald_pw 01222 END IF 01223 IF (PRESENT(scf_control)) THEN ! accept also null pointers? 01224 CALL scf_c_retain(scf_control,error=error) 01225 CALL scf_c_release(qs_env%scf_control,error=error) 01226 qs_env%scf_control => scf_control 01227 END IF 01228 IF (PRESENT(rel_control)) THEN ! accept also null pointers? 01229 CALL rel_c_retain(rel_control,error=error) 01230 CALL rel_c_release(qs_env%rel_control,error=error) 01231 qs_env%rel_control => rel_control 01232 END IF 01233 IF (PRESENT(linres_control)) THEN ! accept also null pointers? 01234 CALL linres_control_retain(linres_control,error=error) 01235 CALL linres_control_release(qs_env%linres_control,error=error) 01236 qs_env%linres_control => linres_control 01237 END IF 01238 IF (PRESENT(kinetic)) qs_env%kinetic => kinetic 01239 IF (PRESENT(rho_core)) qs_env%rho_core => rho_core 01240 IF (PRESENT(rho_nlcc)) qs_env%rho_nlcc => rho_nlcc 01241 IF (PRESENT(rho_nlcc_g)) qs_env%rho_nlcc_g => rho_nlcc_g 01242 IF (PRESENT(vppl)) qs_env%vppl => vppl 01243 IF (PRESENT(vee)) qs_env%vee => vee 01244 IF (PRESENT(qs_charges)) THEN 01245 CALL qs_charges_retain(qs_charges,error=error) 01246 CALL qs_charges_release(qs_env%qs_charges,error=error) 01247 qs_env%qs_charges => qs_charges 01248 END IF 01249 IF (PRESENT(ks_qmmm_env)) THEN 01250 CALL qs_ks_qmmm_retain(ks_qmmm_env, error=error) 01251 CALL qs_ks_qmmm_release(qs_env%ks_qmmm_env, error=error) 01252 qs_env%ks_qmmm_env => ks_qmmm_env 01253 END IF 01254 IF (PRESENT(ks_env)) THEN ! accept also null pointers? 01255 CALL qs_ks_retain(ks_env, error=error) 01256 CALL qs_ks_release(qs_env%ks_env, error=error) 01257 qs_env%ks_env => ks_env 01258 END IF 01259 IF (PRESENT(wf_history)) THEN ! accept also null pointers ? 01260 CALL wfi_retain(wf_history,error=error) 01261 CALL wfi_release(qs_env%wf_history,error=error) 01262 qs_env%wf_history => wf_history 01263 END IF 01264 IF (PRESENT(scf_env)) THEN ! accept also null pointers ? 01265 CALL scf_env_retain(scf_env,error=error) 01266 CALL scf_env_release(qs_env%scf_env, error=error) 01267 qs_env%scf_env => scf_env 01268 END IF 01269 IF (PRESENT(xas_env)) THEN ! accept also null pointers? 01270 CALL xas_env_retain(xas_env, error=error) 01271 CALL xas_env_release(qs_env%xas_env, error=error) 01272 qs_env%xas_env => xas_env 01273 END IF 01274 IF (PRESENT(virial)) THEN 01275 IF (ASSOCIATED(virial)) THEN 01276 CALL virial_retain(virial,error=error) 01277 END IF 01278 CALL virial_release(qs_env%virial,error=error) 01279 qs_env%virial => virial 01280 END IF 01281 IF (PRESENT(mpools)) THEN 01282 CALL mpools_retain(mpools,error=error) 01283 CALL mpools_release(qs_env%mpools, error=error) 01284 qs_env%mpools => mpools 01285 END IF 01286 IF (PRESENT(mpools_aux_fit)) THEN 01287 CALL mpools_retain(mpools_aux_fit,error=error) 01288 CALL mpools_release(qs_env%mpools_aux_fit, error=error) 01289 qs_env%mpools_aux_fit => mpools_aux_fit 01290 END IF 01291 IF (PRESENT(rho_atom_set)) THEN 01292 CALL set_local_rho(qs_env%local_rho_set,rho_atom_set=rho_atom_set,error=error) 01293 END IF 01294 IF (PRESENT(rho0_atom_set)) THEN 01295 CALL set_local_rho(qs_env%local_rho_set,rho0_atom_set=rho0_atom_set,error=error) 01296 END IF 01297 IF (PRESENT(rho0_mpole)) THEN 01298 CALL set_local_rho(qs_env%local_rho_set,rho0_mpole=rho0_mpole,error=error) 01299 END IF 01300 IF (PRESENT(rhoz_set)) THEN 01301 CALL set_local_rho(qs_env%local_rho_set,rhoz_set=rhoz_set,error=error) 01302 END IF 01303 IF (PRESENT(rhoz_tot)) qs_env%local_rho_set%rhoz_tot = rhoz_tot 01304 IF (PRESENT(ecoul_1c)) THEN 01305 CALL set_hartree_local(qs_env%hartree_local,ecoul_1c=ecoul_1c) 01306 END IF 01307 01308 IF (PRESENT(subsys)) THEN 01309 CALL cp_subsys_retain(subsys,error=error) 01310 CALL cp_subsys_release(qs_env%subsys,error=error) 01311 qs_env%subsys => subsys 01312 END IF 01313 IF (PRESENT(distribution_2d)) THEN 01314 CALL distribution_2d_retain(distribution_2d,error=error) 01315 CALL distribution_2d_release(qs_env%distribution_2d,error=error) 01316 qs_env%distribution_2d => distribution_2d 01317 ENDIF 01318 IF (PRESENT(dbcsr_dist)) THEN 01319 IF(ASSOCIATED(qs_env%dbcsr_dist)) THEN 01320 CALL cp_dbcsr_distribution_release(qs_env%dbcsr_dist) 01321 DEALLOCATE(qs_env%dbcsr_dist) 01322 ENDIF 01323 qs_env%dbcsr_dist => dbcsr_dist 01324 ENDIF 01325 IF (PRESENT(input)) THEN 01326 CALL section_vals_retain(input,error=error) 01327 CALL section_vals_release(qs_env%input,error=error) 01328 qs_env%input => input 01329 END IF 01330 IF (PRESENT(cp_ddapc_env)) THEN 01331 CALL cp_ddapc_retain(cp_ddapc_env, error=error) 01332 CALL cp_ddapc_release(qs_env%cp_ddapc_env, error=error) 01333 qs_env%cp_ddapc_env => cp_ddapc_env 01334 END IF 01335 IF (PRESENT(cp_ddapc_ewald)) THEN 01336 qs_env%cp_ddapc_ewald => cp_ddapc_ewald 01337 END IF 01338 IF (PRESENT(ep_qs_env)) THEN 01339 IF (ASSOCIATED(ep_qs_env)) CALL ep_qs_retain(ep_qs_env,error=error) 01340 CALL ep_qs_release(qs_env%ep_qs_env,error=error) 01341 qs_env%ep_qs_env => ep_qs_env 01342 END IF 01343 IF (PRESENT(x_data)) qs_env%x_data => x_data 01344 IF (PRESENT(et_coupling))qs_env%et_coupling => et_coupling 01345 IF (PRESENT(dftb_potential))qs_env%dftb_potential => dftb_potential 01346 IF (PRESENT(scp_env)) THEN 01347 CALL scp_env_retain(scp_env,error=error) 01348 CALL scp_env_release(qs_env%scp_env,error=error) 01349 qs_env%scp_env => scp_env 01350 END IF 01351 IF (PRESENT(se_taper)) THEN 01352 CALL se_taper_release(qs_env%se_taper,error=error) 01353 qs_env%se_taper => se_taper 01354 END IF 01355 IF (PRESENT(se_store_int_env)) THEN 01356 CALL semi_empirical_si_release(qs_env%se_store_int_env,error=error) 01357 qs_env%se_store_int_env => se_store_int_env 01358 END IF 01359 IF (PRESENT(se_nddo_mpole)) THEN 01360 CALL nddo_mpole_release(qs_env%se_nddo_mpole,error=error) 01361 qs_env%se_nddo_mpole => se_nddo_mpole 01362 END IF 01363 IF (PRESENT(se_nonbond_env)) THEN 01364 CALL fist_nonbond_env_release(qs_env%se_nonbond_env,error) 01365 qs_env%se_nonbond_env => se_nonbond_env 01366 END IF 01367 IF( PRESENT(admm_env) ) qs_env%admm_env => admm_env 01368 IF( PRESENT(lri_env) ) qs_env%lri_env => lri_env 01369 IF( PRESENT(lri_density) ) qs_env%lri_density => lri_density 01370 IF( PRESENT(hfx_ri_env) ) qs_env%hfx_ri_env => hfx_ri_env 01371 IF( PRESENT(dispersion_env) ) qs_env%dispersion_env => dispersion_env 01372 IF( PRESENT(WannierCentres) ) qs_env%WannierCentres => WannierCentres 01373 END SUBROUTINE set_qs_env 01374 01375 ! ***************************************************************************** 01387 SUBROUTINE qs_env_create(qs_env,para_env,globenv,error) 01388 TYPE(qs_environment_type), POINTER :: qs_env 01389 TYPE(cp_para_env_type), POINTER :: para_env 01390 TYPE(global_environment_type), POINTER :: globenv 01391 TYPE(cp_error_type), INTENT(inout) :: error 01392 01393 CHARACTER(len=*), PARAMETER :: routineN = 'qs_env_create', 01394 routineP = moduleN//':'//routineN 01395 01396 INTEGER :: stat 01397 LOGICAL :: failure 01398 01399 failure=.FALSE. 01400 01401 ALLOCATE(qs_env, stat=stat) 01402 CPPostcondition(stat==0,cp_failure_level,routineP,error,failure) 01403 IF (.NOT. failure) THEN 01404 CALL init_qs_env(qs_env,para_env=para_env,& 01405 globenv=globenv, error=error) 01406 END IF 01407 END SUBROUTINE qs_env_create 01408 01409 ! ***************************************************************************** 01418 SUBROUTINE qs_env_retain(qs_env,error) 01419 TYPE(qs_environment_type), POINTER :: qs_env 01420 TYPE(cp_error_type), INTENT(inout) :: error 01421 01422 CHARACTER(len=*), PARAMETER :: routineN = 'qs_env_retain', 01423 routineP = moduleN//':'//routineN 01424 01425 LOGICAL :: failure 01426 01427 failure=.FALSE. 01428 01429 CPPrecondition(ASSOCIATED(qs_env),cp_failure_level,routineP,error,failure) 01430 IF (.NOT. failure) THEN 01431 CPPrecondition(qs_env%ref_count>0,cp_failure_level,routineP,error,failure) 01432 qs_env%ref_count=qs_env%ref_count+1 01433 END IF 01434 END SUBROUTINE qs_env_retain 01435 01436 ! ***************************************************************************** 01445 SUBROUTINE qs_env_release(qs_env,error) 01446 TYPE(qs_environment_type), POINTER :: qs_env 01447 TYPE(cp_error_type), INTENT(inout) :: error 01448 01449 CHARACTER(len=*), PARAMETER :: routineN = 'qs_env_release', 01450 routineP = moduleN//':'//routineN 01451 01452 INTEGER :: i, stat 01453 LOGICAL :: failure 01454 01455 failure=.FALSE. 01456 01457 IF (ASSOCIATED(qs_env)) THEN 01458 CPPrecondition(qs_env%ref_count>0,cp_failure_level,routineP,error,failure) 01459 qs_env%ref_count=qs_env%ref_count-1 01460 IF (qs_env%ref_count<1) THEN 01461 CALL ga_env_release(qs_env%ga_env,error=error) 01462 CALL cell_release(qs_env%cell,error=error) 01463 CALL cell_release(qs_env%super_cell,error=error) 01464 CALL cell_release(qs_env%cell_ref,error=error) 01465 CALL dft_control_release(qs_env%dft_control, error=error) 01466 IF (ASSOCIATED(qs_env%mos)) THEN 01467 DO i=1,SIZE(qs_env%mos) 01468 CALL deallocate_mo_set(qs_env%mos(i)%mo_set,error=error) 01469 END DO 01470 DEALLOCATE(qs_env%mos, stat=stat) 01471 CPPostconditionNoFail(stat==0,cp_warning_level,routineP,error) 01472 END IF 01473 IF (ASSOCIATED(qs_env%mos_aux_fit)) THEN 01474 DO i=1,SIZE(qs_env%mos_aux_fit) 01475 CALL deallocate_mo_set(qs_env%mos_aux_fit(i)%mo_set,error=error) 01476 END DO 01477 DEALLOCATE(qs_env%mos_aux_fit, stat=stat) 01478 CPPostconditionNoFail(stat==0,cp_warning_level,routineP,error) 01479 END IF 01480 01481 IF (ASSOCIATED(qs_env%mo_derivs)) THEN 01482 DO I=1,SIZE(qs_env%mo_derivs) 01483 CALL cp_dbcsr_release_p(qs_env%mo_derivs(I)%matrix, error=error) 01484 ENDDO 01485 DEALLOCATE(qs_env%mo_derivs, stat=stat) 01486 CPPostconditionNoFail(stat==0,cp_warning_level,routineP,error) 01487 ENDIF 01488 01489 IF (ASSOCIATED(qs_env%mo_derivs_aux_fit)) THEN 01490 DO I=1,SIZE(qs_env%mo_derivs_aux_fit) 01491 CALL cp_fm_release(qs_env%mo_derivs_aux_fit(I)%matrix,error=error) 01492 ENDDO 01493 DEALLOCATE(qs_env%mo_derivs_aux_fit, stat=stat) 01494 CPPostconditionNoFail(stat==0,cp_warning_level,routineP,error) 01495 ENDIF 01496 01497 IF (ASSOCIATED(qs_env%mo_loc_history)) THEN 01498 DO I=1,SIZE(qs_env%mo_loc_history) 01499 CALL cp_fm_release(qs_env%mo_loc_history(I)%matrix,error=error) 01500 ENDDO 01501 DEALLOCATE(qs_env%mo_loc_history, stat=stat) 01502 CPPostconditionNoFail(stat==0,cp_warning_level,routineP,error) 01503 ENDIF 01504 01505 IF (ASSOCIATED(qs_env%sab_scp)) THEN 01506 DO i=1,SIZE(qs_env%sab_scp) 01507 CALL deallocate_neighbor_list_set(& 01508 qs_env%sab_scp(i)%neighbor_list_set) 01509 END DO 01510 DEALLOCATE(qs_env%sab_scp,stat=stat) 01511 CPPostconditionNoFail(stat==0,cp_warning_level,routineP,error) 01512 END IF 01513 IF (ASSOCIATED(qs_env%sab_vdw)) THEN 01514 DO i=1,SIZE(qs_env%sab_vdw) 01515 CALL deallocate_neighbor_list_set(& 01516 qs_env%sab_vdw(i)%neighbor_list_set) 01517 END DO 01518 DEALLOCATE(qs_env%sab_vdw,stat=stat) 01519 CPPostconditionNoFail(stat==0,cp_warning_level,routineP,error) 01520 END IF 01521 IF (ASSOCIATED(qs_env%sab_cn)) THEN 01522 DO i=1,SIZE(qs_env%sab_cn) 01523 CALL deallocate_neighbor_list_set(& 01524 qs_env%sab_cn(i)%neighbor_list_set) 01525 END DO 01526 DEALLOCATE(qs_env%sab_cn,stat=stat) 01527 CPPostconditionNoFail(stat==0,cp_warning_level,routineP,error) 01528 END IF 01529 IF (ASSOCIATED(qs_env%sab_orb)) THEN 01530 DO i=1,SIZE(qs_env%sab_orb) 01531 CALL deallocate_neighbor_list_set(& 01532 qs_env%sab_orb(i)%neighbor_list_set) 01533 END DO 01534 DEALLOCATE(qs_env%sab_orb,stat=stat) 01535 CPPostconditionNoFail(stat==0,cp_warning_level,routineP,error) 01536 END IF 01537 IF (ASSOCIATED(qs_env%sab_aux_fit)) THEN 01538 DO i=1,SIZE(qs_env%sab_aux_fit) 01539 CALL deallocate_neighbor_list_set(& 01540 qs_env%sab_aux_fit(i)%neighbor_list_set) 01541 END DO 01542 DEALLOCATE(qs_env%sab_aux_fit,stat=stat) 01543 CPPostconditionNoFail(stat==0,cp_warning_level,routineP,error) 01544 END IF 01545 IF (ASSOCIATED(qs_env%sab_aux_fit_asymm)) THEN 01546 DO i=1,SIZE(qs_env%sab_aux_fit_asymm) 01547 CALL deallocate_neighbor_list_set(& 01548 qs_env%sab_aux_fit_asymm(i)%neighbor_list_set) 01549 END DO 01550 DEALLOCATE(qs_env%sab_aux_fit_asymm,stat=stat) 01551 CPPostconditionNoFail(stat==0,cp_warning_level,routineP,error) 01552 END IF 01553 IF (ASSOCIATED(qs_env%sab_aux_fit_vs_orb)) THEN 01554 DO i=1,SIZE(qs_env%sab_aux_fit_vs_orb) 01555 CALL deallocate_neighbor_list_set(& 01556 qs_env%sab_aux_fit_vs_orb(i)%neighbor_list_set) 01557 END DO 01558 DEALLOCATE(qs_env%sab_aux_fit_vs_orb,stat=stat) 01559 CPPostconditionNoFail(stat==0,cp_warning_level,routineP,error) 01560 END IF 01561 01562 IF (ASSOCIATED(qs_env%sab_all)) THEN 01563 DO i=1,SIZE(qs_env%sab_all) 01564 CALL deallocate_neighbor_list_set(& 01565 qs_env%sab_all(i)%neighbor_list_set) 01566 END DO 01567 DEALLOCATE(qs_env%sab_all,stat=stat) 01568 CPPostconditionNoFail(stat==0,cp_warning_level,routineP,error) 01569 END IF 01570 IF (ASSOCIATED(qs_env%sac_ae)) THEN 01571 DO i=1,SIZE(qs_env%sac_ae) 01572 CALL deallocate_neighbor_list_set(& 01573 qs_env%sac_ae(i)%neighbor_list_set) 01574 END DO 01575 DEALLOCATE(qs_env%sac_ae,stat=stat) 01576 CPPostconditionNoFail(stat==0,cp_warning_level,routineP,error) 01577 END IF 01578 IF (ASSOCIATED(qs_env%sac_ppl)) THEN 01579 DO i=1,SIZE(qs_env%sac_ppl) 01580 CALL deallocate_neighbor_list_set(& 01581 qs_env%sac_ppl(i)%neighbor_list_set) 01582 END DO 01583 DEALLOCATE(qs_env%sac_ppl,stat=stat) 01584 CPPostconditionNoFail(stat==0,cp_warning_level,routineP,error) 01585 END IF 01586 IF (ASSOCIATED(qs_env%sap_ppnl)) THEN 01587 DO i=1,SIZE(qs_env%sap_ppnl) 01588 CALL deallocate_neighbor_list_set(& 01589 qs_env%sap_ppnl(i)%neighbor_list_set) 01590 END DO 01591 DEALLOCATE(qs_env%sap_ppnl,stat=stat) 01592 CPPostconditionNoFail(stat==0,cp_warning_level,routineP,error) 01593 END IF 01594 IF (ASSOCIATED(qs_env%sap_oce)) THEN 01595 DO i=1,SIZE(qs_env%sap_oce) 01596 CALL deallocate_neighbor_list_set(& 01597 qs_env%sap_oce(i)%neighbor_list_set) 01598 END DO 01599 DEALLOCATE(qs_env%sap_oce,stat=stat) 01600 CPPostconditionNoFail(stat==0,cp_warning_level,routineP,error) 01601 END IF 01602 IF (ASSOCIATED(qs_env%sab_se)) THEN 01603 DO i=1,SIZE(qs_env%sab_se) 01604 CALL deallocate_neighbor_list_set(& 01605 qs_env%sab_se(i)%neighbor_list_set) 01606 END DO 01607 DEALLOCATE(qs_env%sab_se,stat=stat) 01608 CPPostconditionNoFail(stat==0,cp_warning_level,routineP,error) 01609 END IF 01610 IF (ASSOCIATED(qs_env%sab_lrc)) THEN 01611 DO i=1,SIZE(qs_env%sab_lrc) 01612 CALL deallocate_neighbor_list_set(& 01613 qs_env%sab_lrc(i)%neighbor_list_set) 01614 END DO 01615 DEALLOCATE(qs_env%sab_lrc,stat=stat) 01616 CPPostconditionNoFail(stat==0,cp_warning_level,routineP,error) 01617 END IF 01618 IF (ASSOCIATED(qs_env%sab_tbe)) THEN 01619 DO i=1,SIZE(qs_env%sab_tbe) 01620 CALL deallocate_neighbor_list_set(& 01621 qs_env%sab_tbe(i)%neighbor_list_set) 01622 END DO 01623 DEALLOCATE(qs_env%sab_tbe,stat=stat) 01624 CPPostconditionNoFail(stat==0,cp_warning_level,routineP,error) 01625 END IF 01626 IF (ASSOCIATED(qs_env%sab_core)) THEN 01627 DO i=1,SIZE(qs_env%sab_core) 01628 CALL deallocate_neighbor_list_set(& 01629 qs_env%sab_core(i)%neighbor_list_set) 01630 END DO 01631 DEALLOCATE(qs_env%sab_core,stat=stat) 01632 CPPostconditionNoFail(stat==0,cp_warning_level,routineP,error) 01633 END IF 01634 IF (ASSOCIATED(qs_env%rtp))THEN 01635 CALL rt_prop_release(qs_env%rtp,error) 01636 DEALLOCATE (qs_env%rtp) 01637 END IF 01638 IF (ASSOCIATED(qs_env%outer_scf_history)) THEN 01639 DEALLOCATE(qs_env%outer_scf_history,stat=stat) 01640 CPPostconditionNoFail(stat==0,cp_warning_level,routineP,error) 01641 qs_env%outer_scf_ihistory=0 01642 ENDIF 01643 IF (ASSOCIATED(qs_env%energy)) & 01644 CALL deallocate_qs_energy(qs_env%energy) 01645 IF (ASSOCIATED(qs_env%force))& 01646 CALL deallocate_qs_force(qs_env%force) 01647 IF (ASSOCIATED(qs_env%harris_env)) THEN 01648 CALL harris_env_release(qs_env%harris_env, error=error) 01649 END IF 01650 IF (ASSOCIATED(qs_env%matrix_h)) THEN 01651 CALL cp_dbcsr_deallocate_matrix_set(qs_env%matrix_h,error) 01652 ENDIF 01653 IF (ASSOCIATED(qs_env%matrix_ks)) THEN 01654 CALL cp_dbcsr_deallocate_matrix_set(qs_env % matrix_ks,error) 01655 ENDIF 01656 IF (ASSOCIATED(qs_env%matrix_vxc)) THEN 01657 CALL cp_dbcsr_deallocate_matrix_set(qs_env % matrix_vxc,error) 01658 ENDIF 01659 IF (ASSOCIATED(qs_env%matrix_ks_aux_fit)) THEN 01660 CALL cp_dbcsr_deallocate_matrix_set(qs_env % matrix_ks_aux_fit,error) 01661 ENDIF 01662 IF (ASSOCIATED(qs_env%matrix_s)) CALL cp_dbcsr_deallocate_matrix_set(qs_env%matrix_s,error) 01663 IF (ASSOCIATED(qs_env%matrix_s_aux_fit)) CALL cp_dbcsr_deallocate_matrix_set(qs_env%matrix_s_aux_fit,error) 01664 IF (ASSOCIATED(qs_env%matrix_s_aux_fit_vs_orb)) CALL cp_dbcsr_deallocate_matrix_set(qs_env%matrix_s_aux_fit_vs_orb,error) 01665 IF (ASSOCIATED(qs_env%matrix_w)) CALL cp_dbcsr_deallocate_matrix_set(qs_env%matrix_w,error) 01666 IF (ASSOCIATED(qs_env%gamma_matrix)) CALL cp_dbcsr_deallocate_matrix_set(qs_env%gamma_matrix,error) 01667 IF (ASSOCIATED(qs_env%oce)) CALL deallocate_oce_set(qs_env%oce,error) 01668 01669 IF (ASSOCIATED(qs_env%local_rho_set)) THEN 01670 CALL local_rho_set_release(qs_env%local_rho_set,error=error) 01671 END IF 01672 IF (ASSOCIATED(qs_env%hartree_local)) THEN 01673 CALL hartree_local_release(qs_env%hartree_local,error=error) 01674 END IF 01675 IF (ASSOCIATED(qs_env%kinetic))& 01676 CALL cp_dbcsr_deallocate_matrix_set(qs_env%kinetic,error) 01677 01678 IF(ASSOCIATED(qs_env%rho_xc)) THEN 01679 NULLIFY(qs_env%rho_xc%rho_ao) 01680 CALL qs_rho_release(qs_env%rho_xc, error=error) 01681 END IF 01682 CALL qs_rho_release(qs_env%rho, error=error) 01683 CALL qs_rho_release(qs_env%rho_aux_fit, error=error) 01684 CALL qs_rho_release(qs_env%rho_buffer,error=error) 01685 CALL scf_c_release(qs_env%scf_control, error=error) 01686 CALL rel_c_release(qs_env%rel_control, error=error) 01687 01688 IF(ASSOCIATED(qs_env%linres_control)) THEN 01689 CALL linres_control_release(qs_env%linres_control, error=error) 01690 END IF 01691 01692 IF(ASSOCIATED(qs_env%task_list)) THEN 01693 CALL deallocate_task_list(qs_env%task_list,error) 01694 ENDIF 01695 IF(ASSOCIATED(qs_env%task_list_aux_fit)) THEN 01696 CALL deallocate_task_list(qs_env%task_list_aux_fit,error) 01697 ENDIF 01698 IF(ASSOCIATED(qs_env%task_list_soft)) THEN 01699 CALL deallocate_task_list(qs_env%task_list_soft,error) 01700 ENDIF 01701 IF (ASSOCIATED(qs_env%ls_scf_env)) THEN 01702 CALL ls_scf_release(qs_env%ls_scf_env,error) 01703 ENDIF 01704 01705 !Only if do_xas_calculation 01706 IF(ASSOCIATED(qs_env%xas_env)) THEN 01707 CALL xas_env_release(qs_env%xas_env,error=error) 01708 END IF 01709 IF(ASSOCIATED(qs_env%virial)) THEN 01710 CALL virial_release(qs_env%virial,error=error) 01711 END IF 01712 CALL pw_env_release(qs_env%pw_env, error=error) 01713 CALL ewald_env_release(qs_env%ewald_env, error=error) 01714 CALL ewald_pw_release(qs_env%ewald_pw, error=error) 01715 CALL cp_para_env_release(qs_env%para_env,error=error) 01716 CALL cp_blacs_env_release(qs_env%blacs_env, error=error) 01717 IF (ASSOCIATED(qs_env%rho_nlcc_g)) THEN 01718 CALL pw_release(qs_env%rho_nlcc_g%pw,error=error) 01719 DEALLOCATE(qs_env%rho_nlcc_g) 01720 ENDIF 01721 IF (ASSOCIATED(qs_env%rho_nlcc)) THEN 01722 CALL pw_release(qs_env%rho_nlcc%pw,error=error) 01723 DEALLOCATE(qs_env%rho_nlcc) 01724 ENDIF 01725 IF (ASSOCIATED(qs_env%rho_core)) THEN 01726 CALL pw_release(qs_env%rho_core%pw,error=error) 01727 DEALLOCATE(qs_env%rho_core) 01728 ENDIF 01729 IF (ASSOCIATED(qs_env%image_matrix)) THEN 01730 DEALLOCATE(qs_env%image_matrix) 01731 ENDIF 01732 IF (ASSOCIATED(qs_env%ipiv)) THEN 01733 DEALLOCATE(qs_env%ipiv) 01734 ENDIF 01735 IF (ASSOCIATED(qs_env%image_coeff)) THEN 01736 DEALLOCATE(qs_env%image_coeff) 01737 ENDIF 01738 IF (ASSOCIATED(qs_env%vppl)) THEN 01739 CALL pw_release(qs_env%vppl%pw,error=error) 01740 DEALLOCATE(qs_env%vppl) 01741 ENDIF 01742 IF (ASSOCIATED(qs_env%vee)) THEN 01743 CALL pw_release(qs_env%vee%pw,error=error) 01744 DEALLOCATE(qs_env%vee) 01745 ENDIF 01746 CALL qs_charges_release(qs_env%qs_charges, error=error) 01747 CALL qs_ks_release(qs_env%ks_env, error=error) 01748 CALL qs_ks_qmmm_release(qs_env%ks_qmmm_env, error=error) 01749 CALL wfi_release(qs_env%wf_history,error=error) 01750 CALL scf_env_release(qs_env%scf_env, error=error) 01751 CALL mpools_release(qs_env%mpools,error=error) 01752 CALL mpools_release(qs_env%mpools_aux_fit,error=error) 01753 IF (ASSOCIATED(qs_env%distribution_2d)) THEN 01754 CALL distribution_2d_release(qs_env%distribution_2d,error=error) 01755 ENDIF 01756 IF(ASSOCIATED(qs_env%dbcsr_dist)) THEN 01757 CALL cp_dbcsr_distribution_release(qs_env%dbcsr_dist) 01758 DEALLOCATE(qs_env%dbcsr_dist) 01759 ENDIF 01760 CALL cp_subsys_release(qs_env%subsys,error=error) 01761 CALL section_vals_release(qs_env%input,error=error) 01762 CALL cp_ddapc_release(qs_env%cp_ddapc_env, error=error) 01763 CALL cp_ddapc_ewald_release(qs_env%cp_ddapc_ewald, error=error) 01764 CALL ep_qs_release(qs_env%ep_qs_env,error=error) 01765 CALL efield_berry_release(qs_env%efield,error=error) 01766 CALL cp_result_release(qs_env%results,error=error) 01767 IF(ASSOCIATED(qs_env%x_data)) THEN 01768 CALL hfx_release(qs_env%x_data, error=error) 01769 END IF 01770 IF(ASSOCIATED(qs_env%et_coupling)) THEN 01771 CALL et_coupling_release(qs_env%et_coupling,error) 01772 END IF 01773 IF (ASSOCIATED(qs_env%dftb_potential)) THEN 01774 CALL qs_dftb_pairpot_release(qs_env%dftb_potential,error) 01775 END IF 01776 IF (ASSOCIATED(qs_env%scp_env)) THEN 01777 CALL scp_env_release ( qs_env % scp_env, error ) 01778 END IF 01779 IF (ASSOCIATED(qs_env%se_taper)) THEN 01780 CALL se_taper_release(qs_env%se_taper, error) 01781 END IF 01782 IF (ASSOCIATED(qs_env%se_store_int_env)) THEN 01783 CALL semi_empirical_si_release(qs_env%se_store_int_env, error) 01784 END IF 01785 IF (ASSOCIATED(qs_env%se_nddo_mpole)) THEN 01786 CALL nddo_mpole_release(qs_env%se_nddo_mpole, error) 01787 END IF 01788 IF (ASSOCIATED(qs_env%se_nonbond_env)) THEN 01789 CALL fist_nonbond_env_release(qs_env%se_nonbond_env,error) 01790 END IF 01791 IF (ASSOCIATED(qs_env%admm_env)) THEN 01792 CALL admm_env_release(qs_env%admm_env, error) 01793 END IF 01794 IF (ASSOCIATED(qs_env%lri_env)) THEN 01795 CALL lri_env_release(qs_env%lri_env, error) 01796 END IF 01797 IF (ASSOCIATED(qs_env%lri_density)) THEN 01798 CALL lri_density_release(qs_env%lri_density, error) 01799 END IF 01800 IF (ASSOCIATED(qs_env%hfx_ri_env)) THEN 01801 CALL ri_env_release(qs_env%hfx_ri_env, error) 01802 END IF 01803 IF (ASSOCIATED(qs_env%mp2_env)) THEN 01804 CALL mp2_env_release(qs_env%mp2_env, error) 01805 END IF 01806 IF (ASSOCIATED(qs_env%kg_env)) THEN 01807 CALL kg_env_release(qs_env%kg_env, error) 01808 END IF 01809 IF (ASSOCIATED(qs_env%dispersion_env)) THEN 01810 IF (ASSOCIATED(qs_env%dispersion_env%maxci)) THEN 01811 ! DFT-D3 arrays 01812 DEALLOCATE(qs_env%dispersion_env%maxci, stat=stat) 01813 CPPostconditionNoFail(stat==0,cp_warning_level,routineP,error) 01814 DEALLOCATE(qs_env%dispersion_env%c6ab, stat=stat) 01815 CPPostconditionNoFail(stat==0,cp_warning_level,routineP,error) 01816 DEALLOCATE(qs_env%dispersion_env%r0ab, stat=stat) 01817 CPPostconditionNoFail(stat==0,cp_warning_level,routineP,error) 01818 DEALLOCATE(qs_env%dispersion_env%rcov, stat=stat) 01819 CPPostconditionNoFail(stat==0,cp_warning_level,routineP,error) 01820 DEALLOCATE(qs_env%dispersion_env%r2r4, stat=stat) 01821 CPPostconditionNoFail(stat==0,cp_warning_level,routineP,error) 01822 DEALLOCATE(qs_env%dispersion_env%cn, stat=stat) 01823 CPPostconditionNoFail(stat==0,cp_warning_level,routineP,error) 01824 IF (ASSOCIATED(qs_env%dispersion_env%cnkind)) THEN 01825 DEALLOCATE(qs_env%dispersion_env%cnkind, stat=stat) 01826 CPPostconditionNoFail(stat==0,cp_warning_level,routineP,error) 01827 END IF 01828 IF (ASSOCIATED(qs_env%dispersion_env%cnlist)) THEN 01829 DO i=1,SIZE(qs_env%dispersion_env%cnlist) 01830 DEALLOCATE(qs_env%dispersion_env%cnlist(i)%atom, stat=stat) 01831 CPPostconditionNoFail(stat==0,cp_warning_level,routineP,error) 01832 END DO 01833 DEALLOCATE(qs_env%dispersion_env%cnlist, stat=stat) 01834 CPPostconditionNoFail(stat==0,cp_warning_level,routineP,error) 01835 END IF 01836 END IF 01837 ! vdD-DF 01838 IF (ASSOCIATED(qs_env%dispersion_env%q_mesh)) THEN 01839 DEALLOCATE(qs_env%dispersion_env%q_mesh, stat=stat) 01840 CPPostconditionNoFail(stat==0,cp_warning_level,routineP,error) 01841 END IF 01842 IF (ASSOCIATED(qs_env%dispersion_env%kernel)) THEN 01843 DEALLOCATE(qs_env%dispersion_env%kernel, stat=stat) 01844 CPPostconditionNoFail(stat==0,cp_warning_level,routineP,error) 01845 END IF 01846 IF (ASSOCIATED(qs_env%dispersion_env%d2phi_dk2)) THEN 01847 DEALLOCATE(qs_env%dispersion_env%d2phi_dk2, stat=stat) 01848 CPPostconditionNoFail(stat==0,cp_warning_level,routineP,error) 01849 END IF 01850 IF (ASSOCIATED(qs_env%dispersion_env%d2y_dx2)) THEN 01851 DEALLOCATE(qs_env%dispersion_env%d2y_dx2, stat=stat) 01852 CPPostconditionNoFail(stat==0,cp_warning_level,routineP,error) 01853 END IF 01854 01855 DEALLOCATE(qs_env%dispersion_env, stat=stat) 01856 CPPostconditionNoFail(stat==0,cp_warning_level,routineP,error) 01857 END IF 01858 01859 IF( ASSOCIATED(qs_env%WannierCentres)) THEN 01860 DO i=1,SIZE(qs_env%WannierCentres) 01861 DEALLOCATE(qs_env%WannierCentres(i)%WannierHamDiag, stat=stat) 01862 CPPostconditionNoFail(stat==0,cp_warning_level,routineP,error) 01863 DEALLOCATE(qs_env%WannierCentres(i)%centres, stat=stat) 01864 CPPostconditionNoFail(stat==0,cp_warning_level,routineP,error) 01865 ENDDO 01866 DEALLOCATE(qs_env%WannierCentres, stat=stat) 01867 CPPostconditionNoFail(stat==0,cp_warning_level,routineP,error) 01868 ENDIF 01869 ! dereference atprop (we assume it will be deallocated in force_env! 01870 NULLIFY(qs_env%atprop) 01871 ! now we are ready to deallocate the full structure 01872 DEALLOCATE(qs_env, stat=stat) 01873 CPPostconditionNoFail(stat==0,cp_warning_level,routineP,error) 01874 END IF 01875 END IF 01876 NULLIFY(qs_env) 01877 END SUBROUTINE qs_env_release 01878 01879 ! ***************************************************************************** 01890 SUBROUTINE qs_env_reorthogonalize_vectors(qs_env, v_matrix, n_col,& 01891 error) 01892 TYPE(qs_environment_type), POINTER :: qs_env 01893 TYPE(cp_fm_type), POINTER :: v_matrix 01894 INTEGER, INTENT(in), OPTIONAL :: n_col 01895 TYPE(cp_error_type), INTENT(inout) :: error 01896 01897 CHARACTER(len=*), PARAMETER :: 01898 routineN = 'qs_env_reorthogonalize_vectors', 01899 routineP = moduleN//':'//routineN 01900 01901 INTEGER :: handle, my_n_col 01902 LOGICAL :: failure, has_unit_metric, 01903 ortho_contains_cholesky, 01904 smearing_is_used 01905 TYPE(cp_dbcsr_p_type), DIMENSION(:), 01906 POINTER :: matrix_s 01907 TYPE(cp_fm_pool_type), POINTER :: maxao_maxmo_fm_pool 01908 TYPE(qs_matrix_pools_type), POINTER :: mpools 01909 TYPE(qs_scf_env_type), POINTER :: scf_env 01910 TYPE(scf_control_type), POINTER :: scf_control 01911 01912 failure=.FALSE. 01913 NULLIFY(scf_env, scf_control, maxao_maxmo_fm_pool, matrix_s, mpools) 01914 CALL timeset(routineN,handle) 01915 01916 CPPrecondition(ASSOCIATED(qs_env),cp_failure_level,routineP,error,failure) 01917 CPPrecondition(ASSOCIATED(v_matrix),cp_failure_level,routineP,error,failure) 01918 01919 IF (.NOT. failure) THEN 01920 01921 CALL cp_fm_get_info(v_matrix,ncol_global=my_n_col,error=error) 01922 IF (PRESENT(n_col)) my_n_col=n_col 01923 CALL get_qs_env(qs_env,mpools=mpools,& 01924 scf_env=scf_env,& 01925 scf_control=scf_control,& 01926 matrix_s=matrix_s,& 01927 error=error) 01928 CALL mpools_get(mpools,maxao_maxmo_fm_pool=maxao_maxmo_fm_pool,& 01929 error=error) 01930 IF (ASSOCIATED(scf_env)) THEN 01931 ortho_contains_cholesky=(scf_env%method /= ot_method_nr).AND.& 01932 (scf_env%cholesky_method>0 ).AND.& 01933 ASSOCIATED(scf_env%ortho) 01934 ELSE 01935 ortho_contains_cholesky=.FALSE. 01936 END IF 01937 01938 CALL get_qs_env(qs_env,has_unit_metric=has_unit_metric,error=error) 01939 smearing_is_used = .FALSE. 01940 IF (qs_env%dft_control%smear) THEN 01941 smearing_is_used = .TRUE. 01942 END IF 01943 01944 01945 IF (has_unit_metric) THEN 01946 CALL make_basis_simple(v_matrix,my_n_col,error=error) 01947 ELSE IF (smearing_is_used) THEN 01948 CALL make_basis_lowdin(vmatrix=v_matrix,ncol=my_n_col,& 01949 matrix_s=matrix_s(1)%matrix,error=error) 01950 ELSE IF (ortho_contains_cholesky) THEN 01951 CALL make_basis_cholesky(vmatrix=v_matrix,ncol=my_n_col,& 01952 ortho=scf_env%ortho,error=error) 01953 ELSE 01954 CALL make_basis_sm(v_matrix,my_n_col, matrix_s(1)%matrix ,error=error) 01955 END IF 01956 END IF 01957 CALL timestop(handle) 01958 END SUBROUTINE qs_env_reorthogonalize_vectors 01959 01960 END MODULE qs_environment_types
1.7.3