39 MMG5_int k,l,kk,nex,kdep,lon,iel;
41 MMG5_int ia,ib,ilon,rnd,idep,*adja,ir,adj;
44 static int8_t mmgWarn0=0,mmgWarn1=0,mmgWarn2=0,mmgWarn3=0;
45 static int8_t mmgWarn4=0,mmgWarn5=0,mmgWarn6=0,mmgWarn7=0;
46 static int8_t mmgWarn8=0;
51 for (k=1; k<=
mesh->np; k++) {
52 ppt = &
mesh->point[k];
56 for (k=1; k<=
mesh->nt; k++) {
58 if ( !
MG_EOK(pt) )
continue;
60 mesh->point[pt->
v[i]].s = k;
65 for(k=1; k<=
mesh->na; k++) {
67 if ( !ped->
a )
continue;
68 if ( ped->
base < 0 ) {
73 ppt = &
mesh->point[ped->
a];
75 pt = &
mesh->tria[kdep];
77 if ( pt->
v[0] == ped->
a )
79 else if ( pt->
v[1] == ped->
a )
90 fprintf(stderr,
"\n ## Error: %s: at least 1 wrong ball "
91 "(point %" MMG5_PRId
" of triangle %" MMG5_PRId
").\n",__func__,
97 for (l=0; l<lon; l++) {
99 pt = &
mesh->tria[iel];
104 if ( pt->
v[i1] == ped->
b ) {
109 else if ( pt->
v[i2] == ped->
b ) {
117 if ( (
mesh->info.imprim > 5) && (!mmgWarn1) ) {
119 fprintf(stderr,
"\n ## Warning: %s: at least 1 missing edge (%" MMG5_PRId
" %" MMG5_PRId
").\n",
127 if ( nex !=
mesh->na ) {
128 if(
mesh->info.imprim > 5)
129 printf(
" ** number of missing edges : %" MMG5_PRId
"\n",
mesh->na-nex);
131 for (kk=1; kk<=
mesh->na; kk++) {
132 ped = &
mesh->edge[kk];
133 if ( !ped->
a || ped->
base < 0 )
continue;
138 if(
mesh->info.ddebug)
139 printf(
"\n -- edge enforcement %" MMG5_PRId
" %" MMG5_PRId
"\n",ia,ib);
143 if (
mesh->info.ddebug && (!mmgWarn2) ) {
144 fprintf(stderr,
"\n ## Error: %s: at least 1 edge not found.\n",
152 if ( !( lon < 0 || lon == 4 ) ) {
153 if (
mesh->info.ddebug && (!mmgWarn3) ) {
155 fprintf(stderr,
"\n ## Error: %s: Unable to force at least"
156 " 1 edge (%" MMG5_PRId
" %" MMG5_PRId
" -- %" MMG5_PRId
").\n",__func__,
MMG2D_indPt(
mesh,ia),
167 if (
mesh->info.ddebug && (!mmgWarn4) ) {
169 fprintf(stderr,
"\n ## Warning: %s: existing edge.\n",__func__);
174 fprintf(stderr,
"\n ## Error: %s: at least 1 edge intersecting too many"
175 " triangles (%" MMG5_PRId
")\n",__func__,lon);
178 if (
mesh->info.ddebug && (!mmgWarn6) ) {
180 fprintf(stderr,
"\n ## Warning: %s: few edges... %" MMG5_PRId
"\n",__func__,lon);
189 rnd = ( rand() % lon );
195 while ( l++ < lon ) {
197 if ( pt->
base ==
mesh->base+1 )
break;
198 k = list[(++rnd)%lon] / 3;
202 idep = list[rnd] % 3;
204 adja = &
mesh->adja[3*(k-1)+1];
206 for (i=0; i<3; i++) {
211 pt1 = &
mesh->tria[adj];
212 if ( pt1->
base != (
mesh->base+1) )
continue;
216 if (
mesh->info.ddebug && (!mmgWarn7) ) {
218 fprintf(stderr,
"\n ## Warning: %s: unable to swap at least 1"
219 " edge.\n",__func__);
225 for (ied=1; ied<3; ied++) {
230 if (
mesh->info.ddebug && (!mmgWarn8) ) {
232 fprintf(stderr,
"\n ## Warning: %s: at least 1 triangle (%" MMG5_PRId
")"
233 " not intersected ==> %" MMG5_PRId
"\n",__func__,
236 mesh->tria[list2[ied]].base =
mesh->base;
238 else if ( iare < 0 ) {
240 mesh->tria[list2[ied]].base =
mesh->base;
244 if (
mesh->info.ddebug )
245 printf(
" ** tr intersected %" MMG5_PRId
" \n",list2[ied]);
246 mesh->tria[list2[ied]].base =
mesh->base+1;
256 for (k=1; k<=
mesh->np; k++) {
257 ppt = &
mesh->point[k];
int MMG5_boulet(MMG5_pMesh mesh, MMG5_int start, int ip, MMG5_int *list, int8_t s, int8_t *opn)