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 }
FEM_SOLUTION
Definition: fem_solution.h:40
fct_taille_fem_solution_generateur_isotrope.h
FCT_TAILLE_FEM_SOLUTION::nx
int nx
Definition: fct_taille_fem_solution.h:77
FEM_MAILLAGE::get_suivant_element3
FEM_ELEMENT3 * get_suivant_element3(LISTE_FEM_ELEMENT3::iterator &it)
Definition: fem_maillage.cpp:680
FCT_TAILLE_FEM_SOLUTION_GENERATEUR_ISOTROPE::typedata
int typedata
Definition: fct_taille_fem_solution_generateur_isotrope.h:58
MG_MAILLAGE::get_premier_noeud
MG_NOEUD * get_premier_noeud(LISTE_MG_NOEUD::iterator &it)
Definition: mg_maillage.cpp:548
gestionversion.h
MG_GESTIONNAIRE::ajouter_fem_maillage
int ajouter_fem_maillage(FEM_MAILLAGE *femmai)
Definition: mg_gestionnaire.cpp:641
MG_COQUE::get_boite_3D
virtual BOITE_3D get_boite_3D(void)
Definition: mg_coque.cpp:212
FCT_TAILLE_FEM_SOLUTION::element_structure
std::vector< FEM_ELEMENT3 * > element_structure
Definition: fct_taille_fem_solution.h:79
FCT_TAILLE_FEM_SOLUTION
Definition: fct_taille_fem_solution.h:37
BOITE_3D::get_xmin
double get_xmin(void)
Definition: ot_boite_3d.cpp:104
fem_solution.h
mg_gestionnaire.h
FCT_TAILLE_FEM_SOLUTION_GENERATEUR_ISOTROPE::construit
virtual void construit(void)
Definition: fct_taille_fem_solution_generateur_isotrope.cpp:66
FCT_TAILLE_FEM_SOLUTION::sol
FEM_SOLUTION * sol
Definition: fct_taille_fem_solution.h:69
FEM_ELEMENT3
Definition: fem_element3.h:34
FCT_TAILLE
Definition: fct_taille.h:30
MG_VOLUME
Definition: mg_volume.h:33
FCT_TAILLE_FEM_SOLUTION_GENERATEUR_ISOTROPE
Definition: fct_taille_fem_solution_generateur_isotrope.h:34
MG_GESTIONNAIRE
Definition: mg_gestionnaire.h:57
MG_GESTIONNAIRE::ajouter_fem_solution
int ajouter_fem_solution(FEM_SOLUTION *mgsol)
Definition: mg_gestionnaire.cpp:902
MAGIC::TYPE_SOLUTION::TENSEUR
@ TENSEUR
Definition: mg_definition.h:93
FCT_TAILLE_FEM_SOLUTION::fem
FEM_MAILLAGE * fem
Definition: fct_taille_fem_solution.h:71
MG_ELEMENT_TOPOLOGIQUE::restaure_pas_echantillon
static void restaure_pas_echantillon(void)
Definition: mg_element_topologique.h:112
BOITE_3D::get_zmax
double get_zmax(void)
Definition: ot_boite_3d.cpp:129
BOITE_3D::get_ymin
double get_ymin(void)
Definition: ot_boite_3d.cpp:114
FCT_TAILLE_FEM_SOLUTION_GENERATEUR_ISOTROPE::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)
Definition: fct_taille_fem_solution_generateur_isotrope.cpp:32
FEM_SOLUTION::active_solution
void active_solution(int num)
Definition: fem_solution.cpp:490
BOITE_3D::get_xmax
double get_xmax(void)
Definition: ot_boite_3d.cpp:109
FEM_MAILLAGE
Definition: fem_maillage.h:66
FCT_TAILLE_FEM_SOLUTION::gest
MG_GESTIONNAIRE * gest
Definition: fct_taille_fem_solution.h:70
FCT_TAILLE_FEM_SOLUTION::numchamp
int numchamp
Definition: fct_taille_fem_solution.h:72
MG_NOEUD
Definition: mg_noeud.h:41
FCT_TAILLE_FEM_SOLUTION_GENERATEUR_ISOTROPE::facteur_grossissement
double facteur_grossissement
Definition: fct_taille_fem_solution_generateur_isotrope.h:57
FCT_TAILLE_FEM_SOLUTION::isotrope
bool isotrope
Definition: fct_taille_fem_solution.h:73
MG_VOLUME::get_boite_3D
virtual BOITE_3D get_boite_3D(void)
Definition: mg_volume.cpp:109
FCT_TAILLE_FEM_SOLUTION_GENERATEUR_ISOTROPE::mai
MG_MAILLAGE * mai
Definition: fct_taille_fem_solution_generateur_isotrope.h:55
FCT_TAILLE_FEM_SOLUTION::pasz
double pasz
Definition: fct_taille_fem_solution.h:78
MG_GESTIONNAIRE::get_mg_maillage
MG_MAILLAGE * get_mg_maillage(unsigned int num)
Definition: mg_gestionnaire.cpp:550
MG_GEOMETRIE::get_nb_mg_coque
unsigned int get_nb_mg_coque(void)
Definition: mg_geometrie.cpp:1847
BOITE_3D::reinit
void reinit(double xmin, double ymin, double zmin, double xmax, double ymax, double zmax)
Definition: ot_boite_3d.cpp:55
ot_mathematique.h
BOITE_3D::get_ymax
double get_ymax(void)
Definition: ot_boite_3d.cpp:119
MAILLEUR_FEM
Definition: mailleur_fem.h:31
MG_GEOMETRIE::get_nb_mg_volume
unsigned int get_nb_mg_volume(void)
Definition: mg_geometrie.cpp:1712
FCT_TAILLE_FEM_SOLUTION::boite_englobante
BOITE_3D boite_englobante
Definition: fct_taille_fem_solution.h:76
FCT_TAILLE_FEM_SOLUTION_GENERATEUR_ISOTROPE::geo
MG_GEOMETRIE * geo
Definition: fct_taille_fem_solution_generateur_isotrope.h:52
mailleur3d_structure.h
BOITE_3D
Definition: ot_boite_3d.h:27
FCT_TAILLE_FEM_SOLUTION_GENERATEUR_ISOTROPE::~FCT_TAILLE_FEM_SOLUTION_GENERATEUR_ISOTROPE
~FCT_TAILLE_FEM_SOLUTION_GENERATEUR_ISOTROPE()
Definition: fct_taille_fem_solution_generateur_isotrope.cpp:60
FCT_TAILLE_FEM_SOLUTION::pasx
double pasx
Definition: fct_taille_fem_solution.h:78
FCT_TAILLE_FEM_SOLUTION_GENERATEUR_ISOTROPE::construit_particulier
virtual void construit_particulier(void)=0
MAILLEUR3D_STRUCTURE::maille
virtual int maille(class MG_GROUPE_TOPOLOGIQUE *mggt=NULL)
Definition: mailleur3d_structure.cpp:116
MG_GESTIONNAIRE::get_nb_mg_maillage
unsigned int get_nb_mg_maillage(void)
Definition: mg_gestionnaire.cpp:579
FCT_TAILLE_FEM_SOLUTION::gest_alloue
bool gest_alloue
Definition: fct_taille_fem_solution.h:80
BOITE_3D::get_zmin
double get_zmin(void)
Definition: ot_boite_3d.cpp:124
MG_GEOMETRIE
Definition: mg_geometrie.h:84
MG_ELEMENT_TOPOLOGIQUE::change_pas_echantillon
static void change_pas_echantillon(int val)
Definition: mg_element_topologique.h:111
MG_MAILLAGE
Definition: mg_maillage.h:62
MG_GEOMETRIE::get_mg_coque
MG_COQUE * get_mg_coque(unsigned int num)
Definition: mg_geometrie.cpp:1818
FCT_TAILLE_FEM_SOLUTION::ny
int ny
Definition: fct_taille_fem_solution.h:77
mailleur_fem.h
MG_COQUE
Definition: mg_coque.h:33
BOITE_3D::change_grosseur
void change_grosseur(double f)
Definition: ot_boite_3d.cpp:176
FCT_TAILLE_FEM_SOLUTION::nz
int nz
Definition: fct_taille_fem_solution.h:77
FCT_TAILLE_FEM_SOLUTION::pasy
double pasy
Definition: fct_taille_fem_solution.h:78
FCT_TAILLE_FEM_SOLUTION_GENERATEUR_ISOTROPE::fechan
int fechan
Definition: fct_taille_fem_solution_generateur_isotrope.h:54
FEM_SOLUTION::change_legende
void change_legende(int num, std::string val)
Definition: fem_solution.cpp:457
MAILLEUR3D_STRUCTURE
Definition: mailleur3d_structure.h:35
MG_MAILLAGE::get_suivant_noeud
MG_NOEUD * get_suivant_noeud(LISTE_MG_NOEUD::iterator &it)
Definition: mg_maillage.cpp:556
MG_GEOMETRIE::get_mg_volume
MG_VOLUME * get_mg_volume(unsigned int num)
Definition: mg_geometrie.cpp:1683
FEM_MAILLAGE::get_premier_element3
FEM_ELEMENT3 * get_premier_element3(LISTE_FEM_ELEMENT3::iterator &it)
Definition: fem_maillage.cpp:672
FCT_TAILLE_FEM_SOLUTION_GENERATEUR_ISOTROPE::nom
char nom[1000]
Definition: fct_taille_fem_solution_generateur_isotrope.h:56
MAGIC::ENTITE_SOLUTION::ENTITE_NOEUD
@ ENTITE_NOEUD
Definition: mg_definition.h:86
m
#define m(i, j)