SURFEX  V8_0
Surfex V8_0 release
 All Classes Files Functions Variables
pack_same_rank.F90
Go to the documentation of this file.
1 !SFX_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
2 !SFX_LIC This is part of the SURFEX software governed by the CeCILL-C licence
3 !SFX_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
4 !SFX_LIC for details. version 1.
5 ! ##########################
7 ! ##########################
8 INTERFACE pack_same_rank
9  SUBROUTINE pack_same_rank_from1di(KM,K1D_IN,K1D_OUT)
10 
11 INTEGER, DIMENSION(:), INTENT(IN) :: km
12 INTEGER, DIMENSION(:), INTENT(IN) :: k1d_in
13 INTEGER, DIMENSION(:), INTENT(OUT):: k1d_out
14 END SUBROUTINE pack_same_rank_from1di
15 !
16  SUBROUTINE pack_same_rank_from2di(KM,K1D_IN,K1D_OUT)
17 
18 INTEGER, DIMENSION(:), INTENT(IN) :: km
19 INTEGER, DIMENSION(:,:), INTENT(IN) :: k1d_in
20 INTEGER, DIMENSION(:,:), INTENT(OUT):: k1d_out
21 END SUBROUTINE pack_same_rank_from2di
22 !
23  SUBROUTINE pack_same_rank_from1dl(KM,O1D_IN,O1D_OUT)
24 
25 INTEGER, DIMENSION(:), INTENT(IN) :: km
26 LOGICAL, DIMENSION(:), INTENT(IN) :: o1d_in
27 LOGICAL, DIMENSION(:), INTENT(OUT):: o1d_out
28 END SUBROUTINE pack_same_rank_from1dl
29 !
30  SUBROUTINE pack_same_rank_from1d(KM,P1D_IN,P1D_OUT)
31 
32 INTEGER, DIMENSION(:), INTENT(IN) :: km
33 REAL, DIMENSION(:), INTENT(IN) :: p1d_in
34 REAL, DIMENSION(:), INTENT(OUT):: p1d_out
35 END SUBROUTINE pack_same_rank_from1d
36 !
37  SUBROUTINE pack_same_rank_from2d(KM,P2D_IN,P2D_OUT)
38 
39 INTEGER, DIMENSION(:), INTENT(IN) :: km
40 REAL, DIMENSION(:,:), INTENT(IN) :: p2d_in
41 REAL, DIMENSION(:,:), INTENT(OUT):: p2d_out
42 !
43 END SUBROUTINE pack_same_rank_from2d
44 !
45  SUBROUTINE pack_same_rank_from3d(KM,P3D_IN,P3D_OUT)
46 
47 INTEGER, DIMENSION(:), INTENT(IN) :: km
48 REAL, DIMENSION(:,:,:), INTENT(IN) :: p3d_in
49 REAL, DIMENSION(:,:,:), INTENT(OUT):: p3d_out
50 !
51 END SUBROUTINE pack_same_rank_from3d
52 !
53  SUBROUTINE pack_same_rank_from4d(KM,P4D_IN,P4D_OUT)
54 
55 INTEGER, DIMENSION(:), INTENT(IN) :: km
56 REAL, DIMENSION(:,:,:,:), INTENT(IN) :: p4d_in
57 REAL, DIMENSION(:,:,:,:), INTENT(OUT):: p4d_out
58 !
59 END SUBROUTINE pack_same_rank_from4d
60 !
61 END INTERFACE pack_same_rank
62 !
63 END MODULE modi_pack_same_rank
64 !
65 ! ##############################################
66  SUBROUTINE pack_same_rank_from1d(KM,P1D_IN,P1D_OUT)
67 ! ##############################################
68 !
69 !!**** *PACK_SAME_RANK* - extract the defined data from a 1D field into a 1D field of lower rank
70 !!
71 !! PURPOSE
72 !! -------
73 !!
74 !!** METHOD
75 !! ------
76 !!
77 !! EXTERNAL
78 !! --------
79 !!
80 !!
81 !! IMPLICIT ARGUMENTS
82 !! ------------------
83 !!
84 !! REFERENCE
85 !! ---------
86 !!
87 !!
88 !! AUTHOR
89 !! ------
90 !! F. Habets *Meteo France*
91 !!
92 !! MODIFICATIONS
93 !! -------------
94 !! Original 08/03
95 !-------------------------------------------------------------------------------
96 !
97 !* 0. DECLARATIONS
98 ! ------------
99 !
100 USE yomhook ,ONLY : lhook, dr_hook
101 USE parkind1 ,ONLY : jprb
102 !
103 IMPLICIT NONE
104 !
105 !* 0.1 Declarations of arguments
106 ! -------------------------
107 !
108 INTEGER, DIMENSION(:), INTENT(IN) :: km
109 REAL, DIMENSION(:), INTENT(IN) :: p1d_in
110 REAL, DIMENSION(:), INTENT(OUT):: p1d_out
111 !
112 !* 0.2 Declarations of local variables
113 ! -------------------------------
114 !
115 INTEGER :: ji ! loop counter
116 REAL(KIND=JPRB) :: zhook_handle
117 !
118 !-------------------------------------------------------------------------------
119 !
120 !
121 IF (lhook) CALL dr_hook('MODI_PACK_SAME_RANK:PACK_SAME_RANK_FROM1D',0,zhook_handle)
122 !cdir nodep
123 DO ji=1,SIZE(p1d_out,1)
124  p1d_out(ji) = p1d_in(km(ji))
125 ENDDO
126 IF (lhook) CALL dr_hook('MODI_PACK_SAME_RANK:PACK_SAME_RANK_FROM1D',1,zhook_handle)
127 !
128 !-------------------------------------------------------------------------------
129 !
130 END SUBROUTINE pack_same_rank_from1d
131 !
132 !
133 ! ##############################################
134  SUBROUTINE pack_same_rank_from1di(KM,K1D_IN,K1D_OUT)
135 ! ##############################################
136 !
137 !!**** *PACK_SAME_RANK* - extract the defined data from a 1D field into a 1D field of lower rank
138 !!
139 !! PURPOSE
140 !! -------
141 !!
142 !!** METHOD
143 !! ------
144 !!
145 !! EXTERNAL
146 !! --------
147 !!
148 !!
149 !! IMPLICIT ARGUMENTS
150 !! ------------------
151 !!
152 !! REFERENCE
153 !! ---------
154 !!
155 !!
156 !! AUTHOR
157 !! ------
158 !! F. Habets *Meteo France*
159 !!
160 !! MODIFICATIONS
161 !! -------------
162 !! Original 08/03
163 !-------------------------------------------------------------------------------
164 !
165 !* 0. DECLARATIONS
166 ! ------------
167 !
168 USE yomhook ,ONLY : lhook, dr_hook
169 USE parkind1 ,ONLY : jprb
170 !
171 IMPLICIT NONE
172 !
173 !* 0.1 Declarations of arguments
174 ! -------------------------
175 !
176 INTEGER, DIMENSION(:), INTENT(IN) :: km
177 INTEGER, DIMENSION(:), INTENT(IN) :: k1d_in
178 INTEGER, DIMENSION(:), INTENT(OUT):: k1d_out
179 !
180 !* 0.2 Declarations of local variables
181 ! -------------------------------
182 !
183 INTEGER :: ji ! loop counter
184 REAL(KIND=JPRB) :: zhook_handle
185 !
186 !-------------------------------------------------------------------------------
187 !
188 !
189 IF (lhook) CALL dr_hook('MODI_PACK_SAME_RANK:PACK_SAME_RANK_FROM1DI',0,zhook_handle)
190 !cdir nodep
191 DO ji=1,SIZE(k1d_out,1)
192  k1d_out(ji) = k1d_in(km(ji))
193 ENDDO
194 IF (lhook) CALL dr_hook('MODI_PACK_SAME_RANK:PACK_SAME_RANK_FROM1DI',1,zhook_handle)
195 !
196 !-------------------------------------------------------------------------------
197 !
198 END SUBROUTINE pack_same_rank_from1di
199 !
200 ! ##############################################
201  SUBROUTINE pack_same_rank_from2di(KM,K2D_IN,K2D_OUT)
202 ! ##############################################
203 !
204 !!**** *PACK_SAME_RANK* - extract the defined data from a 2D field into a 2D field
205 !!
206 !! PURPOSE
207 !! -------
208 !!
209 !!** METHOD
210 !! ------
211 !!
212 !! EXTERNAL
213 !! --------
214 !!
215 !!
216 !! IMPLICIT ARGUMENTS
217 !! ------------------
218 !!
219 !! REFERENCE
220 !! ---------
221 !!
222 !!
223 !! AUTHOR
224 !! ------
225 !! F. Habets *Meteo France*
226 !!
227 !! MODIFICATIONS
228 !! -------------
229 !! Original 08/03
230 !-------------------------------------------------------------------------------
231 !
232 !* 0. DECLARATIONS
233 ! ------------
234 !
235 USE yomhook ,ONLY : lhook, dr_hook
236 USE parkind1 ,ONLY : jprb
237 !
238 IMPLICIT NONE
239 !
240 !* 0.1 Declarations of arguments
241 ! -------------------------
242 !
243 INTEGER, DIMENSION(:), INTENT(IN) :: km
244 INTEGER, DIMENSION(:,:), INTENT(IN) :: k2d_in
245 INTEGER, DIMENSION(:,:), INTENT(OUT):: k2d_out
246 !
247 !* 0.2 Declarations of local variables
248 ! -------------------------------
249 !
250 INTEGER :: ji, jj ! loop counter
251 REAL(KIND=JPRB) :: zhook_handle
252 !
253 !-------------------------------------------------------------------------------
254 !
255 !
256 IF (lhook) CALL dr_hook('MODI_PACK_SAME_RANK:PACK_SAME_RANK_FROM2DI',0,zhook_handle)
257 DO jj=1,SIZE(k2d_out,2)
258 !cdir nodep
259  DO ji=1,SIZE(k2d_out,1)
260  k2d_out(ji,jj) = k2d_in(km(ji),jj)
261  ENDDO
262 ENDDO
263 IF (lhook) CALL dr_hook('MODI_PACK_SAME_RANK:PACK_SAME_RANK_FROM2DI',1,zhook_handle)
264 !
265 !-------------------------------------------------------------------------------
266 !
267 END SUBROUTINE pack_same_rank_from2di
268 !
269 ! ##############################################
270  SUBROUTINE pack_same_rank_from1dl(KM,O1D_IN,O1D_OUT)
271 ! ##############################################
272 !
273 !!**** *PACK_SAME_RANK* - extract the defined data from a 1D field into a 1D field of lower rank
274 !!
275 !! PURPOSE
276 !! -------
277 !!
278 !!** METHOD
279 !! ------
280 !!
281 !! EXTERNAL
282 !! --------
283 !!
284 !!
285 !! IMPLICIT ARGUMENTS
286 !! ------------------
287 !!
288 !! REFERENCE
289 !! ---------
290 !!
291 !!
292 !! AUTHOR
293 !! ------
294 !! F. Habets *Meteo France*
295 !!
296 !! MODIFICATIONS
297 !! -------------
298 !! Original 08/03
299 !-------------------------------------------------------------------------------
300 !
301 !* 0. DECLARATIONS
302 ! ------------
303 !
304 USE yomhook ,ONLY : lhook, dr_hook
305 USE parkind1 ,ONLY : jprb
306 !
307 IMPLICIT NONE
308 !
309 !* 0.1 Declarations of arguments
310 ! -------------------------
311 !
312 INTEGER, DIMENSION(:), INTENT(IN) :: km
313 LOGICAL, DIMENSION(:), INTENT(IN) :: o1d_in
314 LOGICAL, DIMENSION(:), INTENT(OUT):: o1d_out
315 !
316 !* 0.2 Declarations of local variables
317 ! -------------------------------
318 !
319 INTEGER :: ji ! loop counter
320 REAL(KIND=JPRB) :: zhook_handle
321 !
322 !-------------------------------------------------------------------------------
323 !
324 !
325 IF (lhook) CALL dr_hook('MODI_PACK_SAME_RANK:PACK_SAME_RANK_FROM1DL',0,zhook_handle)
326 !cdir nodep
327 DO ji=1,SIZE(o1d_out,1)
328  o1d_out(ji) = o1d_in(km(ji))
329 ENDDO
330 IF (lhook) CALL dr_hook('MODI_PACK_SAME_RANK:PACK_SAME_RANK_FROM1DL',1,zhook_handle)
331 !
332 !-------------------------------------------------------------------------------
333 !
334 END SUBROUTINE pack_same_rank_from1dl
335 !
336 !
337 ! ##############################################
338  SUBROUTINE pack_same_rank_from2d(KM,P2D_IN,P2D_OUT)
339 ! ##############################################
340 !
341 !!**** *PACK_SAME_RANK* - extract the defined data from a 2D field into a 2D field
342 !!
343 !! PURPOSE
344 !! -------
345 !!
346 !!** METHOD
347 !! ------
348 !!
349 !! EXTERNAL
350 !! --------
351 !!
352 !!
353 !! IMPLICIT ARGUMENTS
354 !! ------------------
355 !!
356 !! REFERENCE
357 !! ---------
358 !!
359 !!
360 !! AUTHOR
361 !! ------
362 !! F. Habets *Meteo France*
363 !!
364 !! MODIFICATIONS
365 !! -------------
366 !! Original 08/03
367 !-------------------------------------------------------------------------------
368 !
369 !* 0. DECLARATIONS
370 ! ------------
371 !
372 USE yomhook ,ONLY : lhook, dr_hook
373 USE parkind1 ,ONLY : jprb
374 !
375 IMPLICIT NONE
376 !
377 !* 0.1 Declarations of arguments
378 ! -------------------------
379 !
380 INTEGER, DIMENSION(:), INTENT(IN) :: km
381 REAL, DIMENSION(:,:), INTENT(IN) :: p2d_in
382 REAL, DIMENSION(:,:), INTENT(OUT):: p2d_out
383 !
384 !* 0.2 Declarations of local variables
385 ! -------------------------------
386 !
387 INTEGER :: ji, jj ! loop counter
388 REAL(KIND=JPRB) :: zhook_handle
389 !
390 !-------------------------------------------------------------------------------
391 !
392 !
393 IF (lhook) CALL dr_hook('MODI_PACK_SAME_RANK:PACK_SAME_RANK_FROM2D',0,zhook_handle)
394 DO jj=1,SIZE(p2d_out,2)
395 !cdir nodep
396  DO ji=1,SIZE(p2d_out,1)
397  p2d_out(ji,jj) = p2d_in(km(ji),jj)
398  ENDDO
399 ENDDO
400 IF (lhook) CALL dr_hook('MODI_PACK_SAME_RANK:PACK_SAME_RANK_FROM2D',1,zhook_handle)
401 !
402 !-------------------------------------------------------------------------------
403 !
404 END SUBROUTINE pack_same_rank_from2d
405 !
406 !-------------------------------------------------------------------------------
407 !-------------------------------------------------------------------------------
408 ! ##############################################
409  SUBROUTINE pack_same_rank_from3d(KM,P3D_IN,P3D_OUT)
410 ! ##############################################
411 !
412 !!**** *PACK_SAME_RANK* - extract the defined data from a 3D field into a 3D field
413 !!
414 !! PURPOSE
415 !! -------
416 !!
417 !!** METHOD
418 !! ------
419 !!
420 !! EXTERNAL
421 !! --------
422 !!
423 !!
424 !! IMPLICIT ARGUMENTS
425 !! ------------------
426 !!
427 !! REFERENCE
428 !! ---------
429 !!
430 !!
431 !! AUTHOR
432 !! ------
433 !! F. Habets *Meteo France*
434 !!
435 !! MODIFICATIONS
436 !! -------------
437 !! Original 08/03
438 !-------------------------------------------------------------------------------
439 !
440 !* 0. DECLARATIONS
441 ! ------------
442 !
443 USE yomhook ,ONLY : lhook, dr_hook
444 USE parkind1 ,ONLY : jprb
445 !
446 IMPLICIT NONE
447 !
448 !* 0.1 Declarations of arguments
449 ! -------------------------
450 !
451 INTEGER, DIMENSION(:), INTENT(IN) :: km
452 REAL, DIMENSION(:,:,:), INTENT(IN) :: p3d_in
453 REAL, DIMENSION(:,:,:), INTENT(OUT):: p3d_out
454 !
455 !* 0.2 Declarations of local variables
456 ! -------------------------------
457 !
458 INTEGER :: ji, jj, jk ! loop counter
459 REAL(KIND=JPRB) :: zhook_handle
460 !
461 !-------------------------------------------------------------------------------
462 !
463 IF (lhook) CALL dr_hook('MODI_PACK_SAME_RANK:PACK_SAME_RANK_FROM3D',0,zhook_handle)
464 DO jk=1,SIZE(p3d_out,3)
465  DO jj=1,SIZE(p3d_out,2)
466 !cdir nodep
467  DO ji=1,SIZE(p3d_out,1)
468  p3d_out(ji,jj,jk) = p3d_in(km(ji),jj,jk)
469  ENDDO
470  ENDDO
471 ENDDO
472 IF (lhook) CALL dr_hook('MODI_PACK_SAME_RANK:PACK_SAME_RANK_FROM3D',1,zhook_handle)
473 !
474 !-------------------------------------------------------------------------------
475 !
476 END SUBROUTINE pack_same_rank_from3d
477 !
478 !-------------------------------------------------------------------------------
479 !-------------------------------------------------------------------------------
480 ! ##############################################
481  SUBROUTINE pack_same_rank_from4d(KM,P4D_IN,P4D_OUT)
482 ! ##############################################
483 !
484 !!**** *PACK_SAME_RANK* - extract the defined data from a 4D field into a 4D field
485 !!
486 !! PURPOSE
487 !! -------
488 !!
489 !!** METHOD
490 !! ------
491 !!
492 !! EXTERNAL
493 !! --------
494 !!
495 !!
496 !! IMPLICIT ARGUMENTS
497 !! ------------------
498 !!
499 !! REFERENCE
500 !! ---------
501 !!
502 !!
503 !! AUTHOR
504 !! ------
505 !! F. Habets *Meteo France*
506 !!
507 !! MODIFICATIONS
508 !! -------------
509 !! Original 08/03
510 !-------------------------------------------------------------------------------
511 !
512 !* 0. DECLARATIONS
513 ! ------------
514 !
515 USE yomhook ,ONLY : lhook, dr_hook
516 USE parkind1 ,ONLY : jprb
517 !
518 IMPLICIT NONE
519 !
520 !* 0.1 Declarations of arguments
521 ! -------------------------
522 !
523 INTEGER, DIMENSION(:), INTENT(IN) :: km
524 REAL, DIMENSION(:,:,:,:), INTENT(IN) :: p4d_in
525 REAL, DIMENSION(:,:,:,:), INTENT(OUT):: p4d_out
526 !
527 !* 0.2 Declarations of local variables
528 ! -------------------------------
529 !
530 !
531 INTEGER :: ji, jj, jk, jl ! loop counter
532 REAL(KIND=JPRB) :: zhook_handle
533 !
534 !-------------------------------------------------------------------------------
535 !
536 IF (lhook) CALL dr_hook('MODI_PACK_SAME_RANK:PACK_SAME_RANK_FROM4D',0,zhook_handle)
537 DO jl=1,SIZE(p4d_out,4)
538  DO jk=1,SIZE(p4d_out,3)
539  DO jj=1,SIZE(p4d_out,2)
540 !cdir nodep
541  DO ji=1,SIZE(p4d_out,1)
542  p4d_out(ji,jj,jl,jk) = p4d_in(km(ji),jj,jl,jk)
543  ENDDO
544  ENDDO
545  ENDDO
546 ENDDO
547 IF (lhook) CALL dr_hook('MODI_PACK_SAME_RANK:PACK_SAME_RANK_FROM4D',1,zhook_handle)
548 !
549 !-------------------------------------------------------------------------------
550 !
551 END SUBROUTINE pack_same_rank_from4d
subroutine pack_same_rank_from1di(KM, K1D_IN, K1D_OUT)
subroutine pack_same_rank_from1d(KM, P1D_IN, P1D_OUT)
subroutine pack_same_rank_from1dl(KM, O1D_IN, O1D_OUT)
subroutine pack_same_rank_from2d(KM, P2D_IN, P2D_OUT)
subroutine pack_same_rank_from4d(KM, P4D_IN, P4D_OUT)
subroutine pack_same_rank_from2di(KM, K2D_IN, K2D_OUT)
subroutine pack_same_rank_from3d(KM, P3D_IN, P3D_OUT)