1 subroutine pcsote ( typint, deraff,
2 > nbpara, carenf, carchf, nrfonc,
3 > hettet, anctet, filtet,
4 > nbante, anfite, anhete,
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 aPres adaptation - Conversion de Solution - TEtraedres
29 c ______________________________________________________________________
31 c . nom . e/s . taille . description .
32 c .____________________________________________________________________.
33 c . typint . e . 1 . type d'interpolation .
34 c . . . . 0, si automatique .
35 c . . . . elements : 0 si intensif, sans orientation.
36 c . . . . 1 si extensif, sans orientation.
37 c . . . . 2 si intensif, avec orientation.
38 c . . . . 3 si extensif, avec orientation.
39 c . . . . noeuds : 1 si degre 1 .
40 c . . . . 2 si degre 2 .
41 c . . . . 3 si iso-P2 .
42 c . deraff . e . 1 . vrai, s'il y a eu du deraffinement en .
43 c . . . . passant de l'iteration n a n+1 ; faux sinon.
44 c . nbpara . e . 1 . nombre de parametres a enregistrer par fonc.
45 c . carenf . s .nbpara* . caracteristiques entieres des fonctions : .
46 c . . . nnfopa. 1 : 0, pour une fonction ancienne isolee .
47 c . . . . 1, pour une ancienne associee a une .
48 c . . . . autre fonction .
49 c . . . . -1, pour une nouvelle fonction .
50 c . . . . 2 : typcha .
51 c . . . . 3 : typgeo .
52 c . . . . 4 : typass .
53 c . . . . 5 : ngauss .
54 c . . . . 6 : nnenmx .
55 c . . . . 7 : nnvapr .
56 c . . . . 8 : carsup .
57 c . . . . 9 : nbtafo .
58 c . . . . 10 : anvale .
59 c . . . . 11 : anvalr .
60 c . . . . 12 : anobch .
61 c . . . . 13 : anprpg .
62 c . . . . 14 : anlipr .
63 c . . . . 15 : npenmx .
64 c . . . . 16 : npvapr .
65 c . . . . 17 : apvale .
66 c . . . . 18 : apvalr .
67 c . . . . 19 : apobch .
68 c . . . . 20 : apprpg .
69 c . . . . 21 : apvatt .
70 c . . . . 22 : apvane .
71 c . . . . 23 : antyas .
72 c . . . . 24 : aptyas .
73 c . . . . 25 : numero de la 1ere fonction associee .
74 c . . . . 26 : numero de la 2nde fonction associee .
75 c . carchf . es .nbpara* . caracteristiques caracteres des fonctions :.
76 c . . . nnfopa. 1 : nom de la fonction .
77 c . . . . 2 : nom de la fonction n associee .
78 c . . . . 3 : nom de la fonction p associee .
79 c . . . . 4 : obpcan .
80 c . . . . 5 : obpcap .
81 c . . . . 6 : obprof .
82 c . . . . 7 : oblo1g .
83 c . . . . 8 : si aux points de Gauss, nom de la .
84 c . . . . fonction n ELNO correspondante .
85 c . . . . 9 : si aux points de Gauss, nom de la .
86 c . . . . fonction p ELNO correspondante .
87 c . nrfonc . e . 1 . numero de la fonction principale .
88 c . hettet . e . nbteto . historique de l'etat des tetraedres .
89 c . filtet . e . nbteto . premier fils des tetraedres .
90 c . nbante . e . 1 . nombre de tetraedres decoupes par .
91 c . . . . conformite sur le maillage avant adaptation.
92 c . anfite . e . nbante . tableau filtet du maillage de l'iteration n.
93 c . anhete . e . nbante . tableau hettet du maillage de l'iteration n.
94 c . nteeca . e . * . tetraedres en entree dans le calcul .
95 c . ntesca . e . rsteto . tetraedres en sortie dans le calcul .
96 c . ulsort . e . 1 . numero d'unite logique de la liste standard.
97 c . langue . e . 1 . langue des messages .
98 c . . . . 1 : francais, 2 : anglais .
99 c . codret . es . 1 . code de retour des modules .
100 c . . . . 0 : pas de probleme .
101 c . . . . 1 : probleme .
102 c ______________________________________________________________________
105 c 0. declarations et dimensionnement
108 c 0.1. ==> generalites
114 parameter ( nompro = 'PCSOTE' )
136 integer carenf(nbpara,*)
139 integer hettet(nbteto), anctet(*)
140 integer filtet(nbteto)
141 integer nbante, anfite(nbante), anhete(nbante)
143 integer nteeca(reteto), ntesca(rsteto)
145 character*8 carchf(nbpara,*)
149 integer ulsort, langue, codret
151 c 0.4. ==> variables locales
155 integer typfon, typcha, typgeo, typass
156 integer ngauss, nnenmx, nnvapr, carsup, nbtafo
157 integer n1vale, n1valr, n1obpr, n1obch, n1lipr
158 integer npenmx, npvapr
159 integer p1vale, p1valr, p1obpr, p1obch, p1vatt
160 integer p1vane, p1tyas
161 integer adpcan, adpcap
162 integer nrfon2, nrfon3
164 integer adcono, adcopg, adpopg, adwipg
167 character*8 nofonc, obpcan, obpcap, obprof
173 parameter ( nbmess = 10 )
174 character*80 texte(nblang,nbmess)
176 c 0.5. ==> initialisations
177 c ______________________________________________________________________
187 #ifdef _DEBUG_HOMARD_
188 write (ulsort,texte(langue,1)) 'Entree', nompro
195 #ifdef _DEBUG_HOMARD_
196 write (ulsort,texte(langue,4)) nrfonc
200 c 2. grandeurs utiles
203 if ( codret.eq.0 ) then
205 #ifdef _DEBUG_HOMARD_
206 write(ulsort,90002) 'carenf ',(carenf(iaux,nrfonc),iaux= 1,10)
207 write(ulsort,90002) 'carenf ',(carenf(iaux,nrfonc),iaux=11,20)
208 write(ulsort,90002) 'carenf ',
209 > (carenf(iaux,nrfonc),iaux=21,nbpara)
210 write(ulsort,90003) 'carchf ',(carchf(iaux,nrfonc),iaux= 1,9)
212 #ifdef _DEBUG_HOMARD_
213 write (ulsort,texte(langue,3)) 'PCFOR2', nompro
216 call pcfor2 ( nbpara, carenf, carchf,
218 > typfon, typcha, typgeo, typass,
219 > ngauss, nnenmx, nnvapr, carsup, nbtafo,
220 > n1vale, n1valr, n1obpr, n1obch, n1lipr,
222 > p1vale, p1valr, p1obpr, p1obch, p1vatt,
226 > obpcan, obpcap, obprof, adpcan, adpcap,
228 > ulsort, langue, codret )
233 #ifdef _DEBUG_HOMARD_
234 if ( codret.eq.0 ) then
235 write (ulsort,90003) 'nofonc', nofonc
236 write (ulsort,90002) 'typfon', typfon
237 write (ulsort,90002) 'typcha', typcha
238 write (ulsort,90002) 'typgeo', typgeo
239 write (ulsort,90002) 'typass', typass
240 write (ulsort,90002) 'carsup', carsup
241 write (ulsort,90002) 'nbtafo', nbtafo
242 write (ulsort,90002) 'ngauss', ngauss
243 write (ulsort,90003) 'oblo1g', oblo1g
248 c 3. interpolation des variables
251 c 3.1. ==> sans point de Gauss
253 if ( ngauss.eq.ednopg ) then
255 if ( codret.eq.0 ) then
257 #ifdef _DEBUG_HOMARD_
258 write (ulsort,texte(langue,3)) 'PCSTE0', nompro
260 cgn print *,(rmem(n1valr+iaux-1),iaux=1,5)
261 call pcste0 ( nbtafo, typint, deraff,
262 > imem(adpcan), imem(adpcap),
263 > hettet, anctet, filtet,
266 > rmem(n1valr), rmem(p1vatt),
267 > ulsort, langue, codret )
270 cgn print *,(rmem(p1vatt+iaux-1),iaux=1,18)
274 c 3.2. ==> avec plusieurs points de Gauss
276 c 3.2.1. ==> champ aux noeuds par element
278 if ( carsup.eq.1 ) then
280 if ( codret.eq.0 ) then
282 #ifdef _DEBUG_HOMARD_
283 write (ulsort,texte(langue,3)) 'PCETE1', nompro
285 call pcete1 ( nbtafo, ngauss, deraff,
286 > imem(adpcan), imem(adpcap),
287 > hettet, anctet, filtet,
288 > nbante, anfite, anhete,
290 > rmem(n1valr), rmem(p1vatt),
291 > ulsort, langue, codret )
295 c 3.2.2. ==> vrai champ aux points de Gauss
299 c 3.2.2.1. ==> recuperation de la localisation des points de Gauss
301 if ( codret.eq.0 ) then
303 #ifdef _DEBUG_HOMARD_
304 write (ulsort,texte(langue,3)) 'UTCAPG', nompro
307 call utcapg ( oblo1g,
308 > nolopg, typgeo, ngauss, dimcpg,
309 > adcono, adcopg, adpopg,
310 > ulsort, langue, codret )
312 if ( degre.eq.1 ) then
320 c 3.2.2.2. ==> interpolation
322 if ( codret.eq.0 ) then
324 call gmalot ( ntrava, 'reel ', iaux, adwipg, codret )
327 if ( codret.eq.0 ) then
329 #ifdef _DEBUG_HOMARD_
330 write (ulsort,texte(langue,3)) 'PCSTEG', nompro
332 call pcsteg ( nbtafo, ngauss, nbnorf, typgeo, deraff,
333 > imem(adpcan), imem(adpcap),
334 > hettet, anctet, filtet,
337 > rmem(n1valr), rmem(p1vatt),
338 > rmem(adcono), rmem(adcopg), rmem(adwipg),
339 > ulsort, langue, codret )
343 if ( codret.eq.0 ) then
344 call gmlboj ( ntrava , codret )
350 cgn print *, 'codret = ', codret
356 if ( codret.ne.0 ) then
360 write (ulsort,texte(langue,1)) 'Sortie', nompro
361 write (ulsort,texte(langue,2)) codret
365 #ifdef _DEBUG_HOMARD_
366 write (ulsort,texte(langue,1)) 'Sortie', nompro