SURFEX v8.1
General documentation of Surfex
falgra.h
Go to the documentation of this file.
1 LOGICAL FUNCTION FALGRA (KNGRIB)
2 !****
3 ! Cette fonction renvoie une valeur vraie si la methode d'encodage passee en argument fait appel a grib_api
4 !**
5 ! Arguments : KNGRIB (Entree) ==> Methode d'encodage
6 !
7 !
8 INTEGER (KIND=JPLIKB) KNGRIB
9 INTEGER (KIND=JPLIKB) INGRIB_SP, INGRIB_GP
10 LOGICAL LLFALGRA_SP, LLFALGRA_GP
11 
12 FALGRA = .FALSE.
13 
14 IF (100 <= KNGRIB .AND. KNGRIB <= 200) THEN
15 
16  INGRIB_SP = FALGRA_SP (KNGRIB)
17  INGRIB_GP = FALGRA_GP (KNGRIB)
18 
19  LLFALGRA_SP = &
20  & (INGRIB_SP - 100 == 1) .OR. & ! GRIB2 complex packing
21  & (INGRIB_SP - 100 == 2) ! GRIB0
22 
23  LLFALGRA_GP = &
24  & ((INGRIB_GP-100) / 20 == 1) .OR. & ! GRIB2 simple packing
25  & ((INGRIB_GP-100) / 20 == 2) .OR. & ! GRIB2 second order packing
26  & ((INGRIB_GP-100) / 20 == 3) .OR. & ! GRIB1 simple packing
27  & ((INGRIB_GP-100) / 20 == 4) .OR. & ! GRIB1 second order packing
28  & ((INGRIB_GP-100) / 20 == 5) ! GRIB2 complex packing
29 
30 
31  IF (LLFALGRA_GP .AND. LLFALGRA_SP) THEN
32  FALGRA = .TRUE.
33  ELSEIF (LLFALGRA_GP) THEN
34  FALGRA = INGRIB_SP == 100
35  ELSEIF (LLFALGRA_SP) THEN
36  FALGRA = INGRIB_GP == 100
37  ENDIF
38 
39 ENDIF
40 
41 END FUNCTION FALGRA
42 
43 INTEGER (KIND=JPLIKB) FUNCTION FALGRA_SP (KNGRIB)
44 INTEGER (KIND=JPLIKB) KNGRIB
45 FALGRA_SP = 100+MODULO ((KNGRIB-100),20)
46 END FUNCTION FALGRA_SP
47 
48 INTEGER (KIND=JPLIKB) FUNCTION FALGRA_GP (KNGRIB)
49 INTEGER (KIND=JPLIKB) KNGRIB
50 FALGRA_GP = 100+20*((KNGRIB-100)/20)
51 END FUNCTION FALGRA_GP
52 
53 INTEGER (KIND=JPLIKB) FUNCTION FALGRA_ED (KNGRIB)
54 INTEGER (KIND=JPLIKB) KNGRIB
55 
56 SELECT CASE (KNGRIB)
57  CASE (160, 180)
58  FALGRA_ED = 1
59  CASE DEFAULT
60  FALGRA_ED = 2
61 END SELECT
62 
63 END FUNCTION FALGRA_ED
64 
INTERFACE SUBROUTINE JPRB IMPLICIT NONE INTEGER(KIND=JPIM)
!define ISRCHFLTPV_N !define ISRCHFLTPV_N ISRCHFLTPV_NBITER IF(ISRCHFLTPV_ARRAY(1+ISRCHFLTPV_INC *(ISRCHFLTPV_I-1)).LT.ISRCHFLTPV_TARGET) THEN IF(ISRCHFLTPV_ARRAY(1+ISRCHFLTPV_INC *(ISRCHFLTPV_I)).LT.ISRCHFLTPV_TARGET) THEN IF(ISRCHFLTPV_ARRAY(1+ISRCHFLTPV_INC *(ISRCHFLTPV_I+1)).LT.ISRCHFLTPV_TARGET) THEN IF(ISRCHFLTPV_ARRAY(1+ISRCHFLTPV_INC *(ISRCHFLTPV_I+2)).LT.ISRCHFLTPV_TARGET) THEN IF(ISRCHFLTPV_ARRAY(1+ISRCHFLTPV_INC *(ISRCHFLTPV_I+3)).LT.ISRCHFLTPV_TARGET) THEN IF(ISRCHFLTPV_ARRAY(1+ISRCHFLTPV_INC *(ISRCHFLTPV_I+4)).LT.ISRCHFLTPV_TARGET) THEN IF(ISRCHFLTPV_ARRAY(1+ISRCHFLTPV_INC *(ISRCHFLTPV_I+5)).LT.ISRCHFLTPV_TARGET) THEN IF(ISRCHFLTPV_ARRAY(1+ISRCHFLTPV_INC *(ISRCHFLTPV_I+6)).LT.ISRCHFLTPV_TARGET) THEN IF(ISRCHFLTPV_ARRAY(1+ISRCHFLTPV_INC *(ISRCHFLTPV_I+7)).LT.ISRCHFLTPV_TARGET) THEN ISRCHFLTPV_RESULT
INTERFACE SUBROUTINE JPRB IMPLICIT NONE LOGICAL
Definition: dr_hook_util.h:3
double d
Definition: ieee754.h:21