(git:34ef472)
qmmmx_types.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 Basic container type for QM/MM with force mixing.
10 !> \author Ole Schuett
11 ! **************************************************************************************************
13  USE cp_subsys_types, ONLY: cp_subsys_type
14  USE kinds, ONLY: dp
15  USE qmmm_types, ONLY: qmmm_env_get,&
17  qmmm_env_type
18 #include "./base/base_uses.f90"
19 
20  IMPLICIT NONE
21  PRIVATE
22 
23  CHARACTER(len=*), PARAMETER, PRIVATE :: moduleN = 'qmmmx_types'
24 
25  PUBLIC :: qmmmx_env_type, qmmmx_env_get, qmmmx_env_release
26 
27  TYPE qmmmx_env_type
28  TYPE(qmmm_env_type), POINTER :: core => null()
29  TYPE(qmmm_env_type), POINTER :: ext => null()
30  END TYPE qmmmx_env_type
31 
32 CONTAINS
33 
34 ! **************************************************************************************************
35 !> \brief ...
36 !> \param qmmmx_env ...
37 !> \param subsys ...
38 !> \param potential_energy ...
39 !> \param kinetic_energy ...
40 ! **************************************************************************************************
41  SUBROUTINE qmmmx_env_get(qmmmx_env, subsys, potential_energy, kinetic_energy)
42  TYPE(qmmmx_env_type), INTENT(IN) :: qmmmx_env
43  TYPE(cp_subsys_type), OPTIONAL, POINTER :: subsys
44  REAL(kind=dp), INTENT(OUT), OPTIONAL :: potential_energy, kinetic_energy
45 
46  ! get the underlying energies from primary subsys. This is the only subsys
47  ! for conventional QM/MM, and force-mixing knows to put relevant energy there.
48  CALL qmmm_env_get(qmmmx_env%ext, &
49  kinetic_energy=kinetic_energy, &
50  potential_energy=potential_energy, &
51  subsys=subsys)
52 
53  END SUBROUTINE qmmmx_env_get
54 
55 ! **************************************************************************************************
56 !> \brief releases the given qmmmx_env (see doc/ReferenceCounting.html)
57 !> \param qmmmx_env the object to release
58 !> \author Ole Schuett
59 ! **************************************************************************************************
60  SUBROUTINE qmmmx_env_release(qmmmx_env)
61  TYPE(qmmmx_env_type), INTENT(INOUT) :: qmmmx_env
62 
63  CALL qmmm_env_release(qmmmx_env%core)
64  DEALLOCATE (qmmmx_env%core)
65  CALL qmmm_env_release(qmmmx_env%ext)
66  DEALLOCATE (qmmmx_env%ext)
67 
68  END SUBROUTINE qmmmx_env_release
69 
70 END MODULE qmmmx_types
types that represent a subsys, i.e. a part of the system
Defines the basic variable types.
Definition: kinds.F:23
integer, parameter, public dp
Definition: kinds.F:34
Basic container type for QM/MM.
Definition: qmmm_types.F:12
subroutine, public qmmm_env_release(qmmm_env)
releases the given qmmm_env (see doc/ReferenceCounting.html)
Definition: qmmm_types.F:81
subroutine, public qmmm_env_get(qmmm_env, subsys, potential_energy, kinetic_energy)
...
Definition: qmmm_types.F:50
Basic container type for QM/MM with force mixing.
Definition: qmmmx_types.F:12
subroutine, public qmmmx_env_release(qmmmx_env)
releases the given qmmmx_env (see doc/ReferenceCounting.html)
Definition: qmmmx_types.F:61
subroutine, public qmmmx_env_get(qmmmx_env, subsys, potential_energy, kinetic_energy)
...
Definition: qmmmx_types.F:42