SURFEX v8.1
General documentation of Surfex
lfifmp.F90
Go to the documentation of this file.
1 ! Oct-2012 P. Marguinaud 64b LFI
2 ! Jan-2011 P. Marguinaud Thread-safe LFI
3 SUBROUTINE lfifmp_fort &
4 & (lfi, knumer, kranfm )
5 USE lfimod, ONLY : lficom
6 USE parkind1, ONLY : jprb
7 USE yomhook , ONLY : lhook, dr_hook
9 IMPLICIT NONE
10 !****
11 ! Sous-programme *INTERNE* du Logiciel de Fichiers Indexes LFI.
12 ! Calcule le rang de l'unite logique *KNUMER* dans la table des
13 ! Unites Logiques a Facteur Multiplicatif predefini;
14 ! si l'Unite Logique n'y est pas trouvee, le resultat est ZERO.
15 !
16 ! En mode Multi-Taches, il est necessaire de verrouiller
17 ! Globalement le code faisant appel a ce sous-programme.
18 !**
19 ! ARGUMENTS : KNUMER (Entree) ==> Numero d'unite logique cherche;
20 ! KRANFM (Sortie) ==> Rang dans la table des unites
21 ! logiques a Facteur Multiplicatif
22 ! predefini (0 si pas trouve).
23 !
24 !
25 TYPE(lficom) :: LFI
26 INTEGER (KIND=JPLIKB) KNUMER, KRANFM, J, IRANFM
27 
28 !**
29 ! 1. - RECHERCHE DIRECTE DANS LA TABLE *LFI%MULOFM*.
30 !-----------------------------------------------------------------------
31 !
32 REAL(KIND=JPRB) :: ZHOOK_HANDLE
33 IF (lhook) CALL dr_hook('LFIFMP_FORT',0,zhook_handle)
34 DO j=1,lfi%NULOFM
35 !
36 IF (knumer.EQ.lfi%MULOFM(j)) THEN
37  iranfm=j
38  GOTO 102
39 ENDIF
40 !
41 ENDDO
42 !
43 iranfm=0
44 !
45 102 CONTINUE
46 kranfm=iranfm
47 !
48 IF (lhook) CALL dr_hook('LFIFMP_FORT',1,zhook_handle)
49 END SUBROUTINE lfifmp_fort
50 
51 
52 
53 ! Oct-2012 P. Marguinaud 64b LFI
54 SUBROUTINE lfifmp64 &
55 & (knumer, kranfm)
56 USE lfimod, ONLY : lfi => lficom_default, &
59 USE lfi_precision
60 IMPLICIT NONE
61 ! Arguments
62 INTEGER (KIND=JPLIKB) KNUMER ! IN
63 INTEGER (KIND=JPLIKB) KRANFM ! OUT
64 
65 IF (.NOT. lficom_default_init) CALL new_lfi_default ()
66 
67 CALL lfifmp_fort &
68 & (lfi, knumer, kranfm)
69 
70 END SUBROUTINE lfifmp64
71 
72 SUBROUTINE lfifmp &
73 & (knumer, kranfm)
74 USE lfimod, ONLY : lfi => lficom_default, &
77 USE lfi_precision
78 IMPLICIT NONE
79 ! Arguments
80 INTEGER (KIND=JPLIKM) KNUMER ! IN
81 INTEGER (KIND=JPLIKM) KRANFM ! OUT
82 
83 IF (.NOT. lficom_default_init) CALL new_lfi_default ()
84 
85 CALL lfifmp_mt &
86 & (lfi, knumer, kranfm)
87 
88 END SUBROUTINE lfifmp
89 
90 SUBROUTINE lfifmp_mt &
91 & (lfi, knumer, kranfm)
92 USE lfimod, ONLY : lficom
93 USE lfi_precision
94 IMPLICIT NONE
95 ! Arguments
96 type(lficom) lfi ! INOUT
97 INTEGER (KIND=JPLIKM) KNUMER ! IN
98 INTEGER (KIND=JPLIKM) KRANFM ! OUT
99 ! Local integers
100 INTEGER (KIND=JPLIKB) INUMER ! IN
101 INTEGER (KIND=JPLIKB) IRANFM ! OUT
102 ! Convert arguments
103 
104 inumer = int( knumer, jplikb)
105 
106 CALL lfifmp_fort &
107 & (lfi, inumer, iranfm)
108 
109 kranfm = int( iranfm, jplikm)
110 
111 END SUBROUTINE lfifmp_mt
112 
113 !INTF KNUMER IN
114 !INTF KRANFM OUT
subroutine lfifmp_mt(LFI, KNUMER, KRANFM)
Definition: lfifmp.F90:92
integer, parameter jplikb
subroutine lfifmp_fort(LFI, KNUMER, KRANFM)
Definition: lfifmp.F90:5
subroutine lfifmp(KNUMER, KRANFM)
Definition: lfifmp.F90:74
subroutine new_lfi_default()
Definition: lfimod.F90:376
logical, save lficom_default_init
Definition: lfimod.F90:371
integer, parameter jprb
Definition: parkind1.F90:32
type(lficom), target, save lficom_default
Definition: lfimod.F90:370
logical lhook
Definition: yomhook.F90:15
integer, parameter jplikm
subroutine lfifmp64(KNUMER, KRANFM)
Definition: lfifmp.F90:56
Definition: lfimod.F90:1