48 double volume_total=0.0;
49 for(
int i=0;i<nb_champ;i++)
53 min[i]=std::numeric_limits< double >::max();
54 max[i]=std::numeric_limits< double >::min();
56 std::vector<double*> vector_champ;
57 std::vector<double> vector_volume;
58 LISTE_FEM_ELEMENT3::iterator it;
65 if(groupe_forme!=NULL)
70 while(ok==
false && mg_vol!=NULL)
72 if(ele->get_lien_topologie()==mg_vol) ok=
true;
76 if(boite_analyse!=NULL && ok==
true)
83 double *champ=
new double[nb_champ];
85 for(
int i=0;i<nb_champ;i++)
93 for (
int r=0;r<nbgauss;r++)
95 int degre=ele->get_degre_gauss(nbgauss);
98 ele->get_pt_gauss(degre,r,w,uvw);
100 double det=ele->get_jacobien(jac,uvw,unite);
101 double valeur=fem_sol->
lire(k,i,0,r)*fabs(det);
103 volume=volume+w*fabs(det);
108 int nb_pt_gauss=ele->get_nb_pt_gauss(ele->get_degremax_fonction_interpolation());
109 for (
int r=0;r<nb_pt_gauss;r++)
111 int degre=ele->get_degre_gauss(nb_pt_gauss);
114 ele->get_pt_gauss(degre,r,w,uvw);
116 double det=ele->get_jacobien(jac,uvw);
119 val=fem_sol->
lire(k,i,0,0)*volume;
126 double degmax=ele->get_degremax_fonction_interpolation();
127 int nbfonc=ele->get_nb_fonction_interpolation();
128 int nb_pt_gauss=ele->get_nb_pt_gauss(degmax);
129 for (
int r=0;r<nb_pt_gauss;r++)
131 ele->get_pt_gauss(degmax,r,w,uvw);
132 double detJ=ele->get_jacobien(jac,uvw,unite);
134 for(
int j=0;j<nbfonc;j++)
136 C+=ele->get_fonction_interpolation(j+1,uvw)*ele->get_fem_noeud(j)->get_solution()*(pow(unite,3));
140 volume+=w*fabs(detJ);
145 vector_champ.push_back(champ);
146 vector_volume.push_back(volume);
147 volume_total+=volume;
151 long nb_echantillions=vector_champ.size();
152 std::vector<double*>::iterator it_vector_champ;
153 std::vector<double>::iterator it_vector_volume=vector_volume.begin();
154 for(it_vector_champ=vector_champ.begin();it_vector_champ!=vector_champ.end();it_vector_champ++)
156 double *champ = *it_vector_champ;
157 double volume = *it_vector_volume;
158 for(
int i=0;i<nb_champ;i++)
160 moyenne[i]+=champ[i];
161 if((champ[i]/volume)<min[i]) min[i]=champ[i]/volume;
162 if((champ[i]/volume)>max[i]) max[i]=champ[i]/volume;
163 tab_histogramme[i]->
ajouter_valeur(champ[i]/volume,volume/volume_total);
167 for(
int i=0;i<nb_champ;i++)
169 moyenne[i]=moyenne[i]/volume_total;
171 for(it_vector_champ=vector_champ.begin(),it_vector_volume=vector_volume.begin();it_vector_champ!=vector_champ.end();it_vector_champ++,it_vector_volume++)
173 double *champ = *it_vector_champ;
174 double volume = *it_vector_volume;
175 for(
int i=0;i<nb_champ;i++)
177 ecart_type[i]+=((champ[i]/volume)-moyenne[i])*((champ[i]/volume)-moyenne[i]);
180 for(it_vector_champ=vector_champ.begin();it_vector_champ!=vector_champ.end();it_vector_champ++)
delete [] *it_vector_champ;
181 for(
int i=0;i<nb_champ;i++)
183 ecart_type[i]=ecart_type[i]*(1.0/(nb_echantillions-1.0));
184 ecart_type[i]=
sqrt(ecart_type[i]);
196 bool ponderation_volume)
198 double volume_total=0;
199 std::vector<double> vector_volume;
204 min[i]=std::numeric_limits< double >::max();
205 max[i]=std::numeric_limits< double >::min();
207 std::vector<double*> vector_tenseur;
208 std::map<long,MG_CG_FORME*>::iterator it_forme;
211 BOITE_3D boite_forme = forme->get_boite_3D();
213 if(boite_analyse!=NULL)
225 axe_forme[0]=vct_double[0];
226 axe_forme[1]=vct_double[1];
227 axe_forme[2]=vct_double[2];
236 double *tenseur =
new double[6];
237 tenseur[0] = axe_forme[0]*axe_forme[0];
238 tenseur[1] = axe_forme[1]*axe_forme[1];
239 tenseur[2] = axe_forme[2]*axe_forme[2];
240 tenseur[3] = axe_forme[0]*axe_forme[1];
241 tenseur[4] = axe_forme[0]*axe_forme[2];
242 tenseur[5] = axe_forme[1]*axe_forme[2];
243 if(ponderation_volume)
247 if(forme->get_type_forme()==MG_CG_FORME::TYPE_FORME::VOLUME)
251 vector_volume.push_back(volume);
252 volume_total+=volume;
254 else if(forme->get_type_forme()==MG_CG_FORME::TYPE_FORME::MULTI_VOLUME)
257 std::map<long,MG_VOLUME*>::iterator it_volume;
263 vector_volume.push_back(volume);
264 volume_total+=volume;
270 vector_volume.push_back(volume);
271 volume_total+=volume;
274 vector_tenseur.push_back(tenseur);
277 long nb_forme=vector_tenseur.size();
278 std::vector<double*>::iterator it_tenseur;
279 std::vector<double>::iterator it_volume=vector_volume.begin();
280 for(it_tenseur=vector_tenseur.begin();it_tenseur!=vector_tenseur.end();it_tenseur++)
282 double* tenseur = *it_tenseur;
285 if(!ponderation_volume)
287 moyenne[i]+=tenseur[i];
288 if(tenseur[i]<min[i]) min[i]=tenseur[i];
289 if(tenseur[i]>max[i]) max[i]=tenseur[i];
293 double volume=*it_volume;
294 moyenne[i]+=tenseur[i]*volume/volume_total;
295 if(tenseur[i]<min[i]) min[i]=tenseur[i];
296 if(tenseur[i]>max[i]) max[i]=tenseur[i];
301 if(!ponderation_volume)
304 moyenne[i]=moyenne[i]/nb_forme;
306 for(it_tenseur=vector_tenseur.begin();it_tenseur!=vector_tenseur.end();it_tenseur++)
308 double* tenseur = *it_tenseur;
311 ecart_type[i]+=(tenseur[i]-moyenne[i])*(tenseur[i]-moyenne[i]);
313 delete [] *it_tenseur;
317 ecart_type[i]=ecart_type[i]*(1.0/(nb_forme-1.0));
318 ecart_type[i]=
sqrt(ecart_type[i]);
327 double& volume_forme_moyenne,
328 double& volume_forme_ecart_type,
329 double& volume_forme_min,
330 double& volume_forme_max,
332 double& volume_total,
333 double& fraction_volumique,
339 volume_forme_moyenne=0;
340 volume_forme_ecart_type=0;
341 volume_forme_min=std::numeric_limits< double >::max();
342 volume_forme_max=std::numeric_limits< double >::min();
344 std::vector<double> vector_volume;
350 if(forme->get_type_forme()==MG_CG_FORME::TYPE_FORME::VOLUME)
355 else if(forme->get_type_forme()==MG_CG_FORME::TYPE_FORME::MULTI_VOLUME)
358 std::map<long,MG_VOLUME*>::iterator it_volume;
364 double volume_forme=0;
365 nb_volume += tpl_map_volume.
get_nb();
371 vector_volume.push_back(volume_forme);
373 std::vector<double>::iterator it_data;
374 for(it_data=vector_volume.begin();it_data!=vector_volume.end();it_data++)
376 double volume = *it_data;
377 volume_total+=volume;
378 if(volume<volume_forme_min) volume_forme_min=volume;
379 if(volume>volume_forme_max) volume_forme_max=volume;
381 for(it_data=vector_volume.begin();it_data!=vector_volume.end();it_data++)
383 double volume = *it_data;
384 volume_forme_histogramme.
ajouter_valeur(volume,volume/volume_total);
386 nb_forme=vector_volume.size();
387 volume_forme_moyenne=volume_total/nb_forme;
390 for(it_data=vector_volume.begin();it_data!=vector_volume.end();it_data++)
392 double volume = *it_data;
393 volume_forme_ecart_type+=(volume-volume_forme_moyenne)*(volume-volume_forme_moyenne);
395 volume_forme_ecart_type=volume_forme_ecart_type*(1.0/(nb_forme-1.0));
396 volume_forme_ecart_type=
sqrt(volume_forme_ecart_type);
398 else volume_forme_ecart_type = 0.0;
399 fraction_volumique = volume_total/volume_ves;
406 long &nb_element_2D,
long &nb_element_3D,
407 double& qualite_moyenne_2D,
double& qualite_ecart_type_2D,
double& qualite_min_2D,
double& qualite_max_2D,
OT_HISTOGRAMME& histogramme_qualite_2D,
408 double& qualite_moyenne_3D,
double& qualite_ecart_type_3D,
double& qualite_min_3D,
double& qualite_max_3D,
OT_HISTOGRAMME& histogramme_qualite_3D,
409 double& taille_moyenne_2D,
double& taille_ecart_type_2D,
double& taille_min_2D,
double& taille_max_2D,
OT_HISTOGRAMME& histogramme_taille_2D,
410 double& taille_moyenne_3D,
double& taille_ecart_type_3D,
double& taille_min_3D,
double& taille_max_3D,
OT_HISTOGRAMME& histogramme_taille_3D,
411 double& volume,
double& fraction_volumique)
414 nb_element_2D=0;nb_element_3D=0;
415 qualite_moyenne_2D=0;qualite_ecart_type_2D=0;qualite_min_2D=std::numeric_limits< double >::max();;qualite_max_2D=std::numeric_limits< double >::min();
416 qualite_moyenne_3D=0;qualite_ecart_type_3D=0;qualite_min_3D=std::numeric_limits< double >::max();;qualite_max_3D=std::numeric_limits< double >::min();
417 taille_moyenne_2D=0;taille_ecart_type_2D=0;taille_min_2D=std::numeric_limits< double >::max();;taille_max_2D=std::numeric_limits< double >::min();
418 taille_moyenne_3D=0;taille_ecart_type_3D=0;taille_min_3D=std::numeric_limits< double >::max();;taille_max_3D=std::numeric_limits< double >::min();
419 volume=0;fraction_volumique=0;
425 if(forme->get_type_forme()==MG_CG_FORME::TYPE_FORME::VOLUME)
436 tmp_maill = face->get_lien_maillage();
439 double volume_i,masse_i;
446 else if(forme->get_type_forme()==MG_CG_FORME::TYPE_FORME::MULTI_VOLUME)
449 std::map<long,MG_VOLUME*>::iterator it_volume;
460 tmp_maill = face->get_lien_maillage();
463 double volume_i,masse_i;
467 vol->get_propriete_massique(mai,volume_i,masse_i,cdm,inertieglobale,inertiecdm);
472 fraction_volumique = volume/volume_ves;
473 std::vector<double> vector_qualite_3D;
474 std::vector<double> vector_taille_3D;
475 LISTE_MG_TETRA::iterator it_tetra;
478 if(tpl_map_element_maill_3D.
existe(tet))
480 double qual=
OPERATEUR::qualite_tetra(tet->get_noeud1()->get_coord(),tet->get_noeud2()->get_coord(),tet->get_noeud3()->get_coord(),tet->get_noeud4()->get_coord());
481 vector_qualite_3D.push_back(qual);
482 if(qual<qualite_min_3D) qualite_min_3D=qual;
483 if(qual>qualite_max_3D) qualite_max_3D=qual;
484 qualite_moyenne_3D+=qual;
485 double taille=
OPERATEUR::taille_tetra(tet->get_noeud1()->get_coord(),tet->get_noeud2()->get_coord(),tet->get_noeud3()->get_coord(),tet->get_noeud4()->get_coord());
486 vector_taille_3D.push_back(taille);
487 if(taille<taille_min_3D) taille_min_3D=taille;
488 if(taille>taille_max_3D) taille_max_3D=taille;
489 taille_moyenne_3D+=taille;
493 qualite_moyenne_3D = qualite_moyenne_3D/nb_element_3D;
494 taille_moyenne_3D = taille_moyenne_3D/nb_element_3D;
495 std::vector<double>::iterator it_qual_3D;
497 for(it_qual_3D=vector_qualite_3D.begin();it_qual_3D!=vector_qualite_3D.end();it_qual_3D++)
499 double qual = *it_qual_3D;
500 qualite_ecart_type_3D+=(qual-qualite_moyenne_3D)*(qual-qualite_moyenne_3D);
503 qualite_ecart_type_3D=qualite_ecart_type_3D*(1.0/(nb_element_3D-1.0));
504 qualite_ecart_type_3D=
sqrt(qualite_ecart_type_3D);
506 std::vector<double>::iterator it_taille_3D;
507 for(it_taille_3D=vector_taille_3D.begin();it_taille_3D!=vector_taille_3D.end();it_taille_3D++)
509 double taille = *it_taille_3D;
510 taille_ecart_type_3D=(taille-taille_moyenne_3D)*(taille-taille_moyenne_3D);
513 taille_ecart_type_3D=taille_ecart_type_3D*(1.0/(nb_element_3D-1.0));
514 taille_ecart_type_3D=
sqrt(taille_ecart_type_3D);
518 std::vector<double> vector_qualite_2D;
519 std::vector<double> vector_taille_2D;
520 LISTE_MG_TRIANGLE::iterator it_tri;
523 if(tpl_map_element_maill_2D.
existe(tri))
525 double qual=
OPERATEUR::qualite_triangle(tri->get_noeud1()->get_coord(),tri->get_noeud2()->get_coord(),tri->get_noeud3()->get_coord());
526 vector_qualite_2D.push_back(qual);
527 if(qual<qualite_min_2D) qualite_min_2D=qual;
528 if(qual>qualite_max_2D) qualite_max_2D=qual;
529 qualite_moyenne_2D+=qual;
530 double taille=
OPERATEUR::taille_triangle(tri->get_noeud1()->get_coord(),tri->get_noeud2()->get_coord(),tri->get_noeud3()->get_coord());
531 vector_taille_2D.push_back(taille);
532 if(taille<taille_min_2D) taille_min_2D=taille;
533 if(taille>taille_max_2D) taille_max_2D=taille;
534 taille_moyenne_2D+=taille;
538 qualite_moyenne_2D = qualite_moyenne_2D/nb_element_2D;
539 taille_moyenne_2D = taille_moyenne_2D/nb_element_2D;
540 std::vector<double>::iterator it_qual_2D;
542 for(it_qual_2D=vector_qualite_2D.begin();it_qual_2D!=vector_qualite_2D.end();it_qual_2D++)
544 double qual = *it_qual_2D;
545 qualite_ecart_type_2D+=(qual-qualite_moyenne_2D)*(qual-qualite_moyenne_2D);
548 qualite_ecart_type_2D=qualite_ecart_type_2D*(1.0/(nb_element_2D-1.0));
549 qualite_ecart_type_2D=
sqrt(qualite_ecart_type_2D);
551 std::vector<double>::iterator it_taille_2D;
552 for(it_taille_2D=vector_taille_2D.begin();it_taille_2D!=vector_taille_2D.end();it_taille_2D++)
554 double taille = *it_taille_2D;
555 taille_ecart_type_2D=(taille-taille_moyenne_2D)*(taille-taille_moyenne_2D);
558 taille_ecart_type_2D=taille_ecart_type_2D*(1.0/(nb_element_2D-1.0));
559 taille_ecart_type_2D=
sqrt(taille_ecart_type_2D);
567 long int& nb_element_2D,
long int& nb_element_3D,
568 double& jacobien_min_moyenne_2D,
double& jacobien_min_ecart_type_2D,
double& jacobien_min_min_2D,
double& jacobien_min_max_2D,
OT_HISTOGRAMME& histogramme_jacobien_min_2D,
569 double& jacobien_max_moyenne_2D,
double& jacobien_max_ecart_type_2D,
double& jacobien_max_min_2D,
double& jacobien_max_max_2D,
OT_HISTOGRAMME& histogramme_jacobien_max_2D,
570 double& jacobien_min_moyenne_3D,
double& jacobien_min_ecart_type_3D,
double& jacobien_min_min_3D,
double& jacobien_min_max_3D,
OT_HISTOGRAMME& histogramme_jacobien_min_3D,
571 double& jacobien_max_moyenne_3D,
double& jacobien_max_ecart_type_3D,
double& jacobien_max_min_3D,
double& jacobien_max_max_3D,
OT_HISTOGRAMME& histogramme_jacobien_max_3D,
572 double& distortion_moyenne_2D,
double& distortion_ecart_type_2D,
double& distortion_min_2D,
double& distortion_max_2D,
OT_HISTOGRAMME& histogramme_distortion_2D,
573 double& distortion_moyenne_3D,
double& distortion_ecart_type_3D,
double& distortion_min_3D,
double& distortion_max_3D,
OT_HISTOGRAMME& histogramme_distortion_3D,
575 double& fraction_volumique)
578 nb_element_2D=0;nb_element_3D=0;
579 jacobien_min_moyenne_2D=0.0; jacobien_min_ecart_type_2D=0.0; jacobien_min_min_2D=std::numeric_limits< double >::max(); jacobien_min_max_2D=std::numeric_limits< double >::min();
580 jacobien_max_moyenne_2D=0.0; jacobien_max_ecart_type_2D=0.0; jacobien_max_min_2D=std::numeric_limits< double >::max(); jacobien_max_max_2D=std::numeric_limits< double >::min();
581 jacobien_min_moyenne_3D=0.0; jacobien_min_ecart_type_3D=0.0; jacobien_min_min_3D=std::numeric_limits< double >::max(); jacobien_min_max_3D=std::numeric_limits< double >::min();
582 jacobien_max_moyenne_3D=0.0; jacobien_max_ecart_type_3D=0.0; jacobien_max_min_3D=std::numeric_limits< double >::max(); jacobien_max_max_3D=std::numeric_limits< double >::min();
583 distortion_moyenne_2D=0.0; distortion_ecart_type_2D=0.0; distortion_min_2D=std::numeric_limits< double >::max(); distortion_max_2D=std::numeric_limits< double >::min();
584 distortion_moyenne_3D=0.0; distortion_ecart_type_3D=0.0; distortion_min_3D=std::numeric_limits< double >::max(); distortion_max_3D=std::numeric_limits< double >::min();
586 fraction_volumique=0;
588 LISTE_FEM_ELEMENT3::iterator it_element3;
591 BOITE_3D b3d_ele = ele3->get_boite_3D();
592 if(boite_analyse!=NULL)
594 int nb_pt_gauss=ele3->get_nb_pt_gauss(ele3->get_degremax_fonction_interpolation());
595 for (
int r=0;r<nb_pt_gauss;r++)
597 int degre=ele3->get_degre_gauss(nb_pt_gauss);
600 ele3->get_pt_gauss(degre,r,w,uvw);
602 double det=ele3->get_jacobien(jac,uvw);
611 if(forme->get_type_forme()==MG_CG_FORME::TYPE_FORME::VOLUME)
615 long tmp_nb = tmp_maill->
get_nb();
616 for(
long i=0;i<tmp_nb;i++)
620 if(boite_analyse!=NULL)
622 tpl_map_element_maill_3D.
ajouter(ele3);
629 tmp_maill = face->get_lien_fem_maillage();
630 tmp_nb = tmp_maill->
get_nb();
631 for(
long i=0;i<tmp_nb;i++)
635 if(boite_analyse!=NULL)
637 tpl_map_element_maill_2D.
ajouter(ele2);
641 else if(forme->get_type_forme()==MG_CG_FORME::TYPE_FORME::MULTI_VOLUME)
644 std::map<long,MG_VOLUME*>::iterator it_volume;
648 long tmp_nb = tmp_maill->
get_nb();
649 for(
long i=0;i<tmp_nb;i++)
653 if(boite_analyse!=NULL)
655 tpl_map_element_maill_3D.
ajouter(ele3);
662 tmp_maill = face->get_lien_fem_maillage();
663 tmp_nb = tmp_maill->
get_nb();
664 for(
long i=0;i<tmp_nb;i++)
668 if(boite_analyse!=NULL)
670 tpl_map_element_maill_2D.
ajouter(ele2);
676 nb_element_3D=tpl_map_element_maill_3D.
get_nb();
677 nb_element_2D=tpl_map_element_maill_2D.
get_nb();
678 std::vector<double> vector_jacobien_min_2D;
679 std::vector<double> vector_jacobien_max_2D;
680 std::vector<double> vector_jacobien_min_3D;
681 std::vector<double> vector_jacobien_max_3D;
682 std::vector<double> vector_distortion_2D;
683 std::vector<double> vector_distortion_3D;
688 int nb_pt_gauss=ele3->get_nb_pt_gauss(ele3->get_degremax_fonction_interpolation());
689 for (
int r=0;r<nb_pt_gauss;r++)
691 int degre=ele3->get_degre_gauss(nb_pt_gauss);
694 ele3->get_pt_gauss(degre,r,w,uvw);
696 double det=ele3->get_jacobien(jac,uvw);
702 vector_jacobien_min_3D.push_back(jmin);
703 vector_jacobien_max_3D.push_back(jmax);
704 vector_distortion_3D.push_back(distortion);
705 jacobien_min_moyenne_3D+=jmin;
706 jacobien_max_moyenne_3D+=jmax;
707 distortion_moyenne_3D+=distortion;
709 fraction_volumique=volume/volume_ves;
710 jacobien_min_moyenne_3D=jacobien_min_moyenne_3D/nb_element_3D;
711 jacobien_max_moyenne_3D=jacobien_max_moyenne_3D/nb_element_3D;
712 distortion_moyenne_3D=distortion_moyenne_3D/nb_element_3D;
713 std::vector<double>::iterator it_jac_min_3D=vector_jacobien_min_3D.begin();
714 std::vector<double>::iterator it_jac_max_3D=vector_jacobien_max_3D.begin();
715 std::vector<double>::iterator it_dist_3D=vector_distortion_3D.begin();
716 for(
long i=0;i<nb_element_3D;i++)
718 double jmin=*it_jac_min_3D;
719 double jmax=*it_jac_max_3D;
720 double dist=*it_dist_3D;
721 if(jmin<jacobien_min_min_3D)jacobien_min_min_3D=jmin;
722 if(jmin>jacobien_min_max_3D)jacobien_min_max_3D=jmin;
723 if(jmax<jacobien_max_min_3D)jacobien_max_min_3D=jmax;
724 if(jmax>jacobien_max_max_3D)jacobien_max_max_3D=jmax;
725 if(dist<distortion_min_3D)distortion_min_3D=dist;
726 if(dist>distortion_max_3D)distortion_max_3D=dist;
727 jacobien_min_ecart_type_3D=(jmin-jacobien_min_moyenne_3D)*(jmin-jacobien_min_moyenne_3D);
728 jacobien_max_ecart_type_3D=(jmax-jacobien_max_moyenne_3D)*(jmax-jacobien_max_moyenne_3D);
729 distortion_ecart_type_3D=(dist-distortion_moyenne_3D)*(dist-distortion_moyenne_3D);
730 histogramme_jacobien_min_3D.
ajouter_valeur(jmin,1.0/nb_element_3D);
731 histogramme_jacobien_max_3D.
ajouter_valeur(jmax,1.0/nb_element_3D);
737 jacobien_min_ecart_type_3D=
sqrt(jacobien_min_ecart_type_3D*(1.0/(nb_element_3D-1.0)));
738 jacobien_max_ecart_type_3D=
sqrt(jacobien_max_ecart_type_3D*(1.0/(nb_element_3D-1.0)));
739 distortion_ecart_type_3D=
sqrt(distortion_ecart_type_3D*(1.0/(nb_element_3D-1.0)));
747 vector_jacobien_min_2D.push_back(jmin);
748 vector_jacobien_max_2D.push_back(jmax);
749 vector_distortion_2D.push_back(distortion);
750 jacobien_min_moyenne_2D+=jmin;
751 jacobien_max_moyenne_2D+=jmax;
752 distortion_moyenne_2D+=distortion;
754 jacobien_min_moyenne_2D=jacobien_min_moyenne_2D/nb_element_2D;
755 jacobien_max_moyenne_2D=jacobien_max_moyenne_2D/nb_element_2D;
756 distortion_moyenne_2D=distortion_moyenne_2D/nb_element_2D;
757 std::vector<double>::iterator it_jac_min_2D=vector_jacobien_min_2D.begin();
758 std::vector<double>::iterator it_jac_max_2D=vector_jacobien_max_2D.begin();
759 std::vector<double>::iterator it_dist_2D=vector_distortion_2D.begin();
760 for(
long i=0;i<nb_element_2D;i++)
762 double jmin=*it_jac_min_2D;
763 double jmax=*it_jac_max_2D;
764 double dist=*it_dist_2D;
765 if(jmin<jacobien_min_min_2D)jacobien_min_min_2D=jmin;
766 if(jmin>jacobien_min_max_2D)jacobien_min_max_2D=jmin;
767 if(jmax<jacobien_max_min_2D)jacobien_max_min_2D=jmax;
768 if(jmax>jacobien_max_max_2D)jacobien_max_max_2D=jmax;
769 if(dist<distortion_min_2D)distortion_min_2D=dist;
770 if(dist>distortion_max_2D)distortion_max_2D=dist;
771 jacobien_min_ecart_type_2D=(jmin-jacobien_min_moyenne_2D)*(jmin-jacobien_min_moyenne_2D);
772 jacobien_max_ecart_type_2D=(jmax-jacobien_max_moyenne_2D)*(jmax-jacobien_max_moyenne_2D);
773 distortion_ecart_type_2D=(dist-distortion_moyenne_2D)*(dist-distortion_moyenne_2D);
774 histogramme_jacobien_min_2D.
ajouter_valeur(jmin,1.0/nb_element_2D);
775 histogramme_jacobien_max_2D.
ajouter_valeur(jmax,1.0/nb_element_2D);
781 jacobien_min_ecart_type_2D=
sqrt(jacobien_min_ecart_type_2D*(1.0/(nb_element_2D-1.0)));
782 jacobien_max_ecart_type_2D=
sqrt(jacobien_max_ecart_type_2D*(1.0/(nb_element_2D-1.0)));
783 distortion_ecart_type_2D=
sqrt(distortion_ecart_type_2D*(1.0/(nb_element_2D-1.0)));
796 long tmp_nb = tmp_maill->
get_nb();
797 for(
long i=0;i<tmp_nb;i++)
801 if(boite_analyse!=NULL)
803 tpl_map_element_maill_3D.
ajouter(ele3);
806 else if(forme->
get_type_forme()==MG_CG_FORME::TYPE_FORME::MULTI_VOLUME)
809 std::map<long,MG_VOLUME*>::iterator it_volume;
813 long tmp_nb = tmp_maill->
get_nb();
814 for(
long i=0;i<tmp_nb;i++)
818 if(boite_analyse!=NULL)
820 tpl_map_element_maill_3D.
ajouter(ele3);
828 int nb_pt_gauss=ele3->get_nb_pt_gauss(ele3->get_degremax_fonction_interpolation());
829 for (
int r=0;r<nb_pt_gauss;r++)
831 int degre=ele3->get_degre_gauss(nb_pt_gauss);
834 ele3->get_pt_gauss(degre,r,w,uvw);
836 double det=ele3->get_jacobien(jac,uvw);
848 face->ajouter_ccf(condition,valeur);
849 if(topo_sous_jacente==
true)
852 face->get_topologie_sousjacente(&map_topo);
856 topo->ajouter_ccf(condition,valeur);
869 face->ajouter_ccf(condition,formule,listvariable);
870 if(topo_sous_jacente==
true)
873 face->get_topologie_sousjacente(&map_topo);
877 topo->ajouter_ccf(condition,formule,listvariable);
893 std::map<unsigned long,MG_FACE*,std::less<unsigned long>>::iterator it_face;
898 face->get_xyz_min_max(xyzmin,xyzmax);
911 std::map<unsigned long,MG_SOMMET*,std::less<unsigned long>>::iterator it_sommet;
927 char chr_valeur_cl[1000];
928 sprintf(chr_valeur_cl,
"%lf",Valeur_CL);
929 std::string str_valeur_cl = chr_valeur_cl;
930 std::string formule_Dx = str_valeur_cl+
"*X";
931 std::string formule_Dy = str_valeur_cl+
"*Y";
932 std::string formule_Dz = str_valeur_cl+
"*Z";
933 std::vector<std::string> liste_variable_formule_Dx;
934 std::vector<std::string> liste_variable_formule_Dy;
935 std::vector<std::string> liste_variable_formule_Dz;
936 liste_variable_formule_Dx.push_back((std::string)
"X");
937 liste_variable_formule_Dy.push_back((std::string)
"Y");
938 liste_variable_formule_Dz.push_back((std::string)
"Z");
992 char chr_valeur_cl[1000];
993 sprintf(chr_valeur_cl,
"%lf",Valeur_CL);
994 std::string str_valeur_cl = chr_valeur_cl;
995 std::string formule_Dx = str_valeur_cl+
"*(Y+Z)";
996 std::string formule_Dy = str_valeur_cl+
"*(X+Z)";
997 std::string formule_Dz = str_valeur_cl+
"*(X+Y)";
998 std::vector<std::string> liste_variable_formule_Dx;
999 std::vector<std::string> liste_variable_formule_Dy;
1000 std::vector<std::string> liste_variable_formule_Dz;
1001 liste_variable_formule_Dx.push_back((std::string)
"Y");
1002 liste_variable_formule_Dx.push_back((std::string)
"Z");
1003 liste_variable_formule_Dy.push_back((std::string)
"X");
1004 liste_variable_formule_Dy.push_back((std::string)
"Z");
1005 liste_variable_formule_Dz.push_back((std::string)
"X");
1006 liste_variable_formule_Dz.push_back((std::string)
"Y");
1078 else if(Direction==1)
1087 else if(Direction==2)
1109 else if(Direction==1)
1119 else if(Direction==2)