MAGiC  V5.0
Mailleurs Automatiques de Géometries intégrés à la Cao
mgopt_mvt_normal.h
Aller à la documentation de ce fichier.
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 //####// mgopt_mvt_normal.h
15 //####//
16 //####//------------------------------------------------------------
17 //####//------------------------------------------------------------
18 //####// COPYRIGHT 2000-2024
19 //####// jeu 13 jun 2024 11:58:57 EDT
20 //####//------------------------------------------------------------
21 //####//------------------------------------------------------------
22 #ifndef mgoptmvtnormalH
23 #define mgoptmvtnormalH
24 
25 
26 
27 #include "tpl_map_entite.h"
28 #include "ot_mathematique.h"
29 #include "ot_parametres.h"
30 #include "mg_gestionnaire.h"
31 #include "opt_noeud.h"
32 #include "fem_triangle3.h"
33 
34 class OPT_NOEUD;
35 class OPT_TRIANGLE;
36 class FEM_TRIANGLE3;
37 
39 {
40 public :
41 
46 
47  virtual void active_affichage(void (*fonc)(char*));
48  virtual void init_parametre(void);
49  virtual void ecrire_fichier_params(char *fichierparam);
51  virtual void lissage(TPL_MAP_ENTITE<OPT_NOEUD*> lst_noeud);
52  virtual void lissage_controle(TPL_MAP_ENTITE<OPT_NOEUD*> lst_noeud, double ecart_max_pondere_norme_pos);
53  virtual void optimisation(char* fichierin, char* fichierout, char* fichierparam, char* fichierparamaster);
54  //virtual void lissage(char* fichier);
55  //virtual void deplacement_normal(double dpl_max, double angle_min, int nbpas);
56  //virtual void visualisation(int facteur);
57 
58  // Correspondance entre opt_noeud et fem_noeud
60  class OPT_NOEUD* get_noeud(class FEM_NOEUD* fem_noeud);
61  std::map<unsigned long, std::pair<class OPT_NOEUD*,class FEM_NOEUD*> > correspondance_noeud;
62 
63  void printf(const char* arg1);
64  std::ostream fem_tri3();
65 
66 protected:
67 
68  // Fonctions essentielles méthode du mouvement normal
69  virtual void lire_params(char *fichier);
70  //virtual void get_liste_noeud_deplacer_initiale(TPL_MAP_ENTITE< OPT_NOEUD* > listenoeud, TPL_MAP_ENTITE< OPT_NOEUD* >* lstnoeud_deplacer_initiale);
71  //virtual void change_liste_noeud_voisin(TPL_MAP_ENTITE<OPT_NOEUD*> lstnoeud_deplacer_initiale);
72  virtual void change_liste_noeud_voisin(OPT_NOEUD* opt_noeud);
73  virtual double get_aire_fem_tri3(FEM_TRIANGLE3* fem_tri);
74  virtual void calcul_normale_opt_noeud(class OPT_NOEUD* noeud);
75  virtual double get_sigma_vm_max(MG_GESTIONNAIRE* gest, FEM_NOEUD* fem_noeud, int num_sol_inf, int num_sol_moy, int num_sol_sup);
76  virtual double get_ecart_type_sigma_vm(MG_GESTIONNAIRE* gest, TPL_MAP_ENTITE<OPT_NOEUD*> lstnoeud, double moyenne, int numsolinf, int numsolmoy, int numsolsup);
77 
78  // Fonctions pour la gestion des déplacement virtuels et réels
79  virtual void change_deplacement_virtuel_opt_noeud(OPT_NOEUD* opt_noeud, double d);
80  virtual void deplace_opt_noeud(OPT_NOEUD* opt_noeud, double d);
81 
82  // Fonctions de visualisation des déplacements
84 
85  // Fonctions pour le contrôle par gradient de déplacement
88  virtual void get_liste_noeud_mobile_tri_2nd_fixe(TPL_MAP_ENTITE<OPT_TRIANGLE*> lst_tri_2nd_fixe, TPL_MAP_ENTITE< OPT_NOEUD* > lstnoeud_deplacer, TPL_MAP_ENTITE<OPT_NOEUD*> *lst_noeud_mobile_tri_2nd_fixe);
89  //virtual void get_liste_opt_tri_3nd_fixe(FEM_MAILLAGE* fem, TPL_MAP_ENTITE<OPT_NOEUD*> lstnoeud_deplacer, TPL_MAP_ENTITE<OPT_TRIANGLE*>* lst_opt_tri_3nd_fixe);
90  //virtual void get_noeud_mobile_opt_tri(OPT_TRIANGLE* opt_tri, TPL_MAP_ENTITE<OPT_NOEUD*> lstnoeud_deplacer, OPT_NOEUD** opt_noeud_mobile);
91  virtual double evaluer_fonction_f(double norme_max_grad, TPL_MAP_ENTITE< OPT_TRIANGLE* > lst_tri, int affichage);//, TPL_MAP_ENTITE<OPT_NOEUD*> lst_noeud_mobile_tri_2nd_fixe);
92  virtual void evaluer_gradient_f(int num_repl, double norme_max_grad, TPL_MAP_ENTITE<OPT_TRIANGLE*> lst_tri);
93  virtual double get_norme_gradient_f(int num_repl, TPL_MAP_ENTITE<OPT_NOEUD*> lst_noeud);
94  virtual int algorithme_gradient(int num_repl, double norme_max_grad, double pas, double epsilon, int iter_max_grad, TPL_MAP_ENTITE<OPT_TRIANGLE*> lst_tri, TPL_MAP_ENTITE<OPT_NOEUD*> lst_noeud, int affichage);
95 
96  // Fonction non utilisée pour calculer l'angle entre deux triangles
97  //virtual double calcul_angle(class OPT_TRIANGLE* tri1,class OPT_TRIANGLE* tri2);
98 
99  // Correspondance entre opt_triangle et fem_triangle
102  std::map<unsigned long, std::pair<class OPT_TRIANGLE*,class FEM_TRIANGLE3*> > correspondance_triangle;
103 
104  class MG_MAILLAGE *mai;
105  class FEM_MAILLAGE *fem; // Maillage servant pour l'optimisation
106  class FEM_MAILLAGE* fem_visu; // Maillage servant pour la visualisation
109 
110  void (*affiche)(char *mess);
113  char etude[500];
114  char etudesortie[500];
115 
116  int nb_tri_grad_depasse; // Nb de triangles dont la norme du gradient de déplacement dépasse la valeur seuil lors de l'écriture de la fonction f
117  //int nb_tri_3noeud_fixe; // Nb de triangles qui ont 3 noeuds fixes et qui avaient au moins 1 noeud mobile au départ
118 };
119 
120 #endif
MGOPT_MVT_NORMAL::params
OT_PARAMETRES params
Definition: mgopt_mvt_normal.h:112
MGOPT_MVT_NORMAL::fem_tri3
std::ostream fem_tri3()
MGOPT_MVT_NORMAL::fem
class FEM_MAILLAGE * fem
Definition: mgopt_mvt_normal.h:105
MGOPT_MVT_NORMAL::calcul_normale_opt_noeud
virtual void calcul_normale_opt_noeud(class OPT_NOEUD *noeud)
Definition: mgopt_mvt_normal.cpp:236
opt_noeud.h
FEM_SOLUTION
Definition: fem_solution.h:40
MGOPT_MVT_NORMAL::get_sigma_vm_max
virtual double get_sigma_vm_max(MG_GESTIONNAIRE *gest, FEM_NOEUD *fem_noeud, int num_sol_inf, int num_sol_moy, int num_sol_sup)
Definition: mgopt_mvt_normal.cpp:275
MGOPT_MVT_NORMAL::MGOPT_MVT_NORMAL
MGOPT_MVT_NORMAL()
Definition: mgopt_mvt_normal.cpp:37
MGOPT_MVT_NORMAL::evaluer_fonction_f
virtual double evaluer_fonction_f(double norme_max_grad, TPL_MAP_ENTITE< OPT_TRIANGLE * > lst_tri, int affichage)
Definition: mgopt_mvt_normal.cpp:450
MGOPT_MVT_NORMAL::lire_params
virtual void lire_params(char *fichier)
Definition: mgopt_mvt_normal.cpp:166
MGOPT_MVT_NORMAL::listenoeud
TPL_MAP_ENTITE< class OPT_NOEUD * > listenoeud
Definition: mgopt_mvt_normal.h:59
MGOPT_MVT_NORMAL::get_liste_noeud_mobile_tri_2nd_fixe
virtual void get_liste_noeud_mobile_tri_2nd_fixe(TPL_MAP_ENTITE< OPT_TRIANGLE * > lst_tri_2nd_fixe, TPL_MAP_ENTITE< OPT_NOEUD * > lstnoeud_deplacer, TPL_MAP_ENTITE< OPT_NOEUD * > *lst_noeud_mobile_tri_2nd_fixe)
Definition: mgopt_mvt_normal.cpp:408
TPL_MAP_ENTITE
Definition: tpl_map_entite.h:35
mg_gestionnaire.h
MGOPT_MVT_NORMAL::get_liste_noeud_a_partir_liste_tri
virtual void get_liste_noeud_a_partir_liste_tri(TPL_MAP_ENTITE< OPT_TRIANGLE * > lst_tri, TPL_MAP_ENTITE< OPT_NOEUD * > *lst_noeud)
Definition: mgopt_mvt_normal.cpp:392
MGOPT_MVT_NORMAL::init_parametre
virtual void init_parametre(void)
Definition: mgopt_mvt_normal.cpp:119
MGOPT_MVT_NORMAL::affiche
void(* affiche)(char *mess)
Definition: mgopt_mvt_normal.h:110
FEM_TRIANGLE3
Definition: fem_triangle3.h:34
robustPredicates::epsilon
static REAL epsilon
Definition: robustpredicates.cc:371
MGOPT_MVT_NORMAL::ecrire_fichier_params
virtual void ecrire_fichier_params(char *fichierparam)
Definition: mgopt_mvt_normal.cpp:160
MGOPT_MVT_NORMAL::mai
class MG_MAILLAGE * mai
Definition: mgopt_mvt_normal.h:104
OPT_NOEUD
Definition: opt_noeud.h:31
MGOPT_MVT_NORMAL::correspondance_noeud
std::map< unsigned long, std::pair< class OPT_NOEUD *, class FEM_NOEUD * > > correspondance_noeud
Definition: mgopt_mvt_normal.h:61
MG_GESTIONNAIRE
Definition: mg_gestionnaire.h:57
MGOPT_MVT_NORMAL
Definition: mgopt_mvt_normal.h:38
MGOPT_MVT_NORMAL::listetriangle
TPL_MAP_ENTITE< class OPT_TRIANGLE * > listetriangle
Definition: mgopt_mvt_normal.h:100
MGOPT_MVT_NORMAL::get_ecart_type_sigma_vm
virtual double get_ecart_type_sigma_vm(MG_GESTIONNAIRE *gest, TPL_MAP_ENTITE< OPT_NOEUD * > lstnoeud, double moyenne, int numsolinf, int numsolmoy, int numsolsup)
Definition: mgopt_mvt_normal.cpp:294
MGOPT_MVT_NORMAL::change_liste_noeud_voisin
virtual void change_liste_noeud_voisin(OPT_NOEUD *opt_noeud)
Definition: mgopt_mvt_normal.cpp:186
MGOPT_MVT_NORMAL::change_deplacement_virtuel_opt_noeud
virtual void change_deplacement_virtuel_opt_noeud(OPT_NOEUD *opt_noeud, double d)
Definition: mgopt_mvt_normal.cpp:311
OPT_NOEUD::fem_noeud
FEM_NOEUD * fem_noeud
Definition: opt_noeud.h:133
MGOPT_MVT_NORMAL::active_affichage
virtual void active_affichage(void(*fonc)(char *))
Definition: mgopt_mvt_normal.cpp:113
MGOPT_MVT_NORMAL::lissage
virtual void lissage(TPL_MAP_ENTITE< OPT_NOEUD * > lst_noeud)
Definition: mgopt_mvt_normal.cpp:810
OPT_TRIANGLE
Definition: opt_triangle.h:35
MGOPT_MVT_NORMAL::get_noeud
class OPT_NOEUD * get_noeud(class FEM_NOEUD *fem_noeud)
Definition: mgopt_mvt_normal.cpp:101
FEM_MAILLAGE
Definition: fem_maillage.h:66
ot_parametres.h
MGOPT_MVT_NORMAL::~MGOPT_MVT_NORMAL
~MGOPT_MVT_NORMAL()
Definition: mgopt_mvt_normal.cpp:90
MGOPT_MVT_NORMAL::orientation
int orientation
Definition: mgopt_mvt_normal.h:108
tpl_map_entite.h
MGOPT_MVT_NORMAL::get_liste_noeud_deplacer_initiale
virtual void get_liste_noeud_deplacer_initiale(TPL_MAP_ENTITE< OPT_NOEUD * > listenoeud, TPL_MAP_ENTITE< OPT_NOEUD * > *lstnoeud_deplacer_initiale)
Definition: mgopt_mvt_normal.cpp:172
OT_PARAMETRES
Definition: ot_parametres.h:31
MGOPT_MVT_NORMAL::deplace_opt_noeud
virtual void deplace_opt_noeud(OPT_NOEUD *opt_noeud, double d)
Definition: mgopt_mvt_normal.cpp:327
ot_mathematique.h
MGOPT_MVT_NORMAL::geo
class MG_GEOMETRIE * geo
Definition: mgopt_mvt_normal.h:107
FEM_NOEUD
Definition: fem_noeud.h:35
MGOPT_MVT_NORMAL::algorithme_gradient
virtual int algorithme_gradient(int num_repl, double norme_max_grad, double pas, double epsilon, int iter_max_grad, TPL_MAP_ENTITE< OPT_TRIANGLE * > lst_tri, TPL_MAP_ENTITE< OPT_NOEUD * > lst_noeud, int affichage)
Definition: mgopt_mvt_normal.cpp:607
MGOPT_MVT_NORMAL::lissage_controle
virtual void lissage_controle(TPL_MAP_ENTITE< OPT_NOEUD * > lst_noeud, double ecart_max_pondere_norme_pos)
Definition: mgopt_mvt_normal.cpp:861
MGOPT_MVT_NORMAL::nb_tri_grad_depasse
int nb_tri_grad_depasse
Definition: mgopt_mvt_normal.h:116
MGOPT_MVT_NORMAL::ecriture_fem_solution_deplacement
virtual void ecriture_fem_solution_deplacement(FEM_SOLUTION *sol, FEM_NOEUD *fem_noeud)
Definition: mgopt_mvt_normal.cpp:357
MGOPT_MVT_NORMAL::correspondance_triangle
std::map< unsigned long, std::pair< class OPT_TRIANGLE *, class FEM_TRIANGLE3 * > > correspondance_triangle
Definition: mgopt_mvt_normal.h:102
MGOPT_MVT_NORMAL::get_aire_fem_tri3
virtual double get_aire_fem_tri3(FEM_TRIANGLE3 *fem_tri)
Definition: mgopt_mvt_normal.cpp:221
MGOPT_MVT_NORMAL::optimisation
virtual void optimisation(char *fichierin, char *fichierout, char *fichierparam, char *fichierparamaster)
Definition: mgopt_mvt_normal.cpp:918
fem_triangle3.h
MG_GEOMETRIE
Definition: mg_geometrie.h:84
MG_MAILLAGE
Definition: mg_maillage.h:62
MGOPT_MVT_NORMAL::fem_visu
class FEM_MAILLAGE * fem_visu
Definition: mgopt_mvt_normal.h:106
MGOPT_MVT_NORMAL::etude
char etude[500]
Definition: mgopt_mvt_normal.h:113
MGOPT_MVT_NORMAL::get_triangle
class OPT_TRIANGLE * get_triangle(class FEM_TRIANGLE3 *fem_tri3)
Definition: mgopt_mvt_normal.cpp:107
MGOPT_MVT_NORMAL::printf
void printf(const char *arg1)
MGOPT_MVT_NORMAL::evaluer_gradient_f
virtual void evaluer_gradient_f(int num_repl, double norme_max_grad, TPL_MAP_ENTITE< OPT_TRIANGLE * > lst_tri)
Definition: mgopt_mvt_normal.cpp:517
MGOPT_MVT_NORMAL::etudesortie
char etudesortie[500]
Definition: mgopt_mvt_normal.h:114
MGOPT_MVT_NORMAL::get_norme_gradient_f
virtual double get_norme_gradient_f(int num_repl, TPL_MAP_ENTITE< OPT_NOEUD * > lst_noeud)
Definition: mgopt_mvt_normal.cpp:589
MGOPT_MVT_NORMAL::affichageactif
int affichageactif
Definition: mgopt_mvt_normal.h:111
MGOPT_MVT_NORMAL::get_liste_tri_2nd_fixe
virtual void get_liste_tri_2nd_fixe(FEM_MAILLAGE *fem, TPL_MAP_ENTITE< OPT_NOEUD * > lstnoeud_deplacer, TPL_MAP_ENTITE< class OPT_TRIANGLE * > *lst_tri_2nd_fixe)
Definition: mgopt_mvt_normal.cpp:373