SURFEX v8.1
General documentation of Surfex
factui.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 factui_fort &
4 & (fa, krep, krangc )
6 USE parkind1, ONLY : jprb
7 USE yomhook , ONLY : lhook, dr_hook
9 IMPLICIT NONE
10 !****
11 ! Sous-programme A USAGE INTERNE AU LOGICIEL. Fait la suppression
12 ! d'un cadre ( vis-a-vis des tables du logiciel ) .
13 ! En mode multi-taches, il doit y avoir verrouillage global
14 ! de la zone d'appel au sous-programme.
15 !**
16 ! Arguments : KREP (Sortie) ==> Code-reponse du sous-programme;
17 ! KRANGC (Entree) ==> Rang du cadre dans les tables.
18 !
19 !
20 !
21 TYPE(fa_com) :: FA
22 INTEGER (KIND=JPLIKB) KREP, KRANGC
23 !
24 INTEGER (KIND=JPLIKB) J, IPOSCA, INIMES, INUMER
25 CHARACTER(LEN=FA%JPXNOM) CLACTI
26 CHARACTER(LEN=FA%JPLMES) CLMESS
27 CHARACTER(LEN=FA%JPLSPX) CLNSPR
28 LOGICAL LLFATA
29 
30 !**
31 ! 1. - CONTROLE PREALABLE DE COHERENCE.
32 !-----------------------------------------------------------------------
33 !
34 REAL(KIND=JPRB) :: ZHOOK_HANDLE
35 IF (lhook) CALL dr_hook('FACTUI_MT',0,zhook_handle)
36 clacti=''
37 IF (krangc.LE.0.OR.krangc.GT.fa%JPNXCA) THEN
38  krep=-66
39  GOTO 1001
40 ENDIF
41 !**
42 ! 2. - RECHERCHE DU CADRE DANS LA TABLE "FA%NCAIND".
43 !-----------------------------------------------------------------------
44 !
45 DO j=1,fa%NCADEF
46 !
47 IF (fa%NCAIND(j).EQ.krangc) THEN
48  iposca=j
49  GOTO 202
50 ENDIF
51 !
52 ENDDO
53 !
54 krep=-66
55 GOTO 1001
56 !
57 202 CONTINUE
58 !
59 IF (fa%CADRE(krangc)%NULCAD.NE.0) THEN
60  krep=-67
61  GOTO 1001
62 ENDIF
63 !**
64 ! 3. - MISE A JOUR DES TABLES.
65 !-----------------------------------------------------------------------
66 !
67 CALL free_cadre (fa%CADRE(krangc))
68 
69 fa%CADRE(krangc)%CNOMCA=' '
70 fa%NCADEF=fa%NCADEF-1
71 !
72 DO j=iposca,fa%NCADEF
73 fa%NCAIND(j)=fa%NCAIND(j+1)
74 ENDDO
75 
76 !
77 krep=0
78 !**
79 ! 10. - PHASE TERMINALE : MESSAGERIE EVENTUELLE,
80 ! VIA LE sous-programme "FAIPAR" .
81 !-----------------------------------------------------------------------
82 !
83 1001 CONTINUE
84 !
85 llfata=krep.EQ.-66.OR.(krep.NE.0.AND.fa%NRFAGA.NE.2)
86 !
87 IF (fa%LFAMOP.OR.llfata) THEN
88  inimes=2
89  clnspr='FACTUI'
90  inumer=jpniil
91  WRITE (unit=clmess,fmt='(''KREP='',I4,'', KRANGC='',I4)') &
92 & krep,krangc
93  CALL faipar_fort &
94 & (fa, inumer,inimes,krep,.false.,clmess, &
95 & clnspr,clacti,.false.)
96 ENDIF
97 !
98 IF (lhook) CALL dr_hook('FACTUI_MT',1,zhook_handle)
99 END SUBROUTINE factui_fort
100 
101 
102 
103 ! Oct-2012 P. Marguinaud 64b LFI
104 SUBROUTINE factui64 &
105 & (krep, krangc)
106 USE fa_mod, ONLY : fa => fa_com_default, &
109 USE lfi_precision
110 IMPLICIT NONE
111 ! Arguments
112 INTEGER (KIND=JPLIKB) KREP ! OUT
113 INTEGER (KIND=JPLIKB) KRANGC ! IN
114 
115 IF (.NOT. fa_com_default_init) CALL new_fa_default ()
116 
117 CALL factui_fort &
118 & (fa, krep, krangc)
119 
120 END SUBROUTINE factui64
121 
122 SUBROUTINE factui &
123 & (krep, krangc)
124 USE fa_mod, ONLY : fa => fa_com_default, &
127 USE lfi_precision
128 IMPLICIT NONE
129 ! Arguments
130 INTEGER (KIND=JPLIKM) KREP ! OUT
131 INTEGER (KIND=JPLIKM) KRANGC ! IN
132 
133 IF (.NOT. fa_com_default_init) CALL new_fa_default ()
134 
135 CALL factui_mt &
136 & (fa, krep, krangc)
137 
138 END SUBROUTINE factui
139 
140 SUBROUTINE factui_mt &
141 & (fa, krep, krangc)
142 USE fa_mod, ONLY : fa_com
143 USE lfi_precision
144 IMPLICIT NONE
145 ! Arguments
146 type(fa_com) fa ! INOUT
147 INTEGER (KIND=JPLIKM) KREP ! OUT
148 INTEGER (KIND=JPLIKM) KRANGC ! IN
149 ! Local integers
150 INTEGER (KIND=JPLIKB) IREP ! OUT
151 INTEGER (KIND=JPLIKB) IRANGC ! IN
152 ! Convert arguments
153 
154 irangc = int( krangc, jplikb)
155 
156 CALL factui_fort &
157 & (fa, irep, irangc)
158 
159 krep = int( irep, jplikm)
160 
161 END SUBROUTINE factui_mt
162 
163 !INTF KREP OUT
164 !INTF KRANGC IN
subroutine factui_fort(FA, KREP, KRANGC)
Definition: factui.F90:5
subroutine factui_mt(FA, KREP, KRANGC)
Definition: factui.F90:142
integer, parameter jplikb
logical, save fa_com_default_init
Definition: fa_mod.F90:477
subroutine new_fa_default()
Definition: fa_mod.F90:649
Definition: fa_mod.F90:1
integer, parameter jprb
Definition: parkind1.F90:32
logical lhook
Definition: yomhook.F90:15
subroutine free_cadre(CA)
Definition: fa_mod.F90:565
subroutine factui64(KREP, KRANGC)
Definition: factui.F90:106
integer, parameter jplikm
type(fa_com), target, save fa_com_default
Definition: fa_mod.F90:476
subroutine faipar_fort(FA, KNUMER, KNIMES, KCODE, LDFATA, CDMESS, CDNSPR, CDACTI, LDRLFI)
Definition: faipar.F90:6
subroutine factui(KREP, KRANGC)
Definition: factui.F90:124
integer(kind=jplikb), parameter jpniil
Definition: fa_mod.F90:31