MAGiC  V5.0
Mailleurs Automatiques de Géometries intégrés à la Cao
mstruct_analyse_polycristaux.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_polycristaux.cpp
15 //####//
16 //####//------------------------------------------------------------
17 //####//------------------------------------------------------------
18 //####// COPYRIGHT 2000-2024
19 //####// jeu 13 jun 2024 11:58:57 EDT
20 //####//------------------------------------------------------------
21 //####//------------------------------------------------------------
22 #include "gestionversion.h"
24 #include <math.h>
25 #include <mutex>
26 
27 
29 {
30 param.lire(nomparam);
31 }
32 
33 
35 {
36 }
37 
38 
39 
41 {
42 }
43 
44 
46 {
47 int nbessai=0;
48 for (int i=0;i<tab.size();i++)
49  {
50  if (i==0)
51  {
52  tab[0].essai=0;
53  nbessai++;
54  std::vector<int> lst;
55  listeessai.push_back(lst);
56  listeessai[nbessai-1].push_back(i);
57  }
58  else
59  {
60  bool trouve=false;
61  for (int j=0;j<listeessai.size();j++)
62  if (tab[i].nbcristaux==tab[listeessai[j][0]].nbcristaux)
63  if (tab[i].degre==tab[listeessai[j][0]].degre)
64  if (tab[i].nbphase==tab[listeessai[j][0]].nbphase)
65  {
66  tab[i].essai= tab[listeessai[j][0]].essai;
67  listeessai[tab[i].essai].push_back(i);
68  trouve=true;
69  }
70  if (trouve==false)
71  {
72  tab[i].essai=nbessai;
73  nbessai++;
74  std::vector<int> lst;
75  listeessai.push_back(lst);
76  listeessai[nbessai-1].push_back(i);
77  }
78  }
79  }
80 return listeessai.size();
81 
82 }
83 
84 
86 {
87 OT_VECTEUR_3D zero(0.,0.,0.);
88 cdmm=zero;cdme=zero;
89 KDH.zero();GDH.zero();EDH.zero();
90 KCH.zero();GCH.zero();ECH.zero();
91 masse.zero();volume.zero();
92 cumcdm.resize(get_nbechantillon(nbessai));
93 int nbph=tab[listeessai[nbessai][0]].nbphase;
94 cdmphase.resize(nbph);
95 cdmephase.resize(nbph);
96 cumcdmphase.resize(nbph);
97 masseph.resize(nbph);
98 volumeph.resize(nbph);
99 tens1m.reinit(3,3);tens2m.reinit(3,3);tens3m.reinit(3,3);
100 tens1e.reinit(3,3);tens2e.reinit(3,3);tens3e.reinit(3,3);
101 for (int i=0;i<3;i++)
102  for (int j=0;j<3;j++)
103  {
104  tens1m(i,j)=0.;tens2m(i,j)=0.;tens3m(i,j)=0.;
105  tens1e(i,j)=0.;tens2e(i,j)=0.;tens3e(i,j)=0.;
106  }
107 for (int i=0;i<nbph;i++)
108  {
109  cdmphase[i]=zero;
110  cdmephase[i]=zero;
111  masseph[i].zero();
112  volumeph[i].zero();
113  cumcdmphase[i].resize(get_nbechantillon(nbessai));
114  cumEDH.resize(get_nbechantillon(nbessai));
115  cumECH.resize(get_nbechantillon(nbessai));
116  cumiso.resize(get_nbechantillon(nbessai));
117  }
118 for (int i=0;i<get_nbechantillon(nbessai);i++)
119  {
120  KDH.moyenne=KDH.moyenne+tab[listeessai[nbessai][i]].KDH;
121  GDH.moyenne=GDH.moyenne+tab[listeessai[nbessai][i]].GDH;
122  EDH.moyenne=EDH.moyenne+tab[listeessai[nbessai][i]].EDH;
123  KCH.moyenne=KCH.moyenne+tab[listeessai[nbessai][i]].KCH;
124  GCH.moyenne=GCH.moyenne+tab[listeessai[nbessai][i]].GCH;
125  ECH.moyenne=ECH.moyenne+tab[listeessai[nbessai][i]].ECH;
126  masse.moyenne=masse.moyenne+tab[listeessai[nbessai][i]].masse;
127  volume.moyenne=volume.moyenne+tab[listeessai[nbessai][i]].volume;
128  cdmm=cdmm+tab[listeessai[nbessai][i]].cdm;
129  cumcdm[i]=cdmm/((double)i+1);
130  cumEDH[i]=EDH.moyenne/((double)i+1);
131  cumECH[i]=ECH.moyenne/((double)i+1);
132  for (int j=0;j<nbph;j++)
133  {
134  volumeph[j].moyenne=volumeph[j].moyenne+tab[listeessai[nbessai][i]].volumephase[j];
135  masseph[j].moyenne=masseph[j].moyenne+tab[listeessai[nbessai][i]].massephase[j];
136  cdmphase[j]=cdmphase[j]+tab[listeessai[nbessai][i]].cdmphase[j];
137  cumcdmphase[j][i]=cdmphase[j]/((double)i+1);
138  }
139  for (int ii=0;ii<3;ii++)
140  for (int jj=0;jj<3;jj++)
141  {
142  tens1m(ii,jj)=tens1m(ii,jj)+tab[listeessai[nbessai][i]].tens1(ii,jj);
143  tens2m(ii,jj)=tens2m(ii,jj)+tab[listeessai[nbessai][i]].tens1(ii,jj);
144  tens3m(ii,jj)=tens3m(ii,jj)+tab[listeessai[nbessai][i]].tens1(ii,jj);
145  }
146  }
147 KDH.moyenne=KDH.moyenne/(double)get_nbechantillon(nbessai);
148 GDH.moyenne=GDH.moyenne/(double)get_nbechantillon(nbessai);
149 EDH.moyenne=EDH.moyenne/(double)get_nbechantillon(nbessai);
150 KCH.moyenne=KCH.moyenne/(double)get_nbechantillon(nbessai);
151 GCH.moyenne=GCH.moyenne/(double)get_nbechantillon(nbessai);
152 ECH.moyenne=ECH.moyenne/(double)get_nbechantillon(nbessai);
153 masse.moyenne=masse.moyenne/(double)get_nbechantillon(nbessai);
155 cdmm=cdmm/(double)get_nbechantillon(nbessai);
156 for (int j=0;j<nbph;j++)
157  {
158  masseph[j].moyenne=masseph[j].moyenne/(double)get_nbechantillon(nbessai);
159  volumeph[j].moyenne=volumeph[j].moyenne/(double)get_nbechantillon(nbessai);
160  cdmphase[j]=cdmphase[j]/(double)get_nbechantillon(nbessai);
161  }
162 for (int ii=0;ii<3;ii++)
163  for (int jj=0;jj<3;jj++)
164  {
165  tens1m(ii,jj)=tens1m(ii,jj)/(double)get_nbechantillon(nbessai);
166  tens2m(ii,jj)=tens2m(ii,jj)/(double)get_nbechantillon(nbessai);
167  tens3m(ii,jj)=tens3m(ii,jj)/(double)get_nbechantillon(nbessai);
168  }
169 for (int i=0;i<get_nbechantillon(nbessai);i++)
170  {
171  KDH.ecart=KDH.ecart+(tab[listeessai[nbessai][i]].KDH-KDH.moyenne)*(tab[listeessai[nbessai][i]].KDH-KDH.moyenne);
172  GDH.ecart=GDH.ecart+(tab[listeessai[nbessai][i]].GDH-GDH.moyenne)*(tab[listeessai[nbessai][i]].GDH-GDH.moyenne);
173  EDH.ecart=EDH.ecart+(tab[listeessai[nbessai][i]].EDH-EDH.moyenne)*(tab[listeessai[nbessai][i]].EDH-EDH.moyenne);
174  KCH.ecart=KCH.ecart+(tab[listeessai[nbessai][i]].KDH-KCH.moyenne)*(tab[listeessai[nbessai][i]].KCH-KCH.moyenne);
175  GCH.ecart=GCH.ecart+(tab[listeessai[nbessai][i]].GDH-GCH.moyenne)*(tab[listeessai[nbessai][i]].GCH-GCH.moyenne);
176  ECH.ecart=ECH.ecart+(tab[listeessai[nbessai][i]].EDH-ECH.moyenne)*(tab[listeessai[nbessai][i]].ECH-ECH.moyenne);
177  masse.ecart=masse.ecart+(tab[listeessai[nbessai][i]].masse-masse.moyenne)*(tab[listeessai[nbessai][i]].masse-masse.moyenne);
178  volume.ecart=volume.ecart+(tab[listeessai[nbessai][i]].volume-volume.moyenne)*(tab[listeessai[nbessai][i]].volume-volume.moyenne);
179  cdme.change_x(cdme.get_x()+(tab[listeessai[nbessai][i]].cdm.get_x()-cdmm.get_x())*(tab[listeessai[nbessai][i]].cdm.get_x()-cdmm.get_x()));
180  cdme.change_y(cdme.get_y()+(tab[listeessai[nbessai][i]].cdm.get_y()-cdmm.get_y())*(tab[listeessai[nbessai][i]].cdm.get_y()-cdmm.get_y()));
181  cdme.change_z(cdme.get_z()+(tab[listeessai[nbessai][i]].cdm.get_z()-cdmm.get_z())*(tab[listeessai[nbessai][i]].cdm.get_z()-cdmm.get_z()));
182  for (int j=0;j<nbph;j++)
183  {
184  masseph[j].ecart=masseph[j].ecart+(tab[listeessai[nbessai][i]].massephase[j]-masseph[j].moyenne)*(tab[listeessai[nbessai][i]].massephase[j]-masseph[j].moyenne);
185  volumeph[j].ecart=volumeph[j].ecart+(tab[listeessai[nbessai][i]].volumephase[j]-volumeph[j].moyenne)*(tab[listeessai[nbessai][i]].volumephase[j]-volumeph[j].moyenne);
186  cdmephase[j].change_x(cdmephase[j].get_x()+(tab[listeessai[nbessai][i]].cdmphase[j].get_x()-cdmphase[j].get_x())*(tab[listeessai[nbessai][i]].cdmphase[j].get_x()-cdmphase[j].get_x()));
187  cdmephase[j].change_y(cdmephase[j].get_y()+(tab[listeessai[nbessai][i]].cdmphase[j].get_y()-cdmphase[j].get_x())*(tab[listeessai[nbessai][i]].cdmphase[j].get_y()-cdmphase[j].get_y()));
188  cdmephase[j].change_z(cdmephase[j].get_z()+(tab[listeessai[nbessai][i]].cdmphase[j].get_z()-cdmphase[j].get_x())*(tab[listeessai[nbessai][i]].cdmphase[j].get_z()-cdmphase[j].get_z()));
189  }
190  for (int ii=0;ii<3;ii++)
191  for (int jj=0;jj<3;jj++)
192  {
193  tens1e(ii,jj)=tens1e(ii,jj)+(tab[listeessai[nbessai][i]].tens1(ii,jj)-tens1m(ii,jj))*(tab[listeessai[nbessai][i]].tens1(ii,jj)-tens1m(ii,jj));
194  tens2e(ii,jj)=tens2e(ii,jj)+(tab[listeessai[nbessai][i]].tens2(ii,jj)-tens2m(ii,jj))*(tab[listeessai[nbessai][i]].tens2(ii,jj)-tens2m(ii,jj));
195  tens3e(ii,jj)=tens3e(ii,jj)+(tab[listeessai[nbessai][i]].tens3(ii,jj)-tens3m(ii,jj))*(tab[listeessai[nbessai][i]].tens3(ii,jj)-tens3m(ii,jj));
196  }
197 
198  }
199 KDH.ecart=sqrt(KDH.ecart/(double)get_nbechantillon(nbessai));
200 GDH.ecart=sqrt(GDH.ecart/(double)get_nbechantillon(nbessai));
201 EDH.ecart=sqrt(EDH.ecart/(double)get_nbechantillon(nbessai));
202 KCH.ecart=sqrt(KCH.ecart/(double)get_nbechantillon(nbessai));
203 GCH.ecart=sqrt(GCH.ecart/(double)get_nbechantillon(nbessai));
204 ECH.ecart=sqrt(ECH.ecart/(double)get_nbechantillon(nbessai));
205 
206 masse.ecart=sqrt(masse.ecart/(double)get_nbechantillon(nbessai));
207 volume.ecart=sqrt(volume.ecart/(double)get_nbechantillon(nbessai));
208 cdme.change_x(sqrt(cdme.get_x()/(double)get_nbechantillon(nbessai)));
209 cdme.change_y(sqrt(cdme.get_y()/(double)get_nbechantillon(nbessai)));
210 cdme.change_z(sqrt(cdme.get_z()/(double)get_nbechantillon(nbessai)));
211 for (int j=0;j<nbph;j++)
212 {
213  volumeph[j].ecart=sqrt(volumeph[j].ecart/(double)get_nbechantillon(nbessai));
214  masseph[j].ecart=sqrt(masseph[j].ecart/(double)get_nbechantillon(nbessai));
215  cdmephase[j].change_x(sqrt(cdmephase[j].get_x()/(double)get_nbechantillon(nbessai)));
216  cdmephase[j].change_y(sqrt(cdmephase[j].get_y()/(double)get_nbechantillon(nbessai)));
217  cdmephase[j].change_z(sqrt(cdmephase[j].get_z()/(double)get_nbechantillon(nbessai)));
218 }
219 for (int ii=0;ii<3;ii++)
220  for (int jj=0;jj<3;jj++)
221  {
222  tens1e(ii,jj)=sqrt(tens1e(ii,jj)/(double)get_nbechantillon(nbessai));
223  tens2e(ii,jj)=sqrt(tens2e(ii,jj)/(double)get_nbechantillon(nbessai));
224  tens3e(ii,jj)=sqrt(tens3e(ii,jj)/(double)get_nbechantillon(nbessai));
225  }
226 
227 
228 char nom[5000];
229 std::string nomcumul=param.get_nom("fichiercumul");
230 strcpy(nom,nomcumul.c_str());
231 enregistrer(nbessai,nom);
232 }
233 
234 
235 
237 {
238 std::mutex mtx;
239 char nom[5000];
240 std::string nomcumul=param.get_nom("fichiercumul");
241 strcpy(nom,nomcumul.c_str());
242 strcat(nom,".txt");
243 mtx.lock();
244 FILE* in=fopen(nom,"rt");
245  char mess[5000];
246  fgets(mess,5000,in);
247  while (feof(in)==false)
248  {
249  fgets(mess,5000,in);
250  if (feof(in)==true) continue;
251  char *p=mess;
252  int ok=0;
253  std::vector<double> valeurs;
254  while (ok==0)
255  {
256  double val;
257  sscanf(p,"%lf;" ,&val);
258  valeurs.push_back(val);
259  p=strchr(p,';');
260  if (p==NULL) ok=1;
261  else p++;
262  }
263 
265  res.nbcristaux=(int)(valeurs[0]);
266  res.degre=(int)(valeurs[1]);
267  res.dg=valeurs[2];
268  res.KDH=valeurs[3];
269  res.GDH=valeurs[4];
270  res.EDH=valeurs[5];
271  res.KCH=valeurs[6];
272  res.GCH=valeurs[7];
273  res.ECH=valeurs[8];
274  res.tens1(0,0)=valeurs[9];
275  res.tens1(1,0)=valeurs[10];
276  res.tens1(2,0)=valeurs[11];
277  res.tens1(0,1)=valeurs[12];
278  res.tens1(1,1)=valeurs[13];
279  res.tens1(2,1)=valeurs[14];
280  res.tens1(0,2)=valeurs[15];
281  res.tens1(1,2)=valeurs[16];
282  res.tens1(2,2)=valeurs[17];
283  res.tens2(0,0)=valeurs[18];
284  res.tens2(1,0)=valeurs[19];
285  res.tens2(2,0)=valeurs[20];
286  res.tens2(0,1)=valeurs[21];
287  res.tens2(1,1)=valeurs[22];
288  res.tens2(2,1)=valeurs[23];
289  res.tens2(0,2)=valeurs[24];
290  res.tens2(1,2)=valeurs[25];
291  res.tens2(2,2)=valeurs[26];
292  res.tens3(0,0)=valeurs[27];
293  res.tens3(1,0)=valeurs[28];
294  res.tens3(2,0)=valeurs[29];
295  res.tens3(0,1)=valeurs[30];
296  res.tens3(1,1)=valeurs[31];
297  res.tens3(2,1)=valeurs[32];
298  res.tens3(0,2)=valeurs[33];
299  res.tens3(1,2)=valeurs[34];
300  res.tens3(2,2)=valeurs[35];
301  res.nbphase=(int)(valeurs[36]);
302  for (int i=0;i<res.nbphase;i++)
303  {
304  res.cristauxphase.push_back((int)valeurs[37+i*6]);
305  res.volumephase.push_back(valeurs[38+i*6]);
306  res.massephase.push_back(valeurs[39+i*6]);
307  OT_VECTEUR_3D cdm(valeurs[40+i*6],valeurs[41+i*6],valeurs[42+i*6]);
308  res.cdmphase.push_back(cdm);
309  }
310  res.volume=valeurs[42+(res.nbphase-1)*6+1];
311  res.masse=valeurs[42+(res.nbphase-1)*6+2];
312  OT_VECTEUR_3D cdm(valeurs[42+(res.nbphase-1)*6+3],valeurs[42+(res.nbphase-1)*6+4],valeurs[42+(res.nbphase-1)*6+5]);
313  res.cdm=cdm;
314  res.Kvoigt=valeurs[42+(res.nbphase-1)*6+6];
315  res.Gvoigt=valeurs[42+(res.nbphase-1)*6+7];
316  res.Evoigt=valeurs[42+(res.nbphase-1)*6+8];
317  res.nuvoigt=valeurs[42+(res.nbphase-1)*6+9];
318  res.Kreuss=valeurs[42+(res.nbphase-1)*6+10];
319  res.Greuss=valeurs[42+(res.nbphase-1)*6+11];
320  res.Ereuss=valeurs[42+(res.nbphase-1)*6+12];
321  res.nureuss=valeurs[42+(res.nbphase-1)*6+13];
322  tab.push_back(res);
323  }
324 fclose(in);
325 mtx.unlock();
326 return tab.size();
327 }
328 
330 {
331 char nomout[5000];
332 sprintf(nomout,"%s%d.txt",nom,nbessai+1);
333 FILE* out=fopen(nomout,"wt");
334 fprintf(out,"----------------------------------------------------------\n");
335 fprintf(out,"nb cristaux = %d\n",tab[listeessai[nbessai][0]].nbcristaux);
336 fprintf(out,"nb phases = %d\n",tab[listeessai[nbessai][0]].nbphase);
337 fprintf(out,"degre = %d\n",tab[listeessai[nbessai][0]].degre);
338 fprintf(out,"nb echantillons = %d\n",get_nbechantillon(nbessai));
339 fprintf(out,"masse = %lf +- %lf \n",masse.moyenne,masse.ecart);
340 fprintf(out,"volume = %lf +- %lf \n",volume.moyenne,volume.ecart);
341 fprintf(out,"CDM : x=%lf +- %lf ,y=%lf +- %lf ,z=%lf +- %lf \n",cdmm.get_x(),cdme.get_x(),cdmm.get_y(),cdme.get_y(),cdmm.get_z(),cdme.get_z());
342 for (int i=0;i<tab[listeessai[nbessai][0]].nbphase;i++)
343  {
344  fprintf(out,"masse phase %d = %lf +- %lf \n",i+1,masseph[i].moyenne,masseph[i].ecart);
345  fprintf(out,"volume phase %d = %lf +- %lf \n",i+1,volumeph[i].moyenne,volumeph[i].ecart);
346  fprintf(out,"CDM phase %d : x=%lf +- %lf ,y=%lf +- %lf ,z=%lf +- %lf \n",i+1,cdmphase[i].get_x(),cdmephase[i].get_x(),cdmphase[i].get_y(),cdmephase[i].get_y(),cdmphase[i].get_z(),cdmephase[i].get_z());
347  }
348 fprintf(out,"----------------------------------------------------------\n");
349 fprintf(out,"KDH = %lf + %lf \n",KDH.moyenne,KDH.ecart);
350 fprintf(out,"GDH = %lf + %lf \n",GDH.moyenne,GDH.ecart);
351 fprintf(out,"EDH = %lf + %lf \n",EDH.moyenne,EDH.ecart);
352 fprintf(out,"KCH = %lf + %lf \n",KCH.moyenne,KCH.ecart);
353 fprintf(out,"GCH = %lf + %lf \n",GCH.moyenne,GCH.ecart);
354 fprintf(out,"ECH = %lf + %lf \n",ECH.moyenne,ECH.ecart);
355 fprintf(out,"----------------------------------------------------------\n");
356 fprintf(out,"tenseur orientation axe 1\n");
357 for (int ii=0;ii<3;ii++)
358  {
359  for (int jj=0;jj<3;jj++)
360  fprintf(out,"%lf +- %lf ",tens1m(ii,jj).get_x(),tens1e(ii,jj).get_x());
361  fprintf(out,"\n");
362  }
363 fprintf(out,"----------------------------------------------------------\n");
364 fprintf(out,"tenseur orientation axe 2\n");
365 for (int ii=0;ii<3;ii++)
366  {
367  for (int jj=0;jj<3;jj++)
368  fprintf(out,"%lf +- %lf ",tens2m(ii,jj).get_x(),tens2e(ii,jj).get_x());
369  fprintf(out,"\n");
370  }
371 fprintf(out,"----------------------------------------------------------\n");
372 fprintf(out,"tenseur orientation axe 3\n");
373 for (int ii=0;ii<3;ii++)
374  {
375  for (int jj=0;jj<3;jj++)
376  fprintf(out,"%lf +- %lf ",tens3m(ii,jj).get_x(),tens3e(ii,jj).get_x());
377  fprintf(out,"\n");
378  }
379 fprintf(out,"----------------------------------------------------------\n");
380 
381 
382 
383 
384 
385 
386 
387 for (int i=0;i<get_nbechantillon(nbessai);i++)
388  {
389  int n=listeessai[nbessai][i];
390  fprintf(out,";;;;;;;;;%d;%lf;%lf;%lf;%lf;%lf;%lf;;%lf;%lf;;",i+1,tab[n].KDH,tab[n].GDH,tab[n].EDH,tab[n].KCH,tab[n].GCH,tab[n].ECH,cumEDH[i],cumECH[i]);
391  OT_TENSEUR t(3,3);
392  t.identite();
393  double2 cst(1./3.);
394  t=cst*t;
395  double ecartiso1=0.;
396  double ecartiso2=0.;
397  double ecartiso3=0.;
398  for (int ii=0;ii<3;ii++)
399  for (int jj=0;jj<3;jj++)
400  {
401  ecartiso1=ecartiso1+(tab[n].tens1(ii,jj).get_x()-t(ii,jj).get_x())*(tab[n].tens1(ii,jj).get_x()-t(ii,jj).get_x());
402  ecartiso2=ecartiso2+(tab[n].tens2(ii,jj).get_x()-t(ii,jj).get_x())*(tab[n].tens2(ii,jj).get_x()-t(ii,jj).get_x());
403  ecartiso3=ecartiso3+(tab[n].tens3(ii,jj).get_x()-t(ii,jj).get_x())*(tab[n].tens3(ii,jj).get_x()-t(ii,jj).get_x());
404  }
405  double ecartiso=1.-(sqrt(ecartiso1)+sqrt(ecartiso2)+sqrt(ecartiso3))/27.;
406  if (i==0) cumiso[i]=ecartiso; else cumiso[i]=cumiso[i-1]+ecartiso;
407  fprintf(out,"%lf;%lf;;",ecartiso,cumiso[i]/((double)i+1));
408  fprintf(out,"%f;%f;%lf;%lf;%lf;%lf;%lf;%lf;;",tab[n].volume,tab[n].masse,tab[n].cdm.get_x(),tab[n].cdm.get_y(),tab[n].cdm.get_z(),cumcdm[i].get_x(),cumcdm[i].get_y(),cumcdm[i].get_z());
409  for (int j=0;j<tab[listeessai[nbessai][0]].nbphase;j++)
410  fprintf(out,"%lf;%lf;%lf;%lf;%lf;%lf;%lf;%lf;;",tab[n].volumephase[j],tab[n].massephase[j],tab[n].cdmphase[j].get_x(),tab[n].cdmphase[j].get_y(),tab[n].cdmphase[j].get_z(),cumcdmphase[j][i].get_x(),cumcdmphase[j][i].get_y(),cumcdmphase[j][i].get_z());
411  fprintf(out,";;%lf;%lf;%lf;%lf;%lf;%lf",tab[n].Evoigt,tab[n].Ereuss,tab[n].Kvoigt,tab[n].Kreuss,tab[n].Gvoigt,tab[n].Greuss);
412  fprintf(out,"\n");
413 
414  }
415 fclose(out);
416 enregistrer_gnu(nbessai,nom);
417 
418 }
419 
420 
422  {
423  double xmin=param.get_valeur("boitexmin");
424  double ymin=param.get_valeur("boiteymin");
425  double zmin=param.get_valeur("boitezmin");
426  double xmax=param.get_valeur("boitexmax");
427  double ymax=param.get_valeur("boiteymax");
428  double zmax=param.get_valeur("boitezmax");
429  int degre=tab[listeessai[nbessai][0]].degre;
430  char typecalcul[500];
431  if (degre==1) strcpy(typecalcul,"Linéaire");
432  if (degre==2) strcpy(typecalcul,"Quadratique");
433  double xcible=0.5*(xmin+xmax);
434  double ycible=0.5*(ymin+ymax);
435  double zcible=0.5*(zmin+zmax);
436  char execute[5000];
437  char nomdata[5000];
438  char nomout[1000];
439  char nomoutsvg[5000];
440  //----------------------------------------K
441  sprintf(nomdata,"%s%d.txt",nom,nbessai+1);
442  sprintf(nomout,"%s%dK.gnu",nom,nbessai+1);
443  sprintf(nomoutsvg,"%s%dK.svg",nom,nbessai+1);
444  FILE *out=fopen((char*)nomout,"wt");
445  fprintf(out, "set terminal svg\n");
446  fprintf(out, "set output \"%s\"\n", nomoutsvg);
447  fprintf(out, "set datafile separator \";\"\n");
448  fprintf(out, "set key on outside bottom center horizontal\n");
449  fprintf(out, "set xlabel 'Numéro d''essai'\n");
450  fprintf(out, "set ylabel 'Module de compressibilité K (GPa)'\n");
451  fprintf(out, "set y2label 'Écart à l''isotropie'\n");
452  fprintf(out, "set pointsize 1\n");
453  fprintf(out, "set autoscale x\n");
454  //fprintf(out, "set autoscale y\n");
455  fprintf(out,"stats '%s' using ($%d/1e9) name 'YX'\n",nomdata,37+9*tab[listeessai[nbessai][0]].nbphase);
456  fprintf(out,"stats '%s' using ($%d/1e9) name 'YN'\n",nomdata,38+9*tab[listeessai[nbessai][0]].nbphase);
457  fprintf(out,"delta = (YX_max - YN_min) * 0.05\n");
458  fprintf(out,"ymin_zoom = YN_min - delta\n");
459  fprintf(out,"ymax_zoom = YX_max + delta\n");
460  fprintf(out,"set yrange [ymin_zoom:ymax_zoom]\n");
461  fprintf(out, "set y2tics 0.5,0.1,1\n");
462  fprintf(out, "set y2r [0.8:1]\n");
463  fprintf(out, "set ytics nomirror\n");
464  fprintf(out, "set xtics nomirror\n");
465  fprintf(out, "#\n");
466  fprintf(out, "d(x)=dd\n");
467  fprintf(out, "fit d(x) '%s' u :($11/1e9) via dd\n",nomdata);
468  fprintf(out, "c(x)=cc\n");
469  fprintf(out, "fit c(x) '%s' u :($14/1e9) via cc\n",nomdata);
470  fprintf(out, "is(x)=is\n");
471  fprintf(out, "fit is(x) '%s' u :($21) via is\n",nomdata);
472  fprintf(out, "#\n");
473  fprintf(out, "set title \"Résultat Homogéinisation \\n %s\\n %d cristaux - Calcul %s\"\n",param.get_nom("nommateriau").c_str(), tab[listeessai[nbessai][0]].nbcristaux,typecalcul);
474  fprintf(out, "plot '%s' u 10 :($11/1e9) title 'KDH' pointtype 7 lc rgb \"blue\", '%s' u 10 :($14/1e9) title 'KCH' pointtype 7 lc rgb \"red\",'%s' u 10 : ($%d/1e9) title 'Borne Voigt' w l lc rgb \"brown\" lw 2,'%s' u 10 : ($%d/1e9) title 'Borne Reuss' w l lc rgb \"orange\" lw 2, '%s' u 10:21 axis x1y2 title 'Isotropie' lc rgb \"green\" pointtype 3,c(x) title sprintf(\"moyenne %%.1f\",cc) lc rgb \"red\" dt 2 ,d(x) title sprintf(\"moyenne %%.1f\",dd) lc rgb \"blue\" dt 2, is(x) title sprintf(\"moyenne %%.2f\",is) axis x1y2 lc rgb \"green\" dt 2\n", nomdata,nomdata, nomdata,37+9*tab[listeessai[nbessai][0]].nbphase, nomdata,38+9*tab[listeessai[nbessai][0]].nbphase,nomdata);
475  fclose(out);
476  sprintf(execute,"gnuplot %s > %s.log 2>&1",nomout,nomout);
477  system(execute);
478  //----------------------------------------G
479  sprintf(nomdata,"%s%d.txt",nom,nbessai+1);
480  sprintf(nomout,"%s%dG.gnu",nom,nbessai+1);
481  sprintf(nomoutsvg,"%s%dG.svg",nom,nbessai+1);
482  out=fopen((char*)nomout,"wt");
483  fprintf(out, "set terminal svg\n");
484  fprintf(out, "set output \"%s\"\n", nomoutsvg);
485  fprintf(out, "set datafile separator \";\"\n");
486  fprintf(out, "set key on outside bottom center horizontal\n");
487  fprintf(out, "set xlabel 'Numéro d''essai'\n");
488  fprintf(out, "set ylabel 'Module de Coulomb G (GPa)'\n");
489  fprintf(out, "set y2label 'Écart à l''isotropie'\n");
490  fprintf(out, "set pointsize 1\n");
491  fprintf(out, "set autoscale x\n");
492  //fprintf(out, "set autoscale y\n");
493  fprintf(out,"stats '%s' using ($%d/1e9) name 'YX'\n",nomdata,39+9*tab[listeessai[nbessai][0]].nbphase);
494  fprintf(out,"stats '%s' using ($%d/1e9) name 'YN'\n",nomdata,40+9*tab[listeessai[nbessai][0]].nbphase);
495  fprintf(out,"delta = (YX_max - YN_min) * 0.05\n");
496  fprintf(out,"ymin_zoom = YN_min - delta\n");
497  fprintf(out,"ymax_zoom = YX_max + delta\n");
498  fprintf(out,"set yrange [ymin_zoom:ymax_zoom]\n");
499  fprintf(out, "set y2tics 0.5,0.1,1\n");
500  fprintf(out, "set y2r [0.8:1]\n");
501  fprintf(out, "set ytics nomirror\n");
502  fprintf(out, "set xtics nomirror\n");
503  fprintf(out, "#\n");
504  fprintf(out, "d(x)=dd\n");
505  fprintf(out, "fit d(x) '%s' u :($12/1e9) via dd\n",nomdata);
506  fprintf(out, "c(x)=cc\n");
507  fprintf(out, "fit c(x) '%s' u :($15/1e9) via cc\n",nomdata);
508  fprintf(out, "is(x)=is\n");
509  fprintf(out, "fit is(x) '%s' u :($21) via is\n",nomdata);
510  fprintf(out, "#\n");
511  fprintf(out, "set title \"Résultat Homogéinisation \\n %s\\n %d cristaux - Calcul %s\"\n",param.get_nom("nommateriau").c_str(), tab[listeessai[nbessai][0]].nbcristaux,typecalcul);
512  fprintf(out, "plot '%s' u 10 :($12/1e9) title 'GDH' pointtype 7 lc rgb \"blue\", '%s' u 10 :($15/1e9) title 'GCH' pointtype 7 lc rgb \"red\",'%s' u 10 : ($%d/1e9) title 'Borne Voigt' w l lc rgb \"brown\" lw 2,'%s' u 10 : ($%d/1e9) title 'Borne Reuss' w l lc rgb \"orange\" lw 2, '%s' u 10:21 axis x1y2 title 'Isotropie' lc rgb \"green\" pointtype 3,c(x) title sprintf(\"moyenne %%.1f\",cc) lc rgb \"red\" dt 2 ,d(x) title sprintf(\"moyenne %%.1f\",dd) lc rgb \"blue\" dt 2, is(x) title sprintf(\"moyenne %%.2f\",is) axis x1y2 lc rgb \"green\" dt 2\n", nomdata,nomdata, nomdata,39+9*tab[listeessai[nbessai][0]].nbphase, nomdata,40+9*tab[listeessai[nbessai][0]].nbphase,nomdata);
513  fclose(out);
514  sprintf(execute,"gnuplot %s > %s.log 2>&1",nomout,nomout);
515  system(execute);
516  //----------------------------------------E
517  sprintf(nomdata,"%s%d.txt",nom,nbessai+1);
518  sprintf(nomout,"%s%dE.gnu",nom,nbessai+1);
519  sprintf(nomoutsvg,"%s%dE.svg",nom,nbessai+1);
520  out=fopen((char*)nomout,"wt");
521  fprintf(out, "set terminal svg\n");
522  fprintf(out, "set output \"%s\"\n", nomoutsvg);
523  fprintf(out, "set datafile separator \";\"\n");
524  fprintf(out, "set key on outside bottom center horizontal\n");
525  fprintf(out, "set xlabel 'Numéro d''essai'\n");
526  fprintf(out, "set ylabel 'Module d''Young E (GPa)'\n");
527  fprintf(out, "set y2label 'Écart à l''isotropie'\n");
528  fprintf(out, "set pointsize 1\n");
529  fprintf(out, "set autoscale x\n");
530  //fprintf(out, "set autoscale y\n");
531  fprintf(out,"stats '%s' using ($%d/1e9) name 'YX'\n",nomdata,35+9*tab[listeessai[nbessai][0]].nbphase);
532  fprintf(out,"stats '%s' using ($%d/1e9) name 'YN'\n",nomdata,36+9*tab[listeessai[nbessai][0]].nbphase);
533  fprintf(out,"delta = (YX_max - YN_min) * 0.05\n");
534  fprintf(out,"ymin_zoom = YN_min - delta\n");
535  fprintf(out,"ymax_zoom = YX_max + delta\n");
536  fprintf(out,"set yrange [ymin_zoom:ymax_zoom]\n");
537  fprintf(out, "set y2tics 0.5,0.1,1\n");
538  fprintf(out, "set y2r [0.8:1]\n");
539  fprintf(out, "set ytics nomirror\n");
540  fprintf(out, "set xtics nomirror\n");
541  fprintf(out, "#\n");
542  fprintf(out, "d(x)=dd\n");
543  fprintf(out, "fit d(x) '%s' u :($13/1e9) via dd\n",nomdata);
544  fprintf(out, "c(x)=cc\n");
545  fprintf(out, "fit c(x) '%s' u :($16/1e9) via cc\n",nomdata);
546  fprintf(out, "is(x)=is\n");
547  fprintf(out, "fit is(x) '%s' u :($21) via is\n",nomdata);
548  fprintf(out, "#\n");
549  fprintf(out, "set title \"Résultat Homogéinisation \\n %s\\n %d cristaux - Calcul %s\"\n",param.get_nom("nommateriau").c_str(), tab[listeessai[nbessai][0]].nbcristaux,typecalcul);
550  fprintf(out, "plot '%s' u 10 :($13/1e9) title 'EDH' pointtype 7 lc rgb \"blue\", '%s' u 10 :($16/1e9) title 'ECH' pointtype 7 lc rgb \"red\",'%s' u 10 : ($%d/1e9) title 'Borne Voigt' w l lc rgb \"brown\" lw 2,'%s' u 10 : ($%d/1e9) title 'Borne Reuss' w l lc rgb \"orange\" lw 2, '%s' u 10:21 axis x1y2 title 'Isotropie' lc rgb \"green\" pointtype 3,c(x) title sprintf(\"moyenne %%.1f\",cc) lc rgb \"red\" dt 2 ,d(x) title sprintf(\"moyenne %%.1f\",dd) lc rgb \"blue\" dt 2, is(x) title sprintf(\"moyenne %%.2f\",is) axis x1y2 lc rgb \"green\" dt 2\n", nomdata,nomdata, nomdata,35+9*tab[listeessai[nbessai][0]].nbphase, nomdata,36+9*tab[listeessai[nbessai][0]].nbphase,nomdata);
551  fclose(out);
552  sprintf(execute,"gnuplot %s > %s.log 2>&1",nomout,nomout);
553  system(execute);
554  //----------------------------------------E cumulé
555  sprintf(nomout,"%s%dcum.gnu",nom,nbessai+1);
556  sprintf(nomoutsvg,"%s%dcum.svg",nom,nbessai+1);
557  out=fopen((char*)nomout,"wt");
558  fprintf(out, "set terminal svg\n");
559  fprintf(out, "set output \"%s\"\n", nomoutsvg);
560  fprintf(out, "set multiplot layout 2,1\n");
561  fprintf(out, "set datafile separator \";\"\n");
562  fprintf(out, "set key on outside bottom center horizontal\n");
563  fprintf(out, "set ylabel 'Module d''Young E (GPa)'\n");
564  fprintf(out, "set pointsize 1\n");
565  fprintf(out, "set autoscale x\n");
566  fprintf(out, "set autoscale y\n");
567  fprintf(out, "set ytics nomirror\n");
568  fprintf(out, "set xtics nomirror\n");
569  fprintf(out, "#\n");
570  fprintf(out, "d(x)=dd\n");
571  fprintf(out, "fit d(x) '%s' u :($13/1e9) via dd\n",nomdata);
572  fprintf(out, "c(x)=cc\n");
573  fprintf(out, "fit c(x) '%s' u :($16/1e9) via cc\n",nomdata);
574  fprintf(out, "is(x)=is\n");
575  fprintf(out, "fit is(x) '%s' u :($21) via is\n",nomdata);
576  fprintf(out, "#\n");
577  fprintf(out, "set title \"Résultat Homogéinisation - Moyenne des n premiers échantillons\\n %s\\n %d cristaux - Calcul %s\"\n",param.get_nom("nommateriau").c_str(), tab[listeessai[nbessai][0]].nbcristaux,typecalcul);
578  fprintf(out, "set size 1,0.70\n");
579  fprintf(out, "set origin 0,0.3\n");
580  fprintf(out, "plot '%s' u 10 :($18/1e9) title 'EDH' w l lc rgb \"blue\", '%s' u 10 :($19/1e9) title 'ECH' w l lc rgb \"red\",c(x) title sprintf(\"moyenne %%.1f\",cc) lc rgb \"red\" dt 2 ,d(x) title sprintf(\"moyenne %%.1f\",dd) lc rgb \"blue\" dt 2\n", nomdata,nomdata);
581  fprintf(out, "unset title\n");
582  fprintf(out, "set size 1,0.3\n");
583  fprintf(out, "set origin 0,0\n");
584  //fprintf(out, "set key outside top center horizontal\n");
585  fprintf(out, "set xlabel 'Numéro d''essai'\n");
586  fprintf(out, "set ytics 0.9,0.02,1\n");
587  fprintf(out, "stats '%s' using 22 nooutput\n",nomdata);
588  fprintf(out,"if (STATS_min < 0.96) {\n");
589  fprintf(out," set yrange [*:1]\n");
590  fprintf(out,"} else {\n");
591  fprintf(out," set yrange [0.96:1]\n");
592  fprintf(out,"}\n");
593  //fprintf(out, "set autoscale y\n");
594  fprintf(out, "set ylabel 'Écart à l''isotropie'\n");
595  fprintf(out, "plot '%s' u 10:22 w l axis x1y1 title 'Isotropie' lc rgb \"green\",is(x) title sprintf(\"moyenne %%.2f\",is) axis x1y1 lc rgb \"green\" dt 2\n", nomdata);
596  fprintf(out, "unset multiplot\n");
597  fclose(out);
598  sprintf(execute,"gnuplot %s > %s.log 2>&1",nomout,nomout);
599  system(execute);
600  //----------------------------------------Volume masse cumulé
601  sprintf(nomoutsvg,"%s%dmv.svg",nom,nbessai+1);
602  sprintf(nomout,"%s%dmv.gnu",nom,nbessai+1);
603  out=fopen((char*)nomout,"wt");
604  fprintf(out, "set terminal svg\n");
605  fprintf(out, "set output \"%s\"\n", nomoutsvg);
606  fprintf(out, "set datafile separator \";\"\n");
607  fprintf(out, "set key on outside bottom center horizontal\n");
608  fprintf(out, "set pointsize 1\n");
609  fprintf(out, "set autoscale x\n");
610  fprintf(out, "set autoscale y\n");
611  fprintf(out, "set autoscale y2\n");
612  fprintf(out, "set y2tics\n");
613  fprintf(out, "set ytics nomirror\n");
614  fprintf(out, "set title \"Volume et masse des échantillons \\n%s\\n %d cristaux - Calcul %s\"\n",param.get_nom("nommateriau").c_str(), tab[listeessai[nbessai][0]].nbcristaux,typecalcul);
615  fprintf(out, "set xlabel 'Numéro d''essai'\n");
616  fprintf(out, "set ylabel 'Volume'\n");
617  fprintf(out, "set y2label 'Masse'\n");
618  fprintf(out, "plot '%s' u 10 : 24 title 'Volume' pointtype 6 lc rgb \"blue\", '%s' u 10 : 25 title 'Masse' axis x1y2 pointtype 6 lc rgb \"red\"\n", nomdata,nomdata);
619  fclose(out);
620  sprintf(execute,"gnuplot %s > %s.log 2>&1",nomout,nomout);
621  system(execute);
622  //----------------------------------------Centre de masse
623  sprintf(nomoutsvg,"%s%dcdm.svg",nom,nbessai+1);
624  sprintf(nomout,"%s%dcdm.gnu",nom,nbessai+1);
625  out=fopen((char*)nomout,"wt");
626  fprintf(out, "set terminal svg\n");
627  fprintf(out, "set output \"%s\"\n", nomoutsvg);
628  fprintf(out, "set datafile separator \";\"\n");
629  fprintf(out, "set key on outside bottom center horizontal\n");
630  fprintf(out, "set pointsize 1\n");
631  fprintf(out, "set autoscale x\n");
632  fprintf(out, "set autoscale y\n");
633  fprintf(out, "set title \"Centre de masse des échantillons \\n %s\\n %d cristaux - Calcul %s\"\n",param.get_nom("nommateriau").c_str(), tab[listeessai[nbessai][0]].nbcristaux,typecalcul);
634  fprintf(out, "set xlabel 'Numéro d''essai'\n");
635  fprintf(out, "set ylabel 'Volume'\n");
636  fprintf(out, "plot '%s' u 10 : 26 title 'CDMx' pointtype 6 lc rgb \"blue\", '%s' u 10 : 27 title 'CDMy' pointtype 6 lc rgb \"red\", '%s' u 10 : 28 title 'CDMz' pointtype 6 lc rgb \"green\", %lf notitle dt 2 lc rgb \"blue\", %lf notitle dt 2 lc rgb \"red\", %lf notitle dt 2 lc rgb \"green\"\n",nomdata, nomdata,nomdata,xcible,ycible,zcible);
637  fclose(out);
638  sprintf(execute,"gnuplot %s > %s.log 2>&1",nomout,nomout);
639  system(execute);
640  //----------------------------------------Centre de masse cumulé
641  sprintf(nomoutsvg,"%s%dcdmcum.svg",nom,nbessai+1);
642  sprintf(nomout,"%s%dcdmcum.gnu",nom,nbessai+1);
643  out=fopen((char*)nomout,"wt");
644  fprintf(out, "set terminal svg\n");
645  fprintf(out, "set output \"%s\"\n", nomoutsvg);
646  fprintf(out, "set datafile separator \";\"\n");
647  fprintf(out, "set key on outside bottom center horizontal\n");
648  fprintf(out, "set pointsize 1\n");
649  fprintf(out, "set autoscale x\n");
650  fprintf(out, "set autoscale y\n");
651  fprintf(out, "set title \"Position moyenne des CDM des n premiers échantillons\\n %s\\n %d cristaux - Calcul %s\"\n",param.get_nom("nommateriau").c_str(), tab[listeessai[nbessai][0]].nbcristaux,typecalcul);
652  fprintf(out, "set xlabel 'Numéro d''essai'\n");
653  fprintf(out, "set ylabel 'Volume'\n");
654  fprintf(out, "plot '%s' u 10 : 29 title 'CDMx' w l lc rgb \"blue\", '%s' u 10 : 30 title 'CDMy' w l lc rgb \"red\", '%s' u 10 : 31 title 'CDMz' w l lc rgb \"green\", %lf notitle dt 2 lc rgb \"blue\", %lf notitle dt 2 lc rgb \"red\", %lf notitle dt 2 lc rgb \"green\"\n",nomdata, nomdata,nomdata,xcible,ycible,zcible);
655  fclose(out);
656  sprintf(execute,"gnuplot %s > %s.log 2>&1",nomout,nomout);
657  system(execute);
658  //----------------------------------------Par phase
659  if (tab[listeessai[nbessai][0]].nbphase>1)
660  for (int j=0;j<tab[listeessai[nbessai][0]].nbphase;j++)
661  {
662  sprintf(nomoutsvg,"%s%dph%dmv.svg",nom,nbessai+1,j+1);
663  sprintf(nomout,"%s%dph%dmv.gnu",nom,nbessai+1,j+1);
664  out=fopen((char*)nomout,"wt");
665  fprintf(out, "set terminal svg\n");
666  fprintf(out, "set output \"%s\"\n", nomoutsvg);
667  fprintf(out, "set datafile separator \";\"\n");
668  fprintf(out, "set key on outside bottom center horizontal\n");
669  fprintf(out, "set pointsize 1\n");
670  fprintf(out, "set autoscale x\n");
671  fprintf(out, "set autoscale y\n");
672  fprintf(out, "set autoscale y2\n");
673  fprintf(out, "set y2tics\n");
674  fprintf(out, "set ytics nomirror\n");
675  fprintf(out, "set title \"Volume et masse de la phase %d des échantillons \\n%s\\n %d cristaux - Calcul %s\"\n",j+1,param.get_nom("nommateriau").c_str(), tab[listeessai[nbessai][0]].nbcristaux,typecalcul);
676  fprintf(out, "set xlabel 'Numéro d''essai'\n");
677  fprintf(out, "set ylabel 'Volume'\n");
678  fprintf(out, "set y2label 'Masse'\n");
679  fprintf(out, "plot '%s' u 10 : %d title 'Volume' pointtype 6 lc rgb \"blue\", '%s' u 10 : %d title 'Masse' axis x1y2 pointtype 6 lc rgb \"red\"\n", nomdata,33+9*j,nomdata,34+9*j);
680  fclose(out);
681  sprintf(execute,"gnuplot %s > %s.log 2>&1",nomout,nomout);
682  system(execute);
683  sprintf(nomoutsvg,"%s%dph%dcdm.svg",nom,nbessai+1,j+1);
684  sprintf(nomout,"%s%dph%dcdm.gnu",nom,nbessai+1,j+1);
685  out=fopen((char*)nomout,"wt");
686  fprintf(out, "set terminal svg\n");
687  fprintf(out, "set output \"%s\"\n", nomoutsvg);
688  fprintf(out, "set datafile separator \";\"\n");
689  fprintf(out, "set key on outside bottom center horizontal\n");
690  fprintf(out, "set pointsize 1\n");
691  fprintf(out, "set autoscale x\n");
692  fprintf(out, "set autoscale y\n");
693  fprintf(out, "set title \"Centre de masse de la phase %d des échantillons \\n %s\\n %d cristaux - Calcul %s\"\n",j+1,param.get_nom("nommateriau").c_str(), tab[listeessai[nbessai][0]].nbcristaux,typecalcul);
694  fprintf(out, "set xlabel 'Numéro d''essai'\n");
695  fprintf(out, "set ylabel 'Volume'\n");
696  fprintf(out, "plot '%s' u 10 : %d title 'CDMx' pointtype 6 lc rgb \"blue\", '%s' u 10 : %d title 'CDMy' pointtype 6 lc rgb \"red\", '%s' u 10 : %d title 'CDMz' pointtype 6 lc rgb \"green\", %lf notitle dt 2 lc rgb \"blue\", %lf notitle dt 2 lc rgb \"red\", %lf notitle dt 2 lc rgb \"green\"\n",nomdata,35+9*j,nomdata,36+9*j,nomdata,37+9*j,xcible,ycible,zcible);
697  fclose(out);
698  sprintf(execute,"gnuplot %s > %s.log 2>&1",nomout,nomout);
699  system(execute);
700  sprintf(nomoutsvg,"%s%dph%dcdmcum.svg",nom,nbessai+1,j+1);
701  sprintf(nomout,"%s%dph%dcdmcum.gnu",nom,nbessai+1,j+1);
702  out=fopen((char*)nomout,"wt");
703  fprintf(out, "set terminal svg\n");
704  fprintf(out, "set output \"%s\"\n", nomoutsvg);
705  fprintf(out, "set datafile separator \";\"\n");
706  fprintf(out, "set key on outside bottom center horizontal\n");
707  fprintf(out, "set pointsize 1\n");
708  fprintf(out, "set autoscale x\n");
709  fprintf(out, "set autoscale y\n");
710  fprintf(out, "set title \"Position moyenne des CDM de la phase %d des n premiers échantillons\\n %s\\n %d cristaux - Calcul %s\"\n",j+1,param.get_nom("nommateriau").c_str(), tab[listeessai[nbessai][0]].nbcristaux,typecalcul);
711  fprintf(out, "set xlabel 'Numéro d''essai'\n");
712  fprintf(out, "set ylabel 'Volume'\n");
713  fprintf(out, "plot '%s' u 10 : %d title 'CDMx' w l lc rgb \"blue\", '%s' u 10 : %d title 'CDMy' w l lc rgb \"red\", '%s' u 10 : %d title 'CDMz' w l lc rgb \"green\", %lf notitle dt 2 lc rgb \"blue\", %lf notitle dt 2 lc rgb \"red\", %lf notitle dt 2 lc rgb \"green\"\n",nomdata,38+9*j, nomdata,39+9*j,nomdata,40+9*j,xcible,ycible,zcible);
714  fclose(out);
715  sprintf(execute,"gnuplot %s > %s.log 2>&1",nomout,nomout);
716  system(execute);
717  }
718  }
719 
721 {
722 return listeessai[nbessai].size();
723 
724 }
725 
726 
728 {
729 return tab[listeessai[nbessai][0]].degre;
730 }
731 
733 {
734 return tab[listeessai[nbessai][0]].nbcristaux;
735 }
MSTRUCT_POLY_ANALYSE_RESULTAT::KCH
nombre_statistique KCH
Definition: mstruct_analyse_polycristaux.h:97
MSTRUCT_POLY_ANALYSE_RESULTAT::tens3e
OT_TENSEUR tens3e
Definition: mstruct_analyse_polycristaux.h:112
OT_VECTEUR_3D::change_z
virtual void change_z(double z)
Definition: ot_mathematique.cpp:444
MSTRUCT_POLY_ANALYSE_RESULTAT::~MSTRUCT_POLY_ANALYSE_RESULTAT
virtual ~MSTRUCT_POLY_ANALYSE_RESULTAT()
Definition: mstruct_analyse_polycristaux.cpp:34
nombre_statistique::moyenne
double moyenne
Definition: mstruct_analyse_polycristaux.h:73
MSTRUCT_POLY_RESULTAT
Definition: mstruct_analyse_polycristaux.h:30
MSTRUCT_POLY_ANALYSE_RESULTAT::GCH
nombre_statistique GCH
Definition: mstruct_analyse_polycristaux.h:97
MSTRUCT_POLY_ANALYSE_RESULTAT::cumiso
std::vector< double > cumiso
Definition: mstruct_analyse_polycristaux.h:102
gestionversion.h
MSTRUCT_POLY_ANALYSE_RESULTAT::KDH
nombre_statistique KDH
Definition: mstruct_analyse_polycristaux.h:96
OT_PARAMETRES::get_valeur
double get_valeur(std::string chaine, int num=0)
Definition: ot_parametres.cpp:191
MSTRUCT_POLY_ANALYSE_RESULTAT::cdmphase
std::vector< OT_VECTEUR_3D > cdmphase
Definition: mstruct_analyse_polycristaux.h:104
MSTRUCT_POLY_ANALYSE_RESULTAT::masse
nombre_statistique masse
Definition: mstruct_analyse_polycristaux.h:114
MSTRUCT_POLY_ANALYSE_RESULTAT::cdme
OT_VECTEUR_3D cdme
Definition: mstruct_analyse_polycristaux.h:98
MSTRUCT_POLY_ANALYSE_RESULTAT::EDH
nombre_statistique EDH
Definition: mstruct_analyse_polycristaux.h:96
MSTRUCT_POLY_ANALYSE_RESULTAT::enregistrer_gnu
virtual void enregistrer_gnu(int nbessai, char *nom)
Definition: mstruct_analyse_polycristaux.cpp:421
OT_VECTEUR_3D::change_y
virtual void change_y(double y)
Definition: ot_mathematique.cpp:439
MSTRUCT_POLY_ANALYSE_RESULTAT::get_degreechantillon
virtual int get_degreechantillon(int nbessai)
Definition: mstruct_analyse_polycristaux.cpp:727
nombre_statistique::ecart
double ecart
Definition: mstruct_analyse_polycristaux.h:74
MSTRUCT_POLY_ANALYSE_RESULTAT::cumcdmphase
std::vector< std::vector< OT_VECTEUR_3D > > cumcdmphase
Definition: mstruct_analyse_polycristaux.h:105
OT_TENSEUR::identite
void identite(void)
Definition: ot_tenseur.cpp:207
OT_VECTEUR_3D::get_x
virtual double get_x(void) const
Definition: ot_mathematique.cpp:417
MSTRUCT_POLY_ANALYSE_RESULTAT::cdmm
OT_VECTEUR_3D cdmm
Definition: mstruct_analyse_polycristaux.h:98
MSTRUCT_POLY_ANALYSE_RESULTAT::tens3m
OT_TENSEUR tens3m
Definition: mstruct_analyse_polycristaux.h:109
MSTRUCT_POLY_ANALYSE_RESULTAT::cumECH
std::vector< double > cumECH
Definition: mstruct_analyse_polycristaux.h:101
MSTRUCT_POLY_ANALYSE_RESULTAT::tens2e
OT_TENSEUR tens2e
Definition: mstruct_analyse_polycristaux.h:111
MSTRUCT_POLY_ANALYSE_RESULTAT::execute
virtual void execute(int nbessai)
Definition: mstruct_analyse_polycristaux.cpp:85
MSTRUCT_POLY_RESULTAT::~MSTRUCT_POLY_RESULTAT
virtual ~MSTRUCT_POLY_RESULTAT()
Definition: mstruct_analyse_polycristaux.cpp:40
MSTRUCT_POLY_ANALYSE_RESULTAT::enregistrer
virtual void enregistrer(int nbessai, char *nom)
Definition: mstruct_analyse_polycristaux.cpp:329
MSTRUCT_POLY_ANALYSE_RESULTAT::GDH
nombre_statistique GDH
Definition: mstruct_analyse_polycristaux.h:96
MSTRUCT_POLY_ANALYSE_RESULTAT::MSTRUCT_POLY_ANALYSE_RESULTAT
MSTRUCT_POLY_ANALYSE_RESULTAT(char *nomparam)
Definition: mstruct_analyse_polycristaux.cpp:28
double2
Definition: ot_doubleprecision.h:29
MSTRUCT_POLY_ANALYSE_RESULTAT::tens2m
OT_TENSEUR tens2m
Definition: mstruct_analyse_polycristaux.h:108
MSTRUCT_POLY_ANALYSE_RESULTAT::tens1m
OT_TENSEUR tens1m
Definition: mstruct_analyse_polycristaux.h:107
MSTRUCT_POLY_ANALYSE_RESULTAT::cdmephase
std::vector< OT_VECTEUR_3D > cdmephase
Definition: mstruct_analyse_polycristaux.h:104
OT_TENSEUR
Definition: ot_tenseur.h:41
OT_PARAMETRES::get_nom
std::string get_nom(std::string chaine)
Definition: ot_parametres.cpp:266
MSTRUCT_POLY_ANALYSE_RESULTAT::masseph
std::vector< nombre_statistique > masseph
Definition: mstruct_analyse_polycristaux.h:116
MSTRUCT_POLY_ANALYSE_RESULTAT::volumeph
std::vector< nombre_statistique > volumeph
Definition: mstruct_analyse_polycristaux.h:117
OT_TENSEUR::reinit
void reinit(int n, int m)
Definition: ot_tenseur.cpp:141
MSTRUCT_POLY_ANALYSE_RESULTAT::get_nbcristauxechantillon
virtual int get_nbcristauxechantillon(int nbessai)
Definition: mstruct_analyse_polycristaux.cpp:732
MSTRUCT_POLY_ANALYSE_RESULTAT::ident
virtual int ident(void)
Definition: mstruct_analyse_polycristaux.cpp:45
MSTRUCT_POLY_ANALYSE_RESULTAT::listeessai
std::vector< std::vector< int > > listeessai
Definition: mstruct_analyse_polycristaux.h:95
MSTRUCT_POLY_ANALYSE_RESULTAT::cumcdm
std::vector< OT_VECTEUR_3D > cumcdm
Definition: mstruct_analyse_polycristaux.h:99
MSTRUCT_POLY_ANALYSE_RESULTAT::tens1e
OT_TENSEUR tens1e
Definition: mstruct_analyse_polycristaux.h:110
MSTRUCT_POLY_ANALYSE_RESULTAT::get_nbechantillon
virtual int get_nbechantillon(int nbessai)
Definition: mstruct_analyse_polycristaux.cpp:720
nombre_statistique::zero
void zero(void)
Definition: mstruct_analyse_polycristaux.h:68
OT_VECTEUR_3D::get_y
virtual double get_y(void) const
Definition: ot_mathematique.cpp:423
MSTRUCT_POLY_ANALYSE_RESULTAT::param
OT_PARAMETRES param
Definition: mstruct_analyse_polycristaux.h:118
OT_VECTEUR_3D
Definition: ot_mathematique.h:94
MSTRUCT_POLY_ANALYSE_RESULTAT::ECH
nombre_statistique ECH
Definition: mstruct_analyse_polycristaux.h:97
MSTRUCT_POLY_ANALYSE_RESULTAT::cumEDH
std::vector< double > cumEDH
Definition: mstruct_analyse_polycristaux.h:100
sqrt
double2 sqrt(double2 &val)
Definition: ot_doubleprecision.cpp:345
MSTRUCT_POLY_ANALYSE_RESULTAT::volume
nombre_statistique volume
Definition: mstruct_analyse_polycristaux.h:115
MSTRUCT_POLY_ANALYSE_RESULTAT::lire
virtual int lire(void)
Definition: mstruct_analyse_polycristaux.cpp:236
OT_VECTEUR_3D::get_z
virtual double get_z(void) const
Definition: ot_mathematique.cpp:429
OT_PARAMETRES::lire
int lire(char *nom)
Definition: ot_parametres.cpp:144
mstruct_analyse_polycristaux.h
res
#define res(i, j)
MSTRUCT_POLY_ANALYSE_RESULTAT::tab
std::vector< MSTRUCT_POLY_RESULTAT > tab
Definition: mstruct_analyse_polycristaux.h:94
OT_VECTEUR_3D::change_x
virtual void change_x(double x)
Definition: ot_mathematique.cpp:434