1 subroutine homajc ( codret )
2 c ______________________________________________________________________
6 c Outil de Maillage Adaptatif par Raffinement et Deraffinement d'EDF R&D
8 c Version originale enregistree le 18 juin 1996 sous le numero 96036
9 c aupres des huissiers de justice Simart et Lavoir a Clamart
10 c Version 11.2 enregistree le 13 fevrier 2015 sous le numero 2015/014
11 c aupres des huissiers de justice
12 c Lavoir, Silinski & Cherqui-Abrahmi a Clamart
14 c HOMARD est une marque deposee d'Electricite de France
20 c ______________________________________________________________________
22 c HOmard : Mise A Jour des Coordonnees
24 c ______________________________________________________________________
26 c . nom . e/s . taille . description .
27 c .____________________________________________________________________.
28 c . codret . es . 1 . code de retour des modules .
29 c . . . . en entree = celui du module d'avant .
30 c . . . . en sortie = celui du module en cours .
31 c . . . . 0 : pas de probleme .
32 c . . . . 1 : manque de temps cpu .
33 c . . . . 2x : probleme dans les memoires .
34 c . . . . 3x : probleme dans les fichiers .
35 c . . . . 5 : mauvaises options .
36 c . . . . 6 : problemes dans les noms d'objet .
37 c . . . . 7 : non convergence de l'algorithme .
38 c ______________________________________________________________________
42 c 0. declarations et dimensionnement
45 c 0.1. ==> generalites
51 parameter ( nompro = 'HOMAJC' )
74 c 0.4. ==> variables locales
76 integer ulsort, langue, codava
77 integer adopti, lgopti
78 integer adopts, lgopts
79 integer adetco, lgetco
80 integer nrsect, nrssse
81 integer nretap, nrsset
84 integer codre1, codre2
85 integer nbnhom, nbncal
88 character*8 nohman, nocman
91 parameter ( nbmess = 10 )
92 character*80 texte(nblang,nbmess)
94 c 0.5. ==> initialisations
95 c ______________________________________________________________________
98 c 1. les initialisations
105 c=======================================================================
106 if ( codava.eq.0 ) then
107 c=======================================================================
109 #ifdef _DEBUG_HOMARD_
110 call gmprsx (nompro, nndoad )
111 call gmprsx (nompro, nndoad//'.OptEnt' )
112 call gmprsx (nompro, nndoad//'.OptRee' )
113 call gmprsx (nompro, nndoad//'.OptCar' )
114 call gmprsx (nompro, nndoad//'.EtatCour' )
117 c 1.2. ==> le numero d'unite logique de la liste standard
119 call utulls ( ulsort, codret )
121 c 1.3. ==> la langue des messages
123 call gmadoj ( nndoad//'.OptEnt', adopti, lgopti, codret )
124 if ( codret.eq.0 ) then
125 langue = imem(adopti)
133 c 1.4. ==> l'etat courant
135 call gmadoj ( nndoad//'.EtatCour', adetco, lgetco, codret )
136 if ( codret.eq.0 ) then
137 nretap = imem(adetco) + 1
138 imem(adetco) = nretap
140 imem(adetco+1) = nrsset
141 nrsect = imem(adetco+2) + 10
142 imem(adetco+2) = nrsect
144 imem(adetco+3) = nrssse
153 #ifdef _DEBUG_HOMARD_
154 write (ulsort,texte(langue,1)) 'Entree', nompro
158 c 1.4. ==> le debut des mesures de temps
162 c 1.5. ==> les messages
165 > '(//,a6,'' M I S E A J O U R C O O R D O N N E E S'')'
166 texte(1,5) = '(55(''=''),/)'
167 texte(1,6) = '(''Incoherence des nombres de noeuds'')'
170 > '(//,a6,'' U P D A T I N G O F C O O R D I N A T E S'')'
171 texte(2,5) = '(54(''=''),/)'
172 texte(2,6) = '(''Non coherence for the number of nodes'')'
176 call utcvne ( nretap, nrsset, saux, iaux, codret )
178 write (ulsort,texte(langue,4)) saux
179 write (ulsort,texte(langue,5))
182 imem(adetco+1) = nrsset
184 c 1.7. ==> les noms d'objets a conserver
186 if ( codret.eq.0 ) then
187 call gmadoj ( nndoad//'.OptCar', adopts, lgopts, codret )
188 if ( codret.ne.0 ) then
194 c 2. les structures de base
196 #ifdef _DEBUG_HOMARD_
197 write (ulsort,90002) '2. les structures de base ; codret', codret
200 c 2.1. ==> le maillage homard
202 if ( codret.eq.0 ) then
204 nohman = smem(adopts+2)
205 #ifdef _DEBUG_HOMARD_
206 write (ulsort,*) 'nohman : ', nohman
211 c 2.2. ==> le maillage de calcul
213 if ( codret.eq.0 ) then
215 nocman = smem(adopts)
216 #ifdef _DEBUG_HOMARD_
217 write (ulsort,*) 'nocman : ', nocman
223 c 3. mise a jour des coordonnees
226 #ifdef _DEBUG_HOMARD_
227 write (ulsort,90002) '3. maj des coordonnees ; codret', codret
229 #ifdef _DEBUG_HOMARD_
230 call gmprsx (nompro//' - HOMARD', nohman//'.Noeud')
231 call gmprsx (nompro//' - Calcul', nocman//'.Noeud')
234 c 3.1. ==> verification de la coherence du nombre de noeuds
236 if ( codret.eq.0 ) then
238 call gmliat ( nohman//'.Noeud', 1, nbnhom, codre1 )
239 call gmliat ( nocman//'.Noeud', 1, nbncal, codre2 )
241 codre0 = min ( codre1, codre2 )
242 codret = max ( abs(codre0), codret,
247 if ( codret.eq.0 ) then
249 #ifdef _DEBUG_HOMARD_
250 write (ulsort,90002) 'nbnhom', nbnhom
251 write (ulsort,90002) 'nbncal', nbncal
254 if ( nbnhom.ne.nbncal ) then
255 write (ulsort,texte(langue,6))
256 write (ulsort,90002) 'HOMARD', nbnhom
257 write (ulsort,90002) 'Calcul', nbncal
263 c 3.2. ==> Copie des coordonnees
265 if ( codret.eq.0 ) then
267 #ifdef _DEBUG_HOMARD_
268 call gmprot (nompro//' - Calcul', nocman//'.Noeud.Coor',
269 > 3*nbnhom-9, 3*nbnhom)
270 call gmprot (nompro//' - HOMARD avant', nohman//'.Noeud.Coor',
271 > 3*nbnhom-9, 3*nbnhom)
274 call gmcpoj ( nocman//'.Noeud.Coor',
275 > nohman//'.Noeud.Coor', codret )
277 #ifdef _DEBUG_HOMARD_
278 call gmprot (nompro//' - HOMARD apres', nohman//'.Noeud.Coor',
279 > 3*nbnhom-9, 3*nbnhom)
288 #ifdef _DEBUG_HOMARD_
289 write (ulsort,90002) '4. fin de '//nompro//' ; codret', codret
292 c 4.1. ==> message si erreur
294 if ( codret.ne.0 ) then
298 write (ulsort,texte(langue,1)) 'Sortie', nompro
299 write (ulsort,texte(langue,2)) codret
303 c 4.2. ==> fin des mesures de temps de la section
307 #ifdef _DEBUG_HOMARD_
308 write (ulsort,texte(langue,1)) 'Sortie', nompro
312 c=======================================================================
314 c=======================================================================