53 MMG5_int k,ip0,ip1,nb,np,nt,ns,refint,refext,vx[3];
57 for (k=1; k<=
mesh->
np; k++)
62 for (k=1; k<=
mesh->
nt; k++) {
64 if ( !
MG_EOK(pt) )
continue;
76 if ( p0->
flag && p1->
flag )
continue;
94 for (k=1; k<=
mesh->
nt; k++) {
96 if ( !
MG_EOK(pt) )
continue;
127 else if (
MG_SMSGN(v0,v1) )
continue;
128 else if ( !p0->
flag || !p1->
flag )
continue;
134 c[0] = p0->
c[0] + s*(p1->
c[0]-p0->
c[0]);
135 c[1] = p0->
c[1] + s*(p1->
c[1]-p0->
c[1]);
141 fprintf(stderr,
"\n ## Error: %s: unable to"
142 " allocate a new point.\n",__func__);
150 MMG2D_intmet(
mesh,met,k,i,np,s);
160 for (k=1; k<=nt; k++) {
163 if ( !
MG_EOK(pt) )
continue;
166 for (i=0; i<3; i++) {
177 case 1:
case 2:
case 4:
183 case 3:
case 5:
case 6:
192 if ( !
ier )
return 0;
196 fprintf(stdout,
" %7" MMG5_PRId
" splitted\n",ns);
214 strcat(str,
"(BOUNDARY PART)");
227 fprintf(stdout,
" ** ISOSURFACE EXTRACTION %s\n",str);
231 fprintf(stderr,
"\n ## Error: Isosurface extraction not available with"
232 " hybrid meshes. Exit program.\n");
237 for (k=1; k<=
sol->
np; k++)
242 fprintf(stderr,
"\n ## Problem in setting boundary. Exit program.\n");
250 fprintf(stderr,
"\n ## Hashing problem. Exit program.\n");
256 fprintf(stderr,
"\n ## Problem in function setadj. Exit program.\n");
262 if ( !MMG5_snpval(
mesh,
sol) ) {
263 fprintf(stderr,
"\n ## Wrong input implicit function. Exit program.\n");
270 fprintf(stderr,
"\n ## Error in removing small parasitic components. Exit program.\n");
277 fprintf(stdout,
"\n ## Warning: rmc option not implemented for boundary"
278 " isosurface extraction.\n");
286 if ( !MMG5_resetRef(
mesh) ) {
287 fprintf(stderr,
"\n ## Problem in resetting references. Exit program.\n");
293 fprintf(stderr,
"\n ## Problem in cutting triangles. Exit program.\n");
298 if ( !MMG5_setref(
mesh,
sol) ) {
299 fprintf(stderr,
"\n ## Problem in setting references. Exit program.\n");
305 fprintf(stderr,
"\n ## Hashing problem. Exit program.\n");
312 fprintf(stderr,
"\n ## No manifold resulting situation. Exit program.\n");
MMG5_pMesh MMG5_pSol * sol
if(!ier) exit(EXIT_FAILURE)
int MMG2D_setadj(MMG5_pMesh mesh, int8_t init_cc)
int MMG5_hashNew(MMG5_pMesh mesh, MMG5_Hash *hash, MMG5_int hsiz, MMG5_int hmax)
MMG5_int MMG5_hashGet(MMG5_Hash *hash, MMG5_int a, MMG5_int b)
int MMG5_hashEdge(MMG5_pMesh mesh, MMG5_Hash *hash, MMG5_int a, MMG5_int b, MMG5_int k)
int MMG2D_assignEdge(MMG5_pMesh mesh)
int MMG2D_hashTria(MMG5_pMesh mesh)
#define MMG2D_POINT_REALLOC(mesh, sol, ip, wantedGap, law, o, tag)
int MMG2D_split2(MMG5_pMesh, MMG5_pSol, MMG5_int, MMG5_int vx[3])
int MMG2D_split1(MMG5_pMesh, MMG5_pSol, MMG5_int, MMG5_int vx[3])
MMG5_int MMG2D_newPt(MMG5_pMesh mesh, double c[2], uint16_t tag)
int MMG5_rmc(MMG5_pMesh mesh, MMG5_pSol sol)
int MMG5_snpval_ls(MMG5_pMesh mesh, MMG5_pSol sol)
int MMG5_isSplit(MMG5_pMesh mesh, MMG5_int ref, MMG5_int *refint, MMG5_int *refext)
int MMG5_resetRef_ls(MMG5_pMesh mesh)
int MMG5_chkmanimesh(MMG5_pMesh mesh)
int MMG5_setref_ls(MMG5_pMesh mesh, MMG5_pSol sol)
int MMG2D_mmg2d6(MMG5_pMesh mesh, MMG5_pSol sol, MMG5_pSol met)
int MMG2D_cuttri(MMG5_pMesh mesh, MMG5_pSol sol, MMG5_pSol met)
int MMG5_resetRef_lssurf(MMG5_pMesh mesh)
int MMG5_snpval_lssurf(MMG5_pMesh mesh, MMG5_pSol sol)
int MMG5_setref_lssurf(MMG5_pMesh mesh, MMG5_pSol sol)
#define MMG5_INCREASE_MEM_MESSAGE()
static const uint8_t MMG5_iprv2[3]
static const uint8_t MMG5_inxt2[6]
#define MMG5_DEL_MEM(mesh, ptr)
#define MG_SET(flag, bit)
Identic as MMG5_HGeom but use MMG5_hedge to store edges instead of MMG5_hgeom (memory economy).
Structure to store vertices of an MMG mesh.
Structure to store triangles of a MMG mesh.