2 !WRF:MEDIATION_LAYER:NESTING
4 SUBROUTINE med_feedback_domain ( parent_grid , nested_grid )
8 TYPE(domain), POINTER :: parent_grid , nested_grid
9 TYPE(domain), POINTER :: grid
11 #if !defined(MAC_KLUDGE)
12 TYPE (grid_config_rec_type) :: config_flags
14 ! see http://www.mmm.ucar.edu/wrf/WG2/topics/deref_kludge.htm
15 INTEGER :: sm31 , em31 , sm32 , em32 , sm33 , em33
16 INTEGER :: sm31x, em31x, sm32x, em32x, sm33x, em33x
17 INTEGER :: sm31y, em31y, sm32y, em32y, sm33y, em33y
18 ! ----------------------------------------------------------
19 ! ------------------------------------------------------
21 ! ------------------------------------------------------
23 ! ------------------------------------------------------
24 ! Interface definitions for EM CORE
25 ! ------------------------------------------------------
27 #if !defined(MAC_KLUDGE)
28 ! ------------------------------------------------------
29 ! These routines are supplied by module_dm.F from the
30 ! external communication package (e.g. external/RSL)
31 ! ------------------------------------------------------
32 SUBROUTINE feedback_domain_em_part1 ( grid, nested_grid, config_flags &
34 # include "dummy_new_args.inc"
39 TYPE(domain), POINTER :: grid ! name of the grid being dereferenced (must be "grid")
40 TYPE(domain), POINTER :: nested_grid
41 TYPE (grid_config_rec_type) :: config_flags
42 # include <dummy_new_decl.inc>
43 END SUBROUTINE feedback_domain_em_part1
44 SUBROUTINE feedback_domain_em_part2 ( grid, intermediate_grid , nested_grid, config_flags &
46 # include "dummy_new_args.inc"
51 TYPE(domain), POINTER :: grid ! name of the grid being dereferenced (must be "grid")
52 TYPE(domain), POINTER :: intermediate_grid
53 TYPE(domain), POINTER :: nested_grid
54 TYPE (grid_config_rec_type) :: config_flags
55 # include <dummy_new_decl.inc>
56 END SUBROUTINE feedback_domain_em_part2
57 SUBROUTINE update_after_feedback_em ( grid &
59 # include "dummy_new_args.inc"
64 TYPE(domain), TARGET :: grid ! name of the grid being dereferenced (must be "grid")
65 # include <dummy_new_decl.inc>
66 END SUBROUTINE update_after_feedback_em
69 ! ----------------------------------------------------------
70 ! Interface definitions for NMM (placeholder)
71 ! ----------------------------------------------------------
72 #if (NMM_CORE == 1 && NMM_NEST == 1)
73 ! ------------------------------------------------------
74 ! These routines are supplied by module_dm.F from the
75 ! external communication package (e.g. external/RSL)
76 ! This is gopal's extension for the NMM core
77 ! ------------------------------------------------------
78 SUBROUTINE feedback_domain_nmm_part1 ( grid, nested_grid, config_flags &
80 # include "dummy_new_args.inc"
85 TYPE(domain), POINTER :: grid ! name of the grid being dereferenced (must be "grid")
86 TYPE(domain), POINTER :: nested_grid
87 TYPE (grid_config_rec_type) :: config_flags
88 # include <dummy_new_decl.inc>
89 END SUBROUTINE feedback_domain_nmm_part1
91 SUBROUTINE feedback_domain_nmm_part2 ( grid, intermediate_grid , nested_grid, config_flags &
93 # include "dummy_new_args.inc"
98 TYPE(domain), POINTER :: grid ! name of the grid being dereferenced (must be "grid")
99 TYPE(domain), POINTER :: intermediate_grid
100 TYPE(domain), POINTER :: nested_grid
101 TYPE (grid_config_rec_type) :: config_flags
102 # include <dummy_new_decl.inc>
104 END SUBROUTINE feedback_domain_nmm_part2
106 ! ----------------------------------------------------------
107 ! Interface definitions for COAMPS (placeholder)
108 ! ----------------------------------------------------------
109 #if (COAMPS_CORE == 1 )
112 ! ----------------------------------------------------------
113 ! End of Interface blocks
114 ! ----------------------------------------------------------
115 ! ----------------------------------------------------------
116 ! ----------------------------------------------------------
118 ! ----------------------------------------------------------
119 ! ----------------------------------------------------------
120 ! Feedback calls for EM CORE.
121 ! ----------------------------------------------------------
122 #if (EM_CORE == 1 && defined( DM_PARALLEL ))
123 # if !defined(MAC_KLUDGE)
124 CALL model_to_grid_config_rec ( nested_grid%id , model_config_rec , config_flags )
125 parent_grid%ht_coarse = parent_grid%ht
126 grid => nested_grid%intermediate_grid
127 # if defined(MOVE_NESTS) || (!defined(SGIALTIX))
128 CALL alloc_space_field ( grid, grid%id , 1 , 2 , .TRUE. , &
129 grid%sd31, grid%ed31, grid%sd32, grid%ed32, grid%sd33, grid%ed33, &
130 grid%sm31, grid%em31, grid%sm32, grid%em32, grid%sm33, grid%em33, &
131 grid%sp31, grid%ep31, grid%sp32, grid%ep32, grid%sp33, grid%ep33, &
132 grid%sp31x, grid%ep31x, grid%sp32x, grid%ep32x, grid%sp33x, grid%ep33x,&
133 grid%sp31y, grid%ep31y, grid%sp32y, grid%ep32y, grid%sp33y, grid%ep33y,&
134 grid%sm31x, grid%em31x, grid%sm32x, grid%em32x, grid%sm33x, grid%em33x, & ! x-xpose
135 grid%sm31y, grid%em31y, grid%sm32y, grid%em32y, grid%sm33y, grid%em33y & ! y-xpose
138 grid => nested_grid%intermediate_grid
139 CALL feedback_domain_em_part1 ( grid, nested_grid, config_flags &
141 # include "actual_new_args.inc"
147 CALL feedback_domain_em_part2 ( grid , nested_grid%intermediate_grid, nested_grid , config_flags &
149 # include "actual_new_args.inc"
152 WHERE ( grid%nest_pos .NE. 9021000. ) grid%ht = grid%ht_coarse
153 CALL update_after_feedback_em ( grid &
155 # include "actual_new_args.inc"
158 grid => nested_grid%intermediate_grid
159 # if defined(MOVE_NESTS) || (!defined(SGIALTIX))
160 CALL dealloc_space_field ( grid )
164 ! ------------------------------------------------------
165 ! End of Feedback calls for EM CORE.
166 ! ------------------------------------------------------
167 ! ------------------------------------------------------
168 ! ------------------------------------------------------
169 ! Feedback calls for NMM. (Placeholder)
170 ! ------------------------------------------------------
171 #if (NMM_CORE == 1 && NMM_NEST == 1)
172 ! ------------------------------------------------------
173 ! This is gopal's extension for the NMM core
174 ! ------------------------------------------------------
176 CALL model_to_grid_config_rec ( nested_grid%id , model_config_rec , config_flags )
178 grid => nested_grid%intermediate_grid
179 !dusan orig CALL alloc_space_field ( grid, grid%id , 1 , 2 , .TRUE. , &
180 #if defined(MOVE_NESTS) || (!defined(SGIALTIX))
182 CALL ensure_space_field &
184 CALL alloc_space_field &
186 ( grid, grid%id , 1 , 3 , .FALSE. , &
187 grid%sd31, grid%ed31, grid%sd32, grid%ed32, grid%sd33, grid%ed33, &
188 grid%sm31, grid%em31, grid%sm32, grid%em32, grid%sm33, grid%em33, &
189 grid%sp31, grid%ep31, grid%sp32, grid%ep32, grid%sp33, grid%ep33, &
190 grid%sp31x, grid%ep31x, grid%sp32x, grid%ep32x, grid%sp33x, grid%ep33x,&
191 grid%sp31y, grid%ep31y, grid%sp32y, grid%ep32y, grid%sp33y, grid%ep33y,&
192 grid%sm31x, grid%em31x, grid%sm32x, grid%em32x, grid%sm33x, grid%em33x, & ! x-xpose
193 grid%sm31y, grid%em31y, grid%sm32y, grid%em32y, grid%sm33y, grid%em33y & ! y-xpose
197 grid => nested_grid%intermediate_grid
198 # include "deref_kludge.h"
199 CALL feedback_domain_nmm_part1 ( grid, nested_grid, config_flags &
201 # include "actual_new_args.inc"
205 # include "deref_kludge.h"
208 CALL feedback_domain_nmm_part2 ( grid , nested_grid%intermediate_grid, nested_grid , config_flags &
210 # include "actual_new_args.inc"
213 grid => nested_grid%intermediate_grid
214 # if defined(MOVE_NESTS) || (!defined(SGIALTIX))
216 CALL dealloc_space_field ( grid )
220 ! ------------------------------------------------------
221 ! End of Feedback calls for NMM.
222 ! ------------------------------------------------------
223 ! ------------------------------------------------------
224 ! ------------------------------------------------------
225 ! Feedback calls for COAMPS. (Placeholder)
226 ! ------------------------------------------------------
227 #if (COAMPS_CORE == 1)
229 ! ------------------------------------------------------
230 ! End of Feedback calls for COAMPS.
231 ! ------------------------------------------------------
233 END SUBROUTINE med_feedback_domain