Data Structures | |
| class | Carre |
| class | Cube |
| class | Maillage |
Enumerations | |
| enum | TYPE_MAILLE { POI1, SEG2, SEG3, TRIA3, TRIA6, QUAD4, QUAD8, TETRA4, TETRA10, PYRAM5, PYRAM13, PENTA6, PENTA15, HEXA8, HEXA20 } |
Functions | |
| void | cas1 (int VN[6], int it4) |
| Le cas 1 traduit le fait que deux des sommets du T4 initial sont dans le plan de coupe. | |
| void | cas2 (int VN[6], int it4) |
| Deux points d'intersection Le cas 2 traduit le fait qu'un des sommets du T4 est dans le plan de coupe. | |
| void | cas3 (int VN[6], int it4) |
| Trois points d'intersection ATTENTION: pour les PENTA6 on adopte la convention d'orientation SALOME : | |
| void | cas4 (int VN[6], int it4) |
| Quatre points d'intersection. | |
| float | longueurSegment (int ngA, int ngB) |
| float | distanceNoeudPlan (float point[3]) |
| float | distanceNoeudPlan (int ng) |
| int | positionNoeudPlan (int indiceNoeud) |
| int | intersectionSegmentPlan (int it4, int na) |
| Equation paramétrique de la droite AB: OP = OA + lambda AB. | |
| bool | estUnTypeMaille (std::string S) |
| void | ERREUR (const char *msg) |
| char * | string2char (std::string str) |
| std::string | int2string (int k) |
| float | char2float (const char *ch) |
| std::string | float2string (float f) |
| bool | appartient (std::string e, std::string tableau[], int taille) |
| float | arrondi (float x) |
| int | numNoeudPointe (std::string b1, std::string b2, std::string b3) |
| std::string | strip (std::string S) |
| std::string | entierSur10_g (int i) |
| std::string | entierSur10_d (int i) |
| std::string | typeEnsight (std::string type) |
| int | Nnoeuds (TYPE_MAILLE type) |
| int | NnoeudsGeom (TYPE_MAILLE type) |
| int | codeGMSH (std::string type) |
| std::string | floatEnsight (float x) |
| bool | typeComplexe (std::string type) |
| std::string | ASTER8 (std::string s) |
| float | dObservateur (float a, float b, float c) |
| Distance à laquelle doit se tenir l'observateur sur un axe pour voir sous 90° un objet centré de dimensions a et b selon les deux autres axes. | |
| int | copieFichier (std::string source, std::string cible) |
| med_geometry_type | InstanceMGE (TYPE_MAILLE TYPE) |
| int | chrono () |
| TYPE_MAILLE | typeMaille (std::string type) |
| std::string | MGE2string (med_geometry_type MGE) |
| std::string | TM2string (TYPE_MAILLE MGE) |
| TYPE_MAILLE | string2TM (std::string stm) |
| std::string | coordIndex_ILS (TYPE_MAILLE tm) |
| std::string | coordIndex_IFS (TYPE_MAILLE tm) |
| std::string | SIGNE (double x) |
| void | champType (std::string type, med_entity_type MEM, med_geometry_type MGE, med_idt fid, med_idt fidout, char *maa, char *nomChamp, char *nomChampMoy, med_field_type typeChamp, char *compChamp, char *unitChamp, med_int nCompChamp, std::map< std::string, int > REFGAUSS, int ichamp) |
| std::string | nomMaille (TYPE_MAILLE tm, int nl) |
| bool | appartientVN (int n, std::vector< int > V) |
| float | distance2 (float x1, float y1, float z1, float x2, float y2, float z2) |
| void | conversionCNX (int *CNXtm, TYPE_MAILLE tm, int N) |
| Conversion HL-MED d'une table de connectivités. | |
Variables | |
| std::map< std::string, int > | intersections |
| Table des points d'intersection calculés. | |
| int | indexNouvellesMailles |
| int | indexNouveauxNoeuds |
| int | offsetMailles |
| std::string | str_id_GMplus |
| std::string | str_id_GMmoins |
| Maillage * | MAILLAGE1 |
| Maillage * | MAILLAGE2 |
| std::vector< float > | newXX |
| std::vector< float > | newYY |
| std::vector< float > | newZZ |
| std::map< TYPE_MAILLE, std::vector< int > > | newCNX |
| std::map< TYPE_MAILLE, int > | cptNouvellesMailles |
| std::map< TYPE_MAILLE, std::vector< int > > | GMplus |
| std::map< TYPE_MAILLE, std::vector< int > > | GMmoins |
| std::vector< int > | cutTetras |
| float * | DNP |
| Distance Noeud Plan. | |
| int * | POSN |
| Version -1/0/+1 du précédent, selon epsilon. | |
| std::string | str_id_maillagenew |
| float | normale [3] |
| float | pointPlan [3] |
| Définition du plan de coupe. | |
| float | d |
| coefficient constant de l'équation du plan de coupe | |
| float | epsilon |
| distance en dessous de laquelle un point est considéré comme appartenant au plan de coupe | |
| bool | debug |
| int | Naretes |
| enum MESHCUT::TYPE_MAILLE |
Definition at line 85 of file MeshCut_Utils.cxx.
{
for (int i = 0; i < taille; i++)
if (tableau[i] == e)
return true;
return false;
}
Definition at line 1016 of file MeshCut_Utils.cxx.
{
bool app = false;
for (unsigned int i = 0; i < V.size(); i++)
if (n == V[i])
{
app = true;
break;
}
return app;
}
| float MESHCUT::arrondi | ( | float | x | ) |
Definition at line 93 of file MeshCut_Utils.cxx.
References ex13_hole1partial.x.
| std::string MESHCUT::ASTER8 | ( | std::string | s | ) |
Definition at line 473 of file MeshCut_Utils.cxx.
References ERREUR().
{
if (s.size() == 0)
return (s + (string) " ");
else if (s.size() == 1)
return (s + (string) " ");
else if (s.size() == 2)
return (s + (string) " ");
else if (s.size() == 3)
return (s + (string) " ");
else if (s.size() == 4)
return (s + (string) " ");
else if (s.size() == 5)
return (s + (string) " ");
else if (s.size() == 6)
return (s + (string) " ");
else if (s.size() == 7)
return (s + (string) " ");
else if (s.size() == 8)
return (s);
else
ERREUR("More than 8 char for an ASTER string");
return (s);
}
Le cas 1 traduit le fait que deux des sommets du T4 initial sont dans le plan de coupe.
Le point d'intersection franc trouvé est sur l'arête opposée à ces deux points du T4.
Le T4 initial produit deux nouveaux T4.
Definition at line 33 of file MeshCut_Cas.cxx.
References MESHCUT.Maillage.CNX, cptNouvellesMailles, cutTetras, MESHCUT.Maillage.EFFECTIFS_TYPES, ERREUR(), GMmoins, GMplus, SMESH_test.i1, SMESH_test.i2, MAILLAGE1, newCNX, POSN, and TETRA4.
Referenced by main().
{
cutTetras.push_back(it4);
// cout << "Cas 1 - it4=" << it4 << ", VN = " << VN[0] << " " << VN[1] << " " << VN[2] << " " << VN[3] << " " << VN[4]
// << " " << VN[5] << " " << endl;
// Numéros des noeuds du TETRA4
int ng0 = MAILLAGE1->CNX[TETRA4][4 * it4 + 0];
int ng1 = MAILLAGE1->CNX[TETRA4][4 * it4 + 1];
int ng2 = MAILLAGE1->CNX[TETRA4][4 * it4 + 2];
int ng3 = MAILLAGE1->CNX[TETRA4][4 * it4 + 3];
int i1, i2;
if (VN[0] != -1)
{
// Le sommet de T4new1 servant à la détermination du groupe est le noeud 1 du T4 d'origine
// cout << "cas 1/0" << endl;
newCNX[TETRA4].push_back(VN[0]);
newCNX[TETRA4].push_back(ng1);
newCNX[TETRA4].push_back(ng2);
newCNX[TETRA4].push_back(ng3);
cptNouvellesMailles[TETRA4]++;
i1 = cptNouvellesMailles[TETRA4] - 1;
newCNX[TETRA4].push_back(ng0);
newCNX[TETRA4].push_back(VN[0]);
newCNX[TETRA4].push_back(ng2);
newCNX[TETRA4].push_back(ng3);
cptNouvellesMailles[TETRA4]++;
i2 = cptNouvellesMailles[TETRA4] - 1;
if (POSN[ng1 - 1] == 1)
{
GMplus[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + i1);
GMmoins[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + i2);
}
else
{
GMplus[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + i2);
GMmoins[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + i1);
}
}
else if (VN[1] != -1)
{
// Le sommet de T4new1 servant à la détermination du groupe est le noeud 0 du T4 d'origine
// cout << "cas 1/1" << endl;
newCNX[TETRA4].push_back(ng0);
newCNX[TETRA4].push_back(ng1);
newCNX[TETRA4].push_back(VN[1]);
newCNX[TETRA4].push_back(ng3);
cptNouvellesMailles[TETRA4]++;
i1 = cptNouvellesMailles[TETRA4] - 1;
newCNX[TETRA4].push_back(ng1);
newCNX[TETRA4].push_back(ng2);
newCNX[TETRA4].push_back(VN[1]);
newCNX[TETRA4].push_back(ng3);
cptNouvellesMailles[TETRA4]++;
i2 = cptNouvellesMailles[TETRA4] - 1;
if (POSN[ng0 - 1] == 1)
{
GMplus[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + i1);
GMmoins[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + i2);
}
else
{
GMplus[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + i2);
GMmoins[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + i1);
}
}
else if (VN[2] != -1)
{
// Le sommet de T4new1 servant à la détermination du groupe est le noeud 0 du T4 d'origine
// cout << "cas 1/2" << endl;
newCNX[TETRA4].push_back(ng0);
newCNX[TETRA4].push_back(ng1);
newCNX[TETRA4].push_back(ng2);
newCNX[TETRA4].push_back(VN[2]);
cptNouvellesMailles[TETRA4]++;
i1 = cptNouvellesMailles[TETRA4] - 1;
newCNX[TETRA4].push_back(ng1);
newCNX[TETRA4].push_back(ng2);
newCNX[TETRA4].push_back(VN[2]);
newCNX[TETRA4].push_back(ng3);
cptNouvellesMailles[TETRA4]++;
i2 = cptNouvellesMailles[TETRA4] - 1;
if (POSN[ng0 - 1] == 1)
{
GMplus[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + i1);
GMmoins[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + i2);
}
else
{
GMplus[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + i2);
GMmoins[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + i1);
}
}
else if (VN[3] != -1)
{
// Le sommet de T4new1 servant à la détermination du groupe est le noeud 1 du T4 d'origine
// cout << "cas 1/3" << endl;
newCNX[TETRA4].push_back(ng0);
newCNX[TETRA4].push_back(ng1);
newCNX[TETRA4].push_back(VN[3]);
newCNX[TETRA4].push_back(ng3);
cptNouvellesMailles[TETRA4]++;
i1 = cptNouvellesMailles[TETRA4] - 1;
newCNX[TETRA4].push_back(ng0);
newCNX[TETRA4].push_back(VN[3]);
newCNX[TETRA4].push_back(ng2);
newCNX[TETRA4].push_back(ng3);
cptNouvellesMailles[TETRA4]++;
i2 = cptNouvellesMailles[TETRA4] - 1;
if (POSN[ng1 - 1] == 1)
{
GMplus[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + i1);
GMmoins[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + i2);
}
else
{
GMplus[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + i2);
GMmoins[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + i1);
}
}
else if (VN[4] != -1)
{
// Le sommet de T4new1 servant à la détermination du groupe est le noeud 1 du T4 d'origine
// cout << "cas 1/4" << endl;
newCNX[TETRA4].push_back(ng0);
newCNX[TETRA4].push_back(ng1);
newCNX[TETRA4].push_back(ng2);
newCNX[TETRA4].push_back(VN[4]);
cptNouvellesMailles[TETRA4]++;
i1 = cptNouvellesMailles[TETRA4] - 1;
newCNX[TETRA4].push_back(ng0);
newCNX[TETRA4].push_back(VN[4]);
newCNX[TETRA4].push_back(ng2);
newCNX[TETRA4].push_back(ng3);
cptNouvellesMailles[TETRA4]++;
i2 = cptNouvellesMailles[TETRA4] - 1;
if (POSN[ng1 - 1] == 1)
{
GMplus[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + i1);
GMmoins[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + i2);
}
else
{
GMplus[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + i2);
GMmoins[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + i1);
}
}
else if (VN[5] != -1)
{
// Le sommet de T4new1 servant à la détermination du groupe est le noeud 3 du T4 d'origine
// cout << "cas 1/5" << endl;
newCNX[TETRA4].push_back(ng0);
newCNX[TETRA4].push_back(ng1);
newCNX[TETRA4].push_back(VN[5]);
newCNX[TETRA4].push_back(ng3);
cptNouvellesMailles[TETRA4]++;
i1 = cptNouvellesMailles[TETRA4] - 1;
newCNX[TETRA4].push_back(ng0);
newCNX[TETRA4].push_back(ng1);
newCNX[TETRA4].push_back(ng2);
newCNX[TETRA4].push_back(VN[5]);
cptNouvellesMailles[TETRA4]++;
i2 = cptNouvellesMailles[TETRA4] - 1;
if (POSN[ng3 - 1] == 1)
{
GMplus[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + i1);
GMmoins[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + i2);
}
else
{
GMplus[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + i2);
GMmoins[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + i1);
}
}
else
ERREUR(" Intersections configuration not taken into account (case cptPI=1) ");
//int nl1 = MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + i1;
//int nl2 = MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + i2;
// cout << "La maille TETRA4 " << it4 << " produit les mailles TETRA4-" << nl1 << " et TETRA4-" << nl2 << endl;
}
Deux points d'intersection Le cas 2 traduit le fait qu'un des sommets du T4 est dans le plan de coupe.
Ce sommet est celui des quatre qui n'appartient à aucune des deux arêtes sur lesquelles un point d'intersection non -1 a été calculé.
Le T4 initial produit un nouveau T4 et un élément PYRAM5.
Definition at line 250 of file MeshCut_Cas.cxx.
References MESHCUT.Maillage.CNX, cptNouvellesMailles, cutTetras, MESHCUT.Maillage.EFFECTIFS_TYPES, ERREUR(), GMmoins, GMplus, MAILLAGE1, newCNX, POSN, PYRAM5, and TETRA4.
Referenced by main().
{
cutTetras.push_back(it4);
// cout << "Cas 2 - it4=" << it4 << ", VN = " << VN[0] << " " << VN[1] << " " << VN[2] << " " << VN[3] << " " << VN[4]
// << " " << VN[5] << " " << endl;
// Numéros des noeuds du TETRA4
int ng0 = MAILLAGE1->CNX[TETRA4][4 * it4 + 0];
int ng1 = MAILLAGE1->CNX[TETRA4][4 * it4 + 1];
int ng2 = MAILLAGE1->CNX[TETRA4][4 * it4 + 2];
int ng3 = MAILLAGE1->CNX[TETRA4][4 * it4 + 3];
if (VN[0] != -1 && VN[1] != -1)
{
// Le sommet du nouveau T4 est le noeud 0 du T4 d'origine
// cout << "cas 2.01" << endl;
newCNX[TETRA4].push_back(VN[0]);
newCNX[TETRA4].push_back(ng3);
newCNX[TETRA4].push_back(VN[1]);
newCNX[TETRA4].push_back(ng0);
cptNouvellesMailles[TETRA4]++;
newCNX[PYRAM5].push_back(VN[0]);
newCNX[PYRAM5].push_back(ng1);
newCNX[PYRAM5].push_back(ng2);
newCNX[PYRAM5].push_back(VN[1]);
newCNX[PYRAM5].push_back(ng3);
cptNouvellesMailles[PYRAM5]++;
if (POSN[ng0 - 1] == 1)
{
GMplus[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + cptNouvellesMailles[TETRA4] - 1);
GMmoins[PYRAM5].push_back(MAILLAGE1->EFFECTIFS_TYPES[PYRAM5] + cptNouvellesMailles[PYRAM5] - 1);
}
else
{
GMmoins[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + cptNouvellesMailles[TETRA4] - 1);
GMplus[PYRAM5].push_back(MAILLAGE1->EFFECTIFS_TYPES[PYRAM5] + cptNouvellesMailles[PYRAM5] - 1);
}
}
else if (VN[0] != -1 && VN[2] != -1)
{
// Le sommet du nouveau T4 est le noeud 0 du T4 d'origine
// cout << "cas 2.02" << endl;
newCNX[TETRA4].push_back(VN[0]);
newCNX[TETRA4].push_back(VN[2]);
newCNX[TETRA4].push_back(ng2);
newCNX[TETRA4].push_back(ng0);
cptNouvellesMailles[TETRA4]++;
newCNX[PYRAM5].push_back(VN[0]);
newCNX[PYRAM5].push_back(VN[2]);
newCNX[PYRAM5].push_back(ng3);
newCNX[PYRAM5].push_back(ng1);
newCNX[PYRAM5].push_back(ng2);
cptNouvellesMailles[PYRAM5]++;
if (POSN[ng0 - 1] == 1)
{
GMplus[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + cptNouvellesMailles[TETRA4] - 1);
GMmoins[PYRAM5].push_back(MAILLAGE1->EFFECTIFS_TYPES[PYRAM5] + cptNouvellesMailles[PYRAM5] - 1);
}
else
{
GMmoins[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + cptNouvellesMailles[TETRA4] - 1);
GMplus[PYRAM5].push_back(MAILLAGE1->EFFECTIFS_TYPES[PYRAM5] + cptNouvellesMailles[PYRAM5] - 1);
}
}
else if (VN[0] != -1 && VN[3] != -1)
{
// Le sommet du nouveau T4 est le noeud 1 du T4 d'origine
// cout << "cas 2.03" << endl;
newCNX[TETRA4].push_back(VN[0]);
newCNX[TETRA4].push_back(VN[3]);
newCNX[TETRA4].push_back(ng3);
newCNX[TETRA4].push_back(ng1);
cptNouvellesMailles[TETRA4]++;
newCNX[PYRAM5].push_back(VN[0]);
newCNX[PYRAM5].push_back(VN[3]);
newCNX[PYRAM5].push_back(ng2);
newCNX[PYRAM5].push_back(ng0);
newCNX[PYRAM5].push_back(ng3);
cptNouvellesMailles[PYRAM5]++;
if (POSN[ng1 - 1] == 1)
{
GMplus[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + cptNouvellesMailles[TETRA4] - 1);
GMmoins[PYRAM5].push_back(MAILLAGE1->EFFECTIFS_TYPES[PYRAM5] + cptNouvellesMailles[PYRAM5] - 1);
}
else
{
GMmoins[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + cptNouvellesMailles[TETRA4] - 1);
GMplus[PYRAM5].push_back(MAILLAGE1->EFFECTIFS_TYPES[PYRAM5] + cptNouvellesMailles[PYRAM5] - 1);
}
}
else if (VN[0] != -1 && VN[4] != -1)
{
// Le sommet du nouveau T4 est le noeud 1 du T4 d'origine
// cout << "cas 2.04" << endl;
newCNX[TETRA4].push_back(VN[0]);
newCNX[TETRA4].push_back(ng2);
newCNX[TETRA4].push_back(VN[4]);
newCNX[TETRA4].push_back(ng1);
cptNouvellesMailles[TETRA4]++;
newCNX[PYRAM5].push_back(ng0);
newCNX[PYRAM5].push_back(ng3);
newCNX[PYRAM5].push_back(VN[4]);
newCNX[PYRAM5].push_back(VN[0]);
newCNX[PYRAM5].push_back(ng2);
cptNouvellesMailles[PYRAM5]++;
if (POSN[ng1 - 1] == 1)
{
GMplus[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + cptNouvellesMailles[TETRA4] - 1);
GMmoins[PYRAM5].push_back(MAILLAGE1->EFFECTIFS_TYPES[PYRAM5] + cptNouvellesMailles[PYRAM5] - 1);
}
else
{
GMmoins[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + cptNouvellesMailles[TETRA4] - 1);
GMplus[PYRAM5].push_back(MAILLAGE1->EFFECTIFS_TYPES[PYRAM5] + cptNouvellesMailles[PYRAM5] - 1);
}
}
else if (VN[0] != -1 && VN[5] != -1)
ERREUR("Case 2/05 forbidden");
else if (VN[1] != -1 && VN[2] != -1)
{
// Le sommet du nouveau T4 est le noeud 0 du T4 d'origine
// cout << "cas 2.12" << endl;
newCNX[TETRA4].push_back(ng1);
newCNX[TETRA4].push_back(VN[2]);
newCNX[TETRA4].push_back(VN[1]);
newCNX[TETRA4].push_back(ng0);
cptNouvellesMailles[TETRA4]++;
newCNX[PYRAM5].push_back(ng2);
newCNX[PYRAM5].push_back(ng3);
newCNX[PYRAM5].push_back(VN[2]);
newCNX[PYRAM5].push_back(VN[1]);
newCNX[PYRAM5].push_back(ng1);
cptNouvellesMailles[PYRAM5]++;
if (POSN[ng0 - 1] == 1)
{
GMplus[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + cptNouvellesMailles[TETRA4] - 1);
GMmoins[PYRAM5].push_back(MAILLAGE1->EFFECTIFS_TYPES[PYRAM5] + cptNouvellesMailles[PYRAM5] - 1);
}
else
{
GMmoins[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + cptNouvellesMailles[TETRA4] - 1);
GMplus[PYRAM5].push_back(MAILLAGE1->EFFECTIFS_TYPES[PYRAM5] + cptNouvellesMailles[PYRAM5] - 1);
}
}
else if (VN[1] != -1 && VN[3] != -1)
{
// Le sommet du nouveau T4 est le noeud 2 du T4 d'origine
// cout << "cas 2.13" << endl;
newCNX[TETRA4].push_back(VN[1]);
newCNX[TETRA4].push_back(ng3);
newCNX[TETRA4].push_back(VN[3]);
newCNX[TETRA4].push_back(ng2);
cptNouvellesMailles[TETRA4]++;
newCNX[PYRAM5].push_back(ng0);
newCNX[PYRAM5].push_back(ng1);
newCNX[PYRAM5].push_back(VN[3]);
newCNX[PYRAM5].push_back(VN[1]);
newCNX[PYRAM5].push_back(ng3);
cptNouvellesMailles[PYRAM5]++;
if (POSN[ng2 - 1] == 1)
{
GMplus[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + cptNouvellesMailles[TETRA4] - 1);
GMmoins[PYRAM5].push_back(MAILLAGE1->EFFECTIFS_TYPES[PYRAM5] + cptNouvellesMailles[PYRAM5] - 1);
}
else
{
GMmoins[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + cptNouvellesMailles[TETRA4] - 1);
GMplus[PYRAM5].push_back(MAILLAGE1->EFFECTIFS_TYPES[PYRAM5] + cptNouvellesMailles[PYRAM5] - 1);
}
}
else if (VN[1] != -1 && VN[4] != -1)
ERREUR("Case 2/14 excluded");
else if (VN[1] != -1 && VN[5] != -1)
{
// Le sommet du nouveau T4 est le noeud 2 du T4 d'origine
// cout << "cas 2.15" << endl;
newCNX[TETRA4].push_back(ng1);
newCNX[TETRA4].push_back(ng2);
newCNX[TETRA4].push_back(VN[1]);
newCNX[TETRA4].push_back(VN[5]);
cptNouvellesMailles[TETRA4]++;
newCNX[PYRAM5].push_back(VN[1]);
newCNX[PYRAM5].push_back(VN[5]);
newCNX[PYRAM5].push_back(ng3);
newCNX[PYRAM5].push_back(ng0);
newCNX[PYRAM5].push_back(ng1);
cptNouvellesMailles[PYRAM5]++;
if (POSN[ng2 - 1] == 1)
{
GMplus[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + cptNouvellesMailles[TETRA4] - 1);
GMmoins[PYRAM5].push_back(MAILLAGE1->EFFECTIFS_TYPES[PYRAM5] + cptNouvellesMailles[PYRAM5] - 1);
}
else
{
GMmoins[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + cptNouvellesMailles[TETRA4] - 1);
GMplus[PYRAM5].push_back(MAILLAGE1->EFFECTIFS_TYPES[PYRAM5] + cptNouvellesMailles[PYRAM5] - 1);
}
}
else if (VN[2] != -1 && VN[3] != -1)
ERREUR("Case 2/23 excluded");
else if (VN[2] != -1 && VN[4] != -1)
{
// Le sommet du nouveau T4 est le noeud 3 du T4 d'origine
// cout << "cas 2.24" << endl;
newCNX[TETRA4].push_back(VN[2]);
newCNX[TETRA4].push_back(VN[4]);
newCNX[TETRA4].push_back(ng2);
newCNX[TETRA4].push_back(ng3);
cptNouvellesMailles[TETRA4]++;
newCNX[PYRAM5].push_back(ng0);
newCNX[PYRAM5].push_back(VN[2]);
newCNX[PYRAM5].push_back(VN[4]);
newCNX[PYRAM5].push_back(ng1);
newCNX[PYRAM5].push_back(ng2);
cptNouvellesMailles[PYRAM5]++;
if (POSN[ng3 - 1] == 1)
{
GMplus[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + cptNouvellesMailles[TETRA4] - 1);
GMmoins[PYRAM5].push_back(MAILLAGE1->EFFECTIFS_TYPES[PYRAM5] + cptNouvellesMailles[PYRAM5] - 1);
}
else
{
GMmoins[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + cptNouvellesMailles[TETRA4] - 1);
GMplus[PYRAM5].push_back(MAILLAGE1->EFFECTIFS_TYPES[PYRAM5] + cptNouvellesMailles[PYRAM5] - 1);
}
}
else if (VN[2] != -1 && VN[5] != -1)
{
// Le sommet du nouveau T4 est le noeud 3 du T4 d'origine
// cout << "cas 2.25" << endl;
newCNX[TETRA4].push_back(ng1);
newCNX[TETRA4].push_back(VN[5]);
newCNX[TETRA4].push_back(VN[2]);
newCNX[TETRA4].push_back(ng3);
cptNouvellesMailles[TETRA4]++;
newCNX[PYRAM5].push_back(ng0);
newCNX[PYRAM5].push_back(ng2);
newCNX[PYRAM5].push_back(VN[5]);
newCNX[PYRAM5].push_back(VN[2]);
newCNX[PYRAM5].push_back(ng1);
cptNouvellesMailles[PYRAM5]++;
if (POSN[ng3 - 1] == 1)
{
GMplus[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + cptNouvellesMailles[TETRA4] - 1);
GMmoins[PYRAM5].push_back(MAILLAGE1->EFFECTIFS_TYPES[PYRAM5] + cptNouvellesMailles[PYRAM5] - 1);
}
else
{
GMmoins[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + cptNouvellesMailles[TETRA4] - 1);
GMplus[PYRAM5].push_back(MAILLAGE1->EFFECTIFS_TYPES[PYRAM5] + cptNouvellesMailles[PYRAM5] - 1);
}
}
else if (VN[3] != -1 && VN[4] != -1)
{
// Le sommet du nouveau T4 est le noeud 1 du T4 d'origine
// cout << "cas 2.34" << endl;
newCNX[TETRA4].push_back(ng0);
newCNX[TETRA4].push_back(VN[3]);
newCNX[TETRA4].push_back(VN[4]);
newCNX[TETRA4].push_back(ng1);
cptNouvellesMailles[TETRA4]++;
newCNX[PYRAM5].push_back(VN[3]);
newCNX[PYRAM5].push_back(VN[4]);
newCNX[PYRAM5].push_back(ng3);
newCNX[PYRAM5].push_back(ng2);
newCNX[PYRAM5].push_back(ng0);
cptNouvellesMailles[PYRAM5]++;
if (POSN[ng1 - 1] == 1)
{
GMplus[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + cptNouvellesMailles[TETRA4] - 1);
GMmoins[PYRAM5].push_back(MAILLAGE1->EFFECTIFS_TYPES[PYRAM5] + cptNouvellesMailles[PYRAM5] - 1);
}
else
{
GMmoins[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + cptNouvellesMailles[TETRA4] - 1);
GMplus[PYRAM5].push_back(MAILLAGE1->EFFECTIFS_TYPES[PYRAM5] + cptNouvellesMailles[PYRAM5] - 1);
}
}
else if (VN[3] != -1 && VN[5] != -1)
{
// Le sommet du nouveau T4 est le noeud 2 du T4 d'origine
// cout << "cas 2.35" << endl;
newCNX[TETRA4].push_back(VN[3]);
newCNX[TETRA4].push_back(VN[5]);
newCNX[TETRA4].push_back(ng2);
newCNX[TETRA4].push_back(ng0);
cptNouvellesMailles[TETRA4]++;
newCNX[PYRAM5].push_back(VN[3]);
newCNX[PYRAM5].push_back(ng1);
newCNX[PYRAM5].push_back(ng3);
newCNX[PYRAM5].push_back(VN[5]);
newCNX[PYRAM5].push_back(ng0);
cptNouvellesMailles[PYRAM5]++;
if (POSN[ng2 - 1] == 1)
{
GMplus[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + cptNouvellesMailles[TETRA4] - 1);
GMmoins[PYRAM5].push_back(MAILLAGE1->EFFECTIFS_TYPES[PYRAM5] + cptNouvellesMailles[PYRAM5] - 1);
}
else
{
GMmoins[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + cptNouvellesMailles[TETRA4] - 1);
GMplus[PYRAM5].push_back(MAILLAGE1->EFFECTIFS_TYPES[PYRAM5] + cptNouvellesMailles[PYRAM5] - 1);
}
}
else if (VN[4] != -1 && VN[5] != -1)
{
// Le sommet du nouveau T4 est le noeud 3 du T4 d'origine
// cout << "cas 2.35" << endl;
newCNX[TETRA4].push_back(ng0);
newCNX[TETRA4].push_back(VN[4]);
newCNX[TETRA4].push_back(VN[5]);
newCNX[TETRA4].push_back(ng3);
cptNouvellesMailles[TETRA4]++;
newCNX[PYRAM5].push_back(ng1);
newCNX[PYRAM5].push_back(VN[4]);
newCNX[PYRAM5].push_back(VN[5]);
newCNX[PYRAM5].push_back(ng2);
newCNX[PYRAM5].push_back(ng0);
cptNouvellesMailles[PYRAM5]++;
if (POSN[ng3 - 1] == 1)
{
GMplus[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + cptNouvellesMailles[TETRA4] - 1);
GMmoins[PYRAM5].push_back(MAILLAGE1->EFFECTIFS_TYPES[PYRAM5] + cptNouvellesMailles[PYRAM5] - 1);
}
else
{
GMmoins[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + cptNouvellesMailles[TETRA4] - 1);
GMplus[PYRAM5].push_back(MAILLAGE1->EFFECTIFS_TYPES[PYRAM5] + cptNouvellesMailles[PYRAM5] - 1);
}
}
else
ERREUR(" Intersections configuration not taken into account (case cptPI=2) ");
// int ngT4 = MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + cptNouvellesMailles[TETRA4] - 1;
// int ngP5 = MAILLAGE1->EFFECTIFS_TYPES[PYRAM5] + cptNouvellesMailles[PYRAM5] - 1;
// cout << "La maille TETRA4 " << it4 << " produit les mailles TETRA4-" << ngT4 << " et PYRAM5-" << ngP5 << endl;
}
Trois points d'intersection ATTENTION: pour les PENTA6 on adopte la convention d'orientation SALOME :
N1 N2 N3 N4 N5 N6
où N1 N2 N3 sont les sommets du haut et N4 N5 N6 les sommets du bas (selon l'orientation donnée par le sens des triangles)
Definition at line 644 of file MeshCut_Cas.cxx.
References MESHCUT.Maillage.CNX, cptNouvellesMailles, cutTetras, MESHCUT.Maillage.EFFECTIFS_TYPES, ERREUR(), GMmoins, GMplus, MAILLAGE1, newCNX, PENTA6, POSN, and TETRA4.
Referenced by main().
{
cutTetras.push_back(it4);
// cout << "Cas 3 - it4="<<it4<<", VN = " << VN[0] << " " << VN[1] << " " << VN[2] << " " << VN[3] << " " << VN[4] << " " << VN[5] << " " << endl;
// Numéros des noeuds du TETRA4
int ng0 = MAILLAGE1->CNX[TETRA4][4 * it4 + 0];
int ng1 = MAILLAGE1->CNX[TETRA4][4 * it4 + 1];
int ng2 = MAILLAGE1->CNX[TETRA4][4 * it4 + 2];
int ng3 = MAILLAGE1->CNX[TETRA4][4 * it4 + 3];
if (VN[0] != -1 && VN[1] != -1 && VN[2] != -1)
{
// Le sommet du nouveau T4 est le noeud 0 du T4 d'origine
newCNX[TETRA4].push_back(ng0);
newCNX[TETRA4].push_back(VN[0]);
newCNX[TETRA4].push_back(VN[1]);
newCNX[TETRA4].push_back(VN[2]);
cptNouvellesMailles[TETRA4]++;
newCNX[PENTA6].push_back(ng1);
newCNX[PENTA6].push_back(ng3);
newCNX[PENTA6].push_back(ng2);
newCNX[PENTA6].push_back(VN[0]);
newCNX[PENTA6].push_back(VN[2]);
newCNX[PENTA6].push_back(VN[1]);
cptNouvellesMailles[PENTA6]++;
if (POSN[ng0 - 1] == 1)
{
GMplus[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + cptNouvellesMailles[TETRA4] - 1);
GMmoins[PENTA6].push_back(MAILLAGE1->EFFECTIFS_TYPES[PENTA6] + cptNouvellesMailles[PENTA6] - 1);
}
else
{
GMmoins[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + cptNouvellesMailles[TETRA4] - 1);
GMplus[PENTA6].push_back(MAILLAGE1->EFFECTIFS_TYPES[PENTA6] + cptNouvellesMailles[PENTA6] - 1);
}
}
else if (VN[0] != -1 && VN[3] != -1 && VN[4] != -1)
{
// Le sommet du nouveau T4 est le noeud 1 du T4 d'origine
//cout << "cas 3.2 (noeud sommet 1)" << endl;
newCNX[TETRA4].push_back(VN[0]);
newCNX[TETRA4].push_back(ng1);
newCNX[TETRA4].push_back(VN[3]);
newCNX[TETRA4].push_back(VN[4]);
cptNouvellesMailles[TETRA4]++;
newCNX[PENTA6].push_back(ng0);
newCNX[PENTA6].push_back(ng2);
newCNX[PENTA6].push_back(ng3);
newCNX[PENTA6].push_back(VN[0]);
newCNX[PENTA6].push_back(VN[3]);
newCNX[PENTA6].push_back(VN[4]);
cptNouvellesMailles[PENTA6]++;
if (POSN[ng1 - 1] == 1)
{
GMplus[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + cptNouvellesMailles[TETRA4] - 1);
GMmoins[PENTA6].push_back(MAILLAGE1->EFFECTIFS_TYPES[PENTA6] + cptNouvellesMailles[PENTA6] - 1);
}
else
{
GMmoins[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + cptNouvellesMailles[TETRA4] - 1);
GMplus[PENTA6].push_back(MAILLAGE1->EFFECTIFS_TYPES[PENTA6] + cptNouvellesMailles[PENTA6] - 1);
}
}
else if (VN[1] != -1 && VN[3] != -1 && VN[5] != -1)
{
// Le sommet du nouveau T4 est le noeud 2 du T4 d'origine
//cout << "cas 3.3 (noeud sommet 2)" << endl;
newCNX[TETRA4].push_back(VN[1]);
newCNX[TETRA4].push_back(VN[3]);
newCNX[TETRA4].push_back(ng2);
newCNX[TETRA4].push_back(VN[5]);
cptNouvellesMailles[TETRA4]++;
newCNX[PENTA6].push_back(ng0);
newCNX[PENTA6].push_back(ng3);
newCNX[PENTA6].push_back(ng1);
newCNX[PENTA6].push_back(VN[1]);
newCNX[PENTA6].push_back(VN[5]);
newCNX[PENTA6].push_back(VN[3]);
cptNouvellesMailles[PENTA6]++;
if (POSN[ng2 - 1] == 1)
{
GMplus[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + cptNouvellesMailles[TETRA4] - 1);
GMmoins[PENTA6].push_back(MAILLAGE1->EFFECTIFS_TYPES[PENTA6] + cptNouvellesMailles[PENTA6] - 1);
}
else
{
GMmoins[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + cptNouvellesMailles[TETRA4] - 1);
GMplus[PENTA6].push_back(MAILLAGE1->EFFECTIFS_TYPES[PENTA6] + cptNouvellesMailles[PENTA6] - 1);
}
}
else if (VN[2] != -1 && VN[4] != -1 && VN[5] != -1)
{
// Le sommet du nouveau T4 est le noeud 3 du T4 d'origine
newCNX[TETRA4].push_back(VN[2]);
newCNX[TETRA4].push_back(VN[4]);
newCNX[TETRA4].push_back(VN[5]);
newCNX[TETRA4].push_back(ng3);
cptNouvellesMailles[TETRA4]++;
newCNX[PENTA6].push_back(ng0);
newCNX[PENTA6].push_back(ng1);
newCNX[PENTA6].push_back(ng2);
newCNX[PENTA6].push_back(VN[2]);
newCNX[PENTA6].push_back(VN[4]);
newCNX[PENTA6].push_back(VN[5]);
cptNouvellesMailles[PENTA6]++;
if (POSN[ng3 - 1] == 1)
{
GMplus[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + cptNouvellesMailles[TETRA4] - 1);
GMmoins[PENTA6].push_back(MAILLAGE1->EFFECTIFS_TYPES[PENTA6] + cptNouvellesMailles[PENTA6] - 1);
}
else
{
GMmoins[TETRA4].push_back(MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + cptNouvellesMailles[TETRA4] - 1);
GMplus[PENTA6].push_back(MAILLAGE1->EFFECTIFS_TYPES[PENTA6] + cptNouvellesMailles[PENTA6] - 1);
}
}
else
{
// cout << "Cas 3 - it4=" << it4 << ", VN = " << VN[0] << " " << VN[1] << " " << VN[2] << " " << VN[3] << " "
// << VN[4] << " " << VN[5] << " " << endl;
//
// int n0 = *(MAILLAGE1->CNX[TETRA4] + it4 * 4 + 0);
// float x0 = MAILLAGE1->XX[n0 - 1];
// float y0 = MAILLAGE1->YY[n0 - 1];
// float z0 = MAILLAGE1->ZZ[n0 - 1];
//
// int n1 = *(MAILLAGE1->CNX[TETRA4] + it4 * 4 + 1);
// float x1 = MAILLAGE1->XX[n1 - 1];
// float y1 = MAILLAGE1->YY[n1 - 1];
// float z1 = MAILLAGE1->ZZ[n1 - 1];
//
// int n2 = *(MAILLAGE1->CNX[TETRA4] + it4 * 4 + 2);
// float x2 = MAILLAGE1->XX[n2 - 1];
// float y2 = MAILLAGE1->YY[n2 - 1];
// float z2 = MAILLAGE1->ZZ[n2 - 1];
//
// int n3 = *(MAILLAGE1->CNX[TETRA4] + it4 * 4 + 3);
// float x3 = MAILLAGE1->XX[n3 - 1];
// float y3 = MAILLAGE1->YY[n3 - 1];
// float z3 = MAILLAGE1->ZZ[n3 - 1];
//
// cout << x0 << " " << y0 << " " << z0 << " " << endl;
// cout << x1 << " " << y1 << " " << z1 << " " << endl;
// cout << x2 << " " << y2 << " " << z2 << " " << endl;
// cout << x3 << " " << y3 << " " << z3 << " " << endl;
ERREUR(" Intersections configuration not taken into account (case cptPI=3) ");
}
// int ngT4 = MAILLAGE1->EFFECTIFS_TYPES[TETRA4] + cptNouvellesMailles[TETRA4] - 1;
// int ngP6 = MAILLAGE1->EFFECTIFS_TYPES[PENTA6] + cptNouvellesMailles[PENTA6] - 1;
// cout << "La maille TETRA4 " << it4 << " produit les mailles TETRA4-" << ngT4 << " et PENTA6-" << ngP6 << endl;
}
Quatre points d'intersection.
ATTENTION: pour les PENTA6 on adopte la convention d'orientation SALOME
N1 N2 N3 N4 N5 N6
où N1 N2 N3 sont les sommets du haut et N4 N5 N6 les sommets du bas (selon l'orientation donnée par le sens des triangles)
Definition at line 823 of file MeshCut_Cas.cxx.
References MESHCUT.Maillage.CNX, cptNouvellesMailles, cutTetras, MESHCUT.Maillage.EFFECTIFS_TYPES, ERREUR(), GMmoins, GMplus, SMESH_test.i1, SMESH_test.i2, MAILLAGE1, newCNX, PENTA6, POSN, and TETRA4.
Referenced by main().
{
cutTetras.push_back(it4);
// cout << "Cas 4 - it4=" << it4 << ", VN = " << VN[0] << " " << VN[1] << " " << VN[2] << " " << VN[3] << " " << VN[4]
// << " " << VN[5] << " " << endl;
// Numéros des noeuds du TETRA4
int ng0 = MAILLAGE1->CNX[TETRA4][4 * it4 + 0];
int ng1 = MAILLAGE1->CNX[TETRA4][4 * it4 + 1];
int ng2 = MAILLAGE1->CNX[TETRA4][4 * it4 + 2];
int ng3 = MAILLAGE1->CNX[TETRA4][4 * it4 + 3];
int i1, i2; // Numéros locaux dans le type des mailles créées
if (VN[0] == -1 && VN[5] == -1)
{
// Les deux arêtes opposées sont [0,1] et [2,3]
newCNX[PENTA6].push_back(ng0);
newCNX[PENTA6].push_back(VN[1]);
newCNX[PENTA6].push_back(VN[2]);
newCNX[PENTA6].push_back(ng1);
newCNX[PENTA6].push_back(VN[3]);
newCNX[PENTA6].push_back(VN[4]);
cptNouvellesMailles[PENTA6]++;
i1 = cptNouvellesMailles[PENTA6] - 1;
newCNX[PENTA6].push_back(ng3);
newCNX[PENTA6].push_back(VN[4]);
newCNX[PENTA6].push_back(VN[2]);
newCNX[PENTA6].push_back(ng2);
newCNX[PENTA6].push_back(VN[3]);
newCNX[PENTA6].push_back(VN[1]);
cptNouvellesMailles[PENTA6]++;
i2 = cptNouvellesMailles[PENTA6] - 1;
if (POSN[ng0 - 1] == 1)
{
GMplus[PENTA6].push_back(MAILLAGE1->EFFECTIFS_TYPES[PENTA6] + i1);
GMmoins[PENTA6].push_back(MAILLAGE1->EFFECTIFS_TYPES[PENTA6] + i2);
}
else
{
GMplus[PENTA6].push_back(MAILLAGE1->EFFECTIFS_TYPES[PENTA6] + i2);
GMmoins[PENTA6].push_back(MAILLAGE1->EFFECTIFS_TYPES[PENTA6] + i1);
}
} // if ( VN[0]==-1 && VN[5]==-1 )
else if (VN[1] == -1 && VN[4] == -1)
{
// Les deux arêtes opposées sont [0,2] et [1,3]
newCNX[PENTA6].push_back(ng2);
newCNX[PENTA6].push_back(VN[3]);
newCNX[PENTA6].push_back(VN[5]);
newCNX[PENTA6].push_back(ng0);
newCNX[PENTA6].push_back(VN[0]);
newCNX[PENTA6].push_back(VN[2]);
cptNouvellesMailles[PENTA6]++;
i1 = cptNouvellesMailles[PENTA6] - 1;
newCNX[PENTA6].push_back(ng1);
newCNX[PENTA6].push_back(VN[3]);
newCNX[PENTA6].push_back(VN[0]);
newCNX[PENTA6].push_back(ng3);
newCNX[PENTA6].push_back(VN[5]);
newCNX[PENTA6].push_back(VN[2]);
cptNouvellesMailles[PENTA6]++;
i2 = cptNouvellesMailles[PENTA6] - 1;
if (POSN[ng0 - 1] == 1)
{
GMplus[PENTA6].push_back(MAILLAGE1->EFFECTIFS_TYPES[PENTA6] + i1);
GMmoins[PENTA6].push_back(MAILLAGE1->EFFECTIFS_TYPES[PENTA6] + i2);
}
else
{
GMplus[PENTA6].push_back(MAILLAGE1->EFFECTIFS_TYPES[PENTA6] + i2);
GMmoins[PENTA6].push_back(MAILLAGE1->EFFECTIFS_TYPES[PENTA6] + i1);
}
}
else if (VN[2] == -1 && VN[3] == -1)
{
// Les deux arêtes opposées sont [0,3] et [1,2]
newCNX[PENTA6].push_back(ng0);
newCNX[PENTA6].push_back(VN[0]);
newCNX[PENTA6].push_back(VN[1]);
newCNX[PENTA6].push_back(ng3);
newCNX[PENTA6].push_back(VN[4]);
newCNX[PENTA6].push_back(VN[5]);
cptNouvellesMailles[PENTA6]++;
i1 = cptNouvellesMailles[PENTA6] - 1;
newCNX[PENTA6].push_back(ng2);
newCNX[PENTA6].push_back(VN[5]);
newCNX[PENTA6].push_back(VN[1]);
newCNX[PENTA6].push_back(ng1);
newCNX[PENTA6].push_back(VN[4]);
newCNX[PENTA6].push_back(VN[0]);
cptNouvellesMailles[PENTA6]++;
i2 = cptNouvellesMailles[PENTA6] - 1;
if (POSN[ng0 - 1] == 1)
{
GMplus[PENTA6].push_back(MAILLAGE1->EFFECTIFS_TYPES[PENTA6] + i1);
GMmoins[PENTA6].push_back(MAILLAGE1->EFFECTIFS_TYPES[PENTA6] + i2);
}
else
{
GMplus[PENTA6].push_back(MAILLAGE1->EFFECTIFS_TYPES[PENTA6] + i2);
GMmoins[PENTA6].push_back(MAILLAGE1->EFFECTIFS_TYPES[PENTA6] + i1);
}
}
else
ERREUR(" Intersection configuration not taken into account (case cptPI=4) ");
// int nl1 = MAILLAGE1->EFFECTIFS_TYPES[PENTA6] + i1;
// int nl2 = MAILLAGE1->EFFECTIFS_TYPES[PENTA6] + i2;
// cout << "La maille TETRA4 " << it4 << " produit les mailles PENTA6-" << nl1 << " et PENTA6-" << nl2 << endl;
}
| void MESHCUT::champType | ( | std::string | type, |
| med_entity_type | MEM, | ||
| med_geometry_type | MGE, | ||
| med_idt | fid, | ||
| med_idt | fidout, | ||
| char * | maa, | ||
| char * | nomChamp, | ||
| char * | nomChampMoy, | ||
| med_field_type | typeChamp, | ||
| char * | compChamp, | ||
| char * | unitChamp, | ||
| med_int | nCompChamp, | ||
| std::map< std::string, int > | REFGAUSS, | ||
| int | ichamp | ||
| ) |
Definition at line 824 of file MeshCut_Utils.cxx.
References debug, ERREUR(), ex13_hole1partial.local(), and MGE2string().
{
bool debug = true;
int ipt, nmailles, ngauss, imaille, igauss, icomp;
// int ival, ngpdt;
med_int nval, numdt, numo, nPasTemps;
char dtunit[MED_SNAME_SIZE + 1] = "";
char locname[MED_NAME_SIZE + 1] = "";
char nomprofil[MED_NAME_SIZE + 1] = "";
med_float dt = 0.0;
med_float *valr = NULL;
med_float *valr2 = NULL;
med_bool local;
// med_int nbrefmaa;
med_field_type fieldType;
if (MEDfieldInfo(fid, ichamp, nomChamp, maa, &local, &fieldType, compChamp, unitChamp, dtunit, &nPasTemps) < 0)
ERREUR("Error MEDfieldInfo");
cout << type << " : " << (int) nPasTemps << " timestep " << endl;
for (ipt = 1; ipt <= nPasTemps; ipt++)
{
//for (ipt=1; ipt<=min(nPasTemps,1); ipt++) {
if (debug)
cout << endl;
if (debug)
cout << "************************************************************" << endl;
if (debug)
cout << " FIELD " << ichamp << endl;
if (debug)
cout << " " << nomChamp << endl;
if (debug)
cout << " " << type << " --- Timestep " << ipt << endl;
if (debug)
cout << "************************************************************" << endl;
if (debug)
cout << endl;
if (MEDfieldComputingStepInfo(fid, nomChamp, ipt, &numdt, &numo, &dt) < 0)
{
cout << endl;
cout << endl << "####################################################################" << endl;
cout << " ERROR MEDpasdetempsInfo " << endl;
cout << endl << "####################################################################" << endl;
cout << " Field: " << (string) nomChamp << endl;
cout << " Geometrie: " << MGE2string(MGE) << endl;
cout << " Timestep " << ipt << " ignored" << endl;
continue;
}
med_int profilesize, nintegrationpoint;
nval = MEDfieldnValueWithProfile(fid, nomChamp, numdt, numo, MEM, MGE, ipt, MED_COMPACT_PFLMODE, nomprofil,
&profilesize, locname, &nintegrationpoint);
if (debug)
cout << " Number of values in this timestep: " << (int) nval << endl;
if (typeChamp == MED_FLOAT64)
valr = (med_float*) calloc(nCompChamp * nval, sizeof(med_float));
else
ERREUR("Type of field not taken into account");
if (MEDfieldValueWithProfileRd(fid, maa, numdt, numo, MEM, MGE, MED_COMPACT_PFLMODE, nomprofil,
MED_FULL_INTERLACE, MED_ALL_CONSTITUENT, (unsigned char*) valr) < 0)
{
cout << endl;
cout << endl << "####################################################################" << endl;
cout << " ERROR MEDchampLire " << endl;
cout << endl << "####################################################################" << endl;
cout << endl;
cout << " Field: " << (string) nomChamp << endl;
cout << " Geometry: " << MGE2string(MGE) << endl;
cout << " Timestep " << ipt << " ignored" << endl;
cout << endl << endl;
continue;
}
if (debug)
cout << " profile = " << (string) nomprofil << endl;
// Localisation du champ aux points de Gauss
if (debug)
cout << " locname = " << (string) locname << endl;
if (REFGAUSS[(string) locname])
{
ngauss = REFGAUSS[(string) locname];
if (debug)
cout << " " << ngauss << " Gauss points by element)" << endl;
}
else
ngauss = 1;
nmailles = nval / ngauss;
if (debug)
cout << " Nbre de mailles: " << nmailles << endl;
if (debug)
{
cout << endl << " Liste des valeurs du champ brut aux 3 premiers éléments:" << endl;
for (imaille = 0; imaille < min(nmailles, 3); imaille++)
{
cout << " Maille " << imaille << endl;
for (igauss = 0; igauss < ngauss; igauss++)
{
cout << " PG " << igauss << " : ";
for (icomp = 0; icomp < nCompChamp; icomp++)
cout << " " << *(valr + imaille * ngauss * nCompChamp + igauss * nCompChamp + icomp);
cout << endl;
}
cout << endl;
}
cout << endl;
}
if (ngauss > 1)
{
valr2 = (med_float*) calloc(nCompChamp * nmailles, sizeof(med_float));
if (debug)
cout << endl << " Moyenne sur les PG des mailles" << endl;
for (imaille = 0; imaille < nmailles; imaille++)
{
for (icomp = 0; icomp < nCompChamp; icomp++)
{
float valCompMaille = 0.0;
for (igauss = 0; igauss < ngauss; igauss++)
valCompMaille += *(valr + imaille * ngauss * nCompChamp + igauss * nCompChamp + icomp);
*(valr2 + imaille * nCompChamp + icomp) = valCompMaille / ngauss;
}
}
//cout << endl << "Nom champ moy = " << (string)nomChampMoy << endl;
//cout << endl << "Type champ = " << typeChamp << endl;
//cout << endl << "Comp champ = " << (string)compChamp << endl;
//cout << endl << "Unit champ = " << (string)unitChamp << endl;
//cout << endl << "N comp champ = " << nCompChamp << endl;
if (MEDfieldValueWithProfileWr(fidout, nomChampMoy, numdt, numo, dt, MEM, MGE, MED_COMPACT_PFLMODE,
nomprofil, MED_NO_LOCALIZATION, MED_FULL_INTERLACE, MED_ALL_CONSTITUENT,
(med_int) nmailles, (unsigned char*) valr2) < 0)
{
cout << endl;
cout << endl << "********************************************************************" << endl;
cout << "******************** ***********************" << endl;
cout << "******************** ERROR MEDchampEcr ***********************" << endl;
cout << "******************** ***********************" << endl;
cout << "********************************************************************" << endl;
cout << endl;
cout << " Champ: " << (string) nomChampMoy << endl;
cout << " Géométrie: " << MGE2string(MGE) << endl;
cout << " Pas de temps " << ipt << " ignoré" << endl;
cout << endl << endl;
continue;
}
if (debug)
cout << " Writing mean values in new field: OK " << endl;
// Restitution du champ moyenné
if (debug)
{
cout << endl << " Liste des valeurs du champ moyenné aux 3 premiers éléments:" << endl;
for (imaille = 0; imaille < min(nmailles, 3); imaille++)
{
cout << " Maille " << imaille << endl;
for (icomp = 0; icomp < nCompChamp; icomp++)
cout << " " << *(valr2 + imaille * nCompChamp + icomp);
cout << endl;
}
cout << endl;
}
}
free(valr);
free(valr2);
} // boucle sur les pas de temps
cout << endl;
}
| float MESHCUT::char2float | ( | const char * | ch | ) |
| int MESHCUT::chrono | ( | ) |
Definition at line 591 of file MeshCut_Utils.cxx.
Referenced by main().
{
return clock() / CLOCKS_PER_SEC;
}
| int MESHCUT::codeGMSH | ( | std::string | type | ) |
Definition at line 397 of file MeshCut_Utils.cxx.
References ERREUR().
{
if (type == (string) "POI1")
ERREUR("POI1 not taken into account by GMSH");
else if (type == (string) "SEG2")
return 1;
else if (type == (string) "SEG3")
return 8;
else if (type == (string) "TRIA3")
return 2;
else if (type == (string) "TRIA6")
return 9;
else if (type == (string) "QUAD4")
return 3;
else if (type == (string) "QUAD8")
return 16;
else if (type == (string) "QUAD9")
return 10;
else if (type == (string) "TETRA4")
return 4;
else if (type == (string) "TETRA10")
return 11;
else if (type == (string) "PYRAM5")
return 7;
else if (type == (string) "PENTA6")
return 6;
else if (type == (string) "PENTA15")
return 18;
else if (type == (string) "HEXA8")
return 5;
else if (type == (string) "HEXA20")
return 17;
else if (type == (string) "HEXA27")
return 12;
else
ERREUR("Type of elem not accepted (method codeGMSH)");
return 0;
}
| void MESHCUT::conversionCNX | ( | int * | CNXtm, |
| TYPE_MAILLE | tm, | ||
| int | N | ||
| ) |
Conversion HL-MED d'une table de connectivités.
Definition at line 1036 of file MeshCut_Utils.cxx.
References HEXA8, SMESH_test.i1, SMESH_test.i2, SMESH_test.i3, Nnoeuds(), PENTA6, PYRAM5, and TETRA4.
Referenced by MESHCUT.Maillage.acquisitionTYPE_inputMED(), and MESHCUT.Maillage.outputMED().
{
int n = Nnoeuds(tm);
if (tm == TETRA4)
{
for (int i = 0; i < N; i++)
{
int i1 = CNXtm[i * n + 1];
int i2 = CNXtm[i * n + 2];
CNXtm[i * n + 1] = i2;
CNXtm[i * n + 2] = i1;
}
}
else if (tm == PYRAM5)
{
for (int i = 0; i < N; i++)
{
int i1 = CNXtm[i * n + 1];
int i3 = CNXtm[i * n + 3];
CNXtm[i * n + 1] = i3;
CNXtm[i * n + 3] = i1;
}
}
else if (tm == PENTA6)
{
for (int i = 0; i < N; i++)
{
int i0 = CNXtm[i * n + 0];
int i1 = CNXtm[i * n + 1];
int i2 = CNXtm[i * n + 2];
int i3 = CNXtm[i * n + 3];
int i4 = CNXtm[i * n + 4];
int i5 = CNXtm[i * n + 5];
CNXtm[i * n + 0] = i3;
CNXtm[i * n + 1] = i4;
CNXtm[i * n + 2] = i5;
CNXtm[i * n + 3] = i0;
CNXtm[i * n + 4] = i1;
CNXtm[i * n + 5] = i2;
}
}
else if (tm == HEXA8)
{
for (int i = 0; i < N; i++)
{
int i0 = CNXtm[i * n + 0];
int i1 = CNXtm[i * n + 1];
int i2 = CNXtm[i * n + 2];
int i3 = CNXtm[i * n + 3];
int i4 = CNXtm[i * n + 4];
int i5 = CNXtm[i * n + 5];
int i6 = CNXtm[i * n + 6];
int i7 = CNXtm[i * n + 7];
CNXtm[i * n + 0] = i4;
CNXtm[i * n + 1] = i5;
CNXtm[i * n + 2] = i6;
CNXtm[i * n + 3] = i7;
CNXtm[i * n + 4] = i0;
CNXtm[i * n + 5] = i1;
CNXtm[i * n + 6] = i2;
CNXtm[i * n + 7] = i3;
}
}
}
| std::string MESHCUT::coordIndex_IFS | ( | TYPE_MAILLE | tm | ) |
Definition at line 780 of file MeshCut_Utils.cxx.
References HEXA20, HEXA8, PENTA15, PENTA6, PYRAM13, PYRAM5, QUAD4, QUAD8, SEG2, SEG3, TETRA10, TETRA4, TRIA3, and TRIA6.
{
if (tm == SEG2)
return (string) " ";
else if (tm == SEG3)
return (string) " "; // Idem SEG2
else if (tm == TRIA3)
return (string) " 0,1,2,0,-1, 0,2,1,0,-1 ";
else if (tm == TRIA6)
return (string) " 0,1,2,0,-1, 0,2,1,0,-1 ";
else if (tm == QUAD4)
return (string) " 0,1,2,3,0,-1, 0,3,2,1,0,-1 ";
else if (tm == QUAD8)
return (string) " 0,1,2,3,0,-1, 0,3,2,1,0,-1 ";
else if (tm == TETRA4)
return (string) " 0,1,2,0,-1, 0,2,1,0,-1, 0,3,1,0,-1, 0,1,3,0,-1, 1,3,2,1,-1, 1,2,3,1,-1, 0,2,3,0,-1, 0,3,2,0,-1 ";
else if (tm == TETRA10)
return (string) " 0,1,2,0,-1, 0,2,1,0,-1, 0,3,1,0,-1, 0,1,3,0,-1, 1,3,2,1,-1, 1,2,3,1,-1, 0,2,3,0,-1, 0,3,2,0,-1 ";
else if (tm == PYRAM5)
return (string) " 0,1,2,3,0,-1, 0,3,2,1,0,-1, 0,1,4,0,-1, 0,4,1,0,-1, 1,2,4,1,-1, 1,4,2,1,-1, 2,4,3,2,-1, 2,3,4,2,-1, 3,4,0,3,-1, 3,0,4,3,-1 ";
else if (tm == PYRAM13)
return (string) " 0,1,2,3,0,-1, 0,3,2,1,0,-1, 0,1,4,0,-1, 0,4,1,0,-1, 1,2,4,1,-1, 1,4,2,1,-1, 2,4,3,2,-1, 2,3,4,2,-1, 3,4,0,3,-1, 3,0,4,3,-1 ";
else if (tm == PENTA6)
return (string) " 0,1,2,0,-1, 0,2,1,0,-1, 3,4,5,3,-1, 3,5,4,3,-1, 0,1,4,3,0,-1, 0,3,4,1,0,-1, 1,4,5,2,1,-1, 1,2,5,4,1,-1, 0,3,5,2,0,-1, 0,2,5,3,0,-1 ";
else if (tm == PENTA15)
return (string) " 0,1,2,0,-1, 0,2,1,0,-1, 3,4,5,3,-1, 3,5,4,3,-1, 0,1,4,3,0,-1, 0,3,4,1,0,-1, 1,4,5,2,1,-1, 1,2,5,4,1,-1, 0,3,5,2,0,-1, 0,2,5,3,0,-1 ";
else if (tm == HEXA8)
return (string) " 0,1,2,3,0,-1, 0,3,2,1,0,-1, 1,5,6,2,1,-1, 1,2,6,5,1,-1, 5,4,7,6,5,-1, 5,6,7,4,5,-1, 4,0,3,7,4,-1, 4,7,3,0,4,-1, 0,4,5,1,0,-1, 0,1,5,4,0,-1, 3,7,6,2,3,-1, 3,2,6,7,3,-1 ";
else if (tm == HEXA20)
return (string) " 0,1,2,3,0,-1, 0,3,2,1,0,-1, 1,5,6,2,1,-1, 1,2,6,5,1,-1, 5,4,7,6,5,-1, 5,6,7,4,5,-1, 4,0,3,7,4,-1, 4,7,3,0,4,-1, 0,4,5,1,0,-1, 0,1,5,4,0,-1, 3,7,6,2,3,-1, 3,2,6,7,3,-1 ";
else
return (string) "";
}
| std::string MESHCUT::coordIndex_ILS | ( | TYPE_MAILLE | tm | ) |
Definition at line 746 of file MeshCut_Utils.cxx.
References HEXA20, HEXA8, PENTA15, PENTA6, PYRAM13, PYRAM5, QUAD4, QUAD8, SEG2, SEG3, TETRA10, TETRA4, TRIA3, and TRIA6.
{
if (tm == SEG2)
return (string) " 0,1 ";
else if (tm == SEG3)
return (string) " 0,1 "; // Idem SEG2
else if (tm == TRIA3)
return (string) " 0,1,2,0 ";
else if (tm == TRIA6)
return (string) " 0,1,2,0 ";
else if (tm == QUAD4)
return (string) " 0,1,2,3,0 ";
else if (tm == QUAD8)
return (string) " 0,1,2,3,0 ";
else if (tm == TETRA4)
return (string) " 0,1,2,0,-1, 0,3,-1, 1,3,-1, 2,3,-1 ";
else if (tm == TETRA10)
return (string) " 0,1,2,0,-1, 0,3,-1, 1,3,-1, 2,3,-1 ";
else if (tm == PYRAM5)
return (string) " 0,1,2,3,0,-1, 0,4,-1, 1,4,-1, 2,4,-1, 3,4,-1 ";
else if (tm == PYRAM13)
return (string) " 0,1,2,3,0,-1, 0,4,-1, 1,4,-1, 2,4,-1, 3,4,-1 ";
else if (tm == PENTA6)
return (string) " 0,1,2,0,-1, 3,4,5,3,-1, 0,3,-1, 1,4,-1, 2,5,-1 ";
else if (tm == PENTA15)
return (string) " 0,1,2,0,-1, 3,4,5,3,-1, 0,3,-1, 1,4,-1, 2,5,-1 ";
else if (tm == HEXA8)
return (string) " 0,1,2,3,0,-1, 4,5,6,7,4,-1, 0,4,-1, 1,5,-1, 2,6,-1, 3,7,-1 ";
else if (tm == HEXA20)
return (string) " 0,1,2,3,0,-1, 4,5,6,7,4,-1, 0,4,-1, 1,5,-1, 2,6,-1, 3,7,-1 ";
else
return (string) "";
}
| int MESHCUT::copieFichier | ( | std::string | source, |
| std::string | cible | ||
| ) |
Definition at line 515 of file MeshCut_Utils.cxx.
References string2char().
{
FILE *fsource, *fcible;
char buffer[512];
int NbLu;
if ((fsource = fopen(string2char(source), "rb")) == NULL)
return -1;
if ((fcible = fopen(string2char(cible), "wb")) == NULL)
{
fclose(fsource);
return -2;
}
while ((NbLu = fread(buffer, 1, 512, fsource)) != 0)
fwrite(buffer, 1, NbLu, fcible);
fclose(fcible);
fclose(fsource);
return 0;
}
| float MESHCUT::distance2 | ( | float | x1, |
| float | y1, | ||
| float | z1, | ||
| float | x2, | ||
| float | y2, | ||
| float | z2 | ||
| ) |
Definition at line 1028 of file MeshCut_Utils.cxx.
References ex29_refine.x1, SMESH_fixation.y1, and SMESH_fixation.z1.
| float MESHCUT::distanceNoeudPlan | ( | float | point[3] | ) |
Definition at line 48 of file MeshCut_Fonctions.cxx.
Referenced by distanceNoeudPlan(), intersectionSegmentPlan(), main(), and positionNoeudPlan().
| float MESHCUT::distanceNoeudPlan | ( | int | ng | ) |
Definition at line 53 of file MeshCut_Fonctions.cxx.
References distanceNoeudPlan(), MAILLAGE1, MESHCUT.Maillage.XX, MESHCUT.Maillage.YY, and MESHCUT.Maillage.ZZ.
| float MESHCUT::dObservateur | ( | float | a, |
| float | b, | ||
| float | c | ||
| ) |
Distance à laquelle doit se tenir l'observateur sur un axe pour voir sous 90° un objet centré de dimensions a et b selon les deux autres axes.
Si on ne tient pas compte de la dimension de l'objet selon l'axe choisi, la formule d_obs=max(a,b)/2 donne la cote qui permet de voir l'objet plat dans un angle de 90°. A cela il faut ajouter la dimension de l'objet selon l'axe d'observation = c.
| a | dimensions de l'objet selon un des axes normal à l'axe d'observation |
| b | dimensions de l'objet selon l'autre axe normal à l'axe d'observation |
| c | est la dimension de l'objet selon l'axe d'observation |
Definition at line 510 of file MeshCut_Utils.cxx.
{
return (max(a, b) / 2.0 + c);
}
| std::string MESHCUT::entierSur10_d | ( | int | i | ) |
Definition at line 156 of file MeshCut_Utils.cxx.
References ERREUR(), and int2string().
{
if (i > 999999999)
ERREUR("trying to write a number superior to 999999999 on more than 10 chars");
if (i < 10)
return (string) " " + int2string(i);
else if (i < 100)
return (string) " " + int2string(i);
else if (i < 1000)
return (string) " " + int2string(i);
else if (i < 10000)
return (string) " " + int2string(i);
else if (i < 100000)
return (string) " " + int2string(i);
else if (i < 1000000)
return (string) " " + int2string(i);
else if (i < 10000000)
return (string) " " + int2string(i);
else if (i < 100000000)
return (string) " " + int2string(i);
else if (i < 1000000000)
return (string) " " + int2string(i);
else
return int2string(i);
}
| std::string MESHCUT::entierSur10_g | ( | int | i | ) |
Definition at line 130 of file MeshCut_Utils.cxx.
References ERREUR(), and int2string().
{
if (i > 999999999)
ERREUR("trying to write a number superior to 999999999 on more than 10 chars");
if (i < 10)
return int2string(i) + (string) " ";
else if (i < 100)
return int2string(i) + (string) " ";
else if (i < 1000)
return int2string(i) + (string) " ";
else if (i < 10000)
return int2string(i) + (string) " ";
else if (i < 100000)
return int2string(i) + (string) " ";
else if (i < 1000000)
return int2string(i) + (string) " ";
else if (i < 10000000)
return int2string(i) + (string) " ";
else if (i < 100000000)
return int2string(i) + (string) " ";
else if (i < 1000000000)
return int2string(i) + (string) " ";
else
return int2string(i);
}
| void MESHCUT::ERREUR | ( | const char * | msg | ) |
Definition at line 45 of file MeshCut_Utils.cxx.
Referenced by MESHCUT.Maillage.acquisitionTYPE_inputMED(), aptrte(), ASTER8(), cas1(), cas2(), cas3(), cas4(), champType(), codeGMSH(), MESHCUT.Maillage.eliminationMailles(), entierSur10_d(), entierSur10_g(), MESHCUT.Maillage.inputMED(), InstanceMGE(), intersectionSegmentPlan(), main(), MGE2string(), MESHCUT.Maillage.NLOCAL(), Nnoeuds(), NnoeudsGeom(), MESHCUT.Maillage.outputMED(), string2TM(), TM2string(), typeEnsight(), and typeMaille().
{
cout << endl << "====== ERROR ====== " << msg << endl << endl;
exit(-1);
}
| bool MESHCUT::estUnTypeMaille | ( | std::string | S | ) |
Definition at line 33 of file MeshCut_Utils.cxx.
{
if (S == (string) "POI1" || S == (string) "SEG2" || S == (string) "SEG3" || S == (string) "TRIA3" || S
== (string) "TRIA6" || S == (string) "QUAD4" || S == (string) "QUAD8" || S == (string) "QUAD9" || S
== (string) "TETRA4" || S == (string) "TETRA10" || S == (string) "PYRAM5" || S == (string) "PYRAM13" || S
== (string) "PENTA6" || S == (string) "PENTA15" || S == (string) "HEXA8" || S == (string) "HEXA20" || S
== (string) "HEXA27")
return true;
else
return false;
}
| std::string MESHCUT::float2string | ( | float | f | ) |
Definition at line 77 of file MeshCut_Utils.cxx.
{
stringstream buf;
buf << fixed << f;
string s = buf.str();
return s;
}
| std::string MESHCUT::floatEnsight | ( | float | x | ) |
Definition at line 436 of file MeshCut_Utils.cxx.
| med_geometry_type MESHCUT::InstanceMGE | ( | TYPE_MAILLE | TYPE | ) |
Definition at line 534 of file MeshCut_Utils.cxx.
References ERREUR(), HEXA20, HEXA8, PENTA15, PENTA6, POI1, PYRAM13, PYRAM5, QUAD4, QUAD8, SEG2, SEG3, TETRA10, TETRA4, TRIA3, and TRIA6.
Referenced by MESHCUT.Maillage.acquisitionTYPE_inputMED(), MESHCUT.Maillage.inputMED(), and MESHCUT.Maillage.outputMED().
{
med_geometry_type typeBanaliseMED;
switch (TYPE)
{
case POI1:
typeBanaliseMED = MED_POINT1;
break; // Attention, piège !
case SEG2:
typeBanaliseMED = MED_SEG2;
break;
case SEG3:
typeBanaliseMED = MED_SEG3;
break;
case TRIA3:
typeBanaliseMED = MED_TRIA3;
break;
case TRIA6:
typeBanaliseMED = MED_TRIA6;
break;
case QUAD4:
typeBanaliseMED = MED_QUAD4;
break;
case QUAD8:
typeBanaliseMED = MED_QUAD8;
break;
case TETRA4:
typeBanaliseMED = MED_TETRA4;
break;
case TETRA10:
typeBanaliseMED = MED_TETRA10;
break;
case PYRAM5:
typeBanaliseMED = MED_PYRA5;
break; // Attention, piège !
case PYRAM13:
typeBanaliseMED = MED_PYRA13;
break; // Attention, piège !
case PENTA6:
typeBanaliseMED = MED_PENTA6;
break;
case PENTA15:
typeBanaliseMED = MED_PENTA15;
break;
case HEXA8:
typeBanaliseMED = MED_HEXA8;
break;
case HEXA20:
typeBanaliseMED = MED_HEXA20;
break;
default:
ERREUR("Method InstanceMGE, unknown type ");
}
return typeBanaliseMED;
}
| std::string MESHCUT::int2string | ( | int | k | ) |
Definition at line 65 of file MeshCut_Utils.cxx.
Referenced by entierSur10_d(), entierSur10_g(), intersectionSegmentPlan(), nomMaille(), and MESHCUT.Maillage.outputMED().
{
std::stringstream oss;
oss << k;
return oss.str(); // oss.seekp (ios_base::beg);
}
Equation paramétrique de la droite AB: OP = OA + lambda AB.
Fonction caractéristique du plan : PI(X,Y,Z) = nx X + ny Y + nz Z + d
Pour un point P de la droite: PI(OP) = PI(OA) + lambda n.AB avec n=(nx,ny,nz), L'intersection AB/plan est donnée par le point P tel que PI(OP)=0.
Il lui correspond la coordonnée lambda = - PI(OA) / n.AB.
Cette intersection est dans le segment si lambda est dans [0,1]
Definition at line 84 of file MeshCut_Fonctions.cxx.
References MESHCUT.Maillage.CNX, debug, distanceNoeudPlan(), ERREUR(), indexNouveauxNoeuds, int2string(), intersections, MAILLAGE1, newXX, newYY, newZZ, normale, TETRA4, MESHCUT.Maillage.XX, MESHCUT.Maillage.YY, and MESHCUT.Maillage.ZZ.
Referenced by main().
{
int ngA, ngB; // Numéros des noeuds extrémités AB
float lambda, ps; //, ab; // ab = longueur AB
float A[3], B[3];
// Détermination des ng des extrémités de l'arête passée en argument na
int * offset = MAILLAGE1->CNX[TETRA4] + 4 * it4;
if (na == 0)
{
ngA = *(offset + 0);
ngB = *(offset + 1);
}
else if (na == 1)
{
ngA = *(offset + 0);
ngB = *(offset + 2);
}
else if (na == 2)
{
ngA = *(offset + 0);
ngB = *(offset + 3);
}
else if (na == 3)
{
ngA = *(offset + 1);
ngB = *(offset + 2);
}
else if (na == 4)
{
ngA = *(offset + 1);
ngB = *(offset + 3);
}
else if (na == 5)
{
ngA = *(offset + 2);
ngB = *(offset + 3);
}
else
ERREUR("Edge number superior to 6");
string cle1 = int2string(ngA) + (string) "_" + int2string(ngB);
string cle2 = int2string(ngB) + (string) "_" + int2string(ngA);
if (intersections[cle1])
return intersections[cle1];
else
{
A[0] = MAILLAGE1->XX[ngA - 1];
A[1] = MAILLAGE1->YY[ngA - 1];
A[2] = MAILLAGE1->ZZ[ngA - 1];
B[0] = MAILLAGE1->XX[ngB - 1];
B[1] = MAILLAGE1->YY[ngB - 1];
B[2] = MAILLAGE1->ZZ[ngB - 1];
// // Longueur AB
// float lx = B[0] - A[0], ly = B[1] - A[1], lz = B[2] - A[2];
// ab = sqrt(lx * lx + ly * ly + lz * lz);
// // La longueur maximale théorique est 2 epsilon
// if (ab < 2 * epsilon * 0.9)
// ERREUR("Arête de longueur inférieure au minimum théorique 2 epsilon");
// Calcul du produit scalaire AB.n
ps = 0.0;
for (int k = 0; k < 3; k++)
ps += (B[k] - A[k]) * normale[k];
// ps = ps / ab ;
if (debug)
{
cout << "Routine ISP : arête " << na << " - ngA=" << ngA << " ngB=" << ngB << endl;
cout << "A : " << A[0] << ' ' << A[1] << ' ' << A[2] << endl;
cout << "B : " << B[0] << ' ' << B[1] << ' ' << B[2] << endl;
cout << "N : " << normale[0] << ' ' << normale[1] << ' ' << normale[2] << endl;
}
if (fabs(ps) == 0.0)
ERREUR("Error on null scalar product");
// PS non nul: l'intersection AB/plan existe
lambda = -distanceNoeudPlan(A) / ps;
float inter[3];
for (int k = 0; k < 3; k++)
inter[k] = A[k] + lambda * (B[k] - A[k]);
newXX.push_back(inter[0]);
newYY.push_back(inter[1]);
newZZ.push_back(inter[2]);
indexNouveauxNoeuds++;
intersections[cle1] = indexNouveauxNoeuds;
intersections[cle2] = indexNouveauxNoeuds;
// cout << "création noeud " << indexNouveauxNoeuds << " : " << inter[0] << " " << inter[1] << " " << inter[2]
// << endl;
if (debug)
cout << " sortie nouveau noeud, lambda = " << lambda << " , noeud = " << indexNouveauxNoeuds << endl;
return indexNouveauxNoeuds;
}
}
Definition at line 33 of file MeshCut_Fonctions.cxx.
References ex05_hole1build.dx, ex05_hole1build.dz, MAILLAGE1, MESHCUT.Maillage.XX, MESHCUT.Maillage.YY, and MESHCUT.Maillage.ZZ.
Referenced by main().
{
float A[3], B[3];
A[0] = MAILLAGE1->XX[ngA - 1];
A[1] = MAILLAGE1->YY[ngA - 1];
A[2] = MAILLAGE1->ZZ[ngA - 1];
B[0] = MAILLAGE1->XX[ngB - 1];
B[1] = MAILLAGE1->YY[ngB - 1];
B[2] = MAILLAGE1->ZZ[ngB - 1];
float dx = B[0] - A[0];
float dy = B[1] - A[1];
float dz = B[2] - A[2];
return sqrt(dx * dx + dy * dy + dz * dz);
}
| std::string MESHCUT::MGE2string | ( | med_geometry_type | MGE | ) |
Definition at line 633 of file MeshCut_Utils.cxx.
References ERREUR().
Referenced by champType().
{
if (MGE == MED_NONE)
return (string) "NOEUD";
else if (MGE == MED_POINT1)
return (string) "POI1";
else if (MGE == MED_SEG2)
return (string) "SEG2";
else if (MGE == MED_SEG3)
return (string) "SEG3";
else if (MGE == MED_TRIA3)
return (string) "TRIA3";
else if (MGE == MED_TRIA6)
return (string) "TRIA6";
else if (MGE == MED_QUAD4)
return (string) "QUAD4";
else if (MGE == MED_QUAD8)
return (string) "QUAD8";
else if (MGE == MED_TETRA4)
return (string) "TETRA4";
else if (MGE == MED_TETRA10)
return (string) "TETRA10";
else if (MGE == MED_PYRA5)
return (string) "PYRAM5";
else if (MGE == MED_PYRA13)
return (string) "PYRAM13";
else if (MGE == MED_PENTA6)
return (string) "PENTA6";
else if (MGE == MED_PENTA15)
return (string) "PENTA15";
else if (MGE == MED_HEXA8)
return (string) "HEXA8";
else if (MGE == MED_HEXA20)
return (string) "HEXA20";
else
ERREUR("ERROR method MGE2string, unknown type");
return (string) "NOEUD";
}
| int MESHCUT::Nnoeuds | ( | TYPE_MAILLE | type | ) |
Definition at line 223 of file MeshCut_Utils.cxx.
References ERREUR(), HEXA20, HEXA8, PENTA15, PENTA6, POI1, PYRAM13, PYRAM5, QUAD4, QUAD8, SEG2, SEG3, TETRA10, TETRA4, TRIA3, and TRIA6.
Referenced by MESHCUT.Maillage.acquisitionTYPE_inputMED(), MESHCUT.Maillage.afficheMailles(), conversionCNX(), MESHCUT.Maillage.eliminationMailles(), main(), and MESHCUT.Maillage.outputMED().
{
switch (type)
{
case POI1:
{
return 1;
break;
}
case SEG2:
{
return 2;
break;
}
case SEG3:
{
return 3;
break;
}
case TRIA3:
{
return 3;
break;
}
case TRIA6:
{
return 6;
break;
}
case QUAD4:
{
return 4;
break;
}
case QUAD8:
{
return 8;
break;
}
//case QUAD9: { return 9; break; }
case TETRA4:
{
return 4;
break;
}
case TETRA10:
{
return 10;
break;
}
case PYRAM5:
{
return 5;
break;
}
case PYRAM13:
{
return 13;
break;
}
case PENTA6:
{
return 6;
break;
}
case PENTA15:
{
return 15;
break;
}
case HEXA8:
{
return 8;
break;
}
case HEXA20:
{
return 20;
break;
}
//case HEXA27: { return 27; break; }
default:
ERREUR("Type of elem not accepted (method Nnoeuds)");
}
return 0;
}
| int MESHCUT::NnoeudsGeom | ( | TYPE_MAILLE | type | ) |
Definition at line 310 of file MeshCut_Utils.cxx.
References ERREUR(), HEXA20, HEXA8, PENTA15, PENTA6, POI1, PYRAM13, PYRAM5, QUAD4, QUAD8, SEG2, SEG3, TETRA10, TETRA4, TRIA3, and TRIA6.
Referenced by MESHCUT.Maillage.distanceNoeudMaille(), MESHCUT.Maillage.G(), and MESHCUT.Maillage.noeudVoisin().
{
switch (type)
{
case POI1:
{
return 1;
break;
}
case SEG2:
{
return 2;
break;
}
case SEG3:
{
return 2;
break;
}
case TRIA3:
{
return 3;
break;
}
case TRIA6:
{
return 3;
break;
}
case QUAD4:
{
return 4;
break;
}
case QUAD8:
{
return 4;
break;
}
//case QUAD9: { return 9; break; }
case TETRA4:
{
return 4;
break;
}
case TETRA10:
{
return 4;
break;
}
case PYRAM5:
{
return 5;
break;
}
case PYRAM13:
{
return 5;
break;
}
case PENTA6:
{
return 6;
break;
}
case PENTA15:
{
return 6;
break;
}
case HEXA8:
{
return 8;
break;
}
case HEXA20:
{
return 8;
break;
}
//case HEXA27: { return 27; break; }
default:
ERREUR("Type of elem not accepted (method NnoeudsGeom)");
}
return 0;
}
| std::string MESHCUT::nomMaille | ( | TYPE_MAILLE | tm, |
| int | nl | ||
| ) |
Definition at line 1011 of file MeshCut_Utils.cxx.
References int2string(), and TM2string().
{
return (TM2string(tm) + (string) "_" + int2string(nl));
}
| int MESHCUT::numNoeudPointe | ( | std::string | b1, |
| std::string | b2, | ||
| std::string | b3 | ||
| ) |
Definition at line 103 of file MeshCut_Utils.cxx.
{
if (b1 == "1" && b2 == "1" && b3 == "2")
return 2;
else if (b1 == "1" && b2 == "2" && b3 == "1")
return 1;
else if (b1 == "1" && b2 == "2" && b3 == "2")
return 2;
else if (b1 == "2" && b2 == "1" && b3 == "1")
return 3;
else if (b1 == "2" && b2 == "1" && b3 == "2")
return 3;
else if (b1 == "2" && b2 == "2" && b3 == "1")
return 1;
else
return -1;
}
Definition at line 62 of file MeshCut_Fonctions.cxx.
References distanceNoeudPlan(), and epsilon.
{
if (distanceNoeudPlan(indiceNoeud + 1) > epsilon)
return 1;
else if (distanceNoeudPlan(indiceNoeud + 1) < -epsilon)
return -1;
else
return 0;
}
| std::string MESHCUT::SIGNE | ( | double | x | ) |
Definition at line 814 of file MeshCut_Utils.cxx.
| char * MESHCUT::string2char | ( | std::string | str | ) |
Definition at line 51 of file MeshCut_Utils.cxx.
References ex21_lamp.size.
Referenced by copieFichier(), MESHCUT.Maillage.inputMED(), and MESHCUT.Maillage.outputMED().
| TYPE_MAILLE MESHCUT::string2TM | ( | std::string | stm | ) |
Definition at line 709 of file MeshCut_Utils.cxx.
References ERREUR(), HEXA20, HEXA8, PENTA15, PENTA6, POI1, PYRAM13, PYRAM5, QUAD4, QUAD8, SEG2, SEG3, TETRA10, TETRA4, TRIA3, and TRIA6.
{
if (stm == (string) "POI1")
return POI1;
else if (stm == (string) "SEG2")
return SEG2;
else if (stm == (string) "SEG3")
return SEG3;
else if (stm == (string) "TRIA3")
return TRIA3;
else if (stm == (string) "TRIA6")
return TRIA6;
else if (stm == (string) "QUAD4")
return QUAD4;
else if (stm == (string) "QUAD8")
return QUAD8;
else if (stm == (string) "TETRA4")
return TETRA4;
else if (stm == (string) "TETRA10")
return TETRA10;
else if (stm == (string) "PYRAM5")
return PYRAM5;
else if (stm == (string) "PYRAM13")
return PYRAM13;
else if (stm == (string) "PENTA6")
return PENTA6;
else if (stm == (string) "PENTA15")
return PENTA15;
else if (stm == (string) "HEXA8")
return HEXA8;
else if (stm == (string) "HEXA20")
return HEXA20;
else
ERREUR("ERROR method string2TM, unknown type");
return POI1;
}
| std::string MESHCUT::strip | ( | std::string | S | ) |
Definition at line 121 of file MeshCut_Utils.cxx.
Referenced by MESHCUT.Maillage.inputMED().
{
if (S.empty())
return S;
int startIndex = S.find_first_not_of(" ");
int endIndex = S.find_last_not_of(" ");
return S.substr(startIndex, (endIndex - startIndex + 1));
}
| std::string MESHCUT::TM2string | ( | TYPE_MAILLE | MGE | ) |
Definition at line 672 of file MeshCut_Utils.cxx.
References ERREUR(), HEXA20, HEXA8, PENTA15, PENTA6, POI1, PYRAM13, PYRAM5, QUAD4, QUAD8, SEG2, SEG3, TETRA10, TETRA4, TRIA3, and TRIA6.
Referenced by MESHCUT.Maillage.afficheMailles(), MESHCUT.Maillage.listeMaillesGM(), nomMaille(), and MESHCUT.Maillage.outputMED().
{
if (MGE == POI1)
return (string) "POI1";
else if (MGE == SEG2)
return (string) "SEG2";
else if (MGE == SEG3)
return (string) "SEG3";
else if (MGE == TRIA3)
return (string) "TRIA3";
else if (MGE == TRIA6)
return (string) "TRIA6";
else if (MGE == QUAD4)
return (string) "QUAD4";
else if (MGE == QUAD8)
return (string) "QUAD8";
else if (MGE == TETRA4)
return (string) "TETRA4";
else if (MGE == TETRA10)
return (string) "TETRA10";
else if (MGE == PYRAM5)
return (string) "PYRAM5";
else if (MGE == PYRAM13)
return (string) "PYRAM13";
else if (MGE == PENTA6)
return (string) "PENTA6";
else if (MGE == PENTA15)
return (string) "PENTA15";
else if (MGE == HEXA8)
return (string) "HEXA8";
else if (MGE == HEXA20)
return (string) "HEXA20";
else
ERREUR("ERROR method TM2string, unknown type");
return (string) "POI1";
}
| bool MESHCUT::typeComplexe | ( | std::string | type | ) |
Definition at line 449 of file MeshCut_Utils.cxx.
{
if (type == (string) "SEG3")
return true;
else if (type == (string) "TRIA6")
return true;
else if (type == (string) "QUAD8")
return true;
else if (type == (string) "QUAD9")
return true;
else if (type == (string) "TETRA10")
return true;
else if (type == (string) "PYRAM13")
return true;
else if (type == (string) "PENTA15")
return true;
else if (type == (string) "HEXA20")
return true;
else if (type == (string) "HEXA27")
return true;
else
return false;
}
| std::string MESHCUT::typeEnsight | ( | std::string | type | ) |
Definition at line 182 of file MeshCut_Utils.cxx.
References ERREUR().
{
if (type == (string) "POI1")
return (string) "point";
else if (type == (string) "SEG2")
return (string) "bar2";
else if (type == (string) "SEG3")
return (string) "bar2";// ATTENTION, triche!
else if (type == (string) "TRIA3")
return (string) "tria3";
else if (type == (string) "TRIA6")
return (string) "tria3";// ATTENTION, triche!
else if (type == (string) "QUAD4")
return (string) "quad4";
else if (type == (string) "QUAD8")
return (string) "quad4"; // ATTENTION, triche!
else if (type == (string) "QUAD9")
ERREUR("Type QUAD9 not supported by Ensight");
else if (type == (string) "TETRA4")
return (string) "tetra4";
else if (type == (string) "TETRA10")
return (string) "tetra4"; // ATTENTION, triche!
else if (type == (string) "PYRAM5")
return (string) "pyramid5";
else if (type == (string) "PYRAM13")
return (string) "pyramid5"; // ATTENTION, triche!
else if (type == (string) "PENTA6")
return (string) "penta6";
else if (type == (string) "PENTA15")
return (string) "penta6"; // ATTENTION, triche!
else if (type == (string) "HEXA8")
return (string) "hexa8";
else if (type == (string) "HEXA20")
return (string) "hexa8"; // ATTENTION, triche!
else if (type == (string) "HEXA27")
ERREUR("Type HEXA27 not supported by Ensight");
else
ERREUR("Type of element not accepted (method \"typeEnsight\"");
return (string) "";
}
| TYPE_MAILLE MESHCUT::typeMaille | ( | std::string | type | ) |
Definition at line 596 of file MeshCut_Utils.cxx.
References ERREUR(), HEXA20, HEXA8, PENTA15, PENTA6, POI1, PYRAM13, PYRAM5, QUAD4, QUAD8, SEG2, SEG3, TETRA10, TETRA4, TRIA3, and TRIA6.
Referenced by MESHCUT.Maillage.acquisitionTYPE_inputMED().
{
if (type == (string) "POI1")
return POI1;
else if (type == (string) "SEG2")
return SEG2;
else if (type == (string) "SEG3")
return SEG3;
else if (type == (string) "TRIA3")
return TRIA3;
else if (type == (string) "TRIA6")
return TRIA6;
else if (type == (string) "QUAD4")
return QUAD4;
else if (type == (string) "QUAD8")
return QUAD8;
else if (type == (string) "TETRA4")
return TETRA4;
else if (type == (string) "TETRA10")
return TETRA10;
else if (type == (string) "PYRAM5")
return PYRAM5;
else if (type == (string) "PYRAM13")
return PYRAM13;
else if (type == (string) "PENTA6")
return PENTA6;
else if (type == (string) "PENTA15")
return PENTA15;
else if (type == (string) "HEXA8")
return HEXA8;
else if (type == (string) "HEXA20")
return HEXA20;
else
ERREUR("ERROR method typeMaille, unknown type");
return POI1;
}
| std::map< TYPE_MAILLE, int > MESHCUT::cptNouvellesMailles |
| std::vector< int > MESHCUT::cutTetras |
| float MESHCUT::d |
coefficient constant de l'équation du plan de coupe
Definition at line 61 of file MeshCut_DC.cxx.
Referenced by aptrte(), StdMeshers_QuadToTriaAdaptor.Compute(), StdMeshers_Quadrangle_2D.Compute(), StdMeshersGUI_DistrPreview.createTable(), StdMeshersGUI_DistrTableFrame.data(), StdMeshersGUI_DistrTableFrame.Table.data(), SMESHGUI_Dialog.desktop(), MESHCUT.Maillage.distanceNoeudMaille(), distanceNoeudPlan(), SMESHDS_SubMesh.getSize(), VISCOUS._Simplex.IsForward(), main(), MESHCUT.Maillage.noeudVoisin(), qualitetrte_(), UNV2411.Read(), StdMeshersGUI_DistrTableFrame.setData(), SMESHGUI_Operation.setDialogActive(), and StdMeshers_Quadrangle_2D.SplitQuad().
Definition at line 64 of file MeshCut_DC.cxx.
Referenced by champType(), intersectionSegmentPlan(), and main().
| float * MESHCUT::DNP |
| float MESHCUT::epsilon |
distance en dessous de laquelle un point est considéré comme appartenant au plan de coupe
Definition at line 62 of file MeshCut_DC.cxx.
Referenced by main(), and positionNoeudPlan().
| std::map< TYPE_MAILLE, std::vector< int > > MESHCUT::GMmoins |
| std::map< TYPE_MAILLE, std::vector< int > > MESHCUT::GMplus |
Definition at line 45 of file MeshCut_DC.cxx.
Referenced by intersectionSegmentPlan(), and main().
Definition at line 45 of file MeshCut_DC.cxx.
| std::map< std::string, int > MESHCUT::intersections |
Table des points d'intersection calculés.
Si on a calculé une intersection entre le plan et un segment reliant N1 et N2 de numéros globaux n1 et n2, on stocke dans ce tableau, sous les libellés "n1_n2" et "n2_n1", le numéro global du point d'intersection (noeud créé). On évite ainsi de calculer deux fois l'intersection d'une même arête de T4 avec le plan
Definition at line 43 of file MeshCut_DC.cxx.
Referenced by intersectionSegmentPlan(), and main().
Definition at line 47 of file MeshCut_DC.cxx.
Referenced by cas1(), cas2(), cas3(), cas4(), distanceNoeudPlan(), intersectionSegmentPlan(), longueurSegment(), and main().
Definition at line 47 of file MeshCut_DC.cxx.
Referenced by main().
Definition at line 65 of file MeshCut_DC.cxx.
| std::map< TYPE_MAILLE, std::vector< int > > MESHCUT::newCNX |
| std::vector< float > MESHCUT::newXX |
Definition at line 49 of file MeshCut_DC.cxx.
Referenced by intersectionSegmentPlan(), and main().
| std::vector< float > MESHCUT::newYY |
Definition at line 49 of file MeshCut_DC.cxx.
Referenced by intersectionSegmentPlan(), and main().
| std::vector< float > MESHCUT::newZZ |
Definition at line 49 of file MeshCut_DC.cxx.
Referenced by intersectionSegmentPlan(), and main().
| float MESHCUT::normale |
Definition at line 60 of file MeshCut_DC.cxx.
Referenced by distanceNoeudPlan(), intersectionSegmentPlan(), main(), DriverSTL_W_SMDS_Mesh.writeAscii(), and DriverSTL_W_SMDS_Mesh.writeBinary().
Definition at line 45 of file MeshCut_DC.cxx.
| float MESHCUT::pointPlan |
| std::string MESHCUT::str_id_GMmoins |
Definition at line 46 of file MeshCut_DC.cxx.
Referenced by main().
| std::string MESHCUT::str_id_GMplus |
Definition at line 46 of file MeshCut_DC.cxx.
Referenced by main().
| std::string MESHCUT::str_id_maillagenew |
Definition at line 58 of file MeshCut_DC.cxx.
Referenced by main().