MAGiC  V5.0
Mailleurs Automatiques de Géometries intégrés à la Cao
mstruct_analyse_conductivite_thermique.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 //####// mstruct_analyse_conductivite_thermique.cpp
15 //####//
16 //####//------------------------------------------------------------
17 //####//------------------------------------------------------------
18 //####// COPYRIGHT 2000-2024
19 //####// jeu 13 jun 2024 11:58:56 EDT
20 //####//------------------------------------------------------------
21 //####//------------------------------------------------------------
23 #include "mstruct_definition.h"
24 #include "ot_boite_3d.h"
25 #include "fem_solution.h"
26 #include "mstruct_ves.h"
27 #include "mg_gestionnaire.h"
28 #include "mg_element_topologique.h"
29 #include <math.h>
30 #include <vector>
32 {
35  m_direction=-1;
36  m_lambda_x=NULL;
37  m_lambda_y=NULL;
38  m_lambda_z=NULL;
39 }
40 
42  std::string identifiant,
43  long id_fem_solution_temp,
44  long id_fem_solution_flux,
45  int direction,
46  BOITE_3D* boite_3d):MSTRUCT_ANALYSE(ves,identifiant)
47 {
48  if(boite_3d==NULL) change_boite_analyse(ves->get_boite3d_ves());
49  m_id_fem_solution_temp=id_fem_solution_temp;
50  m_id_fem_solution_flux=id_fem_solution_flux;
51  m_direction=direction;
52  m_lambda_x=NULL;
53  m_lambda_y=NULL;
54  m_lambda_z=NULL;
55 }
56 
57 
62 {
65  m_direction=-1;
66  m_lambda_x=lambda_x;
67  m_lambda_y=lambda_y;
68  m_lambda_z=lambda_z;
69 }
70 
72 {
79 }
80 
81 
83 {
84 }
85 
87 {
89 }
90 
92 {
93  return m_Lambda;
94 }
95 
96 
98 {
99  if(m_lambda_x==NULL && m_lambda_y==NULL && m_lambda_z==NULL)
100  {
102  LISTE_FEM_ELEMENT3::iterator it;
103  long k=0;
104  FEM_MAILLAGE* fem_mail = fem_sol_flux->get_maillage();
105 
106  double volume=0;
107  double grad_temp=0;
108  double flux=0;
109  for(FEM_ELEMENT3*ele=fem_mail->get_premier_element3(it);ele!=NULL;ele=fem_mail->get_suivant_element3(it))
110  {
111  BOITE_3D boite_ele=ele->get_boite_3D();
112  if(m_boite_analyse!=NULL)
113  if(!m_boite_analyse->contient(boite_ele.get_xcentre(),boite_ele.get_ycentre(),boite_ele.get_zcentre()))
114  {
115  k++;
116  continue;
117  }
118  MG_ELEMENT_TOPOLOGIQUE* topo=ele->get_lien_topologie();
119  double lambda_mat;
120  topo->get_valeur_ccf((char*)"Kx",lambda_mat);
121  double unite=fem_mail->get_mg_geometrie()->get_valeur_unite();
122  double val=0.;
123  int nbgauss=fem_sol_flux->get_nb_gauss(k);
124  for (int r=0;r<nbgauss;r++)
125  {
126  int degre=ele->get_degre_gauss(nbgauss);
127  double w;
128  double uvw[3];
129  ele->get_pt_gauss(degre,r,w,uvw);
130  double jac[9];
131  double det=ele->get_jacobien(jac,uvw,unite);
132  double valeur=fem_sol_flux->lire(k,m_direction,0,r)*fabs(det);
133  val=val+w*valeur;
134  volume=volume+w*fabs(det);
135  }
136  grad_temp+=-val/lambda_mat;
137  flux+=val;
138  k++;
139  }
140  grad_temp=grad_temp/volume;
141  flux=flux/volume;
142  m_Lambda=-flux/grad_temp;
143 
144  }
145  else if(m_lambda_x!=NULL && m_lambda_y!=NULL && m_lambda_z!=NULL)
146  {
148  }
149 }
150 
151 
152 
153 void MSTRUCT_ANALYSE_CONDUCTIVITE_THERMIQUE::exporter(std::ofstream& ofstrm, long i, bool avec_entete, bool avec_graph, char* prefix_graph)
154 {
155  if(avec_entete) ofstrm << "#(1) Lambda(2)" << std::endl;
156  ofstrm << i << " "
157  << m_Lambda << " " << std::endl;
158 }
159 
161 {
162  long type_analyse=get_type();
163  ofstrm.write((char*)&type_analyse,sizeof(long));
165  ofstrm.write((char*)&m_Lambda,sizeof(double));
166 }
167 
169 {
170  MSTRUCT_ANALYSE::ouvrir(ifstrm);
171  ifstrm.read((char*)&m_Lambda,sizeof(double));
172 }
173 
174 
FEM_SOLUTION
Definition: fem_solution.h:40
FEM_MAILLAGE::get_suivant_element3
FEM_ELEMENT3 * get_suivant_element3(LISTE_FEM_ELEMENT3::iterator &it)
Definition: fem_maillage.cpp:680
mstruct_analyse_conductivite_thermique.h
mstruct_ves.h
fem_solution.h
mg_gestionnaire.h
MSTRUCT_ANALYSE_CONDUCTIVITE_THERMIQUE::m_lambda_y
MSTRUCT_ANALYSE_CONDUCTIVITE_THERMIQUE * m_lambda_y
Definition: mstruct_analyse_conductivite_thermique.h:50
MSTRUCT_ANALYSE::enregistrer
virtual void enregistrer(std::ofstream &ofstrm)
Definition: mstruct_analyse.cpp:100
MSTRUCT_ANALYSE::m_boite_analyse
BOITE_3D * m_boite_analyse
Definition: mstruct_analyse.h:53
BOITE_3D::get_xcentre
double get_xcentre(void)
Definition: ot_boite_3d.cpp:156
MSTRUCT_ANALYSE_CONDUCTIVITE_THERMIQUE::m_id_fem_solution_flux
long m_id_fem_solution_flux
Definition: mstruct_analyse_conductivite_thermique.h:47
MSTRUCT_ANALYSE_CONDUCTIVITE_THERMIQUE::exporter
void exporter(std::ofstream &ofstrm, long i, bool avec_entete=false, bool avec_graph=false, char *prefix_graph=(char *)"")
Definition: mstruct_analyse_conductivite_thermique.cpp:153
FEM_ELEMENT3
Definition: fem_element3.h:34
MSTRUCT_ANALYSE_CONDUCTIVITE_THERMIQUE::executer
virtual void executer(void)
Definition: mstruct_analyse_conductivite_thermique.cpp:97
FEM_MAILLAGE::get_mg_geometrie
MG_GEOMETRIE * get_mg_geometrie(void)
Definition: fem_maillage.cpp:88
MSTRUCT_ANALYSE_CONDUCTIVITE_THERMIQUE::m_lambda_z
MSTRUCT_ANALYSE_CONDUCTIVITE_THERMIQUE * m_lambda_z
Definition: mstruct_analyse_conductivite_thermique.h:51
FEM_SOLUTION::get_maillage
FEM_MAILLAGE * get_maillage(void)
Definition: fem_solution.cpp:472
MSTRUCT_ANALYSE_CONDUCTIVITE_THERMIQUE::MSTRUCT_ANALYSE_CONDUCTIVITE_THERMIQUE
MSTRUCT_ANALYSE_CONDUCTIVITE_THERMIQUE(void)
Definition: mstruct_analyse_conductivite_thermique.cpp:31
MSTRUCT_ANALYSE_CONDUCTIVITE_THERMIQUE::get_type
virtual long get_type(void)
Definition: mstruct_analyse_conductivite_thermique.cpp:86
MG_ELEMENT_TOPOLOGIQUE
Definition: mg_element_topologique.h:51
MG_GESTIONNAIRE::get_fem_solutionid
FEM_SOLUTION * get_fem_solutionid(unsigned long num)
Definition: mg_gestionnaire.cpp:918
MSTRUCT_ANALYSE_CONDUCTIVITE_THERMIQUE::m_lambda_x
MSTRUCT_ANALYSE_CONDUCTIVITE_THERMIQUE * m_lambda_x
Definition: mstruct_analyse_conductivite_thermique.h:49
BOITE_3D::get_zcentre
double get_zcentre(void)
Definition: ot_boite_3d.cpp:166
MSTRUCT_ANALYSE_CONDUCTIVITE_THERMIQUE::ouvrir
virtual void ouvrir(std::ifstream &ifstrm)
Definition: mstruct_analyse_conductivite_thermique.cpp:168
MSTRUCT_ANALYSE::m_ves
MSTRUCT_VES * m_ves
Definition: mstruct_analyse.h:55
MSTRUCT_VES::get_boite3d_ves
virtual BOITE_3D get_boite3d_ves(void)
Definition: mstruct_ves.cpp:197
MSTRUCT_VES::get_mg_gestionnaire
virtual MG_GESTIONNAIRE * get_mg_gestionnaire(void)
Definition: mstruct_ves.cpp:130
FEM_MAILLAGE
Definition: fem_maillage.h:66
MSTRUCT_ANALYSE
Definition: mstruct_analyse.h:30
MSTRUCT::CONDUCTIVITE_THERMIQUE
@ CONDUCTIVITE_THERMIQUE
Definition: mstruct_definition.h:66
BOITE_3D::get_ycentre
double get_ycentre(void)
Definition: ot_boite_3d.cpp:161
MSTRUCT_ANALYSE_CONDUCTIVITE_THERMIQUE::enregistrer
virtual void enregistrer(std::ofstream &ofstrm)
Definition: mstruct_analyse_conductivite_thermique.cpp:160
FEM_SOLUTION::lire
double lire(int i, int j, int coord=0, int num_no=0)
Definition: fem_solution.cpp:398
mstruct_definition.h
MSTRUCT_VES
Definition: mstruct_ves.h:45
MSTRUCT_ANALYSE_CONDUCTIVITE_THERMIQUE::get_Lambda
double get_Lambda(void)
Definition: mstruct_analyse_conductivite_thermique.cpp:91
MSTRUCT_ANALYSE_CONDUCTIVITE_THERMIQUE::m_id_fem_solution_temp
long m_id_fem_solution_temp
Definition: mstruct_analyse_conductivite_thermique.h:46
BOITE_3D
Definition: ot_boite_3d.h:27
MSTRUCT_ANALYSE_CONDUCTIVITE_THERMIQUE::m_Lambda
double m_Lambda
Definition: mstruct_analyse_conductivite_thermique.h:45
ot_boite_3d.h
mg_element_topologique.h
MSTRUCT_ANALYSE::change_boite_analyse
virtual void change_boite_analyse(BOITE_3D boite_3d)
Definition: mstruct_analyse.cpp:79
MSTRUCT_ANALYSE_CONDUCTIVITE_THERMIQUE::m_direction
int m_direction
Definition: mstruct_analyse_conductivite_thermique.h:48
MG_GEOMETRIE::get_valeur_unite
double get_valeur_unite(void)
Definition: mg_geometrie.cpp:2652
MSTRUCT_ANALYSE_CONDUCTIVITE_THERMIQUE
Definition: mstruct_analyse_conductivite_thermique.h:27
FEM_SOLUTION::get_nb_gauss
int get_nb_gauss(int i)
Definition: fem_solution.cpp:443
MSTRUCT_ANALYSE_CONDUCTIVITE_THERMIQUE::~MSTRUCT_ANALYSE_CONDUCTIVITE_THERMIQUE
~MSTRUCT_ANALYSE_CONDUCTIVITE_THERMIQUE(void)
Definition: mstruct_analyse_conductivite_thermique.cpp:82
BOITE_3D::contient
int contient(double x, double y, double z)
Definition: ot_boite_3d.cpp:270
MSTRUCT_ANALYSE::ouvrir
virtual void ouvrir(std::ifstream &ifstrm)
Definition: mstruct_analyse.cpp:131
MG_ELEMENT_TOPOLOGIQUE::get_valeur_ccf
virtual bool get_valeur_ccf(char *nom, double &val)
Definition: mg_element_topologique.cpp:310
FEM_MAILLAGE::get_premier_element3
FEM_ELEMENT3 * get_premier_element3(LISTE_FEM_ELEMENT3::iterator &it)
Definition: fem_maillage.cpp:672