SURFEX v8.1
General documentation of Surfex
faigra.F90
Go to the documentation of this file.
1 SUBROUTINE faigra_fort (FA)
2 
6  & fa_com
7 USE parkind1, ONLY : jprb
8 USE yomhook , ONLY : lhook, dr_hook
11 USE grib_api
12 
13 IMPLICIT NONE
14 
15 !****
16 ! Sous-programme de lecture des templates GRIB2.
17 !**
18 !
19 
20 type(fa_com) :: fa
21 
22 INTEGER :: IGRIB2_LAM_BF, IRET, IGRIBH
23 
24 REAL (KIND=JPRB) :: ZHOOK_HANDLE
25 
26 IF (lhook) CALL dr_hook('FAIGRA_MT',0,zhook_handle)
27 
28 !#define FAGRIB2
29 #ifdef FAGRIB2
30 !$OMP CRITICAL
31 IF (.NOT. lgrib2_init) THEN
32  CALL igrib_new_from_samples (ngrib1_latlon, 'regular_ll_pl_grib1')
33  CALL igrib_new_from_samples (ngrib2_latlon, 'regular_ll_pl_grib2')
34  CALL igrib_new_from_samples (ngrib2_glo_sh, 'sh_ml_grib2')
35  CALL igrib_new_from_samples (ngrib2_glo_gp, 'reduced_gg_ml_grib2')
36  CALL igrib_new_from_samples (ngrib2_lam_gp, 'reduced_gg_ml_grib2')
37  CALL igrib_new_from_samples (igrib2_lam_bf, 'lambert_bf_grib2', kret=iret)
38  IF (iret == 0) THEN
39  ngrib2_lam_bf = igrib2_lam_bf
40  lgrib2_lam_bf = .true.
41  ELSE
42  WRITE (fa%NULOUT, '(A)') "FAIGRA: grib_api template `lambert_bf_grib2' was not found; &
43  &it will not be possible to encode spectral LAM fields with grib_api"
44  ENDIF
45 
46 ! See if lambert_lam is available
47  CALL igrib_clone (ngrib2_lam_gp, igribh)
48  CALL igrib_set_value (igribh, 'gridType', 'lambert_lam', kret=iret)
49  lgrib2_lam_ex = iret == 0
50  CALL igrib_release (igribh)
51 
52  lgrib2_init = .true.
53 ENDIF
54 !$OMP END CRITICAL
55 #endif
56 
57 IF (lhook) CALL dr_hook('FAIGRA_MT',1,zhook_handle)
58 
59 END SUBROUTINE
60 
61 SUBROUTINE faigra
62 USE fa_mod, ONLY : fa => fa_com_default, &
65 IF (.NOT. fa_com_default_init) CALL new_fa_default ()
66 CALL faigra_fort (fa)
67 END SUBROUTINE
68 
69 SUBROUTINE faigra64
70 USE fa_mod, ONLY : fa => fa_com_default, &
73 IF (.NOT. fa_com_default_init) CALL new_fa_default ()
74 CALL faigra_fort (fa)
75 END SUBROUTINE
76 
77 SUBROUTINE faigra_mt (FA)
78 USE fa_mod, ONLY : fa_com
79 type(fa_com) :: fa
80 CALL faigra_fort (fa)
81 END SUBROUTINE
82 
integer, save ngrib2_glo_sh
Definition: fa_mod.F90:466
integer, save ngrib2_lam_bf
Definition: fa_mod.F90:469
integer, save ngrib1_latlon
Definition: fa_mod.F90:470
logical, save fa_com_default_init
Definition: fa_mod.F90:477
integer, save ngrib2_lam_gp
Definition: fa_mod.F90:468
subroutine, public igrib_clone(KHANDLE1, KHANDLE2)
subroutine new_fa_default()
Definition: fa_mod.F90:649
subroutine faigra_fort(FA)
Definition: faigra.F90:2
Definition: fa_mod.F90:1
integer, parameter jprb
Definition: parkind1.F90:32
logical, save lgrib2_init
Definition: fa_mod.F90:474
subroutine, public igrib_release(KHANDLE)
integer, save ngrib2_glo_gp
Definition: fa_mod.F90:467
subroutine, public igrib_new_from_samples(KHANDLE, CDNAME, KRET)
subroutine faigra_mt(FA)
Definition: faigra.F90:78
logical lhook
Definition: yomhook.F90:15
integer, save ngrib2_latlon
Definition: fa_mod.F90:471
subroutine faigra
Definition: faigra.F90:62
logical, save lgrib2_lam_ex
Definition: fa_mod.F90:472
type(fa_com), target, save fa_com_default
Definition: fa_mod.F90:476
subroutine faigra64
Definition: faigra.F90:70
logical, save lgrib2_lam_bf
Definition: fa_mod.F90:473