Back to index

salome-smesh  6.5.0
MeshCut_Cas.cxx
Go to the documentation of this file.
00001 // Copyright (C) 2006-2012  EDF R&D
00002 //
00003 // This library is free software; you can redistribute it and/or
00004 // modify it under the terms of the GNU Lesser General Public
00005 // License as published by the Free Software Foundation; either
00006 // version 2.1 of the License.
00007 //
00008 // This library is distributed in the hope that it will be useful,
00009 // but WITHOUT ANY WARRANTY; without even the implied warranty of
00010 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00011 // Lesser General Public License for more details.
00012 //
00013 // You should have received a copy of the GNU Lesser General Public
00014 // License along with this library; if not, write to the Free Software
00015 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
00016 //
00017 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
00018 //
00019 
00020 #include "MeshCut_Cas.hxx"
00021 
00022 #include "MeshCut_Globals.hxx"
00023 
00024 using namespace MESHCUT;
00025 using namespace std;
00026 
00033 void MESHCUT::cas1(int VN[6], int it4)
00034 {
00035   cutTetras.push_back(it4);
00036   //  cout << "Cas 1 - it4=" << it4 << ", VN = " << VN[0] << " " << VN[1] << " " << VN[2] << " " << VN[3] << " " << VN[4]
00037   //      << " " << VN[5] << " " << endl;
00038 
00039   // Numéros des noeuds du TETRA4
00040   int ng0 = MAILLAGE1->CNX[TETRA4][4 * it4 + 0];
00041   int ng1 = MAILLAGE1->CNX[TETRA4][4 * it4 + 1];
00042   int ng2 = MAILLAGE1->CNX[TETRA4][4 * it4 + 2];
00043   int ng3 = MAILLAGE1->CNX[TETRA4][4 * it4 + 3];
00044 
00045   int i1, i2;
00046 
00047   if (VN[0] != -1)
00048     {
00049       // Le sommet de T4new1 servant à la détermination du groupe est le noeud 1 du T4 d'origine
00050 
00051       // cout << "cas 1/0" << endl;
00052       newCNX[TETRA4].push_back(VN[0]);
00053       newCNX[TETRA4].push_back(ng1);
00054       newCNX[TETRA4].push_back(ng2);
00055       newCNX[TETRA4].push_back(ng3);
00056       cptNouvellesMailles[TETRA4]++;
00057       i1 = cptNouvellesMailles[TETRA4] - 1;
00058 
00059       newCNX[TETRA4].push_back(ng0);
00060       newCNX[TETRA4].push_back(VN[0]);
00061       newCNX[TETRA4].push_back(ng2);
00062       newCNX[TETRA4].push_back(ng3);
00063       cptNouvellesMailles[TETRA4]++;
00064       i2 = cptNouvellesMailles[TETRA4] - 1;
00065 
00066       if (POSN[ng1 - 1] == 1)
00067         {
00068           GMplus[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + i1);
00069           GMmoins[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + i2);
00070         }
00071       else
00072         {
00073           GMplus[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + i2);
00074           GMmoins[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + i1);
00075         }
00076     }
00077 
00078   else if (VN[1] != -1)
00079     {
00080       // Le sommet de T4new1 servant à la détermination du groupe est le noeud 0 du T4 d'origine
00081 
00082       // cout << "cas 1/1" << endl;
00083       newCNX[TETRA4].push_back(ng0);
00084       newCNX[TETRA4].push_back(ng1);
00085       newCNX[TETRA4].push_back(VN[1]);
00086       newCNX[TETRA4].push_back(ng3);
00087       cptNouvellesMailles[TETRA4]++;
00088       i1 = cptNouvellesMailles[TETRA4] - 1;
00089 
00090       newCNX[TETRA4].push_back(ng1);
00091       newCNX[TETRA4].push_back(ng2);
00092       newCNX[TETRA4].push_back(VN[1]);
00093       newCNX[TETRA4].push_back(ng3);
00094       cptNouvellesMailles[TETRA4]++;
00095       i2 = cptNouvellesMailles[TETRA4] - 1;
00096 
00097       if (POSN[ng0 - 1] == 1)
00098         {
00099           GMplus[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + i1);
00100           GMmoins[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + i2);
00101         }
00102       else
00103         {
00104           GMplus[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + i2);
00105           GMmoins[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + i1);
00106         }
00107     }
00108 
00109   else if (VN[2] != -1)
00110     {
00111       // Le sommet de T4new1 servant à la détermination du groupe est le noeud 0 du T4 d'origine
00112 
00113       // cout << "cas 1/2" << endl;
00114       newCNX[TETRA4].push_back(ng0);
00115       newCNX[TETRA4].push_back(ng1);
00116       newCNX[TETRA4].push_back(ng2);
00117       newCNX[TETRA4].push_back(VN[2]);
00118       cptNouvellesMailles[TETRA4]++;
00119       i1 = cptNouvellesMailles[TETRA4] - 1;
00120 
00121       newCNX[TETRA4].push_back(ng1);
00122       newCNX[TETRA4].push_back(ng2);
00123       newCNX[TETRA4].push_back(VN[2]);
00124       newCNX[TETRA4].push_back(ng3);
00125       cptNouvellesMailles[TETRA4]++;
00126       i2 = cptNouvellesMailles[TETRA4] - 1;
00127 
00128       if (POSN[ng0 - 1] == 1)
00129         {
00130           GMplus[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + i1);
00131           GMmoins[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + i2);
00132         }
00133       else
00134         {
00135           GMplus[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + i2);
00136           GMmoins[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + i1);
00137         }
00138     }
00139 
00140   else if (VN[3] != -1)
00141     {
00142       // Le sommet de T4new1 servant à la détermination du groupe est le noeud 1 du T4 d'origine
00143 
00144       // cout << "cas 1/3" << endl;
00145       newCNX[TETRA4].push_back(ng0);
00146       newCNX[TETRA4].push_back(ng1);
00147       newCNX[TETRA4].push_back(VN[3]);
00148       newCNX[TETRA4].push_back(ng3);
00149       cptNouvellesMailles[TETRA4]++;
00150       i1 = cptNouvellesMailles[TETRA4] - 1;
00151 
00152       newCNX[TETRA4].push_back(ng0);
00153       newCNX[TETRA4].push_back(VN[3]);
00154       newCNX[TETRA4].push_back(ng2);
00155       newCNX[TETRA4].push_back(ng3);
00156       cptNouvellesMailles[TETRA4]++;
00157       i2 = cptNouvellesMailles[TETRA4] - 1;
00158 
00159       if (POSN[ng1 - 1] == 1)
00160         {
00161           GMplus[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + i1);
00162           GMmoins[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + i2);
00163         }
00164       else
00165         {
00166           GMplus[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + i2);
00167           GMmoins[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + i1);
00168         }
00169     }
00170 
00171   else if (VN[4] != -1)
00172     {
00173       // Le sommet de T4new1 servant à la détermination du groupe est le noeud 1 du T4 d'origine
00174 
00175       // cout << "cas 1/4" << endl;
00176       newCNX[TETRA4].push_back(ng0);
00177       newCNX[TETRA4].push_back(ng1);
00178       newCNX[TETRA4].push_back(ng2);
00179       newCNX[TETRA4].push_back(VN[4]);
00180       cptNouvellesMailles[TETRA4]++;
00181       i1 = cptNouvellesMailles[TETRA4] - 1;
00182 
00183       newCNX[TETRA4].push_back(ng0);
00184       newCNX[TETRA4].push_back(VN[4]);
00185       newCNX[TETRA4].push_back(ng2);
00186       newCNX[TETRA4].push_back(ng3);
00187       cptNouvellesMailles[TETRA4]++;
00188       i2 = cptNouvellesMailles[TETRA4] - 1;
00189 
00190       if (POSN[ng1 - 1] == 1)
00191         {
00192           GMplus[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + i1);
00193           GMmoins[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + i2);
00194         }
00195       else
00196         {
00197           GMplus[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + i2);
00198           GMmoins[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + i1);
00199         }
00200     }
00201 
00202   else if (VN[5] != -1)
00203     {
00204       // Le sommet de T4new1 servant à la détermination du groupe est le noeud 3 du T4 d'origine
00205 
00206       // cout << "cas 1/5" << endl;
00207       newCNX[TETRA4].push_back(ng0);
00208       newCNX[TETRA4].push_back(ng1);
00209       newCNX[TETRA4].push_back(VN[5]);
00210       newCNX[TETRA4].push_back(ng3);
00211       cptNouvellesMailles[TETRA4]++;
00212       i1 = cptNouvellesMailles[TETRA4] - 1;
00213 
00214       newCNX[TETRA4].push_back(ng0);
00215       newCNX[TETRA4].push_back(ng1);
00216       newCNX[TETRA4].push_back(ng2);
00217       newCNX[TETRA4].push_back(VN[5]);
00218       cptNouvellesMailles[TETRA4]++;
00219       i2 = cptNouvellesMailles[TETRA4] - 1;
00220 
00221       if (POSN[ng3 - 1] == 1)
00222         {
00223           GMplus[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + i1);
00224           GMmoins[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + i2);
00225         }
00226       else
00227         {
00228           GMplus[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + i2);
00229           GMmoins[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + i1);
00230         }
00231     }
00232 
00233   else
00234     ERREUR(" Intersections configuration not taken into account (case cptPI=1) ");
00235 
00236   //int nl1 = MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + i1;
00237   //int nl2 = MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + i2;
00238   // cout << "La maille TETRA4 " << it4 << " produit les mailles TETRA4-" << nl1 << " et TETRA4-" << nl2 << endl;
00239 
00240 }
00241 
00250 void MESHCUT::cas2(int VN[6], int it4)
00251 {
00252   cutTetras.push_back(it4);
00253   //  cout << "Cas 2 - it4=" << it4 << ", VN = " << VN[0] << " " << VN[1] << " " << VN[2] << " " << VN[3] << " " << VN[4]
00254   //      << " " << VN[5] << " " << endl;
00255 
00256   // Numéros des noeuds du TETRA4
00257   int ng0 = MAILLAGE1->CNX[TETRA4][4 * it4 + 0];
00258   int ng1 = MAILLAGE1->CNX[TETRA4][4 * it4 + 1];
00259   int ng2 = MAILLAGE1->CNX[TETRA4][4 * it4 + 2];
00260   int ng3 = MAILLAGE1->CNX[TETRA4][4 * it4 + 3];
00261 
00262   if (VN[0] != -1 && VN[1] != -1)
00263     {
00264       // Le sommet du nouveau T4 est le noeud 0 du T4 d'origine
00265 
00266       // cout << "cas 2.01" << endl;
00267       newCNX[TETRA4].push_back(VN[0]);
00268       newCNX[TETRA4].push_back(ng3);
00269       newCNX[TETRA4].push_back(VN[1]);
00270       newCNX[TETRA4].push_back(ng0);
00271       cptNouvellesMailles[TETRA4]++;
00272 
00273       newCNX[PYRAM5].push_back(VN[0]);
00274       newCNX[PYRAM5].push_back(ng1);
00275       newCNX[PYRAM5].push_back(ng2);
00276       newCNX[PYRAM5].push_back(VN[1]);
00277       newCNX[PYRAM5].push_back(ng3);
00278       cptNouvellesMailles[PYRAM5]++;
00279 
00280       if (POSN[ng0 - 1] == 1)
00281         {
00282           GMplus[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + cptNouvellesMailles[TETRA4] - 1);
00283           GMmoins[PYRAM5].push_back(MAILLAGE1->EFFECTIFS_TYPES[PYRAM5] + cptNouvellesMailles[PYRAM5] - 1);
00284         }
00285       else
00286         {
00287           GMmoins[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + cptNouvellesMailles[TETRA4] - 1);
00288           GMplus[PYRAM5].push_back(MAILLAGE1->EFFECTIFS_TYPES[PYRAM5] + cptNouvellesMailles[PYRAM5] - 1);
00289         }
00290     }
00291   else if (VN[0] != -1 && VN[2] != -1)
00292     {
00293       // Le sommet du nouveau T4 est le noeud 0 du T4 d'origine
00294 
00295       // cout << "cas 2.02" << endl;
00296       newCNX[TETRA4].push_back(VN[0]);
00297       newCNX[TETRA4].push_back(VN[2]);
00298       newCNX[TETRA4].push_back(ng2);
00299       newCNX[TETRA4].push_back(ng0);
00300       cptNouvellesMailles[TETRA4]++;
00301 
00302       newCNX[PYRAM5].push_back(VN[0]);
00303       newCNX[PYRAM5].push_back(VN[2]);
00304       newCNX[PYRAM5].push_back(ng3);
00305       newCNX[PYRAM5].push_back(ng1);
00306       newCNX[PYRAM5].push_back(ng2);
00307       cptNouvellesMailles[PYRAM5]++;
00308 
00309       if (POSN[ng0 - 1] == 1)
00310         {
00311           GMplus[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + cptNouvellesMailles[TETRA4] - 1);
00312           GMmoins[PYRAM5].push_back(MAILLAGE1->EFFECTIFS_TYPES[PYRAM5] + cptNouvellesMailles[PYRAM5] - 1);
00313         }
00314       else
00315         {
00316           GMmoins[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + cptNouvellesMailles[TETRA4] - 1);
00317           GMplus[PYRAM5].push_back(MAILLAGE1->EFFECTIFS_TYPES[PYRAM5] + cptNouvellesMailles[PYRAM5] - 1);
00318         }
00319     }
00320   else if (VN[0] != -1 && VN[3] != -1)
00321     {
00322       // Le sommet du nouveau T4 est le noeud 1 du T4 d'origine
00323 
00324       // cout << "cas 2.03" << endl;
00325       newCNX[TETRA4].push_back(VN[0]);
00326       newCNX[TETRA4].push_back(VN[3]);
00327       newCNX[TETRA4].push_back(ng3);
00328       newCNX[TETRA4].push_back(ng1);
00329       cptNouvellesMailles[TETRA4]++;
00330 
00331       newCNX[PYRAM5].push_back(VN[0]);
00332       newCNX[PYRAM5].push_back(VN[3]);
00333       newCNX[PYRAM5].push_back(ng2);
00334       newCNX[PYRAM5].push_back(ng0);
00335       newCNX[PYRAM5].push_back(ng3);
00336       cptNouvellesMailles[PYRAM5]++;
00337 
00338       if (POSN[ng1 - 1] == 1)
00339         {
00340           GMplus[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + cptNouvellesMailles[TETRA4] - 1);
00341           GMmoins[PYRAM5].push_back(MAILLAGE1->EFFECTIFS_TYPES[PYRAM5] + cptNouvellesMailles[PYRAM5] - 1);
00342         }
00343       else
00344         {
00345           GMmoins[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + cptNouvellesMailles[TETRA4] - 1);
00346           GMplus[PYRAM5].push_back(MAILLAGE1->EFFECTIFS_TYPES[PYRAM5] + cptNouvellesMailles[PYRAM5] - 1);
00347         }
00348     }
00349   else if (VN[0] != -1 && VN[4] != -1)
00350     {
00351       // Le sommet du nouveau T4 est le noeud 1 du T4 d'origine
00352 
00353       // cout << "cas 2.04" << endl;
00354       newCNX[TETRA4].push_back(VN[0]);
00355       newCNX[TETRA4].push_back(ng2);
00356       newCNX[TETRA4].push_back(VN[4]);
00357       newCNX[TETRA4].push_back(ng1);
00358       cptNouvellesMailles[TETRA4]++;
00359 
00360       newCNX[PYRAM5].push_back(ng0);
00361       newCNX[PYRAM5].push_back(ng3);
00362       newCNX[PYRAM5].push_back(VN[4]);
00363       newCNX[PYRAM5].push_back(VN[0]);
00364       newCNX[PYRAM5].push_back(ng2);
00365       cptNouvellesMailles[PYRAM5]++;
00366 
00367       if (POSN[ng1 - 1] == 1)
00368         {
00369           GMplus[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + cptNouvellesMailles[TETRA4] - 1);
00370           GMmoins[PYRAM5].push_back(MAILLAGE1->EFFECTIFS_TYPES[PYRAM5] + cptNouvellesMailles[PYRAM5] - 1);
00371         }
00372       else
00373         {
00374           GMmoins[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + cptNouvellesMailles[TETRA4] - 1);
00375           GMplus[PYRAM5].push_back(MAILLAGE1->EFFECTIFS_TYPES[PYRAM5] + cptNouvellesMailles[PYRAM5] - 1);
00376         }
00377     }
00378 
00379   else if (VN[0] != -1 && VN[5] != -1)
00380     ERREUR("Case 2/05 forbidden");
00381 
00382   else if (VN[1] != -1 && VN[2] != -1)
00383     {
00384       // Le sommet du nouveau T4 est le noeud 0 du T4 d'origine
00385 
00386       // cout << "cas 2.12" << endl;
00387       newCNX[TETRA4].push_back(ng1);
00388       newCNX[TETRA4].push_back(VN[2]);
00389       newCNX[TETRA4].push_back(VN[1]);
00390       newCNX[TETRA4].push_back(ng0);
00391       cptNouvellesMailles[TETRA4]++;
00392 
00393       newCNX[PYRAM5].push_back(ng2);
00394       newCNX[PYRAM5].push_back(ng3);
00395       newCNX[PYRAM5].push_back(VN[2]);
00396       newCNX[PYRAM5].push_back(VN[1]);
00397       newCNX[PYRAM5].push_back(ng1);
00398       cptNouvellesMailles[PYRAM5]++;
00399 
00400       if (POSN[ng0 - 1] == 1)
00401         {
00402           GMplus[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + cptNouvellesMailles[TETRA4] - 1);
00403           GMmoins[PYRAM5].push_back(MAILLAGE1->EFFECTIFS_TYPES[PYRAM5] + cptNouvellesMailles[PYRAM5] - 1);
00404         }
00405       else
00406         {
00407           GMmoins[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + cptNouvellesMailles[TETRA4] - 1);
00408           GMplus[PYRAM5].push_back(MAILLAGE1->EFFECTIFS_TYPES[PYRAM5] + cptNouvellesMailles[PYRAM5] - 1);
00409         }
00410     }
00411   else if (VN[1] != -1 && VN[3] != -1)
00412     {
00413       // Le sommet du nouveau T4 est le noeud 2 du T4 d'origine
00414 
00415       // cout << "cas 2.13" << endl;
00416       newCNX[TETRA4].push_back(VN[1]);
00417       newCNX[TETRA4].push_back(ng3);
00418       newCNX[TETRA4].push_back(VN[3]);
00419       newCNX[TETRA4].push_back(ng2);
00420       cptNouvellesMailles[TETRA4]++;
00421 
00422       newCNX[PYRAM5].push_back(ng0);
00423       newCNX[PYRAM5].push_back(ng1);
00424       newCNX[PYRAM5].push_back(VN[3]);
00425       newCNX[PYRAM5].push_back(VN[1]);
00426       newCNX[PYRAM5].push_back(ng3);
00427       cptNouvellesMailles[PYRAM5]++;
00428 
00429       if (POSN[ng2 - 1] == 1)
00430         {
00431           GMplus[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + cptNouvellesMailles[TETRA4] - 1);
00432           GMmoins[PYRAM5].push_back(MAILLAGE1->EFFECTIFS_TYPES[PYRAM5] + cptNouvellesMailles[PYRAM5] - 1);
00433         }
00434       else
00435         {
00436           GMmoins[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + cptNouvellesMailles[TETRA4] - 1);
00437           GMplus[PYRAM5].push_back(MAILLAGE1->EFFECTIFS_TYPES[PYRAM5] + cptNouvellesMailles[PYRAM5] - 1);
00438         }
00439     }
00440 
00441   else if (VN[1] != -1 && VN[4] != -1)
00442     ERREUR("Case 2/14 excluded");
00443 
00444   else if (VN[1] != -1 && VN[5] != -1)
00445     {
00446       // Le sommet du nouveau T4 est le noeud 2 du T4 d'origine
00447 
00448       // cout << "cas 2.15" << endl;
00449       newCNX[TETRA4].push_back(ng1);
00450       newCNX[TETRA4].push_back(ng2);
00451       newCNX[TETRA4].push_back(VN[1]);
00452       newCNX[TETRA4].push_back(VN[5]);
00453       cptNouvellesMailles[TETRA4]++;
00454 
00455       newCNX[PYRAM5].push_back(VN[1]);
00456       newCNX[PYRAM5].push_back(VN[5]);
00457       newCNX[PYRAM5].push_back(ng3);
00458       newCNX[PYRAM5].push_back(ng0);
00459       newCNX[PYRAM5].push_back(ng1);
00460       cptNouvellesMailles[PYRAM5]++;
00461 
00462       if (POSN[ng2 - 1] == 1)
00463         {
00464           GMplus[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + cptNouvellesMailles[TETRA4] - 1);
00465           GMmoins[PYRAM5].push_back(MAILLAGE1->EFFECTIFS_TYPES[PYRAM5] + cptNouvellesMailles[PYRAM5] - 1);
00466         }
00467       else
00468         {
00469           GMmoins[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + cptNouvellesMailles[TETRA4] - 1);
00470           GMplus[PYRAM5].push_back(MAILLAGE1->EFFECTIFS_TYPES[PYRAM5] + cptNouvellesMailles[PYRAM5] - 1);
00471         }
00472     }
00473 
00474   else if (VN[2] != -1 && VN[3] != -1)
00475     ERREUR("Case 2/23 excluded");
00476 
00477   else if (VN[2] != -1 && VN[4] != -1)
00478     {
00479       // Le sommet du nouveau T4 est le noeud 3 du T4 d'origine
00480 
00481       // cout << "cas 2.24" << endl;
00482       newCNX[TETRA4].push_back(VN[2]);
00483       newCNX[TETRA4].push_back(VN[4]);
00484       newCNX[TETRA4].push_back(ng2);
00485       newCNX[TETRA4].push_back(ng3);
00486       cptNouvellesMailles[TETRA4]++;
00487 
00488       newCNX[PYRAM5].push_back(ng0);
00489       newCNX[PYRAM5].push_back(VN[2]);
00490       newCNX[PYRAM5].push_back(VN[4]);
00491       newCNX[PYRAM5].push_back(ng1);
00492       newCNX[PYRAM5].push_back(ng2);
00493       cptNouvellesMailles[PYRAM5]++;
00494 
00495       if (POSN[ng3 - 1] == 1)
00496         {
00497           GMplus[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + cptNouvellesMailles[TETRA4] - 1);
00498           GMmoins[PYRAM5].push_back(MAILLAGE1->EFFECTIFS_TYPES[PYRAM5] + cptNouvellesMailles[PYRAM5] - 1);
00499         }
00500       else
00501         {
00502           GMmoins[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + cptNouvellesMailles[TETRA4] - 1);
00503           GMplus[PYRAM5].push_back(MAILLAGE1->EFFECTIFS_TYPES[PYRAM5] + cptNouvellesMailles[PYRAM5] - 1);
00504         }
00505     }
00506 
00507   else if (VN[2] != -1 && VN[5] != -1)
00508     {
00509       // Le sommet du nouveau T4 est le noeud 3 du T4 d'origine
00510 
00511       // cout << "cas 2.25" << endl;
00512       newCNX[TETRA4].push_back(ng1);
00513       newCNX[TETRA4].push_back(VN[5]);
00514       newCNX[TETRA4].push_back(VN[2]);
00515       newCNX[TETRA4].push_back(ng3);
00516       cptNouvellesMailles[TETRA4]++;
00517 
00518       newCNX[PYRAM5].push_back(ng0);
00519       newCNX[PYRAM5].push_back(ng2);
00520       newCNX[PYRAM5].push_back(VN[5]);
00521       newCNX[PYRAM5].push_back(VN[2]);
00522       newCNX[PYRAM5].push_back(ng1);
00523       cptNouvellesMailles[PYRAM5]++;
00524 
00525       if (POSN[ng3 - 1] == 1)
00526         {
00527           GMplus[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + cptNouvellesMailles[TETRA4] - 1);
00528           GMmoins[PYRAM5].push_back(MAILLAGE1->EFFECTIFS_TYPES[PYRAM5] + cptNouvellesMailles[PYRAM5] - 1);
00529         }
00530       else
00531         {
00532           GMmoins[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + cptNouvellesMailles[TETRA4] - 1);
00533           GMplus[PYRAM5].push_back(MAILLAGE1->EFFECTIFS_TYPES[PYRAM5] + cptNouvellesMailles[PYRAM5] - 1);
00534         }
00535     }
00536 
00537   else if (VN[3] != -1 && VN[4] != -1)
00538     {
00539       // Le sommet du nouveau T4 est le noeud 1 du T4 d'origine
00540 
00541       // cout << "cas 2.34" << endl;
00542       newCNX[TETRA4].push_back(ng0);
00543       newCNX[TETRA4].push_back(VN[3]);
00544       newCNX[TETRA4].push_back(VN[4]);
00545       newCNX[TETRA4].push_back(ng1);
00546       cptNouvellesMailles[TETRA4]++;
00547 
00548       newCNX[PYRAM5].push_back(VN[3]);
00549       newCNX[PYRAM5].push_back(VN[4]);
00550       newCNX[PYRAM5].push_back(ng3);
00551       newCNX[PYRAM5].push_back(ng2);
00552       newCNX[PYRAM5].push_back(ng0);
00553       cptNouvellesMailles[PYRAM5]++;
00554 
00555       if (POSN[ng1 - 1] == 1)
00556         {
00557           GMplus[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + cptNouvellesMailles[TETRA4] - 1);
00558           GMmoins[PYRAM5].push_back(MAILLAGE1->EFFECTIFS_TYPES[PYRAM5] + cptNouvellesMailles[PYRAM5] - 1);
00559         }
00560       else
00561         {
00562           GMmoins[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + cptNouvellesMailles[TETRA4] - 1);
00563           GMplus[PYRAM5].push_back(MAILLAGE1->EFFECTIFS_TYPES[PYRAM5] + cptNouvellesMailles[PYRAM5] - 1);
00564         }
00565     }
00566 
00567   else if (VN[3] != -1 && VN[5] != -1)
00568     {
00569       // Le sommet du nouveau T4 est le noeud 2 du T4 d'origine
00570 
00571       // cout << "cas 2.35" << endl;
00572       newCNX[TETRA4].push_back(VN[3]);
00573       newCNX[TETRA4].push_back(VN[5]);
00574       newCNX[TETRA4].push_back(ng2);
00575       newCNX[TETRA4].push_back(ng0);
00576       cptNouvellesMailles[TETRA4]++;
00577 
00578       newCNX[PYRAM5].push_back(VN[3]);
00579       newCNX[PYRAM5].push_back(ng1);
00580       newCNX[PYRAM5].push_back(ng3);
00581       newCNX[PYRAM5].push_back(VN[5]);
00582       newCNX[PYRAM5].push_back(ng0);
00583       cptNouvellesMailles[PYRAM5]++;
00584 
00585       if (POSN[ng2 - 1] == 1)
00586         {
00587           GMplus[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + cptNouvellesMailles[TETRA4] - 1);
00588           GMmoins[PYRAM5].push_back(MAILLAGE1->EFFECTIFS_TYPES[PYRAM5] + cptNouvellesMailles[PYRAM5] - 1);
00589         }
00590       else
00591         {
00592           GMmoins[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + cptNouvellesMailles[TETRA4] - 1);
00593           GMplus[PYRAM5].push_back(MAILLAGE1->EFFECTIFS_TYPES[PYRAM5] + cptNouvellesMailles[PYRAM5] - 1);
00594         }
00595     }
00596 
00597   else if (VN[4] != -1 && VN[5] != -1)
00598     {
00599       // Le sommet du nouveau T4 est le noeud 3 du T4 d'origine
00600 
00601       // cout << "cas 2.35" << endl;
00602       newCNX[TETRA4].push_back(ng0);
00603       newCNX[TETRA4].push_back(VN[4]);
00604       newCNX[TETRA4].push_back(VN[5]);
00605       newCNX[TETRA4].push_back(ng3);
00606       cptNouvellesMailles[TETRA4]++;
00607 
00608       newCNX[PYRAM5].push_back(ng1);
00609       newCNX[PYRAM5].push_back(VN[4]);
00610       newCNX[PYRAM5].push_back(VN[5]);
00611       newCNX[PYRAM5].push_back(ng2);
00612       newCNX[PYRAM5].push_back(ng0);
00613       cptNouvellesMailles[PYRAM5]++;
00614 
00615       if (POSN[ng3 - 1] == 1)
00616         {
00617           GMplus[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + cptNouvellesMailles[TETRA4] - 1);
00618           GMmoins[PYRAM5].push_back(MAILLAGE1->EFFECTIFS_TYPES[PYRAM5] + cptNouvellesMailles[PYRAM5] - 1);
00619         }
00620       else
00621         {
00622           GMmoins[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + cptNouvellesMailles[TETRA4] - 1);
00623           GMplus[PYRAM5].push_back(MAILLAGE1->EFFECTIFS_TYPES[PYRAM5] + cptNouvellesMailles[PYRAM5] - 1);
00624         }
00625     }
00626 
00627   else
00628     ERREUR(" Intersections configuration not taken into account (case cptPI=2) ");
00629 
00630   // int ngT4 = MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + cptNouvellesMailles[TETRA4] - 1;
00631   // int ngP5 = MAILLAGE1->EFFECTIFS_TYPES[PYRAM5] + cptNouvellesMailles[PYRAM5] - 1;
00632   // cout << "La maille TETRA4 " << it4 << " produit les mailles TETRA4-" << ngT4 << " et PYRAM5-" << ngP5 << endl;
00633 
00634 }
00635 
00644 void MESHCUT::cas3(int VN[6], int it4)
00645 {
00646   cutTetras.push_back(it4);
00647   // cout << "Cas 3 - it4="<<it4<<", VN = " << VN[0] << " " << VN[1] << " " << VN[2] << " " << VN[3] << " " << VN[4] << " " << VN[5] << " " << endl;
00648 
00649   // Numéros des noeuds du TETRA4
00650   int ng0 = MAILLAGE1->CNX[TETRA4][4 * it4 + 0];
00651   int ng1 = MAILLAGE1->CNX[TETRA4][4 * it4 + 1];
00652   int ng2 = MAILLAGE1->CNX[TETRA4][4 * it4 + 2];
00653   int ng3 = MAILLAGE1->CNX[TETRA4][4 * it4 + 3];
00654 
00655   if (VN[0] != -1 && VN[1] != -1 && VN[2] != -1)
00656     {
00657 
00658       // Le sommet du nouveau T4 est le noeud 0 du T4 d'origine
00659 
00660       newCNX[TETRA4].push_back(ng0);
00661       newCNX[TETRA4].push_back(VN[0]);
00662       newCNX[TETRA4].push_back(VN[1]);
00663       newCNX[TETRA4].push_back(VN[2]);
00664       cptNouvellesMailles[TETRA4]++;
00665 
00666       newCNX[PENTA6].push_back(ng1);
00667       newCNX[PENTA6].push_back(ng3);
00668       newCNX[PENTA6].push_back(ng2);
00669       newCNX[PENTA6].push_back(VN[0]);
00670       newCNX[PENTA6].push_back(VN[2]);
00671       newCNX[PENTA6].push_back(VN[1]);
00672       cptNouvellesMailles[PENTA6]++;
00673 
00674       if (POSN[ng0 - 1] == 1)
00675         {
00676           GMplus[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + cptNouvellesMailles[TETRA4] - 1);
00677           GMmoins[PENTA6].push_back(MAILLAGE1->EFFECTIFS_TYPES[PENTA6] + cptNouvellesMailles[PENTA6] - 1);
00678         }
00679       else
00680         {
00681           GMmoins[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + cptNouvellesMailles[TETRA4] - 1);
00682           GMplus[PENTA6].push_back(MAILLAGE1->EFFECTIFS_TYPES[PENTA6] + cptNouvellesMailles[PENTA6] - 1);
00683         }
00684     }
00685 
00686   else if (VN[0] != -1 && VN[3] != -1 && VN[4] != -1)
00687     {
00688       // Le sommet du nouveau T4 est le noeud 1 du T4 d'origine
00689 
00690       //cout << "cas 3.2 (noeud sommet 1)" << endl;
00691       newCNX[TETRA4].push_back(VN[0]);
00692       newCNX[TETRA4].push_back(ng1);
00693       newCNX[TETRA4].push_back(VN[3]);
00694       newCNX[TETRA4].push_back(VN[4]);
00695       cptNouvellesMailles[TETRA4]++;
00696 
00697       newCNX[PENTA6].push_back(ng0);
00698       newCNX[PENTA6].push_back(ng2);
00699       newCNX[PENTA6].push_back(ng3);
00700       newCNX[PENTA6].push_back(VN[0]);
00701       newCNX[PENTA6].push_back(VN[3]);
00702       newCNX[PENTA6].push_back(VN[4]);
00703       cptNouvellesMailles[PENTA6]++;
00704 
00705       if (POSN[ng1 - 1] == 1)
00706         {
00707           GMplus[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + cptNouvellesMailles[TETRA4] - 1);
00708           GMmoins[PENTA6].push_back(MAILLAGE1->EFFECTIFS_TYPES[PENTA6] + cptNouvellesMailles[PENTA6] - 1);
00709         }
00710       else
00711         {
00712           GMmoins[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + cptNouvellesMailles[TETRA4] - 1);
00713           GMplus[PENTA6].push_back(MAILLAGE1->EFFECTIFS_TYPES[PENTA6] + cptNouvellesMailles[PENTA6] - 1);
00714         }
00715     }
00716   else if (VN[1] != -1 && VN[3] != -1 && VN[5] != -1)
00717     {
00718       // Le sommet du nouveau T4 est le noeud 2 du T4 d'origine
00719 
00720       //cout << "cas 3.3 (noeud sommet 2)" << endl;
00721 
00722       newCNX[TETRA4].push_back(VN[1]);
00723       newCNX[TETRA4].push_back(VN[3]);
00724       newCNX[TETRA4].push_back(ng2);
00725       newCNX[TETRA4].push_back(VN[5]);
00726       cptNouvellesMailles[TETRA4]++;
00727 
00728       newCNX[PENTA6].push_back(ng0);
00729       newCNX[PENTA6].push_back(ng3);
00730       newCNX[PENTA6].push_back(ng1);
00731       newCNX[PENTA6].push_back(VN[1]);
00732       newCNX[PENTA6].push_back(VN[5]);
00733       newCNX[PENTA6].push_back(VN[3]);
00734       cptNouvellesMailles[PENTA6]++;
00735 
00736       if (POSN[ng2 - 1] == 1)
00737         {
00738           GMplus[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + cptNouvellesMailles[TETRA4] - 1);
00739           GMmoins[PENTA6].push_back(MAILLAGE1->EFFECTIFS_TYPES[PENTA6] + cptNouvellesMailles[PENTA6] - 1);
00740         }
00741       else
00742         {
00743           GMmoins[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + cptNouvellesMailles[TETRA4] - 1);
00744           GMplus[PENTA6].push_back(MAILLAGE1->EFFECTIFS_TYPES[PENTA6] + cptNouvellesMailles[PENTA6] - 1);
00745         }
00746     }
00747   else if (VN[2] != -1 && VN[4] != -1 && VN[5] != -1)
00748     {
00749       // Le sommet du nouveau T4 est le noeud 3 du T4 d'origine
00750 
00751       newCNX[TETRA4].push_back(VN[2]);
00752       newCNX[TETRA4].push_back(VN[4]);
00753       newCNX[TETRA4].push_back(VN[5]);
00754       newCNX[TETRA4].push_back(ng3);
00755       cptNouvellesMailles[TETRA4]++;
00756 
00757       newCNX[PENTA6].push_back(ng0);
00758       newCNX[PENTA6].push_back(ng1);
00759       newCNX[PENTA6].push_back(ng2);
00760       newCNX[PENTA6].push_back(VN[2]);
00761       newCNX[PENTA6].push_back(VN[4]);
00762       newCNX[PENTA6].push_back(VN[5]);
00763       cptNouvellesMailles[PENTA6]++;
00764 
00765       if (POSN[ng3 - 1] == 1)
00766         {
00767           GMplus[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + cptNouvellesMailles[TETRA4] - 1);
00768           GMmoins[PENTA6].push_back(MAILLAGE1->EFFECTIFS_TYPES[PENTA6] + cptNouvellesMailles[PENTA6] - 1);
00769         }
00770       else
00771         {
00772           GMmoins[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + cptNouvellesMailles[TETRA4] - 1);
00773           GMplus[PENTA6].push_back(MAILLAGE1->EFFECTIFS_TYPES[PENTA6] + cptNouvellesMailles[PENTA6] - 1);
00774         }
00775     }
00776   else
00777     {
00778       //      cout << "Cas 3 - it4=" << it4 << ", VN = " << VN[0] << " " << VN[1] << " " << VN[2] << " " << VN[3] << " "
00779       //          << VN[4] << " " << VN[5] << " " << endl;
00780       //
00781       //      int n0 = *(MAILLAGE1->CNX[TETRA4] + it4 * 4 + 0);
00782       //      float x0 = MAILLAGE1->XX[n0 - 1];
00783       //      float y0 = MAILLAGE1->YY[n0 - 1];
00784       //      float z0 = MAILLAGE1->ZZ[n0 - 1];
00785       //
00786       //      int n1 = *(MAILLAGE1->CNX[TETRA4] + it4 * 4 + 1);
00787       //      float x1 = MAILLAGE1->XX[n1 - 1];
00788       //      float y1 = MAILLAGE1->YY[n1 - 1];
00789       //      float z1 = MAILLAGE1->ZZ[n1 - 1];
00790       //
00791       //      int n2 = *(MAILLAGE1->CNX[TETRA4] + it4 * 4 + 2);
00792       //      float x2 = MAILLAGE1->XX[n2 - 1];
00793       //      float y2 = MAILLAGE1->YY[n2 - 1];
00794       //      float z2 = MAILLAGE1->ZZ[n2 - 1];
00795       //
00796       //      int n3 = *(MAILLAGE1->CNX[TETRA4] + it4 * 4 + 3);
00797       //      float x3 = MAILLAGE1->XX[n3 - 1];
00798       //      float y3 = MAILLAGE1->YY[n3 - 1];
00799       //      float z3 = MAILLAGE1->ZZ[n3 - 1];
00800       //
00801       //      cout << x0 << " " << y0 << " " << z0 << " " << endl;
00802       //      cout << x1 << " " << y1 << " " << z1 << " " << endl;
00803       //      cout << x2 << " " << y2 << " " << z2 << " " << endl;
00804       //      cout << x3 << " " << y3 << " " << z3 << " " << endl;
00805 
00806       ERREUR(" Intersections configuration not taken into account (case cptPI=3) ");
00807     }
00808 
00809   // int ngT4 = MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + cptNouvellesMailles[TETRA4] - 1;
00810   // int ngP6 = MAILLAGE1->EFFECTIFS_TYPES[PENTA6] + cptNouvellesMailles[PENTA6] - 1;
00811   // cout << "La maille TETRA4 " << it4 << " produit les mailles TETRA4-" << ngT4 << " et PENTA6-" << ngP6 << endl;
00812 }
00813 
00823 void MESHCUT::cas4(int VN[6], int it4)
00824 {
00825   cutTetras.push_back(it4);
00826   //  cout << "Cas 4 - it4=" << it4 << ", VN = " << VN[0] << " " << VN[1] << " " << VN[2] << " " << VN[3] << " " << VN[4]
00827   //      << " " << VN[5] << " " << endl;
00828 
00829   // Numéros des noeuds du TETRA4
00830   int ng0 = MAILLAGE1->CNX[TETRA4][4 * it4 + 0];
00831   int ng1 = MAILLAGE1->CNX[TETRA4][4 * it4 + 1];
00832   int ng2 = MAILLAGE1->CNX[TETRA4][4 * it4 + 2];
00833   int ng3 = MAILLAGE1->CNX[TETRA4][4 * it4 + 3];
00834 
00835   int i1, i2; // Numéros locaux dans le type des mailles créées
00836 
00837   if (VN[0] == -1 && VN[5] == -1)
00838     {
00839       // Les deux arêtes opposées sont [0,1] et [2,3]
00840 
00841       newCNX[PENTA6].push_back(ng0);
00842       newCNX[PENTA6].push_back(VN[1]);
00843       newCNX[PENTA6].push_back(VN[2]);
00844       newCNX[PENTA6].push_back(ng1);
00845       newCNX[PENTA6].push_back(VN[3]);
00846       newCNX[PENTA6].push_back(VN[4]);
00847       cptNouvellesMailles[PENTA6]++;
00848       i1 = cptNouvellesMailles[PENTA6] - 1;
00849 
00850       newCNX[PENTA6].push_back(ng3);
00851       newCNX[PENTA6].push_back(VN[4]);
00852       newCNX[PENTA6].push_back(VN[2]);
00853       newCNX[PENTA6].push_back(ng2);
00854       newCNX[PENTA6].push_back(VN[3]);
00855       newCNX[PENTA6].push_back(VN[1]);
00856       cptNouvellesMailles[PENTA6]++;
00857       i2 = cptNouvellesMailles[PENTA6] - 1;
00858 
00859       if (POSN[ng0 - 1] == 1)
00860         {
00861           GMplus[PENTA6].push_back(MAILLAGE1->EFFECTIFS_TYPES[PENTA6] + i1);
00862           GMmoins[PENTA6].push_back(MAILLAGE1->EFFECTIFS_TYPES[PENTA6] + i2);
00863         }
00864       else
00865         {
00866           GMplus[PENTA6].push_back(MAILLAGE1->EFFECTIFS_TYPES[PENTA6] + i2);
00867           GMmoins[PENTA6].push_back(MAILLAGE1->EFFECTIFS_TYPES[PENTA6] + i1);
00868         }
00869 
00870     } // if ( VN[0]==-1 && VN[5]==-1 )
00871 
00872   else if (VN[1] == -1 && VN[4] == -1)
00873     {
00874       // Les deux arêtes opposées sont [0,2] et [1,3]
00875 
00876       newCNX[PENTA6].push_back(ng2);
00877       newCNX[PENTA6].push_back(VN[3]);
00878       newCNX[PENTA6].push_back(VN[5]);
00879       newCNX[PENTA6].push_back(ng0);
00880       newCNX[PENTA6].push_back(VN[0]);
00881       newCNX[PENTA6].push_back(VN[2]);
00882       cptNouvellesMailles[PENTA6]++;
00883       i1 = cptNouvellesMailles[PENTA6] - 1;
00884 
00885       newCNX[PENTA6].push_back(ng1);
00886       newCNX[PENTA6].push_back(VN[3]);
00887       newCNX[PENTA6].push_back(VN[0]);
00888       newCNX[PENTA6].push_back(ng3);
00889       newCNX[PENTA6].push_back(VN[5]);
00890       newCNX[PENTA6].push_back(VN[2]);
00891       cptNouvellesMailles[PENTA6]++;
00892       i2 = cptNouvellesMailles[PENTA6] - 1;
00893 
00894       if (POSN[ng0 - 1] == 1)
00895         {
00896           GMplus[PENTA6].push_back(MAILLAGE1->EFFECTIFS_TYPES[PENTA6] + i1);
00897           GMmoins[PENTA6].push_back(MAILLAGE1->EFFECTIFS_TYPES[PENTA6] + i2);
00898         }
00899       else
00900         {
00901           GMplus[PENTA6].push_back(MAILLAGE1->EFFECTIFS_TYPES[PENTA6] + i2);
00902           GMmoins[PENTA6].push_back(MAILLAGE1->EFFECTIFS_TYPES[PENTA6] + i1);
00903         }
00904     }
00905 
00906   else if (VN[2] == -1 && VN[3] == -1)
00907     {
00908       // Les deux arêtes opposées sont [0,3] et [1,2]
00909 
00910       newCNX[PENTA6].push_back(ng0);
00911       newCNX[PENTA6].push_back(VN[0]);
00912       newCNX[PENTA6].push_back(VN[1]);
00913       newCNX[PENTA6].push_back(ng3);
00914       newCNX[PENTA6].push_back(VN[4]);
00915       newCNX[PENTA6].push_back(VN[5]);
00916       cptNouvellesMailles[PENTA6]++;
00917       i1 = cptNouvellesMailles[PENTA6] - 1;
00918 
00919       newCNX[PENTA6].push_back(ng2);
00920       newCNX[PENTA6].push_back(VN[5]);
00921       newCNX[PENTA6].push_back(VN[1]);
00922       newCNX[PENTA6].push_back(ng1);
00923       newCNX[PENTA6].push_back(VN[4]);
00924       newCNX[PENTA6].push_back(VN[0]);
00925       cptNouvellesMailles[PENTA6]++;
00926       i2 = cptNouvellesMailles[PENTA6] - 1;
00927 
00928       if (POSN[ng0 - 1] == 1)
00929         {
00930           GMplus[PENTA6].push_back(MAILLAGE1->EFFECTIFS_TYPES[PENTA6] + i1);
00931           GMmoins[PENTA6].push_back(MAILLAGE1->EFFECTIFS_TYPES[PENTA6] + i2);
00932         }
00933       else
00934         {
00935           GMplus[PENTA6].push_back(MAILLAGE1->EFFECTIFS_TYPES[PENTA6] + i2);
00936           GMmoins[PENTA6].push_back(MAILLAGE1->EFFECTIFS_TYPES[PENTA6] + i1);
00937         }
00938     }
00939   else
00940     ERREUR(" Intersection configuration not taken into account (case cptPI=4) ");
00941 
00942   // int nl1 = MAILLAGE1->EFFECTIFS_TYPES[PENTA6] + i1;
00943   // int nl2 = MAILLAGE1->EFFECTIFS_TYPES[PENTA6] + i2;
00944   // cout << "La maille TETRA4 " << it4 << " produit les mailles PENTA6-" << nl1 << " et PENTA6-" << nl2 << endl;
00945 }