(git:34ef472)
mixed_energy_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 !> \author fschiff
10 !> \date 11.06
11 ! **************************************************************************************************
13 
14  USE kinds, ONLY: dp
15 #include "./base/base_uses.f90"
16 
17  IMPLICIT NONE
18  CHARACTER(len=*), PARAMETER, PRIVATE :: moduleN = 'mixed_energy_types'
19  PRIVATE
20 
21 ! **************************************************************************************************
22  TYPE mixed_energy_type
23  REAL(kind=dp) :: pot
24  REAL(kind=dp) :: kin
25  END TYPE mixed_energy_type
26 
27 ! **************************************************************************************************
28  TYPE mixed_force_type
29  REAL(KIND=dp), DIMENSION(:, :), POINTER :: forces
30  END TYPE mixed_force_type
31 
32 ! Public data types
33  PUBLIC :: mixed_energy_type, &
34  mixed_force_type
35 
36 ! Public subroutines
37  PUBLIC :: allocate_mixed_energy, &
39 
40 CONTAINS
41 
42 ! **************************************************************************************************
43 !> \brief Allocate and/or initialise a mixed energy data structure.
44 !> \param mixed_energy ...
45 !> \date 11.06
46 !> \author fschiff
47 !> \version 1.0
48 ! **************************************************************************************************
49  SUBROUTINE allocate_mixed_energy(mixed_energy)
50  TYPE(mixed_energy_type), POINTER :: mixed_energy
51 
52  IF (.NOT. ASSOCIATED(mixed_energy)) THEN
53  ALLOCATE (mixed_energy)
54  END IF
55  CALL init_mixed_energy(mixed_energy)
56  END SUBROUTINE allocate_mixed_energy
57 
58 ! **************************************************************************************************
59 !> \brief Deallocate a mixed energy data structure.
60 !> \param mixed_energy ...
61 !> \date 11.06
62 !> \author fschiff
63 !> \version 1.0
64 ! **************************************************************************************************
65  SUBROUTINE deallocate_mixed_energy(mixed_energy)
66  TYPE(mixed_energy_type), POINTER :: mixed_energy
67 
68  IF (ASSOCIATED(mixed_energy)) THEN
69  DEALLOCATE (mixed_energy)
70  END IF
71  END SUBROUTINE deallocate_mixed_energy
72 
73 ! **************************************************************************************************
74 !> \brief ...
75 !> \param mixed_energy ...
76 ! **************************************************************************************************
77  SUBROUTINE init_mixed_energy(mixed_energy)
78  TYPE(mixed_energy_type), POINTER :: mixed_energy
79 
80  IF (ASSOCIATED(mixed_energy)) THEN
81  mixed_energy%pot = 0.0_dp
82  ELSE
83  CALL cp_abort(__location__, &
84  "The mixed_energy pointer is not associated "// &
85  "and cannot be initialised")
86  END IF
87  END SUBROUTINE init_mixed_energy
88 
89 END MODULE mixed_energy_types
Defines the basic variable types.
Definition: kinds.F:23
integer, parameter, public dp
Definition: kinds.F:34
subroutine, public allocate_mixed_energy(mixed_energy)
Allocate and/or initialise a mixed energy data structure.
subroutine, public deallocate_mixed_energy(mixed_energy)
Deallocate a mixed energy data structure.