ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/REPOS_ERICCA/magic/lib/mailleur/src/mailleur3d_optimisation.h
Revision: 1189
Committed: Tue Feb 4 17:26:49 2025 UTC (3 months ago) by francois
Content type: text/plain
File size: 3338 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 //####// mailleur3d_optimisation.h
15 //####//
16 //####//------------------------------------------------------------
17 //####//------------------------------------------------------------
18 //####// COPYRIGHT 2000-2024
19 //####// jeu 13 jun 2024 11:58:55 EDT
20 //####//------------------------------------------------------------
21 //####//------------------------------------------------------------
22
23 #ifndef mailleur3d_optimisationH
24 #define mailleur3d_optimisationH
25
26
27
28
29
30
31 #include <map>
32 #include <vector>
33 #include "mg_maillage.h"
34 #include "mg_geometrie.h"
35 #include "mg_volume.h"
36 #include "tpl_octree.h"
37 #include "mailleur.h"
38
39
40
41
42
43 class MAILLEUR3D_OPTIMISATION: public MAILLEUR
44 {
45 public:
46 typedef std::multimap<double,class M3D_TETRA*,std::less<double> > ORDRE_TETRA;
47 typedef std::map<unsigned long,ORDRE_TETRA::iterator,std::less<unsigned long> > ORDRE_TETRA_PARID;
48
49 MAILLEUR3D_OPTIMISATION(MG_MAILLAGE* mgmai,int niv);
50 virtual ~MAILLEUR3D_OPTIMISATION();
51 virtual void change_niveau_optimisation(int num);
52 virtual int get_niveau_optimisation(void);
53
54
55 virtual void optimise(MG_VOLUME* mgvol);
56 virtual int maille(MG_GROUPE_TOPOLOGIQUE* mggt) {return OK;} ;
57
58 protected:
59 virtual void optimise(MG_VOLUME* mgvol,int& nbmauvais);
60 virtual int bouge_point(MG_VOLUME* mgvol,class MG_NOEUD* noeud,double& crit,double& x,double& y, double& z);
61
62
63 virtual void remaille_coquille(MG_NOEUD* noeud1,MG_NOEUD* noeud2, double& crit, class COQUILLE& coque);
64 virtual void ajouter_ordre_tetra(M3D_TETRA* tet,int num=1);
65 virtual void supprimer_ordre_tetra(M3D_TETRA* tet);
66 virtual double get_volume(MG_TETRA* tet);
67 virtual double get_volume(double *xyz1,double *xyz2,double *xyz3,double *xyz4);
68
69 ORDRE_TETRA lst_tetra[2];
70 ORDRE_TETRA_PARID lst_tetraid[2];
71 int niveau_optimisation;
72
73 virtual class MG_TRIANGLE* insere_triangle(class MG_VOLUME* mgvol,MG_NOEUD* noeud1,MG_NOEUD* noeud2,MG_NOEUD* noeud3,int origine);
74 virtual MG_TRIANGLE* cree_triangle(class MG_VOLUME* mgvol,MG_NOEUD* noeud1,MG_NOEUD* noeud2,MG_NOEUD* noeud3,MG_SEGMENT* segment1,MG_SEGMENT* segment2,MG_SEGMENT* segment3,int origine);
75 virtual MG_SEGMENT* cree_segment(class MG_VOLUME* mgvol,MG_NOEUD* noeud1,MG_NOEUD* noeud2,int origine);
76
77
78 MG_MAILLAGE* mg_maillage;
79 virtual void o3d_data(void);
80 virtual void o3d_data2(void);
81 int tab_solution[7][1430][8];
82 int tab_face[7][120][3];
83 };
84
85
86
87
88 class COQUILLE
89 {
90 public:
91 COQUILLE():volume(0) {};
92 ~COQUILLE() {};
93
94 int taille;
95 MG_TETRA* tet[10];
96 MG_NOEUD* new_tetra[64];
97 double volume;
98 };
99
100
101
102
103
104
105
106
107
108
109
110
111 #endif