Salome HOME
Homard executable
[modules/homard.git] / src / tool / Creation_Maillage / cmcp0d.F
1       subroutine cmcp0d ( indpyr, indptp,
2      >                    lepent,
3      >                    trifad, cotrvo, triint,
4      >                    laface, coface,
5      >                    hetpyr, facpyr, cofapy,
6      >                    filpyr, perpyr, fampyr,
7      >                    fampen, cfapen,
8      >                    ulsort, langue, codret )
9 c ______________________________________________________________________
10 c
11 c                             H O M A R D
12 c
13 c Outil de Maillage Adaptatif par Raffinement et Deraffinement d'EDF R&D
14 c
15 c Version originale enregistree le 18 juin 1996 sous le numero 96036
16 c aupres des huissiers de justice Simart et Lavoir a Clamart
17 c Version 11.2 enregistree le 13 fevrier 2015 sous le numero 2015/014
18 c aupres des huissiers de justice
19 c Lavoir, Silinski & Cherqui-Abrahmi a Clamart
20 c
21 c    HOMARD est une marque deposee d'Electricite de France
22 c
23 c Copyright EDF 1996
24 c Copyright EDF 1998
25 c Copyright EDF 2002
26 c Copyright EDF 2020
27 c ______________________________________________________________________
28 c
29 c    Creation du Maillage - Conformite - decoupage des Pentaedres
30 c    -           -          -                          -
31 c                         - cas 0, phase D
32 c                               -        -
33 c    Construction des pyramides
34 c ______________________________________________________________________
35 c .        .     .        .                                            .
36 c .  nom   . e/s . taille .           description                      .
37 c .____________________________________________________________________.
38 c . indpyr . es  .   1    . indice de la derniere pyramide creee       .
39 c . indptp . e   .   1    . indice du dernier pere enregistre          .
40 c . lepent . e   .   1    . pentaedre a decouper                       .
41 c . trifad . e   .(2,0:2) . triangles traces sur les faces decoupees   .
42 c . cotrvo . e   .(2,0:2) . code des triangles dans les volumes        .
43 c . triint . e   .   3    .triangles internes au pentaedre            .
44 c .        .     .        .  1 = bordant la pyramide 1 uniquement      .
45 c .        .     .        .  2 = bordant la pyramide 2 uniquement      .
46 c .        .     .        .  3 = bordant les deux pyramides            .
47 c . laface . e   .   2    . numero des faces non coupees               .
48 c . coface . e   .   2    . futur code des faces dans le tetraedre     .
49 c . hetpyr . es  . nouvpy . historique de l'etat des pyramides         .
50 c . facpyr . es  .nouvyf*5. numeros des 5 faces des pyramides          .
51 c . cofapy . es  .nouvyf*5. codes des faces des pyramides              .
52 c . filpyr . es  . nouvpy . premier fils des pyramides                 .
53 c . perpyr . es  . nouvpy . pere des pyramides                         .
54 c .        .     .        . si perpyr(i) > 0 : numero de la pyramide   .
55 c .        .     .        . si perpyr(i) < 0 : -numero dans pphepe     .
56 c . fampyr . es  . nouvpy . famille des pyramides                      .
57 c . fampen . e   . nouvpe . famille des pentaedres                     .
58 c . cfapen . e   . nctfpe*. codes des familles des pentaedres          .
59 c .        .     . nbfpen .   1 : famille MED                          .
60 c .        .     .        .   2 : type de pentaedres                   .
61 c .        .     .        .   3 : famille des tetraedres de conformite .
62 c .        .     .        .   4 : famille des pyramides de conformite  .
63 c .        .     .        .   3 : famille des tetraedres de conformite .
64 c .        .     .        .   4 : famille des pyramides de conformite  .
65 c . ulsort . e   .   1    . unite logique de la sortie generale        .
66 c . langue . e   .    1   . langue des messages                        .
67 c .        .     .        . 1 : francais, 2 : anglais                  .
68 c . codret . es  .    1   . code de retour des modules                 .
69 c .        .     .        . 0 : pas de probleme                        .
70 c .        .     .        . 1 : aucune arete ne correspond             .
71 c ______________________________________________________________________
72 c
73 c====
74 c 0. declarations et dimensionnement
75 c====
76 c
77 c 0.1. ==> generalites
78 c
79       implicit none
80       save
81 c
82       character*6 nompro
83       parameter ( nompro = 'CMCP0D' )
84 c
85 #include "nblang.h"
86 c
87 c 0.2. ==> communs
88 c
89 #include "envex1.h"
90 c
91 #include "dicfen.h"
92 #include "nbfami.h"
93 #include "nouvnb.h"
94 #include "cofpfp.h"
95 c
96 c 0.3. ==> arguments
97 c
98       integer indpyr, indptp
99       integer lepent
100       integer trifad(2,0:2), cotrvo(2,0:2)
101       integer triint(3)
102       integer laface(2), coface(2)
103       integer hetpyr(nouvpy), facpyr(nouvyf,5), cofapy(nouvyf,5)
104       integer filpyr(nouvpy), perpyr(nouvpy), fampyr(nouvpy)
105       integer fampen(nouvpe), cfapen(nctfpe,nbfpen)
106 c
107       integer ulsort, langue, codret
108 c
109 c 0.4. ==> variables locales
110 c
111       integer iaux
112       integer nupere, nufami
113 c
114       integer nbmess
115       parameter ( nbmess = 10 )
116       character*80 texte(nblang,nbmess)
117 c
118 c 0.5. ==> initialisations
119 c ______________________________________________________________________
120 c
121 c====
122 c 1. initialisations
123 c====
124 c
125 #include "impr01.h"
126 c
127 #ifdef _DEBUG_HOMARD_
128       write (ulsort,texte(langue,1)) 'Entree', nompro
129       call dmflsh (iaux)
130 #endif
131 c
132       codret = 0
133 c
134 c 1.2. ==> Le pere des pyramides et leur famille
135 c
136       nupere = -indptp
137       nufami = cfapen(cofpfp,fampen(lepent))
138 c
139 c====
140 c 2. Pyramide dont la base suit le quadrangle
141 c    coupe, vu depuis le triangle coupe
142 c====
143 c
144 #ifdef _DEBUG_HOMARD_
145       write (ulsort,texte(langue,3)) 'CMCPYR_1', nompro
146 #endif
147       indpyr = indpyr + 1
148       call cmcpyr ( facpyr, cofapy, fampyr, hetpyr, filpyr, perpyr,
149      >              trifad(2,0), cotrvo(2,0),
150      >              trifad(1,1), cotrvo(1,1),
151      >                triint(1),           1,
152      >                triint(2),           1,
153      >                laface(1),   coface(1),
154      >              nupere,  nufami,   indpyr )
155 c
156 c====
157 c 3. Pyramide suivante
158 c====
159 c
160 #ifdef _DEBUG_HOMARD_
161       write (ulsort,texte(langue,3)) 'CMCPYR_2', nompro
162 #endif
163       indpyr = indpyr + 1
164       call cmcpyr ( facpyr, cofapy, fampyr, hetpyr, filpyr, perpyr,
165      >              trifad(2,1), cotrvo(2,1),
166      >                triint(2),           4,
167      >                triint(3),           1,
168      >              trifad(1,2), cotrvo(1,2),
169      >                laface(2),   coface(2),
170      >              nupere,  nufami,   indpyr )
171 c
172 c====
173 c 4. la fin
174 c====
175 c
176       if ( codret.ne.0 ) then
177 c
178 #include "envex2.h"
179 c
180       write (ulsort,texte(langue,1)) 'Sortie', nompro
181       write (ulsort,texte(langue,2)) codret
182 c
183       endif
184 c
185 #ifdef _DEBUG_HOMARD_
186       write (ulsort,texte(langue,1)) 'Sortie', nompro
187       call dmflsh (iaux)
188 #endif
189 c
190       end