00001 // Copyright (C) 2006-2011 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 }