36 sprintf(fichier,
"%s/.magic",getenv(
"HOME"));
50 LISTE_FEM_NOEUD::iterator it;
63 FILE* in=fopen(nomfichier,
"wt");
64 LISTE_FEM_NOEUD::iterator it;
69 static bool first=
true;
70 if ((topo!=NULL) && (notmp->get_lien_topologie()!=topo)) {numno++;
continue;}
71 if (first) chaine=
info_noeud(fem,notmp,numno,
true);
73 fprintf(in,
"%s\n",chaine.c_str());
84 std::string titre=
"Num;Id;Origine;x;y;z;";
87 std::string valeur=chaine;
88 LISTE_FEM_SOLUTION::iterator its;
92 int dim=sol->get_dim_solution();
93 int nb_champs=sol->get_nb_champ();
94 for (
int j=0;j<nb_champs;j++)
96 std::string nom=sol->get_nom()+
"_" + sol->get_legende(j);
98 bool avectimestep=
false;
99 for (
int k=0;k<nom.length();k++)
101 if (nom[k]==
' ') nom[k]=
'_';
102 if (nom[k]==
'%') {nom[k]=
' ';avectimestep=
true;}
107 sscanf(nom.c_str(),
"%s %d",message,×tep);
109 nom=nom+
"_" + sol->get_legende(j);
110 sprintf(message,
"%d",timestep);
111 nom=nom+
"_"+
"T"+message;
115 if (avectitre) titre=titre+nom+
";";
116 double val=sol->lire(numno,j);
117 sprintf(chaine,
"%le;",val);
118 valeur=valeur+chaine;
122 if (avectitre) titre=titre+nom+
"_x;"+nom+
"_y;"+nom+
"_z;";
123 double val1=sol->lire(numno,j,0);
124 double val2=sol->lire(numno,j,1);
125 double val3=sol->lire(numno,j,2);
126 sprintf(chaine,
"%le;%le;%le;",val1,val2,val3);
127 valeur=valeur+chaine;
131 for (
int i=0;i<valeur.length();i++)
134 return titre+
"\n"+valeur;
145 LISTE_FEM_ELEMENT1::iterator it;
149 if (eletmp==ele)
break;
158 FILE* in=fopen(nomfichier,
"wt");
159 LISTE_FEM_ELEMENT1::iterator it;
164 static bool first=
true;
165 if ((topo!=NULL) && (eletmp->get_lien_topologie()!=topo)) {num++;
continue;}
168 fprintf(in,
"%s\n",chaine.c_str());
179 std::string titre=
"Num;Id;Origine;";
182 std::string valeur=chaine;
183 LISTE_FEM_SOLUTION::iterator its;
190 int dim=sol->get_dim_solution();
191 int nb_champs=sol->get_nb_champ();
192 for (
int j=0;j<nb_champs;j++)
194 std::string nom=sol->get_nom()+
"_" + sol->get_legende(j);
196 bool avectimestep=
false;
197 for (
int k=0;k<nom.length();k++)
199 if (nom[k]==
' ') nom[k]=
'_';
200 if (nom[k]==
'%') {nom[k]=
' ';avectimestep=
true;}
205 sscanf(nom.c_str(),
"%s %d",message,×tep);
207 nom=nom+
"_" + sol->get_legende(j);
208 sprintf(message,
"%d",timestep);
209 nom=nom+
"_"+
"T"+message;
213 if (avectitre) titre=titre+nom+
";";
214 double val=sol->lire(numno,j);
215 sprintf(chaine,
"%le;",val);
216 valeur=valeur+chaine;
220 if (avectitre) titre=titre+nom+
"_x;"+nom+
"_y;"+nom+
"_z;";
221 double val1=sol->lire(numno,j,0);
222 double val2=sol->lire(numno,j,1);
223 double val3=sol->lire(numno,j,2);
224 sprintf(chaine,
"%le;%le;%le;",val1,val2,val3);
225 valeur=valeur+chaine;
229 for (
int i=0;i<valeur.length();i++)
232 return titre+
"\n"+valeur;
244 LISTE_FEM_ELEMENT2::iterator it;
248 if (eletmp==ele)
break;
257 FILE* in=fopen(nomfichier,
"wt");
258 LISTE_FEM_ELEMENT2::iterator it;
263 static bool first=
true;
264 if ((topo!=NULL) && (eletmp->get_lien_topologie()!=topo)) {num++;
continue;}
267 fprintf(in,
"%s\n",chaine.c_str());
278 std::string titre=
"Num;Id;Origine;";
281 std::string valeur=chaine;
282 LISTE_FEM_SOLUTION::iterator its;
289 int dim=sol->get_dim_solution();
290 int nb_champs=sol->get_nb_champ();
291 for (
int j=0;j<nb_champs;j++)
293 std::string nom=sol->get_nom()+
"_" + sol->get_legende(j);
295 bool avectimestep=
false;
296 for (
int k=0;k<nom.length();k++)
298 if (nom[k]==
' ') nom[k]=
'_';
299 if (nom[k]==
'%') {nom[k]=
' ';avectimestep=
true;}
304 sscanf(nom.c_str(),
"%s %d",message,×tep);
306 nom=nom+
"_" + sol->get_legende(j);
307 sprintf(message,
"%d",timestep);
308 nom=nom+
"_"+
"T"+message;
312 if (avectitre) titre=titre+nom+
";";
313 double val=sol->lire(numno,j);
314 sprintf(chaine,
"%le;",val);
315 valeur=valeur+chaine;
319 if (avectitre) titre=titre+nom+
"_x;"+nom+
"_y;"+nom+
"_z;";
320 double val1=sol->lire(numno,j,0);
321 double val2=sol->lire(numno,j,1);
322 double val3=sol->lire(numno,j,2);
323 sprintf(chaine,
"%le;%le;%le;",val1,val2,val3);
324 valeur=valeur+chaine;
328 for (
int i=0;i<valeur.length();i++)
331 return titre+
"\n"+valeur;
342 LISTE_FEM_ELEMENT3::iterator it;
346 if (eletmp==ele)
break;
355 FILE* in=fopen(nomfichier,
"wt");
356 LISTE_FEM_ELEMENT3::iterator it;
361 static bool first=
true;
362 if ((topo!=NULL) && (eletmp->get_lien_topologie()!=topo)) {num++;
continue;}
365 fprintf(in,
"%s\n",chaine.c_str());
376 std::string titre=
"Num;Id;Origine;";
379 std::string valeur=chaine;
380 LISTE_FEM_SOLUTION::iterator its;
387 int dim=sol->get_dim_solution();
388 int nb_champs=sol->get_nb_champ();
389 for (
int j=0;j<nb_champs;j++)
391 std::string nom=sol->get_nom()+
"_" + sol->get_legende(j);
393 bool avectimestep=
false;
394 for (
int k=0;k<nom.length();k++)
396 if (nom[k]==
' ') nom[k]=
'_';
397 if (nom[k]==
'%') {nom[k]=
' ';avectimestep=
true;}
402 sscanf(nom.c_str(),
"%s %d",message,×tep);
404 nom=nom+
"_" + sol->get_legende(j);
405 sprintf(message,
"%d",timestep);
406 nom=nom+
"_"+
"T"+message;
410 if (avectitre) titre=titre+nom+
";";
411 double val=sol->lire(numno,j);
412 sprintf(chaine,
"%le;",val);
413 valeur=valeur+chaine;
417 if (avectitre) titre=titre+nom+
"_x;"+nom+
"_y;"+nom+
"_z;";
418 double val1=sol->lire(numno,j,0);
419 double val2=sol->lire(numno,j,1);
420 double val3=sol->lire(numno,j,2);
421 sprintf(chaine,
"%le;%le;%le;",val1,val2,val3);
422 valeur=valeur+chaine;
426 for (
int i=0;i<valeur.length();i++)
429 return titre+
"\n"+valeur;
438 FILE* in=fopen(nomfichier,
"wt");
439 LISTE_FEM_ELEMENT1::iterator it1;
440 LISTE_FEM_ELEMENT2::iterator it2;
441 LISTE_FEM_ELEMENT3::iterator it3;
447 if ((topo!=NULL) && (eletmp->get_lien_topologie()!=topo)) {num++;
continue;}
450 fprintf(in,
"%s\n",chaine.c_str());
456 if ((topo!=NULL) && (eletmp->get_lien_topologie()!=topo)) {num++;
continue;}
459 fprintf(in,
"%s\n",chaine.c_str());
465 if ((topo!=NULL) && (eletmp->get_lien_topologie()!=topo)) {num++;
continue;}
468 fprintf(in,
"%s\n",chaine.c_str());
478 FILE* in=fopen(nomfichier,
"wt");
479 LISTE_FEM_ELEMENT3::iterator it;
484 static bool first=
true;
485 if ((topo!=NULL) && (eletmp->get_lien_topologie()!=topo)) {num++;
continue;}
488 fprintf(in,
"%s\n",chaine.c_str());
499 std::string titre=
"Num;Id;";
502 sprintf(chaine,
"%d;%lu;",numno+1,ele->
get_id());
503 std::string valeur=chaine;
504 LISTE_FEM_SOLUTION::iterator its;
508 int dim=sol->get_dim_solution();
509 int nb_champs=sol->get_nb_champ();
510 for (
int j=0;j<nb_champs;j++)
512 std::string nom=sol->get_nom()+
"_" + sol->get_legende(j);
514 bool avectimestep=
false;
515 for (
int k=0;k<nom.length();k++)
517 if (nom[k]==
' ') nom[k]=
'_';
518 if (nom[k]==
'%') {nom[k]=
' ';avectimestep=
true;}
523 sscanf(nom.c_str(),
"%s %d",message,×tep);
525 nom=nom+
"_" + sol->get_legende(j);
526 sprintf(message,
"%d",timestep);
527 nom=nom+
"_"+
"T"+message;
531 int nbgauss=sol->get_nb_gauss(numno);
532 for (
int i=0;i<nbgauss;i++)
534 std::string numgauss=std::to_string(i+1);
535 if (avectitre) titre=titre+nom+
"_G"+numgauss+
";";
536 double val=sol->lire(numno,j,0,i);
537 sprintf(chaine,
"%le;",val);
538 valeur=valeur+chaine;
543 int nbgauss=sol->get_nb_gauss(numno);
544 for (
int i=0;i<nbgauss;i++)
546 std::string numgauss=std::to_string(i+1);
548 if (avectitre) nom2=nom+
"_G"+numgauss;
549 if (avectitre) titre=titre+nom2+
"_x;"+nom2+
"_y;"+nom2+
"_z;";
550 double val1=sol->lire(numno,j,0,i);
551 double val2=sol->lire(numno,j,1,i);
552 double val3=sol->lire(numno,j,2,i);
553 sprintf(chaine,
"%le;%le;%le;",val1,val2,val3);
554 valeur=valeur+chaine;
560 for (
int i=0;i<valeur.length();i++)
563 return titre+
"\n"+valeur;
572 FILE* in=fopen(nomfichier,
"wt");
573 LISTE_FEM_ELEMENT1::iterator it;
578 static bool first=
true;
579 if ((topo!=NULL) && (eletmp->get_lien_topologie()!=topo)) {num++;
continue;}
582 fprintf(in,
"%s\n",chaine.c_str());
593 std::string titre=
"Num;Id;";
596 sprintf(chaine,
"%d;%lu;",numno+1,ele->
get_id());
597 std::string valeur=chaine;
598 LISTE_FEM_SOLUTION::iterator its;
602 int dim=sol->get_dim_solution();
603 int nb_champs=sol->get_nb_champ();
604 for (
int j=0;j<nb_champs;j++)
606 std::string nom=sol->get_nom()+
"_" + sol->get_legende(j);
608 bool avectimestep=
false;
609 for (
int k=0;k<nom.length();k++)
611 if (nom[k]==
' ') nom[k]=
'_';
612 if (nom[k]==
'%') {nom[k]=
' ';avectimestep=
true;}
617 sscanf(nom.c_str(),
"%s %d",message,×tep);
619 nom=nom+
"_" + sol->get_legende(j);
620 sprintf(message,
"%d",timestep);
621 nom=nom+
"_"+
"T"+message;
625 int nbgauss=sol->get_nb_gauss(numno);
626 for (
int i=0;i<nbgauss;i++)
628 std::string numgauss=std::to_string(i+1);
629 if (avectitre) titre=titre+nom+
"_G"+numgauss+
";";
630 double val=sol->lire(numno,j,0,i);
631 sprintf(chaine,
"%le;",val);
632 valeur=valeur+chaine;
637 int nbgauss=sol->get_nb_gauss(numno);
638 for (
int i=0;i<nbgauss;i++)
640 std::string numgauss=std::to_string(i+1);
642 if (avectitre) nom2=nom+
"_G"+numgauss;
643 if (avectitre) titre=titre+nom2+
"_x;"+nom2+
"_y;"+nom2+
"_z;";
644 double val1=sol->lire(numno,j,0,i);
645 double val2=sol->lire(numno,j,1,i);
646 double val3=sol->lire(numno,j,2,i);
647 sprintf(chaine,
"%le;%le;%le;",val1,val2,val3);
648 valeur=valeur+chaine;
654 for (
int i=0;i<valeur.length();i++)
657 return titre+
"\n"+valeur;
664 FILE* in=fopen(nomfichier,
"wt");
665 LISTE_FEM_ELEMENT2::iterator it;
670 static bool first=
true;
671 if ((topo!=NULL) && (eletmp->get_lien_topologie()!=topo)) {num++;
continue;}
674 fprintf(in,
"%s\n",chaine.c_str());
685 std::string titre=
"Num;Id;";
688 sprintf(chaine,
"%d;%lu;",numno+1,ele->
get_id());
689 std::string valeur=chaine;
690 LISTE_FEM_SOLUTION::iterator its;
694 int dim=sol->get_dim_solution();
695 int nb_champs=sol->get_nb_champ();
696 for (
int j=0;j<nb_champs;j++)
698 std::string nom=sol->get_nom()+
"_" + sol->get_legende(j);
700 bool avectimestep=
false;
701 for (
int k=0;k<nom.length();k++)
703 if (nom[k]==
' ') nom[k]=
'_';
704 if (nom[k]==
'%') {nom[k]=
' ';avectimestep=
true;}
709 sscanf(nom.c_str(),
"%s %d",message,×tep);
711 nom=nom+
"_" + sol->get_legende(j);
712 sprintf(message,
"%d",timestep);
713 nom=nom+
"_"+
"T"+message;
717 int nbgauss=sol->get_nb_gauss(numno);
718 for (
int i=0;i<nbgauss;i++)
720 std::string numgauss=std::to_string(i+1);
721 if (avectitre) titre=titre+nom+
"_G"+numgauss+
";";
722 double val=sol->lire(numno,j,0,i);
723 sprintf(chaine,
"%le;",val);
724 valeur=valeur+chaine;
729 int nbgauss=sol->get_nb_gauss(numno);
730 for (
int i=0;i<nbgauss;i++)
732 std::string numgauss=std::to_string(i+1);
734 if (avectitre) nom2=nom+
"_G"+numgauss;
735 if (avectitre) titre=titre+nom2+
"_x;"+nom2+
"_y;"+nom2+
"_z;";
736 double val1=sol->lire(numno,j,0,i);
737 double val2=sol->lire(numno,j,1,i);
738 double val3=sol->lire(numno,j,2,i);
739 sprintf(chaine,
"%le;%le;%le;",val1,val2,val3);
740 valeur=valeur+chaine;
746 for (
int i=0;i<valeur.length();i++)
749 return titre+
"\n"+valeur;