SURFEX  V8_0
Surfex V8_0 release
 All Classes Files Functions Variables
unpack_same_rank2.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 ! ##########################
9 !
10  SUBROUTINE unpack_same_rank2_from1d(KM,P1D_IN,P1D_OUT,PMISS)
11 
12 INTEGER, DIMENSION(:), INTENT(IN) :: km
13 REAL, DIMENSION(:), INTENT(IN) :: p1d_in
14 REAL(KIND=4), DIMENSION(:), INTENT(OUT):: p1d_out
15 REAL, OPTIONAL, INTENT(IN) :: pmiss
16 END SUBROUTINE unpack_same_rank2_from1d
17 !
18  SUBROUTINE unpack_same_rank2_from2d(KM,P2D_IN,P2D_OUT,PMISS)
19 
20 INTEGER, DIMENSION(:), INTENT(IN) :: km
21 REAL, DIMENSION(:,:), INTENT(IN) :: p2d_in
22 REAL(KIND=4), DIMENSION(:,:), INTENT(OUT):: p2d_out
23 REAL, OPTIONAL, INTENT(IN) :: pmiss
24 !
25 END SUBROUTINE unpack_same_rank2_from2d
26 !
27 END INTERFACE
28 !
29 END MODULE modi_unpack_same_rank2
30 !
31 !
32 ! ##############################################
33  SUBROUTINE unpack_same_rank2_from1d(KM,P1D_IN,P1D_OUT,PMISS)
34 ! ##############################################
35 !
36 !!**** *UNPACK_SAME_RANK2* - extract the defined data from a 1D field into a 1D field of lower rank
37 !!
38 !! PURPOSE
39 !! -------
40 !!
41 !!** METHOD
42 !! ------
43 !!
44 !! EXTERNAL
45 !! --------
46 !!
47 !!
48 !! IMPLICIT ARGUMENTS
49 !! ------------------
50 !!
51 !! REFERENCE
52 !! ---------
53 !!
54 !!
55 !! AUTHOR
56 !! ------
57 !! F. Habets *Meteo France*
58 !!
59 !! MODIFICATIONS
60 !! -------------
61 !! Original 08/03
62 !! B. Decharme 2008 Allows to put other optional value for missval
63 !-------------------------------------------------------------------------------
64 !
65 !* 0. DECLARATIONS
66 ! ------------
67 !
68 USE modd_surf_par, ONLY : xundef
69 !
70 !
71 USE yomhook ,ONLY : lhook, dr_hook
72 USE parkind1 ,ONLY : jprb
73 !
74 IMPLICIT NONE
75 !
76 !* 0.1 Declarations of arguments
77 ! -------------------------
78 !
79 INTEGER, DIMENSION(:), INTENT(IN) :: km
80 REAL, DIMENSION(:), INTENT(IN) :: p1d_in
81 REAL(KIND=4), DIMENSION(:), INTENT(OUT):: p1d_out
82 REAL, OPTIONAL, INTENT(IN) :: pmiss
83 !
84 !* 0.2 Declarations of local variables
85 ! -------------------------------
86 !
87 INTEGER :: ji ! loop counter
88 REAL(KIND=JPRB) :: zhook_handle
89 !
90 !-------------------------------------------------------------------------------
91 !
92 IF (lhook) CALL dr_hook('MODI_UNPACK_SAME_RANK2:UNPACK_SAME_RANK2_FROM1D',0,zhook_handle)
93 IF(present(pmiss))THEN
94  p1d_out(:) = pmiss
95 ELSE
96  p1d_out(:) = xundef
97 ENDIF
98 !
99 !cdir nodep
100 DO ji=1,SIZE(p1d_in,1)
101  p1d_out(km(ji)) = p1d_in(ji)
102 ENDDO
103 IF (lhook) CALL dr_hook('MODI_UNPACK_SAME_RANK2:UNPACK_SAME_RANK2_FROM1D',1,zhook_handle)
104 !
105 !-------------------------------------------------------------------------------
106 !
107 END SUBROUTINE unpack_same_rank2_from1d
108 !
109 ! ##############################################
110  SUBROUTINE unpack_same_rank2_from2d(KM,P2D_IN,P2D_OUT,PMISS)
111 ! ##############################################
112 !
113 !!**** *UNPACK_SAME_RANK2* - extract the defined data from a 2D field into a 2D field
114 !!
115 !! PURPOSE
116 !! -------
117 !!
118 !!** METHOD
119 !! ------
120 !!
121 !! EXTERNAL
122 !! --------
123 !!
124 !!
125 !! IMPLICIT ARGUMENTS
126 !! ------------------
127 !!
128 !! REFERENCE
129 !! ---------
130 !!
131 !!
132 !! AUTHOR
133 !! ------
134 !! F. Habets *Meteo France*
135 !!
136 !! MODIFICATIONS
137 !! -------------
138 !! Original 08/03
139 !-------------------------------------------------------------------------------
140 !
141 !* 0. DECLARATIONS
142 ! ------------
143 !
144 USE modd_surf_par, ONLY : xundef
145 !
146 !
147 USE yomhook ,ONLY : lhook, dr_hook
148 USE parkind1 ,ONLY : jprb
149 !
150 IMPLICIT NONE
151 !
152 !* 0.1 Declarations of arguments
153 ! -------------------------
154 !
155 INTEGER, DIMENSION(:), INTENT(IN) :: km
156 REAL, DIMENSION(:,:), INTENT(IN) :: p2d_in
157 REAL(KIND=4), DIMENSION(:,:), INTENT(OUT):: p2d_out
158 REAL, OPTIONAL, INTENT(IN) :: pmiss
159 !
160 !* 0.2 Declarations of local variables
161 ! -------------------------------
162 !
163 INTEGER :: ji, jj ! loop counter
164 REAL(KIND=JPRB) :: zhook_handle
165 !
166 !-------------------------------------------------------------------------------
167 !
168 IF (lhook) CALL dr_hook('MODI_UNPACK_SAME_RANK2:UNPACK_SAME_RANK2_FROM2D',0,zhook_handle)
169 IF(present(pmiss))THEN
170  p2d_out(:,:) = pmiss
171 ELSE
172  p2d_out(:,:) = xundef
173 ENDIF
174 !
175 DO jj=1,SIZE(p2d_in,2)
176 !cdir nodep
177  DO ji=1,SIZE(p2d_in,1)
178  p2d_out(km(ji),jj) = p2d_in(ji,jj)
179  ENDDO
180 ENDDO
181 IF (lhook) CALL dr_hook('MODI_UNPACK_SAME_RANK2:UNPACK_SAME_RANK2_FROM2D',1,zhook_handle)
182 !
183 !-------------------------------------------------------------------------------
184 !
185 END SUBROUTINE unpack_same_rank2_from2d
186 !
subroutine unpack_same_rank2_from1d(KM, P1D_IN, P1D_OUT, PMISS)
subroutine unpack_same_rank2_from2d(KM, P2D_IN, P2D_OUT, PMISS)