(git:1f285aa)
qmmm_se_energy.F
Go to the documentation of this file.
1 !--------------------------------------------------------------------------------------------------!
2 ! CP2K: A general program to perform molecular dynamics simulations !
3 ! Copyright 2000-2024 CP2K developers group <https://cp2k.org> !
4 ! !
5 ! SPDX-License-Identifier: GPL-2.0-or-later !
6 !--------------------------------------------------------------------------------------------------!
7 
8 ! **************************************************************************************************
9 !> \brief Calculation of the QMMM Hamiltonian integral matrix <a|\sum_i q_i|b> for
10 !> semi-empirical methods
11 !> \author Teodoro Laino 04.2007 [created]
12 ! **************************************************************************************************
14  USE atomic_kind_types, ONLY: atomic_kind_type,&
16  USE cell_types, ONLY: cell_type,&
17  pbc
18  USE cp_control_types, ONLY: dft_control_type
22  cp_logger_type
23  USE cp_output_handling, ONLY: cp_p_file,&
27  USE dbcsr_api, ONLY: dbcsr_copy,&
28  dbcsr_get_block_p,&
29  dbcsr_p_type,&
30  dbcsr_set
31  USE input_constants, ONLY: &
35  USE kinds, ONLY: dp
36  USE message_passing, ONLY: mp_para_env_type
38  USE particle_types, ONLY: particle_type
39  USE qmmm_types_low, ONLY: qmmm_env_qm_type,&
40  qmmm_pot_p_type,&
41  qmmm_pot_type
43  USE qs_energy_types, ONLY: qs_energy_type
44  USE qs_environment_types, ONLY: get_qs_env,&
45  qs_environment_type
46  USE qs_kind_types, ONLY: get_qs_kind,&
47  qs_kind_type
48  USE qs_ks_qmmm_types, ONLY: qs_ks_qmmm_env_type
49  USE qs_ks_types, ONLY: qs_ks_env_type,&
51  USE qs_neighbor_list_types, ONLY: neighbor_list_set_p_type
56  rotnuc
58  se_int_control_type,&
59  se_taper_type,&
62  semi_empirical_type,&
66 #include "./base/base_uses.f90"
67 
68  IMPLICIT NONE
69 
70  PRIVATE
71 
72  CHARACTER(len=*), PARAMETER, PRIVATE :: moduleN = 'qmmm_se_energy'
73 
74  PUBLIC :: build_se_qmmm_matrix
75 
76 CONTAINS
77 
78 ! **************************************************************************************************
79 !> \brief Constructs the 1-el semi-empirical hamiltonian
80 !> \param qs_env ...
81 !> \param qmmm_env ...
82 !> \param particles_mm ...
83 !> \param mm_cell ...
84 !> \param para_env ...
85 !> \author Teodoro Laino 04.2007 [created]
86 ! **************************************************************************************************
87  SUBROUTINE build_se_qmmm_matrix(qs_env, qmmm_env, particles_mm, mm_cell, para_env)
88 
89  TYPE(qs_environment_type), POINTER :: qs_env
90  TYPE(qmmm_env_qm_type), POINTER :: qmmm_env
91  TYPE(particle_type), DIMENSION(:), POINTER :: particles_mm
92  TYPE(cell_type), POINTER :: mm_cell
93  TYPE(mp_para_env_type), POINTER :: para_env
94 
95  CHARACTER(len=*), PARAMETER :: routinen = 'build_se_qmmm_matrix'
96 
97  INTEGER :: handle, i, iatom, ikind, itype, iw, &
98  natom, natorb_a, nkind
99  INTEGER, DIMENSION(:), POINTER :: list
100  LOGICAL :: anag, defined, found
101  REAL(kind=dp) :: enuclear
102  REAL(kind=dp), DIMENSION(:, :), POINTER :: h_block_a
103  TYPE(atomic_kind_type), DIMENSION(:), POINTER :: atomic_kind_set
104  TYPE(cp_logger_type), POINTER :: logger
105  TYPE(dbcsr_p_type), DIMENSION(:), POINTER :: matrix_s
106  TYPE(dft_control_type), POINTER :: dft_control
107  TYPE(neighbor_list_set_p_type), DIMENSION(:), &
108  POINTER :: sab_orb
109  TYPE(particle_type), DIMENSION(:), POINTER :: particles_qm
110  TYPE(qs_energy_type), POINTER :: energy
111  TYPE(qs_kind_type), DIMENSION(:), POINTER :: qs_kind_set
112  TYPE(qs_ks_env_type), POINTER :: ks_env
113  TYPE(qs_ks_qmmm_env_type), POINTER :: ks_qmmm_env_loc
114  TYPE(se_int_control_type) :: se_int_control
115  TYPE(se_taper_type), POINTER :: se_taper
116  TYPE(semi_empirical_type), POINTER :: se_kind_a, se_kind_mm
117 
118  CALL timeset(routinen, handle)
119  NULLIFY (logger)
120  logger => cp_get_default_logger()
121 
122  NULLIFY (matrix_s, atomic_kind_set, qs_kind_set, energy)
123  NULLIFY (se_kind_a, se_kind_mm, se_taper, particles_qm, ks_env, sab_orb)
124  CALL build_qs_neighbor_lists(qs_env, para_env, force_env_section=qs_env%input)
125  CALL get_qs_env(qs_env, &
126  ks_env=ks_env, &
127  matrix_s=matrix_s, &
128  energy=energy, &
129  sab_orb=sab_orb)
130 
131  CALL build_overlap_matrix(ks_env, matrix_s=matrix_s, &
132  matrix_name="OVERLAP", &
133  basis_type_a="ORB", &
134  basis_type_b="ORB", &
135  sab_nl=sab_orb)
136 
137  CALL set_ks_env(ks_env, matrix_s=matrix_s)
138  CALL get_qs_env(qs_env=qs_env, &
139  se_taper=se_taper, &
140  atomic_kind_set=atomic_kind_set, &
141  qs_kind_set=qs_kind_set, &
142  ks_qmmm_env=ks_qmmm_env_loc, &
143  dft_control=dft_control, &
144  particle_set=particles_qm)
145 
146  SELECT CASE (dft_control%qs_control%method_id)
149  ! Go on with the calculation..
150  CASE DEFAULT
151  ! Otherwise stop..
152  cpabort("Method not available")
153  END SELECT
154  anag = dft_control%qs_control%se_control%analytical_gradients
155  ! Setup type for SE integral control
157  se_int_control, shortrange=.false., do_ewald_r3=.false., &
158  do_ewald_gks=.false., integral_screening=dft_control%qs_control%se_control%integral_screening, &
159  max_multipole=do_multipole_none, pc_coulomb_int=.false.)
160 
161  ! Allocate the core Hamiltonian matrix
162  CALL dbcsr_allocate_matrix_set(ks_qmmm_env_loc%matrix_h, 1)
163  ALLOCATE (ks_qmmm_env_loc%matrix_h(1)%matrix)
164 
165  CALL dbcsr_copy(ks_qmmm_env_loc%matrix_h(1)%matrix, matrix_s(1)%matrix, &
166  name="QMMM HAMILTONIAN MATRIX")
167  CALL dbcsr_set(ks_qmmm_env_loc%matrix_h(1)%matrix, 0.0_dp)
168 
169  SELECT CASE (qmmm_env%qmmm_coupl_type)
171  ! Create a fake semi-empirical type to handle the classical atom
172  CALL semi_empirical_create(se_kind_mm)
173  CALL se_param_set_default(se_kind_mm, 0, do_method_pchg)
174  itype = get_se_type(se_kind_mm%typ)
175  nkind = SIZE(atomic_kind_set)
176  enuclear = 0.0_dp
177  kinds: DO ikind = 1, nkind
178  CALL get_atomic_kind(atomic_kind_set(ikind), natom=natom, atom_list=list)
179  CALL get_qs_kind(qs_kind_set(ikind), se_parameter=se_kind_a)
180  CALL get_se_param(se_kind_a, &
181  defined=defined, &
182  natorb=natorb_a)
183  IF (.NOT. defined .OR. natorb_a < 1) cycle
184  atoms: DO i = 1, SIZE(list)
185  iatom = list(i)
186  ! Give back block
187  NULLIFY (h_block_a)
188  CALL dbcsr_get_block_p(matrix=ks_qmmm_env_loc%matrix_h(1)%matrix, &
189  row=iatom, col=iatom, block=h_block_a, found=found)
190 
191  IF (ASSOCIATED(h_block_a)) THEN
192  h_block_a = 0.0_dp
193  ! Real QM/MM computation
194  CALL build_se_qmmm_matrix_low(h_block_a, &
195  se_kind_a, &
196  se_kind_mm, &
197  qmmm_env%Potentials, &
198  particles_mm, &
199  qmmm_env%mm_atom_chrg, &
200  qmmm_env%mm_atom_index, &
201  mm_cell, &
202  iatom, &
203  enuclear, &
204  itype, &
205  se_taper, &
206  se_int_control, &
207  anag, &
208  qmmm_env%spherical_cutoff, &
209  particles_qm)
210  ! Possibly added charges
211  IF (qmmm_env%move_mm_charges .OR. qmmm_env%add_mm_charges) THEN
212  CALL build_se_qmmm_matrix_low(h_block_a, &
213  se_kind_a, &
214  se_kind_mm, &
215  qmmm_env%added_charges%potentials, &
216  qmmm_env%added_charges%added_particles, &
217  qmmm_env%added_charges%mm_atom_chrg, &
218  qmmm_env%added_charges%mm_atom_index, &
219  mm_cell, &
220  iatom, &
221  enuclear, &
222  itype, &
223  se_taper, &
224  se_int_control, &
225  anag, &
226  qmmm_env%spherical_cutoff, &
227  particles_qm)
228  END IF
229  END IF
230  END DO atoms
231  END DO kinds
232  CALL para_env%sum(enuclear)
233  energy%qmmm_nu = enuclear
234  CALL semi_empirical_release(se_kind_mm)
235  CASE (do_qmmm_none)
236  ! Zero Matrix
237  CALL dbcsr_set(ks_qmmm_env_loc%matrix_h(1)%matrix, 0.0_dp)
238  END SELECT
239  IF (btest(cp_print_key_should_output(logger%iter_info, &
240  qs_env%input, "QMMM%PRINT%QMMM_MATRIX"), cp_p_file)) THEN
241  iw = cp_print_key_unit_nr(logger, qs_env%input, "QMMM%PRINT%QMMM_MATRIX", &
242  extension=".Log")
243  CALL cp_dbcsr_write_sparse_matrix(ks_qmmm_env_loc%matrix_h(1)%matrix, 4, 6, qs_env, para_env, &
244  scale=1.0_dp, output_unit=iw)
245  CALL cp_print_key_finished_output(iw, logger, qs_env%input, &
246  "QMMM%PRINT%QMMM_MATRIX")
247  END IF
248 
249  CALL timestop(handle)
250 
251  END SUBROUTINE build_se_qmmm_matrix
252 
253 ! **************************************************************************************************
254 !> \brief Low Level : Constructs the 1-el semi-empirical hamiltonian block
255 !> \param h_block_a ...
256 !> \param se_kind_a ...
257 !> \param se_kind_mm ...
258 !> \param potentials ...
259 !> \param particles_mm ...
260 !> \param mm_charges ...
261 !> \param mm_atom_index ...
262 !> \param mm_cell ...
263 !> \param IndQM ...
264 !> \param enuclear ...
265 !> \param itype ...
266 !> \param se_taper ...
267 !> \param se_int_control ...
268 !> \param anag ...
269 !> \param qmmm_spherical_cutoff ...
270 !> \param particles_qm ...
271 !> \author Teodoro Laino 04.2007 [created]
272 ! **************************************************************************************************
273  SUBROUTINE build_se_qmmm_matrix_low(h_block_a, se_kind_a, se_kind_mm, potentials, &
274  particles_mm, mm_charges, mm_atom_index, &
275  mm_cell, IndQM, enuclear, itype, se_taper, se_int_control, anag, &
276  qmmm_spherical_cutoff, particles_qm)
277 
278  REAL(kind=dp), DIMENSION(:, :), POINTER :: h_block_a
279  TYPE(semi_empirical_type), POINTER :: se_kind_a, se_kind_mm
280  TYPE(qmmm_pot_p_type), DIMENSION(:), POINTER :: potentials
281  TYPE(particle_type), DIMENSION(:), POINTER :: particles_mm
282  REAL(kind=dp), DIMENSION(:), POINTER :: mm_charges
283  INTEGER, DIMENSION(:), POINTER :: mm_atom_index
284  TYPE(cell_type), POINTER :: mm_cell
285  INTEGER, INTENT(IN) :: indqm
286  REAL(kind=dp), INTENT(INOUT) :: enuclear
287  INTEGER, INTENT(IN) :: itype
288  TYPE(se_taper_type), POINTER :: se_taper
289  TYPE(se_int_control_type), INTENT(IN) :: se_int_control
290  LOGICAL, INTENT(IN) :: anag
291  REAL(kind=dp), INTENT(IN) :: qmmm_spherical_cutoff(2)
292  TYPE(particle_type), DIMENSION(:), POINTER :: particles_qm
293 
294  CHARACTER(len=*), PARAMETER :: routinen = 'build_se_qmmm_matrix_low'
295 
296  INTEGER :: handle, i1, i1l, i2, imm, imp, indmm, &
297  ipot, j1, j1l
298  REAL(kind=dp) :: enuc, rt1, rt2, rt3, sph_chrg_factor
299  REAL(kind=dp), DIMENSION(3) :: r_pbc, rij
300  REAL(kind=dp), DIMENSION(45) :: e1b
301  TYPE(qmmm_pot_type), POINTER :: pot
302 
303  CALL timeset(routinen, handle)
304  ! Loop Over MM atoms
305  ! Loop over Pot stores atoms with the same charge
306  mainlooppot: DO ipot = 1, SIZE(potentials)
307  pot => potentials(ipot)%Pot
308  ! Loop over atoms belonging to this type
309  loopmm: DO imp = 1, SIZE(pot%mm_atom_index)
310  imm = pot%mm_atom_index(imp)
311  indmm = mm_atom_index(imm)
312  r_pbc = pbc(particles_mm(indmm)%r - particles_qm(indqm)%r, mm_cell)
313  rt1 = r_pbc(1)
314  rt2 = r_pbc(2)
315  rt3 = r_pbc(3)
316  rij = (/rt1, rt2, rt3/)
317  se_kind_mm%zeff = mm_charges(imm)
318  ! Computes the screening factor for the spherical cutoff (if defined)
319  IF (qmmm_spherical_cutoff(1) > 0.0_dp) THEN
320  CALL spherical_cutoff_factor(qmmm_spherical_cutoff, rij, sph_chrg_factor)
321  se_kind_mm%zeff = se_kind_mm%zeff*sph_chrg_factor
322  END IF
323  IF (abs(se_kind_mm%zeff) <= epsilon(0.0_dp)) cycle
324  CALL rotnuc(se_kind_a, se_kind_mm, rij, itype=itype, e1b=e1b, anag=anag, &
325  se_int_control=se_int_control, se_taper=se_taper)
326  CALL corecore(se_kind_a, se_kind_mm, rij, itype=itype, enuc=enuc, anag=anag, &
327  se_int_control=se_int_control, se_taper=se_taper)
328  enuclear = enuclear + enuc
329  ! Contribution to the iatom block
330  ! Computation of the QMMM core matrix
331  i2 = 0
332  DO i1l = 1, se_kind_a%natorb
333  i1 = se_orbital_pointer(i1l)
334  DO j1l = 1, i1l - 1
335  j1 = se_orbital_pointer(j1l)
336  i2 = i2 + 1
337  h_block_a(i1, j1) = h_block_a(i1, j1) + e1b(i2)
338  h_block_a(j1, i1) = h_block_a(i1, j1)
339  END DO
340  j1 = se_orbital_pointer(j1l)
341  i2 = i2 + 1
342  h_block_a(i1, j1) = h_block_a(i1, j1) + e1b(i2)
343  END DO
344  END DO loopmm
345  END DO mainlooppot
346  CALL timestop(handle)
347  END SUBROUTINE build_se_qmmm_matrix_low
348 
349 END MODULE qmmm_se_energy
subroutine pbc(r, r_pbc, s, s_pbc, a, b, c, alpha, beta, gamma, debug, info, pbc0, h, hinv)
...
Definition: dumpdcd.F:1203
Define the atomic kind types and their sub types.
subroutine, public get_atomic_kind(atomic_kind, fist_potential, element_symbol, name, mass, kind_number, natom, atom_list, rcov, rvdw, z, qeff, apol, cpol, mm_radius, shell, shell_active, damping)
Get attributes of an atomic kind.
Handles all functions related to the CELL.
Definition: cell_types.F:15
Defines control structures, which contain the parameters and the settings for the DFT-based calculati...
DBCSR operations in CP2K.
DBCSR output in CP2K.
subroutine, public cp_dbcsr_write_sparse_matrix(sparse_matrix, before, after, qs_env, para_env, first_row, last_row, first_col, last_col, scale, output_unit, omit_headers)
...
various routines to log and control the output. The idea is that decisions about where to log should ...
type(cp_logger_type) function, pointer, public cp_get_default_logger()
returns the default logger
routines to handle the output, The idea is to remove the decision of wheter to output and what to out...
integer function, public cp_print_key_unit_nr(logger, basis_section, print_key_path, extension, middle_name, local, log_filename, ignore_should_output, file_form, file_position, file_action, file_status, do_backup, on_file, is_new_file, mpi_io, fout)
...
subroutine, public cp_print_key_finished_output(unit_nr, logger, basis_section, print_key_path, local, ignore_should_output, on_file, mpi_io)
should be called after you finish working with a unit obtained with cp_print_key_unit_nr,...
integer, parameter, public cp_p_file
integer function, public cp_print_key_should_output(iteration_info, basis_section, print_key_path, used_print_key, first_time)
returns what should be done with the given property if btest(res,cp_p_store) then the property should...
collects all constants needed in input so that they can be used without circular dependencies
integer, parameter, public do_qmmm_none
integer, parameter, public do_method_pchg
integer, parameter, public do_method_pdg
integer, parameter, public do_qmmm_pcharge
integer, parameter, public do_method_pnnl
integer, parameter, public do_qmmm_coulomb
integer, parameter, public do_method_rm1
integer, parameter, public do_qmmm_swave
integer, parameter, public do_method_pm3
integer, parameter, public do_method_mndo
integer, parameter, public do_method_mndod
integer, parameter, public do_method_am1
integer, parameter, public do_qmmm_gauss
integer, parameter, public do_method_pm6fm
integer, parameter, public do_method_pm6
Defines the basic variable types.
Definition: kinds.F:23
integer, parameter, public dp
Definition: kinds.F:34
An array-based list which grows on demand. When the internal array is full, a new array of twice the ...
Definition: list.F:24
Interface to the message passing library MPI.
Multipole structure: for multipole (fixed and induced) in FF based MD.
integer, parameter, public do_multipole_none
Define the data structure for the particle information.
Calculation of the QMMM Hamiltonian integral matrix <a|\sum_i q_i|b> for semi-empirical methods.
subroutine, public build_se_qmmm_matrix(qs_env, qmmm_env, particles_mm, mm_cell, para_env)
Constructs the 1-el semi-empirical hamiltonian.
subroutine, public spherical_cutoff_factor(spherical_cutoff, rij, factor)
Computes a spherical cutoff factor for the QMMM interactions.
Definition: qmmm_util.F:615
subroutine, public get_qs_env(qs_env, atomic_kind_set, qs_kind_set, cell, super_cell, cell_ref, use_ref_cell, kpoints, dft_control, mos, sab_orb, sab_all, qmmm, qmmm_periodic, sac_ae, sac_ppl, sac_lri, sap_ppnl, sab_vdw, sab_scp, sap_oce, sab_lrc, sab_se, sab_xtbe, sab_tbe, sab_core, sab_xb, sab_xtb_nonbond, sab_almo, sab_kp, sab_kp_nosym, particle_set, energy, force, matrix_h, matrix_h_im, matrix_ks, matrix_ks_im, matrix_vxc, run_rtp, rtp, matrix_h_kp, matrix_h_im_kp, matrix_ks_kp, matrix_ks_im_kp, matrix_vxc_kp, kinetic_kp, matrix_s_kp, matrix_w_kp, matrix_s_RI_aux_kp, matrix_s, matrix_s_RI_aux, matrix_w, matrix_p_mp2, matrix_p_mp2_admm, rho, rho_xc, pw_env, ewald_env, ewald_pw, active_space, mpools, input, para_env, blacs_env, scf_control, rel_control, kinetic, qs_charges, vppl, rho_core, rho_nlcc, rho_nlcc_g, ks_env, ks_qmmm_env, wf_history, scf_env, local_particles, local_molecules, distribution_2d, dbcsr_dist, molecule_kind_set, molecule_set, subsys, cp_subsys, oce, local_rho_set, rho_atom_set, task_list, task_list_soft, rho0_atom_set, rho0_mpole, rhoz_set, ecoul_1c, rho0_s_rs, rho0_s_gs, do_kpoints, has_unit_metric, requires_mo_derivs, mo_derivs, mo_loc_history, nkind, natom, nelectron_total, nelectron_spin, efield, neighbor_list_id, linres_control, xas_env, virial, cp_ddapc_env, cp_ddapc_ewald, outer_scf_history, outer_scf_ihistory, x_data, et_coupling, dftb_potential, results, se_taper, se_store_int_env, se_nddo_mpole, se_nonbond_env, admm_env, lri_env, lri_density, exstate_env, ec_env, dispersion_env, gcp_env, vee, rho_external, external_vxc, mask, mp2_env, bs_env, kg_env, WannierCentres, atprop, ls_scf_env, do_transport, transport_env, v_hartree_rspace, s_mstruct_changed, rho_changed, potential_changed, forces_up_to_date, mscfg_env, almo_scf_env, gradient_history, variable_history, embed_pot, spin_embed_pot, polar_env, mos_last_converged, rhs)
Get the QUICKSTEP environment.
Define the quickstep kind type and their sub types.
Definition: qs_kind_types.F:23
subroutine, public get_qs_kind(qs_kind, basis_set, basis_type, ncgf, nsgf, all_potential, tnadd_potential, gth_potential, sgp_potential, upf_potential, se_parameter, dftb_parameter, xtb_parameter, dftb3_param, zeff, elec_conf, mao, lmax_dftb, alpha_core_charge, ccore_charge, core_charge, core_charge_radius, paw_proj_set, paw_atom, hard_radius, hard0_radius, max_rad_local, covalent_radius, vdw_radius, gpw_r3d_rs_type_forced, harmonics, max_iso_not0, max_s_harm, grid_atom, ngrid_ang, ngrid_rad, lmax_rho0, dft_plus_u_atom, l_of_dft_plus_u, n_of_dft_plus_u, u_minus_j, U_of_dft_plus_u, J_of_dft_plus_u, alpha_of_dft_plus_u, beta_of_dft_plus_u, J0_of_dft_plus_u, occupation_of_dft_plus_u, dispersion, bs_occupation, magnetization, no_optimize, addel, laddel, naddel, orbitals, max_scf, eps_scf, smear, u_ramping, u_minus_j_target, eps_u_ramping, init_u_ramping_each_scf, reltmat, ghost, floating, name, element_symbol, pao_basis_size, pao_potentials, pao_descriptors, nelec)
Get attributes of an atomic kind.
subroutine, public set_ks_env(ks_env, v_hartree_rspace, s_mstruct_changed, rho_changed, potential_changed, forces_up_to_date, complex_ks, matrix_h, matrix_h_im, matrix_ks, matrix_ks_im, matrix_vxc, kinetic, matrix_s, matrix_s_RI_aux, matrix_w, matrix_p_mp2, matrix_p_mp2_admm, matrix_h_kp, matrix_h_im_kp, matrix_ks_kp, matrix_vxc_kp, kinetic_kp, matrix_s_kp, matrix_w_kp, matrix_s_RI_aux_kp, matrix_ks_im_kp, vppl, 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_nonbond, sab_vdw, sab_scp, sab_almo, sab_kp, sab_kp_nosym, task_list, task_list_soft, subsys, dft_control, dbcsr_dist, distribution_2d, pw_env, para_env, blacs_env)
...
Definition: qs_ks_types.F:567
Define the neighbor list data types and the corresponding functionality.
Generate the atomic neighbor lists.
subroutine, public build_qs_neighbor_lists(qs_env, para_env, molecular, force_env_section)
Build all the required neighbor lists for Quickstep.
Calculation of overlap matrix, its derivatives and forces.
Definition: qs_overlap.F:19
subroutine, public build_overlap_matrix(ks_env, matrix_s, matrixkp_s, matrix_name, nderivative, basis_type_a, basis_type_b, sab_nl, calculate_forces, matrix_p, matrixkp_p)
Calculation of the overlap matrix over Cartesian Gaussian functions.
Definition: qs_overlap.F:120
Arrays of parameters used in the semi-empirical calculations \References Everywhere in this module TC...
integer, dimension(9), public se_orbital_pointer
Set of wrappers for semi-empirical analytical/numerical Integrals routines.
subroutine, public rotnuc(sepi, sepj, rij, e1b, e2a, itype, anag, se_int_control, se_taper, store_int_env)
wrapper for numerical/analytical 1 center 1 electron integrals
subroutine, public corecore(sepi, sepj, rij, enuc, itype, anag, se_int_control, se_taper)
wrapper for numerical/analytical routines core-core integrals, since are evaluated only once do not n...
Definition of the semi empirical parameter types.
subroutine, public semi_empirical_create(sep)
Allocate semi-empirical type.
subroutine, public setup_se_int_control_type(se_int_control, shortrange, do_ewald_r3, do_ewald_gks, integral_screening, max_multipole, pc_coulomb_int)
Setup the Semiempirical integral control type.
subroutine, public get_se_param(sep, name, typ, defined, z, zeff, natorb, eheat, beta, sto_exponents, uss, upp, udd, uff, alp, eisol, gss, gsp, gpp, gp2, acoul, nr, de, ass, asp, app, hsp, gsd, gpd, gdd, ppddg, dpddg, ngauss)
Get info from the semi-empirical type.
subroutine, public semi_empirical_release(sep)
Deallocate the semi-empirical type.
Working with the semi empirical parameter types.
integer function, public get_se_type(se_method)
Gives back the unique semi_empirical METHOD type.
subroutine, public se_param_set_default(sep, z, method)
Initialize parameter for a semi_empirival type.