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 : programme PRINcipal
24 c ______________________________________________________________________
27 c 0. declarations et dimensionnement
30 c 0.1. ==> generalites
36 parameter ( nompro = 'HOPRIN' )
42 c On les met tous pour assurer la coherence en descendance.
43 c En principe, le save devrait remedier a cela mais on fait
44 c ceinture et bretelles
111 c 0.4. ==> variables locales
114 integer lnomfi, lang, ulsort, codret, codre0
115 integer guimp, gmimp, raison
120 parameter ( nbmess = 10 )
121 character*80 texte(nblang,nbmess)
126 c 0.5. ==> initialisations
127 c ______________________________________________________________________
139 #ifdef _DEBUG_HOMARD_
140 write (*,*) 'Appel de HOINIT par ', nompro
142 call hoinit ( nomfic, lnomfi, lang, codret )
144 call utulls ( ulsort, codre0 )
148 c modhom est, en sortie, le mode d'utilisation de HOMARD :
149 c 1 : adaptation standard
150 c 2 : information sur un maillage
151 c 3 : modification d'un maillage, sans adaptation
152 c 4 : conversion de solution
153 c 5 : mise a jour des coordonnees apres un suivi de frontiere externe
156 #ifdef _DEBUG_HOMARD_
157 write (ulsort,texte(langue,3)) 'HOLECT', nompro
159 call holect ( modhom, codret )
162 c 3. Mode : HOMARD pur
165 if ( modhom.eq.1 ) then
167 c 3.1. ==> conversions avant adaptation et ecritures
169 #ifdef _DEBUG_HOMARD_
170 write (ulsort,texte(langue,3)) 'HOAVCV', nompro
172 call hoavcv ( codret )
174 #ifdef _DEBUG_HOMARD_
175 write (ulsort,texte(langue,3)) 'HOAVEC', nompro
177 call hoavec ( codret )
179 c 3.2. ==> attribution des decisions aux faces et aux aretes
181 #ifdef _DEBUG_HOMARD_
182 write (ulsort,texte(langue,3)) 'HODECI', nompro
184 call hodeci ( codret )
186 c 3.3. ==> creation du nouveau maillage
188 #ifdef _DEBUG_HOMARD_
189 write (ulsort,texte(langue,3)) 'HOCRMA', nompro
191 call hocrma ( codret )
193 c 3.4. ==> suivi de frontiere (eventuellement)
195 #ifdef _DEBUG_HOMARD_
196 write (ulsort,texte(langue,3)) 'HOSUFR', nompro
198 call hosufr ( codret )
200 c 3.5. ==> conversions apres adaptation
202 #ifdef _DEBUG_HOMARD_
203 write (ulsort,texte(langue,3)) 'HOAPCV', nompro
205 call hoapcv ( codret )
207 c 3.6. ==> informations complementaires
209 #ifdef _DEBUG_HOMARD_
210 write (ulsort,texte(langue,3)) 'HOINCO', nompro
212 call hoinco ( codret )
216 #ifdef _DEBUG_HOMARD_
217 write (ulsort,texte(langue,3)) 'HOAPEC', nompro
219 call hoapec ( codret )
221 c 3.8. ==> creation de maillage et solution annexes (eventuellement)
223 #ifdef _DEBUG_HOMARD_
224 write (ulsort,texte(langue,3)) 'HOCMSA', nompro
226 call hocmsa ( codret )
229 c 4. Mode : information
232 elseif ( modhom.eq.2 ) then
234 c 4.1. ==> conversions
236 #ifdef _DEBUG_HOMARD_
237 write (ulsort,texte(langue,3)) 'INCONV', nompro
239 call inconv ( codret )
241 c 4.2. ==> informations
243 #ifdef _DEBUG_HOMARD_
244 write (ulsort,texte(langue,3)) 'ININFM', nompro
246 call ininfm ( codret )
248 c 4.3. ==> questions/reponses
250 #ifdef _DEBUG_HOMARD_
251 write (ulsort,texte(langue,3)) 'INQURE', nompro
253 call inqure ( codret )
256 c 5. Mode : modification de maillage
259 elseif ( modhom.eq.3 ) then
261 c 5.1. ==> conversions initiales et ecritures
263 #ifdef _DEBUG_HOMARD_
264 write (ulsort,texte(langue,3)) 'HOAVCV', nompro
266 call hoavcv ( codret )
268 #ifdef _DEBUG_HOMARD_
269 write (ulsort,texte(langue,3)) 'HOAVEC', nompro
271 call hoavec ( codret )
273 c 5.2. ==> modification
275 #ifdef _DEBUG_HOMARD_
276 write (ulsort,texte(langue,3)) 'MMODI', nompro
278 call mmmodi ( codret )
280 c 5.3. ==> conversions apres modification
282 #ifdef _DEBUG_HOMARD_
283 write (ulsort,texte(langue,3)) 'HOAPCV', nompro
285 call hoapcv ( codret )
287 c 5.4. ==> informations complementaires
289 #ifdef _DEBUG_HOMARD_
290 write (ulsort,texte(langue,3)) 'HOINCO', nompro
292 call hoinco ( codret )
296 #ifdef _DEBUG_HOMARD_
297 write (ulsort,texte(langue,3)) 'HOAPEC', nompro
299 call hoapec ( codret )
302 c 6. Mode : conversion de la solution
305 elseif ( modhom.eq.4 ) then
307 #ifdef _DEBUG_HOMARD_
308 write (ulsort,texte(langue,3)) 'HOAPCV', nompro
310 call hoapcv ( codret )
312 #ifdef _DEBUG_HOMARD_
313 write (ulsort,texte(langue,3)) 'HOAPEC', nompro
315 call hoapec ( codret )
318 c 7. Mode : mise a jour des coordonnees
321 elseif ( modhom.eq.5 ) then
323 #ifdef _DEBUG_HOMARD_
324 write (ulsort,texte(langue,3)) 'HOMAJC', nompro
326 call homajc ( codret )
328 #ifdef _DEBUG_HOMARD_
329 write (ulsort,texte(langue,3)) 'HOAVEC', nompro
331 call hoavec ( codret )
345 c Si le code de retour est :
347 c . un multiple de 2 : probleme dans les objets GM
348 c . un multiple de 3 : probleme dans les fichiers
349 c . 5 : deux appels a des programmes d'initialisations
353 call utulls ( ulsort, codre0 )
358 if ( codret.eq.0 ) then
365 if ( mod(codret,2).eq.0 ) then
368 if ( mod(codret,3).eq.0 ) then
374 #ifdef _DEBUG_HOMARD_
375 write (ulsort,texte(langue,3)) 'HOSTOP', nompro
377 call hostop ( ulsort, guimp, gmimp, raison)