1 subroutine mmmodi ( 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 Modification de Maillage - Modification
25 c remarque : on n'execute ce programme que si le precedent s'est
28 c ______________________________________________________________________
30 c . nom . e/s . taille . description .
31 c .____________________________________________________________________.
32 c . codret . es . 1 . code de retour des modules .
33 c . . . . en entree = celui du module d'avant .
34 c . . . . en sortie = celui du module en cours .
35 c . . . . 0 : pas de probleme .
36 c . . . . 1 : manque de temps cpu .
37 c . . . . 2x : probleme dans les memoires .
38 c . . . . 3x : probleme dans les fichiers .
39 c . . . . 5 : mauvaises options .
40 c . . . . 6 : problemes dans les noms d'objet .
41 c ______________________________________________________________________
44 c 0. declarations et dimensionnement
47 c 0.1. ==> generalites
53 parameter ( nompro = 'MMMODI' )
67 c 0.4. ==> variables locales
69 integer ulsort, langue, codava
70 integer adopti, lgopti
71 integer adetco, lgetco
72 integer nrsect, nrssse
73 integer nretap, nrsset
76 integer codre1, codre2
78 integer ulenst, ulsost
81 character*8 typobs, nohman, nohmap
84 parameter ( nbmess = 10 )
85 character*80 texte(nblang,nbmess)
87 c 0.5. ==> initialisations
88 c ______________________________________________________________________
91 c 1. les initialisations
96 c=======================================================================
97 if ( codava.eq.0 ) then
98 c=======================================================================
100 #ifdef _DEBUG_HOMARD_
101 call gmprsx (nompro, nndoad )
102 call gmprsx (nompro, nndoad//'.OptEnt' )
103 call gmprsx (nompro, nndoad//'.OptRee' )
104 call gmprsx (nompro, nndoad//'.OptCar' )
105 call gmprsx (nompro, nndoad//'.EtatCour' )
108 c 1.2. ==> le numero d'unite logique de la liste standard
110 call utulls ( ulsort, codret )
112 c 1.3. ==> la langue des messages
114 call gmadoj ( nndoad//'.OptEnt', adopti, lgopti, codret )
115 if ( codret.eq.0 ) then
116 langue = imem(adopti)
122 c 1.4. ==> l'etat courant
124 call gmadoj ( nndoad//'.EtatCour', adetco, lgetco, codret )
126 if ( codret.eq.0 ) then
127 nretap = imem(adetco) + 1
128 imem(adetco) = nretap
130 imem(adetco+1) = nrsset
131 nrsect = imem(adetco+2) + 10
132 imem(adetco+2) = nrsect
134 imem(adetco+3) = nrssse
143 c 1.4. ==> le debut des mesures de temps
147 c 1.5. ==> les messages
151 #ifdef _DEBUG_HOMARD_
152 write (ulsort,texte(langue,1)) 'Entree', nompro
158 >''' M O D I F I C A T I O N D E M A I L L A G E'')'
159 texte(1,5) = '(56(''=''),/)'
160 texte(1,7) = '(''Changement de degre :'',i4)'
161 texte(1,8) = '(''Creation de joints :'',i4)'
163 texte(2,4) = '(//,a6,'' M E S H M O D I F I C A T I O N'')'
164 texte(2,5) = '(50(''=''),/)'
165 texte(2,7) = '(''Modification of degree :'',i4)'
166 texte(2,8) = '(''Creation of junctions :'',i4)'
170 call utcvne ( nretap, nrsset, saux, iaux, codret )
172 write (ulsort,texte(langue,4)) saux
173 write (ulsort,texte(langue,5))
176 imem(adetco+1) = nrsset
178 c 1.7. ==> les numeros d'unite logique au terminal
180 call dmunit ( ulenst, ulsost )
183 c 2. les structures de base
186 c 2.1. ==> le maillage homard a l'iteration n
190 call utosno ( typobs, nohman, iaux, ulsort, langue, codre1 )
192 c 2.2. ==> le maillage homard a l'iteration n+1
196 call utosno ( typobs, nohmap, iaux, ulsort, langue, codre2 )
200 codre0 = min ( codre1, codre2 )
201 codret = max ( abs(codre0), codret,
205 c 3. Compactage de la memoire
207 #ifdef _DEBUG_HOMARD_
208 write (ulsort,*) '3. Compactage ; codret = ', codret
211 if ( codret.eq.0 ) then
213 #ifdef _DEBUG_HOMARD_
214 write (ulsort,texte(langue,3)) 'UTCOMP', nompro
217 call utcomp (ulsort, langue, codret)
222 c 4. Modifications du maillage
225 if ( codret.eq.0 ) then
227 #ifdef _DEBUG_HOMARD_
228 write (ulsort,texte(langue,7)) imem(adopti+40)
229 write (ulsort,texte(langue,8)) imem(adopti+41)
232 c 4.1. ==> Modification du degre du maillage
234 imem(adetco+3) = imem(adetco+3) + 1
236 if ( imem(adopti+40).eq.1 ) then
238 if ( codret.eq.0 ) then
240 #ifdef _DEBUG_HOMARD_
241 write (ulsort,texte(langue,3)) 'MMDEGR', nompro
244 call mmdegr ( lgopti, imem(adopti), lgetco, imem(adetco),
246 > ulsort, langue, codret )
252 c 4.2. ==> Creation de joints
254 imem(adetco+3) = imem(adetco+3) + 1
256 if ( imem(adopti+41).eq.1 ) then
258 if ( codret.eq.0 ) then
260 #ifdef _DEBUG_HOMARD_
261 write (ulsort,texte(langue,3)) 'MMAGRE', nompro
264 call mmagre ( lgopti, imem(adopti), lgetco, imem(adetco),
266 > ulsort, langue, codret )
275 c 5. transfert du maillage dans la structure de l'iteration n+1
278 if ( codret.eq.0 ) then
280 #ifdef _DEBUG_HOMARD_
281 write (ulsort,texte(langue,3)) 'CMTRNP', nompro
285 call cmtrnp ( nohman, nohmap, iaux,
286 > lgopti, imem(adopti), lgetco, imem(adetco),
287 > ulsort, langue, codret )
295 c 6.1. ==> message si erreur
297 if ( codret.ne.0 ) then
299 write (ulsort,texte(langue,1)) 'Sortie', nompro
300 write (ulsort,texte(langue,2)) codret
304 c 6.2. ==> fin des mesures de temps de la section
308 imem(adetco+2) = imem(adetco+2) + 20
310 #ifdef _DEBUG_HOMARD_
311 write (ulsort,texte(langue,1)) 'Sortie', nompro
315 c=======================================================================
317 c=======================================================================