6 SUBROUTINE init_module_dm
7 END SUBROUTINE init_module_dm
9 REAL FUNCTION wrf_dm_max_real ( inval )
12 wrf_dm_max_real = inval
13 END FUNCTION wrf_dm_max_real
15 REAL FUNCTION wrf_dm_min_real ( inval )
18 wrf_dm_min_real = inval
19 END FUNCTION wrf_dm_min_real
21 SUBROUTINE wrf_dm_min_reals ( inval, retval, n )
23 INTEGER, INTENT(IN) :: n
24 REAL, INTENT(IN) :: inval(:)
25 REAL, INTENT(OUT) :: retval(:)
27 END SUBROUTINE wrf_dm_min_reals
29 REAL FUNCTION wrf_dm_sum_real ( inval )
32 wrf_dm_sum_real = inval
33 END FUNCTION wrf_dm_sum_real
35 SUBROUTINE wrf_dm_sum_reals ( inval, retval )
37 REAL, INTENT(IN) :: inval(:)
38 REAL, INTENT(OUT) :: retval(:)
40 END SUBROUTINE wrf_dm_sum_reals
42 INTEGER FUNCTION wrf_dm_sum_integer ( inval )
45 wrf_dm_sum_integer = inval
46 END FUNCTION wrf_dm_sum_integer
48 SUBROUTINE wrf_dm_maxval ( val, idex, jdex )
53 END SUBROUTINE wrf_dm_maxval
55 SUBROUTINE wrf_dm_minval ( val, idex, jdex )
60 END SUBROUTINE wrf_dm_minval
62 SUBROUTINE wrf_dm_maxtile_real ( val , tile)
66 END SUBROUTINE wrf_dm_maxtile_real
68 SUBROUTINE wrf_dm_mintile_double ( val , tile)
72 END SUBROUTINE wrf_dm_mintile_double
74 SUBROUTINE wrf_dm_tile_val_int ( val , tile)
78 END SUBROUTINE wrf_dm_tile_val_int
81 SUBROUTINE wrf_dm_move_nest ( parent, nest, dx, dy )
83 TYPE (domain), INTENT(INOUT) :: parent, nest
84 INTEGER, INTENT(IN) :: dx,dy
86 END SUBROUTINE wrf_dm_move_nest
90 !=========================================================================
92 ! These are stub functions that do the right thing (usually nothing)
93 ! in case DM_PARALLEL is not compiled for.
94 ! This file, src/module_dm_stubs.F is copied to src/module_dm.F when
96 ! If, on the other hand, a DM package is specified, the module_dm.F
97 ! provided with that package (e.g. RSL) is copied from /external/RSL/module_dm.F
98 ! into src/module_dm.F.
99 ! It is important to recognize this, because changes directly to src/module_dm.F
102 LOGICAL FUNCTION wrf_dm_on_monitor()
103 wrf_dm_on_monitor = .true.
104 END FUNCTION wrf_dm_on_monitor
106 INTEGER FUNCTION wrf_dm_monitor_rank()
107 wrf_dm_monitor_rank = 0
108 END FUNCTION wrf_dm_monitor_rank
110 SUBROUTINE wrf_get_myproc( myproc )
115 END SUBROUTINE wrf_get_myproc
117 SUBROUTINE wrf_get_nproc( nprocs )
122 END SUBROUTINE wrf_get_nproc
124 SUBROUTINE wrf_get_nprocx( nprocs )
129 END SUBROUTINE wrf_get_nprocx
131 SUBROUTINE wrf_get_nprocy( nprocs )
136 END SUBROUTINE wrf_get_nprocy
138 SUBROUTINE wrf_dm_bcast_string ( buf , size )
143 END SUBROUTINE wrf_dm_bcast_string
145 SUBROUTINE wrf_dm_bcast_bytes ( buf , size )
150 END SUBROUTINE wrf_dm_bcast_bytes
152 SUBROUTINE wrf_dm_bcast_integer( BUF, N1 )
157 END SUBROUTINE wrf_dm_bcast_integer
159 SUBROUTINE wrf_dm_bcast_real( BUF, N1 )
164 END SUBROUTINE wrf_dm_bcast_real
166 SUBROUTINE wrf_dm_bcast_logical( BUF, N1 )
171 END SUBROUTINE wrf_dm_bcast_logical
173 SUBROUTINE wrf_dm_halo ( domdesc , comms , stencil_id )
175 INTEGER domdesc , comms(*) , stencil_id
177 END SUBROUTINE wrf_dm_halo
179 SUBROUTINE wrf_dm_boundary ( domdesc , comms , period_id , &
180 periodic_x , periodic_y )
182 INTEGER domdesc , comms(*) , period_id
183 LOGICAL , INTENT(IN) :: periodic_x, periodic_y
185 END SUBROUTINE wrf_dm_boundary
187 SUBROUTINE wrf_dm_xpose_z2x ( domdesc , comms , xpose_id )
189 INTEGER domdesc , comms(*), xpose_id
191 END SUBROUTINE wrf_dm_xpose_z2x
192 SUBROUTINE wrf_dm_xpose_x2y ( domdesc , comms , xpose_id )
194 INTEGER domdesc , comms(*), xpose_id
196 END SUBROUTINE wrf_dm_xpose_x2y
197 SUBROUTINE wrf_dm_xpose_y2z ( domdesc , comms , xpose_id )
199 INTEGER domdesc , comms(*), xpose_id
201 END SUBROUTINE wrf_dm_xpose_y2z
203 SUBROUTINE wrf_dm_define_comms ( grid )
206 TYPE(domain) , INTENT (INOUT) :: grid
208 END SUBROUTINE wrf_dm_define_comms
210 SUBROUTINE wrf_get_dm_communicator ( communicator )
212 INTEGER , INTENT(OUT) :: communicator
215 END SUBROUTINE wrf_get_dm_communicator
217 SUBROUTINE wrf_get_dm_iocommunicator ( iocommunicator )
219 INTEGER , INTENT(OUT) :: iocommunicator
222 END SUBROUTINE wrf_get_dm_iocommunicator
224 SUBROUTINE wrf_dm_shutdown
226 END SUBROUTINE wrf_dm_shutdown
229 END SUBROUTINE wrf_abort
231 SUBROUTINE wrf_patch_to_global_real (buf,globbuf,domdesc,ndim,&
232 ids,ide,jds,jde,kds,kde,&
233 ims,ime,jms,jme,kms,kme,&
234 ips,ipe,jps,jpe,kps,kpe )
236 INTEGER ids,ide,jds,jde,kds,kde,&
237 ims,ime,jms,jme,kms,kme,&
238 ips,ipe,jps,jpe,kps,kpe
239 INTEGER fid,domdesc,ndim,glen(3),llen(3)
243 END SUBROUTINE wrf_patch_to_global_real
245 SUBROUTINE wrf_global_to_patch_real (globbuf,buf,domdesc,ndim,&
246 ids,ide,jds,jde,kds,kde,&
247 ims,ime,jms,jme,kms,kme,&
248 ips,ipe,jps,jpe,kps,kpe )
250 INTEGER ids,ide,jds,jde,kds,kde,&
251 ims,ime,jms,jme,kms,kme,&
252 ips,ipe,jps,jpe,kps,kpe
253 INTEGER fid,domdesc,ndim,glen(3),llen(3)
257 END SUBROUTINE wrf_global_to_patch_real
260 SUBROUTINE wrf_patch_to_global_double (buf,globbuf,domdesc,ndim,&
261 ids,ide,jds,jde,kds,kde,&
262 ims,ime,jms,jme,kms,kme,&
263 ips,ipe,jps,jpe,kps,kpe )
265 INTEGER ids,ide,jds,jde,kds,kde,&
266 ims,ime,jms,jme,kms,kme,&
267 ips,ipe,jps,jpe,kps,kpe
268 INTEGER fid,domdesc,ndim,glen(3),llen(3)
269 DOUBLE PRECISION globbuf(*)
270 DOUBLE PRECISION buf(*)
272 END SUBROUTINE wrf_patch_to_global_double
274 SUBROUTINE wrf_global_to_patch_double (globbuf,buf,domdesc,ndim,&
275 ids,ide,jds,jde,kds,kde,&
276 ims,ime,jms,jme,kms,kme,&
277 ips,ipe,jps,jpe,kps,kpe )
279 INTEGER ids,ide,jds,jde,kds,kde,&
280 ims,ime,jms,jme,kms,kme,&
281 ips,ipe,jps,jpe,kps,kpe
282 INTEGER fid,domdesc,ndim,glen(3),llen(3)
283 DOUBLE PRECISION globbuf(*)
284 DOUBLE PRECISION buf(*)
286 END SUBROUTINE wrf_global_to_patch_double
288 SUBROUTINE wrf_patch_to_global_integer (buf,globbuf,domdesc,ndim,&
289 ids,ide,jds,jde,kds,kde,&
290 ims,ime,jms,jme,kms,kme,&
291 ips,ipe,jps,jpe,kps,kpe )
293 INTEGER ids,ide,jds,jde,kds,kde,&
294 ims,ime,jms,jme,kms,kme,&
295 ips,ipe,jps,jpe,kps,kpe
296 INTEGER fid,domdesc,ndim,glen(3),llen(3)
300 END SUBROUTINE wrf_patch_to_global_integer
302 SUBROUTINE wrf_global_to_patch_integer (globbuf,buf,domdesc,ndim,&
303 ids,ide,jds,jde,kds,kde,&
304 ims,ime,jms,jme,kms,kme,&
305 ips,ipe,jps,jpe,kps,kpe )
307 INTEGER ids,ide,jds,jde,kds,kde,&
308 ims,ime,jms,jme,kms,kme,&
309 ips,ipe,jps,jpe,kps,kpe
310 INTEGER fid,domdesc,ndim,glen(3),llen(3)
314 END SUBROUTINE wrf_global_to_patch_integer
316 SUBROUTINE wrf_patch_to_global_logical (buf,globbuf,domdesc,ndim,&
317 ids,ide,jds,jde,kds,kde,&
318 ims,ime,jms,jme,kms,kme,&
319 ips,ipe,jps,jpe,kps,kpe )
321 INTEGER ids,ide,jds,jde,kds,kde,&
322 ims,ime,jms,jme,kms,kme,&
323 ips,ipe,jps,jpe,kps,kpe
324 INTEGER fid,domdesc,ndim,glen(3),llen(3)
328 END SUBROUTINE wrf_patch_to_global_logical
330 SUBROUTINE wrf_global_to_patch_LOGICAL (globbuf,buf,domdesc,ndim,&
331 ids,ide,jds,jde,kds,kde,&
332 ims,ime,jms,jme,kms,kme,&
333 ips,ipe,jps,jpe,kps,kpe )
335 INTEGER ids,ide,jds,jde,kds,kde,&
336 ims,ime,jms,jme,kms,kme,&
337 ips,ipe,jps,jpe,kps,kpe
338 INTEGER fid,domdesc,ndim,glen(3),llen(3)
342 END SUBROUTINE wrf_global_to_patch_LOGICAL