ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/REPOS_ERICCA/magic/lib/mailleur/src/mailleur2d_optimisation.h
Revision: 1189
Committed: Tue Feb 4 17:26:49 2025 UTC (3 months ago) by francois
Content type: text/plain
File size: 3467 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 //####// mailleur2d_optimisation.h
15 //####//
16 //####//------------------------------------------------------------
17 //####//------------------------------------------------------------
18 //####// COPYRIGHT 2000-2024
19 //####// jeu 13 jun 2024 11:58:56 EDT
20 //####//------------------------------------------------------------
21 //####//------------------------------------------------------------
22
23 #ifndef mailleur2d_optimisationH
24 #define mailleur2d_optimisationH
25
26
27
28
29
30
31
32 #include "mailleur.h"
33 #include "mg_definition.h"
34 #include <map>
35
36
37 class MG_MAILLAGE;
38 class MG_FACE;
39 class M3D_TRIANGLE;
40 class MG_NOEUD;
41 class OT_DECALAGE_PARAMETRE;
42 class MG_VOLUME;
43 class MG_COQUE;
44 class MG_SEGMENT;
45 class MG_TRIANGLE;
46
47
48 class MAILLEUR2D_OPTIMISATION: public MAILLEUR
49 {
50 public:
51 typedef std::multimap<double,class M3D_TRIANGLE*,std::less<double> > ORDRE_TRIANGLE;
52 typedef std::map<unsigned long,ORDRE_TRIANGLE::iterator,std::less<unsigned long> > ORDRE_TRIANGLE_PARID;
53
54 MAILLEUR2D_OPTIMISATION(MG_MAILLAGE* mgmai,int niv);
55 virtual ~MAILLEUR2D_OPTIMISATION();
56 virtual void change_niveau_optimisation(int num);
57 virtual int get_niveau_optimisation(void);
58
59
60 virtual int maille(MG_GROUPE_TOPOLOGIQUE *mggt=NULL) {return OK;}; // si on utilise cette methode les triangles doivent ĂȘtre des M3D_TRIANGLE
61 virtual void optimise(MG_FACE* mgface); // si on utilise cette methode les triangles doivent ĂȘtre des M3D_TRIANGLE
62 virtual void optimise(MG_VOLUME* mgvolume); // methode toujours valable
63 virtual void optimise(MG_COQUE* mgcoque);// methode toujours valable
64 protected:
65 virtual void ajouter_ordre_tri(M3D_TRIANGLE* tri,int num=1);
66 virtual void supprimer_ordre_tri(M3D_TRIANGLE* tri);
67 OT_DECALAGE_PARAMETRE *decalage;
68 virtual void optimise_avec_calcul_uv(MG_FACE* mgface);
69 virtual int bouge_point(MG_FACE* mgface,MG_NOEUD* mg_noeud,double& crit,double &u,double& v,double& x,double& y, double& z);
70 virtual int inverse_diagonale(MG_FACE* face,int num,M3D_TRIANGLE* tri,M3D_TRIANGLE** autretri,double &crit,MG_NOEUD** tabnoeudres);
71 virtual void reinit(void);
72 MG_MAILLAGE* mg_maillage;
73
74 virtual MG_SEGMENT* cree_segment(class MG_FACE* mgface,MG_NOEUD* noeud1,MG_NOEUD* noeud2,int origine);
75 virtual M3D_TRIANGLE* cree_triangle(class MG_FACE* mgface,MG_NOEUD* noeud1,MG_NOEUD* noeud2,MG_NOEUD* noeud3,MG_SEGMENT* segment1,MG_SEGMENT* segment2,MG_SEGMENT* segment3,int origine);
76 virtual M3D_TRIANGLE* insere_triangle(class MG_FACE* mgface,MG_NOEUD* noeud1,MG_NOEUD* noeud2,MG_NOEUD* noeud3,int origine);
77 void operateur_inverse_diagonale(int phase,MG_FACE* mgface,M3D_TRIANGLE** tri);
78 void operateur_bouge_de_point(int phase,MG_FACE* mgface,M3D_TRIANGLE* tri);
79
80 int niveau_optimisation;
81 ORDRE_TRIANGLE lst_tri[2];
82 ORDRE_TRIANGLE_PARID lst_triid[2];
83 double periode_u;
84 double periode_v;
85 };
86
87
88
89
90 #endif