SURFEX v8.1
General documentation of Surfex
faveur.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 faveur_fort &
4 & (fa, krep, knumer, kngrib, knarg1, knarg2, &
5 & knarg3, knarg4, knarg5)
6 USE fa_mod, ONLY : fa_com
7 USE parkind1, ONLY : jprb
8 USE yomhook , ONLY : lhook, dr_hook
10 IMPLICIT NONE
11 !****
12 ! Ce sous-programme permet d'obtenir, pour un fichier ARPEGE
13 ! ouvert, les options courantes liees au codage GRIB des champs.
14 ! CES OPTIONS NE SONT UTILISEES QUE POUR (RE)ECRIRE DES CHAMPS
15 ! codes en GRIB.
16 ! ( Visualisation (?) options Effectives pour l'UtilisateuR )
17 !**
18 ! Arguments : KREP (Sortie) ==> Code-reponse du sous-programme;
19 ! KNUMER (Entree) ==> Numero d'Unite Logique concernee;
20 ! KNGRIB (Sortie) ==> Niveau de codage GRIB (-1,0,1,2,3,4);
21 !
22 ! * Pour KNGRIB compris entre -1 et 3, les arguments
23 ! de sortie ont la signification suivante:
24 ! KNARG1 (Sortie) ==> Nombre de bits par valeur point-de-grille;
25 ! KNARG2 (Sortie) ==> Nombre de bits par partie reelle/imaginaire
26 ! de coefficient spectral;
27 ! KNARG3 (Sortie) ==> Sous-troncature non compactee;
28 ! KNARG4 (Sortie) ==> Puissance de laplacien;
29 ! KNARG5 (Sortie) ==> Degre de modulation de KNARG4.
30 !
31 ! * Pour KNGRIB==4, les arguments de sortie ont la
32 ! signification suivante:
33 !
34 ! KNARG1 (Sortie) ==> Taille de la couronne a conserver
35 ! KNARG2 (Sortie) ==> Nombre de bits utilises pour le codage
36 ! KNARG3 (Sortie) ==> Inutilise
37 ! KNARG4 (Sortie) ==> Inutilise
38 ! KNARG5 (Sortie) ==> Inutilise
39 !
40 !
41 !
42 TYPE(fa_com) :: FA
43 INTEGER (KIND=JPLIKB) KREP, KNUMER, KNGRIB
44 INTEGER (KIND=JPLIKB) KNARG1, KNARG2, KNARG3, KNARG4
45 INTEGER (KIND=JPLIKB) KNARG5
46 !
47 INTEGER (KIND=JPLIKB) IREP, IRANG, INIMES
48 !
49 LOGICAL LLVERF
50 !
51 CHARACTER(LEN=FA%JPXNOM) CLACTI
52 CHARACTER(LEN=FA%JPLMES) CLMESS
53 CHARACTER(LEN=FA%JPLSPX) CLNSPR
54 LOGICAL LLFATA
55 
56 !**
57 ! 1. - INITIALISATIONS.
58 !-----------------------------------------------------------------------
59 !
60 REAL(KIND=JPRB) :: ZHOOK_HANDLE
61 IF (lhook) CALL dr_hook('FAVEUR_MT',0,zhook_handle)
62 clacti=''
63 llverf=.false.
64 CALL fanumu_fort &
65 & (fa, knumer,irang)
66 !
67 IF (irang.EQ.0) THEN
68  irep=-51
69  GOTO 1001
70 ENDIF
71 !
72 ! Verrouillage eventuel du fichier.
73 !
74 IF (fa%LFAMUL) CALL lfiver_fort &
75 & (fa%LFI, fa%FICHIER(irang)%VRFICH,'ON')
76 llverf=fa%LFAMUL
77 !**
78 ! 2. - RECOPIE DES VALEURS EN COMMON DANS LES ARGUMENTS.
79 !-----------------------------------------------------------------------
80 !
81 kngrib=fa%FICHIER(irang)%NFGRIB
82 
83 IF (kngrib /= 4) THEN
84  knarg1=fa%FICHIER(irang)%NBFPDG
85  knarg2=fa%FICHIER(irang)%NBFCSP
86  knarg3=fa%FICHIER(irang)%NSTROF
87  knarg4=fa%FICHIER(irang)%NPUFLA
88  knarg5=fa%FICHIER(irang)%NMFDPL
89 ELSE
90  knarg1=fa%FICHIER(irang)%NCPLSIZE
91  knarg2=fa%FICHIER(irang)%NCPLBITS
92  knarg3=0
93  knarg4=0
94  knarg5=0
95 ENDIF
96 irep=0
97 !**
98 ! 10. - PHASE TERMINALE : MESSAGERIE, AVEC "ABORT" EVENTUEL,
99 ! VIA LE SOUS-PROGRAMME "FAIPAR" .
100 !-----------------------------------------------------------------------
101 !
102 1001 CONTINUE
103 krep=irep
104 llfata=llmoer(irep,irang)
105 !
106 ! Deverrouillage eventuel du fichier.
107 !
108 IF (llverf) CALL lfiver_fort &
109 & (fa%LFI, fa%FICHIER(irang)%VRFICH,'OFF')
110 !
111 IF (llfata) THEN
112  inimes=2
113 ELSE
114  inimes=ixnvms(irang)
115 ENDIF
116 !
117 IF (.NOT.llfata.AND.inimes.NE.2) THEN
118  IF (lhook) CALL dr_hook('FAVEUR_MT',1,zhook_handle)
119  RETURN
120 ENDIF
121 !
122 clnspr='FAVEUR'
123 !
124 WRITE (unit=clmess,fmt='(''KREP='',I4,'', KNUMER='',I3, &
125 & '', KNGRIB='',I2,'', KNARG1='',I3,'', KNARG2='',I3, &
126 & '', KNARG3='',I2,'', KNARG4='',I3,'', KNARG5='',I3)') &
127 & krep,knumer,kngrib,knarg1,knarg2,knarg3,knarg4,knarg5
128 CALL faipar_fort &
129 & (fa, knumer,inimes,irep,llfata,clmess, &
130 & clnspr,clacti,.false.)
131 !
132 IF (lhook) CALL dr_hook('FAVEUR_MT',1,zhook_handle)
133 
134 CONTAINS
135 
136 #include "facom2.llmoer.h"
137 #include "facom2.ixnvms.h"
138 
139 END SUBROUTINE faveur_fort
140 
141 
142 
143 ! Oct-2012 P. Marguinaud 64b LFI
144 SUBROUTINE faveur64 &
145 & (krep, knumer, kngrib, knarg1, knarg2, knarg3, &
146 & knarg4, knarg5)
147 USE fa_mod, ONLY : fa => fa_com_default, &
150 USE lfi_precision
151 IMPLICIT NONE
152 ! Arguments
153 INTEGER (KIND=JPLIKB) KREP ! OUT
154 INTEGER (KIND=JPLIKB) KNUMER ! IN
155 INTEGER (KIND=JPLIKB) KNGRIB ! OUT
156 INTEGER (KIND=JPLIKB) KNARG1 ! OUT
157 INTEGER (KIND=JPLIKB) KNARG2 ! OUT
158 INTEGER (KIND=JPLIKB) KNARG3 ! OUT
159 INTEGER (KIND=JPLIKB) KNARG4 ! OUT
160 INTEGER (KIND=JPLIKB) KNARG5 ! OUT
161 
162 IF (.NOT. fa_com_default_init) CALL new_fa_default ()
163 
164 CALL faveur_fort &
165 & (fa, krep, knumer, kngrib, knarg1, knarg2, knarg3, &
166 & knarg4, knarg5)
167 
168 END SUBROUTINE faveur64
169 
170 SUBROUTINE faveur &
171 & (krep, knumer, kngrib, knarg1, knarg2, knarg3, &
172 & knarg4, knarg5)
173 USE fa_mod, ONLY : fa => fa_com_default, &
176 USE lfi_precision
177 IMPLICIT NONE
178 ! Arguments
179 INTEGER (KIND=JPLIKM) KREP ! OUT
180 INTEGER (KIND=JPLIKM) KNUMER ! IN
181 INTEGER (KIND=JPLIKM) KNGRIB ! OUT
182 INTEGER (KIND=JPLIKM) KNARG1 ! OUT
183 INTEGER (KIND=JPLIKM) KNARG2 ! OUT
184 INTEGER (KIND=JPLIKM) KNARG3 ! OUT
185 INTEGER (KIND=JPLIKM) KNARG4 ! OUT
186 INTEGER (KIND=JPLIKM) KNARG5 ! OUT
187 
188 IF (.NOT. fa_com_default_init) CALL new_fa_default ()
189 
190 CALL faveur_mt &
191 & (fa, krep, knumer, kngrib, knarg1, knarg2, knarg3, &
192 & knarg4, knarg5)
193 
194 END SUBROUTINE faveur
195 
196 SUBROUTINE faveur_mt &
197 & (fa, krep, knumer, kngrib, knarg1, knarg2, knarg3, &
198 & knarg4, knarg5)
199 USE fa_mod, ONLY : fa_com
200 USE lfi_precision
201 IMPLICIT NONE
202 ! Arguments
203 type(fa_com) fa ! INOUT
204 INTEGER (KIND=JPLIKM) KREP ! OUT
205 INTEGER (KIND=JPLIKM) KNUMER ! IN
206 INTEGER (KIND=JPLIKM) KNGRIB ! OUT
207 INTEGER (KIND=JPLIKM) KNARG1 ! OUT
208 INTEGER (KIND=JPLIKM) KNARG2 ! OUT
209 INTEGER (KIND=JPLIKM) KNARG3 ! OUT
210 INTEGER (KIND=JPLIKM) KNARG4 ! OUT
211 INTEGER (KIND=JPLIKM) KNARG5 ! OUT
212 ! Local integers
213 INTEGER (KIND=JPLIKB) IREP ! OUT
214 INTEGER (KIND=JPLIKB) INUMER ! IN
215 INTEGER (KIND=JPLIKB) INGRIB ! OUT
216 INTEGER (KIND=JPLIKB) INARG1 ! OUT
217 INTEGER (KIND=JPLIKB) INARG2 ! OUT
218 INTEGER (KIND=JPLIKB) INARG3 ! OUT
219 INTEGER (KIND=JPLIKB) INARG4 ! OUT
220 INTEGER (KIND=JPLIKB) INARG5 ! OUT
221 ! Convert arguments
222 
223 inumer = int( knumer, jplikb)
224 
225 CALL faveur_fort &
226 & (fa, irep, inumer, ingrib, inarg1, inarg2, inarg3, &
227 & inarg4, inarg5)
228 
229 krep = int( irep, jplikm)
230 kngrib = int( ingrib, jplikm)
231 knarg1 = int( inarg1, jplikm)
232 knarg2 = int( inarg2, jplikm)
233 knarg3 = int( inarg3, jplikm)
234 knarg4 = int( inarg4, jplikm)
235 knarg5 = int( inarg5, jplikm)
236 
237 END SUBROUTINE faveur_mt
238 
239 !INTF KREP OUT
240 !INTF KNUMER IN
241 !INTF KNGRIB OUT
242 !INTF KNARG1 OUT
243 !INTF KNARG2 OUT
244 !INTF KNARG3 OUT
245 !INTF KNARG4 OUT
246 !INTF KNARG5 OUT
247 
subroutine faveur_mt(FA, KREP, KNUMER, KNGRIB, KNARG1, KNARG2, KNARG3, KNARG4, KNARG5)
Definition: faveur.F90:199
integer, parameter jplikb
logical, save fa_com_default_init
Definition: fa_mod.F90:477
subroutine new_fa_default()
Definition: fa_mod.F90:649
Definition: fa_mod.F90:1
subroutine faveur(KREP, KNUMER, KNGRIB, KNARG1, KNARG2, KNARG3, KNARG4, KNARG5)
Definition: faveur.F90:173
subroutine lfiver_fort(LFI, PVEROU, CDSENS)
Definition: lfiver.F90:6
integer, parameter jprb
Definition: parkind1.F90:32
subroutine faveur_fort(FA, KREP, KNUMER, KNGRIB, KNARG1, KNARG2, KNARG3, KNARG4, KNARG5)
Definition: faveur.F90:6
logical lhook
Definition: yomhook.F90:15
subroutine faveur64(KREP, KNUMER, KNGRIB, KNARG1, KNARG2, KNARG3, KNARG4, KNARG5)
Definition: faveur.F90:147
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 fanumu_fort(FA, KNUMER, KRANG)
Definition: fanumu.F90:5