16 INTEGER (KIND=JPLIKB),
PARAMETER :: &
17 & JD_YEA = 1, JD_MON = 2, JD_DAY = 3, &
18 & JD_HOU = 4, JD_MIN = 5, JD_TUN = 6, &
19 & JD_THO = 7, JD_GR8 = 8, JD_IAN = 9, &
20 & JD_CU1 = 10, JD_CU2 = 11, &
21 & JD_DEX = 12, JD_SEM = 14, &
22 & JD_SET = 15, JD_CE1 = 16, JD_CE2 = 17, &
23 & JD_TST = 18, JD_FMT = 19, &
28 INTEGER (KIND=JPLIKB),
PARAMETER ::
jngeom = 18_jplikb
29 INTEGER (KIND=JPLIKB),
PARAMETER ::
jnexpl = 8_jplikb
31 INTEGER (KIND=JPLIKB),
PARAMETER ::
jpniil =-999_jplikb
32 INTEGER (KIND=JPLIKB),
PARAMETER ::
jpxnom = 16_jplikb
33 INTEGER (KIND=JPLIKB),
PARAMETER ::
jpxprf = 8_jplikb
37 REAL (KIND=JPDBLR),
PARAMETER ::
xundef = -99._jpdbld
38 LOGICAL,
PARAMETER ::
lundef = .false.
39 CHARACTER,
PARAMETER ::
cundef = char (0)
176 REAL (KIND=JPDBLR),
POINTER :: sinlat (:) => null ()
177 INTEGER (KIND=JPLIKB),
POINTER :: nlopar (:) => null ()
178 INTEGER (KIND=JPLIKB),
POINTER :: nozpar (:) => null ()
179 REAL (KIND=JPDBLR),
POINTER :: sfohyb (:,:) => null ()
183 INTEGER (KIND=JPLIKB),
POINTER :: nsec2sp(:) => null ()
184 INTEGER (KIND=JPLIKB),
POINTER :: nsec2ll(:) => null ()
185 INTEGER (KIND=JPLIKB),
POINTER :: nsec2gg(:) => null ()
186 INTEGER (KIND=JPLIKB),
POINTER :: nsec2la(:) => null ()
187 INTEGER (KIND=JPLIKB),
POINTER :: nsec2al(:) => null ()
188 REAL (KIND=JPDBLR),
POINTER :: xsec2(:) => null ()
189 LOGICAL :: lisec2 = .true.
191 INTEGER (KIND=JPLIKB),
POINTER :: nompar(:) => null ()
196 INTEGER (KIND=JPLIKB),
POINTER :: ncpl4m (:) => null ()
197 INTEGER (KIND=JPLIKB),
POINTER :: nismax (:) => null ()
198 INTEGER (KIND=JPLIKB),
POINTER :: nisnax (:) => null ()
199 INTEGER (KIND=JPLIKB),
POINTER :: ndim0gg (:) => null ()
200 INTEGER (KIND=JPLIKB) :: iaddpk = 0_jplikb
206 INTEGER (KIND=JPIA) :: nfilep = 0_jpia
207 INTEGER (KIND=JPLIKB) :: noffst = 0_jplikb
216 INTEGER (KIND=JPLIKB) :: nrasho = 0_jplikb
217 INTEGER (KIND=JPLIKB) :: nrasve = 0_jplikb
218 INTEGER (KIND=JPLIKB),
POINTER :: madate (:) => null ()
219 INTEGER (KIND=JPLIKB),
POINTER :: madatx (:) => null ()
224 LOGICAL :: liflap = .false.
226 INTEGER (KIND=JPLIKB) :: nsec1 (2:21)
227 INTEGER (KIND=JPLIKB),
POINTER :: nsc2alf(:) => null ()
228 LOGICAL :: lisec1 = .true.
229 LOGICAL :: lisc2f = .true.
230 INTEGER (KIND=JPLIKB) :: ncogrif(12)
231 REAL (KIND=JPDBLR),
POINTER :: flap1d(:) => null ()
232 REAL (KIND=JPDBLR),
POINTER :: flap1da(:) => null ()
233 INTEGER (KIND=JPLIKB) :: ncplsize =
nundef 234 INTEGER (KIND=JPLIKB) :: ncplbits =
nundef 235 INTEGER (KIND=JPLIKB) :: ioptgrsx2o =
nundef 236 INTEGER (KIND=JPLIKB) :: ioptgrsn2o =
nundef 237 CHARACTER (LEN=64) :: cmodel =
'' 238 INTEGER (KIND=JPLIKB) :: nidcen = 85_jplikb
246 LOGICAL :: lfniva = .false.
248 LOGICAL :: lmulti = .false.
256 INTEGER (KIND=JPLIKB),
POINTER :: nulind (:) => null ()
257 INTEGER (KIND=JPLIKB),
POINTER :: ncaind (:) => null ()
259 INTEGER (KIND=JPLIKB) nfiouv, ncadef, nimsga, nrfaga
260 INTEGER (KIND=JPLIKB) nbipdg, nbicsp, npuila
261 INTEGER (KIND=JPLIKB) nigrib, ncpcad, nstroi, nmidpl
262 INTEGER (KIND=JPLIKB) nbimac, nbimax, mpresx
263 INTEGER (KIND=JPLIKB) nxnivv, nxtron, nxlati, nxlong, ntyptx
265 INTEGER (KIND=JPLIKB),
POINTER :: nivdsc (:,:) => null ()
267 REAL (KIND=JPDBLR) spsmin, spsmax, vrglas
270 LOGICAL lfamul, lfamop, ligard
272 CHARACTER*(JPXNOM) chainc
273 CHARACTER(LEN=8),
POINTER :: ctnprf (:) => null ()
314 INTEGER (KIND=JPLIKB) jpnxfa, jpnxca, jpldat
315 INTEGER (KIND=JPLIKB) jpxniv, jpxtro, jpxlat
316 INTEGER (KIND=JPLIKB) jpuila, jpxau1, jpxlon
317 INTEGER (KIND=JPLIKB) jpxau2, jpxpah, jpxind, jpxgeo
318 INTEGER (KIND=JPLIKB) jpxcsp, jpxcha, jplb1p
319 INTEGER (KIND=JPLIKB) jplb2p, jpcadi, jpcafs, jpnver
322 CHARACTER cpcadi*(16), cpcafs*(16), cpcarp*(16), cpcach*(16)
323 CHARACTER cpcasl*(16), cpdate*(16), cpdatx*(16)
406 REAL (KIND=JPDBLR),
POINTER :: xlap1d(:,:) => null ()
407 REAL (KIND=JPDBLR),
POINTER :: xlap1da(:,:) => null ()
408 REAL (KIND=JPDBLR),
POINTER :: xlap2d(:,:,:) => null ()
409 REAL (KIND=JPDBLR),
POINTER :: xlap2da(:,:,:) => null ()
415 INTEGER (KIND=JPLIKB) :: jpsec1, jpsec2
416 INTEGER (KIND=JPLIKB) :: jpsec4
418 INTEGER (KIND=JPLIKB) :: ioptgrsx2o =
nundef 419 INTEGER (KIND=JPLIKB) :: ioptgrsn2o =
nundef 425 INTEGER (KIND=JPLIKB) jpxpar
426 INTEGER (KIND=JPLIKB) nbparc
427 INTEGER (KIND=JPLIKB) :: nidcen = 85_jplikb
435 LOGICAL :: facade_llprea = .true.
436 LOGICAL :: facage_llprea = .true.
437 LOGICAL :: facies_llprea = .true.
438 LOGICAL :: factum_llprea = .true.
439 LOGICAL :: fagiot_llprea = .true.
440 LOGICAL :: falimu_llprea = .true.
441 LOGICAL :: famiso_llprea = .true.
442 LOGICAL :: fanerg_llprea = .true.
443 LOGICAL :: fanmsg_llprea = .true.
444 LOGICAL :: fanuca_llprea = .true.
445 LOGICAL :: fanumu_llprea = .true.
446 LOGICAL :: faregi_llprea = .true.
447 LOGICAL :: farflu_llprea = .true.
448 LOGICAL :: farine_llprea = .true.
449 LOGICAL :: favori_llprea = .true.
450 LOGICAL :: faxion_llprea = .true.
451 LOGICAL :: farine_lldefm = .false.
452 INTEGER (KIND=JPLIKB) :: faxion_iscalx
453 REAL (KIND=JPDBLR) faxion_zepsil
455 INTEGER (KIND=JPLIKB) :: nulout = 0
456 LOGICAL :: lopenmp = .true.
459 INTEGER (KIND=JPLIKB) :: jplmes = 1024
461 TYPE(
facadr),
POINTER :: cadre (:) => null ()
481 SUBROUTINE new_cadre (CA, KTYPTR, KPXLAT, KPXTRO, KPXNIV)
483 INTEGER (KIND=JPLIKB),
INTENT (IN) :: KTYPTR, KPXLAT, KPXTRO, KPXNIV
486 INTEGER (KIND=JPLIKB) :: &
487 & IPXAU1, IPXLON, IPXAU2, IPXPAH, &
488 & IPXIND, IPXGEO, IPXCSP, IPXPDG, &
490 INTEGER (KIND=JPLIKB) :: INPAHE
491 INTEGER (KIND=JPLIKB) :: JM, JN, IPOS
493 llmlam = ktyptr .LE. 0
495 CALL cparams (kpxlat, kpxtro, ipxau1, &
496 & ipxlon, ipxau2, ipxpah, ipxind, &
497 & ipxgeo, ipxcsp, ipxpdg, ipxcha)
499 IF (.NOT. llmlam)
THEN 502 & ca%NLOPAR (inpahe), &
503 & ca%NOZPAR (inpahe), &
504 & ca%SINLAT (inpahe), &
505 & ca%NOMPAR (2*kpxtro+4))
509 & ca%NOZPAR (2*kpxtro+4), &
511 & ca%NOMPAR (2*max(-ktyptr, kpxtro)+4))
515 & ca%SFOHYB (2,0:kpxniv), &
518 & ca%NSEC2GG (22+kpxlat), &
521 & ca%XSEC2 (10+2*(kpxniv+1)))
528 ALLOCATE (ca%NISNAX (0:ca%NMSMAX), ca%NISMAX (0:ca%NSMAX), &
529 & ca%NCPL4M (0:ca%NMSMAX), ca%NDIM0GG (0:ca%NMSMAX))
531 CALL ellips64 (ca%NSMAX, ca%NMSMAX, ca%NISNAX, ca%NISMAX)
535 ca%NSEFRE = ca%NSEFRE + 4*(ca%NISNAX(jm)+1)
539 ca%NCPL4M(jm) = 4*(ca%NISNAX(jm)+1)
544 ca%NDIM0GG (jm) = ipos
545 ipos = ipos + ca%NCPL4M (jm)
551 ca%NSEFRE = (ca%NSMAX+1)*(ca%NSMAX+1)
552 ALLOCATE (ca%NDIM0GG (0:ca%NSMAX))
556 ca%NDIM0GG (jn) = ipos
557 ipos = ipos + (ca%NSMAX+1-jn) * 2
570 IF (
ASSOCIATED (ca%NLOPAR ))
DEALLOCATE (ca%NLOPAR )
571 IF (
ASSOCIATED (ca%NOZPAR ))
DEALLOCATE (ca%NOZPAR )
572 IF (
ASSOCIATED (ca%SINLAT ))
DEALLOCATE (ca%SINLAT )
573 IF (
ASSOCIATED (ca%SFOHYB ))
DEALLOCATE (ca%SFOHYB )
574 IF (
ASSOCIATED (ca%NSEC2SP))
DEALLOCATE (ca%NSEC2SP)
575 IF (
ASSOCIATED (ca%NSEC2LL))
DEALLOCATE (ca%NSEC2LL)
576 IF (
ASSOCIATED (ca%NSEC2GG))
DEALLOCATE (ca%NSEC2GG)
577 IF (
ASSOCIATED (ca%NSEC2LA))
DEALLOCATE (ca%NSEC2LA)
578 IF (
ASSOCIATED (ca%NSEC2AL))
DEALLOCATE (ca%NSEC2AL)
579 IF (
ASSOCIATED (ca%XSEC2 ))
DEALLOCATE (ca%XSEC2 )
580 IF (
ASSOCIATED (ca%NOMPAR ))
DEALLOCATE (ca%NOMPAR )
582 IF (
ASSOCIATED (ca%NCPL4M ))
DEALLOCATE (ca%NCPL4M )
583 IF (
ASSOCIATED (ca%NISMAX ))
DEALLOCATE (ca%NISMAX )
584 IF (
ASSOCIATED (ca%NISNAX ))
DEALLOCATE (ca%NISNAX )
585 IF (
ASSOCIATED (ca%NDIM0GG))
DEALLOCATE (ca%NDIM0GG)
608 SUBROUTINE new_fichier (FA, FI, KPLDAT, KPXTRO, KTYPTR)
612 INTEGER (KIND=JPLIKB),
INTENT (IN) :: KPLDAT, KPXTRO, KTYPTR
615 llmlam = ktyptr .LE. 0
617 ALLOCATE (fi%MADATE (kpldat), fi%MADATX (kpldat))
623 fi%NIDCEN = fa%NIDCEN
626 ALLOCATE (fi%NSC2ALF (max(-ktyptr, kpxtro)-1))
628 ALLOCATE (fi%NSC2ALF (kpxtro-1))
638 IF (
ASSOCIATED (fi%MADATE ))
DEALLOCATE (fi%MADATE )
639 IF (
ASSOCIATED (fi%MADATX ))
DEALLOCATE (fi%MADATX )
640 IF (
ASSOCIATED (fi%NSC2ALF))
DEALLOCATE (fi%NSC2ALF)
641 IF (
ASSOCIATED (fi%FLAP1D ))
DEALLOCATE (fi%FLAP1D )
642 IF (
ASSOCIATED (fi%FLAP1DA))
DEALLOCATE (fi%FLAP1DA)
651 REAL (KIND=JPRB) :: ZHOOK_HANDLE
653 IF (
lhook)
CALL dr_hook (
'FA_COM:NEW_FA_DEFAULT',0,zhook_handle)
662 IF (
lhook)
CALL dr_hook (
'FA_COM:NEW_FA_DEFAULT',1,zhook_handle)
666 SUBROUTINE new_fa (FA, KERR, KPXTRO, KPXLAT, &
667 & KPXNIV, KPNXFA, KPNXCA)
669 INTEGER,
INTENT(OUT) :: KERR
670 INTEGER,
OPTIONAL,
INTENT(IN) :: KPXTRO
671 INTEGER,
OPTIONAL,
INTENT(IN) :: KPXLAT
672 INTEGER,
OPTIONAL,
INTENT(IN) :: KPXNIV
673 INTEGER,
OPTIONAL,
INTENT(IN) :: KPNXFA
674 INTEGER,
OPTIONAL,
INTENT(IN) :: KPNXCA
675 REAL (KIND=JPRB) :: ZHOOK_HANDLE
677 IF (
lhook)
CALL dr_hook (
'FA_COM:NEW_FA',0,zhook_handle)
688 #if defined ( HIGHRES ) 710 IF (
PRESENT (kpxtro)) fa%JPXTRO = int(kpxtro,
jplikb)
711 IF (
PRESENT (kpxlat)) fa%JPXLAT = int(kpxlat,
jplikb)
712 IF (
PRESENT (kpxniv)) fa%JPXNIV = int(kpxniv,
jplikb)
713 IF (
PRESENT (kpnxfa)) fa%JPNXFA = int(kpnxfa,
jplikb)
714 IF (
PRESENT (kpnxca)) fa%JPNXCA = int(kpnxca,
jplikb)
719 CALL cparams (fa%JPXLAT, fa%JPXTRO, &
720 & fa%JPXAU1, fa%JPXLON, fa%JPXAU2, fa%JPXPAH, &
721 & fa%JPXIND, fa%JPXGEO, fa%JPXCSP, fa%JPXPDG, &
728 fa%CPCADI=
'CADRE-DIMENSIONS' 729 fa%CPCAFS=
'CADRE-FRANKSCHMI' 730 fa%CPCARP=
'CADRE-REDPOINPOL' 731 fa%CPCACH=
'CADRE-FOCOHYBRID' 732 fa%CPCASL=
'CADRE-SINLATITUD' 733 fa%CPDATE=
'DATE-DES-DONNEES' 734 fa%CPDATX=
'DATX-DES-DONNEES' 737 fa%JPSEC2=22+max(fa%JPXTRO-1,fa%JPXLAT)
747 & fa%CTNPRF (fa%JPTNIV), fa%NIVDSC (0:4,0:fa%JPTNIV), &
748 & fa%CADRE (fa%JPNXCA), fa%FICHIER (0:fa%JPNXFA), &
749 & fa%NULIND (fa%JPNXFA), fa%NCAIND (fa%JPNXCA), &
751 IF (kerr /= 0)
GOTO 999
753 fa%FACADE_LLPREA = .true.
754 fa%FACAGE_LLPREA = .true.
755 fa%FACIES_LLPREA = .true.
756 fa%FACTUM_LLPREA = .true.
757 fa%FAGIOT_LLPREA = .true.
758 fa%FALIMU_LLPREA = .true.
759 fa%FAMISO_LLPREA = .true.
760 fa%FANERG_LLPREA = .true.
761 fa%FANMSG_LLPREA = .true.
762 fa%FANUCA_LLPREA = .true.
763 fa%FANUMU_LLPREA = .true.
764 fa%FAREGI_LLPREA = .true.
765 fa%FARFLU_LLPREA = .true.
766 fa%FARINE_LLPREA = .true.
767 fa%FAVORI_LLPREA = .true.
768 fa%FAXION_LLPREA = .true.
769 fa%FARINE_LLDEFM = .false.
775 IF (
lhook)
CALL dr_hook (
'FA_COM:NEW_FA',1,zhook_handle)
781 INTEGER,
INTENT(OUT) :: KERR
783 INTEGER (KIND=JPLIKB) :: ICAD, IFIC
785 REAL (KIND=JPRB) :: ZHOOK_HANDLE
787 IF (
lhook)
CALL dr_hook (
'FA_COM:FREE_FA',0,zhook_handle)
789 IF (
ASSOCIATED (fa%XLAP1D ))
DEALLOCATE (fa%XLAP1D )
790 IF (
ASSOCIATED (fa%XLAP1DA ))
DEALLOCATE (fa%XLAP1DA )
791 IF (
ASSOCIATED (fa%XLAP2D ))
DEALLOCATE (fa%XLAP2D )
792 IF (
ASSOCIATED (fa%XLAP2DA ))
DEALLOCATE (fa%XLAP2DA )
795 NULLIFY (fa%XLAP1DA )
797 NULLIFY (fa%XLAP2DA )
800 & fa%NIVDSC, fa%CTNPRF, &
802 IF (kerr /= 0)
GOTO 999
804 NULLIFY (fa%NIVDSC, fa%CTNPRF)
807 IF (
ASSOCIATED (fa%YGR1TAB))
THEN 808 DEALLOCATE (fa%YGR1TAB, stat = kerr)
809 IF (kerr /= 0)
GOTO 999
813 DO icad = 1, int(ubound(fa%CADRE, 1),
jplikb)
817 DO ific = 0, int(ubound(fa%FICHIER, 1),
jplikb)
821 DEALLOCATE (fa%CADRE, fa%FICHIER, stat = kerr)
822 NULLIFY (fa%CADRE, fa%FICHIER)
826 IF (
lhook)
CALL dr_hook (
'FA_COM:FREE_FA',1,zhook_handle)
831 SUBROUTINE cparams (KPXLAT, KPXTRO, &
832 & KPXAU1, KPXLON, KPXAU2, KPXPAH, &
833 & KPXIND, KPXGEO, KPXCSP, KPXPDG, &
836 INTEGER (KIND=JPLIKB),
INTENT (IN) :: KPXLAT, KPXTRO
837 INTEGER (KIND=JPLIKB),
INTENT (OUT) :: &
838 & KPXAU1, KPXLON, KPXAU2, KPXPAH, &
839 & KPXIND, KPXGEO, KPXCSP, KPXPDG, &
845 kpxpah=(8*(8/kpxau1)+kpxau1*(kpxau1/8)) &
846 & /((8/kpxau1)+(kpxau1/8))
847 kpxind=(kpxau1*(kpxau1/kpxau2)+kpxau2* &
849 & /((kpxau1/kpxau2)+(kpxau2/kpxau1))
850 kpxgeo=(12*(12/kpxau1)+kpxau1*(kpxau1/12)) &
851 & /((12/kpxau1)+(kpxau1/12))
852 kpxcsp=(1+kpxtro)*(2+kpxtro)
854 kpxcha=(kpxcsp*(kpxcsp/kpxpdg)+ &
855 & kpxpdg*(kpxpdg/kpxcsp)) &
856 & /((kpxcsp/kpxpdg)+(kpxpdg/kpxcsp))
integer, parameter jplikb
integer(kind=jplikb), parameter jpxsuf
integer, save ngrib2_glo_sh
integer, save ngrib2_lam_bf
integer, save ngrib1_latlon
integer(kind=jplikb), parameter jplspx
integer(kind=jplikb), parameter nundef
logical, save fa_com_default_init
integer, save ngrib2_lam_gp
subroutine new_fa_default()
integer(kind=jplikb), parameter jnexpl
subroutine new_lfi_default()
subroutine cparams(KPXLAT, KPXTRO, KPXAU1, KPXLON, KPXAU2, KPXPAH, KPXIND, KPXGEO, KPXCSP, KPXPDG, KPXCHA)
subroutine free_fa(FA, KERR)
integer, parameter jpdbld
subroutine new_cadre(CA, KTYPTR, KPXLAT, KPXTRO, KPXNIV)
character, parameter cundef
logical, save lgrib2_init
integer(kind=jplikb), parameter jpprcm
integer, parameter jpdblr
integer, save ngrib2_glo_gp
subroutine new_fa(FA, KERR, KPXTRO, KPXLAT, KPXNIV, KPNXFA, KPNXCA)
real(kind=jpdblr), parameter xundef
type(lficom), target, save lficom_default
subroutine free_cadre(CA)
integer, save ngrib2_latlon
subroutine new_fichier(FA, FI, KPLDAT, KPXTRO, KTYPTR)
! Fonction servant a rendre fatale ou non une erreur ! a l aide du code reponse du niveau de filtrage ! et de l option d erreur fatale propre au fichier ! s il n y a pas de fichier(I5678=0, d 'ou dimensionnement de ! *LERRFA *)
logical, save lgrib2_lam_ex
type(fa_com), target, save fa_com_default
integer(kind=jplikb), parameter jngeom
logical, save lgrib2_lam_bf
integer(kind=jplikb), parameter jpxnom
logical, parameter lundef
integer(kind=jplikb), parameter jpxprf
integer(kind=jplikb), parameter jpniil
subroutine free_fichier(FI)