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