SURFEX v8.1
General documentation of Surfex
lfiopt.F90
Go to the documentation of this file.
1 ! Oct-2012 P. Marguinaud 64b LFI
2 ! Jan-2011 P. Marguinaud Thread-safe LFI
3 
4 SUBROUTINE lfiopt_fort &
5 & (lfi, krep, knumer, ldnomm, cdnomf, &
6 & cdstto, lderfa, &
7 & ldimst, knimes)
8 USE lfimod, ONLY : lficom
9 USE parkind1, ONLY : jprb
10 USE yomhook , ONLY : lhook, dr_hook
11 USE lfi_precision
12 IMPLICIT NONE
13 !****
14 ! SOUS-PROGRAMME DE RECUPERATION DES OPTIONS D'OUVERTURE
15 ! D'UN FICHIER INDEXE, PAR LE LOGICIEL LFI.
16 !**
17 ! ARGUMENTS : KREP (SORTIE) ==> CODE-REPONSE DU SOUS-PROGRAMME;
18 ! KNUMER (ENTREE) ==> LFI%NUMERO DE L'UNITE LOGIQUE;
19 ! LDNOMM (SORTIE) ==> VRAI SI L'UNITE LOGIQUE DOIT ETRE
20 ! ASSOCIEE A UN NOM DE FICHIER EXP-
21 ! LICITE LORS DE L'"OPEN" FORTRAN;
22 ! CDNOMF (SORTIE) ==> NOM DE FICHIER EXPLICITE, SI
23 ! *LDNOMM* EST VRAI - MEME SI CE
24 ! N'EST PAS LE CAS, CE *DOIT* ETRE
25 ! UN OBJET DE TYPE "CHARACTER" .
26 ! CDSTTO (SORTIE) ==> "STATUS" POUR L'"OPEN" FORTRAN
27 ! ('OLD','NEW','UNKNOWN','SCRATCH')
28 ! PAR DEFAUT, METTRE 'UNKNOWN';
29 ! LDERFA (SORTIE) ==> OPTION D'ERREUR FATALE;
30 ! LDIMST (SORTIE) ==> OPTION IMPRESSION DE STATISTIQUES
31 ! AU MOMENT DE LA FERMETURE;
32 ! KNIMES (SORTIE) ==> NIVEAU DE LA MESSAGERIE (0,1 OU 2)
33 ! ( 0==>RIEN, 2==>TOUT )
34 CHARACTER CPNOMD*(*)
35 parameter( cpnomd='%%%%% FICHIER SANS NOM %%%%%' )
36 TYPE(lficom) :: LFI
37 INTEGER (KIND=JPLIKB) KREP, KNUMER, KNIMES
38 INTEGER (KIND=JPLIKB) IRANG, IREP
39 !
40 LOGICAL LDNOMM, LDERFA, LDIMST
41 !
42 CHARACTER CDNOMF*(*), CDSTTO*(*)
43 
44 REAL(KIND=JPRB) :: ZHOOK_HANDLE
45 IF (lhook) CALL dr_hook('LFIOPT_FORT',0,zhook_handle)
46 
47 irep=0
48 irang=0
49 CALL lfinum_fort &
50 & (lfi, knumer,irang)
51 
52 IF (irang .EQ. 0) THEN
53  irep=-1
54  GOTO 1001
55 ENDIF
56 
57 ldnomm=cpnomd.NE.lfi%CNOMFI(irang)
58 cdnomf=lfi%CNOMFI(irang)
59 cdstto=lfi%CSTAOP(irang)
60 lderfa=lfi%LERFAT(irang)
61 ldimst=lfi%LISTAT(irang)
62 knimes=lfi%NIVMES(irang)
63 
64 1001 CONTINUE
65 
66 krep=irep
67 
68 IF (lhook) CALL dr_hook('LFIOPT_FORT',1,zhook_handle)
69 END SUBROUTINE lfiopt_fort
70 
71 
72 
73 
74 ! Oct-2012 P. Marguinaud 64b LFI
75 SUBROUTINE lfiopt64 &
76 & (krep, knumer, ldnomm, cdnomf, cdstto, lderfa, &
77 & ldimst, knimes)
78 USE lfimod, ONLY : lfi => lficom_default, &
81 USE lfi_precision
82 IMPLICIT NONE
83 ! Arguments
84 INTEGER (KIND=JPLIKB) KREP ! OUT
85 INTEGER (KIND=JPLIKB) KNUMER ! IN
86 LOGICAL LDNOMM ! OUT
87 CHARACTER (LEN=*) CDNOMF ! OUT
88 CHARACTER (LEN=*) CDSTTO ! OUT
89 LOGICAL LDERFA ! OUT
90 LOGICAL LDIMST ! OUT
91 INTEGER (KIND=JPLIKB) KNIMES ! OUT
92 
93 IF (.NOT. lficom_default_init) CALL new_lfi_default ()
94 
95 CALL lfiopt_fort &
96 & (lfi, krep, knumer, ldnomm, cdnomf, cdstto, lderfa, &
97 & ldimst, knimes)
98 
99 END SUBROUTINE lfiopt64
100 
101 SUBROUTINE lfiopt &
102 & (krep, knumer, ldnomm, cdnomf, cdstto, lderfa, &
103 & ldimst, knimes)
104 USE lfimod, ONLY : lfi => lficom_default, &
107 USE lfi_precision
108 IMPLICIT NONE
109 ! Arguments
110 INTEGER (KIND=JPLIKM) KREP ! OUT
111 INTEGER (KIND=JPLIKM) KNUMER ! IN
112 LOGICAL LDNOMM ! OUT
113 CHARACTER (LEN=*) CDNOMF ! OUT
114 CHARACTER (LEN=*) CDSTTO ! OUT
115 LOGICAL LDERFA ! OUT
116 LOGICAL LDIMST ! OUT
117 INTEGER (KIND=JPLIKM) KNIMES ! OUT
118 
119 IF (.NOT. lficom_default_init) CALL new_lfi_default ()
120 
121 CALL lfiopt_mt &
122 & (lfi, krep, knumer, ldnomm, cdnomf, cdstto, lderfa, &
123 & ldimst, knimes)
124 
125 END SUBROUTINE lfiopt
126 
127 SUBROUTINE lfiopt_mt &
128 & (lfi, krep, knumer, ldnomm, cdnomf, cdstto, lderfa, &
129 & ldimst, knimes)
130 USE lfimod, ONLY : lficom
131 USE lfi_precision
132 IMPLICIT NONE
133 ! Arguments
134 type(lficom) lfi ! INOUT
135 INTEGER (KIND=JPLIKM) KREP ! OUT
136 INTEGER (KIND=JPLIKM) KNUMER ! IN
137 LOGICAL LDNOMM ! OUT
138 CHARACTER (LEN=*) CDNOMF ! OUT
139 CHARACTER (LEN=*) CDSTTO ! OUT
140 LOGICAL LDERFA ! OUT
141 LOGICAL LDIMST ! OUT
142 INTEGER (KIND=JPLIKM) KNIMES ! OUT
143 ! Local integers
144 INTEGER (KIND=JPLIKB) IREP ! OUT
145 INTEGER (KIND=JPLIKB) INUMER ! IN
146 INTEGER (KIND=JPLIKB) INIMES ! OUT
147 ! Convert arguments
148 
149 inumer = int( knumer, jplikb)
150 
151 CALL lfiopt_fort &
152 & (lfi, irep, inumer, ldnomm, cdnomf, cdstto, lderfa, &
153 & ldimst, inimes)
154 
155 krep = int( irep, jplikm)
156 knimes = int( inimes, jplikm)
157 
158 END SUBROUTINE lfiopt_mt
159 
160 !INTF KREP OUT
161 !INTF KNUMER IN
162 !INTF LDNOMM OUT
163 !INTF CDNOMF OUT
164 !INTF CDSTTO OUT
165 !INTF LDERFA OUT
166 !INTF LDIMST OUT
167 !INTF KNIMES OUT
integer, parameter jplikb
subroutine lfiopt_fort(LFI, KREP, KNUMER, LDNOMM, CDNOMF, CDSTTO, LDERFA, LDIMST, KNIMES)
Definition: lfiopt.F90:8
subroutine new_lfi_default()
Definition: lfimod.F90:376
subroutine lfiopt_mt(LFI, KREP, KNUMER, LDNOMM, CDNOMF, CDSTTO, LDERFA, LDIMST, KNIMES)
Definition: lfiopt.F90:130
subroutine lfiopt64(KREP, KNUMER, LDNOMM, CDNOMF, CDSTTO, LDERFA, LDIMST, KNIMES)
Definition: lfiopt.F90:78
logical, save lficom_default_init
Definition: lfimod.F90:371
subroutine lfinum_fort(LFI, KNUMER, KRANG)
Definition: lfinum.F90:6
integer, parameter jprb
Definition: parkind1.F90:32
subroutine lfiopt(KREP, KNUMER, LDNOMM, CDNOMF, CDSTTO, LDERFA, LDIMST, KNIMES)
Definition: lfiopt.F90:104
type(lficom), target, save lficom_default
Definition: lfimod.F90:370
logical lhook
Definition: yomhook.F90:15
integer, parameter jplikm
Definition: lfimod.F90:1