 |
MAGiC
V5.0
Mailleurs Automatiques de Géometries intégrés à la Cao
|
Aller à la documentation de ce fichier.
36 MAILLEUR3D::MAILLEUR3D(
MG_MAILLAGE* mgmai,
MG_GEOMETRIE *mggeo,
FCT_TAILLE* fct_taille,
bool save,
MG_VOLUME* mgvol,
int destruction):
MAILLEUR(save),mg_maillage(mgmai),mg_geometrie(mggeo),mg_volume(mgvol),metrique(fct_taille),activelog(0),niveau_optimisation(2),type_mailleur(
MAGIC::MAILLEURFRONTALETAT::FRONTAL),typedestruction(destruction)
68 std::map<MG_ELEMENT_TOPOLOGIQUE*,MG_ELEMENT_TOPOLOGIQUE*>::iterator it;
72 ele->get_topologie_sousjacente(&lst);
76 for (
int i=0;i<nb_vol;i++)
80 if (lst.
existe(mgvol)==0)
continue;
98 affiche((
char*)
" Construction du front");
102 affiche((
char*)
" Progression du front");
108 affiche((
char*)
" Construction du maillage final");
110 affiche((
char*)
" Optimisation du maillage final");
141 for (
int i=0;i<nbcoq;i++)
145 for (
int j=0;j<nbcoface;j++)
157 if (tritemp==NULL)
continue;
166 for (
int l=0;l<11;l++)
173 MG_NOEUD* mgnoeud1=ft->get_noeud1();
174 MG_NOEUD* mgnoeud2=ft->get_noeud2();
175 MG_NOEUD* mgnoeud3=ft->get_noeud3();
176 ft->changer_front_voisin(NULL,0);
177 ft->changer_front_voisin(NULL,1);
178 ft->changer_front_voisin(NULL,2);
189 if (ft->get_front_voisin(0)==NULL)
197 if (angle<ft->get_angle_voisin(0))
199 ft->changer_front_voisin(ft2,0);
200 ft->changer_angle_voisin(angle,0);
215 if (ft->get_front_voisin(1)==NULL)
223 if (angle<ft->get_angle_voisin(1))
225 ft->changer_front_voisin(ft2,1);
226 ft->changer_angle_voisin(angle,1);
241 if (ft->get_front_voisin(2)==NULL)
249 if (angle<ft->get_angle_voisin(2))
251 ft->changer_front_voisin(ft2,2);
252 ft->changer_angle_voisin(angle,2);
257 if ( (ft->get_front_voisin(0)==NULL) || (ft->get_front_voisin(1)==NULL)|| (ft->get_front_voisin(2)==NULL))
273 if (numfront>10) numfront=10;
275 else numfront=numero_front;
305 if (front.size()==0)
return NULL;
306 FRONT::iterator it=front.begin();
312 if (front.size()==0)
return NULL;
320 if (it==front.end())
return NULL;
346 FRONT* front_original;
352 while (ft!=(*j).second) j++;
353 front_original->erase(j);
367 FRONT* front_original;
373 while (ft!=(*j).second) j++;
374 front_original->erase(j);
388 while (ft!=(*j).second) j++;
389 front_original.erase(j);
399 if (numfront>10) numfront=10;
404 FRONT* front_original;
410 FRONT* front_destination;
419 while (ft!=(*j).second) j++;
420 front_original->erase(j);
429 front_original.swap(front_destination);
virtual BOITE_3D get_boite_3D(void)=0
virtual void change_niveau_optimisation(int num)
virtual void active_log(char *nomfile)
virtual MG_FRONT_3D * get_suivant_front(FRONT &front, FRONT::iterator &it)
virtual int get_nb_mg_coquille(void)
virtual MG_FRONT_3D * ajouter_front_courant(int numero_front, MG_NOEUD *noeud1, MG_NOEUD *noeud2, MG_NOEUD *noeud3, MG_TRIANGLE *triangle)
virtual double get_longueur(void)
virtual int premier_front_courant(void)
virtual double get_valeur_maximale(int num=0)=0
virtual void active_affichage(fonction_affiche *fonc)
virtual MG_ELEMENT_TOPOLOGIQUE * get_suivant(std::map< class MG_ELEMENT_TOPOLOGIQUE *, MG_ELEMENT_TOPOLOGIQUE * >::iterator &it)
virtual MG_FRONT_3D * get_premier_front(FRONT &front)
TPL_LISTE_ENTITE< class MG_TRIANGLE * > * get_lien_triangle(void)
virtual int get_niveau_optimisation(void)
virtual void echange_de_front(FRONT &front_original, FRONT &front_destination, MG_FRONT_3D *ft)
virtual void supprimer_front_en_reculant(MG_FRONT_3D *ft)
virtual void change_etat_front(int num)
virtual void insere_contrainte_tetra(MG_VOLUME *mgvol, TPL_LISTE_ENTITE< MG_TETRA * > *lsttet)
virtual MG_FACE * get_face(void)
virtual int maille(MG_GROUPE_TOPOLOGIQUE *mggt=NULL)
X get_premier(ITERATEUR &it)
virtual void supprimer(BOITE_3D &boite, A a, TPL_CELLULE_OCTREE< A, CONDITION > *cellule)
virtual class MG_FRONT_3D * get_mgfront(void)
virtual void recherche_voisin_front(void)
virtual void affiche(char *mess)
MG_MAILLAGE * mg_maillage
virtual int get_orientation(void)
virtual void initialise_front(MG_VOLUME *mgvol)
virtual MG_FRONT_3D * ajouter_front(FRONT &front, MG_NOEUD *noeud1, MG_NOEUD *noeud2, MG_NOEUD *noeud3, MG_TRIANGLE *triangle)
fonction_affiche * affiche2
virtual void supprimer_front_en_avancant(MG_FRONT_3D *ft)
std::multimap< double, MG_FRONT_3D *, std::less< double > > FRONT
virtual MG_COQUILLE * get_mg_coquille(int num)
virtual TPL_SET< MG_ELEMENT_MAILLAGE * > * get_lien_maillage(void)
virtual void inserer(BOITE_3D &boite, A a, TPL_CELLULE_OCTREE< A, CONDITION > *cellule)
MG_GEOMETRIE * mg_geometrie
virtual void swap_front(FRONT &front_original, FRONT &front_destination)
MAILLEUR3D(MG_MAILLAGE *mgmai, MG_GEOMETRIE *mggeo, FCT_TAILLE *fct_taille, bool save, MG_VOLUME *mgvol=NULL, int destruction=MAGIC::MAILLEURFRONTALETAT::TOUTDETRUIRE)
virtual unsigned int get_nb_front(FRONT &front)
virtual unsigned int get_nb_front_courant(void)
virtual int get_etat_front(void)
virtual int progresse_front(MG_VOLUME *mgvol)
void changer_front_voisin(MG_FRONT_3D *front, int num)
TPL_NTREE_FCT< MG_FRONT_3D *, FCT_TAILLE > * ntree_de_front
virtual double angle_front(MG_FRONT_3D *ft1, MG_FRONT_3D *ft2)
virtual void detruit_element_inactif(void)
virtual MG_NOEUD * get_noeud2(void)
int get_numero_front(void)
virtual void change_mgfront(class MG_FRONT_3D *ft)
virtual int get_type_entite(void)
virtual void ajouter(X x)
unsigned int get_nb_mg_volume(void)
MG_TRIANGLE * get_triangle(void)
virtual MG_NOEUD * get_noeud1(void)
virtual void cree_ntree(void)
virtual MG_NOEUD * get_noeud3(void)
virtual void insere_contrainte_triangle(MG_VOLUME *mgvol, TPL_LISTE_ENTITE< MG_TRIANGLE * > *lsttri)
virtual int get_nb_mg_coface(void)
virtual MG_COFACE * get_mg_coface(int num)
virtual MG_ELEMENT_TOPOLOGIQUE * get_premier(std::map< class MG_ELEMENT_TOPOLOGIQUE *, MG_ELEMENT_TOPOLOGIQUE * >::iterator &it)
MG_TRIANGLE * get_mg_triangleid(unsigned long num)
void changer_numero_front(int num)
virtual void initialiser(B &fonction, double xmin, double ymin, double zmin, double xmax, double ymax, double zmax)
virtual void desactive_log(void)
virtual void cree_front(MG_VOLUME *mgvol)
MG_VOLUME * get_mg_volume(unsigned int num)
virtual void optimise(MG_VOLUME *mgvol)
virtual void supprimer_front_en_avancant_sans_delete(MG_FRONT_3D *ft)
X get_suivant(ITERATEUR &it)