MFIX  2016-1
mms_mod.f
Go to the documentation of this file.
1 !vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv!
2 ! !
3 ! Module name: MMS_SRC !
4 ! Purpose: Global storage containers for MMS variables. !
5 ! !
6 ! Author: Aniruddha Choudhary Date: 17-Oct-11 !
7 ! email: anirudd@vt.edu !
8 ! !
9 ! Reviewer: J.Musser Date: 04-Dec-13 !
10 ! !
11 !^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^!
12  MODULE mms
13 
14 ! By default the MMS functions are unavailable.
15  LOGICAL :: use_mms = .false.
16 
17 !! Method of Manufactured Solutions (MMS) and Tecplot variables :
18 
19 ! Gas volume fraction
20  DOUBLE PRECISION, DIMENSION(:), ALLOCATABLE :: mms_ep_g
21 
22 ! Gas pressure
23  DOUBLE PRECISION, DIMENSION(:), ALLOCATABLE :: mms_p_g
24 
25 ! Gas velocity components
26  DOUBLE PRECISION, DIMENSION(:), ALLOCATABLE :: mms_u_g
27  DOUBLE PRECISION, DIMENSION(:), ALLOCATABLE :: mms_v_g
28  DOUBLE PRECISION, DIMENSION(:), ALLOCATABLE :: mms_w_g
29 
30 ! Gas temperature
31  DOUBLE PRECISION, DIMENSION(:), ALLOCATABLE :: mms_t_g
32 
33 ! Solid bulk density
34  DOUBLE PRECISION, DIMENSION(:), ALLOCATABLE :: mms_rop_s
35 
36 ! Solids velocity components
37  DOUBLE PRECISION, DIMENSION(:), ALLOCATABLE :: mms_u_s
38  DOUBLE PRECISION, DIMENSION(:), ALLOCATABLE :: mms_v_s
39  DOUBLE PRECISION, DIMENSION(:), ALLOCATABLE :: mms_w_s
40 
41 ! Solids temperature
42  DOUBLE PRECISION, DIMENSION(:), ALLOCATABLE :: mms_t_s
43 
44 ! Granular temperature
45  DOUBLE PRECISION, DIMENSION(:), ALLOCATABLE :: mms_theta_m
46 
47 ! Gas continuity MMS source term
48  DOUBLE PRECISION, DIMENSION(:), ALLOCATABLE :: mms_rop_g_src
49 
50 ! Gas Momentum source terms
51  DOUBLE PRECISION, DIMENSION(:), ALLOCATABLE :: mms_u_g_src
52  DOUBLE PRECISION, DIMENSION(:), ALLOCATABLE :: mms_v_g_src
53  DOUBLE PRECISION, DIMENSION(:), ALLOCATABLE :: mms_w_g_src
54 
55 ! Gas energy equation MMS source term
56  DOUBLE PRECISION, DIMENSION(:), ALLOCATABLE :: mms_t_g_src
57 
58 ! Solid continuity MMS source term
59  DOUBLE PRECISION, DIMENSION(:), ALLOCATABLE :: mms_rop_s_src
60 
61 ! Solid momentum MMS source terms
62  DOUBLE PRECISION, DIMENSION(:), ALLOCATABLE :: mms_u_s_src
63  DOUBLE PRECISION, DIMENSION(:), ALLOCATABLE :: mms_v_s_src
64  DOUBLE PRECISION, DIMENSION(:), ALLOCATABLE :: mms_w_s_src
65 
66 ! Solid energy equation MMS source term
67  DOUBLE PRECISION, DIMENSION(:), ALLOCATABLE :: mms_t_s_src
68 
69 ! Granular energy MMS source term
70  DOUBLE PRECISION, DIMENSION(:), ALLOCATABLE :: mms_theta_m_src
71 
72 ! Temporary variable for pressure shifting while plotting and
73 ! discretization error norm calculation
74  DOUBLE PRECISION, DIMENSION(:), ALLOCATABLE :: p_g_sh
75 
76 ! Index for pressure shifting
77  INTEGER :: ijk_sh
78 
79 ! x, y, z locations of top-right corner of a cell
80  DOUBLE PRECISION, DIMENSION(:), ALLOCATABLE :: xtr
81  DOUBLE PRECISION, DIMENSION(:), ALLOCATABLE :: ytr
82  DOUBLE PRECISION, DIMENSION(:), ALLOCATABLE :: ztr
83 
84  contains
85 
86 
87 
88 !vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv!
89 ! !
90 ! Module name: ALLOCATE_MMS_VARS !
91 ! Purpose: Allocate memory for allocatable variables defined inside !
92 ! MMS module. !
93 ! !
94 ! Author: Aniruddha Choudhary Date: Feb 2015 !
95 ! !
96 !^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^!
97  SUBROUTINE allocate_mms_vars
98  use param, only : dimension_3
99 
100  IMPLICIT NONE
101 
102 ! Note: both fluid and solid phase variables can be of size DIMENSION_3
103 ! since MMS tests do not work for more than one solid phase.
104 
105  allocate(mms_ep_g(dimension_3))
106  allocate(mms_p_g(dimension_3))
107  allocate(mms_u_g(dimension_3))
108  allocate(mms_v_g(dimension_3))
109  allocate(mms_w_g(dimension_3))
110  allocate(mms_t_g(dimension_3))
111 
112  allocate(mms_rop_s(dimension_3))
113  allocate(mms_u_s(dimension_3))
114  allocate(mms_v_s(dimension_3))
115  allocate(mms_w_s(dimension_3))
116  allocate(mms_t_s(dimension_3))
117  allocate(mms_theta_m(dimension_3))
118 
119  allocate(mms_rop_g_src(dimension_3))
120  allocate(mms_u_g_src(dimension_3))
121  allocate(mms_v_g_src(dimension_3))
122  allocate(mms_w_g_src(dimension_3))
123  allocate(mms_t_g_src(dimension_3))
124 
125  allocate(mms_rop_s_src(dimension_3))
126  allocate(mms_u_s_src(dimension_3))
127  allocate(mms_v_s_src(dimension_3))
128  allocate(mms_w_s_src(dimension_3))
129  allocate(mms_t_s_src(dimension_3))
130  allocate(mms_theta_m_src(dimension_3))
131 
132  allocate(p_g_sh(dimension_3))
133 
134  allocate(xtr(dimension_3))
135  allocate(ytr(dimension_3))
136  allocate(ztr(dimension_3))
137 
138 
139  RETURN
140  END SUBROUTINE allocate_mms_vars
141 
142 
143 !vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv!
144 ! !
145 ! Module name: DEALLOCATE_MMS_VARS !
146 ! Purpose: Deallocate memory for allocatable variables defined inside !
147 ! MMS module. !
148 ! !
149 ! Author: Aniruddha Choudhary Date: Feb 2015 !
150 ! !
151 !^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^!
152  SUBROUTINE deallocate_mms_vars
154  IMPLICIT NONE
155 
156 
157  deallocate(mms_ep_g)
158  deallocate(mms_p_g)
159  deallocate(mms_u_g)
160  deallocate(mms_v_g)
161  deallocate(mms_w_g)
162  deallocate(mms_t_g)
163 
164  deallocate(mms_rop_s)
165  deallocate(mms_u_s)
166  deallocate(mms_v_s)
167  deallocate(mms_w_s)
168  deallocate(mms_t_s)
169  deallocate(mms_theta_m)
170 
171  deallocate(mms_rop_g_src)
172  deallocate(mms_u_g_src)
173  deallocate(mms_v_g_src)
174  deallocate(mms_w_g_src)
175  deallocate(mms_t_g_src)
176 
177  deallocate(mms_rop_s_src)
178  deallocate(mms_u_s_src)
179  deallocate(mms_v_s_src)
180  deallocate(mms_w_s_src)
181  deallocate(mms_t_s_src)
182  deallocate(mms_theta_m_src)
183 
184  deallocate(p_g_sh)
185 
186  deallocate(xtr)
187  deallocate(ytr)
188  deallocate(ztr)
189 
190  RETURN
191  END SUBROUTINE deallocate_mms_vars
192 
193 !vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv!
194 ! !
195 ! Module name:CALCULATE_MMS !
196 ! Purpose: Generic stub/placeholder for MMS analytical solutions. !
197 ! !
198 ! Author: J.Musser Date: 04-Dec-13 !
199 ! !
200 !^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^!
201  SUBROUTINE calculate_mms
203  IMPLICIT NONE
204 
205  RETURN
206  END SUBROUTINE calculate_mms
207 
208 !vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv!
209 ! !
210 ! Module name:CALCULATE_MMS_SOURCE !
211 ! Purpose: Generic stub/placeholder for MMS source terms. !
212 ! !
213 ! Author: J.Musser Date: 04-Dec-13 !
214 ! !
215 !^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^!
216  SUBROUTINE calculate_mms_source
218  IMPLICIT NONE
219 
220  RETURN
221  End SUBROUTINE calculate_mms_source
222 
223  END MODULE mms
double precision, dimension(:), allocatable mms_v_g
Definition: mms_mod.f:27
double precision, dimension(:), allocatable mms_u_g
Definition: mms_mod.f:26
double precision, dimension(:), allocatable mms_v_s
Definition: mms_mod.f:38
double precision, dimension(:), allocatable mms_w_s_src
Definition: mms_mod.f:64
double precision, dimension(:), allocatable mms_t_g
Definition: mms_mod.f:31
double precision, dimension(:), allocatable mms_v_s_src
Definition: mms_mod.f:63
double precision, dimension(:), allocatable mms_theta_m_src
Definition: mms_mod.f:70
double precision, dimension(:), allocatable p_g_sh
Definition: mms_mod.f:74
integer dimension_3
Definition: param_mod.f:11
double precision, dimension(:), allocatable mms_w_g_src
Definition: mms_mod.f:53
subroutine deallocate_mms_vars
Definition: mms_mod.f:153
double precision, dimension(:), allocatable mms_v_g_src
Definition: mms_mod.f:52
double precision, dimension(:), allocatable mms_t_g_src
Definition: mms_mod.f:56
double precision, dimension(:), allocatable ytr
Definition: mms_mod.f:81
double precision, dimension(:), allocatable mms_rop_g_src
Definition: mms_mod.f:48
double precision, dimension(:), allocatable mms_rop_s_src
Definition: mms_mod.f:59
double precision, dimension(:), allocatable mms_t_s
Definition: mms_mod.f:42
double precision, dimension(:), allocatable mms_u_s_src
Definition: mms_mod.f:62
double precision, dimension(:), allocatable mms_u_s
Definition: mms_mod.f:37
double precision, dimension(:), allocatable mms_t_s_src
Definition: mms_mod.f:67
Definition: mms_mod.f:12
double precision, dimension(:), allocatable mms_u_g_src
Definition: mms_mod.f:51
double precision, dimension(:), allocatable mms_ep_g
Definition: mms_mod.f:20
Definition: param_mod.f:2
double precision, dimension(:), allocatable mms_w_s
Definition: mms_mod.f:39
double precision, dimension(:), allocatable mms_theta_m
Definition: mms_mod.f:45
logical use_mms
Definition: mms_mod.f:15
subroutine allocate_mms_vars
Definition: mms_mod.f:98
subroutine calculate_mms_source
Definition: mms_mod.f:217
double precision, dimension(:), allocatable xtr
Definition: mms_mod.f:80
double precision, dimension(:), allocatable mms_rop_s
Definition: mms_mod.f:34
double precision, dimension(:), allocatable ztr
Definition: mms_mod.f:82
subroutine calculate_mms
Definition: mms_mod.f:202
double precision, dimension(:), allocatable mms_p_g
Definition: mms_mod.f:23
integer ijk_sh
Definition: mms_mod.f:77
double precision, dimension(:), allocatable mms_w_g
Definition: mms_mod.f:28