Line data Source code
1 : !--------------------------------------------------------------------------------------------------!
2 : ! CP2K: A general program to perform molecular dynamics simulations !
3 : ! Copyright 2000-2025 CP2K developers group <https://cp2k.org> !
4 : ! !
5 : ! SPDX-License-Identifier: GPL-2.0-or-later !
6 : !--------------------------------------------------------------------------------------------------!
7 :
8 : ! **************************************************************************************************
9 : !> \brief contains the subroutines for dealing with the mc_env
10 : !> \author MJM Oct. 15-2003
11 : ! **************************************************************************************************
12 : MODULE mc_environment_types
13 :
14 : USE force_env_types, ONLY: force_env_type
15 : USE mc_types, ONLY: mc_simpar_type
16 : #include "../../base/base_uses.f90"
17 :
18 : IMPLICIT NONE
19 :
20 : PRIVATE
21 :
22 : ! **************************************************************************************************
23 : TYPE mc_environment_type
24 : TYPE(mc_simpar_type), POINTER :: mc_par => NULL()
25 : TYPE(force_env_type), POINTER :: force_env => NULL()
26 : END TYPE mc_environment_type
27 :
28 : ! **************************************************************************************************
29 : TYPE mc_environment_p_type
30 : TYPE(mc_environment_type), POINTER :: mc_env => NULL()
31 : END TYPE mc_environment_p_type
32 :
33 : ! *** Public subroutines and data types ***
34 : PUBLIC :: mc_environment_type, mc_environment_p_type, &
35 : set_mc_env, mc_env_create, &
36 : get_mc_env, mc_env_release
37 :
38 : ! *** Global parameters ***
39 :
40 : CHARACTER(len=*), PARAMETER, PRIVATE :: moduleN = 'mc_environment_types'
41 :
42 : CONTAINS
43 :
44 : ! **************************************************************************************************
45 : !> \brief creates and initializes an mc_env
46 : !> \param mc_env the mc_environment you want to create
47 : !>
48 : !> Suitable for parallel use.
49 : !> \author MJM
50 : ! **************************************************************************************************
51 28 : SUBROUTINE mc_env_create(mc_env)
52 :
53 : TYPE(mc_environment_type), INTENT(OUT) :: mc_env
54 :
55 : MARK_USED(mc_env)
56 :
57 28 : END SUBROUTINE mc_env_create
58 :
59 : ! **************************************************************************************************
60 : !> \brief provides a method for attaching various structures to an mc_env
61 : !> \param mc_env the mc_environment you want to change
62 : !> \param mc_par the mc parameters you want to associate with this mc_env
63 : !> \param force_env the force environment type you want to associate
64 : !> with this mc_env
65 : !>
66 : !> Suitable for parallel.
67 : !> \author MJM
68 : ! **************************************************************************************************
69 52 : SUBROUTINE set_mc_env(mc_env, mc_par, force_env)
70 :
71 : TYPE(mc_environment_type), INTENT(INOUT) :: mc_env
72 : TYPE(mc_simpar_type), OPTIONAL, POINTER :: mc_par
73 : TYPE(force_env_type), OPTIONAL, POINTER :: force_env
74 :
75 52 : IF (PRESENT(mc_par)) mc_env%mc_par => mc_par
76 52 : IF (PRESENT(force_env)) THEN
77 52 : mc_env%force_env => force_env
78 : END IF
79 :
80 52 : END SUBROUTINE set_mc_env
81 :
82 : ! **************************************************************************************************
83 : !> \brief provides a method for getting the various structures attached
84 : !> to an mc_env
85 : !> \param mc_env the mc_environment you want to get information on
86 : !> \param mc_par the mc parameters you want to point to the parameters
87 : !> associated with this mc_env
88 : !> \param force_env the force environment type you want to point to the
89 : !> force environment associated with this mc_env
90 : !>
91 : !> Suitable for parallel.
92 : !> \author MJM
93 : ! **************************************************************************************************
94 74 : SUBROUTINE get_mc_env(mc_env, mc_par, force_env)
95 :
96 : TYPE(mc_environment_type), INTENT(IN) :: mc_env
97 : TYPE(mc_simpar_type), OPTIONAL, POINTER :: mc_par
98 : TYPE(force_env_type), OPTIONAL, POINTER :: force_env
99 :
100 74 : IF (PRESENT(mc_par)) mc_par => mc_env%mc_par
101 74 : IF (PRESENT(force_env)) force_env => mc_env%force_env
102 :
103 74 : END SUBROUTINE get_mc_env
104 :
105 : ! **************************************************************************************************
106 : !> \brief releases the given mc env
107 : !> \param mc_env the mc environment to release
108 : !> \author MJM
109 : !> \note
110 : !> see doc/ReferenceCounting.html
111 : ! **************************************************************************************************
112 28 : SUBROUTINE mc_env_release(mc_env)
113 : TYPE(mc_environment_type), INTENT(INOUT) :: mc_env
114 :
115 28 : NULLIFY (mc_env%mc_par)
116 28 : NULLIFY (mc_env%force_env)
117 :
118 28 : END SUBROUTINE mc_env_release
119 :
120 0 : END MODULE mc_environment_types
121 :
|