1 subroutine utcte3 ( option, nborig, tborig,
3 > ulsort, langue, codret )
4 c ______________________________________________________________________
8 c Outil de Maillage Adaptatif par Raffinement et Deraffinement d'EDF R&D
10 c Version originale enregistree le 18 juin 1996 sous le numero 96036
11 c aupres des huissiers de justice Simart et Lavoir a Clamart
12 c Version 11.2 enregistree le 13 fevrier 2015 sous le numero 2015/014
13 c aupres des huissiers de justice
14 c Lavoir, Silinski & Cherqui-Abrahmi a Clamart
16 c HOMARD est une marque deposee d'Electricite de France
22 c ______________________________________________________________________
24 c UTilitaire - Conversion de Tableau Entier - action 3
27 c On retourne un tableau entier qui contient :
28 c . soit 0 si le critere n'est pas satisfait,
29 c . soit le rang correspondant si le critere est satisfait
30 c . si abs(option) = 1 : on retient les valeurs non nulles
31 c . si abs(option) = 2 : on retient les valeurs strictement positives
32 c . si abs(option) = 3 : on retient les valeurs strictement negatives
33 c . si option > 0 : ce rang est celui dans le tableau initial
34 c . si option < 0 : ce rang est le numero d'apparition de la valeur
36 c Exemples : tableau d'origine : ( 0, 13, 0, -1, 4, -3, 0, 1 )
38 c option 1 : filtre les valeurs non nulles, selon le rangement initial
39 c tableau converti : ( 2, 4, 5, 6, 8, 0, 0, 0)
40 c option -1 : filtre les valeurs non nulles, selon l'ordre d'apparition
41 c tableau converti : ( 0, 1, 0, 2, 3, 4, 0, 5)
42 c option 2 : filtre les valeurs > 0, selon le rangement initial
43 c tableau converti : ( 2, 5, 8, 0, 0, 0, 0, 0)
44 c option -2 : filtre les valeurs > 0, selon l'ordre d'apparition
45 c tableau converti : ( 0, 1, 0, 0, 2, 0, 0, 3)
46 c option 3 : filtre les valeurs < 0, selon le rangement initial
47 c tableau converti : ( 4, 6, 0, 0, 0, 0, 0, 0)
48 c option -3 : filtre les valeurs < 0, selon l'ordre d'apparition
49 c tableau converti : ( 0, 0, 0, 1, 0, 2, 0, 0)
51 c remarque : l'action elle-meme est faite ici
52 c on peut enrober ce traitement par utcte1, pour gerer
53 c des allocations de tableau
54 c ______________________________________________________________________
56 c . nom . e/s . taille . description .
57 c .____________________________________________________________________.
58 c . option . e . 1 . option de la conversion .
59 c . . . . abs(option) = 1 : les valeurs non nulles .
60 c . . . . abs(option) = 2 : les valeurs > 0 .
61 c . . . . abs(option) = 3 : les valeurs < 0 .
62 c . . . . option > 0 : rang dans le tableau initial .
63 c . . . . option < 0 : numero d'apparition .
64 c . nborig . e . 1 . nombre de valeurs dasn le tableau original .
65 c . tborig . e . nborig . tableau original a convertir .
66 c . tbconv . s . nborig . tableau converti .
67 c . nbconv . s . 1 . nombre de valeurs filtrees .
68 c . ulsort . e . 1 . numero d'unite logique de la liste standard.
69 c . langue . e . 1 . langue des messages .
70 c . . . . 1 : francais, 2 : anglais .
71 c . codret . es . 1 . code de retour des modules .
72 c . . . . 0 : pas de probleme .
73 c . . . . -1 : mauvaise demande pour le type de nom .
74 c . . . . -2 : mauvaise demande pour l'option .
75 c . . . . -3 : probleme sur le tableau a convertir .
76 c . . . . autre : probleme dans l'allocation .
77 c ______________________________________________________________________
80 c 0. declarations et dimensionnement
83 c 0.1. ==> generalites
89 parameter ( nompro = 'UTCTE3' )
100 integer nborig, nbconv
101 integer tborig(nborig), tbconv(nborig)
103 integer ulsort, langue, codret
105 c 0.4. ==> variables locales
108 #ifdef _DEBUG_HOMARD_
113 parameter ( nbmess = 10 )
114 character*80 texte(nblang,nbmess)
116 c 0.5. ==> initialisations
117 c ______________________________________________________________________
125 #ifdef _DEBUG_HOMARD_
126 write (ulsort,texte(langue,1)) 'Entree', nompro
130 texte(1,4) = '(''Option :'',i4)'
131 texte(1,5) = '(''Mauvaise demande d''''option :'',i8)'
132 texte(1,6) = '(''Tableau '',a,'', de'',i8,'' a'',i8,'' : '',10i8)'
133 texte(1,7) = '(''Nombre de valeurs filtrees : '',i8)'
135 texte(2,4) = '(''Option :'',i4)'
136 texte(2,5) = '(''Bad request for the option :'',i8)'
137 texte(2,6) = '(a,'' array, '',a,'' : '',10i8)'
138 texte(2,7) = '(''Number of filtered values : '',i8)'
140 #ifdef _DEBUG_HOMARD_
141 write (ulsort,texte(langue,4)) option
150 #ifdef _DEBUG_HOMARD_
151 iaux = min(nborig,10)
152 write (ulsort,texte(langue,6)) 'initial', 1, iaux,
153 > (tborig(jaux),jaux=1,iaux)
154 if ( nborig.gt.10 ) then
155 write (ulsort,texte(langue,6)) 'initial', nborig-iaux+2,nborig,
156 > (tborig(iaux),iaux=nborig-iaux+2,nborig)
162 c 2.0. ==> mise a zero par defaut
164 do 20 , iaux = 1 , nborig
168 c 2.1. ==> on considere toutes les valeurs non nulles
170 if ( abs(option).eq.1 ) then
172 do 21 , iaux = 1 , nborig
174 if ( tborig(iaux).ne.0 ) then
176 if ( option.gt.0 ) then
177 tbconv(nbconv) = iaux
179 tbconv(iaux) = nbconv
185 c 2.2. ==> on considere toutes les valeurs non nulles et positives
187 elseif ( abs(option).eq.2 ) then
189 do 22 , iaux = 1 , nborig
191 if ( tborig(iaux).gt.0 ) then
193 if ( option.gt.0 ) then
194 tbconv(nbconv) = iaux
196 tbconv(iaux) = nbconv
202 c 2.3. ==> on considere toutes les valeurs non nulles et positives
204 elseif ( abs(option).eq.3 ) then
206 do 23 , iaux = 1 , nborig
208 if ( tborig(iaux).lt.0 ) then
210 if ( option.gt.0 ) then
211 tbconv(nbconv) = iaux
213 tbconv(iaux) = nbconv
227 #ifdef _DEBUG_HOMARD_
228 write (ulsort,texte(langue,7)) nbconv
229 iaux = min(nborig,10)
230 write (ulsort,texte(langue,6)) 'final ', 1, iaux,
231 > (tbconv(jaux),jaux=1,iaux)
232 if ( nborig.gt.10 ) then
233 write (ulsort,texte(langue,6)) 'final ', nborig-iaux+2,nborig,
234 > (tbconv(iaux),iaux=nborig-iaux+2,nborig)
242 if ( codret.ne.0 ) then
246 write (ulsort,texte(langue,1)) 'Sortie', nompro
247 write (ulsort,texte(langue,2)) codret
248 write (ulsort,texte(langue,5)) option
252 #ifdef _DEBUG_HOMARD_
253 write (ulsort,texte(langue,1)) 'Sortie', nompro