117 fprintf(stderr,
"\n ## Warning: %s: maximal memory authorized must"
118 " be strictly positive.\n",__func__);
119 fprintf(stderr,
" Reset to default value.\n");
140 fprintf(stderr,
"\n ## Warning: %s: angle detection parameter"
141 " set to default value\n",__func__);
162 if ( val < 0 || val > 2 )
171 fprintf(stderr,
"\n ## Error: %s"
172 " \"lagrangian motion\" option unavailable (-lag):\n"
173 " set the USE_ELAS CMake's flag to ON when compiling the mmg3d"
174 " library to enable this feature.\n",__func__);
212 fprintf(stderr,
"\n ## Warning: %s: new local parameter values\n",__func__);
219 printf(
" Exit program.\n");
224 if (
sizeof(MMG5_int) == 8 ) {
243 fprintf(stderr,
"\n ## Warning: %s: new level-set based references values\n",__func__);
248 printf(
" Exit program.\n");
261 fprintf(stderr,
"\n ## Warning: %s: new multi materials values\n",__func__);
267 printf(
" Exit program.\n");
276 fprintf(stderr,
"\n ## Error: %s: unknown type of parameter\n",__func__);
297 fprintf(stderr,
"\n ## Error: hmin value must be strictly lower than hmax one"
302 fprintf(stderr,
"\n ## Error: hmin must be strictly positive "
303 "(minimal edge length).\n");
312 fprintf(stderr,
"\n ## Error: hmin value must be strictly lower than hmax one"
317 fprintf(stderr,
"\n ## Error: hmax must be strictly positive "
318 "(maximal edge length).\n");
346 fprintf(stderr,
"\n ## Error: %s: hausdorff number must be"
347 " strictly positive.\n",__func__);
367 fprintf(stderr,
"\n ## Error: %s: unknown type of parameter\n",
375 double hmin,
double hmax,
double hausd){
380 fprintf(stderr,
"\n ## Error: %s: You must set the number of local"
381 " parameters",__func__);
382 fprintf(stderr,
" with the MMG2D_Set_iparameters function before setting");
383 fprintf(stderr,
" values in local parameters structure. \n");
387 fprintf(stderr,
"\n ## Error: %s: unable to set a new local parameter.\n",
389 fprintf(stderr,
" max number of local parameters: %d\n",
mesh->
info.
npar);
393 fprintf(stderr,
"\n ## Warning: %s: you must apply your local parameters",
395 fprintf(stderr,
" on triangles (MMG5_Triangle or %d) or edges"
397 fprintf(stderr,
"\n ## Unknown type of entity: ignored.\n");
401 fprintf(stderr,
"\n ## Error: %s: negative references are not allowed.\n",
406 fprintf(stderr,
"\n ## Error: %s: negative hmin value is not allowed.\n",
411 fprintf(stderr,
"\n ## Error: %s: negative hmax value is not allowed.\n",
416 fprintf(stderr,
"\n ## Error: %s: negative hausd value is not allowed.\n",
424 if ( par->
elt == typ && par->
ref == ref ) {
429 fprintf(stderr,
"\n ## Warning: %s: new parameters (hausd, hmin and hmax)",
431 fprintf(stderr,
" for entities of type %d and of ref %" MMG5_PRId
"\n",typ,ref);
452 fprintf(stderr,
"\n ## Error: %s: unexpected entity type: %s.\n",
463 int split,MMG5_int rin,MMG5_int rout){
476 fprintf(stderr,
"\n ## Warning: %s: old mesh deletion.\n",__func__);
500 fprintf(stderr,
"\n ## Error: %s: not enough memory (%d).\n",
517 fprintf(stderr,
"\n ## Warning: %s: old solution deletion.\n",__func__);
520 fprintf(stderr,
"\n ## Error: %s: mmg2d need a solution imposed on vertices.\n",
537 fprintf(stderr,
"\n ## Error: %s: type of solution not yet implemented.\n",
551 printf(
" Exit program.\n");
559 MMG5_int np,
int *typSol) {
566 fprintf(stderr,
"\n ## Warning: %s: old solutions array deletion.\n",
579 for ( j=0; j<nsols; ++j ) {
584 sprintf(data,
"sol_%d",j);
589 sprintf(data,
"sol_%d.o",j);
595 fprintf(stderr,
"\n ## Error: %s: unable to set the size of the"
596 " solution num %d.\n",__func__,j);
606 if ( typEntity != NULL )
609 if ( typSol != NULL ) {
610 if (
sol->size == 1 )
612 else if (
sol->size == 2 )
614 else if (
sol->size == 3 )
629 MMG5_int* np,
int* typSol) {
634 fprintf(stderr,
"\n ## Error: %s: your mesh structure must be allocated"
635 " and filled\n",__func__);
645 if ( typSol != NULL ) {
646 typSol[j] = psl->
type;
672 for (k=1; k<=
mesh->
na; k++) {
684 fprintf(stderr,
"\n ## Error: %s: you must set the number of points with the",
686 fprintf(stderr,
" MMG2D_Set_meshSize function before setting vertices in mesh\n");
691 fprintf(stderr,
"\n ## Error: %s: unable to allocate a new point.\n",
693 fprintf(stderr,
" max number of points: %" MMG5_PRId
"\n",
mesh->
npmax);
699 fprintf(stderr,
"\n ## Error: %s: attempt to set new vertex at position %" MMG5_PRId
".",
701 fprintf(stderr,
" Overflow of the given number of vertices: %" MMG5_PRId
"\n",
mesh->
np);
702 fprintf(stderr,
" ## Check the mesh size, its compactness or the position");
703 fprintf(stderr,
" of the vertex.\n");
722 assert ( k <= mesh->np );
728 assert ( k <= mesh->np );
734 assert ( k <= mesh->np );
741 assert ( k <= mesh->np );
747 int* isCorner,
int* isRequired) {
752 fprintf(stderr,
"\n ## Warning: %s: reset the internal counter of points.\n",
754 fprintf(stderr,
" You must pass here exactly one time (the first time ");
755 fprintf(stderr,
"you call the MMG2D_Get_vertex function).\n");
756 fprintf(stderr,
" If not, the number of call of this function");
757 fprintf(stderr,
" exceed the number of points: %" MMG5_PRId
"\n ",
mesh->
np);
764 fprintf(stderr,
" ## Error: %s: unable to get point.\n",__func__);
765 fprintf(stderr,
" The number of call of MMG2D_Get_vertex function");
766 fprintf(stderr,
" exceed the number of points: %" MMG5_PRId
"\n ",
mesh->
np);
774 int* isCorner,
int* isRequired, MMG5_int idx) {
776 if ( idx < 1 || idx >
mesh->
np ) {
777 fprintf(stderr,
"\n ## Error: %s: unable to get point at position %" MMG5_PRId
".\n",
779 fprintf(stderr,
" Your vertices numbering goes from 1 to %" MMG5_PRId
"\n",
mesh->
np);
788 if ( isCorner != NULL ) {
795 if ( isRequired != NULL ) {
815 ppt->
c[0] = vertices[j];
816 ppt->
c[1] = vertices[j+1];
822 ppt->
ref = refs[i-1];
834 int* areCorners,
int* areRequired) {
843 vertices[j] = ppt->
c[0];
844 vertices[j+1] = ppt->
c[1];
850 if ( areCorners !=NULL ) {
857 if ( areRequired != NULL ) {
876 fprintf(stderr,
" ## Error: %s: You must set the number of elements with the",
878 fprintf(stderr,
" MMG2D_Set_meshSize function before setting elements in mesh\n");
883 fprintf(stderr,
" ## Error: %s: unable to allocate a new element.\n",
885 fprintf(stderr,
" max number of element: %" MMG5_PRId
"\n",
mesh->
ntmax);
891 fprintf(stderr,
"\n ## Error: %s: attempt to set new triangle at position %" MMG5_PRId
".",
893 fprintf(stderr,
" Overflow of the given number of triangle: %" MMG5_PRId
"\n",
mesh->
nt);
894 fprintf(stderr,
" ## Check the mesh size, its compactness or the position");
895 fprintf(stderr,
" of the triangle.\n");
916 fprintf(stderr,
"\n ## Error: %s: triangle %" MMG5_PRId
" has null area.\n",
918 for ( ip=0; ip<3; ip++ ) {
920 for ( j=0; j<3; j++ ) {
921 if ( fabs(ppt->
c[j])>0. ) {
922 fprintf(stderr,
" Check that you don't have a sliver triangle.\n");
936 fprintf(stderr,
"\n ## Warning: %s: %" MMG5_PRId
" triangles reoriented\n",
947 assert ( k <= mesh->nt );
960 assert ( k <= mesh->nt );
963 pt->
tag[0] &= ~MG_REQ;
964 pt->
tag[1] &= ~MG_REQ;
965 pt->
tag[2] &= ~MG_REQ;
977 fprintf(stderr,
"\n ## Warning: %s: reset the internal counter of"
978 " triangles.\n",__func__);
979 fprintf(stderr,
" You must pass here exactly one time (the first time ");
980 fprintf(stderr,
"you call the MMG2D_Get_triangle function).\n");
981 fprintf(stderr,
" If not, the number of call of this function");
982 fprintf(stderr,
" exceed the number of triangles: %" MMG5_PRId
"\n ",
mesh->
nt);
989 fprintf(stderr,
"\n ## Error: %s: unable to get triangle.\n",
991 fprintf(stderr,
" The number of call of MMG2D_Get_triangle function");
992 fprintf(stderr,
" can not exceed the number of triangles: %" MMG5_PRId
"\n ",
mesh->
nt);
1004 if ( isRequired != NULL ) {
1023 for (i=1;i<=
mesh->
nt;i++)
1027 ptt->
v[0] = tria[j] ;
1028 ptt->
v[1] = tria[j+2];
1029 ptt->
v[2] = tria[j+1];
1031 ptt->
ref = refs[i-1];
1038 for( ii=0 ; ii<3 ; ii++)
1045 fprintf(stderr,
"\n ## Error: %s: triangle %" MMG5_PRId
" has null area.\n",
1047 for ( ip=0; ip<3; ip++ ) {
1050 for ( jj=0; jj<3; jj++ ) {
1051 if ( fabs(ppt->
c[jj])>0. ) {
1052 fprintf(stderr,
" Check that you don't have a sliver triangle.\n");
1060 ptt->
v[2] = ptt->
v[1];
1066 fprintf(stderr,
"\n ## Warning: %s: %" MMG5_PRId
" triangles reoriented\n",
1078 for (i=1;i<=
mesh->
nt;i++)
1082 tria[j] = ptt->
v[0];
1083 tria[j+1] = ptt->
v[1];
1084 tria[j+2] = ptt->
v[2];
1087 refs[i-1] = ptt->
ref ;
1088 if ( areRequired != NULL ) {
1091 areRequired[i-1] = 1;
1093 areRequired[i-1] = 0;
1103 fprintf(stderr,
"\n ## Error: %s: You must set the number of quadrilaterals with the",
1105 fprintf(stderr,
" MMG2D_Set_meshSize function before setting elements in mesh\n");
1110 fprintf(stderr,
"\n ## Error: %s: attempt to set new quad at position %" MMG5_PRId
".",
1112 fprintf(stderr,
" Overflow of the given number of quads: %" MMG5_PRId
"\n",
mesh->
nquad);
1113 fprintf(stderr,
"\n ## Check the mesh size, its compactness or the position");
1114 fprintf(stderr,
" of the quad.\n");
1134 MMG5_int* ref,
int* isRequired) {
1135 static MMG5_int nqi = 0;
1140 fprintf(stderr,
"\n ## Warning: %s: reset the internal counter of"
1141 " quadrilaterals.\n",__func__);
1142 fprintf(stderr,
" You must pass here exactly one time (the first time ");
1143 fprintf(stderr,
"you call the MMG2D_Get_quadrilateral function).\n");
1144 fprintf(stderr,
" If not, the number of call of this function");
1145 fprintf(stderr,
" exceed the number of quadrilaterals: %" MMG5_PRId
"\n ",
mesh->
nquad);
1152 fprintf(stderr,
"\n ## Error: %s: unable to get quadra.\n",__func__);
1153 fprintf(stderr,
" The number of call of MMG2D_Get_quadrilateral function");
1154 fprintf(stderr,
" can not exceed the number of quadra: %" MMG5_PRId
"\n ",
mesh->
nquad);
1163 if ( ref != NULL ) {
1167 if ( isRequired != NULL ) {
1187 pq->
v[0] = quadra[j];
1188 pq->
v[1] = quadra[j+1];
1189 pq->
v[2] = quadra[j+2];
1190 pq->
v[3] = quadra[j+3];
1193 pq->
ref = refs[i-1];
1212 quadra[j] = pq->
v[0];
1213 quadra[j+1] = pq->
v[1];
1214 quadra[j+2] = pq->
v[2];
1215 quadra[j+3] = pq->
v[3];
1218 refs[i-1] = pq->
ref ;
1220 if ( areRequired != NULL ) {
1223 areRequired[i-1] = 1;
1226 areRequired[i-1] = 0;
1238 fprintf(stderr,
"\n ## Error: %s: you must set the number of elements"
1239 " with the",__func__);
1240 fprintf(stderr,
" MMG2D_Set_meshSize function before setting elements in mesh\n");
1245 fprintf(stderr,
"\n ## Error: %s: attempt to set new edge at position %" MMG5_PRId
".",
1247 fprintf(stderr,
" Overflow of the given number of edge: %" MMG5_PRId
"\n",
mesh->
na);
1248 fprintf(stderr,
" ## Check the mesh size, its compactness or the position");
1249 fprintf(stderr,
" of the edge.\n");
1268 assert ( k <= mesh->na );
1280 assert ( k <= mesh->na );
1284 ped->
tag &= ~MG_REQ;
1293 assert ( k <= mesh->na );
1308 ,
int* isRidge,
int* isRequired) {
1314 fprintf(stderr,
"\n ## Warning: %s: reset the internal counter of edges.\n",
1316 fprintf(stderr,
" You must pass here exactly one time (the first time ");
1317 fprintf(stderr,
"you call the MMG2D_Get_edge function).\n");
1318 fprintf(stderr,
" If not, the number of call of this function");
1319 fprintf(stderr,
" exceed the number of edges.\n ");
1320 fprintf(stderr,
" Please, call the MMG2D_Get_meshSize function to get"
1321 " this number.\n ");
1328 fprintf(stderr,
"\n ## Error: %s: unable to get edge.\n",__func__);
1329 fprintf(stderr,
" The number of call of MMG2D_Get_edge function");
1330 fprintf(stderr,
" can not exceed the number of edges: %" MMG5_PRId
"\n ",
mesh->
na);
1346 if ( isRidge != NULL ) {
1353 if ( isRequired != NULL ) {
1366 for (i=1;i<=
mesh->
na;i++)
1386 for (i=1;i<=
mesh->
na;i++)
1395 if ( areRidges != NULL ) {
1402 if ( areRequired != NULL ) {
1404 areRequired[i-1] = 1;
1406 areRequired[i-1] = 0;
1417 if ( k < 1 || k >
mesh->
nt ) {
1418 fprintf(stderr,
"\n ## Error: %s: unable to access to triangle %" MMG5_PRId
".\n",
1420 fprintf(stderr,
" Tria numbering goes from 1 to %" MMG5_PRId
"\n",
mesh->
nt);
1426 if ( (!met) || (!met->
m) || met->
size==1 ) {
1440 fprintf(stderr,
"\n ## Error: %s: You must set the number of"
1441 " solution with the",__func__);
1442 fprintf(stderr,
" MMG2D_Set_solSize function before setting values");
1443 fprintf(stderr,
" in solution structure \n");
1447 if ( pos >= met->
npmax ) {
1448 fprintf(stderr,
"\n ## Error: %s: unable to set a new solution.\n",
1450 fprintf(stderr,
" max number of solutions: %" MMG5_PRId
"\n",met->
npmax);
1454 if ( pos > met->
np ) {
1455 fprintf(stderr,
"\n ## Error: %s: attempt to set new solution"
1456 " at position %" MMG5_PRId
".",__func__,pos);
1457 fprintf(stderr,
" Overflow of the given number of solutions: %" MMG5_PRId
"\n",met->
np);
1458 fprintf(stderr,
" ## Check the solution size, its compactness or the position");
1459 fprintf(stderr,
" of the solution.\n");
1471 if ( met->
npi == met->
np ) {
1474 fprintf(stderr,
"\n ## Warning: %s: reset the internal counter"
1475 " of points.\n",__func__);
1476 fprintf(stderr,
" You must pass here exactly one time (the first time ");
1477 fprintf(stderr,
"you call the MMG2D_Get_scalarSol function).\n");
1478 fprintf(stderr,
" If not, the number of call of this function");
1479 fprintf(stderr,
" exceed the number of points: %" MMG5_PRId
"\n ",met->
np);
1485 if ( met->
npi > met->
np ) {
1486 fprintf(stderr,
"\n ## Error: %s: unable to get solution.\n",
1488 fprintf(stderr,
" The number of call of MMG2D_Get_scalarSol function");
1489 fprintf(stderr,
" can not exceed the number of points: %" MMG5_PRId
"\n ",met->
np);
1493 *s = met->
m[met->
npi];
1502 fprintf(stderr,
"\n ## Error: %s: you must set the number of"
1503 " solution with the",__func__);
1504 fprintf(stderr,
" MMG2D_Set_solSize function before setting values");
1505 fprintf(stderr,
" in solution structure \n");
1509 for ( k=0; k<met->
np; ++k )
1518 for ( k=0; k<met->
np; ++k )
1528 fprintf(stderr,
"\n ## Error: %s: you must set the number of"
1529 " solution with the",__func__);
1530 fprintf(stderr,
" MMG2D_Set_solSize function before setting values");
1531 fprintf(stderr,
" in solution structure \n");
1535 fprintf(stderr,
"\n ## Error: %s: unable to set a new solution.\n",
1537 fprintf(stderr,
" Minimal index of the solution position must be 1.\n");
1540 if ( pos >= met->
npmax ) {
1541 fprintf(stderr,
"\n ## Error: %s: unable to set a new solution.\n",
1543 fprintf(stderr,
" max number of solutions: %" MMG5_PRId
"\n",met->
npmax);
1547 if ( pos > met->
np ) {
1548 fprintf(stderr,
"\n ## Error: %s: attempt to set new solution"
1549 " at position %" MMG5_PRId
".",__func__,pos);
1550 fprintf(stderr,
" Overflow of the given number of solutions: %" MMG5_PRId
"\n",met->
np);
1551 fprintf(stderr,
"\n ## Check the solution size, its compactness or the position");
1552 fprintf(stderr,
" of the solution.\n");
1556 isol = (pos-1) * met->
size + 1;
1559 met->
m[isol+1] = vy;
1569 if ( met->
npi == met->
np ) {
1572 fprintf(stderr,
"\n ## Warning: %s: reset the internal counter of points.\n",
1574 fprintf(stderr,
" You must pass here exactly one time (the first time ");
1575 fprintf(stderr,
"you call the MMG2D_Get_vectorSol function).\n");
1576 fprintf(stderr,
" If not, the number of call of this function");
1577 fprintf(stderr,
" exceed the number of points: %" MMG5_PRId
"\n ",met->
np);
1583 if ( met->
npi > met->
np ) {
1584 fprintf(stderr,
"\n ## Error: %s: unable to get solution.\n",__func__);
1585 fprintf(stderr,
" The number of call of MMG2D_Get_vectorSol function");
1586 fprintf(stderr,
" can not exceed the number of points: %" MMG5_PRId
"\n ",met->
np);
1590 *vx = met->
m[met->
size*(met->
npi-1)+1];
1591 *vy = met->
m[met->
size*(met->
npi-1)+2];
1601 fprintf(stderr,
"\n ## Error: %s: you must set the number of"
1602 " solution with the",__func__);
1603 fprintf(stderr,
" MMG2D_Set_solSize function before setting values");
1604 fprintf(stderr,
" in solution structure \n");
1608 for ( k=0; k<met->
np; ++k ) {
1622 for ( k=0; k<met->
np; ++k ) {
1639 fprintf(stderr,
"\n ## Error: %s: you must set the number of"
1640 " solution with the",__func__);
1641 fprintf(stderr,
" MMG2D_Set_solSize function before setting values");
1642 fprintf(stderr,
" in solution structure \n");
1646 if ( pos >= met->
npmax ) {
1647 fprintf(stderr,
"\n ## Error: %s: unable to set a new solution.\n",
1649 fprintf(stderr,
" max number of solutions: %" MMG5_PRId
"\n",met->
npmax);
1653 if ( pos > met->
np ) {
1654 fprintf(stderr,
"\n ## Error: %s: attempt to set new solution "
1655 "at position %" MMG5_PRId
".",__func__,pos);
1656 fprintf(stderr,
" Overflow of the given number of solutions: %" MMG5_PRId
"\n",met->
np);
1657 fprintf(stderr,
" ## Check the solution size, its compactness or the position");
1658 fprintf(stderr,
" of the solution.\n");
1661 isol = pos * met->
size;
1662 met->
m[isol ] = m11;
1663 met->
m[isol + 1] = m12;
1664 met->
m[isol + 2] = m22;
1673 if ( met->
npi == met->
np ) {
1676 fprintf(stderr,
"\n ## Warning: %s: reset the internal counter of points.\n",
1678 fprintf(stderr,
" You must pass here exactly one time (the first time ");
1679 fprintf(stderr,
"you call the MMG2D_Get_tensorSol function).\n");
1680 fprintf(stderr,
" If not, the number of call of this function");
1681 fprintf(stderr,
" exceed the number of points: %" MMG5_PRId
"\n ",met->
np);
1687 if ( met->
npi > met->
np ) {
1688 fprintf(stderr,
"\n ## Error: %s: unable to get solution.\n",__func__);
1689 fprintf(stderr,
" The number of call of MMG2D_Get_tensorSol function");
1690 fprintf(stderr,
" can not exceed the number of points: %" MMG5_PRId
"\n ",met->
np);
1695 *m11 = met->
m[isol ];
1696 *m12 = met->
m[isol+1];
1697 *m22 = met->
m[isol+2];
1707 fprintf(stderr,
"\n ## Error: %s: You must set the number"
1708 " of solution with the",__func__);
1709 fprintf(stderr,
" MMG2D_Set_solSize function before setting values");
1710 fprintf(stderr,
" in solution structure \n");
1714 for ( k=0; k<met->
np; ++k ) {
1729 for ( k=0; k<met->
np; ++k ) {
1747 switch ( psl->
type ) {
1761 fprintf(stderr,
"\n ## Error: %s: unexpected type of solution: %s.\n",
1775 switch ( psl->
type ) {
1789 fprintf(stderr,
"\n ## Error: %s: unexpected type of solution: %s\n",
1803 switch ( psl->
type ) {
1817 fprintf(stderr,
"\n ## Error: %s: unexpected type of solution: %s.\n",
1832 switch ( psl->
type ) {
1846 fprintf(stderr,
"\n ## Error: %s: unexpected type of solution: %s\n",
1857 fprintf(stderr,
"\n ## Error: %s: if you don't use the MMG2D_loadMesh function,",
1859 fprintf(stderr,
" you must call the MMG2D_Set_meshSize function to have a");
1860 fprintf(stderr,
" valid mesh.\n");
1861 fprintf(stderr,
" Missing datas.\n");
1865 if ( met->
npi != met->
np ) {
1866 fprintf(stderr,
"\n ## Error: %s: if you don't use the MMG2D_loadMet function,",
1868 fprintf(stderr,
" you must call the MMG2D_Set_solSize function to have a");
1869 fprintf(stderr,
" valid solution.\n");
1870 fprintf(stderr,
" Missing datas.\n");
1878 fprintf(stderr,
" ** MISSING DATA.\n");
1879 fprintf(stderr,
" Check that your mesh contains points.\n");
1880 fprintf(stderr,
" Exit program.\n");
1886 fprintf(stderr,
" ** 2 DIMENSIONAL MESH NEEDED. Exit program.\n");
1889 if ( met->
dim != 2 ) {
1890 fprintf(stderr,
" ** WRONG DIMENSION FOR METRIC. Exit program.\n");
1894 if ( !met ->ver ) met ->
ver = 2;
const char * MMG5_Get_typeName(enum MMG5_type typ)
int MMG5_Set_outputMeshName(MMG5_pMesh mesh, const char *meshout)
int MMG5_Set_inputSolName(MMG5_pMesh mesh, MMG5_pSol sol, const char *solin)
int MMG5_Free_allSols(MMG5_pMesh mesh, MMG5_pSol *sol)
int MMG5_Set_inputMeshName(MMG5_pMesh mesh, const char *meshin)
void MMG5_Init_parameters(MMG5_pMesh mesh)
const char * MMG5_Get_entitiesName(enum MMG5_entities ent)
void MMG5_Init_fileNames(MMG5_pMesh mesh, MMG5_pSol sol)
int MMG5_Set_outputSolName(MMG5_pMesh mesh, MMG5_pSol sol, const char *solout)
int MMG2D_Set_lsBaseReference(MMG5_pMesh mesh, MMG5_pSol sol, MMG5_int br)
int MMG2D_Set_scalarSol(MMG5_pSol met, double s, MMG5_int pos)
int MMG2D_Get_ithSols_inSolsAtVertices(MMG5_pSol sol, int i, double *s)
void MMG2D_Init_parameters(MMG5_pMesh mesh)
void MMG2D_Init_fileNames(MMG5_pMesh mesh, MMG5_pSol sol)
int MMG2D_Set_quadrilateral(MMG5_pMesh mesh, MMG5_int v0, MMG5_int v1, MMG5_int v2, MMG5_int v3, MMG5_int ref, MMG5_int pos)
int MMG2D_Unset_requiredEdge(MMG5_pMesh mesh, MMG5_int k)
int MMG2D_Set_vertex(MMG5_pMesh mesh, double c0, double c1, MMG5_int ref, MMG5_int pos)
int MMG2D_Set_scalarSols(MMG5_pSol met, double *s)
int MMG2D_Init_mesh(const int starter,...)
int MMG2D_Get_vectorSols(MMG5_pSol met, double *sols)
int MMG2D_Set_iparameter(MMG5_pMesh mesh, MMG5_pSol sol, int iparam, MMG5_int val)
int MMG2D_Set_meshSize(MMG5_pMesh mesh, MMG5_int np, MMG5_int nt, MMG5_int nquad, MMG5_int na)
int MMG2D_Set_requiredEdge(MMG5_pMesh mesh, MMG5_int k)
int MMG2D_Get_quadrilateral(MMG5_pMesh mesh, MMG5_int *v0, MMG5_int *v1, MMG5_int *v2, MMG5_int *v3, MMG5_int *ref, int *isRequired)
int MMG2D_Set_tensorSol(MMG5_pSol met, double m11, double m12, double m22, MMG5_int pos)
int MMG2D_Get_vectorSol(MMG5_pSol met, double *vx, double *vy)
int MMG2D_Set_edge(MMG5_pMesh mesh, MMG5_int v0, MMG5_int v1, MMG5_int ref, MMG5_int pos)
int MMG2D_Set_ithSols_inSolsAtVertices(MMG5_pSol sol, int i, double *s)
int MMG2D_Unset_requiredTriangle(MMG5_pMesh mesh, MMG5_int k)
int MMG2D_Set_triangles(MMG5_pMesh mesh, MMG5_int *tria, MMG5_int *refs)
int MMG2D_GetByIdx_vertex(MMG5_pMesh mesh, double *c0, double *c1, MMG5_int *ref, int *isCorner, int *isRequired, MMG5_int idx)
int MMG2D_Free_allSols(MMG5_pMesh mesh, MMG5_pSol *sol)
int MMG2D_Set_ithSol_inSolsAtVertices(MMG5_pSol sol, int i, double *s, MMG5_int pos)
int MMG2D_Get_scalarSol(MMG5_pSol met, double *s)
int MMG2D_Get_vertices(MMG5_pMesh mesh, double *vertices, MMG5_int *refs, int *areCorners, int *areRequired)
int MMG2D_Unset_corner(MMG5_pMesh mesh, MMG5_int k)
int MMG2D_Get_solSize(MMG5_pMesh mesh, MMG5_pSol sol, int *typEntity, MMG5_int *np, int *typSol)
int MMG2D_Get_tensorSol(MMG5_pSol met, double *m11, double *m12, double *m22)
int MMG2D_Set_solSize(MMG5_pMesh mesh, MMG5_pSol sol, int typEntity, MMG5_int np, int typSol)
int MMG2D_Free_structures(const int starter,...)
int MMG2D_Chk_meshData(MMG5_pMesh mesh, MMG5_pSol met)
int MMG2D_Set_inputSolName(MMG5_pMesh mesh, MMG5_pSol sol, const char *solin)
int MMG2D_Set_tensorSols(MMG5_pSol met, double *sols)
int MMG2D_Set_inputMeshName(MMG5_pMesh mesh, const char *meshin)
int MMG2D_Get_vertex(MMG5_pMesh mesh, double *c0, double *c1, MMG5_int *ref, int *isCorner, int *isRequired)
int MMG2D_Get_scalarSols(MMG5_pSol met, double *s)
int MMG2D_Set_vectorSol(MMG5_pSol met, double vx, double vy, MMG5_int pos)
int MMG2D_Get_edge(MMG5_pMesh mesh, MMG5_int *e0, MMG5_int *e1, MMG5_int *ref, int *isRidge, int *isRequired)
double MMG2D_Get_triangleQuality(MMG5_pMesh mesh, MMG5_pSol met, MMG5_int k)
int MMG2D_Set_triangle(MMG5_pMesh mesh, MMG5_int v0, MMG5_int v1, MMG5_int v2, MMG5_int ref, MMG5_int pos)
int MMG2D_Set_solsAtVerticesSize(MMG5_pMesh mesh, MMG5_pSol *sol, int nsols, MMG5_int np, int *typSol)
int MMG2D_Get_tensorSols(MMG5_pSol met, double *sols)
int MMG2D_Get_meshSize(MMG5_pMesh mesh, MMG5_int *np, MMG5_int *nt, MMG5_int *nquad, MMG5_int *na)
int MMG2D_Get_edges(MMG5_pMesh mesh, MMG5_int *edges, MMG5_int *refs, int *areRidges, int *areRequired)
int MMG2D_Get_quadrilaterals(MMG5_pMesh mesh, MMG5_int *quadra, MMG5_int *refs, int *areRequired)
int MMG2D_Set_localParameter(MMG5_pMesh mesh, MMG5_pSol sol, int typ, MMG5_int ref, double hmin, double hmax, double hausd)
int MMG2D_Set_vertices(MMG5_pMesh mesh, double *vertices, MMG5_int *refs)
int MMG2D_Get_triangle(MMG5_pMesh mesh, MMG5_int *v0, MMG5_int *v1, MMG5_int *v2, MMG5_int *ref, int *isRequired)
int MMG2D_Set_vectorSols(MMG5_pSol met, double *sols)
int MMG2D_Set_corner(MMG5_pMesh mesh, MMG5_int k)
int MMG2D_Set_edges(MMG5_pMesh mesh, MMG5_int *edges, MMG5_int *refs)
int MMG2D_Set_requiredVertex(MMG5_pMesh mesh, MMG5_int k)
int MMG2D_Get_ithSol_inSolsAtVertices(MMG5_pSol sol, int i, double *s, MMG5_int pos)
int MMG2D_Set_parallelEdge(MMG5_pMesh mesh, MMG5_int k)
int MMG2D_Set_dparameter(MMG5_pMesh mesh, MMG5_pSol sol, int dparam, double val)
int MMG2D_Free_all(const int starter,...)
int MMG2D_Set_multiMat(MMG5_pMesh mesh, MMG5_pSol sol, MMG5_int ref, int split, MMG5_int rin, MMG5_int rout)
int MMG2D_Get_solsAtVerticesSize(MMG5_pMesh mesh, MMG5_pSol *sol, int *nsols, MMG5_int *np, int *typSol)
int MMG2D_Get_triangles(MMG5_pMesh mesh, MMG5_int *tria, MMG5_int *refs, int *areRequired)
int MMG2D_Set_quadrilaterals(MMG5_pMesh mesh, MMG5_int *quadra, MMG5_int *refs)
int MMG2D_Free_names(const int starter,...)
int MMG2D_Unset_requiredVertex(MMG5_pMesh mesh, MMG5_int k)
int MMG2D_Set_outputMeshName(MMG5_pMesh mesh, const char *meshout)
int MMG2D_Set_requiredTriangle(MMG5_pMesh mesh, MMG5_int k)
int MMG2D_Set_outputSolName(MMG5_pMesh mesh, MMG5_pSol sol, const char *solout)
MMG5_pMesh MMG5_pSol * sol
va_start(argptr, starter)
API headers for the mmg2d library.
@ MMG2D_IPARAM_numsubdomain
@ MMG2D_IPARAM_numberOfLocalParam
@ MMG2D_IPARAM_numberOfLSBaseReferences
@ MMG2D_IPARAM_numberOfMat
@ MMG2D_DPARAM_angleDetection
int MMG2D_setMeshSize_alloc(MMG5_pMesh)
int MMG2D_memOption(MMG5_pMesh mesh)
double MMG2D_caltri_ani(MMG5_pMesh mesh, MMG5_pSol sol, MMG5_pTria)
double MMG2D_caltri_iso(MMG5_pMesh mesh, MMG5_pSol sol, MMG5_pTria)
int MMG2D_Free_all_var(va_list argptr)
int MMG2D_Free_structures_var(va_list argptr)
int MMG2D_Free_names_var(va_list argptr)
int MMG2D_Init_mesh_var(va_list argptr)
LIBMMG_CORE_EXPORT int MMG5_Set_multiMat(MMG5_pMesh mesh, MMG5_pSol sol, MMG5_int ref, int split, MMG5_int rin, MMG5_int rex)
#define MMG5_VOLFRAC
API header for the common part of the MMG libraries.
LIBMMG_CORE_EXPORT int MMG5_Set_lsBaseReference(MMG5_pMesh mesh, MMG5_pSol sol, MMG5_int br)
#define MMG5_SAFE_CALLOC(ptr, size, type, law)
double MMG2D_quickarea(double a[2], double b[2], double c[2])
#define MMG5_INCREASE_MEM_MESSAGE()
#define MMG5_ADD_MEM(mesh, size, message, law)
#define MMG5_DEL_MEM(mesh, ptr)
Structure to store edges of a MMG mesh.
To store user-defined references in the mesh (useful in LS mode)
Structure to store points of a MMG mesh.