Salome HOME
Homard executable
[modules/homard.git] / src / tool / AP_Conversion / pcsehy.F
1       subroutine pcsehy ( nfhexa, nfpyra, nftetr, ficalc,
2      >                    lehexa, etat,
3      >                    filhex, fhpyte,
4      >                    nhecca, ntecca, npycca,
5      >                    ulsort, langue, codret )
6 c ______________________________________________________________________
7 c
8 c                             H O M A R D
9 c
10 c Outil de Maillage Adaptatif par Raffinement et Deraffinement d'EDF R&D
11 c
12 c Version originale enregistree le 18 juin 1996 sous le numero 96036
13 c aupres des huissiers de justice Simart et Lavoir a Clamart
14 c Version 11.2 enregistree le 13 fevrier 2015 sous le numero 2015/014
15 c aupres des huissiers de justice
16 c Lavoir, Silinski & Cherqui-Abrahmi a Clamart
17 c
18 c    HOMARD est une marque deposee d'Electricite de France
19 c
20 c Copyright EDF 1996
21 c Copyright EDF 1998
22 c Copyright EDF 2002
23 c Copyright EDF 2020
24 c ______________________________________________________________________
25 c
26 c    aPres adaptation - Conversion de Solution Elements de volume -
27 c     -                 -             -        -
28 c                       Hexaedres - reperages des fils
29 c                       -
30 c ______________________________________________________________________
31 c .        .     .        .                                            .
32 c .  nom   . e/s . taille .           description                      .
33 c .____________________________________________________________________.
34 c . nfhexa .   s .    1   . nombre de fils hexaedres                   .
35 c . nfpyra .   s .    1   . nombre de fils pyramides                   .
36 c . nftetr .   s .    1   . nombre de fils tetraedres                  .
37 c . ficalc .   s .  3,18  . numeros des fils en numerotation du calcul .
38 c .        .     .        . 1 : hexaedres                              .
39 c .        .     .        . 2 : pyramides                              .
40 c .        .     .        . 3 : tetraedres                             .
41 c . lehexa . e   .    1   . hexaedre courant                           .
42 c . etat   . e   .    1   . etat de l'hexaedre                         .
43 c . filhex . e   .   *    . premier fils des hexaedres                 .
44 c . fhpyte . e   .2*nbheco. fhpyte(1,j) = numero de la 1ere pyramide   .
45 c .        .     .        . fille de l'hexaedre k tel que filhex(k) =-j.
46 c .        .     .        . fhpyte(2,j) = numero du 1er tetraedre      .
47 c .        .     .        . fils de l'hexaedre k tel que filhex(k) = -j.
48 c . nhecca . e   .   *    . numero des hexaedres dans le calcul e/s    .
49 c . ntecca . e   .   *    . numero des tetraedres dans le calcul e/s   .
50 c . npycca . e   .   *    . pyramides en sortie dans le calcul e/s     .
51 c . ulsort . e   .   1    . numero d'unite logique de la liste standard.
52 c . langue . e   .    1   . langue des messages                        .
53 c .        .     .        . 1 : francais, 2 : anglais                  .
54 c . codret . es  .    1   . code de retour des modules                 .
55 c .        .     .        . 0 : pas de probleme                        .
56 c .        .     .        . 1 : probleme                               .
57 c ______________________________________________________________________
58 c
59 c====
60 c 0. declarations et dimensionnement
61 c====
62 c
63 c 0.1. ==> generalites
64 c
65       implicit none
66       save
67 c
68       character*6 nompro
69       parameter ( nompro = 'PCSEHY' )
70 c
71 #include "nblang.h"
72 c
73 c 0.2. ==> communs
74 c
75 #include "hexcf0.h"
76 c
77 c 0.3. ==> arguments
78 c
79       integer nfhexa, nfpyra, nftetr
80       integer ficalc(3,18)
81       integer lehexa, etat
82 c
83       integer filhex(*), fhpyte(2,*)
84       integer nhecca(*)
85       integer ntecca(*)
86       integer npycca(*)
87 c
88       integer ulsort, langue, codret
89 c
90 c 0.4. ==> variables locales
91 c
92       integer iaux, jaux
93 c
94       integer nbmess
95       parameter ( nbmess = 10 )
96       character*80 texte(nblang,nbmess)
97 c
98 c 0.5. ==> initialisations
99 c ______________________________________________________________________
100 c
101 c====
102 c 1. initialisations
103 c====
104 c
105 #include "impr01.h"
106 #include "impr03.h"
107 c
108 #ifdef _DEBUG_HOMARD_
109       write (ulsort,texte(langue,1)) 'Entree', nompro
110       call dmflsh (iaux)
111 #endif
112 c
113 #include "pcimp2.h"
114 c
115       codret = 0
116 c
117 #ifdef _DEBUG_HOMARD_
118       write (ulsort,texte(langue,4)) lehexa, etat
119 #endif
120 c
121 c====
122 c 2. denombrement des fils pour les differents cas de figure
123 c====
124 c
125       jaux = chbiet(etat)
126 #ifdef _DEBUG_HOMARD_
127       write (ulsort,90015) 'etat', etat, ' ==> code binaire', jaux
128 #endif
129 c
130       nfhexa = chnhe(jaux)
131       nfpyra = chnpy(jaux)
132       nftetr = chnte(jaux)
133 c
134 #ifdef _DEBUG_HOMARD_
135       write (ulsort,90002) 'nfhexa', nfhexa
136       write (ulsort,90002) 'nfpyra', nfpyra
137       write (ulsort,90002) 'nftetr', nftetr
138 #endif
139 c
140 c====
141 c 3. Calcul
142 c====
143 c 3.1. ==> Reperage des hexaedres fils de l'hexaedre
144 c
145       if ( nfhexa.gt.0 ) then
146 c
147         jaux = filhex(lehexa) - 1
148         do 31 , iaux = 1 , nfhexa
149 cgn        write(ulsort,90002) 'fils', iaux,jaux+iaux
150           ficalc(1,iaux) = nhecca(jaux+iaux)
151    31   continue
152 cgn        write(ulsort,90002) 'nfhexa', nfhexa
153 cgn        write(ulsort,91020) (ficalc(1,iaux) , iaux = 1 , nfhexa)
154 c
155       endif
156 c
157 c 3.2. ==> Reperage des pyramides filles de l'hexaedre
158 c
159       if ( nfpyra.gt.0 ) then
160 c
161         jaux = fhpyte(1,-filhex(lehexa)) - 1
162         do 32 , iaux = 1 , nfpyra
163           ficalc(2,iaux) = npycca(jaux+iaux)
164    32   continue
165 cgn        write(ulsort,90002) 'nfpyra', nfpyra
166 cgn        write(ulsort,91020) (ficalc(2,iaux) , iaux = 1 , nfpyra)
167 c
168       endif
169 c
170 c 3.3. ==> Reperage des tetraedres fils de l'hexaedre
171 c
172       if ( nftetr.gt.0 ) then
173 c
174         jaux = fhpyte(2,-filhex(lehexa)) - 1
175         do 33 , iaux = 1 , nftetr
176           ficalc(3,iaux) = ntecca(jaux+iaux)
177    33   continue
178 cgn        write(ulsort,90002) 'nftetr', nftetr
179 cgn        write(ulsort,91020) (ficalc(3,iaux) , iaux = 1 , nftetr)
180 c
181       endif
182 c
183 c====
184 c 4. la fin
185 c====
186 c
187       if ( codret.ne.0 ) then
188 c
189       write (ulsort,texte(langue,1)) 'Sortie', nompro
190       write (ulsort,texte(langue,2)) codret
191 c
192       endif
193 c
194 #ifdef _DEBUG_HOMARD_
195       write (ulsort,texte(langue,1)) 'Sortie', nompro
196       call dmflsh (iaux)
197 #endif
198 c
199       end