SURFEX  V8_0
Surfex V8_0 release
 All Classes Files Functions Variables
mode_fasurfex.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.
6 !
7  INTERFACE faecr
8  MODULE PROCEDURE faecr_i
9  MODULE PROCEDURE faecr_r
10  MODULE PROCEDURE faecr_l
11  MODULE PROCEDURE faecr_c
12  MODULE PROCEDURE faecr_i_d
13  MODULE PROCEDURE faecr_r_d
14  MODULE PROCEDURE faecr_l_d
15  END INTERFACE
16 !
17  INTERFACE falit
18  MODULE PROCEDURE falit_i
19  MODULE PROCEDURE falit_r
20  MODULE PROCEDURE falit_l
21  MODULE PROCEDURE falit_c
22  MODULE PROCEDURE falit_i_d
23  MODULE PROCEDURE falit_r_d
24  MODULE PROCEDURE falit_l_d
25  END INTERFACE
26 !
27  CONTAINS
28 !
29 ! #############################################################
30  SUBROUTINE faecr_i(KREP,KN,CNOMC,KDATA)
31 ! #############################################################
32 !
33  USE yomhook ,ONLY : lhook, dr_hook
34  USE parkind1 ,ONLY : jprb
35 !
36  IMPLICIT NONE
37 !
38  INTEGER,INTENT(INOUT) :: krep
39  INTEGER,INTENT(IN) :: kn
40  CHARACTER(LEN=18),INTENT(IN) :: cnomc
41  INTEGER,INTENT(IN) :: kdata
42 !
43  REAL(KIND=8), DIMENSION(1) :: zdonne
44  INTEGER :: il
45  REAL(KIND=JPRB) :: zhook_handle
46 !
47 !-------------------------------------------------------------------------------
48  IF (lhook) CALL dr_hook('MODE_FASURFEX:FAECR_I',0,zhook_handle)
49 !
50  zdonne(1)=REAL(kdata,8)
51  il=SIZE(zdonne)
52  CALL faisan(krep,kn,cnomc,zdonne,il)
53 !
54  IF (lhook) CALL dr_hook('MODE_FASURFEX:FAECR_I',1,zhook_handle)
55 !-------------------------------------------------------------------------------
56 !
57  END SUBROUTINE faecr_i
58 !
59 ! #############################################################
60  SUBROUTINE faecr_i_d(KREP,KN,CNOMC,KSIZE,KDATA)
61 ! #############################################################
62 !
63  USE yomhook ,ONLY : lhook, dr_hook
64  USE parkind1 ,ONLY : jprb
65 !
66  IMPLICIT NONE
67 !
68  INTEGER,INTENT(INOUT) :: krep
69  INTEGER,INTENT(IN) :: kn
70  CHARACTER(LEN=18),INTENT(IN) :: cnomc
71  INTEGER,INTENT(IN) :: ksize
72  INTEGER,DIMENSION(KSIZE),INTENT(IN):: kdata
73 !
74  REAL(KIND=8),DIMENSION(KSIZE) :: zdonne
75  INTEGER :: i
76  REAL(KIND=JPRB) :: zhook_handle
77 !
78 !-------------------------------------------------------------------------------
79  IF (lhook) CALL dr_hook('MODE_FASURFEX:FAECR_I_D',0,zhook_handle)
80 !
81  DO i=1,ksize
82  zdonne(i)=REAL(KDATA(I),8)
83  END DO
84  CALL faisan(krep,kn,cnomc,zdonne,ksize)
85 !
86  IF (lhook) CALL dr_hook('MODE_FASURFEX:FAECR_I_D',1,zhook_handle)
87 !-------------------------------------------------------------------------------
88 !
89  END SUBROUTINE faecr_i_d
90 
91 ! #############################################################
92  SUBROUTINE faecr_r(KREP,KN,CNOMC,PDATA)
93 ! #############################################################
94 !
95  USE yomhook ,ONLY : lhook, dr_hook
96  USE parkind1 ,ONLY : jprb
97 !
98  IMPLICIT NONE
99 !
100  INTEGER,INTENT(INOUT) :: krep
101  INTEGER,INTENT(IN) :: kn
102  CHARACTER(LEN=18),INTENT(IN) :: cnomc
103  REAL,INTENT(IN) :: pdata
104 !
105  REAL(KIND=8), DIMENSION(1) :: zdonne
106  INTEGER :: il
107  REAL(KIND=JPRB) :: zhook_handle
108 !
109 !-------------------------------------------------------------------------------
110  IF (lhook) CALL dr_hook('MODE_FASURFEX:FAECR_R',0,zhook_handle)
111 !
112  zdonne(1)=REAL(pdata,8)
113  il=SIZE(zdonne)
114  CALL faisan(krep,kn,cnomc,zdonne,il)
115 !
116  IF (lhook) CALL dr_hook('MODE_FASURFEX:FAECR_R',1,zhook_handle)
117 !-------------------------------------------------------------------------------
118 !
119  END SUBROUTINE faecr_r
120 !
121 ! #############################################################
122  SUBROUTINE faecr_r_d(KREP,KN,CNOMC,KSIZE,PDATA)
123 ! #############################################################
124 !
125  USE yomhook ,ONLY : lhook, dr_hook
126  USE parkind1 ,ONLY : jprb
127 !
128  IMPLICIT NONE
129 !
130  INTEGER,INTENT(INOUT) :: krep
131  INTEGER,INTENT(IN) :: kn
132  CHARACTER(LEN=18),INTENT(IN) :: cnomc
133  INTEGER,INTENT(IN) :: ksize
134  REAL,DIMENSION(KSIZE),INTENT(IN) :: pdata
135 !
136  REAL(KIND=8),DIMENSION(KSIZE) :: zdonne
137  INTEGER :: i
138  REAL(KIND=JPRB) :: zhook_handle
139 !
140 !-------------------------------------------------------------------------------
141  IF (lhook) CALL dr_hook('MODE_FASURFEX:FAECR_R_D',0,zhook_handle)
142 !
143  DO i=1,ksize
144  zdonne(i)=REAL(PDATA(I),8)
145  END DO
146  CALL faisan(krep,kn,cnomc,zdonne,ksize)
147 !
148  IF (lhook) CALL dr_hook('MODE_FASURFEX:FAECR_R_D',1,zhook_handle)
149 !-------------------------------------------------------------------------------
150 !
151  END SUBROUTINE faecr_r_d
152 !
153 ! #############################################################
154  SUBROUTINE faecr_l(KREP,KN,CNOMC,LDATA)
155 ! #############################################################
156 !
157  USE yomhook ,ONLY : lhook, dr_hook
158  USE parkind1 ,ONLY : jprb
159 !
160  IMPLICIT NONE
161 !
162  INTEGER,INTENT(INOUT) :: krep
163  INTEGER,INTENT(IN) :: kn
164  CHARACTER(LEN=18),INTENT(IN) :: cnomc
165  LOGICAL,INTENT(IN) :: ldata
166 !
167  REAL(KIND=8),DIMENSION(1) :: zdonne
168  INTEGER :: il
169  REAL(KIND=JPRB) :: zhook_handle
170 !
171 !-------------------------------------------------------------------------------
172  IF (lhook) CALL dr_hook('MODE_FASURFEX:FAECR_L',0,zhook_handle)
173 !
174  IF (ldata) THEN
175  zdonne(1)=1.
176  ELSE
177  zdonne(1)=0.
178  ENDIF
179  il=SIZE(zdonne)
180  CALL faisan(krep,kn,cnomc,zdonne,il)
181 !
182  IF (lhook) CALL dr_hook('MODE_FASURFEX:FAECR_L',1,zhook_handle)
183 !-------------------------------------------------------------------------------
184 !
185  END SUBROUTINE faecr_l
186 !
187 ! #############################################################
188  SUBROUTINE faecr_l_d(KREP,KN,CNOMC,KSIZE,LDATA)
189 ! #############################################################
190 !
191  USE yomhook ,ONLY : lhook, dr_hook
192  USE parkind1 ,ONLY : jprb
193 !
194  IMPLICIT NONE
195 !
196  INTEGER,INTENT(INOUT) :: krep
197  INTEGER,INTENT(IN) :: kn
198  CHARACTER(LEN=18),INTENT(IN) :: cnomc
199  INTEGER,INTENT(IN) :: ksize
200  LOGICAL,DIMENSION(KSIZE),INTENT(IN) :: ldata
201 !
202  REAL(KIND=8),DIMENSION(KSIZE) :: zdonne
203  INTEGER :: i
204  REAL(KIND=JPRB) :: zhook_handle
205 !
206 !-------------------------------------------------------------------------------
207  IF (lhook) CALL dr_hook('MODE_FASURFEX:FAECR_L_D',0,zhook_handle)
208 !
209  DO i=1,ksize
210  IF (ldata(i)) THEN
211  zdonne(i)=1.
212  ELSE
213  zdonne(i)=0.
214  ENDIF
215  END DO
216  CALL faisan(krep,kn,cnomc,zdonne,ksize)
217 !
218  IF (lhook) CALL dr_hook('MODE_FASURFEX:FAECR_L_D',1,zhook_handle)
219 !-------------------------------------------------------------------------------
220 !
221  END SUBROUTINE faecr_l_d
222 !
223 ! #############################################################
224  SUBROUTINE faecr_c(KREP,KN,CNOMC,KSIZE,CDATA)
225 ! #############################################################
226 !
227  USE yomhook ,ONLY : lhook, dr_hook
228  USE parkind1 ,ONLY : jprb
229 !
230  IMPLICIT NONE
231 !
232  INTEGER,INTENT(INOUT) :: krep
233  INTEGER,INTENT(IN) :: kn
234  CHARACTER(LEN=18),INTENT(IN) :: cnomc
235  INTEGER,INTENT(IN) :: ksize
236  CHARACTER,DIMENSION(KSIZE),INTENT(IN) :: cdata
237 !
238  REAL(KIND=8),DIMENSION(KSIZE) :: zdonne
239  INTEGER :: i
240  REAL(KIND=JPRB) :: zhook_handle
241 !
242 !-------------------------------------------------------------------------------
243  IF (lhook) CALL dr_hook('MODE_FASURFEX:FAECR_C',0,zhook_handle)
244 !
245  DO i=1,ksize
246  zdonne(i)=REAL(ICHAR(CDATA(I)),8)
247  END DO
248  CALL faisan(krep,kn,cnomc,zdonne,ksize)
249 !
250  IF (lhook) CALL dr_hook('MODE_FASURFEX:FAECR_C',1,zhook_handle)
251 !-------------------------------------------------------------------------------
252 !
253  END SUBROUTINE faecr_c
254 !
255 ! #############################################################
256  SUBROUTINE falit_i_d(KREP,KN,CNOMC,KSIZE,KDATA)
257 ! #############################################################
258 !
259  USE yomhook ,ONLY : lhook, dr_hook
260  USE parkind1 ,ONLY : jprb
261 !
262  IMPLICIT NONE
263 !
264  INTEGER,INTENT(INOUT) :: krep
265  INTEGER,INTENT(IN) :: kn
266  CHARACTER(LEN=18),INTENT(IN) :: cnomc
267  INTEGER,INTENT(IN) :: ksize
268  INTEGER,DIMENSION(KSIZE),INTENT(OUT) :: kdata
269 !
270  REAL(KIND=8),DIMENSION(KSIZE) :: zdonne
271  INTEGER :: i
272  REAL(KIND=JPRB) :: zhook_handle
273 !
274 !-------------------------------------------------------------------------------
275  IF (lhook) CALL dr_hook('MODE_FASURFEX:FALIT_I_D',0,zhook_handle)
276 !
277  CALL falais(krep,kn,cnomc,zdonne,ksize)
278  DO i=1,ksize
279  kdata(i)=anint(zdonne(i),kind(kdata))
280  END DO
281 !
282  IF (lhook) CALL dr_hook('MODE_FASURFEX:FALIT_I_D',1,zhook_handle)
283 !-------------------------------------------------------------------------------
284 !
285  END SUBROUTINE falit_i_d
286 !
287 ! #############################################################
288  SUBROUTINE falit_i(KREP,KN,CNOMC,KDATA)
289 ! #############################################################
290 !
291  USE yomhook ,ONLY : lhook, dr_hook
292  USE parkind1 ,ONLY : jprb
293 !
294  IMPLICIT NONE
295 !
296  INTEGER,INTENT(INOUT) :: krep
297  INTEGER,INTENT(IN) :: kn
298  CHARACTER(LEN=18),INTENT(IN) :: cnomc
299  INTEGER,INTENT(OUT) :: kdata
300 !
301  REAL(KIND=8), DIMENSION(1) :: zdonne
302  INTEGER :: il
303  REAL(KIND=JPRB) :: zhook_handle
304 !
305 !-------------------------------------------------------------------------------
306  IF (lhook) CALL dr_hook('MODE_FASURFEX:FALIT_I',0,zhook_handle)
307 !
308  il=SIZE(zdonne)
309  CALL falais(krep,kn,cnomc,zdonne,il)
310  kdata=anint(zdonne(1),kind(kdata))
311 !
312  IF (lhook) CALL dr_hook('MODE_FASURFEX:FALIT_I',1,zhook_handle)
313 !-------------------------------------------------------------------------------
314 !
315  END SUBROUTINE falit_i
316 !
317 ! #############################################################
318  SUBROUTINE falit_r_d(KREP,KN,CNOMC,KSIZE,PDATA)
319 ! #############################################################
320 !
321  USE yomhook ,ONLY : lhook, dr_hook
322  USE parkind1 ,ONLY : jprb
323 !
324  IMPLICIT NONE
325 !
326  INTEGER,INTENT(INOUT) :: krep
327  INTEGER,INTENT(IN) :: kn
328  CHARACTER(LEN=18),INTENT(IN) :: cnomc
329  INTEGER,INTENT(IN) :: ksize
330  REAL,DIMENSION(KSIZE),INTENT(OUT) :: pdata
331 !
332  REAL(KIND=8),DIMENSION(KSIZE) :: zdonne
333  INTEGER :: i
334  REAL(KIND=JPRB) :: zhook_handle
335 !
336 !-------------------------------------------------------------------------------
337  IF (lhook) CALL dr_hook('MODE_FASURFEX:FALIT_R_D',0,zhook_handle)
338 !
339  CALL falais(krep,kn,cnomc,zdonne,ksize)
340  DO i=1,ksize
341  pdata(i)=REAL(ZDONNE(I),kind(pdata))
342  END DO
343 !
344  IF (lhook) CALL dr_hook('MODE_FASURFEX:FALIT_R_D',1,zhook_handle)
345 !-------------------------------------------------------------------------------
346 !
347  END SUBROUTINE falit_r_d
348 !
349 ! #############################################################
350  SUBROUTINE falit_r(KREP,KN,CNOMC,PDATA)
351 ! #############################################################
352 !
353  USE yomhook ,ONLY : lhook, dr_hook
354  USE parkind1 ,ONLY : jprb
355 !
356  IMPLICIT NONE
357 !
358  INTEGER,INTENT(INOUT) :: krep
359  INTEGER,INTENT(IN) :: kn
360  CHARACTER(LEN=18),INTENT(IN) :: cnomc
361  REAL,INTENT(OUT) :: pdata
362 !
363  REAL(KIND=8), DIMENSION(1) :: zdonne
364  INTEGER :: il
365  REAL(KIND=JPRB) :: zhook_handle
366 !
367 !-------------------------------------------------------------------------------
368  IF (lhook) CALL dr_hook('MODE_FASURFEX:FALIT_R',0,zhook_handle)
369 !
370  il=SIZE(zdonne)
371  CALL falais(krep,kn,cnomc,zdonne,il)
372  pdata=REAL(ZDONNE(1),kind(pdata))
373 !
374  IF (lhook) CALL dr_hook('MODE_FASURFEX:FALIT_R',1,zhook_handle)
375 !-------------------------------------------------------------------------------
376 !
377  END SUBROUTINE falit_r
378 !
379 ! #############################################################
380  SUBROUTINE falit_l_d(KREP,KN,CNOMC,KSIZE,LDATA)
381 ! #############################################################
382 !
383  USE yomhook ,ONLY : lhook, dr_hook
384  USE parkind1 ,ONLY : jprb
385 !
386  IMPLICIT NONE
387 !
388  INTEGER,INTENT(INOUT) :: krep
389  INTEGER,INTENT(IN) :: kn
390  CHARACTER(LEN=18),INTENT(IN) :: cnomc
391  INTEGER,INTENT(IN) :: ksize
392  LOGICAL,DIMENSION(KSIZE),INTENT(OUT) :: ldata
393 !
394  REAL(KIND=8),DIMENSION(KSIZE) :: zdonne
395  INTEGER :: i
396  REAL(KIND=JPRB) :: zhook_handle
397 !
398 !-------------------------------------------------------------------------------
399  IF (lhook) CALL dr_hook('MODE_FASURFEX:FALIT_L_D',0,zhook_handle)
400 !
401  CALL falais(krep,kn,cnomc,zdonne,ksize)
402  DO i=1,ksize
403  ldata(i)=LOGICAL(zdonne(i)==1.,kind(ldata))
404  END DO
405 !
406  IF (lhook) CALL dr_hook('MODE_FASURFEX:FALIT_L_D',1,zhook_handle)
407 !-------------------------------------------------------------------------------
408 !
409  END SUBROUTINE falit_l_d
410 !
411 ! #############################################################
412  SUBROUTINE falit_l(KREP,KN,CNOMC,LDATA)
413 ! #############################################################
414 !
415  USE yomhook ,ONLY : lhook, dr_hook
416  USE parkind1 ,ONLY : jprb
417 !
418  IMPLICIT NONE
419 !
420  INTEGER,INTENT(INOUT) :: krep
421 !
422  INTEGER,INTENT(IN) :: kn
423  CHARACTER(LEN=18),INTENT(IN) :: cnomc
424  LOGICAL,INTENT(OUT) :: ldata
425 !
426  REAL(KIND=8), DIMENSION(1) :: zdonne
427  INTEGER :: il
428  REAL(KIND=JPRB) :: zhook_handle
429 !
430 !-------------------------------------------------------------------------------
431  IF (lhook) CALL dr_hook('MODE_FASURFEX:FALIT_L',0,zhook_handle)
432 !
433  il=SIZE(zdonne)
434  CALL falais(krep,kn,cnomc,zdonne,il)
435  ldata=LOGICAL(zdonne(1)==1.,kind(ldata))
436 !
437  IF (lhook) CALL dr_hook('MODE_FASURFEX:FALIT_L',1,zhook_handle)
438 !-------------------------------------------------------------------------------
439 !
440  END SUBROUTINE falit_l
441 !
442 ! #############################################################
443  SUBROUTINE falit_c(KREP,KN,CNOMC,KSIZE,CDATA)
444 ! #############################################################
445 !
446  USE yomhook ,ONLY : lhook, dr_hook
447  USE parkind1 ,ONLY : jprb
448 !
449  IMPLICIT NONE
450 !
451  INTEGER,INTENT(INOUT) :: krep
452  INTEGER,INTENT(IN) :: kn
453  CHARACTER(LEN=18),INTENT(IN) :: cnomc
454  INTEGER,INTENT(IN) :: ksize
455  CHARACTER,DIMENSION(KSIZE),INTENT(OUT) :: cdata
456 !
457  REAL(KIND=8),DIMENSION(KSIZE) :: zdonne
458  INTEGER :: i,j
459  REAL(KIND=JPRB) :: zhook_handle
460 !
461 !-------------------------------------------------------------------------------
462  IF (lhook) CALL dr_hook('MODE_FASURFEX:FALIT_C',0,zhook_handle)
463 !
464  CALL falais(krep,kn,cnomc,zdonne,ksize)
465  DO i=1,ksize
466  j=anint(zdonne(i))
467  cdata(i)=char(j)
468  END DO
469 !
470  IF (lhook) CALL dr_hook('MODE_FASURFEX:FALIT_C',1,zhook_handle)
471 !-------------------------------------------------------------------------------
472 !
473  END SUBROUTINE falit_c
474 !
475 !-------------------------------------------------------------------------------
476 !-------------------------------------------------------------------------------
477 !
478 END MODULE mode_fasurfex
479 
480 
subroutine faecr_r_d(KREP, KN, CNOMC, KSIZE, PDATA)
subroutine faecr_r(KREP, KN, CNOMC, PDATA)
subroutine falit_i(KREP, KN, CNOMC, KDATA)
subroutine falit_r_d(KREP, KN, CNOMC, KSIZE, PDATA)
subroutine faecr_c(KREP, KN, CNOMC, KSIZE, CDATA)
subroutine falit_l_d(KREP, KN, CNOMC, KSIZE, LDATA)
subroutine faecr_i_d(KREP, KN, CNOMC, KSIZE, KDATA)
subroutine faecr_l_d(KREP, KN, CNOMC, KSIZE, LDATA)
subroutine falit_i_d(KREP, KN, CNOMC, KSIZE, KDATA)
subroutine falit_c(KREP, KN, CNOMC, KSIZE, CDATA)
subroutine falit_r(KREP, KN, CNOMC, PDATA)
subroutine faecr_l(KREP, KN, CNOMC, LDATA)
subroutine falit_l(KREP, KN, CNOMC, LDATA)
subroutine faecr_i(KREP, KN, CNOMC, KDATA)