ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/REPOS_ERICCA/magic/lib/microstructure/src/mstruct_generateur.h
Revision: 951
Committed: Fri Aug 10 15:17:17 2018 UTC (6 years, 9 months ago) by couturad
Content type: text/plain
File size: 4144 byte(s)
Log Message:
-> Ajout de Project Chrono (voir CMakeLists.txt).
-> Ajout d'un générateur de microstructure basé sur la dynamique des corps rigides (MSTRUCT_GENERATEUR_DCR).
-> Ajout d'un opérateur de décallage de la topologie (MG_CG_OP_TRANSF_DECALLAGE).
-> Retrait de «using namespace std»  (conflit avec namespace chrono) et modification des fichiers affectés.
-> Modification de mailleur2d.cpp afin d'enregistrer un fichier MAGiC (void.magic) lorsque le nombre d'itération dépasse la valeur maximale.

File Contents

# User Rev Content
1 couturad 919 #ifndef _MSTRUCT_GENERATEUR_
2     #define _MSTRUCT_GENERATEUR_
3     class MG_GESTIONNAIRE;
4     class MG_CG_MODELE;
5     #include "mstruct_ves.h"
6 couturad 951 #include "tpl_grille.h"
7     #include "mg_cg_groupe_forme.h"
8     #include "mg_cg_forme_volume.h"
9     #include "mg_cg_forme_volume_boite.h"
10 couturad 919
11 couturad 951
12     typedef void fonction_affiche(char *);
13     class MSTRUCT_GENERATEUR
14 couturad 919 {
15 couturad 951 public:
16     enum TYPE_GENERATEUR{RSA=0,DCR=1};
17     enum TYPE_DISTRIBUTION{FIXE=0,UNIFORME=1,NORMALE=2};
18     enum TYPE_INCLUSION{SPHERE=0,CYLINDRE=1,ELLIPSOIDE=2,BOITE=3};
19     MSTRUCT_GENERATEUR(MG_GESTIONNAIRE* mg_gestionnaire,char* nom_mgcg_modele);
20     ~MSTRUCT_GENERATEUR(void);
21     virtual MG_GESTIONNAIRE* get_mg_gestionnaire(void);
22     virtual MG_CG_MODELE* get_mgcg_modele(void);
23     virtual void change_mgcg_modele(MG_CG_MODELE* mgcg_modele);
24     virtual int construire(MSTRUCT_VES* ves)=0;
25     void change_boite3d_ves(BOITE_3D boite3d_ves);
26     void change_boite3d_distribution(BOITE_3D boite3d_distribution);
27     void change_intersection_bords_ves(bool intersection_bords_ves);
28     void change_angle_min(double angle_min);
29     void change_longueur_min(double longueur_min);
30     void change_aire_min(double aire_min);
31     void change_volume_min(double volume_min);
32     void change_distance_inter_volume_min(double distance_min);
33     void change_nb_pas_grille(int nb_pas_grille);
34     void change_nb_pas_echantillonage(int nb_pas_echantillonnage);
35     void change_precision(double precision);
36    
37     void active_affichage(fonction_affiche *fonc);
38     void affiche(char *message);
39     protected:
40    
41     int position_relative_inclusion_ves(MG_VOLUME* inclusion,bool &plan_x0yz,bool &plan_x1yz,bool &plan_xy0z,bool &plan_xy1z,bool &plan_xyz0,bool &plan_xyz1);
42     bool angle_entre_face_acceptable(MG_ARETE* mgarete);
43     bool longueur_acceptable(MG_ARETE* mgarete);
44     bool aire_acceptable(MG_FACE* mgface);
45     bool volume_acceptable(MG_VOLUME* mgvolume);
46     bool volume_intersection_ves_acceptable(MG_VOLUME* mgvolume);
47     bool distance_acceptable_bord_ves(MG_VOLUME* mgvolume);
48     bool configuration_acceptable(MG_CG_FORME_VOLUME* forme_volume_inclusion,MG_CG_FORME* forme_matrice=NULL);
49     bool positionnement_acceptable(MG_VOLUME* inclusion);
50     bool insertion_inclusion(MG_CG_FORME* forme_inclusion,
51     double fraction_volumique_cible,
52     double eps_fra_vol,
53     double &fraction_volumique_actuelle,
54     std::vector<MG_CG_FORME*> &vector_inclusion_genere,
55     int &position_relative,
56     std::vector<double> *vector_epaisseur_couche=NULL,
57     bool porosite=false);
58     bool insertion_inclusion(MG_CG_FORME* forme_inclusion,
59     double &fraction_volumique_actuelle,
60     std::vector<MG_CG_FORME*> &vector_inclusion_genere,
61     int &position_relative);
62     void echec_insertion_inclusion(std::vector<MG_CG_FORME*> &vector_forme,std::vector<MG_CG_OPERATEUR*> &vector_operateur);
63     int faces_correspondantes(MG_VOLUME* volume1, MG_VOLUME* volume2,double decallage,int nb_pas=32,double precision=1.0e-06);
64     bool lien_topologique_entre(MG_ELEMENT_TOPOLOGIQUE* mg_ele_topo1,MG_ELEMENT_TOPOLOGIQUE* mg_ele_topo2);
65     int configurer_volume_mince(MG_CG_FORME* forme,double epaisseur);
66     int configurer_volume_mince(MG_VOLUME* volume,double epaisseur);
67     void cree_vector_groupe_forme(std::string nom,std::vector<MG_CG_GROUPE_FORME*> &vector_groupe_forme,std::vector<double> *vector_epaisseur_couches=NULL);
68 couturad 919
69 couturad 951
70     enum POSITION_RELATIVE{INTERIEUR=0,EXTERIEUR=1,AU_BORD=2};
71     MG_GESTIONNAIRE* m_mg_gestionnaire;
72     MG_CG_MODELE* m_mgcg_modele;
73     BOITE_3D m_boite3d_ves;
74     BOITE_3D m_boite3d_distribution;
75     bool m_intersection_bords_ves;
76     double m_angle_min;
77     double m_longueur_min;
78     double m_aire_min;
79     double m_volume_min;
80     double m_distance_min;
81     int m_nb_pas_grille;
82     int m_nb_pas_echantillonnage;
83     double m_precision;
84     bool m_grille_init;
85     void initialiser_grille(void);
86     TPL_GRILLE<MG_VOLUME*> m_grille_volume_inclusion;
87     std::vector<MG_CG_GROUPE_FORME*> m_vector_mgcg_groupe_forme_inclusion;
88     MG_CG_FORME* m_matrice;
89     MG_CG_FORME* m_cube_initial;
90     TPL_GRILLE<MG_VOLUME*> m_grille_volume_porosite;
91     double m_nb_pas_x;
92     double m_nb_pas_y;
93     double m_nb_pas_z;
94    
95     int affichageactif;
96     fonction_affiche *fonc_affiche;
97     };
98    
99    
100 couturad 919 #endif