ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/REPOS_ERICCA/magic/lib/mailleur/src/mailleur0d.cpp
Revision: 1189
Committed: Tue Feb 4 17:26:49 2025 UTC (3 months ago) by francois
File size: 3386 byte(s)
Log Message:
Version 5.0 de MAGIC. Integration de ALGLIB pour faire de l'optimisation. ALGLIB se download automatiquement en executant un script dans le repertoire config update_magic.bash


File Contents

# Content
1 //####//------------------------------------------------------------
2 //####//------------------------------------------------------------
3 //####// MAGiC
4 //####// Jean Christophe Cuilliere et Vincent FRANCOIS
5 //####// Departement de Genie Mecanique - UQTR
6 //####//------------------------------------------------------------
7 //####// MAGIC est un projet de recherche de l equipe ERICCA
8 //####// du departement de genie mecanique de l Universite du Quebec a Trois Rivieres
9 //####// http://www.uqtr.ca/ericca
10 //####// http://www.uqtr.ca/
11 //####//------------------------------------------------------------
12 //####//------------------------------------------------------------
13 //####//
14 //####// mailleur0d.cpp
15 //####//
16 //####//------------------------------------------------------------
17 //####//------------------------------------------------------------
18 //####// COPYRIGHT 2000-2024
19 //####// jeu 13 jun 2024 11:58:55 EDT
20 //####//------------------------------------------------------------
21 //####//------------------------------------------------------------
22
23
24 #include "gestionversion.h"
25 #include "mailleur0d.h"
26
27
28
29
30 MAILLEUR0D::MAILLEUR0D(MG_MAILLAGE* mgmai,MG_GEOMETRIE *mggeo,MG_SOMMET* mgsom):MAILLEUR(false),mg_maillage(mgmai),mg_geometrie(mggeo),mg_sommet(mgsom)
31 {
32 }
33
34
35
36 MAILLEUR0D::~MAILLEUR0D()
37 {
38 }
39
40
41
42
43 int MAILLEUR0D::maille(MG_GROUPE_TOPOLOGIQUE* mggt)
44 {
45 if (mg_sommet!=NULL)
46 {
47 if(maille(mg_sommet)==FAIL) return FAIL;
48 }
49 else
50 {
51 TPL_MAP_ENTITE<MG_ELEMENT_TOPOLOGIQUE*> lst;
52 if (mggt!=NULL)
53 {
54 std::map<MG_ELEMENT_TOPOLOGIQUE*,MG_ELEMENT_TOPOLOGIQUE*>::iterator it;
55 for(MG_ELEMENT_TOPOLOGIQUE* ele=mggt->get_premier(it);ele!=NULL;ele=mggt->get_suivant(it))
56 {
57 lst.ajouter(ele);
58 ele->get_topologie_sousjacente(&lst);
59 }
60 }
61 int nb_sommet=mg_geometrie->get_nb_mg_sommet();
62 for (int i=0;i<nb_sommet;i++)
63 {
64 MG_SOMMET* mgsom=mg_geometrie->get_mg_sommet(i);
65 if (mggt!=NULL)
66 if (lst.existe(mgsom)==0) continue;
67 if(maille(mgsom)==FAIL) return FAIL;
68 }
69 }
70 return OK;
71 }
72
73
74 int MAILLEUR0D::maille(MG_SOMMET* mgsom)
75 {
76 double coo[3];
77 mgsom->get_point()->evaluer(coo);
78 MG_NOEUD* mgnoeud=new MG_NOEUD(mgsom,coo[0],coo[1],coo[2],MAGIC::ORIGINE::MAILLEUR_AUTO);
79 mg_maillage->ajouter_mg_noeud(mgnoeud);
80 mgnoeud->get_lien_topologie()->get_lien_maillage()->ajouter(mgnoeud);
81 return OK;
82 }
83
84
85 void MAILLEUR0D::adapte(void)
86 {
87 if (mg_sommet!=NULL) adapte(mg_sommet);
88 else
89 {
90 int nb_sommet=mg_geometrie->get_nb_mg_sommet();
91 for (int i=0;i<nb_sommet;i++)
92 {
93 MG_SOMMET* mgsom=mg_geometrie->get_mg_sommet(i);
94 adapte(mgsom);
95 }
96 }
97 }
98
99
100 void MAILLEUR0D::adapte(MG_SOMMET* mgsom)
101 {
102 int nb_noeud=mgsom->get_lien_maillage()->get_nb();
103 for (int i=0;i<nb_noeud;i++)
104 {
105 MG_NOEUD* noeud=(MG_NOEUD*)mgsom->get_lien_maillage()->get(i);
106 MG_NOEUD* noeudtmp=mg_maillage->get_mg_noeudid(noeud->get_id());
107 if (noeudtmp!=NULL) return;
108 }
109 double coo[3];
110 mgsom->get_point()->evaluer(coo);
111 MG_NOEUD* mgnoeud=new MG_NOEUD(mgsom,coo[0],coo[1],coo[2],MAGIC::ORIGINE::MAILLEUR_AUTO);
112 mg_maillage->ajouter_mg_noeud(mgnoeud);
113 mgnoeud->get_lien_topologie()->get_lien_maillage()->ajouter(mgnoeud);
114 }
115
116
117
118
119