ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/REPOS_ERICCA/magic/lib/microstructure/src/mstruct_generateur.h
Revision: 968
Committed: Sun Sep 16 15:27:49 2018 UTC (6 years, 7 months ago) by couturad
Content type: text/plain
File size: 4037 byte(s)
Log Message:
Ajout d'une condition de sortie et d'un renvoi d'erreur pour le mailleur FEM.
Subdivision des fichiers mstruct_analyse.h/.cpp en sous fichiers pour une meilleure lisibilite.
Ajout d'une analyse des modules d'elasticite.
Ajout d'une analyse de l'energie.
Reconfiguration du main de microstructure.exe (suppression d'actions obsolètes).
Reconfiguration des fichiers generer_nb_ves, post_process.

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 couturad 968
17 couturad 951 MSTRUCT_GENERATEUR(MG_GESTIONNAIRE* mg_gestionnaire,char* nom_mgcg_modele);
18 couturad 966 MSTRUCT_GENERATEUR(MSTRUCT_GENERATEUR &mcpy);
19 couturad 951 ~MSTRUCT_GENERATEUR(void);
20     virtual MG_GESTIONNAIRE* get_mg_gestionnaire(void);
21     virtual MG_CG_MODELE* get_mgcg_modele(void);
22     virtual void change_mgcg_modele(MG_CG_MODELE* mgcg_modele);
23     virtual int construire(MSTRUCT_VES* ves)=0;
24     void change_boite3d_ves(BOITE_3D boite3d_ves);
25     void change_boite3d_distribution(BOITE_3D boite3d_distribution);
26     void change_intersection_bords_ves(bool intersection_bords_ves);
27     void change_angle_min(double angle_min);
28     void change_longueur_min(double longueur_min);
29     void change_aire_min(double aire_min);
30     void change_volume_min(double volume_min);
31     void change_distance_inter_volume_min(double distance_min);
32     void change_nb_pas_grille(int nb_pas_grille);
33     void change_nb_pas_echantillonage(int nb_pas_echantillonnage);
34     void change_precision(double precision);
35 couturad 966 double get_fraction_volumique_groupe_forme(std::string nom);
36 couturad 951 void active_affichage(fonction_affiche *fonc);
37     void affiche(char *message);
38     protected:
39    
40     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);
41     bool angle_entre_face_acceptable(MG_ARETE* mgarete);
42     bool longueur_acceptable(MG_ARETE* mgarete);
43     bool aire_acceptable(MG_FACE* mgface);
44     bool volume_acceptable(MG_VOLUME* mgvolume);
45     bool volume_intersection_ves_acceptable(MG_VOLUME* mgvolume);
46     bool distance_acceptable_bord_ves(MG_VOLUME* mgvolume);
47     bool configuration_acceptable(MG_CG_FORME_VOLUME* forme_volume_inclusion,MG_CG_FORME* forme_matrice=NULL);
48     bool positionnement_acceptable(MG_VOLUME* inclusion);
49     bool insertion_inclusion(MG_CG_FORME* forme_inclusion,
50     double fraction_volumique_cible,
51     double eps_fra_vol,
52     double &fraction_volumique_actuelle,
53     std::vector<MG_CG_FORME*> &vector_inclusion_genere,
54     int &position_relative,
55     std::vector<double> *vector_epaisseur_couche=NULL,
56     bool porosite=false);
57     bool insertion_inclusion(MG_CG_FORME* forme_inclusion,
58     double &fraction_volumique_actuelle,
59     std::vector<MG_CG_FORME*> &vector_inclusion_genere,
60     int &position_relative);
61     void echec_insertion_inclusion(std::vector<MG_CG_FORME*> &vector_forme,std::vector<MG_CG_OPERATEUR*> &vector_operateur);
62     int faces_correspondantes(MG_VOLUME* volume1, MG_VOLUME* volume2,double decallage,int nb_pas=32,double precision=1.0e-06);
63     bool lien_topologique_entre(MG_ELEMENT_TOPOLOGIQUE* mg_ele_topo1,MG_ELEMENT_TOPOLOGIQUE* mg_ele_topo2);
64     int configurer_volume_mince(MG_CG_FORME* forme,double epaisseur);
65     int configurer_volume_mince(MG_VOLUME* volume,double epaisseur);
66     void cree_vector_groupe_forme(std::string nom,std::vector<MG_CG_GROUPE_FORME*> &vector_groupe_forme,std::vector<double> *vector_epaisseur_couches=NULL);
67    
68     MG_GESTIONNAIRE* m_mg_gestionnaire;
69     MG_CG_MODELE* m_mgcg_modele;
70     BOITE_3D m_boite3d_ves;
71     BOITE_3D m_boite3d_distribution;
72     bool m_intersection_bords_ves;
73     double m_angle_min;
74     double m_longueur_min;
75     double m_aire_min;
76     double m_volume_min;
77     double m_distance_min;
78     int m_nb_pas_grille;
79     int m_nb_pas_echantillonnage;
80     double m_precision;
81     bool m_grille_init;
82     void initialiser_grille(void);
83     TPL_GRILLE<MG_VOLUME*> m_grille_volume_inclusion;
84     std::vector<MG_CG_GROUPE_FORME*> m_vector_mgcg_groupe_forme_inclusion;
85     MG_CG_FORME* m_matrice;
86     MG_CG_FORME* m_cube_initial;
87     TPL_GRILLE<MG_VOLUME*> m_grille_volume_porosite;
88     double m_nb_pas_x;
89     double m_nb_pas_y;
90     double m_nb_pas_z;
91    
92     int affichageactif;
93     fonction_affiche *fonc_affiche;
94     };
95    
96    
97 couturad 966 #endif