1 subroutine utmmco ( xyzmin, xyzmax, xyzeps,
2 > nbnoto, sdim, coonoe,
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 - Minimum/Maximum des COordonnees
26 c ______________________________________________________________________
28 c . nom . e/s . taille . description .
29 c .____________________________________________________________________.
30 c . xyzmin . s . 3 . abscisse (i=1), ordonnee (i=2) et .
31 c . . . . cote (i=3) minimales du domaine total .
32 c . xyzmax . s . 3 . abscisse (i=1), ordonnee (i=2) et .
33 c . . . . cote (i=3) maximales du domaine total .
34 c . xyzeps . s . 4 . -1 si min = max dans la direction, .
35 c . . . . ecart sinon, puis ecart maximal .
36 c . nbnoto . e . 1 . nombre total de noeuds .
37 c . sdim . e . 1 . dimension .
38 c . coonoe . e . nbnoto . coordonnees des noeuds .
40 c . ulsort . e . 1 . numero d'unite logique de la liste standard.
41 c . langue . e . 1 . langue des messages .
42 c . . . . 1 : francais, 2 : anglais .
43 c . codret . es . 1 . code de retour des modules .
44 c . . . . 0 : pas de probleme .
45 c ______________________________________________________________________
48 c 0. declarations et dimensionnement
51 c 0.1. ==> generalites
57 parameter ( nompro = 'UTMMCO' )
69 double precision coonoe (nbnoto,sdim)
70 double precision xyzmin(3), xyzmax(3), xyzeps(4)
72 integer ulsort, langue, codret
74 c 0.4. ==> variables locales
79 parameter ( nbmess = 10 )
80 character*80 texte(nblang,nbmess)
82 c 0.5. ==> initialisations
83 c ______________________________________________________________________
92 write (ulsort,texte(langue,1)) 'Entree', nompro
96 texte(1,4) = '(''Nombre de noeuds : '',i10)'
97 texte(1,5) = '(''Dimension : '',i8)'
99 > '(''direction * minimum * maximum * ecart'',/,50(''*''))'
101 > '(50(''*''),/,''Taille maximale :'',g12.5,/,50(''*''))'
103 texte(2,4) = '(''Number of nodes : '',i10)'
104 texte(2,5) = '(''Dimension : '',i8)'
106 > '(''direction * minimum * maximum * shift'',/,50(''*''))'
108 > '(50(''*''),/,''Maximum size :'',g12.5,/,50(''*''))'
110 1000 format(5x,a1,4x,3('*',g12.5))
112 #ifdef _DEBUG_HOMARD_
113 write (ulsort,texte(langue,4)) nbnoto
114 write (ulsort,texte(langue,5)) sdim
120 c 2. min/max des coordonnees et tolerance
122 c 2.1. ==> Mise a zero de la 3eme dimension eventuellement absente
124 do 21 , iaux = sdim+1 , 3
129 c 2.2. ==> Recherche des extremes
132 do 22 , iaux = 1 , sdim
134 xyzmin(iaux) = coonoe(1,iaux)
135 xyzmax(iaux) = coonoe(1,iaux)
136 do 220 , jaux = 2 , nbnoto
137 xyzmin(iaux) = min ( xyzmin(iaux), coonoe(jaux,iaux) )
138 xyzmax(iaux) = max ( xyzmax(iaux), coonoe(jaux,iaux) )
140 xyzeps(iaux) = xyzmax(iaux) - xyzmin(iaux)
141 xyzeps(4) = max ( xyzeps(4), xyzeps(iaux) )
145 c 2.3. ==> Notation des coordonnees constantes
146 c Si pour une coordonnee, l'ecart entre le min et le max
147 c est 1 million de fois plus petit que le max des ecarts,
148 c c'est que le probleme est vraisemblablement plan dans cette
149 c direction. On memorise cela en mettant une tolerance negative.
150 c Sinon, on memorise l'ecart min/max.
151 c Ces valeurs sont totalement pifometriques.
154 if ( xyzeps(iaux)/xyzeps(4).lt.1.d-6 ) then
159 #ifdef _DEBUG_HOMARD_
160 if ( codret.eq.0 ) then
161 write (ulsort,texte(langue,6))
162 write (ulsort,1000) 'x', xyzmin(1), xyzmax(1), xyzeps(1)
163 write (ulsort,1000) 'y', xyzmin(2), xyzmax(2), xyzeps(2)
164 if ( sdim.eq.3 ) then
165 write (ulsort,1000) 'z', xyzmin(3), xyzmax(3), xyzeps(3)
167 write (ulsort,texte(langue,7)) xyzeps(4)
175 if ( codret.ne.0 ) then
179 write (ulsort,texte(langue,1)) 'Sortie', nompro
180 write (ulsort,texte(langue,2)) codret
184 #ifdef _DEBUG_HOMARD_
185 write (ulsort,texte(langue,1)) 'Sortie', nompro