SURFEX v8.1
General documentation of Surfex
faisc1.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 faisc1_fort &
4 & (fa, krep, krang )
5 USE fa_mod, ONLY : fa_com, jpniil
6 USE parkind1, ONLY : jprb
7 USE yomhook , ONLY : lhook, dr_hook
9 IMPLICIT NONE
10 !****
11 ! Ce sous-programme initialise un tableau "reference" de
12 ! l'en-tete GRIB, section 1.
13 ! (routine appelee une seule fois pour un fichier donne)
14 !**
15 ! Arguments : KREP (Sortie) ==> Code-reponse du sous-programme;
16 ! KRANG (Entree) ==> Rang de l'unite logique;
17 !*
18 !
19 !
20 !
21 TYPE(fa_com) :: FA
22 INTEGER (KIND=JPLIKB) KREP, KRANG
23 !
24 INTEGER (KIND=JPLIKB) I, INUMER
25 INTEGER (KIND=JPLIKB) INIMES, IRANGC
26 !
27 CHARACTER(LEN=FA%JPLMES) CLMESS
28 CHARACTER(LEN=FA%JPLSPX) CLNSPR
29 LOGICAL LLFATA
30 
31 !**
32 ! 0. - INITIALISATIONS ET CONTROLES
33 !-----------------------------------------------------------------------
34 !
35 REAL(KIND=JPRB) :: ZHOOK_HANDLE
36 IF (lhook) CALL dr_hook('FAISC1_MT',0,zhook_handle)
37 krep=0
38 IF (krang.LE.0.OR.krang.GT.fa%JPNXFA) THEN
39  krep=-66
40  GOTO 1001
41 ENDIF
42 irangc=fa%FICHIER(krang)%NUCADR
43 !**
44 ! 1. - INIT. DU TAB. FA%NSEC1 REPRESENTANT LA SECTION 1 DE GRIBEX
45 !-----------------------------------------------------------------------
46 !
47 ! 2: identification of centre
48 !
49 ! (defaut=85 pour Toulouse; pour en changer, utiliser FAREGU)
50 fa%FICHIER(krang)%NSEC1(2) = 85
51 ! 3: generating process identification number, alloc by the orig. centre
52 IF (fa%CADRE(irangc)%LIMLAM) THEN
53 ! Il s'agit du modele Aladin
54  fa%FICHIER(krang)%NSEC1(3) = 177
55 ELSE
56 ! Il s'agit du modele Arpege
57  IF (fa%FICHIER(krang)%MADATE(7).GT.0) THEN
58 ! prevision
59  fa%FICHIER(krang)%NSEC1(3) = 211
60  ELSE
61 ! analyse
62  fa%FICHIER(krang)%NSEC1(3) = 201
63 ! analyse initialisee -> prevision
64  IF (fa%FICHIER(krang)%MADATE(9).EQ.1) fa%FICHIER(krang)%NSEC1(3) = 211
65  ENDIF
66 ENDIF
67 
68 fa%FICHIER(krang)%NIDCEN = fa%FICHIER(krang)%NSEC1(2)
69 
70 ! 4: grid definition
71 ! =255 for a non-catalogued grid (description follows in KSEC2)
72 fa%FICHIER(krang)%NSEC1(4) = 255
73 ! 5: flag showing whether sections 2 and 3 are present
74 ! 128 --> Section 2 is included, Section 3 is omitted (no bitmap)
75 fa%FICHIER(krang)%NSEC1(5) = 128
76 ! 6 a 9: to be initialized later (specific to each field)
77 fa%FICHIER(krang)%NSEC1(6:9) = 0
78 ! 10 a 21: valeurs deduites de FA%MADATE(1:11,KRANG)
79 !
80 ! rappel : 2000 --> an 100 (=FA%NSEC1(10)) siecle 20 (=FA%NSEC1(21))
81 ! 2001 --> an 1 " " siecle 21 " "
82 !
83 fa%FICHIER(krang)%NSEC1(10) = 1 + mod(fa%FICHIER(krang)%MADATE(1) - 1 , 100_jplikb )
84 fa%FICHIER(krang)%NSEC1(21) = 1 + (fa%FICHIER(krang)%MADATE(1) - 1) / 100
85 DO i=1,10
86  fa%FICHIER(krang)%NSEC1(10+i) = fa%FICHIER(krang)%MADATE(1+i)
87 ENDDO
88 
89 ! FA%NSEC1(18,KRANG)=10 signifie un codage sur 2 octets de l'echeance
90 ! Ce n'est pas le cas, donc on revient a 0 pour GRIBEX
91 IF (fa%FICHIER(krang)%NSEC1(18)==10) fa%FICHIER(krang)%NSEC1(18)=0
92 ! FA%MADATE(10,KRANG) peut contenir l'echeance precedente dans le cas
93 ! d'un calcul sur une periode (min, max par exemple): c'est une
94 ! convention dans FA (depuis fin 2000) qui est incompatible avec
95 ! GRIBEX. On retire donc cette valeur ici dans FA%NSEC1, sachant
96 ! qu'elle sera utilisee plus tard.
97 fa%FICHIER(krang)%NSEC1(19) = 0
98 !
99 !**
100 ! 10. - PHASE TERMINALE : MESSAGERIE, AVEC "ABORT" EVENTUEL,
101 ! VIA LE SOUS-PROGRAMME "FAIPAR" .
102 !-----------------------------------------------------------------------
103 !
104 1001 CONTINUE
105 llfata=llmoer(krep,krang)
106 !
107 IF (fa%LFAMOP.OR.llfata) THEN
108  inimes=2
109  clnspr='FAISC1'
110  inumer=jpniil
111 !
112  WRITE (unit=clmess,fmt='(''KREP='',I4,'', KRANG='',I4)') &
113 & krep, krang
114  CALL faipar_fort &
115 & (fa, inumer,inimes,krep,.false.,clmess, &
116 & clnspr, clnspr,.false.)
117 ENDIF
118 !
119 IF (lhook) CALL dr_hook('FAISC1_MT',1,zhook_handle)
120 
121 CONTAINS
122 
123 #include "facom2.llmoer.h"
124 
125 END SUBROUTINE faisc1_fort
126 
127 
128 
129 ! Oct-2012 P. Marguinaud 64b LFI
130 SUBROUTINE faisc164 &
131 & (krep, krang)
132 USE fa_mod, ONLY : fa => fa_com_default, &
135 USE lfi_precision
136 IMPLICIT NONE
137 ! Arguments
138 INTEGER (KIND=JPLIKB) KREP ! OUT
139 INTEGER (KIND=JPLIKB) KRANG ! IN
140 
141 IF (.NOT. fa_com_default_init) CALL new_fa_default ()
142 
143 CALL faisc1_fort &
144 & (fa, krep, krang)
145 
146 END SUBROUTINE faisc164
147 
148 SUBROUTINE faisc1 &
149 & (krep, krang)
150 USE fa_mod, ONLY : fa => fa_com_default, &
153 USE lfi_precision
154 IMPLICIT NONE
155 ! Arguments
156 INTEGER (KIND=JPLIKM) KREP ! OUT
157 INTEGER (KIND=JPLIKM) KRANG ! IN
158 
159 IF (.NOT. fa_com_default_init) CALL new_fa_default ()
160 
161 CALL faisc1_mt &
162 & (fa, krep, krang)
163 
164 END SUBROUTINE faisc1
165 
166 SUBROUTINE faisc1_mt &
167 & (fa, krep, krang)
168 USE fa_mod, ONLY : fa_com
169 USE lfi_precision
170 IMPLICIT NONE
171 ! Arguments
172 type(fa_com) fa ! INOUT
173 INTEGER (KIND=JPLIKM) KREP ! OUT
174 INTEGER (KIND=JPLIKM) KRANG ! IN
175 ! Local integers
176 INTEGER (KIND=JPLIKB) IREP ! OUT
177 INTEGER (KIND=JPLIKB) IRANG ! IN
178 ! Convert arguments
179 
180 irang = int( krang, jplikb)
181 
182 CALL faisc1_fort &
183 & (fa, irep, irang)
184 
185 krep = int( irep, jplikm)
186 
187 END SUBROUTINE faisc1_mt
188 
189 !INTF KREP OUT
190 !INTF KRANG IN
subroutine faisc1_mt(FA, KREP, KRANG)
Definition: faisc1.F90:168
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
integer, parameter jprb
Definition: parkind1.F90:32
logical lhook
Definition: yomhook.F90:15
subroutine faisc1(KREP, KRANG)
Definition: faisc1.F90:150
integer, parameter jplikm
type(fa_com), target, save fa_com_default
Definition: fa_mod.F90:476
subroutine faisc164(KREP, KRANG)
Definition: faisc1.F90:132
subroutine faipar_fort(FA, KNUMER, KNIMES, KCODE, LDFATA, CDMESS, CDNSPR, CDACTI, LDRLFI)
Definition: faipar.F90:6
subroutine faisc1_fort(FA, KREP, KRANG)
Definition: faisc1.F90:5
integer(kind=jplikb), parameter jpniil
Definition: fa_mod.F90:31