37#include "./base/base_uses.f90"
42 LOGICAL,
PRIVATE,
PARAMETER :: debug_this_module = .true.
43 CHARACTER(len=*),
PARAMETER,
PRIVATE :: moduleN =
'qmmm_types_low'
68 TYPE gridlevel_info_type
69 INTEGER :: auxbas_grid = -1
70 INTEGER :: coarser_grid = -1
71 END TYPE gridlevel_info_type
77 REAL(kind=
dp),
DIMENSION(:, :),
POINTER :: pot0_2 => null()
78 REAL(kind=
dp) :: rmax = -1.0_dp, rmin = -1.0_dp, dx = -1.0_dp, rc = -1.0_dp
80 INTEGER,
DIMENSION(:),
POINTER :: mm_atom_index => null()
91 REAL(kind=
dp),
DIMENSION(:),
POINTER :: lg => null(), gx => null(), gy => null(), gz => null()
92 REAL(kind=
dp) :: gmax = -1.0_dp,
fac(3) = -1.0_dp
93 INTEGER :: kmax(3) = -1, n_rep_real(3) = -1
94 INTEGER,
DIMENSION(:),
POINTER :: mm_atom_index => null()
108 INTEGER :: qm_index = -1, mm_index = -1
109 REAL(kind=
dp) :: alpha = -1.0_dp
112 TYPE qmmm_imomm_link_p_type
114 END TYPE qmmm_imomm_link_p_type
119 TYPE qmmm_pseudo_link_type
120 INTEGER :: qm_index = -1, mm_index = -1
121 END TYPE qmmm_pseudo_link_type
123 TYPE qmmm_pseudo_link_p_type
124 TYPE(qmmm_pseudo_link_type),
POINTER :: link => null()
125 END TYPE qmmm_pseudo_link_p_type
131 TYPE(qmmm_imomm_link_p_type),
DIMENSION(:),
POINTER :: imomm => null()
132 TYPE(qmmm_pseudo_link_p_type),
DIMENSION(:),
POINTER :: pseudo => null()
139 INTEGER :: index1 = -1, index2 = -1
140 REAL(kind=
dp) :: alpha = -1.0_dp
141 END TYPE add_env_type
147 INTEGER :: num_mm_atoms = -1
148 TYPE(add_env_type),
DIMENSION(:),
POINTER :: add_env => null()
150 INTEGER,
DIMENSION(:),
POINTER :: mm_atom_index => null()
151 REAL(kind=
dp),
DIMENSION(:),
POINTER :: mm_atom_chrg => null()
152 REAL(kind=
dp),
DIMENSION(:),
POINTER :: mm_el_pot_radius => null()
153 REAL(kind=
dp),
DIMENSION(:),
POINTER :: mm_el_pot_radius_corr => null()
163 INTEGER :: num_mm_atoms = -1
166 INTEGER,
DIMENSION(:),
POINTER :: mm_core_index => null()
167 REAL(kind=
dp),
DIMENSION(:),
POINTER :: mm_core_chrg => null()
168 REAL(kind=
dp),
DIMENSION(:),
POINTER :: mm_el_pot_radius => null()
169 REAL(kind=
dp),
DIMENSION(:),
POINTER :: mm_el_pot_radius_corr => null()
178 TYPE image_charge_type
179 LOGICAL :: all_mm = .false.
180 LOGICAL :: coeff_iterative = .false.
181 LOGICAL :: image_restart = .false.
182 INTEGER :: state_image_matrix = -1
183 INTEGER,
DIMENSION(:),
POINTER :: image_mm_list => null()
184 TYPE(
particle_type),
DIMENSION(:),
POINTER :: particles_all => null()
185 REAL(kind=
dp),
DIMENSION(:, :),
POINTER :: image_forcesmm => null()
186 REAL(kind=
dp) :: v0 = -1.0_dp
187 REAL(kind=
dp) :: eta = -1.0_dp
188 INTEGER :: image_matrix_method = -1
190 END TYPE image_charge_type
196 LOGICAL :: center_qm_subsys = .false.
197 LOGICAL :: center_qm_subsys0 = .false., do_translate = .false.
198 LOGICAL :: center_qm_subsys_pbc_aware = .false.
199 LOGICAL :: do_force_mixing = .false.
200 LOGICAL :: compatibility = .false.
201 LOGICAL :: qmmm_link = .false.
202 LOGICAL :: move_mm_charges = .false.
203 LOGICAL :: add_mm_charges = .false.
204 LOGICAL :: periodic = .false.
205 LOGICAL :: multipole = .false.
206 LOGICAL :: image_charge = .false.
207 INTEGER :: par_scheme = -1
208 INTEGER :: qmmm_coupl_type = -1
209 INTEGER :: num_qm_atoms = -1
210 INTEGER :: num_mm_atoms = -1
211 INTEGER :: num_image_mm_atoms = -1
212 REAL(kind=
dp) :: eps_mm_rspace = -1.0_dp
213 REAL(kind=
dp),
DIMENSION(3) :: dommoqm = -1.0_dp, utrasl = -1.0_dp, transl_v = -1.0_dp
214 REAL(kind=
dp),
DIMENSION(2) :: spherical_cutoff = -1.0_dp
215 REAL(kind=
dp),
DIMENSION(:),
POINTER :: maxradius => null()
216 INTEGER,
DIMENSION(:),
POINTER :: qm_atom_index => null()
217 INTEGER,
DIMENSION(:),
POINTER :: mm_atom_index => null()
218 INTEGER,
DIMENSION(:),
POINTER :: mm_link_atoms => null()
219 REAL(kind=
dp),
DIMENSION(:),
POINTER :: mm_atom_chrg => null()
220 REAL(kind=
dp),
DIMENSION(:),
POINTER :: mm_el_pot_radius => null()
221 REAL(kind=
dp),
DIMENSION(:),
POINTER :: mm_el_pot_radius_corr => null()
224 TYPE(gridlevel_info_type) :: gridlevel_info = gridlevel_info_type()
230 TYPE(image_charge_type),
POINTER :: image_charge_pot => null()
239 LOGICAL :: qmmm_link = .false.
240 LOGICAL :: use_qmmm_ff = .false.
241 LOGICAL :: multiple_potential = .false.
242 INTEGER :: qmmm_coupl_type = -1
243 INTEGER,
DIMENSION(:),
POINTER :: qm_atom_index => null()
244 INTEGER,
DIMENSION(:),
POINTER :: mm_link_atoms => null()
245 REAL(kind=
dp),
DIMENSION(:),
POINTER :: mm_link_scale_factor => null()
246 REAL(kind=
dp),
DIMENSION(:),
POINTER :: fist_scale_charge_link => null()
247 INTEGER,
DIMENSION(:),
POINTER :: qm_molecule_index => null()
261 NULLIFY (qmmm_env%qm_atom_index, &
262 qmmm_env%qm_molecule_index, &
263 qmmm_env%mm_link_atoms, &
264 qmmm_env%mm_link_scale_factor, &
265 qmmm_env%fist_scale_charge_link, &
268 qmmm_env%qmmm_link = .false.
269 qmmm_env%use_qmmm_ff = .false.
270 ALLOCATE (qmmm_env%inp_info)
283 IF (
ASSOCIATED(qmmm_env%qm_atom_index))
THEN
284 DEALLOCATE (qmmm_env%qm_atom_index)
286 IF (
ASSOCIATED(qmmm_env%qm_molecule_index))
THEN
287 DEALLOCATE (qmmm_env%qm_molecule_index)
289 IF (
ASSOCIATED(qmmm_env%mm_link_atoms))
THEN
290 DEALLOCATE (qmmm_env%mm_link_atoms)
292 IF (
ASSOCIATED(qmmm_env%mm_link_scale_factor))
THEN
293 DEALLOCATE (qmmm_env%mm_link_scale_factor)
295 IF (
ASSOCIATED(qmmm_env%fist_scale_charge_link))
THEN
296 DEALLOCATE (qmmm_env%fist_scale_charge_link)
298 IF (
ASSOCIATED(qmmm_env%inp_info))
THEN
300 DEALLOCATE (qmmm_env%inp_info)
313 NULLIFY (qmmm_env%qm_atom_index, qmmm_env%mm_link_atoms, &
314 qmmm_env%mm_atom_index, qmmm_env%mm_atom_chrg, &
315 qmmm_env%pgfs, qmmm_env%maxradius, &
316 qmmm_env%aug_pools, qmmm_env%potentials, &
317 qmmm_env%qmmm_links, qmmm_env%added_charges, &
318 qmmm_env%per_potentials, qmmm_env%image_charge_pot, &
319 qmmm_env%added_shells)
320 NULLIFY (qmmm_env%ewald_env, qmmm_env%ewald_pw)
321 qmmm_env%do_translate = .true.
322 qmmm_env%center_qm_subsys = .true.
323 qmmm_env%center_qm_subsys0 = .true.
324 qmmm_env%center_qm_subsys_pbc_aware = .false.
325 qmmm_env%do_force_mixing = .false.
326 qmmm_env%compatibility = .true.
327 qmmm_env%qmmm_link = .false.
328 qmmm_env%add_mm_charges = .false.
329 qmmm_env%move_mm_charges = .false.
330 qmmm_env%periodic = .false.
331 qmmm_env%multipole = .false.
332 qmmm_env%image_charge = .false.
334 qmmm_env%num_qm_atoms = 0
335 qmmm_env%num_mm_atoms = 0
336 qmmm_env%num_image_mm_atoms = 0
337 qmmm_env%gridlevel_info%auxbas_grid = 0
338 qmmm_env%gridlevel_info%coarser_grid = 0
341 CALL create_image_charge_type(qmmm_env%image_charge_pot)
353 IF (
ASSOCIATED(qmmm_env%qm_atom_index))
THEN
354 DEALLOCATE (qmmm_env%qm_atom_index)
356 IF (
ASSOCIATED(qmmm_env%maxradius))
THEN
357 DEALLOCATE (qmmm_env%maxradius)
359 IF (
ASSOCIATED(qmmm_env%mm_atom_index))
THEN
360 DEALLOCATE (qmmm_env%mm_atom_index)
362 IF (
ASSOCIATED(qmmm_env%mm_link_atoms))
THEN
363 DEALLOCATE (qmmm_env%mm_link_atoms)
365 IF (
ASSOCIATED(qmmm_env%mm_atom_chrg))
THEN
366 DEALLOCATE (qmmm_env%mm_atom_chrg)
368 IF (
ASSOCIATED(qmmm_env%mm_el_pot_radius))
THEN
369 DEALLOCATE (qmmm_env%mm_el_pot_radius)
371 IF (
ASSOCIATED(qmmm_env%mm_el_pot_radius_corr))
THEN
372 DEALLOCATE (qmmm_env%mm_el_pot_radius_corr)
374 IF (
ASSOCIATED(qmmm_env%pgfs))
THEN
375 CALL pgfs_release(qmmm_env%pgfs)
376 DEALLOCATE (qmmm_env%pgfs)
378 IF (
ASSOCIATED(qmmm_env%Potentials))
THEN
379 CALL qmmm_pot_type_dealloc(qmmm_env%Potentials)
380 DEALLOCATE (qmmm_env%Potentials)
382 IF (
ASSOCIATED(qmmm_env%Per_Potentials))
THEN
383 CALL qmmm_per_pot_type_dealloc(qmmm_env%Per_Potentials)
384 DEALLOCATE (qmmm_env%Per_Potentials)
386 IF (
ASSOCIATED(qmmm_env%aug_pools))
THEN
389 IF (
ASSOCIATED(qmmm_env%qmmm_links))
THEN
390 CALL qmmm_links_dealloc(qmmm_env%qmmm_links)
392 IF (
ASSOCIATED(qmmm_env%added_charges))
THEN
395 IF (
ASSOCIATED(qmmm_env%added_shells))
THEN
396 CALL add_shell_release(qmmm_env%added_shells)
398 IF (
ASSOCIATED(qmmm_env%image_charge_pot))
THEN
399 IF (qmmm_env%image_charge)
THEN
400 IF (qmmm_env%image_charge_pot%image_matrix_method .EQ.
do_eri_mme)
THEN
404 CALL qmmm_image_charge_dealloc(qmmm_env%image_charge_pot)
406 IF (
ASSOCIATED(qmmm_env%ewald_env))
THEN
408 DEALLOCATE (qmmm_env%ewald_env)
410 IF (
ASSOCIATED(qmmm_env%ewald_pw))
THEN
412 DEALLOCATE (qmmm_env%ewald_pw)
422 SUBROUTINE pgfs_release(pgfs)
428 IF (
ASSOCIATED(pgfs(i)%pgf))
THEN
429 IF (
ASSOCIATED(pgfs(i)%pgf%Ak))
THEN
430 DEALLOCATE (pgfs(i)%pgf%Ak)
432 IF (
ASSOCIATED(pgfs(i)%pgf%Gk))
THEN
433 DEALLOCATE (pgfs(i)%pgf%Gk)
435 IF (
ASSOCIATED(pgfs(i)%pgf%grid_level))
THEN
436 DEALLOCATE (pgfs(i)%pgf%grid_level)
438 DEALLOCATE (pgfs(i)%pgf)
441 END SUBROUTINE pgfs_release
448 SUBROUTINE qmmm_links_dealloc(qmmm_links)
453 IF (
ASSOCIATED(qmmm_links%imomm))
THEN
454 DO i = 1,
SIZE(qmmm_links%imomm)
455 IF (
ASSOCIATED(qmmm_links%imomm(i)%link))
DEALLOCATE (qmmm_links%imomm(i)%link)
457 DEALLOCATE (qmmm_links%imomm)
459 IF (
ASSOCIATED(qmmm_links%pseudo))
THEN
460 DO i = 1,
SIZE(qmmm_links%pseudo)
461 IF (
ASSOCIATED(qmmm_links%pseudo(i)%link))
DEALLOCATE (qmmm_links%pseudo(i)%link)
463 DEALLOCATE (qmmm_links%pseudo)
465 DEALLOCATE (qmmm_links)
466 END SUBROUTINE qmmm_links_dealloc
473 SUBROUTINE qmmm_image_charge_dealloc(image_charge_pot)
474 TYPE(image_charge_type),
POINTER :: image_charge_pot
476 IF (
ASSOCIATED(image_charge_pot))
THEN
477 IF (
ASSOCIATED(image_charge_pot%image_mm_list))
THEN
478 IF (.NOT. image_charge_pot%all_mm)
THEN
479 DEALLOCATE (image_charge_pot%image_mm_list)
482 IF (
ASSOCIATED(image_charge_pot%image_forcesMM))
THEN
483 DEALLOCATE (image_charge_pot%image_forcesMM)
485 DEALLOCATE (image_charge_pot)
487 END SUBROUTINE qmmm_image_charge_dealloc
494 SUBROUTINE qmmm_pot_type_dealloc(Potentials)
499 DO i = 1,
SIZE(potentials)
500 IF (
ASSOCIATED(potentials(i)%Pot))
THEN
501 IF (
ASSOCIATED(potentials(i)%Pot%pot0_2))
THEN
502 DEALLOCATE (potentials(i)%Pot%pot0_2)
504 IF (
ASSOCIATED(potentials(i)%Pot%mm_atom_index))
THEN
505 DEALLOCATE (potentials(i)%Pot%mm_atom_index)
507 DEALLOCATE (potentials(i)%Pot)
511 END SUBROUTINE qmmm_pot_type_dealloc
519 SUBROUTINE qmmm_per_pot_type_dealloc(Per_Potentials)
524 DO i = 1,
SIZE(per_potentials)
525 IF (
ASSOCIATED(per_potentials(i)%Pot))
THEN
526 IF (
ASSOCIATED(per_potentials(i)%Pot%LG))
THEN
527 DEALLOCATE (per_potentials(i)%Pot%LG)
529 IF (
ASSOCIATED(per_potentials(i)%Pot%gx))
THEN
530 DEALLOCATE (per_potentials(i)%Pot%gx)
532 IF (
ASSOCIATED(per_potentials(i)%Pot%gy))
THEN
533 DEALLOCATE (per_potentials(i)%Pot%gy)
535 IF (
ASSOCIATED(per_potentials(i)%Pot%gz))
THEN
536 DEALLOCATE (per_potentials(i)%Pot%gz)
538 IF (
ASSOCIATED(per_potentials(i)%Pot%mm_atom_index))
THEN
539 DEALLOCATE (per_potentials(i)%Pot%mm_atom_index)
541 IF (
ASSOCIATED(per_potentials(i)%Pot%TabLR))
THEN
542 CALL per_potentials(i)%Pot%pw_pool%give_back_pw(per_potentials(i)%Pot%TabLR)
543 DEALLOCATE (per_potentials(i)%Pot%TabLR)
545 IF (
ASSOCIATED(per_potentials(i)%Pot%pw_pool))
THEN
547 cpassert(.NOT.
ASSOCIATED(per_potentials(i)%Pot%pw_pool))
549 IF (
ASSOCIATED(per_potentials(i)%Pot%pw_grid))
THEN
551 cpassert(.NOT.
ASSOCIATED(per_potentials(i)%Pot%pw_grid))
553 DEALLOCATE (per_potentials(i)%Pot)
557 END SUBROUTINE qmmm_per_pot_type_dealloc
567 IF (
ASSOCIATED(added_charges))
THEN
568 IF (
ASSOCIATED(added_charges%add_env))
THEN
569 DEALLOCATE (added_charges%add_env)
571 IF (
ASSOCIATED(added_charges%added_particles))
THEN
574 IF (
ASSOCIATED(added_charges%mm_atom_index))
THEN
575 DEALLOCATE (added_charges%mm_atom_index)
577 IF (
ASSOCIATED(added_charges%mm_atom_chrg))
THEN
578 DEALLOCATE (added_charges%mm_atom_chrg)
580 IF (
ASSOCIATED(added_charges%mm_el_pot_radius))
THEN
581 DEALLOCATE (added_charges%mm_el_pot_radius)
583 IF (
ASSOCIATED(added_charges%mm_el_pot_radius_corr))
THEN
584 DEALLOCATE (added_charges%mm_el_pot_radius_corr)
586 IF (
ASSOCIATED(added_charges%Potentials))
THEN
587 CALL qmmm_pot_type_dealloc(added_charges%Potentials)
588 DEALLOCATE (added_charges%Potentials)
590 IF (
ASSOCIATED(added_charges%Per_Potentials))
THEN
591 CALL qmmm_per_pot_type_dealloc(added_charges%Per_Potentials)
592 DEALLOCATE (added_charges%Per_Potentials)
594 IF (
ASSOCIATED(added_charges%pgfs))
THEN
595 CALL pgfs_release(added_charges%pgfs)
596 DEALLOCATE (added_charges%pgfs)
598 DEALLOCATE (added_charges)
607 SUBROUTINE add_shell_release(added_shells)
611 IF (
ASSOCIATED(added_shells))
THEN
612 IF (
ASSOCIATED(added_shells%added_particles))
THEN
614 NULLIFY (added_shells%added_particles)
615 NULLIFY (added_shells%added_cores)
618 IF (
ASSOCIATED(added_shells%mm_core_index))
THEN
619 DEALLOCATE (added_shells%mm_core_index)
621 IF (
ASSOCIATED(added_shells%mm_core_chrg))
THEN
622 DEALLOCATE (added_shells%mm_core_chrg)
624 IF (
ASSOCIATED(added_shells%mm_el_pot_radius))
THEN
625 DEALLOCATE (added_shells%mm_el_pot_radius)
627 IF (
ASSOCIATED(added_shells%mm_el_pot_radius_corr))
THEN
628 DEALLOCATE (added_shells%mm_el_pot_radius_corr)
630 IF (
ASSOCIATED(added_shells%Potentials))
THEN
631 CALL qmmm_pot_type_dealloc(added_shells%Potentials)
632 DEALLOCATE (added_shells%Potentials)
634 IF (
ASSOCIATED(added_shells%Per_Potentials))
THEN
635 CALL qmmm_per_pot_type_dealloc(added_shells%Per_Potentials)
636 DEALLOCATE (added_shells%Per_Potentials)
638 IF (
ASSOCIATED(added_shells%pgfs))
THEN
639 CALL pgfs_release(added_shells%pgfs)
640 DEALLOCATE (added_shells%pgfs)
642 DEALLOCATE (added_shells)
645 END SUBROUTINE add_shell_release
655 INTEGER,
INTENT(IN) :: ndim
658 ALLOCATE (added_charges)
660 NULLIFY (added_charges%add_env, &
661 added_charges%mm_atom_index, &
662 added_charges%added_particles, &
663 added_charges%mm_atom_chrg, &
664 added_charges%mm_el_pot_radius, &
665 added_charges%mm_el_pot_radius_corr, &
666 added_charges%potentials, &
667 added_charges%per_potentials, &
670 added_charges%num_mm_atoms = ndim
671 IF (ndim == 0)
RETURN
675 ALLOCATE (added_charges%add_env(ndim))
677 ALLOCATE (added_charges%mm_atom_index(ndim))
678 ALLOCATE (added_charges%mm_atom_chrg(ndim))
679 ALLOCATE (added_charges%mm_el_pot_radius(ndim))
680 ALLOCATE (added_charges%mm_el_pot_radius_corr(ndim))
692 INTEGER,
INTENT(IN) :: ndim
694 IF (
ASSOCIATED(added_shells))
CALL add_shell_release(added_shells)
695 ALLOCATE (added_shells)
697 NULLIFY (added_shells%mm_core_index, &
698 added_shells%added_particles, &
699 added_shells%added_cores, &
700 added_shells%mm_core_chrg, &
701 added_shells%mm_el_pot_radius, &
702 added_shells%mm_el_pot_radius_corr, &
703 added_shells%potentials, &
704 added_shells%per_potentials, &
707 added_shells%num_mm_atoms = ndim
708 IF (ndim == 0)
RETURN
712 ALLOCATE (added_shells%mm_core_index(ndim))
713 ALLOCATE (added_shells%mm_core_chrg(ndim))
714 ALLOCATE (added_shells%mm_el_pot_radius(ndim))
715 ALLOCATE (added_shells%mm_el_pot_radius_corr(ndim))
724 SUBROUTINE create_image_charge_type(image_charge_pot)
725 TYPE(image_charge_type),
POINTER :: image_charge_pot
727 IF (
ASSOCIATED(image_charge_pot))
CALL qmmm_image_charge_dealloc(image_charge_pot)
728 ALLOCATE (image_charge_pot)
730 NULLIFY (image_charge_pot%image_mm_list, &
731 image_charge_pot%particles_all, &
732 image_charge_pot%image_forcesMM)
734 image_charge_pot%all_mm = .true.
735 image_charge_pot%coeff_iterative = .false.
736 image_charge_pot%image_restart = .false.
738 END SUBROUTINE create_image_charge_type
static GRID_HOST_DEVICE double fac(const int i)
Factorial function, e.g. fac(5) = 5! = 120.
Interface to Minimax-Ewald method for periodic ERI's to be used in CP2K.
subroutine, public cp_eri_mme_finalize(param)
Release eri mme data. Prints some statistics on summation methods chosen.
subroutine, public ewald_env_release(ewald_env)
releases the given ewald_env (see doc/ReferenceCounting.html)
subroutine, public ewald_pw_release(ewald_pw)
releases the memory used by the ewald_pw
Define all structures types related to force_fields.
subroutine, public deallocate_inp_info(inp_info)
Specific function to deallocate the inp_info.
subroutine, public init_inp_info(inp_info)
Specific function to initialize the inp_info.
Defines the basic variable types.
integer, parameter, public dp
Define the data structure for the particle information.
subroutine, public deallocate_particle_set(particle_set)
Deallocate a particle set.
subroutine, public allocate_particle_set(particle_set, nparticle)
Allocate a particle set.
This module defines the grid data type and some basic operations on it.
subroutine, public pw_grid_release(pw_grid)
releases the given pw grid
Manages a pool of grids (to be used for example as tmp objects), but can also be used to instantiate ...
subroutine, public pw_pools_dealloc(pools)
deallocates the given pools (releasing each of the underlying pools)
subroutine, public pw_pool_release(pool)
releases the given pool (see cp2k/doc/ReferenceCounting.html)
Sets the typo for the gaussian treatment of the qm/mm interaction.
integer, parameter, public force_mixing_label_qm_core
integer, parameter, public force_mixing_label_buffer
subroutine, public qmmm_env_mm_create(qmmm_env)
...
subroutine, public create_add_shell_type(added_shells, ndim)
creates the add_shell_type structure
integer, parameter, public force_mixing_label_none
integer, parameter, public force_mixing_label_qm_core_list
integer, parameter, public force_mixing_label_qm_dynamics_list
integer, parameter, public force_mixing_label_termination
subroutine, public qmmm_env_qm_create(qmmm_env)
...
subroutine, public qmmm_env_qm_release(qmmm_env)
releases the given qmmm_env (see doc/ReferenceCounting.html)
integer, parameter, public force_mixing_label_buffer_list
integer, parameter, public force_mixing_label_qm_dynamics
subroutine, public qmmm_env_mm_release(qmmm_env)
releases the given qmmm_env (see doc/ReferenceCounting.html)
subroutine, public create_add_set_type(added_charges, ndim)
creates the add_set_type structure
subroutine, public add_set_release(added_charges)
deallocates the add_set_release
to build arrays of pointers
to create arrays of pools
Manages a pool of grids (to be used for example as tmp objects), but can also be used to instantiate ...
represent a pointer to a qmmm_gaussian_type, to be able to create arrays of pointers
parameters for core-shell model potentials