SURFEX v8.1
General documentation of Surfex
fanuca.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 fanuca_fort &
4 & (fa, cdnomc, krangc, ldverr )
5 USE fa_mod, ONLY : fa_com
6 USE parkind1, ONLY : jprb
7 USE yomhook , ONLY : lhook, dr_hook
9 IMPLICIT NONE
10 !****
11 ! Ce sous-programme calcule le RANG du Cadre de NOM
12 ! *CDNOMC* dans la table des noms de cadres *FA%CNOMCA*;
13 ! S'IL N'Y EST PAS TROUVE, LE RESULTAT EST ZERO.
14 ! Ce sous-programme, appele par plusieurs sous-programmes
15 ! du Logiciel de Fichiers ARPEGE, se charge lors de son
16 ! premier appel d'appeler le sous-programme preparatoire FARINE.
17 !**
18 ! Arguments : CDNOMC (Entree) ==> Nom de cadre cherche;
19 ! KRANGC (Sortie) ==> Rang dans la table des cadres
20 ! du logiciel FA (0 si absent);
21 ! LDVERR (Entree) ==> Sert, en mode multi-taches
22 ! seulement, a savoir si l'on doit
23 ! verrouiller globalement ou pas.
24 !
25 !
26 !
27 TYPE(fa_com) :: FA
28 INTEGER (KIND=JPLIKB) KRANGC
29 !
30 INTEGER (KIND=JPLIKB) J, IRESUL
31 !
32 CHARACTER CDNOMC*(*)
33 !
34 LOGICAL LDVERR, LLVERG
35 !
36 !
37 
38 !
39 REAL(KIND=JPRB) :: ZHOOK_HANDLE
40 IF (lhook) CALL dr_hook('FANUCA_MT',0,zhook_handle)
41 IF (fa%FANUCA_LLPREA) THEN
42  CALL farine_fort &
43 & (fa, 2_jplikb )
44  fa%FANUCA_LLPREA=.false.
45 ENDIF
46 !
47 ! VERROUILLAGE GLOBAL (A CAUSE DE L'UTILISATION DE FA%NFIOUV )
48 !
49 llverg=fa%LFAMUL.AND.ldverr
50 IF (llverg) CALL lfiver_fort &
51 & (fa%LFI, fa%VRGLAS,'ON')
52 !
53 DO j=1,fa%NCADEF
54 !
55 IF (cdnomc.EQ.fa%CADRE(fa%NCAIND(j))%CNOMCA) THEN
56  iresul=fa%NCAIND(j)
57  GOTO 20
58 ENDIF
59 !
60 ENDDO
61 !
62 iresul=0
63 !
64 20 CONTINUE
65 !
66 ! DEVERROUILLAGE GLOBAL
67 !
68 IF (llverg) CALL lfiver_fort &
69 & (fa%LFI, fa%VRGLAS,'OFF')
70 krangc=iresul
71 !
72 IF (lhook) CALL dr_hook('FANUCA_MT',1,zhook_handle)
73 END SUBROUTINE fanuca_fort
74 
75 
76 
77 ! Oct-2012 P. Marguinaud 64b LFI
78 SUBROUTINE fanuca64 &
79 & (cdnomc, krangc, ldverr)
80 USE fa_mod, ONLY : fa => fa_com_default, &
83 USE lfi_precision
84 IMPLICIT NONE
85 ! Arguments
86 CHARACTER (LEN=*) CDNOMC ! IN
87 INTEGER (KIND=JPLIKB) KRANGC ! OUT
88 LOGICAL LDVERR ! IN
89 
90 IF (.NOT. fa_com_default_init) CALL new_fa_default ()
91 
92 CALL fanuca_fort &
93 & (fa, cdnomc, krangc, ldverr)
94 
95 END SUBROUTINE fanuca64
96 
97 SUBROUTINE fanuca &
98 & (cdnomc, krangc, ldverr)
99 USE fa_mod, ONLY : fa => fa_com_default, &
102 USE lfi_precision
103 IMPLICIT NONE
104 ! Arguments
105 CHARACTER (LEN=*) CDNOMC ! IN
106 INTEGER (KIND=JPLIKM) KRANGC ! OUT
107 LOGICAL LDVERR ! IN
108 
109 IF (.NOT. fa_com_default_init) CALL new_fa_default ()
110 
111 CALL fanuca_mt &
112 & (fa, cdnomc, krangc, ldverr)
113 
114 END SUBROUTINE fanuca
115 
116 SUBROUTINE fanuca_mt &
117 & (fa, cdnomc, krangc, ldverr)
118 USE fa_mod, ONLY : fa_com
119 USE lfi_precision
120 IMPLICIT NONE
121 ! Arguments
122 type(fa_com) fa ! INOUT
123 CHARACTER (LEN=*) CDNOMC ! IN
124 INTEGER (KIND=JPLIKM) KRANGC ! OUT
125 LOGICAL LDVERR ! IN
126 ! Local integers
127 INTEGER (KIND=JPLIKB) IRANGC ! OUT
128 ! Convert arguments
129 
130 
131 CALL fanuca_fort &
132 & (fa, cdnomc, irangc, ldverr)
133 
134 krangc = int( irangc, jplikm)
135 
136 END SUBROUTINE fanuca_mt
137 
138 !INTF CDNOMC IN
139 !INTF KRANGC OUT
140 !INTF LDVERR IN
subroutine fanuca64(CDNOMC, KRANGC, LDVERR)
Definition: fanuca.F90:80
logical, save fa_com_default_init
Definition: fa_mod.F90:477
subroutine new_fa_default()
Definition: fa_mod.F90:649
subroutine fanuca_mt(FA, CDNOMC, KRANGC, LDVERR)
Definition: fanuca.F90:118
subroutine fanuca_fort(FA, CDNOMC, KRANGC, LDVERR)
Definition: fanuca.F90:5
Definition: fa_mod.F90:1
subroutine lfiver_fort(LFI, PVEROU, CDSENS)
Definition: lfiver.F90:6
integer, parameter jprb
Definition: parkind1.F90:32
subroutine farine_fort(FA, KOPTIO)
Definition: farine.F90:5
logical lhook
Definition: yomhook.F90:15
integer, parameter jplikm
subroutine fanuca(CDNOMC, KRANGC, LDVERR)
Definition: fanuca.F90:99
type(fa_com), target, save fa_com_default
Definition: fa_mod.F90:476