2 & (fa, krep, krang, cdpref, knivau, cdsuff, &
3 & pchamp, ldcosp, kvalco, klongd)
12 INTEGER (KIND=JPLIKB) KREP, KRANG, KNIVAU, KLONGD, ILONGD
14 INTEGER (KIND=JPLIKB) KVALCO(*)
15 REAL (KIND=JPDBLR) PCHAMP(*)
19 CHARACTER CDPREF*(*), CDSUFF*(*)
23 REAL (KIND=JPDBLR),
ALLOCATABLE :: ZCHAMP (:)
24 INTEGER (KIND=JPLIKB) IRANGC
25 INTEGER (KIND=JPLIKB) INLATI, INXLON, IDLUXG, IDGUXG, IDZONL, IDZONG
26 INTEGER (KIND=JPLIKB) ILCHAM
27 INTEGER (KIND=JPLIKB) ICPLSIZE
28 INTEGER (KIND=JPLIKB) ILAT, ILON
29 INTEGER (KIND=JPLIKB) INIMES, INUMER
30 INTEGER (KIND=JPLIKB) ILATMIN, ILATMAX, ILONMIN, ILONMAX
32 CHARACTER(LEN=FA%JPLMES) CLMESS
33 CHARACTER(LEN=FA%JPLSPX) CLNSPR
37 type(
facadr),
POINTER :: ylcadr
38 type(
fafich),
POINTER :: ylfich
39 CHARACTER,
ALLOCATABLE :: CLGRIB (:)
40 INTEGER (KIND=JPKSIZE_T) :: ILGRIB
41 INTEGER (KIND=JPLIKM) :: IRET, IGRIBH
42 INTEGER (KIND=JPLIKB) :: IFGRIB, INBITS, IBFPDG
43 REAL (KIND=JPDBLR) :: ZUNDF, ZMAX, ZMIN
46 REAL(KIND=JPRB) :: ZHOOK_HANDLE
50 ylfich => fa%FICHIER(krang)
51 irangc = ylfich%NUCADR
52 ylcadr => fa%CADRE(irangc)
56 ibfpdg = ylfich%NBFPDG
57 ifgrib = ylfich%NFGRIB
62 ylfich%NBFPDG = ylfich%NCPLBITS
74 ilcham = inlati * inxlon
75 idluxg = ylcadr%NLOPAR (4)
76 idguxg = ylcadr%NLOPAR (6)
77 idzonl = ylcadr%NLOPAR (7)
78 idzong = ylcadr%NLOPAR (8)
80 icplsize = ylfich%NCPLSIZE
82 ALLOCATE (zchamp(ilcham))
84 ilonmin=idzonl+icplsize
85 ilonmax=idluxg-icplsize-idzonl+1
86 ilatmin=idzong+icplsize
87 ilatmax=idguxg-icplsize-idzong+1
89 zmin = minval(pchamp(1:ilcham))
90 zmax = maxval(pchamp(1:ilcham))
93 zundf = 2.0_jpdblr * zmax
94 ELSEIF (zmax < 0)
THEN 95 zundf = 0.5_jpdblr * zmax
96 ELSEIF (zmin < 0)
THEN 97 zundf = 2.0_jpdblr * zmin
98 ELSEIF (zmin > 0)
THEN 99 zundf = 0.5_jpdblr * zmin
106 IF ((ilon <= ilonmin) .OR. (ilon >= ilonmax) .OR. &
107 & (ilat <= ilatmin) .OR. (ilat >= ilatmax))
THEN 108 zchamp((ilat-1)*inxlon+ilon) = pchamp((ilat-1)*inxlon+ilon)
110 zchamp((ilat-1)*inxlon+ilon) = zundf
116 CALL facgrm_fort (fa, krep, krang, cdpref, knivau, cdsuff, zchamp, &
117 & ldcosp, igribh, llundf, zundf, 2_jplikb)
119 IF (krep /= 0)
GOTO 1001
127 ALLOCATE (clgrib(ilgrib))
128 CALL grib_copy_message (igribh, clgrib, status=iret)
130 IF (iret == grib_success)
THEN 131 ilongd = 4+(ilgrib+7)/8
136 IF ((klongd < ilongd) .AND. (klongd > 0))
THEN 142 kvalco(5:ilongd) = transfer(clgrib, kvalco(5:ilongd))
152 IF (
ALLOCATED (clgrib))
DEALLOCATE (clgrib)
153 IF (
ALLOCATED (zchamp))
DEALLOCATE (zchamp)
157 ylfich%NBFPDG = ibfpdg
158 ylfich%NFGRIB = ifgrib
162 llfata=llmoer(krep,krang)
164 IF (fa%LFAMOP.OR.llfata)
THEN 169 WRITE (unit=clmess,fmt=
"('KREP=',I4,', KRANG=',I4, & 170 & ', CDPREF=''',A,''', KNIVAU=',I4,', CDSUFF=''',A,'''')") &
171 & krep, krang, cdpref, knivau, cdsuff
173 & (fa,inumer,inimes,krep,.false.,clmess, &
174 & clnspr,
'',.false.)
181 #include "facom2.llmoer.h" subroutine facgrm_fort(FA, KREP, KRANG, CDPREF, KNIVAU, CDSUFF, PCHAMP, LDCOSP, KGRIBH, LDUNDF, PUNDF, KLOCSN)
subroutine, public igrib_release(KHANDLE)
subroutine, public igrib_get_message_size(KHANDLE, KBYTES)
subroutine faccpl_fort(FA, KREP, KRANG, CDPREF, KNIVAU, CDSUFF, PCHAMP, LDCOSP, KVALCO, KLONGD)
subroutine faipar_fort(FA, KNUMER, KNIMES, KCODE, LDFATA, CDMESS, CDNSPR, CDACTI, LDRLFI)
integer(kind=jplikb), parameter jpniil