1 subroutine esech3 ( nrtafo,
2 > nbtafo, nbpg, nbvalc, nbcomp,
4 > ulsort, langue, codret )
5 c ______________________________________________________________________
9 c Outil de Maillage Adaptatif par Raffinement et Deraffinement d'EDF R&D
11 c Version originale enregistree le 18 juin 1996 sous le numero 96036
12 c aupres des huissiers de justice Simart et Lavoir a Clamart
13 c Version 11.2 enregistree le 13 fevrier 2015 sous le numero 2015/014
14 c aupres des huissiers de justice
15 c Lavoir, Silinski & Cherqui-Abrahmi a Clamart
17 c HOMARD est une marque deposee d'Electricite de France
23 c ______________________________________________________________________
25 c Entree-Sortie - Ecriture d'un CHamp au format MED - phase 3
27 c Ce programme est le symetrique de ESLCH5
28 c remarque : esech2 et esech3 sont des clones
29 c 2 : double precision
31 c ______________________________________________________________________
33 c . nom . e/s . taille . description .
34 c .____________________________________________________________________.
35 c . nrtafo . es . 1 . numero courant du tableau de la fonction .
36 c . nbcomp . e . 1 . nombre de composantes du champ .
37 c . nbtafo . e . 1 . nombre de tableaux de la fonction .
38 c . renume . e . * . renumerotation des entites .
39 c . nbvalc . e . 1 . nombre de valeurs par composante .
40 c . nbpg . e . 1 . nombre de points de Gauss, s'il y en a .
41 c . . . . si le champ est sans point de Gauss, nbpg .
42 c . . . . vaut 1 pour aider au traitement .
43 c . ulsort . e . 1 . numero d'unite logique de la liste standard.
44 c . langue . e . 1 . langue des messages .
45 c . . . . 1 : francais, 2 : anglais .
46 c . codret . es . 1 . code de retour des modules .
47 c . . . . 0 : pas de probleme .
48 c . . . . 1 : probleme .
49 c ______________________________________________________________________
52 c 0. declarations et dimensionnement
55 c 0.1. ==> generalites
61 parameter ( nompro = 'ESECH3' )
73 integer nbpg, nbvalc, nbcomp
75 integer trav1(nbpg,nbvalc,nbcomp)
76 integer vafonc(nbtafo,nbpg,*)
78 integer ulsort, langue, codret
80 c 0.4. ==> variables locales
83 integer nrcomp, nugaus
86 parameter ( nbmess = 150 )
87 character*80 texte(nblang,nbmess)
89 c 0.5. ==> initialisations
90 c ______________________________________________________________________
99 write (ulsort,texte(langue,1)) 'Entree', nompro
103 texte(1,5) = '(''. Premiere valeur : '',i10)'
104 texte(1,6) = '(''. Derniere valeur : '',i10)'
106 texte(2,5) = '(''. First value: '',i10)'
107 texte(2,6) = '(''. Last value : '',i10)'
113 #ifdef _DEBUG_HOMARD_
114 write (ulsort,*) '============================================='
115 write (ulsort,texte(langue,58)) nbvalc
116 write (ulsort,90002) 'nbcomp', nbcomp
117 write (ulsort,texte(langue,111)) nbtafo
118 write (ulsort,texte(langue,57)) nbpg
119 write (ulsort,90002) 'nrtafo', nrtafo
120 write (ulsort,texte(langue,5)) vafonc(nrtafo,1,1)
121 write (ulsort,texte(langue,6)) vafonc(nrtafo,nbpg,nbvalc)
125 c . Sans points de Gauss :
126 c Dans la phase de transfert dans les tableaux HOMARD, le tableau
127 c trav1 est declare ainsi : trav1(nbpg,nbensu,nbcomp), ce qui
128 c corrrespond a trav1(nbensu,nbcomp) sans points de Gauss.
130 c En fortran, cela correspond au stockage memoire suivant :
131 c trav1(1,1), trav1(2,1), trav1(3,1), ..., trav1(nbensu,1),
132 c trav1(1,2), trav1(2,2), trav1(3,2), ..., trav1(nbensu,2),
134 c trav1(1,nbcomp), trav1(2,nbcomp), ..., trav1(nbensu,nbcomp)
135 c on a ainsi toutes les valeurs pour la premiere composante, puis
136 c toutes les valeurs pour la seconde composante, etc.
138 c . Avec nbpg points de Gauss :
139 c Dans la phase de transfert dans les tableaux HOMARD, le tableau
140 c trav1 sera declare ainsi : trav1(nbpg,nbensu,nbcomp).
142 c En fortran, cela correspond au stockage memoire suivant :
143 c trav1(1,1,1), trav1(2,1,1), ..., trav1(nbpg,1,1), trav1(1,2,1),
144 c trav1(2,2,1), ..., trav1(nbpg,2,1), trav1(1,3,1), ...,
145 c trav1(1,nbensu,1), trav1(2,nbensu,1), ..., trav1(nbpg,nbensu,1),
146 c trav1(1,1,2), trav1(2,1,2), ..., trav1(nbpg,1,2), trav1(1,2,2),
147 c trav1(2,2,2), ..., trav1(nbpg,2,2), trav1(1,3,2), ...,
148 c trav1(1,nbensu,2), trav1(2,nbensu,2), ..., trav1(nbpg,nbensu,2),
150 c trav1(1,1,nrcomp), trav1(2,1,nrcomp), ..., trav1(nbpg,1,nrcomp),
151 c trav1(1,2,nrcomp), trav1(2,2,nrcomp), ..., trav1(nbpg,2,nrcomp),
152 c trav1(1,3,nrcomp), ..., trav1(nbpg,nbensu,nrcomp)
153 c on a ainsi tous les points de Gauss de la premiere maille de la
154 c premiere composante, puis tous les points de Gauss de la
155 c deuxieme maille de la premiere composante, etc. jusqu'a la fin de
156 c la premiere composante. Ensuite on recommence avec la deuxieme
159 c . Remarque : C'est ce que MED appelle le mode non entrelace.
164 do 20 , nrcomp = 1 , nbcomp
165 cgn print *,'nrcomp,nrtafo,nbvalc = ',nrcomp,nrtafo,nbvalc
167 if ( nbpg.eq.1 ) then
168 do 21 , iaux = 1 , nbvalc
169 cgn print *,'iaux = ',iaux
170 cgn print *,'vafonc(',nrtafo,',1,',iaux,') = ',vafonc(nrtafo,1,iaux)
171 trav1(1,iaux,nrcomp) = vafonc(nrtafo,1,iaux)
172 cgn write(12,*) 'trav1 = ',trav1(1,iaux,nrcomp)
175 do 22 , iaux = 1 , nbvalc
176 do 221 , nugaus = 1 , nbpg
177 trav1(nugaus,iaux,nrcomp) = vafonc(nrtafo,nugaus,iaux)
186 #ifdef _DEBUG_HOMARD_
187 write (ulsort,90002) 'nrtafo', nrtafo
194 if ( codret.ne.0 ) then
198 write (ulsort,texte(langue,1)) 'Sortie', nompro
199 write (ulsort,texte(langue,2)) codret
203 #ifdef _DEBUG_HOMARD_
204 write (ulsort,texte(langue,1)) 'Sortie', nompro