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