]> SALOME platform Git repositories - modules/homard.git/blob - src/tool/Creation_Maillage/cmcp4c.F
Salome HOME
Homard executable
[modules/homard.git] / src / tool / Creation_Maillage / cmcp4c.F
1       subroutine cmcp4c ( indtri, triint,
2      >                    lesare,
3      >                    areint, areqtr, areqqu, niveau,
4      >                    aretri, famtri, hettri,
5      >                    filtri, pertri, nivtri,
6      >                    ulsort, langue, codret )
7 c ______________________________________________________________________
8 c
9 c                             H O M A R D
10 c
11 c Outil de Maillage Adaptatif par Raffinement et Deraffinement d'EDF R&D
12 c
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
18 c
19 c    HOMARD est une marque deposee d'Electricite de France
20 c
21 c Copyright EDF 1996
22 c Copyright EDF 1998
23 c Copyright EDF 2002
24 c Copyright EDF 2020
25 c ______________________________________________________________________
26 c
27 c    Creation du Maillage - Conformite - decoupage des Pentaedres
28 c    -           -          -                          -
29 c                         - cas 4, phase C
30 c                               -        -
31 c    Construction des triangles internes
32 c ______________________________________________________________________
33 c .        .     .        .                                            .
34 c .  nom   . e/s . taille .           description                      .
35 c .____________________________________________________________________.
36 c . indtri . es  .   1    . indice du dernier triangle cree            .
37 c . triint .  s  .   7    . triangles internes au pentaedre            .
38 c .        .     .        .  1-4 = base parallele au triangle          .
39 c .        .     .        .  1 = cote F1, quad suivant quad coupe en 4 .
40 c .        .     .        .  2 = cote F1, quad suivant                 .
41 c .        .     .        .  3 = cote F2, quad suivant quad coupe en 4 .
42 c .        .     .        .  4 = cote F2, quad suivant                 .
43 c .        .     .        .  5-6 = base coupant le triangle            .
44 c .        .     .        .  5 = cote F1                               .
45 c .        .     .        .  6 = cote F2                               .
46 c .        .     .        .  7 = s'appuyant sur la derniere non coupee .
47 c . lesare . e   .   1    . liste des aretes du pentaedre utiles       .
48 c .        .     .        .  1 = arete de quadrangle non decoupee      .
49 c . areint . e  .    2    . aretes internes au pentaedre               .
50 c . areqtr .  s  .(4,0:2) . aretes tri tracees sur les faces decoupees .
51 c . aretri . es  .nouvtr*3. numeros des 3 aretes des triangles         .
52 c . areqqu .  s  .   4    . aretes qua tracees sur les faces decoupees .
53 c . hettri . es  . nouvtr . historique de l'etat des triangles         .
54 c . filtri . es  . nouvtr . premier fils des triangles                 .
55 c . pertri . es  . nouvtr . pere des triangles                         .
56 c . nivtri . es  . nouvtr . niveau des triangles                       .
57 c . famtri . es  . nouvtr . famille des triangles                      .
58 c . niveau . e   . 1      . niveau a attribuer aux triangles           .
59 c . ulsort . e   .   1    . unite logique de la sortie generale        .
60 c . langue . e   .    1   . langue des messages                        .
61 c .        .     .        . 1 : francais, 2 : anglais                  .
62 c . codret . es  .    1   . code de retour des modules                 .
63 c .        .     .        . 0 : pas de probleme                        .
64 c .        .     .        . 1 : aucune arete ne correspond             .
65 c ______________________________________________________________________
66 c
67 c====
68 c 0. declarations et dimensionnement
69 c====
70 c
71 c 0.1. ==> generalites
72 c
73       implicit none
74       save
75 c
76       character*6 nompro
77       parameter ( nompro = 'CMCP4C' )
78 c
79 #include "nblang.h"
80 c
81 c 0.2. ==> communs
82 c
83 #include "envex1.h"
84 c
85 #include "nouvnb.h"
86 c
87 c 0.3. ==> arguments
88 c
89       integer indtri
90       integer niveau
91       integer triint(7)
92       integer lesare(1)
93       integer areint(2)
94       integer areqtr(4,0:2)
95       integer areqqu(4)
96       integer aretri(nouvtr,3), famtri(nouvtr)
97       integer hettri(nouvtr), filtri(nouvtr), pertri(nouvtr)
98       integer nivtri(nouvtr)
99 c
100       integer ulsort, langue, codret
101 c
102 c 0.4. ==> variables locales
103 c
104       integer iaux
105       integer codetr
106 c
107       integer nbmess
108       parameter ( nbmess = 10 )
109       character*80 texte(nblang,nbmess)
110 c
111 c 0.5. ==> initialisations
112 c ______________________________________________________________________
113 c
114 c====
115 c 1. initialisations
116 c====
117 c
118 c 1.1. ==> messages
119 c
120 #include "impr01.h"
121 c
122 #ifdef _DEBUG_HOMARD_
123       write (ulsort,texte(langue,1)) 'Entree', nompro
124       call dmflsh (iaux)
125 #endif
126 c
127       codret = 0
128 c
129       codetr = 1
130 c
131 c====
132 c 2. Les triangles paralleles aux faces triangulaires
133 c====
134 c
135       indtri = indtri + 1
136       triint(1) = indtri
137 #ifdef _DEBUG_HOMARD_
138       write (ulsort,texte(langue,3)) 'CMCTRI_1', nompro
139 #endif
140       call cmctri ( aretri, famtri, hettri,
141      >              filtri, pertri, nivtri,
142      >              indtri, areqtr(1,1), areqqu(4), areint(1),
143      >              codetr, niveau )
144 c
145       indtri = indtri + 1
146       triint(2) = indtri
147 #ifdef _DEBUG_HOMARD_
148       write (ulsort,texte(langue,3)) 'CMCTRI_2', nompro
149 #endif
150       call cmctri ( aretri, famtri, hettri,
151      >              filtri, pertri, nivtri,
152      >              indtri, areqtr(2,1), areint(1), areqqu(2),
153      >              codetr, niveau )
154 c
155       indtri = indtri + 1
156       triint(3) = indtri
157 #ifdef _DEBUG_HOMARD_
158       write (ulsort,texte(langue,3)) 'CMCTRI_3', nompro
159 #endif
160       call cmctri ( aretri, famtri, hettri,
161      >              filtri, pertri, nivtri,
162      >              indtri, areqtr(1,2), areint(2), areqqu(4),
163      >              codetr, niveau )
164 c
165       indtri = indtri + 1
166       triint(4) = indtri
167 #ifdef _DEBUG_HOMARD_
168       write (ulsort,texte(langue,3)) 'CMCTRI_4', nompro
169 #endif
170       call cmctri ( aretri, famtri, hettri,
171      >              filtri, pertri, nivtri,
172      >              indtri, areqtr(2,2), areqqu(2), areint(2),
173      >              codetr, niveau )
174 c
175 c====
176 c 3. Les triangles coupant les faces triangulaires
177 c====
178 c
179       indtri = indtri + 1
180       triint(5) = indtri
181 #ifdef _DEBUG_HOMARD_
182       write (ulsort,texte(langue,3)) 'CMCTRI_5', nompro
183 #endif
184       call cmctri ( aretri, famtri, hettri,
185      >              filtri, pertri, nivtri,
186      >              indtri, areqtr(3,2), areint(1), areqqu(1),
187      >              codetr, niveau )
188 c
189       indtri = indtri + 1
190       triint(6) = indtri
191 #ifdef _DEBUG_HOMARD_
192       write (ulsort,texte(langue,3)) 'CMCTRI_6', nompro
193 #endif
194       call cmctri ( aretri, famtri, hettri,
195      >              filtri, pertri, nivtri,
196      >              indtri, areqtr(4,2), areint(2), areqqu(3),
197      >              codetr, niveau )
198 c
199 c====
200 c 4. Le triangle sur l'arete non decoupee
201 c====
202 c
203       indtri = indtri + 1
204       triint(7) = indtri
205 #ifdef _DEBUG_HOMARD_
206       write (ulsort,texte(langue,3)) 'CMCTRI_7', nompro
207 #endif
208       call cmctri ( aretri, famtri, hettri,
209      >              filtri, pertri, nivtri,
210      >              indtri, areint(1), lesare(1), areint(2),
211      >              codetr, niveau )
212 c
213 c====
214 c 5. la fin
215 c====
216 c
217       if ( codret.ne.0 ) then
218 c
219 #include "envex2.h"
220 c
221       write (ulsort,texte(langue,1)) 'Sortie', nompro
222       write (ulsort,texte(langue,2)) codret
223 c
224       endif
225 c
226 #ifdef _DEBUG_HOMARD_
227       write (ulsort,texte(langue,1)) 'Sortie', nompro
228       call dmflsh (iaux)
229 #endif
230 c
231       end