MAGiC  V5.0
Mailleurs Automatiques de Géometries intégrés à la Cao
mstruct_generateur_dcr.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 //####// mstruct_generateur_dcr.h
15 //####//
16 //####//------------------------------------------------------------
17 //####//------------------------------------------------------------
18 //####// COPYRIGHT 2000-2024
19 //####// jeu 13 jun 2024 11:58:56 EDT
20 //####//------------------------------------------------------------
21 //####//------------------------------------------------------------
22 #ifdef PROJECT_CHRONO
23 #ifndef _MSTRUCT_GENERATEUR_DCR_
24 #define _MSTRUCT_GENERATEUR_DCR_
25 #include "mstruct_generateur.h"
26 #include "chrono/physics/ChSystemNSC.h"
27 #include "chrono_irrlicht/ChIrrApp.h"
28 
29 
30 
31 class MSTRUCT_CHRONO_PARTICULE
32 {
33 public:
34  MSTRUCT_CHRONO_PARTICULE(std::shared_ptr<chrono::ChBody> particule);
35  std::shared_ptr<chrono::ChBody> get_ChBody(void);
36  bool est_porosite(void);
37  void est_porosite(bool porosite);
38 protected:
39  std::shared_ptr<chrono::ChBody> m_particule;
40  bool m_porosite;
41 };
42 
43 class MSTRUCT_GROUPE_PARTICULE
44 {
45 public:
46  MSTRUCT_GROUPE_PARTICULE(std::string nom,int type_particule);
47  ~MSTRUCT_GROUPE_PARTICULE(void);
48  std::vector<MSTRUCT_CHRONO_PARTICULE*>* get_vector_particule(void);
49  std::string get_nom(void);
50  int get_type_particule(void);
51 protected:
52  std::string m_nom;
53  int m_type_particule;
54  std::vector<MSTRUCT_CHRONO_PARTICULE*> m_vector_particule_chrono;
55 };
56 
57 class MSTRUCT_CHRONO_PARTICULE_SPHERE: public MSTRUCT_CHRONO_PARTICULE
58 {
59 public:
60  MSTRUCT_CHRONO_PARTICULE_SPHERE(std::shared_ptr<chrono::ChBody> particule,double rayon_ini,double rayon_sim);
61  double get_rayon_ini(void);
62  double get_rayon_sim(void);
63 protected:
64  double m_rayon_ini;
65  double m_rayon_sim;
66 };
67 
68 class MSTRUCT_CHRONO_PARTICULE_CYLINDRE: public MSTRUCT_CHRONO_PARTICULE
69 {
70 public:
71  MSTRUCT_CHRONO_PARTICULE_CYLINDRE(std::shared_ptr<chrono::ChBody> particule,double rayon_ini,double rayon_sim,double longueur_ini,double longueur_sim);
72  double get_rayon_ini(void);
73  double get_rayon_sim(void);
74  double get_longueur_ini(void);
75  double get_longueur_sim(void);
76 protected:
77  double m_rayon_ini;
78  double m_rayon_sim;
79  double m_longueur_ini;
80  double m_longueur_sim;
81 };
82 
83 class MSTRUCT_GENERATEUR_DCR : public MSTRUCT_GENERATEUR
84 {
85 public:
86  MSTRUCT_GENERATEUR_DCR(MG_GESTIONNAIRE* mg_gestionnaire,char* nom_mgcg_modele);
87  ~MSTRUCT_GENERATEUR_DCR(void);
88  virtual int get_type(void);
89  void change_friction(double friction);
90  void change_facteur_reduction_vitesse(double facteur_reduction_vitesse);
91  void change_eps_vitesse(double eps_vitesse);
92  void change_pas_temps(double pas_temps);
93  void change_temps_max_sim(double temps);
94  int ajouter_spheres(std::string nom,
95  double mu_rayon,double sigma_rayon,int type_distribution_rayon,
96  double fraction_volumique_cible,double eps_frac_vol,bool porosite=false);
97  int ajouter_cylindres(std::string nom,
98  double mu_rayon,double sigma_rayon,int type_distribution_rayon,
99  double mu_longueur,double sigma_longueur,int type_distribution_longueur,
100  double mu_theta, double sigma_theta, int type_distribution_theta,
101  double mu_phi, double sigma_phi, int type_distribution_phi,
102  double fraction_volumique_cible,double eps_frac_vol,bool porosite=false);
103  int lancer_simulation(void);
104  int generer_geometrie(void);
105  int generer_geometrie_avec_changement(void);
106  int changement_geometrie(void);
107  virtual int construire(MSTRUCT_VES* ves);
108  void active_interface_graphique(bool avec_interface_graphique);
109 protected:
110 
111  int creer_systeme_physique(void);
112  int creer_frontiere_boite(void);
113  int cree_interface_graphique(void);
114  void ralentir_particules(void);
115 
116  bool m_avec_interface_graphique;
117  double m_friction;
118  double m_facteur_reduction_vitesse;
119  double m_eps_vitesse;
120  double m_pas_temps;
121  double m_temps_max_sim;
122  chrono::ChSystemNSC *m_systeme_physique;
123  chrono::irrlicht::ChIrrApp *m_irrapp;
124  std::vector<std::shared_ptr<chrono::ChBody>> m_vector_particule_chrono;
125  std::map<std::string,MSTRUCT_GROUPE_PARTICULE*> m_map_groupe_particule;
126 };
127 
128 
129 
130 
131 
132 #endif
133 #endif
virtual int construire(MSTRUCT_VES *ves)=0
virtual int get_type(void)=0