ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/REPOS_ERICCA/magic/lib/mailleur/src/mailleur0d.cpp
Revision: 966
Committed: Thu Sep 6 16:46:34 2018 UTC (6 years, 8 months ago) by couturad
Original Path: magic/lib/mailleur_auto/src/mailleur0d.cpp
File size: 3331 byte(s)
Log Message:
Ajout de l'histogramme a MAGIC_PLOT
Ajout d'une sortie OK ou FAIL (int) au MAILLEUR afin de gerer certaines exceptions
Ajout d'une phase RSA a la fin du generateur DCR

File Contents

# User Rev Content
1 francois 283 //------------------------------------------------------------
2     //------------------------------------------------------------
3     // MAGiC
4     // Jean Christophe Cuilli�re et Vincent FRANCOIS
5     // D�partement de G�nie M�canique - UQTR
6     //------------------------------------------------------------
7     // Le projet MAGIC est un projet de recherche du d�partement
8     // de g�nie m�canique de l'Universit� du Qu�bec �
9     // Trois Rivi�res
10     // Les librairies ne peuvent �tre utilis�es sans l'accord
11     // des auteurs (contact : francois@uqtr.ca)
12     //------------------------------------------------------------
13     //------------------------------------------------------------
14     //
15     // mailleur0d.cpp
16     //
17     //------------------------------------------------------------
18     //------------------------------------------------------------
19     // COPYRIGHT 2000
20     // Version du 02/03/2006 � 11H23
21     //------------------------------------------------------------
22     //------------------------------------------------------------
23    
24    
25     #include "gestionversion.h"
26     #include "mailleur0d.h"
27    
28    
29    
30    
31 francois 494 MAILLEUR0D::MAILLEUR0D(MG_MAILLAGE* mgmai,MG_GEOMETRIE *mggeo,MG_SOMMET* mgsom):MAILLEUR(false),mg_maillage(mgmai),mg_geometrie(mggeo),mg_sommet(mgsom)
32 francois 283 {
33     }
34    
35    
36    
37     MAILLEUR0D::~MAILLEUR0D()
38     {
39     }
40    
41    
42    
43    
44 couturad 966 int MAILLEUR0D::maille(MG_GROUPE_TOPOLOGIQUE* mggt)
45 francois 283 {
46 couturad 966 if (mg_sommet!=NULL)
47     {
48     if(maille(mg_sommet)==FAIL) return FAIL;
49     }
50 francois 283 else
51     {
52     TPL_MAP_ENTITE<MG_ELEMENT_TOPOLOGIQUE*> lst;
53     if (mggt!=NULL)
54     {
55 couturad 906 std::map<MG_ELEMENT_TOPOLOGIQUE*,MG_ELEMENT_TOPOLOGIQUE*>::iterator it;
56     for(MG_ELEMENT_TOPOLOGIQUE* ele=mggt->get_premier(it);ele!=NULL;ele=mggt->get_suivant(it))
57     {
58     lst.ajouter(ele);
59     ele->get_topologie_sousjacente(&lst);
60     }
61 francois 283 }
62     int nb_sommet=mg_geometrie->get_nb_mg_sommet();
63     for (int i=0;i<nb_sommet;i++)
64     {
65     MG_SOMMET* mgsom=mg_geometrie->get_mg_sommet(i);
66     if (mggt!=NULL)
67     if (lst.existe(mgsom)==0) continue;
68 couturad 966 if(maille(mg_sommet)==FAIL) return FAIL;
69 francois 283 }
70     }
71 couturad 966 return OK;
72 francois 283 }
73    
74    
75 couturad 966 int MAILLEUR0D::maille(MG_SOMMET* mgsom)
76 francois 283 {
77     double coo[3];
78     mgsom->get_point()->evaluer(coo);
79 francois 791 MG_NOEUD* mgnoeud=new MG_NOEUD(mgsom,coo[0],coo[1],coo[2],MAGIC::ORIGINE::MAILLEUR_AUTO);
80 francois 283 mg_maillage->ajouter_mg_noeud(mgnoeud);
81     mgnoeud->get_lien_topologie()->get_lien_maillage()->ajouter(mgnoeud);
82 couturad 966 return OK;
83 francois 283 }
84    
85    
86     void MAILLEUR0D::adapte(void)
87     {
88     if (mg_sommet!=NULL) adapte(mg_sommet);
89     else
90     {
91     int nb_sommet=mg_geometrie->get_nb_mg_sommet();
92     for (int i=0;i<nb_sommet;i++)
93     {
94     MG_SOMMET* mgsom=mg_geometrie->get_mg_sommet(i);
95     adapte(mgsom);
96     }
97     }
98     }
99    
100    
101     void MAILLEUR0D::adapte(MG_SOMMET* mgsom)
102     {
103     int nb_noeud=mgsom->get_lien_maillage()->get_nb();
104     for (int i=0;i<nb_noeud;i++)
105     {
106     MG_NOEUD* noeud=(MG_NOEUD*)mgsom->get_lien_maillage()->get(i);
107     MG_NOEUD* noeudtmp=mg_maillage->get_mg_noeudid(noeud->get_id());
108     if (noeudtmp!=NULL) return;
109     }
110     double coo[3];
111     mgsom->get_point()->evaluer(coo);
112 francois 791 MG_NOEUD* mgnoeud=new MG_NOEUD(mgsom,coo[0],coo[1],coo[2],MAGIC::ORIGINE::MAILLEUR_AUTO);
113 francois 283 mg_maillage->ajouter_mg_noeud(mgnoeud);
114     mgnoeud->get_lien_topologie()->get_lien_maillage()->ajouter(mgnoeud);
115     }
116    
117    
118    
119    
120