1 subroutine deinz1 ( option,
4 > coonoe, dimcst, coocst,
6 > ulsort, langue, codret )
7 c ______________________________________________________________________
11 c Outil de Maillage Adaptatif par Raffinement et Deraffinement d'EDF R&D
13 c Version originale enregistree le 18 juin 1996 sous le numero 96036
14 c aupres des huissiers de justice Simart et Lavoir a Clamart
15 c Version 11.2 enregistree le 13 fevrier 2015 sous le numero 2015/014
16 c aupres des huissiers de justice
17 c Lavoir, Silinski & Cherqui-Abrahmi a Clamart
19 c HOMARD est une marque deposee d'Electricite de France
25 c ______________________________________________________________________
27 c traitement des DEcisions - INitialisation de l'indicateur
29 c defini par des Zones de raffinement
33 c ______________________________________________________________________
35 c . nom . e/s . taille . description .
36 c .____________________________________________________________________.
37 c . option . e . 1 . 1 : raffinement, -1 : deraffinement .
38 c . rayon . e . 1 . caracteristiques de la sphere .
42 c . coonoe . e . nbnoto . coordonnees des noeuds .
43 c . dimcst . e . 1 . dimension de la coordonnee constante .
44 c . . . . eventuelle, 0 si toutes varient .
45 c . coocst . e . 11 . 1 : coordonnee constante eventuelle .
46 c . . . . 2, 3, 4 : xmin, ymin, zmin .
47 c . . . . 5, 6, 7 : xmax, ymax, zmax .
48 c . . . . 8, 9, 10 : -1 si constant, max-min sinon .
49 c . . . . 11 : max des (max-min) .
50 c . nozone . aux . nbnoto . auxiliaire pour le transfert zone/noeud .
51 c . ulsort . e . 1 . numero d'unite logique de la liste standard.
52 c . langue . e . 1 . langue des messages .
53 c . . . . 1 : francais, 2 : anglais .
54 c . codret . es . 1 . code de retour des modules .
55 c . . . . 0 : pas de probleme .
56 c . . . . 2 : probleme dans le traitement .
57 c ______________________________________________________________________
60 c 0. declarations et dimensionnement
63 c 0.1. ==> generalites
69 parameter ( nompro = 'DEINZ1' )
84 integer nozone(nbnoto)
86 double precision rayon, xcen, ycen, zcen
87 double precision coonoe(nbnoto,sdim)
88 double precision coocst(11)
90 integer ulsort, langue, codret
92 c 0.4. ==> variables locales
97 double precision rext2
98 double precision xcenlo, ycenlo, zcenlo
101 parameter (nbmess = 10 )
102 character*80 texte(nblang,nbmess)
104 c 0.5. ==> initialisations
105 c ______________________________________________________________________
106 #ifdef _DEBUG_HOMARD_
107 character*1 saux01(3)
108 data saux01 / 'X', 'Y', 'Z' /
115 c 1.1. ==> Les messages
119 #ifdef _DEBUG_HOMARD_
120 write (ulsort,texte(langue,1)) 'Entree', nompro
124 texte(1,4) = '(''Zone spherique'')'
125 texte(1,8) = '(''Prise en compte du noeud '',i10,3g15.7)'
127 texte(2,4) = '(''Spherical zone'')'
128 texte(2,8) = '(''OK for node # '',i10,3g15.7)'
132 #ifdef _DEBUG_HOMARD_
133 write (ulsort,texte(langue,4))
134 write (ulsort,90004) 'Rayon', rayon
135 write (ulsort,90004) 'X centre', xcen
136 write (ulsort,90004) 'Y centre', ycen
137 write (ulsort,90004) 'Z centre', zcen
138 write (ulsort,*) 'sdim =',sdim,', dimcst =',dimcst
139 if ( dimcst.ne.0 ) then
140 write (ulsort,90004) saux01(dimcst)//' constant', coocst(dimcst+1)
144 c 1.2 ==> Carre du rayon
147 cgn write (ulsort,90004) '==> rext2', rext2
153 if ( sdim.eq.3 ) then
155 do 21 , iaux = 1, nbnoto
157 daux = ( coonoe(iaux,1)-xcen ) * ( coonoe(iaux,1)-xcen )
158 > + ( coonoe(iaux,2)-ycen ) * ( coonoe(iaux,2)-ycen )
159 > + ( coonoe(iaux,3)-zcen ) * ( coonoe(iaux,3)-zcen )
161 if ( daux.le.rext2 ) then
162 #ifdef _DEBUG_HOMARD_
163 write(ulsort,texte(langue,8)) iaux,
164 > coonoe(iaux,1), coonoe(iaux,2), coonoe(iaux,3)
166 nozone(iaux) = option
172 c 3. Du vrai 2D ou du 2D defini dans un espace 3D
173 c . Avec du vrai 2D, on part du principe que Z est nul
174 c . Avec du 2D immerge, on repere
175 c . On verifie que la coordonnee constante est compatible,
176 c avec une certaine tolerance
181 if ( ( dimcst.eq.0 .or. dimcst.eq.3 ) .and.
182 > ( maextr.eq.0 .or. maextr.eq.3 ) ) then
187 elseif ( dimcst.eq.1 .or. maextr.eq.1 ) then
192 elseif ( dimcst.eq.2 .or. maextr.eq.2 ) then
199 #ifdef _DEBUG_HOMARD_
200 write (ulsort,texte(langue,4))
201 write (ulsort,90004) 'xcenlo', xcenlo
202 write (ulsort,90004) 'ycenlo', ycenlo
203 write (ulsort,90004) 'zcenlo', zcenlo
206 do 31 , iaux = 1, nbnoto
208 daux = ( coonoe(iaux,1)-xcenlo ) * ( coonoe(iaux,1)-xcenlo )
209 > + ( coonoe(iaux,2)-ycenlo ) * ( coonoe(iaux,2)-ycenlo )
210 > + ( coocst(jaux)-zcenlo ) * ( coocst(jaux)-zcenlo )
212 if ( daux.le.rext2 ) then
213 #ifdef _DEBUG_HOMARD_
214 write(ulsort,texte(langue,8)) iaux,
215 > coonoe(iaux,1), coonoe(iaux,2)
217 nozone(iaux) = option
228 if ( codret.ne.0 ) then
231 write (ulsort,texte(langue,1)) 'Sortie', nompro
232 write (ulsort,texte(langue,2)) codret
236 #ifdef _DEBUG_HOMARD_
237 write (ulsort,texte(langue,1)) 'Sortie', nompro