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