Salome HOME
Merge branch 'V9_9_BR'
[modules/smesh.git] / src / Tools / MeshCut / MeshCut_Cas.cxx
1 // Copyright (C) 2006-2022  EDF R&D
2 //
3 // This library is free software; you can redistribute it and/or
4 // modify it under the terms of the GNU Lesser General Public
5 // License as published by the Free Software Foundation; either
6 // version 2.1 of the License, or (at your option) any later version.
7 //
8 // This library is distributed in the hope that it will be useful,
9 // but WITHOUT ANY WARRANTY; without even the implied warranty of
10 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
11 // Lesser General Public License for more details.
12 //
13 // You should have received a copy of the GNU Lesser General Public
14 // License along with this library; if not, write to the Free Software
15 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
16 //
17 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
18 //
19
20 #include "MeshCut_Cas.hxx"
21
22 #include "MeshCut_Globals.hxx"
23
24 using namespace MESHCUT;
25 using namespace std;
26
27 /*!
28  * Le cas 1 traduit le fait que deux des sommets du T4 initial sont dans le plan de coupe.
29  * Le point d'intersection franc trouvé est sur l'arête opposée à ces deux points du T4.
30
31  * Le T4 initial produit deux nouveaux T4.
32  */
33 void MESHCUT::cas1(int VN[6], int it4)
34 {
35   cutTetras.push_back(it4);
36   //  cout << "Cas 1 - it4=" << it4 << ", VN = " << VN[0] << " " << VN[1] << " " << VN[2] << " " << VN[3] << " " << VN[4]
37   //      << " " << VN[5] << " " << endl;
38
39   // Numéros des noeuds du TETRA4
40   int ng0 = MAILLAGE1->CNX[TETRA4][4 * it4 + 0];
41   int ng1 = MAILLAGE1->CNX[TETRA4][4 * it4 + 1];
42   int ng2 = MAILLAGE1->CNX[TETRA4][4 * it4 + 2];
43   int ng3 = MAILLAGE1->CNX[TETRA4][4 * it4 + 3];
44
45   int i1, i2;
46
47   if (VN[0] != -1)
48     {
49       // Le sommet de T4new1 servant à la détermination du groupe est le noeud 1 du T4 d'origine
50
51       // cout << "cas 1/0" << endl;
52       newCNX[TETRA4].push_back(VN[0]);
53       newCNX[TETRA4].push_back(ng1);
54       newCNX[TETRA4].push_back(ng2);
55       newCNX[TETRA4].push_back(ng3);
56       cptNouvellesMailles[TETRA4]++;
57       i1 = cptNouvellesMailles[TETRA4] - 1;
58
59       newCNX[TETRA4].push_back(ng0);
60       newCNX[TETRA4].push_back(VN[0]);
61       newCNX[TETRA4].push_back(ng2);
62       newCNX[TETRA4].push_back(ng3);
63       cptNouvellesMailles[TETRA4]++;
64       i2 = cptNouvellesMailles[TETRA4] - 1;
65
66       if (POSN[ng1 - 1] == 1)
67         {
68           GMplus[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + i1);
69           GMmoins[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + i2);
70         }
71       else
72         {
73           GMplus[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + i2);
74           GMmoins[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + i1);
75         }
76     }
77
78   else if (VN[1] != -1)
79     {
80       // Le sommet de T4new1 servant à la détermination du groupe est le noeud 0 du T4 d'origine
81
82       // cout << "cas 1/1" << endl;
83       newCNX[TETRA4].push_back(ng0);
84       newCNX[TETRA4].push_back(ng1);
85       newCNX[TETRA4].push_back(VN[1]);
86       newCNX[TETRA4].push_back(ng3);
87       cptNouvellesMailles[TETRA4]++;
88       i1 = cptNouvellesMailles[TETRA4] - 1;
89
90       newCNX[TETRA4].push_back(ng1);
91       newCNX[TETRA4].push_back(ng2);
92       newCNX[TETRA4].push_back(VN[1]);
93       newCNX[TETRA4].push_back(ng3);
94       cptNouvellesMailles[TETRA4]++;
95       i2 = cptNouvellesMailles[TETRA4] - 1;
96
97       if (POSN[ng0 - 1] == 1)
98         {
99           GMplus[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + i1);
100           GMmoins[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + i2);
101         }
102       else
103         {
104           GMplus[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + i2);
105           GMmoins[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + i1);
106         }
107     }
108
109   else if (VN[2] != -1)
110     {
111       // Le sommet de T4new1 servant à la détermination du groupe est le noeud 0 du T4 d'origine
112
113       // cout << "cas 1/2" << endl;
114       newCNX[TETRA4].push_back(ng0);
115       newCNX[TETRA4].push_back(ng1);
116       newCNX[TETRA4].push_back(ng2);
117       newCNX[TETRA4].push_back(VN[2]);
118       cptNouvellesMailles[TETRA4]++;
119       i1 = cptNouvellesMailles[TETRA4] - 1;
120
121       newCNX[TETRA4].push_back(ng1);
122       newCNX[TETRA4].push_back(ng2);
123       newCNX[TETRA4].push_back(VN[2]);
124       newCNX[TETRA4].push_back(ng3);
125       cptNouvellesMailles[TETRA4]++;
126       i2 = cptNouvellesMailles[TETRA4] - 1;
127
128       if (POSN[ng0 - 1] == 1)
129         {
130           GMplus[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + i1);
131           GMmoins[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + i2);
132         }
133       else
134         {
135           GMplus[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + i2);
136           GMmoins[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + i1);
137         }
138     }
139
140   else if (VN[3] != -1)
141     {
142       // Le sommet de T4new1 servant à la détermination du groupe est le noeud 1 du T4 d'origine
143
144       // cout << "cas 1/3" << endl;
145       newCNX[TETRA4].push_back(ng0);
146       newCNX[TETRA4].push_back(ng1);
147       newCNX[TETRA4].push_back(VN[3]);
148       newCNX[TETRA4].push_back(ng3);
149       cptNouvellesMailles[TETRA4]++;
150       i1 = cptNouvellesMailles[TETRA4] - 1;
151
152       newCNX[TETRA4].push_back(ng0);
153       newCNX[TETRA4].push_back(VN[3]);
154       newCNX[TETRA4].push_back(ng2);
155       newCNX[TETRA4].push_back(ng3);
156       cptNouvellesMailles[TETRA4]++;
157       i2 = cptNouvellesMailles[TETRA4] - 1;
158
159       if (POSN[ng1 - 1] == 1)
160         {
161           GMplus[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + i1);
162           GMmoins[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + i2);
163         }
164       else
165         {
166           GMplus[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + i2);
167           GMmoins[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + i1);
168         }
169     }
170
171   else if (VN[4] != -1)
172     {
173       // Le sommet de T4new1 servant à la détermination du groupe est le noeud 1 du T4 d'origine
174
175       // cout << "cas 1/4" << endl;
176       newCNX[TETRA4].push_back(ng0);
177       newCNX[TETRA4].push_back(ng1);
178       newCNX[TETRA4].push_back(ng2);
179       newCNX[TETRA4].push_back(VN[4]);
180       cptNouvellesMailles[TETRA4]++;
181       i1 = cptNouvellesMailles[TETRA4] - 1;
182
183       newCNX[TETRA4].push_back(ng0);
184       newCNX[TETRA4].push_back(VN[4]);
185       newCNX[TETRA4].push_back(ng2);
186       newCNX[TETRA4].push_back(ng3);
187       cptNouvellesMailles[TETRA4]++;
188       i2 = cptNouvellesMailles[TETRA4] - 1;
189
190       if (POSN[ng1 - 1] == 1)
191         {
192           GMplus[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + i1);
193           GMmoins[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + i2);
194         }
195       else
196         {
197           GMplus[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + i2);
198           GMmoins[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + i1);
199         }
200     }
201
202   else if (VN[5] != -1)
203     {
204       // Le sommet de T4new1 servant à la détermination du groupe est le noeud 3 du T4 d'origine
205
206       // cout << "cas 1/5" << endl;
207       newCNX[TETRA4].push_back(ng0);
208       newCNX[TETRA4].push_back(ng1);
209       newCNX[TETRA4].push_back(VN[5]);
210       newCNX[TETRA4].push_back(ng3);
211       cptNouvellesMailles[TETRA4]++;
212       i1 = cptNouvellesMailles[TETRA4] - 1;
213
214       newCNX[TETRA4].push_back(ng0);
215       newCNX[TETRA4].push_back(ng1);
216       newCNX[TETRA4].push_back(ng2);
217       newCNX[TETRA4].push_back(VN[5]);
218       cptNouvellesMailles[TETRA4]++;
219       i2 = cptNouvellesMailles[TETRA4] - 1;
220
221       if (POSN[ng3 - 1] == 1)
222         {
223           GMplus[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + i1);
224           GMmoins[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + i2);
225         }
226       else
227         {
228           GMplus[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + i2);
229           GMmoins[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + i1);
230         }
231     }
232
233   else
234     ERREUR(" Intersections configuration not taken into account (case cptPI=1) ");
235
236   //int nl1 = MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + i1;
237   //int nl2 = MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + i2;
238   // cout << "La maille TETRA4 " << it4 << " produit les mailles TETRA4-" << nl1 << " et TETRA4-" << nl2 << endl;
239
240 }
241
242 /*!  Deux points d'intersection
243  *  Le cas 2 traduit le fait qu'un des sommets du T4 est dans le plan de coupe.
244  *  Ce sommet est celui des quatre qui n'appartient à aucune des deux arêtes sur lesquelles
245  *  un point d'intersection non -1 a été calculé.
246  *
247  *  Le T4 initial produit un nouveau T4 et un élément PYRAM5.
248  *
249  */
250 void MESHCUT::cas2(int VN[6], int it4)
251 {
252   cutTetras.push_back(it4);
253   //  cout << "Cas 2 - it4=" << it4 << ", VN = " << VN[0] << " " << VN[1] << " " << VN[2] << " " << VN[3] << " " << VN[4]
254   //      << " " << VN[5] << " " << endl;
255
256   // Numéros des noeuds du TETRA4
257   int ng0 = MAILLAGE1->CNX[TETRA4][4 * it4 + 0];
258   int ng1 = MAILLAGE1->CNX[TETRA4][4 * it4 + 1];
259   int ng2 = MAILLAGE1->CNX[TETRA4][4 * it4 + 2];
260   int ng3 = MAILLAGE1->CNX[TETRA4][4 * it4 + 3];
261
262   if (VN[0] != -1 && VN[1] != -1)
263     {
264       // Le sommet du nouveau T4 est le noeud 0 du T4 d'origine
265
266       // cout << "cas 2.01" << endl;
267       newCNX[TETRA4].push_back(VN[0]);
268       newCNX[TETRA4].push_back(ng3);
269       newCNX[TETRA4].push_back(VN[1]);
270       newCNX[TETRA4].push_back(ng0);
271       cptNouvellesMailles[TETRA4]++;
272
273       newCNX[PYRAM5].push_back(VN[0]);
274       newCNX[PYRAM5].push_back(ng1);
275       newCNX[PYRAM5].push_back(ng2);
276       newCNX[PYRAM5].push_back(VN[1]);
277       newCNX[PYRAM5].push_back(ng3);
278       cptNouvellesMailles[PYRAM5]++;
279
280       if (POSN[ng0 - 1] == 1)
281         {
282           GMplus[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + cptNouvellesMailles[TETRA4] - 1);
283           GMmoins[PYRAM5].push_back(MAILLAGE1->EFFECTIFS_TYPES[PYRAM5] + cptNouvellesMailles[PYRAM5] - 1);
284         }
285       else
286         {
287           GMmoins[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + cptNouvellesMailles[TETRA4] - 1);
288           GMplus[PYRAM5].push_back(MAILLAGE1->EFFECTIFS_TYPES[PYRAM5] + cptNouvellesMailles[PYRAM5] - 1);
289         }
290     }
291   else if (VN[0] != -1 && VN[2] != -1)
292     {
293       // Le sommet du nouveau T4 est le noeud 0 du T4 d'origine
294
295       // cout << "cas 2.02" << endl;
296       newCNX[TETRA4].push_back(VN[0]);
297       newCNX[TETRA4].push_back(VN[2]);
298       newCNX[TETRA4].push_back(ng2);
299       newCNX[TETRA4].push_back(ng0);
300       cptNouvellesMailles[TETRA4]++;
301
302       newCNX[PYRAM5].push_back(VN[0]);
303       newCNX[PYRAM5].push_back(VN[2]);
304       newCNX[PYRAM5].push_back(ng3);
305       newCNX[PYRAM5].push_back(ng1);
306       newCNX[PYRAM5].push_back(ng2);
307       cptNouvellesMailles[PYRAM5]++;
308
309       if (POSN[ng0 - 1] == 1)
310         {
311           GMplus[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + cptNouvellesMailles[TETRA4] - 1);
312           GMmoins[PYRAM5].push_back(MAILLAGE1->EFFECTIFS_TYPES[PYRAM5] + cptNouvellesMailles[PYRAM5] - 1);
313         }
314       else
315         {
316           GMmoins[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + cptNouvellesMailles[TETRA4] - 1);
317           GMplus[PYRAM5].push_back(MAILLAGE1->EFFECTIFS_TYPES[PYRAM5] + cptNouvellesMailles[PYRAM5] - 1);
318         }
319     }
320   else if (VN[0] != -1 && VN[3] != -1)
321     {
322       // Le sommet du nouveau T4 est le noeud 1 du T4 d'origine
323
324       // cout << "cas 2.03" << endl;
325       newCNX[TETRA4].push_back(VN[0]);
326       newCNX[TETRA4].push_back(VN[3]);
327       newCNX[TETRA4].push_back(ng3);
328       newCNX[TETRA4].push_back(ng1);
329       cptNouvellesMailles[TETRA4]++;
330
331       newCNX[PYRAM5].push_back(VN[0]);
332       newCNX[PYRAM5].push_back(VN[3]);
333       newCNX[PYRAM5].push_back(ng2);
334       newCNX[PYRAM5].push_back(ng0);
335       newCNX[PYRAM5].push_back(ng3);
336       cptNouvellesMailles[PYRAM5]++;
337
338       if (POSN[ng1 - 1] == 1)
339         {
340           GMplus[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + cptNouvellesMailles[TETRA4] - 1);
341           GMmoins[PYRAM5].push_back(MAILLAGE1->EFFECTIFS_TYPES[PYRAM5] + cptNouvellesMailles[PYRAM5] - 1);
342         }
343       else
344         {
345           GMmoins[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + cptNouvellesMailles[TETRA4] - 1);
346           GMplus[PYRAM5].push_back(MAILLAGE1->EFFECTIFS_TYPES[PYRAM5] + cptNouvellesMailles[PYRAM5] - 1);
347         }
348     }
349   else if (VN[0] != -1 && VN[4] != -1)
350     {
351       // Le sommet du nouveau T4 est le noeud 1 du T4 d'origine
352
353       // cout << "cas 2.04" << endl;
354       newCNX[TETRA4].push_back(VN[0]);
355       newCNX[TETRA4].push_back(ng2);
356       newCNX[TETRA4].push_back(VN[4]);
357       newCNX[TETRA4].push_back(ng1);
358       cptNouvellesMailles[TETRA4]++;
359
360       newCNX[PYRAM5].push_back(ng0);
361       newCNX[PYRAM5].push_back(ng3);
362       newCNX[PYRAM5].push_back(VN[4]);
363       newCNX[PYRAM5].push_back(VN[0]);
364       newCNX[PYRAM5].push_back(ng2);
365       cptNouvellesMailles[PYRAM5]++;
366
367       if (POSN[ng1 - 1] == 1)
368         {
369           GMplus[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + cptNouvellesMailles[TETRA4] - 1);
370           GMmoins[PYRAM5].push_back(MAILLAGE1->EFFECTIFS_TYPES[PYRAM5] + cptNouvellesMailles[PYRAM5] - 1);
371         }
372       else
373         {
374           GMmoins[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + cptNouvellesMailles[TETRA4] - 1);
375           GMplus[PYRAM5].push_back(MAILLAGE1->EFFECTIFS_TYPES[PYRAM5] + cptNouvellesMailles[PYRAM5] - 1);
376         }
377     }
378
379   else if (VN[0] != -1 && VN[5] != -1)
380     ERREUR("Case 2/05 forbidden");
381
382   else if (VN[1] != -1 && VN[2] != -1)
383     {
384       // Le sommet du nouveau T4 est le noeud 0 du T4 d'origine
385
386       // cout << "cas 2.12" << endl;
387       newCNX[TETRA4].push_back(ng1);
388       newCNX[TETRA4].push_back(VN[2]);
389       newCNX[TETRA4].push_back(VN[1]);
390       newCNX[TETRA4].push_back(ng0);
391       cptNouvellesMailles[TETRA4]++;
392
393       newCNX[PYRAM5].push_back(ng2);
394       newCNX[PYRAM5].push_back(ng3);
395       newCNX[PYRAM5].push_back(VN[2]);
396       newCNX[PYRAM5].push_back(VN[1]);
397       newCNX[PYRAM5].push_back(ng1);
398       cptNouvellesMailles[PYRAM5]++;
399
400       if (POSN[ng0 - 1] == 1)
401         {
402           GMplus[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + cptNouvellesMailles[TETRA4] - 1);
403           GMmoins[PYRAM5].push_back(MAILLAGE1->EFFECTIFS_TYPES[PYRAM5] + cptNouvellesMailles[PYRAM5] - 1);
404         }
405       else
406         {
407           GMmoins[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + cptNouvellesMailles[TETRA4] - 1);
408           GMplus[PYRAM5].push_back(MAILLAGE1->EFFECTIFS_TYPES[PYRAM5] + cptNouvellesMailles[PYRAM5] - 1);
409         }
410     }
411   else if (VN[1] != -1 && VN[3] != -1)
412     {
413       // Le sommet du nouveau T4 est le noeud 2 du T4 d'origine
414
415       // cout << "cas 2.13" << endl;
416       newCNX[TETRA4].push_back(VN[1]);
417       newCNX[TETRA4].push_back(ng3);
418       newCNX[TETRA4].push_back(VN[3]);
419       newCNX[TETRA4].push_back(ng2);
420       cptNouvellesMailles[TETRA4]++;
421
422       newCNX[PYRAM5].push_back(ng0);
423       newCNX[PYRAM5].push_back(ng1);
424       newCNX[PYRAM5].push_back(VN[3]);
425       newCNX[PYRAM5].push_back(VN[1]);
426       newCNX[PYRAM5].push_back(ng3);
427       cptNouvellesMailles[PYRAM5]++;
428
429       if (POSN[ng2 - 1] == 1)
430         {
431           GMplus[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + cptNouvellesMailles[TETRA4] - 1);
432           GMmoins[PYRAM5].push_back(MAILLAGE1->EFFECTIFS_TYPES[PYRAM5] + cptNouvellesMailles[PYRAM5] - 1);
433         }
434       else
435         {
436           GMmoins[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + cptNouvellesMailles[TETRA4] - 1);
437           GMplus[PYRAM5].push_back(MAILLAGE1->EFFECTIFS_TYPES[PYRAM5] + cptNouvellesMailles[PYRAM5] - 1);
438         }
439     }
440
441   else if (VN[1] != -1 && VN[4] != -1)
442     ERREUR("Case 2/14 excluded");
443
444   else if (VN[1] != -1 && VN[5] != -1)
445     {
446       // Le sommet du nouveau T4 est le noeud 2 du T4 d'origine
447
448       // cout << "cas 2.15" << endl;
449       newCNX[TETRA4].push_back(ng1);
450       newCNX[TETRA4].push_back(ng2);
451       newCNX[TETRA4].push_back(VN[1]);
452       newCNX[TETRA4].push_back(VN[5]);
453       cptNouvellesMailles[TETRA4]++;
454
455       newCNX[PYRAM5].push_back(VN[1]);
456       newCNX[PYRAM5].push_back(VN[5]);
457       newCNX[PYRAM5].push_back(ng3);
458       newCNX[PYRAM5].push_back(ng0);
459       newCNX[PYRAM5].push_back(ng1);
460       cptNouvellesMailles[PYRAM5]++;
461
462       if (POSN[ng2 - 1] == 1)
463         {
464           GMplus[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + cptNouvellesMailles[TETRA4] - 1);
465           GMmoins[PYRAM5].push_back(MAILLAGE1->EFFECTIFS_TYPES[PYRAM5] + cptNouvellesMailles[PYRAM5] - 1);
466         }
467       else
468         {
469           GMmoins[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + cptNouvellesMailles[TETRA4] - 1);
470           GMplus[PYRAM5].push_back(MAILLAGE1->EFFECTIFS_TYPES[PYRAM5] + cptNouvellesMailles[PYRAM5] - 1);
471         }
472     }
473
474   else if (VN[2] != -1 && VN[3] != -1)
475     ERREUR("Case 2/23 excluded");
476
477   else if (VN[2] != -1 && VN[4] != -1)
478     {
479       // Le sommet du nouveau T4 est le noeud 3 du T4 d'origine
480
481       // cout << "cas 2.24" << endl;
482       newCNX[TETRA4].push_back(VN[2]);
483       newCNX[TETRA4].push_back(VN[4]);
484       newCNX[TETRA4].push_back(ng2);
485       newCNX[TETRA4].push_back(ng3);
486       cptNouvellesMailles[TETRA4]++;
487
488       newCNX[PYRAM5].push_back(ng0);
489       newCNX[PYRAM5].push_back(VN[2]);
490       newCNX[PYRAM5].push_back(VN[4]);
491       newCNX[PYRAM5].push_back(ng1);
492       newCNX[PYRAM5].push_back(ng2);
493       cptNouvellesMailles[PYRAM5]++;
494
495       if (POSN[ng3 - 1] == 1)
496         {
497           GMplus[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + cptNouvellesMailles[TETRA4] - 1);
498           GMmoins[PYRAM5].push_back(MAILLAGE1->EFFECTIFS_TYPES[PYRAM5] + cptNouvellesMailles[PYRAM5] - 1);
499         }
500       else
501         {
502           GMmoins[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + cptNouvellesMailles[TETRA4] - 1);
503           GMplus[PYRAM5].push_back(MAILLAGE1->EFFECTIFS_TYPES[PYRAM5] + cptNouvellesMailles[PYRAM5] - 1);
504         }
505     }
506
507   else if (VN[2] != -1 && VN[5] != -1)
508     {
509       // Le sommet du nouveau T4 est le noeud 3 du T4 d'origine
510
511       // cout << "cas 2.25" << endl;
512       newCNX[TETRA4].push_back(ng1);
513       newCNX[TETRA4].push_back(VN[5]);
514       newCNX[TETRA4].push_back(VN[2]);
515       newCNX[TETRA4].push_back(ng3);
516       cptNouvellesMailles[TETRA4]++;
517
518       newCNX[PYRAM5].push_back(ng0);
519       newCNX[PYRAM5].push_back(ng2);
520       newCNX[PYRAM5].push_back(VN[5]);
521       newCNX[PYRAM5].push_back(VN[2]);
522       newCNX[PYRAM5].push_back(ng1);
523       cptNouvellesMailles[PYRAM5]++;
524
525       if (POSN[ng3 - 1] == 1)
526         {
527           GMplus[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + cptNouvellesMailles[TETRA4] - 1);
528           GMmoins[PYRAM5].push_back(MAILLAGE1->EFFECTIFS_TYPES[PYRAM5] + cptNouvellesMailles[PYRAM5] - 1);
529         }
530       else
531         {
532           GMmoins[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + cptNouvellesMailles[TETRA4] - 1);
533           GMplus[PYRAM5].push_back(MAILLAGE1->EFFECTIFS_TYPES[PYRAM5] + cptNouvellesMailles[PYRAM5] - 1);
534         }
535     }
536
537   else if (VN[3] != -1 && VN[4] != -1)
538     {
539       // Le sommet du nouveau T4 est le noeud 1 du T4 d'origine
540
541       // cout << "cas 2.34" << endl;
542       newCNX[TETRA4].push_back(ng0);
543       newCNX[TETRA4].push_back(VN[3]);
544       newCNX[TETRA4].push_back(VN[4]);
545       newCNX[TETRA4].push_back(ng1);
546       cptNouvellesMailles[TETRA4]++;
547
548       newCNX[PYRAM5].push_back(VN[3]);
549       newCNX[PYRAM5].push_back(VN[4]);
550       newCNX[PYRAM5].push_back(ng3);
551       newCNX[PYRAM5].push_back(ng2);
552       newCNX[PYRAM5].push_back(ng0);
553       cptNouvellesMailles[PYRAM5]++;
554
555       if (POSN[ng1 - 1] == 1)
556         {
557           GMplus[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + cptNouvellesMailles[TETRA4] - 1);
558           GMmoins[PYRAM5].push_back(MAILLAGE1->EFFECTIFS_TYPES[PYRAM5] + cptNouvellesMailles[PYRAM5] - 1);
559         }
560       else
561         {
562           GMmoins[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + cptNouvellesMailles[TETRA4] - 1);
563           GMplus[PYRAM5].push_back(MAILLAGE1->EFFECTIFS_TYPES[PYRAM5] + cptNouvellesMailles[PYRAM5] - 1);
564         }
565     }
566
567   else if (VN[3] != -1 && VN[5] != -1)
568     {
569       // Le sommet du nouveau T4 est le noeud 2 du T4 d'origine
570
571       // cout << "cas 2.35" << endl;
572       newCNX[TETRA4].push_back(VN[3]);
573       newCNX[TETRA4].push_back(VN[5]);
574       newCNX[TETRA4].push_back(ng2);
575       newCNX[TETRA4].push_back(ng0);
576       cptNouvellesMailles[TETRA4]++;
577
578       newCNX[PYRAM5].push_back(VN[3]);
579       newCNX[PYRAM5].push_back(ng1);
580       newCNX[PYRAM5].push_back(ng3);
581       newCNX[PYRAM5].push_back(VN[5]);
582       newCNX[PYRAM5].push_back(ng0);
583       cptNouvellesMailles[PYRAM5]++;
584
585       if (POSN[ng2 - 1] == 1)
586         {
587           GMplus[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + cptNouvellesMailles[TETRA4] - 1);
588           GMmoins[PYRAM5].push_back(MAILLAGE1->EFFECTIFS_TYPES[PYRAM5] + cptNouvellesMailles[PYRAM5] - 1);
589         }
590       else
591         {
592           GMmoins[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + cptNouvellesMailles[TETRA4] - 1);
593           GMplus[PYRAM5].push_back(MAILLAGE1->EFFECTIFS_TYPES[PYRAM5] + cptNouvellesMailles[PYRAM5] - 1);
594         }
595     }
596
597   else if (VN[4] != -1 && VN[5] != -1)
598     {
599       // Le sommet du nouveau T4 est le noeud 3 du T4 d'origine
600
601       // cout << "cas 2.35" << endl;
602       newCNX[TETRA4].push_back(ng0);
603       newCNX[TETRA4].push_back(VN[4]);
604       newCNX[TETRA4].push_back(VN[5]);
605       newCNX[TETRA4].push_back(ng3);
606       cptNouvellesMailles[TETRA4]++;
607
608       newCNX[PYRAM5].push_back(ng1);
609       newCNX[PYRAM5].push_back(VN[4]);
610       newCNX[PYRAM5].push_back(VN[5]);
611       newCNX[PYRAM5].push_back(ng2);
612       newCNX[PYRAM5].push_back(ng0);
613       cptNouvellesMailles[PYRAM5]++;
614
615       if (POSN[ng3 - 1] == 1)
616         {
617           GMplus[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + cptNouvellesMailles[TETRA4] - 1);
618           GMmoins[PYRAM5].push_back(MAILLAGE1->EFFECTIFS_TYPES[PYRAM5] + cptNouvellesMailles[PYRAM5] - 1);
619         }
620       else
621         {
622           GMmoins[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + cptNouvellesMailles[TETRA4] - 1);
623           GMplus[PYRAM5].push_back(MAILLAGE1->EFFECTIFS_TYPES[PYRAM5] + cptNouvellesMailles[PYRAM5] - 1);
624         }
625     }
626
627   else
628     ERREUR(" Intersections configuration not taken into account (case cptPI=2) ");
629
630   // int ngT4 = MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + cptNouvellesMailles[TETRA4] - 1;
631   // int ngP5 = MAILLAGE1->EFFECTIFS_TYPES[PYRAM5] + cptNouvellesMailles[PYRAM5] - 1;
632   // cout << "La maille TETRA4 " << it4 << " produit les mailles TETRA4-" << ngT4 << " et PYRAM5-" << ngP5 << endl;
633
634 }
635
636 /*! Trois points d'intersection
637  *  ATTENTION: pour les PENTA6 on adopte la convention d'orientation SALOME :
638  *
639  *  N1 N2 N3 N4 N5 N6
640  *
641  *  où N1 N2 N3 sont les sommets du haut et N4 N5 N6 les sommets du bas
642  *  (selon l'orientation donnée par le sens des triangles)
643  */
644 void MESHCUT::cas3(int VN[6], int it4)
645 {
646   cutTetras.push_back(it4);
647   // cout << "Cas 3 - it4="<<it4<<", VN = " << VN[0] << " " << VN[1] << " " << VN[2] << " " << VN[3] << " " << VN[4] << " " << VN[5] << " " << endl;
648
649   // Numéros des noeuds du TETRA4
650   int ng0 = MAILLAGE1->CNX[TETRA4][4 * it4 + 0];
651   int ng1 = MAILLAGE1->CNX[TETRA4][4 * it4 + 1];
652   int ng2 = MAILLAGE1->CNX[TETRA4][4 * it4 + 2];
653   int ng3 = MAILLAGE1->CNX[TETRA4][4 * it4 + 3];
654
655   if (VN[0] != -1 && VN[1] != -1 && VN[2] != -1)
656     {
657
658       // Le sommet du nouveau T4 est le noeud 0 du T4 d'origine
659
660       newCNX[TETRA4].push_back(ng0);
661       newCNX[TETRA4].push_back(VN[0]);
662       newCNX[TETRA4].push_back(VN[1]);
663       newCNX[TETRA4].push_back(VN[2]);
664       cptNouvellesMailles[TETRA4]++;
665
666       newCNX[PENTA6].push_back(ng1);
667       newCNX[PENTA6].push_back(ng3);
668       newCNX[PENTA6].push_back(ng2);
669       newCNX[PENTA6].push_back(VN[0]);
670       newCNX[PENTA6].push_back(VN[2]);
671       newCNX[PENTA6].push_back(VN[1]);
672       cptNouvellesMailles[PENTA6]++;
673
674       if (POSN[ng0 - 1] == 1)
675         {
676           GMplus[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + cptNouvellesMailles[TETRA4] - 1);
677           GMmoins[PENTA6].push_back(MAILLAGE1->EFFECTIFS_TYPES[PENTA6] + cptNouvellesMailles[PENTA6] - 1);
678         }
679       else
680         {
681           GMmoins[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + cptNouvellesMailles[TETRA4] - 1);
682           GMplus[PENTA6].push_back(MAILLAGE1->EFFECTIFS_TYPES[PENTA6] + cptNouvellesMailles[PENTA6] - 1);
683         }
684     }
685
686   else if (VN[0] != -1 && VN[3] != -1 && VN[4] != -1)
687     {
688       // Le sommet du nouveau T4 est le noeud 1 du T4 d'origine
689
690       //cout << "cas 3.2 (noeud sommet 1)" << endl;
691       newCNX[TETRA4].push_back(VN[0]);
692       newCNX[TETRA4].push_back(ng1);
693       newCNX[TETRA4].push_back(VN[3]);
694       newCNX[TETRA4].push_back(VN[4]);
695       cptNouvellesMailles[TETRA4]++;
696
697       newCNX[PENTA6].push_back(ng0);
698       newCNX[PENTA6].push_back(ng2);
699       newCNX[PENTA6].push_back(ng3);
700       newCNX[PENTA6].push_back(VN[0]);
701       newCNX[PENTA6].push_back(VN[3]);
702       newCNX[PENTA6].push_back(VN[4]);
703       cptNouvellesMailles[PENTA6]++;
704
705       if (POSN[ng1 - 1] == 1)
706         {
707           GMplus[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + cptNouvellesMailles[TETRA4] - 1);
708           GMmoins[PENTA6].push_back(MAILLAGE1->EFFECTIFS_TYPES[PENTA6] + cptNouvellesMailles[PENTA6] - 1);
709         }
710       else
711         {
712           GMmoins[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + cptNouvellesMailles[TETRA4] - 1);
713           GMplus[PENTA6].push_back(MAILLAGE1->EFFECTIFS_TYPES[PENTA6] + cptNouvellesMailles[PENTA6] - 1);
714         }
715     }
716   else if (VN[1] != -1 && VN[3] != -1 && VN[5] != -1)
717     {
718       // Le sommet du nouveau T4 est le noeud 2 du T4 d'origine
719
720       //cout << "cas 3.3 (noeud sommet 2)" << endl;
721
722       newCNX[TETRA4].push_back(VN[1]);
723       newCNX[TETRA4].push_back(VN[3]);
724       newCNX[TETRA4].push_back(ng2);
725       newCNX[TETRA4].push_back(VN[5]);
726       cptNouvellesMailles[TETRA4]++;
727
728       newCNX[PENTA6].push_back(ng0);
729       newCNX[PENTA6].push_back(ng3);
730       newCNX[PENTA6].push_back(ng1);
731       newCNX[PENTA6].push_back(VN[1]);
732       newCNX[PENTA6].push_back(VN[5]);
733       newCNX[PENTA6].push_back(VN[3]);
734       cptNouvellesMailles[PENTA6]++;
735
736       if (POSN[ng2 - 1] == 1)
737         {
738           GMplus[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + cptNouvellesMailles[TETRA4] - 1);
739           GMmoins[PENTA6].push_back(MAILLAGE1->EFFECTIFS_TYPES[PENTA6] + cptNouvellesMailles[PENTA6] - 1);
740         }
741       else
742         {
743           GMmoins[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + cptNouvellesMailles[TETRA4] - 1);
744           GMplus[PENTA6].push_back(MAILLAGE1->EFFECTIFS_TYPES[PENTA6] + cptNouvellesMailles[PENTA6] - 1);
745         }
746     }
747   else if (VN[2] != -1 && VN[4] != -1 && VN[5] != -1)
748     {
749       // Le sommet du nouveau T4 est le noeud 3 du T4 d'origine
750
751       newCNX[TETRA4].push_back(VN[2]);
752       newCNX[TETRA4].push_back(VN[4]);
753       newCNX[TETRA4].push_back(VN[5]);
754       newCNX[TETRA4].push_back(ng3);
755       cptNouvellesMailles[TETRA4]++;
756
757       newCNX[PENTA6].push_back(ng0);
758       newCNX[PENTA6].push_back(ng1);
759       newCNX[PENTA6].push_back(ng2);
760       newCNX[PENTA6].push_back(VN[2]);
761       newCNX[PENTA6].push_back(VN[4]);
762       newCNX[PENTA6].push_back(VN[5]);
763       cptNouvellesMailles[PENTA6]++;
764
765       if (POSN[ng3 - 1] == 1)
766         {
767           GMplus[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + cptNouvellesMailles[TETRA4] - 1);
768           GMmoins[PENTA6].push_back(MAILLAGE1->EFFECTIFS_TYPES[PENTA6] + cptNouvellesMailles[PENTA6] - 1);
769         }
770       else
771         {
772           GMmoins[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + cptNouvellesMailles[TETRA4] - 1);
773           GMplus[PENTA6].push_back(MAILLAGE1->EFFECTIFS_TYPES[PENTA6] + cptNouvellesMailles[PENTA6] - 1);
774         }
775     }
776   else
777     {
778       //      cout << "Cas 3 - it4=" << it4 << ", VN = " << VN[0] << " " << VN[1] << " " << VN[2] << " " << VN[3] << " "
779       //          << VN[4] << " " << VN[5] << " " << endl;
780       //
781       //      int n0 = *(MAILLAGE1->CNX[TETRA4] + it4 * 4 + 0);
782       //      float x0 = MAILLAGE1->XX[n0 - 1];
783       //      float y0 = MAILLAGE1->YY[n0 - 1];
784       //      float z0 = MAILLAGE1->ZZ[n0 - 1];
785       //
786       //      int n1 = *(MAILLAGE1->CNX[TETRA4] + it4 * 4 + 1);
787       //      float x1 = MAILLAGE1->XX[n1 - 1];
788       //      float y1 = MAILLAGE1->YY[n1 - 1];
789       //      float z1 = MAILLAGE1->ZZ[n1 - 1];
790       //
791       //      int n2 = *(MAILLAGE1->CNX[TETRA4] + it4 * 4 + 2);
792       //      float x2 = MAILLAGE1->XX[n2 - 1];
793       //      float y2 = MAILLAGE1->YY[n2 - 1];
794       //      float z2 = MAILLAGE1->ZZ[n2 - 1];
795       //
796       //      int n3 = *(MAILLAGE1->CNX[TETRA4] + it4 * 4 + 3);
797       //      float x3 = MAILLAGE1->XX[n3 - 1];
798       //      float y3 = MAILLAGE1->YY[n3 - 1];
799       //      float z3 = MAILLAGE1->ZZ[n3 - 1];
800       //
801       //      cout << x0 << " " << y0 << " " << z0 << " " << endl;
802       //      cout << x1 << " " << y1 << " " << z1 << " " << endl;
803       //      cout << x2 << " " << y2 << " " << z2 << " " << endl;
804       //      cout << x3 << " " << y3 << " " << z3 << " " << endl;
805
806       ERREUR(" Intersections configuration not taken into account (case cptPI=3) ");
807     }
808
809   // int ngT4 = MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + cptNouvellesMailles[TETRA4] - 1;
810   // int ngP6 = MAILLAGE1->EFFECTIFS_TYPES[PENTA6] + cptNouvellesMailles[PENTA6] - 1;
811   // cout << "La maille TETRA4 " << it4 << " produit les mailles TETRA4-" << ngT4 << " et PENTA6-" << ngP6 << endl;
812 }
813
814 /*! Quatre points d'intersection
815  *
816  *  ATTENTION: pour les PENTA6 on adopte la convention d'orientation SALOME
817  *
818  *  N1 N2 N3 N4 N5 N6
819  *
820  *  où N1 N2 N3 sont les sommets du haut et N4 N5 N6 les sommets du bas
821  *  (selon l'orientation donnée par le sens des triangles)
822  */
823 void MESHCUT::cas4(int VN[6], int it4)
824 {
825   cutTetras.push_back(it4);
826   //  cout << "Cas 4 - it4=" << it4 << ", VN = " << VN[0] << " " << VN[1] << " " << VN[2] << " " << VN[3] << " " << VN[4]
827   //      << " " << VN[5] << " " << endl;
828
829   // Numéros des noeuds du TETRA4
830   int ng0 = MAILLAGE1->CNX[TETRA4][4 * it4 + 0];
831   int ng1 = MAILLAGE1->CNX[TETRA4][4 * it4 + 1];
832   int ng2 = MAILLAGE1->CNX[TETRA4][4 * it4 + 2];
833   int ng3 = MAILLAGE1->CNX[TETRA4][4 * it4 + 3];
834
835   int i1, i2; // Numéros locaux dans le type des mailles créées
836
837   if (VN[0] == -1 && VN[5] == -1)
838     {
839       // Les deux arêtes opposées sont [0,1] et [2,3]
840
841       newCNX[PENTA6].push_back(ng0);
842       newCNX[PENTA6].push_back(VN[1]);
843       newCNX[PENTA6].push_back(VN[2]);
844       newCNX[PENTA6].push_back(ng1);
845       newCNX[PENTA6].push_back(VN[3]);
846       newCNX[PENTA6].push_back(VN[4]);
847       cptNouvellesMailles[PENTA6]++;
848       i1 = cptNouvellesMailles[PENTA6] - 1;
849
850       newCNX[PENTA6].push_back(ng3);
851       newCNX[PENTA6].push_back(VN[4]);
852       newCNX[PENTA6].push_back(VN[2]);
853       newCNX[PENTA6].push_back(ng2);
854       newCNX[PENTA6].push_back(VN[3]);
855       newCNX[PENTA6].push_back(VN[1]);
856       cptNouvellesMailles[PENTA6]++;
857       i2 = cptNouvellesMailles[PENTA6] - 1;
858
859       if (POSN[ng0 - 1] == 1)
860         {
861           GMplus[PENTA6].push_back(MAILLAGE1->EFFECTIFS_TYPES[PENTA6] + i1);
862           GMmoins[PENTA6].push_back(MAILLAGE1->EFFECTIFS_TYPES[PENTA6] + i2);
863         }
864       else
865         {
866           GMplus[PENTA6].push_back(MAILLAGE1->EFFECTIFS_TYPES[PENTA6] + i2);
867           GMmoins[PENTA6].push_back(MAILLAGE1->EFFECTIFS_TYPES[PENTA6] + i1);
868         }
869
870     } // if ( VN[0]==-1 && VN[5]==-1 )
871
872   else if (VN[1] == -1 && VN[4] == -1)
873     {
874       // Les deux arêtes opposées sont [0,2] et [1,3]
875
876       newCNX[PENTA6].push_back(ng2);
877       newCNX[PENTA6].push_back(VN[3]);
878       newCNX[PENTA6].push_back(VN[5]);
879       newCNX[PENTA6].push_back(ng0);
880       newCNX[PENTA6].push_back(VN[0]);
881       newCNX[PENTA6].push_back(VN[2]);
882       cptNouvellesMailles[PENTA6]++;
883       i1 = cptNouvellesMailles[PENTA6] - 1;
884
885       newCNX[PENTA6].push_back(ng1);
886       newCNX[PENTA6].push_back(VN[3]);
887       newCNX[PENTA6].push_back(VN[0]);
888       newCNX[PENTA6].push_back(ng3);
889       newCNX[PENTA6].push_back(VN[5]);
890       newCNX[PENTA6].push_back(VN[2]);
891       cptNouvellesMailles[PENTA6]++;
892       i2 = cptNouvellesMailles[PENTA6] - 1;
893
894       if (POSN[ng0 - 1] == 1)
895         {
896           GMplus[PENTA6].push_back(MAILLAGE1->EFFECTIFS_TYPES[PENTA6] + i1);
897           GMmoins[PENTA6].push_back(MAILLAGE1->EFFECTIFS_TYPES[PENTA6] + i2);
898         }
899       else
900         {
901           GMplus[PENTA6].push_back(MAILLAGE1->EFFECTIFS_TYPES[PENTA6] + i2);
902           GMmoins[PENTA6].push_back(MAILLAGE1->EFFECTIFS_TYPES[PENTA6] + i1);
903         }
904     }
905
906   else if (VN[2] == -1 && VN[3] == -1)
907     {
908       // Les deux arêtes opposées sont [0,3] et [1,2]
909
910       newCNX[PENTA6].push_back(ng0);
911       newCNX[PENTA6].push_back(VN[0]);
912       newCNX[PENTA6].push_back(VN[1]);
913       newCNX[PENTA6].push_back(ng3);
914       newCNX[PENTA6].push_back(VN[4]);
915       newCNX[PENTA6].push_back(VN[5]);
916       cptNouvellesMailles[PENTA6]++;
917       i1 = cptNouvellesMailles[PENTA6] - 1;
918
919       newCNX[PENTA6].push_back(ng2);
920       newCNX[PENTA6].push_back(VN[5]);
921       newCNX[PENTA6].push_back(VN[1]);
922       newCNX[PENTA6].push_back(ng1);
923       newCNX[PENTA6].push_back(VN[4]);
924       newCNX[PENTA6].push_back(VN[0]);
925       cptNouvellesMailles[PENTA6]++;
926       i2 = cptNouvellesMailles[PENTA6] - 1;
927
928       if (POSN[ng0 - 1] == 1)
929         {
930           GMplus[PENTA6].push_back(MAILLAGE1->EFFECTIFS_TYPES[PENTA6] + i1);
931           GMmoins[PENTA6].push_back(MAILLAGE1->EFFECTIFS_TYPES[PENTA6] + i2);
932         }
933       else
934         {
935           GMplus[PENTA6].push_back(MAILLAGE1->EFFECTIFS_TYPES[PENTA6] + i2);
936           GMmoins[PENTA6].push_back(MAILLAGE1->EFFECTIFS_TYPES[PENTA6] + i1);
937         }
938     }
939   else
940     ERREUR(" Intersection configuration not taken into account (case cptPI=4) ");
941
942   // int nl1 = MAILLAGE1->EFFECTIFS_TYPES[PENTA6] + i1;
943   // int nl2 = MAILLAGE1->EFFECTIFS_TYPES[PENTA6] + i2;
944   // cout << "La maille TETRA4 " << it4 << " produit les mailles PENTA6-" << nl1 << " et PENTA6-" << nl2 << endl;
945 }