SURFEX v8.1
General documentation of Surfex
faiopt.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 faiopt_fort &
4 & (fa, krep, knumer, ldnomm, cdnomf, cdsttu, &
5 & lderfa, ldimst, knimes, cdnomc)
6 USE fa_mod, ONLY : fa_com
7 USE parkind1, ONLY : jprb
8 USE yomhook , ONLY : lhook, dr_hook
10 IMPLICIT NONE
11 !****
12 ! Sous-programme de recuperation des options d'OUVERTURE d'une unite
13 ! logique "Fichier ARPEGE".
14 ! Il s'agit d'un fichier indexe, traite par le logiciel LFI.
15 !
16 !**
17 ! ARGUMENTS : Ce sont les memes que pour "FAITOU", sauf KNBARP
18 ! et KNBARI qui ont ete retires
19 !
20 ! KREP (Sortie) ==> Code-reponse du sous-programme;
21 ! KNUMER (Entree) ==> Numero de l'unite logique;
22 ! LDNOMM (Sortie) ==> Vrai si l'unite logique doit etre
23 ! associee a un NOM de Fichier EXP-
24 ! LICITE lors de l'"OPEN" FORTRAN;
25 ! CDNOMF (Sortie) ==> Nom de fichier explicite, si
26 ! *LDNOMM* est VRAI - Meme si ce
27 ! n'est pas le cas, ce *DOIT* ETRE
28 ! UN OBJET DE TYPE "CHARACTER" .
29 ! CDSTTU (Sortie) ==> "STATUS" pour l'"OPEN" FORTRAN
30 ! ('OLD','NEW','UNKNOWN','SCRATCH')
31 ! par defaut, mettre 'UNKNOWN';
32 ! LDERFA (Sortie) ==> Option d'erreur fatale;
33 ! LDIMST (Sortie) ==> Option impression de Statistiques
34 ! au moment de la fermeture;
35 ! KNIMES (Sortie) ==> Niveau de la Messagerie (0,1 ou 2)
36 ! ( 0==>Rien, 2==>Tout )
37 ! CDNOMC (Sortie) ==> Nom du CADRE associe au fichier.
38 !*
39 ! N.B. : Pour un fichier en mode creation, ce cadre doit avoir ete
40 ! defini au prealable (via le sous-programme FACADE, ou par
41 ! l'ouverture d'un fichier preexistant).
42 ! Pour un fichier ARPEGE preexistant, le cadre est lu sur le
43 ! fichier; s'il etait deja defini auparavant, il y a controle
44 ! de coherence entre les deux versions du cadre.
45 !
46 !
47 TYPE(fa_com) :: FA
48 INTEGER (KIND=JPLIKB) KREP, KNUMER, KNIMES
49 !
50 CHARACTER CPNOMD*(*)
51 parameter( cpnomd='%%%%% FICHIER SANS NOM %%%%%' )
52 !
53 INTEGER (KIND=JPLIKB) IRANG, IRANGC
54 LOGICAL LDNOMM, LDERFA, LDIMST
55 INTEGER (KIND=JPLIKB) IREP
56 !
57 CHARACTER CDNOMF*(*), CDSTTU*(*), CDNOMC*(*)
58 !
59 REAL(KIND=JPRB) :: ZHOOK_HANDLE
60 
61 IF (lhook) CALL dr_hook('FAIOPT_MT',0,zhook_handle)
62 
63 irep=0
64 irang=0
65 CALL fanumu_fort &
66 & (fa, knumer, irang)
67 
68 IF (irang .EQ. 0) THEN
69  irep=-1
70  GOTO 1001
71 ENDIF
72 
73 irangc=fa%FICHIER(irang)%NUCADR
74 cdnomc=fa%CADRE(irangc)%CNOMCA
75 ldnomm=fa%FICHIER(irang)%LNOMME
76 knimes=fa%FICHIER(irang)%NIVOMS
77 lderfa=fa%FICHIER(irang)%LERRFA
78 cdnomf=cpnomd
79 cdsttu=''
80 ldimst=.false.
81 
82 IF (ldnomm) THEN
83  CALL lfiopt_fort &
84 & (fa%LFI, irep, knumer, ldnomm, cdnomf, &
85 & cdsttu, lderfa, ldimst, knimes)
86 
87  IF (irep .NE. 0) GOTO 1001
88 ENDIF
89 
90 1001 CONTINUE
91 krep=irep
92 IF (lhook) CALL dr_hook('FAIOPT_MT',1,zhook_handle)
93 END SUBROUTINE faiopt_fort
94 
95 
96 
97 
98 ! Oct-2012 P. Marguinaud 64b LFI
99 SUBROUTINE faiopt64 &
100 & (krep, knumer, ldnomm, cdnomf, cdsttu, lderfa, &
101 & ldimst, knimes, cdnomc)
102 USE fa_mod, ONLY : fa => fa_com_default, &
105 USE lfi_precision
106 IMPLICIT NONE
107 ! Arguments
108 INTEGER (KIND=JPLIKB) KREP ! OUT
109 INTEGER (KIND=JPLIKB) KNUMER ! IN
110 LOGICAL LDNOMM ! OUT
111 CHARACTER (LEN=*) CDNOMF ! OUT
112 CHARACTER (LEN=*) CDSTTU ! OUT
113 LOGICAL LDERFA ! OUT
114 LOGICAL LDIMST ! OUT
115 INTEGER (KIND=JPLIKB) KNIMES ! OUT
116 CHARACTER (LEN=*) CDNOMC ! OUT
117 
118 IF (.NOT. fa_com_default_init) CALL new_fa_default ()
119 
120 CALL faiopt_fort &
121 & (fa, krep, knumer, ldnomm, cdnomf, cdsttu, lderfa, &
122 & ldimst, knimes, cdnomc)
123 
124 END SUBROUTINE faiopt64
125 
126 SUBROUTINE faiopt &
127 & (krep, knumer, ldnomm, cdnomf, cdsttu, lderfa, &
128 & ldimst, knimes, cdnomc)
129 USE fa_mod, ONLY : fa => fa_com_default, &
132 USE lfi_precision
133 IMPLICIT NONE
134 ! Arguments
135 INTEGER (KIND=JPLIKM) KREP ! OUT
136 INTEGER (KIND=JPLIKM) KNUMER ! IN
137 LOGICAL LDNOMM ! OUT
138 CHARACTER (LEN=*) CDNOMF ! OUT
139 CHARACTER (LEN=*) CDSTTU ! OUT
140 LOGICAL LDERFA ! OUT
141 LOGICAL LDIMST ! OUT
142 INTEGER (KIND=JPLIKM) KNIMES ! OUT
143 CHARACTER (LEN=*) CDNOMC ! OUT
144 
145 IF (.NOT. fa_com_default_init) CALL new_fa_default ()
146 
147 CALL faiopt_mt &
148 & (fa, krep, knumer, ldnomm, cdnomf, cdsttu, lderfa, &
149 & ldimst, knimes, cdnomc)
150 
151 END SUBROUTINE faiopt
152 
153 SUBROUTINE faiopt_mt &
154 & (fa, krep, knumer, ldnomm, cdnomf, cdsttu, lderfa, &
155 & ldimst, knimes, cdnomc)
156 USE fa_mod, ONLY : fa_com
157 USE lfi_precision
158 IMPLICIT NONE
159 ! Arguments
160 type(fa_com) fa ! INOUT
161 INTEGER (KIND=JPLIKM) KREP ! OUT
162 INTEGER (KIND=JPLIKM) KNUMER ! IN
163 LOGICAL LDNOMM ! OUT
164 CHARACTER (LEN=*) CDNOMF ! OUT
165 CHARACTER (LEN=*) CDSTTU ! OUT
166 LOGICAL LDERFA ! OUT
167 LOGICAL LDIMST ! OUT
168 INTEGER (KIND=JPLIKM) KNIMES ! OUT
169 CHARACTER (LEN=*) CDNOMC ! OUT
170 ! Local integers
171 INTEGER (KIND=JPLIKB) IREP ! OUT
172 INTEGER (KIND=JPLIKB) INUMER ! IN
173 INTEGER (KIND=JPLIKB) INIMES ! OUT
174 ! Convert arguments
175 
176 inumer = int( knumer, jplikb)
177 
178 CALL faiopt_fort &
179 & (fa, irep, inumer, ldnomm, cdnomf, cdsttu, lderfa, &
180 & ldimst, inimes, cdnomc)
181 
182 krep = int( irep, jplikm)
183 knimes = int( inimes, jplikm)
184 
185 END SUBROUTINE faiopt_mt
186 
187 !INTF KREP OUT
188 !INTF KNUMER IN
189 !INTF LDNOMM OUT
190 !INTF CDNOMF OUT
191 !INTF CDSTTU OUT
192 !INTF LDERFA OUT
193 !INTF LDIMST OUT
194 !INTF KNIMES OUT
195 !INTF CDNOMC OUT
subroutine faiopt64(KREP, KNUMER, LDNOMM, CDNOMF, CDSTTU, LDERFA, LDIMST, KNIMES, CDNOMC)
Definition: faiopt.F90:102
integer, parameter jplikb
subroutine faiopt(KREP, KNUMER, LDNOMM, CDNOMF, CDSTTU, LDERFA, LDIMST, KNIMES, CDNOMC)
Definition: faiopt.F90:129
logical, save fa_com_default_init
Definition: fa_mod.F90:477
subroutine lfiopt_fort(LFI, KREP, KNUMER, LDNOMM, CDNOMF, CDSTTO, LDERFA, LDIMST, KNIMES)
Definition: lfiopt.F90:8
subroutine new_fa_default()
Definition: fa_mod.F90:649
subroutine faiopt_mt(FA, KREP, KNUMER, LDNOMM, CDNOMF, CDSTTU, LDERFA, LDIMST, KNIMES, CDNOMC)
Definition: faiopt.F90:156
Definition: fa_mod.F90:1
subroutine faiopt_fort(FA, KREP, KNUMER, LDNOMM, CDNOMF, CDSTTU, LDERFA, LDIMST, KNIMES, CDNOMC)
Definition: faiopt.F90:6
integer, parameter jprb
Definition: parkind1.F90:32
logical lhook
Definition: yomhook.F90:15
integer, parameter jplikm
type(fa_com), target, save fa_com_default
Definition: fa_mod.F90:476
subroutine fanumu_fort(FA, KNUMER, KRANG)
Definition: fanumu.F90:5