SURFEX v8.1
General documentation of Surfex
favori.F90
Go to the documentation of this file.
1 ! Oct-2012 P. Marguinaud 64b LFI
2 ! Jan-2011 P. Marguinaud Thread-safe FA
3 SUBROUTINE favori_fort &
4 & (fa, kngrib, knbpdg, knbcsp, kstron, kpuila, &
5 & kdmopl)
6 USE fa_mod, ONLY : fa_com, jpniil
7 USE parkind1, ONLY : jprb
8 USE yomhook , ONLY : lhook, dr_hook
10 IMPLICIT NONE
11 !****
12 ! Ce sous-programme permet de connaitre les options implicites
13 ! courantes liees au codage GRIB des champs.
14 ! CES OPTIONS NE SONT UTILISEES QUE POUR (RE)ECRIRE DES CHAMPS
15 ! codes en GRIB, et les valeurs implicites ne servent
16 ! que LORS d'une OUVERTURE de FICHIER.
17 ! ( Visualisation (?) Options R (??) Implicites )
18 !**
19 ! Arguments : KNGRIB ==> Niveau de codage GRIB (-1,0,1,2,3);
20 ! (tous de KNBPDG ==> Nombre de bits par valeur point-de-grille;
21 ! SORTIE) KNBCSP ==> Nombre de bits par partie reelle/imaginaire
22 ! de coeff. spectral;
23 ! KSTRON ==> Sous-troncature non compactee;
24 ! KPUILA ==> Puissance de laplacien;
25 ! KDMOPL ==> Degre de modulation de KPUILA.
26 !
27 !
28 !
29 TYPE(fa_com) :: FA
30 INTEGER (KIND=JPLIKB) KNGRIB, KNBPDG, KNBCSP
31 INTEGER (KIND=JPLIKB) KSTRON, KPUILA, KDMOPL
32 !
33 INTEGER (KIND=JPLIKB) IREP, INIMES, INUMER
34 !
35 LOGICAL LLVERG
36 !
37 !
38 !
39 CHARACTER(LEN=FA%JPXNOM) CLACTI
40 CHARACTER(LEN=FA%JPLMES) CLMESS
41 CHARACTER(LEN=FA%JPLSPX) CLNSPR
42 
43 !**
44 ! 1. - INITIALISATIONS.
45 !-----------------------------------------------------------------------
46 !
47 REAL(KIND=JPRB) :: ZHOOK_HANDLE
48 IF (lhook) CALL dr_hook('FAVORI_MT',0,zhook_handle)
49 clacti=''
50 IF (fa%FAVORI_LLPREA) THEN
51 !
52 ! A la premiere utilisation, appel au sous-programme "FARINE".
53 !
54  CALL farine_fort &
55 & (fa, 2_jplikb )
56  fa%FAVORI_LLPREA=.false.
57 ENDIF
58 !
59 ! Verrouillage global eventuel.
60 !
61 IF (fa%LFAMUL) CALL lfiver_fort &
62 & (fa%LFI, fa%VRGLAS,'ON')
63 llverg=fa%LFAMUL
64 !**
65 ! 2. - RECOPIE DES VALEURS EN COMMON DANS LES ARGUMENTS.
66 !-----------------------------------------------------------------------
67 !
68 kngrib=fa%NIGRIB
69 knbpdg=fa%NBIPDG
70 knbcsp=fa%NBICSP
71 kstron=fa%NSTROI
72 kpuila=fa%NPUILA
73 kdmopl=fa%NMIDPL
74 !**
75 ! 10. - PHASE TERMINALE : MESSAGERIE VIA LE SOUS-PROGRAMME "FAIPAR"
76 !-----------------------------------------------------------------------
77 !
78 !
79 ! Deverrouillage global eventuel.
80 !
81 IF (llverg) CALL lfiver_fort &
82 & (fa%LFI, fa%VRGLAS,'OFF')
83 !
84 IF (fa%NIMSGA.EQ.2) THEN
85  irep=0
86  inimes=2
87  clnspr='FAVORI'
88  WRITE (unit=clmess,fmt='(''KNGRIB='',I2,'', KNBPDG='',I3, &
89 & '', KNBCSP='',I3,'', KSTRON='',I3,'', KPUILA='',I3, &
90 & '', KDMOPL='',I3)') &
91 & kngrib,knbpdg,knbcsp,kstron,kpuila,kdmopl
92  inumer=jpniil
93  CALL faipar_fort &
94 & (fa, inumer,inimes,irep,.false.,clmess, &
95 & clnspr,clacti,.false.)
96 ENDIF
97 !
98 IF (lhook) CALL dr_hook('FAVORI_MT',1,zhook_handle)
99 END SUBROUTINE favori_fort
100 
101 
102 
103 ! Oct-2012 P. Marguinaud 64b LFI
104 SUBROUTINE favori64 &
105 & (kngrib, knbpdg, knbcsp, kstron, kpuila, kdmopl)
106 USE fa_mod, ONLY : fa => fa_com_default, &
109 USE lfi_precision
110 IMPLICIT NONE
111 ! Arguments
112 INTEGER (KIND=JPLIKB) KNGRIB ! OUT
113 INTEGER (KIND=JPLIKB) KNBPDG ! OUT
114 INTEGER (KIND=JPLIKB) KNBCSP ! OUT
115 INTEGER (KIND=JPLIKB) KSTRON ! OUT
116 INTEGER (KIND=JPLIKB) KPUILA ! OUT
117 INTEGER (KIND=JPLIKB) KDMOPL ! OUT
118 
119 IF (.NOT. fa_com_default_init) CALL new_fa_default ()
120 
121 CALL favori_fort &
122 & (fa, kngrib, knbpdg, knbcsp, kstron, kpuila, kdmopl)
123 
124 END SUBROUTINE favori64
125 
126 SUBROUTINE favori &
127 & (kngrib, knbpdg, knbcsp, kstron, kpuila, kdmopl)
128 USE fa_mod, ONLY : fa => fa_com_default, &
131 USE lfi_precision
132 IMPLICIT NONE
133 ! Arguments
134 INTEGER (KIND=JPLIKM) KNGRIB ! OUT
135 INTEGER (KIND=JPLIKM) KNBPDG ! OUT
136 INTEGER (KIND=JPLIKM) KNBCSP ! OUT
137 INTEGER (KIND=JPLIKM) KSTRON ! OUT
138 INTEGER (KIND=JPLIKM) KPUILA ! OUT
139 INTEGER (KIND=JPLIKM) KDMOPL ! OUT
140 
141 IF (.NOT. fa_com_default_init) CALL new_fa_default ()
142 
143 CALL favori_mt &
144 & (fa, kngrib, knbpdg, knbcsp, kstron, kpuila, kdmopl)
145 
146 END SUBROUTINE favori
147 
148 SUBROUTINE favori_mt &
149 & (fa, kngrib, knbpdg, knbcsp, kstron, kpuila, kdmopl)
150 USE fa_mod, ONLY : fa_com
151 USE lfi_precision
152 IMPLICIT NONE
153 ! Arguments
154 type(fa_com) fa ! INOUT
155 INTEGER (KIND=JPLIKM) KNGRIB ! OUT
156 INTEGER (KIND=JPLIKM) KNBPDG ! OUT
157 INTEGER (KIND=JPLIKM) KNBCSP ! OUT
158 INTEGER (KIND=JPLIKM) KSTRON ! OUT
159 INTEGER (KIND=JPLIKM) KPUILA ! OUT
160 INTEGER (KIND=JPLIKM) KDMOPL ! OUT
161 ! Local integers
162 INTEGER (KIND=JPLIKB) INGRIB ! OUT
163 INTEGER (KIND=JPLIKB) INBPDG ! OUT
164 INTEGER (KIND=JPLIKB) INBCSP ! OUT
165 INTEGER (KIND=JPLIKB) ISTRON ! OUT
166 INTEGER (KIND=JPLIKB) IPUILA ! OUT
167 INTEGER (KIND=JPLIKB) IDMOPL ! OUT
168 ! Convert arguments
169 
170 
171 CALL favori_fort &
172 & (fa, ingrib, inbpdg, inbcsp, istron, ipuila, idmopl)
173 
174 kngrib = int( ingrib, jplikm)
175 knbpdg = int( inbpdg, jplikm)
176 knbcsp = int( inbcsp, jplikm)
177 kstron = int( istron, jplikm)
178 kpuila = int( ipuila, jplikm)
179 kdmopl = int( idmopl, jplikm)
180 
181 END SUBROUTINE favori_mt
182 
183 !INTF KNGRIB OUT
184 !INTF KNBPDG OUT
185 !INTF KNBCSP OUT
186 !INTF KSTRON OUT
187 !INTF KPUILA OUT
188 !INTF KDMOPL OUT
subroutine favori64(KNGRIB, KNBPDG, KNBCSP, KSTRON, KPUILA, KDMOPL)
Definition: favori.F90:106
logical, save fa_com_default_init
Definition: fa_mod.F90:477
subroutine favori_fort(FA, KNGRIB, KNBPDG, KNBCSP, KSTRON, KPUILA, KDMOPL)
Definition: favori.F90:6
subroutine new_fa_default()
Definition: fa_mod.F90:649
Definition: fa_mod.F90:1
subroutine lfiver_fort(LFI, PVEROU, CDSENS)
Definition: lfiver.F90:6
integer, parameter jprb
Definition: parkind1.F90:32
subroutine favori(KNGRIB, KNBPDG, KNBCSP, KSTRON, KPUILA, KDMOPL)
Definition: favori.F90:128
subroutine farine_fort(FA, KOPTIO)
Definition: farine.F90:5
logical lhook
Definition: yomhook.F90:15
integer, parameter jplikm
type(fa_com), target, save fa_com_default
Definition: fa_mod.F90:476
subroutine faipar_fort(FA, KNUMER, KNIMES, KCODE, LDFATA, CDMESS, CDNSPR, CDACTI, LDRLFI)
Definition: faipar.F90:6
subroutine favori_mt(FA, KNGRIB, KNBPDG, KNBCSP, KSTRON, KPUILA, KDMOPL)
Definition: favori.F90:150
integer(kind=jplikb), parameter jpniil
Definition: fa_mod.F90:31