MAGiC  V5.0
Mailleurs Automatiques de Géometries intégrés à la Cao
fct_taille_fem_solution_generateur_isotrope.cpp
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 //####// fct_taille_fem_solution_generateur_isotrope.cpp
15 //####//
16 //####//------------------------------------------------------------
17 //####//------------------------------------------------------------
18 //####// COPYRIGHT 2000-2024
19 //####// jeu 13 jun 2024 11:58:52 EDT
20 //####//------------------------------------------------------------
21 //####//------------------------------------------------------------
22 #include "gestionversion.h"
23 #include "mg_gestionnaire.h"
24 #include <math.h>
25 #include "ot_mathematique.h"
26 #include "mailleur_fem.h"
27 #include <fem_solution.h>
28 #include "mailleur3d_structure.h"
30 
31 
32 FCT_TAILLE_FEM_SOLUTION_GENERATEUR_ISOTROPE::FCT_TAILLE_FEM_SOLUTION_GENERATEUR_ISOTROPE(MG_GESTIONNAIRE *gesttmp,MG_GEOMETRIE* geotmp,double dg,int fechantillon,int nxtmp,int nytmp,int nztmp,char *nomsolution):FCT_TAILLE_FEM_SOLUTION(gesttmp,nxtmp,nytmp,nztmp),geo(geotmp),ecart_nodal(dg),fechan(fechantillon),facteur_grossissement(1.125),typedata(10),carteini(NULL)
33 {
34 strcpy(nom,nomsolution);
35 typedata=10;
36 }
37 FCT_TAILLE_FEM_SOLUTION_GENERATEUR_ISOTROPE::FCT_TAILLE_FEM_SOLUTION_GENERATEUR_ISOTROPE(MG_GESTIONNAIRE *gesttmp,MG_MAILLAGE* maitmp,double dg,int fechantillon,int nxtmp,int nytmp,int nztmp,char *nomsolution):FCT_TAILLE_FEM_SOLUTION(gesttmp,nxtmp,nytmp,nztmp),mai(maitmp),ecart_nodal(dg),fechan(fechantillon),facteur_grossissement(1.125),typedata(11),carteini(NULL)
38 {
39 strcpy(nom,nomsolution);
40 typedata=11;
41 }
42 
43 FCT_TAILLE_FEM_SOLUTION_GENERATEUR_ISOTROPE::FCT_TAILLE_FEM_SOLUTION_GENERATEUR_ISOTROPE(MG_GESTIONNAIRE *gesttmp,MG_GEOMETRIE* geotmp,FCT_TAILLE* carte,int fechantillon,int nxtmp,int nytmp,int nztmp,char *nomsolution):FCT_TAILLE_FEM_SOLUTION(gesttmp,nxtmp,nytmp,nztmp),geo(geotmp),ecart_nodal(0.),fechan(fechantillon),facteur_grossissement(1.125),typedata(10),carteini(carte)
44 {
45 strcpy(nom,nomsolution);
46 typedata=10;
47 }
48 FCT_TAILLE_FEM_SOLUTION_GENERATEUR_ISOTROPE::FCT_TAILLE_FEM_SOLUTION_GENERATEUR_ISOTROPE(MG_GESTIONNAIRE *gesttmp,MG_MAILLAGE* maitmp,FCT_TAILLE* carte,int fechantillon,int nxtmp,int nytmp,int nztmp,char *nomsolution):FCT_TAILLE_FEM_SOLUTION(gesttmp,nxtmp,nytmp,nztmp),mai(maitmp),ecart_nodal(0.),fechan(fechantillon),facteur_grossissement(1.125),typedata(11),carteini(carte)
49 {
50 strcpy(nom,nomsolution);
51 typedata=11;
52 }
53 
54 FCT_TAILLE_FEM_SOLUTION_GENERATEUR_ISOTROPE::FCT_TAILLE_FEM_SOLUTION_GENERATEUR_ISOTROPE(FCT_TAILLE_FEM_SOLUTION_GENERATEUR_ISOTROPE& mdd):FCT_TAILLE_FEM_SOLUTION(mdd),geo(mdd.geo),mai(mdd.mai),ecart_nodal(mdd.ecart_nodal),fechan(mdd.fechan),facteur_grossissement(mdd.facteur_grossissement),typedata(mdd.typedata),carteini(mdd.carteini)
55 {
56 strcpy(nom,mdd.nom);
57 }
58 
59 
61 {
62 
63 }
64 
65 
67 {
68 if (gest==NULL)
69  {
71  gest_alloue=true;
72  }
73 double xmin=1e308;
74 double ymin=1e308;
75 double zmin=1e308;
76 double xmax=-1e308;
77 double ymax=-1e308;
78 double zmax=-1e308;
79 
80 if(typedata==10)
81 {
82 BOITE_3D boite;
83 bool affect=false;
84 int nbvol=geo->get_nb_mg_volume();
86 for (int j=0;j<nbvol;j++)
87  {
88  MG_VOLUME* vol=geo->get_mg_volume(j);
89  BOITE_3D tmp=vol->get_boite_3D();
90  if (affect==false) boite=tmp;
91  else boite=boite+tmp;
92  affect=true;
93  }
94 int nbcoque=geo->get_nb_mg_coque();
95 for (int j=0;j<nbcoque;j++)
96  {
97  MG_COQUE* coq=geo->get_mg_coque(j);
98  BOITE_3D tmp=coq->get_boite_3D();
99  if (affect==false) boite=tmp;
100  else boite=boite+tmp;
101  affect=true;
102  }
104 boite_englobante=boite;
105 }
106 if(typedata==11) // when there is no geometry, the bounding box is defined by the current mesh
107 {
108  LISTE_MG_NOEUD::iterator it;
109  for (MG_NOEUD* no=mai->get_premier_noeud(it);no!=NULL;no=mai->get_suivant_noeud(it))
110  {
111  if (no->get_x()<xmin) xmin=no->get_x();
112  if (no->get_y()<ymin) ymin=no->get_y();
113  if (no->get_z()<zmin) zmin=no->get_z();
114  if (no->get_x()>xmax) xmax=no->get_x();
115  if (no->get_y()>ymax) ymax=no->get_y();
116  if (no->get_z()>zmax) zmax=no->get_z();
117  }
118 boite_englobante.reinit(xmin,ymin,zmin,xmax,ymax,zmax);
119 }
122 mail.maille();
124 fem = new FEM_MAILLAGE(NULL, mai2,1);
127 m.maille(fem);
130 sol->change_legende(0,"metrique");
135 isotrope=true;
136 numchamp=0;
138 LISTE_FEM_ELEMENT3::iterator ite3;
139 for (FEM_ELEMENT3* ele=fem->get_premier_element3(ite3);ele!=NULL;ele=fem->get_suivant_element3(ite3))
140  element_structure.push_back(ele);
141 }
double get_xmin(void)
double get_zmin(void)
double get_zmax(void)
double get_xmax(void)
void change_grosseur(double f)
double get_ymax(void)
void reinit(double xmin, double ymin, double zmin, double xmax, double ymax, double zmax)
Definition: ot_boite_3d.cpp:55
double get_ymin(void)
FCT_TAILLE_FEM_SOLUTION_GENERATEUR_ISOTROPE(MG_GESTIONNAIRE *gesttmp, MG_GEOMETRIE *geotmp, double dg, int fechantillon, int nxtmp, int nytmp, int nztmp, char *nomsolution)
std::vector< FEM_ELEMENT3 * > element_structure
FEM_ELEMENT3 * get_suivant_element3(LISTE_FEM_ELEMENT3::iterator &it)
FEM_ELEMENT3 * get_premier_element3(LISTE_FEM_ELEMENT3::iterator &it)
void change_legende(int num, std::string val)
void active_solution(int num)
virtual int maille(class MG_GROUPE_TOPOLOGIQUE *mggt=NULL)
virtual BOITE_3D get_boite_3D(void)
Definition: mg_coque.cpp:212
static void change_pas_echantillon(int val)
static void restaure_pas_echantillon(void)
MG_COQUE * get_mg_coque(unsigned int num)
unsigned int get_nb_mg_coque(void)
MG_VOLUME * get_mg_volume(unsigned int num)
unsigned int get_nb_mg_volume(void)
unsigned int get_nb_mg_maillage(void)
MG_MAILLAGE * get_mg_maillage(unsigned int num)
int ajouter_fem_solution(FEM_SOLUTION *mgsol)
int ajouter_fem_maillage(FEM_MAILLAGE *femmai)
MG_NOEUD * get_premier_noeud(LISTE_MG_NOEUD::iterator &it)
MG_NOEUD * get_suivant_noeud(LISTE_MG_NOEUD::iterator &it)
virtual BOITE_3D get_boite_3D(void)
Definition: mg_volume.cpp:109
#define m(i, j)