MAGiC  V5.0
Mailleurs Automatiques de Géometries intégrés à la Cao
mstruct_analyse_champ.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_champ.cpp
15 //####//
16 //####//------------------------------------------------------------
17 //####//------------------------------------------------------------
18 //####// COPYRIGHT 2000-2024
19 //####// jeu 13 jun 2024 11:58:56 EDT
20 //####//------------------------------------------------------------
21 //####//------------------------------------------------------------
22 #include "mstruct_analyse_champ.h"
23 #include "mstruct_definition.h"
24 #include "magic_plot.h"
25 #include "ot_mathematique.h"
26 #include "fem_solution.h"
27 #include "mstruct_outils.h"
28 #include "mg_cg_forme.h"
29 #include "mg_cg_groupe_forme.h"
30 #include "mg_cg_assemblage.h"
31 #include "mg_cg_modele.h"
32 #include "mg_gestionnaire.h"
33 #include <string.h>
34 #include <math.h>
35 #include <limits>
36 
38 {
39 }
40 
42  std::string identifiant,
43  long int id_fem_solution,
44  int nb_champ,
45  double largeur_colonne,
46  std::string nom_groupe_forme,
47  BOITE_3D* boite_3d): MSTRUCT_ANALYSE(ves,identifiant,nom_groupe_forme,boite_3d)
48 {
49  m_id_fem_solution=id_fem_solution;
50  m_nb_champ=nb_champ;
51  m_moyenne = new double[m_nb_champ];
52  m_ecart_type = new double[m_nb_champ];
53  m_min = new double[m_nb_champ];
54  m_max = new double[m_nb_champ];
56  for(int i=0;i<m_nb_champ;i++)
57  {
58  m_moyenne[i]=0.0;
59  m_ecart_type[i]=0.0;
60  m_min[i]=0.0;
61  m_max[i]=0.0;
62  m_tab_histogramme[i] = new OT_HISTOGRAMME(largeur_colonne);
63  }
64 }
65 
66 MSTRUCT_ANALYSE_CHAMP::MSTRUCT_ANALYSE_CHAMP(std::string identifiant, int nb_champ, double largeur_colonne) : MSTRUCT_ANALYSE(identifiant)
67 {
69  m_nb_champ=nb_champ;
70  m_moyenne = new double[m_nb_champ];
71  m_ecart_type = new double[m_nb_champ];
72  m_min = new double[m_nb_champ];
73  m_max = new double[m_nb_champ];
75  for(int i=0;i<m_nb_champ;i++)
76  {
77  m_moyenne[i]=0.0;
78  m_ecart_type[i]=0.0;
79  m_min[i]=0.0;
80  m_max[i]=0.0;
81  m_tab_histogramme[i] = new OT_HISTOGRAMME(largeur_colonne);
82  }
83 }
84 
85 
87 {
90  m_moyenne = new double[m_nb_champ];
91  m_ecart_type = new double[m_nb_champ];
92  m_min = new double[m_nb_champ];
93  m_max = new double[m_nb_champ];
95  for(int i=0;i<m_nb_champ;i++)
96  {
97  if(cpy_data)
98  {
99  m_moyenne[i]=mdd.m_moyenne[i];
100  m_ecart_type[i]=mdd.m_ecart_type[i];
101  m_min[i]=mdd.m_min[i];
102  m_max[i]=mdd.m_max[i];
104  }
105  else
106  {
107  m_moyenne[i]=0.0;
108  m_ecart_type[i]=0.0;
109  m_min[i]=0.0;
110  m_max[i]=0.0;
112  }
113  }
114 }
115 
117 {
118  if(m_nb_champ>0)
119  {
120  delete [] m_moyenne;
121  delete [] m_ecart_type;
122  delete [] m_min;
123  delete [] m_max;
124  for(int i=0;i<m_nb_champ;i++) delete m_tab_histogramme[i];
125  delete [] m_tab_histogramme;
126  }
127 }
128 
130 {
131  return m_id_fem_solution;
132 }
133 
135 {
136  return m_nb_champ;
137 }
138 
140 {
141  return m_moyenne;
142 }
143 
145 {
146  return m_ecart_type;
147 }
148 
150 {
151  return m_min;
152 }
153 
155 {
156  return m_max;
157 }
158 
160 {
161  return m_tab_histogramme[num_champ];
162 }
163 
165 {
167 }
168 
169 MSTRUCT_ANALYSE_CHAMP * MSTRUCT_ANALYSE_CHAMP::calculer_ecart(std::string identifiant, double largeur_colonne, MSTRUCT_ANALYSE_CHAMP* champ_compare, int type_ecart)
170 {
172  ecart->change_identifiant(identifiant);
173  ecart->m_nb_champ=m_nb_champ;
174  ecart->m_id_fem_solution=-1;
175  ecart->m_moyenne = new double[m_nb_champ];
176  ecart->m_ecart_type = new double[m_nb_champ];
177  ecart->m_min = new double[m_nb_champ];
178  ecart->m_max = new double[m_nb_champ];
180  for(int i=0;i<ecart->m_nb_champ;i++)
181  {
182  ecart->m_moyenne[i]=0.0;
183  ecart->m_ecart_type[i]=0.0;
184  ecart->m_min[i]=0.0;
185  ecart->m_max[i]=0.0;
186  ecart->m_tab_histogramme[i]=new OT_HISTOGRAMME(largeur_colonne);
187  }
188  for(int i=0;i<ecart->m_nb_champ;i++)
189  {
191  {
192  if(std::fabs(champ_compare->m_moyenne[i])>1.0e-16) ecart->m_moyenne[i]=(m_moyenne[i]-champ_compare->m_moyenne[i])/champ_compare->m_moyenne[i];
193  else ecart->m_moyenne[i]=nan("");
194  ecart->m_ecart_type[i]=nan("");
195  ecart->m_min[i]=nan("");
196  ecart->m_max[i]=nan("");
197  std::map<long,double>::iterator it_his;
198  double val;
199  long l;
200  int k=get_distribution(i)->get_premiere_valeur(it_his,val,l);
201  while(k!=0)
202  {
203  double valcompare;
204  ecart->get_distribution(i)->get_valeur(l,valcompare);
205  if(std::fabs(valcompare)>1.0e-16) ecart->m_tab_histogramme[i]->ajouter_valeur(l,(val-valcompare)/valcompare);
206  else ecart->m_tab_histogramme[i]->ajouter_valeur(l,nan(""));
207  k=get_distribution(i)->get_suivante_valeur(it_his,val,l);
208  }
209  }
211  {
212  if(std::fabs(champ_compare->m_moyenne[i])>1.0e-16) ecart->m_moyenne[i]=std::fabs((m_moyenne[i]-champ_compare->m_moyenne[i])/champ_compare->m_moyenne[i]);
213  else ecart->m_moyenne[i]=nan("");
214  ecart->m_ecart_type[i]=nan("");
215  ecart->m_min[i]=nan("");
216  ecart->m_max[i]=nan("");
217  std::map<long,double>::iterator it_his;
218  double val;
219  long l;
220  int k=get_distribution(i)->get_premiere_valeur(it_his,val,l);
221  while(k!=0)
222  {
223  double valcompare;
224  ecart->get_distribution(i)->get_valeur(l,valcompare);
225  if(std::fabs(valcompare)>1.0e-16) ecart->m_tab_histogramme[i]->ajouter_valeur(l,std::fabs((val-valcompare)/valcompare));
226  else ecart->m_tab_histogramme[i]->ajouter_valeur(l,nan(""));
227  k=get_distribution(i)->get_suivante_valeur(it_his,val,l);
228  }
229  }
230  else if(type_ecart==MSTRUCT::TYPE_COMPARAISON::ECART_ABSOLUE)
231  {
232  ecart->m_moyenne[i]=std::fabs(m_moyenne[i]-champ_compare->m_moyenne[i]);
233  ecart->m_ecart_type[i]=nan("");
234  ecart->m_min[i]=nan("");
235  ecart->m_max[i]=nan("");
236  std::map<long,double>::iterator it_his;
237  double val;
238  long l;
239  int k=get_distribution(i)->get_premiere_valeur(it_his,val,l);
240  while(k!=0)
241  {
242  double valcompare;
243  ecart->get_distribution(i)->get_valeur(l,valcompare);
244  ecart->m_tab_histogramme[i]->ajouter_valeur(l,std::fabs(val-valcompare));
245  k=get_distribution(i)->get_suivante_valeur(it_his,val,l);
246  }
247  }
249  {
250  double val=(m_moyenne[i]-champ_compare->m_moyenne[i]);
251  ecart->m_moyenne[i]=val*val;
252  ecart->m_ecart_type[i]=nan("");
253  ecart->m_min[i]=nan("");
254  ecart->m_max[i]=nan("");
255  std::map<long,double>::iterator it_his;
256  long l;
257  int k=get_distribution(i)->get_premiere_valeur(it_his,val,l);
258  while(k!=0)
259  {
260  double valcompare;
261  ecart->get_distribution(i)->get_valeur(l,valcompare);
262  ecart->m_tab_histogramme[i]->ajouter_valeur(l,(val-valcompare)*(val-valcompare));
263  k=get_distribution(i)->get_suivante_valeur(it_his,val,l);
264  }
265  }
266  }
267  return ecart;
268 }
269 
270 MSTRUCT_ANALYSE_CHAMP * MSTRUCT_ANALYSE_CHAMP::calculer_ecart_chargement(std::string identifiant, double largeur_colonne, int type_chargement, int type_ecart)
271 {
273  ecart->change_identifiant(identifiant);
274  ecart->m_nb_champ=1;
275  ecart->m_id_fem_solution=-1;
276  ecart->m_moyenne = new double[m_nb_champ];
277  ecart->m_ecart_type = new double[m_nb_champ];
278  ecart->m_min = new double[m_nb_champ];
279  ecart->m_max = new double[m_nb_champ];
281  ecart->m_moyenne[0]=0.0;
282  ecart->m_ecart_type[0]=0.0;
283  ecart->m_min[0]=std::numeric_limits<double>::max();
284  ecart->m_max[0]=std::numeric_limits<double>::min();
285  ecart->m_tab_histogramme[0]=new OT_HISTOGRAMME(largeur_colonne);
286  double err[6];
287  if(type_chargement==MSTRUCT::TYPE_CHARGEMENT::SPHERIQUE)
288  {
289  err[0]=(3.0*m_moyenne[0])/(m_moyenne[0]+m_moyenne[1]+m_moyenne[2])-1.0;
290  err[1]=(3.0*m_moyenne[1])/(m_moyenne[0]+m_moyenne[1]+m_moyenne[2])-1.0;
291  err[2]=(3.0*m_moyenne[2])/(m_moyenne[0]+m_moyenne[1]+m_moyenne[2])-1.0;
292  err[3]=(3.0*m_moyenne[3])/(m_moyenne[0]+m_moyenne[1]+m_moyenne[2]);
293  err[4]=(3.0*m_moyenne[4])/(m_moyenne[0]+m_moyenne[1]+m_moyenne[2]);
294  err[5]=(3.0*m_moyenne[5])/(m_moyenne[0]+m_moyenne[1]+m_moyenne[2]);
295  }
296  else if(type_chargement==MSTRUCT::TYPE_CHARGEMENT::DEVIATORIQUE)
297  {
298  err[0]=(3.0*m_moyenne[0])/(m_moyenne[3]+m_moyenne[4]+m_moyenne[5]);
299  err[1]=(3.0*m_moyenne[1])/(m_moyenne[3]+m_moyenne[4]+m_moyenne[5]);
300  err[2]=(3.0*m_moyenne[2])/(m_moyenne[3]+m_moyenne[4]+m_moyenne[5]);
301  err[3]=(3.0*m_moyenne[3])/(m_moyenne[3]+m_moyenne[4]+m_moyenne[5])-1.0;
302  err[4]=(3.0*m_moyenne[4])/(m_moyenne[3]+m_moyenne[4]+m_moyenne[5])-1.0;
303  err[5]=(3.0*m_moyenne[5])/(m_moyenne[3]+m_moyenne[4]+m_moyenne[5])-1.0;
304  }
306  {
307  for(int i=0;i<6;i++) err[i]=std::fabs(err[i]);
308  }
310  {
311  for(int i=0;i<6;i++) err[i]*=err[i];
312  }
313  for(int i=0;i<6;i++)
314  {
315  ecart->m_moyenne[0]+=err[i];
316  if(err[i]<ecart->m_min[0]) ecart->m_min[0]=err[i];
317  if(err[i]>ecart->m_max[0]) ecart->m_max[0]=err[i];
318  ecart->m_tab_histogramme[0]->ajouter_valeur(err[i],(1./6.));
319  }
320  for(int i=0;i<6;i++)
321  {
322  ecart->m_ecart_type[0]+=(err[0]-ecart->m_moyenne[0])*(err[0]-ecart->m_moyenne[0]);
323  }
324  ecart->m_ecart_type[0]=std::sqrt(ecart->m_ecart_type[0]*(1.0/(5.0)));
325  return ecart;
326 }
327 
328 MSTRUCT_ANALYSE_CHAMP * MSTRUCT_ANALYSE_CHAMP::normaliser(std::string identifiant,double valeur_ref,double largeur_colonne)
329 {
331  norm->change_identifiant(identifiant);
332  norm->m_nb_champ=m_nb_champ;
333  norm->m_id_fem_solution=-1;
334  norm->m_moyenne = new double[m_nb_champ];
335  norm->m_ecart_type = new double[m_nb_champ];
336  norm->m_min = new double[m_nb_champ];
337  norm->m_max = new double[m_nb_champ];
339  for(int i=0;i<m_nb_champ;i++)
340  {
341  norm->m_tab_histogramme[i]=new OT_HISTOGRAMME(largeur_colonne);
342  }
343  for(int i=0;i<m_nb_champ;i++)
344  {
345  norm->m_moyenne[i]=m_moyenne[i]/valeur_ref;
346  norm->m_ecart_type[i]=m_ecart_type[i]/valeur_ref;
347  norm->m_min[i]=m_min[i]/valeur_ref;
348  norm->m_max[i]=m_max[i]/valeur_ref;
349  double lar_col=get_distribution(i)->get_largeur_colonne();
350  std::map<long,double>::iterator it_his;
351  double val;
352  long l;
353  int k=get_distribution(i)->get_premiere_valeur(it_his,val,l);
354  while(k!=0)
355  {
356  norm->m_tab_histogramme[i]->ajouter_valeur((l*lar_col)/valeur_ref,val);
357  k=get_distribution(i)->get_suivante_valeur(it_his,val,l);
358  }
359  }
360  return norm;
361 }
362 
364 {
366  MG_CG_GROUPE_FORME* groupe_forme=NULL;
369 }
370 
371 void MSTRUCT_ANALYSE_CHAMP::exporter(std::ofstream& ofstrm, long i, bool avec_entete, bool avec_graph, char* prefix_graph)
372 {
373  if(avec_entete) ofstrm << "#(1) [CHAMP](2-nb_champ) [±] [min] [max]" << std::endl;
374  ofstrm << i << " ";
375  for(int j=0;j<m_nb_champ;j++)
376  {
377  ofstrm << m_moyenne[j] << " ";
378  }
379  for(int j=0;j<m_nb_champ;j++)
380  {
381  ofstrm << m_ecart_type[j] << " ";
382  }
383  for(int j=0;j<m_nb_champ;j++)
384  {
385  ofstrm << m_min[j] << " ";
386  }
387  for(int j=0;j<m_nb_champ;j++)
388  {
389  ofstrm << m_max[j] << " ";
390  }
391  ofstrm << std::endl;
392  if(avec_graph)
393  for(int j=0;j<m_nb_champ;j++)
394  {
395  if(m_tab_histogramme[j]!=NULL)
396  {
397  char nom_fichier[500];
398  sprintf(nom_fichier,"%s/histo_%s_%i.txt",prefix_graph,m_identifiant.c_str(),j);
399  std::ofstream of_histo(nom_fichier,std::ios::out|std::ios::trunc);
400  of_histo.precision(16);
401  of_histo.setf(std::ios::showpoint);
402  m_tab_histogramme[j]->exporter(of_histo);
403  of_histo.close();
404  MAGIC_PLOT magic_plot;
405  char nom_plot[500];
406  sprintf(nom_plot,"%s/histo_%s_%i.plt",prefix_graph,m_identifiant.c_str(),j);
407  magic_plot.histogramme_couleur=MAGIC_PLOT::COULEUR::GRIS;
408  magic_plot.histogramme_titre=m_identifiant.c_str();
409  magic_plot.histogramme_axeX_nom="Valeur champ";
410  magic_plot.histogramme_axeY_nom="";
411  magic_plot.histogramme_nom_fichier_eps=std::string(m_identifiant+".eps").c_str();
412  sprintf(nom_fichier,"histo_%s_%i.txt",m_identifiant.c_str(),j);
413  magic_plot.plot_script_histogramme(nom_fichier,nom_plot,true);
414  }
415  if(m_nb_champ==6)
416  {
417  OT_TENSEUR tenseur(3,3);
418  tenseur(0,0)=m_moyenne[0];
419  tenseur(1,1)=m_moyenne[1];
420  tenseur(2,2)=m_moyenne[2];
421  tenseur(0,1)=m_moyenne[3];
422  tenseur(0,2)=m_moyenne[4];
423  tenseur(1,2)=m_moyenne[5];
424  tenseur(1,0)=m_moyenne[3];
425  tenseur(2,0)=m_moyenne[4];
426  tenseur(2,1)=m_moyenne[5];
427  OT_TENSEUR tenseur_ecart_type(3,3);
428  tenseur_ecart_type(0,0)=m_ecart_type[0];
429  tenseur_ecart_type(1,1)=m_ecart_type[1];
430  tenseur_ecart_type(2,2)=m_ecart_type[2];
431  tenseur_ecart_type(0,1)=m_ecart_type[3];
432  tenseur_ecart_type(0,2)=m_ecart_type[4];
433  tenseur_ecart_type(1,2)=m_ecart_type[5];
434  tenseur_ecart_type(1,0)=m_ecart_type[3];
435  tenseur_ecart_type(2,0)=m_ecart_type[4];
436  tenseur_ecart_type(2,1)=m_ecart_type[5];
437  char nom_plot[500];
438  sprintf(nom_plot,"%s/tenseur_%s.plt",prefix_graph,m_identifiant.c_str());
439  MAGIC_PLOT magic_plot;
440  magic_plot.tenseur_couleur=MAGIC_PLOT::COULEUR::GRIS;
441  magic_plot.tenseur_titre=m_identifiant.c_str();
442  magic_plot.tenseur_titrebarcouleur="";
443  magic_plot.plot_script_tenseur(2,tenseur,tenseur_ecart_type,nom_plot,true);
444  }
445  }
446 }
447 
448 void MSTRUCT_ANALYSE_CHAMP::enregistrer(std::ofstream& ofstrm)
449 {
450  long type_analyse=get_type();
451  ofstrm.write((char*)&type_analyse,sizeof(long));
453  ofstrm.write((char*)&m_id_fem_solution,sizeof(long));
454  ofstrm.write((char*)&m_nb_champ,sizeof(int));
455  for(int i=0;i<m_nb_champ;i++)
456  {
457  ofstrm.write((char*)&m_moyenne[i],sizeof(double));
458  ofstrm.write((char*)&m_ecart_type[i],sizeof(double));
459  ofstrm.write((char*)&m_min[i],sizeof(double));
460  ofstrm.write((char*)&m_max[i],sizeof(double));
462  }
463 }
464 
465 void MSTRUCT_ANALYSE_CHAMP::ouvrir(std::ifstream& ifstrm)
466 {
467  MSTRUCT_ANALYSE::ouvrir(ifstrm);
468  ifstrm.read((char*)&m_id_fem_solution,sizeof(long));
469  ifstrm.read((char*)&m_nb_champ,sizeof(int));
470  m_moyenne = new double[m_nb_champ];
471  m_ecart_type = new double[m_nb_champ];
472  m_min = new double[m_nb_champ];
473  m_max = new double[m_nb_champ];
475  for(int i=0;i<m_nb_champ;i++)
476  {
477  ifstrm.read((char*)&m_moyenne[i],sizeof(double));
478  ifstrm.read((char*)&m_ecart_type[i],sizeof(double));
479  ifstrm.read((char*)&m_min[i],sizeof(double));
480  ifstrm.read((char*)&m_max[i],sizeof(double));
482  m_tab_histogramme[i]->ouvrir_bin(ifstrm);
483  }
484 }
485 
487 {
489  char ligne[5000];
490  sprintf(ligne,"MSTRUCT_ANALYSE_CHAMP");
491  fonc(ligne);
492  sprintf(ligne,"-> ID FEM solution : %li", m_id_fem_solution);
493  fonc(ligne);
494  sprintf(ligne,"-> NB champ : %i", m_nb_champ);
495  fonc(ligne);
496  char valeur[100];
497  sprintf(ligne,"-> Moyenne : [");
498  for(int i=0;i<m_nb_champ-1;i++)
499  {
500  sprintf(valeur,"%lf,",m_moyenne[i]);
501  strcat(ligne,valeur);
502  }
503  sprintf(valeur,"%lf]",m_moyenne[m_nb_champ-1]);
504  strcat(ligne,valeur);
505  fonc(ligne);
506  sprintf(ligne,"-> Ecart-type : [");
507  for(int i=0;i<m_nb_champ-1;i++)
508  {
509  sprintf(valeur,"%lf,",m_ecart_type[i]);
510  strcat(ligne,valeur);
511  }
512  sprintf(valeur,"%lf]",m_ecart_type[m_nb_champ-1]);
513  strcat(ligne,valeur);
514  fonc(ligne);
515  sprintf(ligne,"-> Min : [");
516  for(int i=0;i<m_nb_champ-1;i++)
517  {
518  sprintf(valeur,"%lf,",m_min[i]);
519  strcat(ligne,valeur);
520  }
521  sprintf(valeur,"%lf]",m_min[m_nb_champ-1]);
522  strcat(ligne,valeur);
523  fonc(ligne);
524  sprintf(ligne,"-> Max : [");
525  for(int i=0;i<m_nb_champ-1;i++)
526  {
527  sprintf(valeur,"%lf,",m_max[i]);
528  strcat(ligne,valeur);
529  }
530  sprintf(valeur,"%lf]",m_max[m_nb_champ-1]);
531  strcat(ligne,valeur);
532  fonc(ligne);
533  for(int i=0;i<m_nb_champ;i++)
534  {
535  sprintf(ligne,"-> OT_HISTOGRAMME[%i] : nb_colonne(%li), largeur_colonne(%lf), xmin(%lf), xmax(%lf)",i,
536  m_tab_histogramme[i]->get_nb_colonne(),
537  m_tab_histogramme[i]->get_largeur_colonne(),
538  m_tab_histogramme[i]->get_x_min(),
539  m_tab_histogramme[i]->get_x_max());
540  fonc(ligne);
541  }
542 }
OT_HISTOGRAMME::ajouter_valeur
void ajouter_valeur(double x, double val)
Definition: ot_mathematique.cpp:90
FEM_SOLUTION
Definition: fem_solution.h:40
mg_cg_forme.h
MSTRUCT::ECART_RELATIF
@ ECART_RELATIF
Definition: mstruct_definition.h:85
mstruct_outils.h
OT_HISTOGRAMME
Definition: ot_mathematique.h:34
fem_solution.h
mg_gestionnaire.h
MSTRUCT_ANALYSE::enregistrer
virtual void enregistrer(std::ofstream &ofstrm)
Definition: mstruct_analyse.cpp:100
mg_cg_groupe_forme.h
MSTRUCT_ANALYSE::m_boite_analyse
BOITE_3D * m_boite_analyse
Definition: mstruct_analyse.h:53
MSTRUCT_OUTILS::statistiques_champ_volumique
static int statistiques_champ_volumique(FEM_SOLUTION *fem_sol, MG_CG_GROUPE_FORME *groupe_forme, BOITE_3D *boite_analyse, double *moyenne, double *ecart_type, double *min, double *max, OT_HISTOGRAMME **tab_histogramme)
Definition: mstruct_outils.cpp:38
MG_CG_MODELE::get_mgcg_groupe_forme
MG_CG_GROUPE_FORME * get_mgcg_groupe_forme(std::string nom)
Definition: mg_cg_modele.cpp:504
MSTRUCT::CHAMP
@ CHAMP
Definition: mstruct_definition.h:58
MSTRUCT_ANALYSE_CHAMP::get_id_fem_solution
virtual long get_id_fem_solution(void)
Definition: mstruct_analyse_champ.cpp:129
MSTRUCT::ECART_RELATIF_ABSOLUE
@ ECART_RELATIF_ABSOLUE
Definition: mstruct_definition.h:86
MAGIC_PLOT::histogramme_titre
std::string histogramme_titre
Definition: magic_plot.h:53
MSTRUCT_ANALYSE_CHAMP::MSTRUCT_ANALYSE_CHAMP
MSTRUCT_ANALYSE_CHAMP(void)
Definition: mstruct_analyse_champ.cpp:37
MSTRUCT_ANALYSE_CHAMP::get_ecart_type
virtual double * get_ecart_type(void)
Definition: mstruct_analyse_champ.cpp:144
MSTRUCT_ANALYSE_CHAMP::get_moyenne
virtual double * get_moyenne(void)
Definition: mstruct_analyse_champ.cpp:139
OT_HISTOGRAMME::get_valeur
int get_valeur(double x, double &val)
Definition: ot_mathematique.cpp:127
MSTRUCT_ANALYSE_CHAMP::get_type
virtual long get_type(void)
Definition: mstruct_analyse_champ.cpp:164
MSTRUCT_ANALYSE::m_nom_groupe_forme
std::string m_nom_groupe_forme
Definition: mstruct_analyse.h:54
MSTRUCT_VES::get_mgcg_modele
virtual MG_CG_MODELE * get_mgcg_modele(void)
Definition: mstruct_ves.cpp:170
magic_plot.h
MSTRUCT_ANALYSE_CHAMP::m_max
double * m_max
Definition: mstruct_analyse_champ.h:58
MSTRUCT_ANALYSE_CHAMP::m_min
double * m_min
Definition: mstruct_analyse_champ.h:57
MAGIC_PLOT::tenseur_titrebarcouleur
std::string tenseur_titrebarcouleur
Definition: magic_plot.h:44
MSTRUCT_ANALYSE_CHAMP::normaliser
virtual MSTRUCT_ANALYSE_CHAMP * normaliser(std::string identifiant, double valeur_ref, double largeur_colonne)
Definition: mstruct_analyse_champ.cpp:328
MG_GESTIONNAIRE::get_fem_solutionid
FEM_SOLUTION * get_fem_solutionid(unsigned long num)
Definition: mg_gestionnaire.cpp:918
OT_HISTOGRAMME::enregistrer_bin
void enregistrer_bin(std::ofstream &ofstr)
Definition: ot_mathematique.cpp:236
MSTRUCT_ANALYSE_CHAMP::enregistrer
virtual void enregistrer(std::ofstream &ofstrm)
Definition: mstruct_analyse_champ.cpp:448
MSTRUCT_ANALYSE::m_ves
MSTRUCT_VES * m_ves
Definition: mstruct_analyse.h:55
MSTRUCT::ECART_ABSOLUE
@ ECART_ABSOLUE
Definition: mstruct_definition.h:87
DEVIATORIQUE
@ DEVIATORIQUE
Definition: ve_definition.h:47
OT_TENSEUR
Definition: ot_tenseur.h:41
MSTRUCT_VES::get_mg_gestionnaire
virtual MG_GESTIONNAIRE * get_mg_gestionnaire(void)
Definition: mstruct_ves.cpp:130
MSTRUCT_ANALYSE
Definition: mstruct_analyse.h:30
MSTRUCT_ANALYSE_CHAMP::m_tab_histogramme
OT_HISTOGRAMME ** m_tab_histogramme
Definition: mstruct_analyse_champ.h:59
MSTRUCT_ANALYSE_CHAMP::get_distribution
virtual OT_HISTOGRAMME * get_distribution(int num_champ)
Definition: mstruct_analyse_champ.cpp:159
MAGIC_PLOT::tenseur_titre
std::string tenseur_titre
Definition: magic_plot.h:43
MSTRUCT_ANALYSE_CHAMP::m_ecart_type
double * m_ecart_type
Definition: mstruct_analyse_champ.h:56
MSTRUCT_ANALYSE::change_identifiant
void change_identifiant(std::string identifiant)
Definition: mstruct_analyse.cpp:69
MSTRUCT_ANALYSE_CHAMP::calculer_ecart
virtual MSTRUCT_ANALYSE_CHAMP * calculer_ecart(std::string identifiant, double largeur_colonne, MSTRUCT_ANALYSE_CHAMP *champ_compare, int type_ecart)
Definition: mstruct_analyse_champ.cpp:169
OT_HISTOGRAMME::exporter
void exporter(std::ofstream &ofstrm)
Definition: ot_mathematique.cpp:291
MSTRUCT::ECART_QUADRATIQUE
@ ECART_QUADRATIQUE
Definition: mstruct_definition.h:88
MSTRUCT_ANALYSE_CHAMP::~MSTRUCT_ANALYSE_CHAMP
~MSTRUCT_ANALYSE_CHAMP(void)
Definition: mstruct_analyse_champ.cpp:116
mstruct_definition.h
MSTRUCT_ANALYSE_CHAMP::calculer_ecart_chargement
virtual MSTRUCT_ANALYSE_CHAMP * calculer_ecart_chargement(std::string identifiant, double largeur_colonne, int type_chargement, int type_ecart)
Definition: mstruct_analyse_champ.cpp:270
MSTRUCT_VES
Definition: mstruct_ves.h:45
MG_CG_GROUPE_FORME
Definition: mg_cg_groupe_forme.h:30
ot_mathematique.h
MSTRUCT_ANALYSE_CHAMP::affiche_contenu
virtual void affiche_contenu(fonction_affiche *fonc)
Definition: mstruct_analyse_champ.cpp:486
mg_cg_modele.h
MSTRUCT_ANALYSE_CHAMP::m_id_fem_solution
long m_id_fem_solution
Definition: mstruct_analyse_champ.h:53
MAGIC_PLOT::plot_script_tenseur
void plot_script_tenseur(int num, OT_TENSEUR tens1, OT_TENSEUR tens2, std::string output, bool aveccouleur=false)
Definition: magic_plot.cpp:60
mg_cg_assemblage.h
MSTRUCT_ANALYSE_CHAMP::exporter
virtual void exporter(std::ofstream &ofstrm, long i, bool avec_entete=false, bool avec_graph=false, char *prefix_graph=(char *)"")
Definition: mstruct_analyse_champ.cpp:371
BOITE_3D
Definition: ot_boite_3d.h:27
MSTRUCT_ANALYSE_CHAMP
Definition: mstruct_analyse_champ.h:28
MSTRUCT_ANALYSE_CHAMP::get_max
virtual double * get_max(void)
Definition: mstruct_analyse_champ.cpp:154
MSTRUCT_ANALYSE_CHAMP::m_nb_champ
int m_nb_champ
Definition: mstruct_analyse_champ.h:54
OT_HISTOGRAMME::get_premiere_valeur
int get_premiere_valeur(std::map< long, double >::iterator &it, double &valeur)
Definition: ot_mathematique.cpp:146
sqrt
double2 sqrt(double2 &val)
Definition: ot_doubleprecision.cpp:345
OT_HISTOGRAMME::ouvrir_bin
void ouvrir_bin(std::ifstream &ifstr)
Definition: ot_mathematique.cpp:254
MSTRUCT_ANALYSE::affiche_contenu
virtual void affiche_contenu(fonction_affiche *fonc)
Definition: mstruct_analyse.cpp:171
SPHERIQUE
@ SPHERIQUE
Definition: ve_definition.h:46
MAGIC_PLOT
Definition: magic_plot.h:27
MAGIC_PLOT::tenseur_couleur
int tenseur_couleur
Definition: magic_plot.h:42
MSTRUCT_ANALYSE::m_identifiant
std::string m_identifiant
Definition: mstruct_analyse.h:52
MSTRUCT_ANALYSE_CHAMP::m_moyenne
double * m_moyenne
Definition: mstruct_analyse_champ.h:55
mstruct_analyse_champ.h
fonction_affiche
void fonction_affiche(char *)
Definition: fct_taille.h:28
MSTRUCT_ANALYSE::ouvrir
virtual void ouvrir(std::ifstream &ifstrm)
Definition: mstruct_analyse.cpp:131
MAGIC_PLOT::histogramme_nom_fichier_eps
std::string histogramme_nom_fichier_eps
Definition: magic_plot.h:54
MSTRUCT_ANALYSE_CHAMP::get_min
virtual double * get_min(void)
Definition: mstruct_analyse_champ.cpp:149
MAGIC_PLOT::histogramme_axeX_nom
std::string histogramme_axeX_nom
Definition: magic_plot.h:55
MSTRUCT_ANALYSE_CHAMP::get_nb_champ
virtual int get_nb_champ(void)
Definition: mstruct_analyse_champ.cpp:134
MAGIC_PLOT::plot_script_histogramme
void plot_script_histogramme(std::string data_histogramme, std::string output, bool aveccouleur=false)
Definition: magic_plot.cpp:147
OT_HISTOGRAMME::get_largeur_colonne
double get_largeur_colonne(void)
Definition: ot_mathematique.cpp:85
MSTRUCT_ANALYSE_CHAMP::executer
virtual void executer(void)
Definition: mstruct_analyse_champ.cpp:363
OT_HISTOGRAMME::get_suivante_valeur
int get_suivante_valeur(std::map< long, double >::iterator &it, double &valeur)
Definition: ot_mathematique.cpp:154
MAGIC_PLOT::histogramme_couleur
int histogramme_couleur
Definition: magic_plot.h:52
MAGIC_PLOT::histogramme_axeY_nom
std::string histogramme_axeY_nom
Definition: magic_plot.h:56
MSTRUCT_ANALYSE_CHAMP::ouvrir
virtual void ouvrir(std::ifstream &ifstrm)
Definition: mstruct_analyse_champ.cpp:465