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