SURFEX v8.1
General documentation of Surfex
lfinum.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 lfinum_fort &
5 & (lfi, knumer, krang )
6 USE lfimod, ONLY : lficom
7 USE parkind1, ONLY : jprb
8 USE yomhook , ONLY : lhook, dr_hook
10 IMPLICIT NONE
11 !****
12 ! CE SOUS-PROGRAMME CALCULE LE RANG DU LFI%NUMERO D'UNITE LOGIQUE
13 ! *KNUMER* DANS LA TABLE DES UNITES LOGIQUES *LFI%NUMERO*;
14 ! S'IL N'Y EST PAS TROUVE, LE RESULTAT EST ZERO.
15 ! CE SOUS-PROGRAMME, APPELE PAR *TOUS* LES SOUS-PROGRAMMES NON
16 ! GLOBAUX DU LOGICIEL DE FICHIERS INDEXES LFI, SE CHARGE LORS DE SON
17 ! PREMIER APPEL D'APPELER LE SOUS-PROGRAMME PREPARATOIRE LFIINI.
18 !**
19 ! ARGUMENTS : KNUMER (ENTREE) ==> LFI%NUMERO D'UNITE LOGIQUE CHERCHE;
20 ! KRANG (SORTIE) ==> RANG DANS LA TABLE DES FICHIERS
21 ! DU LOGICIEL LFI (0 SI ABSENT).
22 !
23 !
24 TYPE(lficom) :: LFI
25 INTEGER (KIND=JPLIKB) KNUMER, KRANG, J, IRESUL, IREP, INIMES
26 CHARACTER(LEN=LFI%JPLSPX) CLNSPR
27 CHARACTER(LEN=LFI%JPLMES) CLMESS
28 CHARACTER(LEN=LFI%JPLFTX) CLACTI
29 
30 !
31 REAL(KIND=JPRB) :: ZHOOK_HANDLE
32 IF (lhook) CALL dr_hook('LFINUM_FORT',0,zhook_handle)
33 clacti=''
34 IF (lfi%LFINUM_LLPREA) THEN
35  CALL lfiini_fort &
36 & (lfi, 2_jplikb )
37  lfi%LFINUM_LLPREA=.false.
38 ENDIF
39 !
40 ! VERROUILLAGE GLOBAL (A CAUSE DE L'UTILISATION DE LFI%NBFIOU )
41 !
42  IF (lfi%LMULTI) CALL lfiver_fort &
43 & (lfi, lfi%VERGLA,'ON')
44 !
45 DO j=1,lfi%NBFIOU
46 !
47 IF (knumer.EQ.lfi%NUMERO(lfi%NUMIND(j))) THEN
48  iresul=lfi%NUMIND(j)
49  GOTO 20
50 ENDIF
51 !
52 ENDDO
53 !
54 iresul=0
55 !
56 20 CONTINUE
57 !
58 ! DEVERROUILLAGE GLOBAL
59 !
60  IF (lfi%LMULTI) CALL lfiver_fort &
61 & (lfi, lfi%VERGLA,'OFF')
62 krang=iresul
63 !**
64 ! 10. - PHASE TERMINALE : MESSAGERIE INTERNE EVENTUELLE,
65 ! VIA LE SOUS-PROGRAMME "LFIEMS", PUIS RETOUR.
66 !-----------------------------------------------------------------------
67 !
68 IF (lfi%LMISOP) THEN
69  irep=0
70  inimes=2
71  clnspr='LFINUM'
72  WRITE (unit=clmess,fmt='(''KNUMER='',I3,'', KRANG='',I3)') &
73 & knumer,krang
74  CALL lfiems_fort &
75 & (lfi, knumer,inimes,irep,.false., &
76 & clmess,clnspr,clacti)
77 ENDIF
78 !
79 IF (lhook) CALL dr_hook('LFINUM_FORT',1,zhook_handle)
80 END SUBROUTINE lfinum_fort
81 
82 
83 
84 ! Oct-2012 P. Marguinaud 64b LFI
85 SUBROUTINE lfinum64 &
86 & (knumer, krang)
87 USE lfimod, ONLY : lfi => lficom_default, &
90 USE lfi_precision
91 IMPLICIT NONE
92 ! Arguments
93 INTEGER (KIND=JPLIKB) KNUMER ! IN
94 INTEGER (KIND=JPLIKB) KRANG ! OUT
95 
96 IF (.NOT. lficom_default_init) CALL new_lfi_default ()
97 
98 CALL lfinum_fort &
99 & (lfi, knumer, krang)
100 
101 END SUBROUTINE lfinum64
102 
103 SUBROUTINE lfinum &
104 & (knumer, krang)
105 USE lfimod, ONLY : lfi => lficom_default, &
108 USE lfi_precision
109 IMPLICIT NONE
110 ! Arguments
111 INTEGER (KIND=JPLIKM) KNUMER ! IN
112 INTEGER (KIND=JPLIKM) KRANG ! OUT
113 
114 IF (.NOT. lficom_default_init) CALL new_lfi_default ()
115 
116 CALL lfinum_mt &
117 & (lfi, knumer, krang)
118 
119 END SUBROUTINE lfinum
120 
121 SUBROUTINE lfinum_mt &
122 & (lfi, knumer, krang)
123 USE lfimod, ONLY : lficom
124 USE lfi_precision
125 IMPLICIT NONE
126 ! Arguments
127 type(lficom) lfi ! INOUT
128 INTEGER (KIND=JPLIKM) KNUMER ! IN
129 INTEGER (KIND=JPLIKM) KRANG ! OUT
130 ! Local integers
131 INTEGER (KIND=JPLIKB) INUMER ! IN
132 INTEGER (KIND=JPLIKB) IRANG ! OUT
133 ! Convert arguments
134 
135 inumer = int( knumer, jplikb)
136 
137 CALL lfinum_fort &
138 & (lfi, inumer, irang)
139 
140 krang = int( irang, jplikm)
141 
142 END SUBROUTINE lfinum_mt
143 
144 !INTF KNUMER IN
145 !INTF KRANG OUT
integer, parameter jplikb
subroutine new_lfi_default()
Definition: lfimod.F90:376
logical, save lficom_default_init
Definition: lfimod.F90:371
subroutine lfinum_mt(LFI, KNUMER, KRANG)
Definition: lfinum.F90:123
subroutine lfinum_fort(LFI, KNUMER, KRANG)
Definition: lfinum.F90:6
subroutine lfiver_fort(LFI, PVEROU, CDSENS)
Definition: lfiver.F90:6
integer, parameter jprb
Definition: parkind1.F90:32
subroutine lfinum64(KNUMER, KRANG)
Definition: lfinum.F90:87
subroutine lfiini_fort(LFI, KOPTIO)
Definition: lfiini.F90:6
type(lficom), target, save lficom_default
Definition: lfimod.F90:370
logical lhook
Definition: yomhook.F90:15
integer, parameter jplikm
subroutine lfiems_fort(LFI, KNUMER, KNIMES, KCODE, LDFATA, CDMESS, CDNSPR, CDACTI)
Definition: lfiems.F90:7
Definition: lfimod.F90:1
subroutine lfinum(KNUMER, KRANG)
Definition: lfinum.F90:105