1 subroutine pppma1 ( typcof,
2 > lgtcmx, tbcols, tbcoli, ncotbl,
5 > ulsort, langue, codret )
6 c ______________________________________________________________________
10 c Outil de Maillage Adaptatif par Raffinement et Deraffinement d'EDF R&D
12 c Version originale enregistree le 18 juin 1996 sous le numero 96036
13 c aupres des huissiers de justice Simart et Lavoir a Clamart
14 c Version 11.2 enregistree le 13 fevrier 2015 sous le numero 2015/014
15 c aupres des huissiers de justice
16 c Lavoir, Silinski & Cherqui-Abrahmi a Clamart
18 c HOMARD est une marque deposee d'Electricite de France
24 c ______________________________________________________________________
26 c Post-Processeur - Preparation du MAillage - phase 1
28 c ______________________________________________________________________
30 c . nom . e/s . taille . description .
31 c .____________________________________________________________________.
32 c . typcof . e . 1 . type de coloriage des faces .
33 c . . . . 0 : incolore transparent .
34 c . . . . 1 : incolore opaque .
35 c . . . . 2 : famille HOMARD .
36 c . . . . 3 : famille HOMARD, sans orientation .
37 c . . . . 4/5 : idem 2/3, en niveau de gris .
38 c . . . . +-6 : couleur selon un champ, echelle auto..
39 c . . . . +-7 : idem avec echelle fixe .
40 c . . . . +-8/+-9 : idem +-6/+-7, en niveau de gris .
41 c . . . . 10 : niveau .
42 c . lgtcmx . e . 1 . longueur maximale de la table de couleur .
43 c . tbcoli . e . . table de couleur entier .
44 c . tbcols . s .char*17 . table de couleur caracteres .
45 c . . . (-3: . Les immuables sont : .
46 c . . . lgtcmx). -3 : defaut de xfig .
48 c . . . . -1 : blanc .
49 c . . . . lgtcmx-2 : rouge pour les aretes de bord .
50 c . . . . lgtcmx-1 : un gris pale pour les familles .
51 c . . . . libres et le triedre .
52 c . . . . lgtcmx : un vert pale (cadre de zoom) .
53 c . ncotbl . s . 1 . nombre de couleurs dans la table .
54 c . nbtrvi . e . 1 . nombre triangles visualisables .
55 c . nbquvi . e . 1 . nombre de quadrangles visualisables .
56 c . nntrvi . e .10nbtrvi. 1 : niveau du triangle a afficher .
57 c . . . . 2 : numero HOMARD du triangle .
58 c . . . . 3, 4, 5 : numeros des noeuds p1 .
59 c . . . . 6 : famille du triangle .
60 c . . . . 7, 8, 9 : numeros des noeuds p2 .
61 c . . . . 10 : numero du noeud interne .
62 c . nnquvi . e .12nbquvi. 1 : niveau du quadrangle a afficher .
63 c . . . . 2 : numero HOMARD du quadrangle .
64 c . . . . 3, 4, 5, 6 : numeros des noeuds p1 .
65 c . . . . 7 : famille du quadrangle .
66 c . . . . 8, 9, 10, 11 : numeros des noeuds p2 .
67 c . . . . 12 : numero du noeud interne .
68 c . ulsort . e . 1 . unite logique de la sortie generale .
69 c . langue . e . 1 . langue des messages .
70 c . . . . 1 : francais, 2 : anglais .
71 c . codret . s . 1 . code de retour des modules .
72 c . . . . 0 : pas de probleme .
73 c ______________________________________________________________________
76 c 0. declarations et dimensionnement
79 c 0.1. ==> generalites
85 parameter ( nompro = 'PPPMA1' )
95 integer lgtcmx, typcof, ncotbl
96 integer nbtrvi, nbquvi
97 integer nntrvi(10,nbtrvi)
98 integer nnquvi(12,nbquvi)
99 integer tbcoli(-3:lgtcmx)
101 character*17 tbcols(-2:lgtcmx)
103 integer ulsort, langue, codret
105 c 0.4. ==> variables locales
107 integer iaux, jaux, kaux, laux
108 double precision daux
113 parameter ( nbmess = 10 )
114 character*80 texte(nblang,nbmess)
116 c 0.5. ==> initialisations
117 c Codification Xfig :
127 c 8-11 = four shades of blue (dark to lighter)
128 c 12-14 = three shades of green (dark to lighter)
129 c 15-17 = three shades of cyan (dark to lighter)
130 c 18-20 = three shades of red (dark to lighter)
131 c 21-23 = three shades of magenta (dark to lighter)
132 c 24-26 = three shades of brown (dark to lighter)
133 c 27-30 = four shades of pink (dark to lighter)
135 c_______________________________________________________________________
143 #ifdef _DEBUG_HOMARD_
144 write (ulsort,texte(langue,1)) 'Entree', nompro
152 c -3 : defaut de xfig
155 c lgtcmx-2 : rouge pour les aretes de bord
156 c lgtcmx-1 : un gris pale pour les familles libres et le triedre
157 c lgtcmx : un vert pale (pour la fenetre de zoom)
160 tbcols(-2) = '0.000 0.000 0.000'
161 tbcols(-1) = '1.000 1.000 1.000'
163 tbcols(lgtcmx-2) = '1.000 0.000 0.000'
164 tbcols(lgtcmx-1) = '0.800 0.800 0.800'
165 tbcols(lgtcmx) = '0.100 0.600 0.200'
172 tbcoli(lgtcmx-1) = 30
176 c 3. pour un coloriage par valeur discrete : niveau ou famille
177 c typcof compris entre 1 et 5
179 c 3.1. ==> en couleur ; typcof valant 2, 3 ou 10
187 c pour xfig on est limite a 31
189 if ( typcof.eq.2 .or. typcof.eq.3 .or. typcof.eq.10 ) then
191 tbcols(0) = '0.000 0.000 1.000'
193 tbcols(1) = '1.000 0.000 0.000'
195 tbcols(2) = '0.000 1.000 0.000'
197 tbcols(3) = '1.000 0.000 1.000'
199 tbcols(4) = '0.000 1.000 1.000'
201 tbcols(5) = '1.000 1.000 0.000'
203 tbcols(6) = '0.200 0.400 0.600'
205 tbcols(7) = '0.400 0.600 0.200'
207 tbcols(8) = '0.600 0.200 0.400'
209 tbcols(9) = '0.100 0.200 0.800'
211 tbcols(10) = '0.800 0.200 0.100'
214 do 311 , iaux = 1 , nbtrvi
215 kaux = max ( kaux, nntrvi(6,iaux) )
217 do 312 , iaux = 1 , nbquvi
218 kaux = max ( kaux, nnquvi(7,iaux) )
220 if ( kaux.gt.10 ) then
221 do 313 , iaux = 11 , kaux
222 tbcols(iaux) = '0.000 0.000 0.000'
223 call utench ( iaux, 'g', jaux, saux03,
224 > ulsort, langue, codret )
225 tbcols(iaux)(3:2+jaux) = saux03(1:jaux)
226 call utench ( 100+iaux, 'g', jaux, saux03,
227 > ulsort, langue, codret )
228 tbcols(iaux)(9:8+jaux) = saux03(1:jaux)
229 call utench ( mod(iaux,100), 'g', jaux, saux03,
230 > ulsort, langue, codret )
231 tbcols(iaux)(15:14+jaux) = saux03(1:jaux)
232 if ( mod(iaux-11,18).eq.0 ) then
234 elseif ( mod(iaux-11,17).eq.1 ) then
236 elseif ( mod(iaux-11,17).eq.2 ) then
238 elseif ( mod(iaux-11,17).eq.3 ) then
240 elseif ( mod(iaux-11,17).eq.4 ) then
242 elseif ( mod(iaux-11,17).eq.5 ) then
244 elseif ( mod(iaux-11,17).eq.6 ) then
246 elseif ( mod(iaux-11,17).eq.7 ) then
248 elseif ( mod(iaux-11,17).eq.8 ) then
250 elseif ( mod(iaux-11,17).eq.9 ) then
252 elseif ( mod(iaux-11,17).eq.10 ) then
254 elseif ( mod(iaux-11,17).eq.11 ) then
256 elseif ( mod(iaux-11,17).eq.12 ) then
258 elseif ( mod(iaux-11,17).eq.13 ) then
260 elseif ( mod(iaux-11,17).eq.14 ) then
262 elseif ( mod(iaux-11,17).eq.15 ) then
264 elseif ( mod(iaux-11,17).eq.16 ) then
266 elseif ( mod(iaux-11,17).eq.17 ) then
272 c 3.2. ==> en niveau de gris ; typcof compris entre 4 et 5
274 c 1 : gris tres tres clair
275 c 2 : gris tres clair
278 elseif ( typcof.ge.4 .and. typcof.le.5 ) then
281 tbcols(0) = '1.000 1.000 1.000'
284 do 321 , iaux = 1 , nbtrvi
285 kaux = max ( kaux, nntrvi(6,iaux) )
287 do 322 , iaux = 1 , nbquvi
288 kaux = max ( kaux, nnquvi(7,iaux) )
290 daux = 999.d0/dble(kaux)
291 do 333 , iaux = 1 , kaux
292 tbcols(iaux) = '0.000 0.000 0.000'
293 jaux = int ( dble(iaux)*daux )
295 call utench ( jaux, '0', laux, saux03,
296 > ulsort, langue, codret )
297 tbcols(iaux)( 3: 6) = saux03
298 tbcols(iaux)( 9:12) = saux03
299 tbcols(iaux)(15:17) = saux03
304 c 4. pour un coloriage par valeur continue : fonction
305 c typcof valant +-6 ou +-7
308 elseif ( abs(typcof).eq.6 .or. abs(typcof).eq.7 ) then
310 c Pour l'ancien PostScript, pour memoire
311 c on fait un degrade du minimum, 0/bleu, au maximum, 22/rouge
312 c la progression en RGB est issue des travaux presentes sur :
313 c http://the-light.com/colclick.html
316 daux = 1000.d0/(dble(laux+1))
320 tbcols(0) = '0.000 0.000 1.000'
322 c nuances de bleu a turquoise : on augmente le G
325 do 41 , iaux = 1, laux
326 kaux = nint(daux*dble(iaux))
327 call utench ( kaux, '0', jaux, saux03,
328 > ulsort, langue, codret )
331 tbcols(ncotbl) = '0.000 0.zzz 1.000'
332 tbcols(ncotbl)(9:11) = saux03
338 tbcols(ncotbl) = '0.000 1.000 1.000'
340 c nuances de turquoise a vert : on diminue le B
342 do 42 , iaux = laux , 1, -1
343 kaux = nint(daux*dble(iaux))
344 call utench ( kaux, '0', jaux, saux03,
345 > ulsort, langue, codret )
348 tbcols(ncotbl) = '0.000 1.000 0.zzz'
349 tbcols(ncotbl)(15:17) = saux03
355 tbcols(ncotbl) = '0.000 1.000 0.000'
357 c nuances de vert a jaune : on augmente le R
359 do 43 , iaux = 1, laux
360 kaux = nint(daux*dble(iaux))
361 call utench ( kaux, '0', jaux, saux03,
362 > ulsort, langue, codret )
365 tbcols(ncotbl) = '0.zzz 1.000 0.000'
366 tbcols(ncotbl)(3:5) = saux03
372 tbcols(ncotbl) = '1.000 1.000 0.000'
374 c nuances de jaune a rouge : on diminue le G
376 do 44 , iaux = laux , 1, -1
377 kaux = nint(daux*dble(iaux))
378 call utench ( kaux, '0', jaux, saux03,
379 > ulsort, langue, codret )
382 tbcols(ncotbl) = '1.000 0.zzz 0.000'
383 tbcols(ncotbl)(9:11) = saux03
389 tbcols(ncotbl) = '1.000 0.000 0.000'
391 c Pour Xfig, on fait un degrade du minimum, 0/bleu sombre, au
407 cgn print 1789,(tbcols(iaux),iaux=-2,ncotbl)
409 cgn print *,'ncotbl = ',ncotbl
415 if ( codret.ne.0 ) then
419 write (ulsort,texte(langue,1)) 'Sortie', nompro
420 write (ulsort,texte(langue,2)) codret
424 #ifdef _DEBUG_HOMARD_
425 write (ulsort,texte(langue,1)) 'Sortie', nompro