1 subroutine holver ( lgopti, taopti, lgoptr, taoptr,
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 HOMARD : Lectures VERifications
26 c ______________________________________________________________________
28 c . nom . e/s . taille . description .
29 c .____________________________________________________________________.
30 c . lgopti . e . 1 . longueur du tableau des options .
31 c . taopti . e . lgopti . tableau des options .
32 c . lgoptr . e . 1 . longueur du tableau des options reelles .
33 c . taoptr . e . lgoptr . tableau des options reelles .
34 c . lgetco . e . 1 . longueur du tableau de l'etat courant .
35 c . taetco . e . lgetco . tableau de l'etat courant .
36 c . ulsort . e . 1 . numero d'unite logique de la liste standard.
37 c . langue . e . 1 . langue des messages .
38 c . . . . 1 : francais, 2 : anglais .
39 c . codret . es . 1 . code de retour des modules .
40 c . . . . 0 : pas de probleme .
41 c . . . . 2 : incoherence dans les options .
42 c ______________________________________________________________________
45 c 0. declarations et dimensionnement
48 c 0.1. ==> generalites
54 parameter ( nompro = 'HOLVER' )
66 integer taopti(lgopti)
69 double precision taoptr(lgoptr)
72 integer taetco(lgetco)
74 integer ulsort, langue, codret
76 c 0.4. ==> variables locales
80 integer nretap, nrsset
87 parameter ( nbmess = 200 )
88 character*80 texte(nblang,nbmess)
90 c 0.5. ==> initialisations
91 c ______________________________________________________________________
99 c=======================================================================
100 if ( codava.eq.0 ) then
101 c=======================================================================
103 c 1.1. ==> tout va bien
109 c 1.2. ==> les messages
113 #ifdef _DEBUG_HOMARD_
114 write (ulsort,texte(langue,1)) 'Entree', nompro
118 texte(1,4) = '(/,a6,'' VERIFICATION DES OPTIONS'')'
119 texte(1,5) = '(31(''=''),/)'
120 texte(1,8) = '(/,''Mode de fonctionnement de HOMARD :'')'
122 texte(1,95) = '(7x,''Maillage avant adaptation :'')'
123 texte(1,96) = '(7x,''Maillage apres adaptation :'')'
124 texte(1,97) = '(7x,''Maillage apres modification :'')'
125 texte(1,98) = '(7x,''Indicateurs d''''erreurs :'')'
126 texte(1,99) = '(7x,''Solution :'')'
128 texte(2,4) = '(/,a6,'' CONTROL OF OPTIONS'')'
129 texte(2,5) = '(25(''=''),/)'
130 texte(2,8) = '(/,''HOMARD running mode:'')'
132 texte(2,95) = '(7x,''Mesh before adaptation:'')'
133 texte(2,96) = '(7x,''Mesh after adaptation:'')'
134 texte(2,97) = '(7x,''Mesh after modification:'')'
135 texte(2,98) = '(7x,''Error indicator:'')'
136 texte(2,99) = '(7x,''Solution:'')'
142 c 1.3. ==> le numero de sous-etape
145 nrsset = taetco(2) + 1
148 call utcvne ( nretap, nrsset, saux, iaux, codret )
152 write (ulsort,texte(langue,4)) saux
153 write (ulsort,texte(langue,5))
156 c 2. verification du mode d'utilisation de homard
159 if ( taopti(4).ge.1 .and. taopti(4).le.5 ) then
161 #ifdef _DEBUG_HOMARD_
162 write (ulsort,90002) 'modhom', modhom
165 write(ulsort,texte(langue,8))
166 write(ulsort,texte(langue,11)) taopti(4)
171 c 3. verification de la validite des mots_cles de pilotage
174 c 3.1. ==> type de code de calcul associe
179 c 3.2. ==> pour le mode homard pur
180 #ifdef _DEBUG_HOMARD_
181 write (ulsort,90002) '3.2. homard pur ; nbrepb', nbrepb
184 if ( modhom.eq.1 ) then
186 c 3.2.1. ==> numero d'iteration initiale
188 write(ulsort,texte(langue,23))
189 if ( taopti(10).eq.0 ) then
190 write(ulsort,texte(langue,20))
191 elseif ( taopti(10).eq.1 ) then
192 write(ulsort,texte(langue,21))
193 elseif ( taopti(10).gt.1 ) then
194 write(ulsort,texte(langue,22)) taopti(10)
196 write(ulsort,texte(langue,11)) taopti(10)
200 c 3.2.2. ==> type de conformite
201 #ifdef _DEBUG_HOMARD_
202 write (ulsort,90002) '3.2.2. conformite ; nbrepb', nbrepb
207 c 3.2.3. ==> maillage extrude
208 #ifdef _DEBUG_HOMARD_
209 write (ulsort,90002) '3.2.3. maillage extrude ; nbrepb', nbrepb
214 c 3.2.4. ==> raffinement
215 #ifdef _DEBUG_HOMARD_
216 write (ulsort,90002) '3.2.4. raffinement ; nbrepb', nbrepb
223 c 3.2.5. ==> deraffinement
224 #ifdef _DEBUG_HOMARD_
225 write (ulsort,90002) '3.2.5. deraffinement ; nbrepb', nbrepb
231 c 3.2.6. ==> coherence entre raffinement et deraffinement
232 #ifdef _DEBUG_HOMARD_
233 write (ulsort,90002) '3.2.6. raff/dera ; nbrepb', nbrepb
238 c 3.2.7. ==> coherence des seuils
239 #ifdef _DEBUG_HOMARD_
240 write (ulsort,90002) '3.2.7. seuils ; nbrepb', nbrepb
245 c 3.2.8. ==> indicateur de suivi de frontiere
246 #ifdef _DEBUG_HOMARD_
247 write (ulsort,90002) '3.2.8. suivi de frontiere ; nbrepb', nbrepb
252 c 3.3. ==> pour les autres modes
261 c 3.4. ==> pour le mode homard pur ou interpolation de solution
263 if ( modhom.eq.1 .or. modhom.eq.4 ) then
265 c 3.4.1. ==> indicateur de conversion de la solution
267 write(ulsort,texte(langue,61))
269 write(ulsort,texte(langue,99))
270 if ( taopti(28).eq.0 ) then
271 write(ulsort,texte(langue,12))
272 elseif ( taopti(28).eq.1 ) then
273 write(ulsort,texte(langue,13))
275 write(ulsort,texte(langue,11)) taopti(28)
281 c 3.5. ==> reperage temporel de l'indicateur d'erreur
283 if ( modhom.eq.1 ) then
290 c 4. message si erreur
293 if ( nbrepb.ne.0 ) then
295 write (ulsort,texte(langue,1)) 'Sortie', nompro
296 if ( nbrepb.eq.1 ) then
297 write (ulsort,texte(langue,6))
299 write (ulsort,texte(langue,7))
306 c 5. si tout va bien, on en deduit les conversions a faire
309 if ( codret.eq.0 ) then
311 c 5.1. ==> indicateur de conversion du maillage
313 c 5.1.1. ==> pour le mode homard pur
315 if ( modhom.eq.1 ) then
317 write(ulsort,texte(langue,95))
318 if ( taopti(10).eq.0 ) then
320 write(ulsort,texte(langue,13))
323 write(ulsort,texte(langue,12))
326 write(ulsort,texte(langue,96))
328 write(ulsort,texte(langue,13))
330 c 5.1.2. ==> pour le mode information
332 elseif ( modhom.eq.2 ) then
334 write(ulsort,texte(langue,24))
335 if ( taopti(11).ne.1 ) then
337 write(ulsort,texte(langue,13))
340 write(ulsort,texte(langue,12))
343 c 5.1.3. ==> pour le mode modification
345 elseif ( modhom.eq.3 ) then
347 write(ulsort,texte(langue,25))
348 if ( taopti(11).ne.1 ) then
350 write(ulsort,texte(langue,13))
353 write(ulsort,texte(langue,12))
356 write(ulsort,texte(langue,97))
358 write(ulsort,texte(langue,13))
360 c 5.1.4. ==> pour le mode interpolation
369 c 5.2. ==> indicateur de conversion de l'indicateur d'erreur
371 c 5.2.1. ==> pour le mode homard pur
373 if ( modhom.eq.1 ) then
375 if ( taopti(37).eq.0 ) then
376 write(ulsort,texte(langue,98))
378 if ( taopti(10).eq.0 ) then
379 if ( taopti(31).gt.0 ) then
383 if ( taopti(31).gt.0 .or. taopti(32).gt.0 ) then
387 if ( taopti(27).eq.0 ) then
388 write(ulsort,texte(langue,12))
390 write(ulsort,texte(langue,13))
396 c 5.2.2. ==> pour les autres modes
407 c 6. ecriture des fichiers HOMARD : rien pour le mode d'information
410 if ( codret.eq.0 ) then
412 if ( modhom.eq.2 ) then
419 c 7. Option du delta de coordonnees pour les maillages extrudes
422 if ( taopti(39).ne.0 ) then
424 c 7.1 ==> Si le delta est impose, on doit avoir une valeur > 0
426 if ( codret.eq.0 ) then
428 if ( taopti(40).eq.2 ) then
430 if ( abs(taoptr(3)+1789.d0).lt.1.0d-6 ) then
431 write(ulsort,texte(langue,70))
432 write(ulsort,texte(langue,72))
435 elseif ( taoptr(3).le.0.0d0 ) then
436 write(ulsort,texte(langue,70))
437 write(ulsort,texte(langue,73))
452 if ( codret.ne.0 ) then
456 write (ulsort,texte(langue,1)) 'Sortie', nompro
457 write (ulsort,texte(langue,2)) codret
461 #ifdef _DEBUG_HOMARD_
462 write (ulsort,texte(langue,1)) 'Sortie', nompro
466 c=======================================================================
468 c=======================================================================