37 #define NONDETRUIT 3000
50 affiche((
char*)
" Adaptation de maillage");
52 sprintf(mess,
" Destruction des mailles ne respectant pas la carte de taille a %.2f %%",
limite*100);
54 LISTE_MG_NOEUD::iterator itnoeud;
57 LISTE_MG_SEGMENT::iterator itsegment;
60 LISTE_MG_TRIANGLE::iterator ittriangle;
63 LISTE_MG_TETRA::iterator ittetra;
72 double *xyz=noeud->get_coord();
75 double val=1./
sqrt(tenseur[0]);
76 double err=fabs((val-noeud->get_solution())/noeud->get_solution());
79 int nb_tetra=noeud->get_lien_tetra()->get_nb();
82 for (
int j=0;j<nb_tetra;j++)
83 noeud->get_lien_tetra()->get(j)->change_nouveau_numero(
DETRUIT);
85 int nb_tri=noeud->get_lien_triangle()->get_nb();
88 for (
int j=0;j<nb_tri;j++)
89 if (noeud->get_lien_triangle()->get(j)->get_lien_topologie()->get_dimension()==2)
90 noeud->get_lien_triangle()->get(j)->change_nouveau_numero(
DETRUIT);
92 int nb_seg=noeud->get_lien_segment()->get_nb();
95 for (
int j=0;j<nb_seg;j++)
96 if (noeud->get_lien_segment()->get(j)->get_lien_topologie()->get_dimension()==1)
97 noeud->get_lien_segment()->get(j)->change_nouveau_numero(
DETRUIT);
105 if (noeud->get_lien_topologie()->get_dimension()==1)
107 int nb_seg_sur_arete=0;
108 int nb_seg=noeud->get_lien_segment()->get_nb();
109 for (
int j=0;j<nb_seg;j++)
110 if ((noeud->get_lien_segment()->get(j)->get_lien_topologie()->get_dimension()==1) &&
111 (noeud->get_lien_segment()->get(j)->get_nouveau_numero()==
NONDETRUIT))
114 if (nb_seg_sur_arete==0)
116 int nb_tri=noeud->get_lien_triangle()->get_nb();
117 for (
int j=0;j<nb_tri;j++)
118 if (noeud->get_lien_triangle()->get(j)->get_lien_topologie()->get_dimension()==2)
119 noeud->get_lien_triangle()->get(j)->change_nouveau_numero(
DETRUIT);
120 int nb_tetra=noeud->get_lien_tetra()->get_nb();
121 for (
int j=0;j<nb_tetra;j++)
122 noeud->get_lien_tetra()->get(j)->change_nouveau_numero(
DETRUIT);
125 if (noeud->get_lien_topologie()->get_dimension()==2)
127 int nb_tri_sur_face=0;
128 int nb_tri=noeud->get_lien_triangle()->get_nb();
129 for (
int j=0;j<nb_tri;j++)
130 if ((noeud->get_lien_triangle()->get(j)->get_lien_topologie()->get_dimension()==2) &&
131 (noeud->get_lien_triangle()->get(j)->get_nouveau_numero()==
NONDETRUIT) )
134 if (nb_tri_sur_face==0)
136 int nb_tetra=noeud->get_lien_tetra()->get_nb();
137 for (
int j=0;j<nb_tetra;j++)
138 noeud->get_lien_tetra()->get(j)->change_nouveau_numero(
DETRUIT);
143 for (
int i=0;i<nb_sommet;i++)
147 for (
int j=0;j<nb_noeud;j++)
158 affiche((
char*)
" Adaptation maillage 0D");
161 affiche((
char*)
" Adaptation maillage 1D");
163 for (
int i=0;i<nb_arete;i++)
167 for (
int j=0;j<nb_seg;j++)
192 affiche((
char*)
" Adaptation maillage 2D");
194 for (
int i=0;i<nb_face;i++)
199 for (
int j=0;j<nb_tri;j++)
207 double *xyz1,*xyz2,*xyz3;
219 m2d.
maille(face,NULL,&lsttri);
221 for (
int j=0;j<nb_tri;j++)
235 affiche((
char*)
" Adaptation maillage 3D");
237 for (
int i=0;i<nb_vol;i++)
242 for (
int j=0;j<nb_tet;j++)
251 double *xyz1,*xyz2,*xyz3,*xyz4;
267 m3d.
maille(vol,NULL,&lsttet);
269 for (
int j=0;j<nb_tet;j++)
286 affiche((
char*)
" Fin de l'adaptation de maillage");