mediation_interp_domain.F
References to this file elsewhere.
1 !
2 !WRF:MEDIATION_LAYER:NESTING
3 !
4 SUBROUTINE med_interp_domain ( parent_grid , nested_grid )
5 USE module_domain
6 USE module_configure
7 USE module_timing
8 IMPLICIT NONE
9 TYPE(domain), POINTER :: parent_grid , nested_grid
10 TYPE(domain), POINTER :: grid
11 INTEGER nlev, msize
12 TYPE (grid_config_rec_type) :: config_flags
13 ! see http://www.mmm.ucar.edu/wrf/WG2/topics/deref_kludge.htm
14 INTEGER :: sm31 , em31 , sm32 , em32 , sm33 , em33
15 INTEGER :: sm31x, em31x, sm32x, em32x, sm33x, em33x
16 INTEGER :: sm31y, em31y, sm32y, em32y, sm33y, em33y
17
18 ! ----------------------------------------------------------
19 ! ----------------------------------------------------------
20 ! Interface blocks
21 ! ----------------------------------------------------------
22 INTERFACE
23 ! ----------------------------------------------------------
24 ! Interface definitions for EM CORE
25 ! ----------------------------------------------------------
26 #if (EM_CORE == 1)
27 ! ----------------------------------------------------------
28 ! These routines are supplied by module_dm.F from the
29 ! external communication package (e.g. external/RSL)
30 ! ----------------------------------------------------------
31 SUBROUTINE interp_domain_em_part1 ( grid, intermediate_grid, ngrid, config_flags &
32 !
33 # include "em_dummy_new_args.inc"
34 !
35 )
36 USE module_domain
37 USE module_configure
38 TYPE(domain), POINTER :: grid ! name of the grid being dereferenced (must be "grid")
39 TYPE(domain), POINTER :: intermediate_grid
40 TYPE(domain), POINTER :: ngrid
41 TYPE (grid_config_rec_type) :: config_flags
42 # include <em_dummy_new_decl.inc>
43 END SUBROUTINE interp_domain_em_part1
44
45 SUBROUTINE interp_domain_em_part2 ( grid, nested_grid, config_flags &
46 !
47 # include "em_dummy_new_args.inc"
48 !
49 )
50 USE module_domain
51 USE module_configure
52 TYPE(domain), POINTER :: grid ! name of the grid being dereferenced (must be "grid")
53 TYPE(domain), POINTER :: nested_grid
54 TYPE (grid_config_rec_type) :: config_flags
55 # include <em_dummy_new_decl.inc>
56 END SUBROUTINE interp_domain_em_part2
57 #endif
58 ! ----------------------------------------------------------
59 ! Interface definitions for NMM (placeholder)
60 ! ----------------------------------------------------------
61 #if (NMM_CORE == 1 && NMM_NEST == 1)
62 !=======================================================================
63 ! Added for the NMM core. This is gopal's doing.
64 !=======================================================================
65
66 SUBROUTINE interp_domain_nmm_part1 ( grid, intermediate_grid, ngrid, config_flags &
67 !
68 # include "nmm_dummy_args.inc"
69 !
70 )
71 USE module_domain
72 USE module_configure
73 TYPE(domain), POINTER :: grid ! name of the grid being dereferenced (must be "grid")
74 TYPE(domain), POINTER :: intermediate_grid
75 TYPE(domain), POINTER :: ngrid
76 TYPE (grid_config_rec_type) :: config_flags
77 # include <nmm_dummy_decl.inc>
78 END SUBROUTINE interp_domain_nmm_part1
79
80 SUBROUTINE interp_domain_nmm_part2 ( grid, nested_grid, config_flags &
81 !
82 # include "nmm_dummy_args.inc"
83 !
84 )
85 USE module_domain
86 USE module_configure
87 TYPE(domain), POINTER :: grid ! name of the grid being dereferenced (must be "grid")
88 TYPE(domain), POINTER :: nested_grid
89 TYPE (grid_config_rec_type) :: config_flags
90 # include <nmm_dummy_decl.inc>
91 END SUBROUTINE interp_domain_nmm_part2
92
93 !=======================================================================
94 ! End of gopal's doing.
95 !=======================================================================
96 #endif
97 ! ----------------------------------------------------------
98 ! Interface definitions for COAMPS (placeholder)
99 ! ----------------------------------------------------------
100 #if (COAMPS_CORE == 1)
101 #endif
102 END INTERFACE
103 ! ----------------------------------------------------------
104 ! End of Interface blocks
105 ! ----------------------------------------------------------
106 ! ----------------------------------------------------------
107 ! ----------------------------------------------------------
108 ! Executable code
109 ! ----------------------------------------------------------
110 ! ----------------------------------------------------------
111 ! Interpolation calls for EM CORE. The called
112 ! routines below are supplied by module_dm.F
113 ! from the external communications package (e.g. RSL)
114 ! ----------------------------------------------------------
115 #if (EM_CORE == 1 && defined( DM_PARALLEL ))
116 CALL model_to_grid_config_rec ( nested_grid%id , model_config_rec , config_flags )
117 IF ( config_flags%dyn_opt == DYN_EM ) THEN
118
119 grid => nested_grid%intermediate_grid
120 #ifndef SGIALTIX
121 CALL alloc_space_field ( grid, grid%id , 1 , 2 , .TRUE. , &
122 grid%sd31, grid%ed31, grid%sd32, grid%ed32, grid%sd33, grid%ed33, &
123 grid%sm31, grid%em31, grid%sm32, grid%em32, grid%sm33, grid%em33, &
124 grid%sm31x, grid%em31x, grid%sm32x, grid%em32x, grid%sm33x, grid%em33x, & ! x-xpose
125 grid%sm31y, grid%em31y, grid%sm32y, grid%em32y, grid%sm33y, grid%em33y & ! y-xpose
126 )
127 #endif
128
129 grid => parent_grid
130
131 CALL model_to_grid_config_rec ( grid%id , model_config_rec , config_flags )
132 CALL interp_domain_em_part1 ( grid , nested_grid%intermediate_grid, nested_grid, config_flags &
133 !
134 # include "em_actual_new_args.inc"
135 !
136 )
137 grid => nested_grid%intermediate_grid
138 CALL model_to_grid_config_rec ( grid%id , model_config_rec , config_flags )
139 CALL interp_domain_em_part2 ( grid, nested_grid, config_flags &
140 !
141 # include "em_actual_new_args.inc"
142 !
143 )
144
145 grid => nested_grid%intermediate_grid
146 CALL model_to_grid_config_rec ( grid%id , model_config_rec , config_flags )
147 #ifndef SGIALTIX
148 CALL dealloc_space_field ( grid )
149 #endif
150
151 ENDIF
152 #endif
153 ! ------------------------------------------------------
154 ! End of Interpolation calls for EM CORE.
155 ! ------------------------------------------------------
156 ! ------------------------------------------------------
157 ! ------------------------------------------------------
158 ! Interpolation calls for NMM. (Placeholder)
159 ! ------------------------------------------------------
160 #if (NMM_CORE == 1 && NMM_NEST == 1)
161 !=======================================================================
162 ! Added for the NMM core. This is gopal's doing.
163 !=======================================================================
164 !
165 CALL model_to_grid_config_rec ( nested_grid%id , model_config_rec , config_flags )
166 IF ( config_flags%dyn_opt == DYN_NMM) THEN
167
168 grid => nested_grid%intermediate_grid
169 ! CALL alloc_space_field ( grid, grid%id , 1 , 2 , .TRUE. , &
170 #ifndef SGIALTIX
171 CALL alloc_space_field ( grid, grid%id , 1 , 3 , .FALSE. , &
172 grid%sd31, grid%ed31, grid%sd32, grid%ed32, grid%sd33, grid%ed33, &
173 grid%sm31, grid%em31, grid%sm32, grid%em32, grid%sm33, grid%em33, &
174 grid%sm31x, grid%em31x, grid%sm32x, grid%em32x, grid%sm33x, grid%em33x, & ! x-xpose
175 grid%sm31y, grid%em31y, grid%sm32y, grid%em32y, grid%sm33y, grid%em33y & ! y-xpose
176 )
177 #endif
178
179 grid => parent_grid
180
181 # include "deref_kludge.h"
182
183
184 CALL model_to_grid_config_rec ( grid%id , model_config_rec , config_flags )
185
186 CALL interp_domain_nmm_part1 ( grid , nested_grid%intermediate_grid, nested_grid, config_flags &
187 !
188 # include "nmm_actual_args.inc"
189 !
190 )
191 grid => nested_grid%intermediate_grid
192 CALL model_to_grid_config_rec ( grid%id , model_config_rec , config_flags )
193 # include "deref_kludge.h"
194
195 CALL interp_domain_nmm_part2 ( grid, nested_grid, config_flags &
196 !
197 # include "nmm_actual_args.inc"
198 !
199 )
200
201 grid => nested_grid%intermediate_grid
202 CALL model_to_grid_config_rec ( grid%id , model_config_rec , config_flags )
203 #ifndef SGIALTIX
204 CALL dealloc_space_field ( grid )
205 #endif
206
207 ENDIF
208 ! ------------------------------------------------------------
209 ! End of gopal's doing
210 ! ------------------------------------------------------------
211 #endif
212 ! ------------------------------------------------------
213 ! End of Interpolation calls for NMM.
214 ! ------------------------------------------------------
215 ! ------------------------------------------------------
216 ! ------------------------------------------------------
217 ! Interpolation calls for COAMPS. (Placeholder)
218 ! ------------------------------------------------------
219 #if (COAMPS_CORE == 1)
220 #endif
221 ! ------------------------------------------------------
222 ! End of Interpolation calls for COAMPS.
223 ! ------------------------------------------------------
224 RETURN
225 END SUBROUTINE med_interp_domain
226
227