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");
235 fprintf(stderr,
"\n ## Warning: %s: new level-set based references values\n",__func__);
240 printf(
" Exit program.\n");
253 fprintf(stderr,
"\n ## Warning: %s: new multi materials values\n",__func__);
259 printf(
" Exit program.\n");
268 fprintf(stderr,
"\n ## Error: %s: unknown type of parameter\n",__func__);
289 fprintf(stderr,
"\n ## Error: hmin value must be strictly lower than hmax one"
294 fprintf(stderr,
"\n ## Error: hmin must be strictly positive "
295 "(minimal edge length).\n");
304 fprintf(stderr,
"\n ## Error: hmin value must be strictly lower than hmax one"
309 fprintf(stderr,
"\n ## Error: hmax must be strictly positive "
310 "(maximal edge length).\n");
338 fprintf(stderr,
"\n ## Error: %s: hausdorff number must be"
339 " strictly positive.\n",__func__);
359 fprintf(stderr,
"\n ## Error: %s: unknown type of parameter\n",
367 double hmin,
double hmax,
double hausd){
372 fprintf(stderr,
"\n ## Error: %s: You must set the number of local"
373 " parameters",__func__);
374 fprintf(stderr,
" with the MMG2D_Set_iparameters function before setting");
375 fprintf(stderr,
" values in local parameters structure. \n");
379 fprintf(stderr,
"\n ## Error: %s: unable to set a new local parameter.\n",
381 fprintf(stderr,
" max number of local parameters: %d\n",
mesh->
info.
npar);
385 fprintf(stderr,
"\n ## Warning: %s: you must apply your local parameters",
387 fprintf(stderr,
" on triangles (MMG5_Triangle or %d) or edges"
389 fprintf(stderr,
"\n ## Unknown type of entity: ignored.\n");
393 fprintf(stderr,
"\n ## Error: %s: negative references are not allowed.\n",
398 fprintf(stderr,
"\n ## Error: %s: negative hmin value is not allowed.\n",
403 fprintf(stderr,
"\n ## Error: %s: negative hmax value is not allowed.\n",
408 fprintf(stderr,
"\n ## Error: %s: negative hausd value is not allowed.\n",
416 if ( par->
elt == typ && par->
ref == ref ) {
421 fprintf(stderr,
"\n ## Warning: %s: new parameters (hausd, hmin and hmax)",
423 fprintf(stderr,
" for entities of type %d and of ref %" MMG5_PRId
"\n",typ,ref);
444 fprintf(stderr,
"\n ## Error: %s: unexpected entity type: %s.\n",
455 int split,MMG5_int rin,MMG5_int rout){
468 fprintf(stderr,
"\n ## Warning: %s: old mesh deletion.\n",__func__);
492 fprintf(stderr,
"\n ## Error: %s: not enough memory (%d).\n",
509 fprintf(stderr,
"\n ## Warning: %s: old solution deletion.\n",__func__);
512 fprintf(stderr,
"\n ## Error: %s: mmg2d need a solution imposed on vertices.\n",
529 fprintf(stderr,
"\n ## Error: %s: type of solution not yet implemented.\n",
543 printf(
" Exit program.\n");
551 MMG5_int np,
int *typSol) {
558 fprintf(stderr,
"\n ## Warning: %s: old solutions array deletion.\n",
571 for ( j=0; j<nsols; ++j ) {
576 sprintf(data,
"sol_%d",j);
581 sprintf(data,
"sol_%d.o",j);
587 fprintf(stderr,
"\n ## Error: %s: unable to set the size of the"
588 " solution num %d.\n",__func__,j);
598 if ( typEntity != NULL )
601 if ( typSol != NULL ) {
602 if (
sol->size == 1 )
604 else if (
sol->size == 2 )
606 else if (
sol->size == 3 )
621 MMG5_int* np,
int* typSol) {
626 fprintf(stderr,
"\n ## Error: %s: your mesh structure must be allocated"
627 " and filled\n",__func__);
637 if ( typSol != NULL ) {
638 typSol[j] = psl->
type;
664 for (k=1; k<=
mesh->
na; k++) {
676 fprintf(stderr,
"\n ## Error: %s: you must set the number of points with the",
678 fprintf(stderr,
" MMG2D_Set_meshSize function before setting vertices in mesh\n");
683 fprintf(stderr,
"\n ## Error: %s: unable to allocate a new point.\n",
685 fprintf(stderr,
" max number of points: %" MMG5_PRId
"\n",
mesh->
npmax);
691 fprintf(stderr,
"\n ## Error: %s: attempt to set new vertex at position %" MMG5_PRId
".",
693 fprintf(stderr,
" Overflow of the given number of vertices: %" MMG5_PRId
"\n",
mesh->
np);
694 fprintf(stderr,
" ## Check the mesh size, its compactness or the position");
695 fprintf(stderr,
" of the vertex.\n");
714 assert ( k <= mesh->np );
720 assert ( k <= mesh->np );
726 assert ( k <= mesh->np );
733 assert ( k <= mesh->np );
739 int* isCorner,
int* isRequired) {
744 fprintf(stderr,
"\n ## Warning: %s: reset the internal counter of points.\n",
746 fprintf(stderr,
" You must pass here exactly one time (the first time ");
747 fprintf(stderr,
"you call the MMG2D_Get_vertex function).\n");
748 fprintf(stderr,
" If not, the number of call of this function");
749 fprintf(stderr,
" exceed the number of points: %" MMG5_PRId
"\n ",
mesh->
np);
756 fprintf(stderr,
" ## Error: %s: unable to get point.\n",__func__);
757 fprintf(stderr,
" The number of call of MMG2D_Get_vertex function");
758 fprintf(stderr,
" exceed the number of points: %" MMG5_PRId
"\n ",
mesh->
np);
766 int* isCorner,
int* isRequired, MMG5_int idx) {
768 if ( idx < 1 || idx >
mesh->
np ) {
769 fprintf(stderr,
"\n ## Error: %s: unable to get point at position %" MMG5_PRId
".\n",
771 fprintf(stderr,
" Your vertices numbering goes from 1 to %" MMG5_PRId
"\n",
mesh->
np);
780 if ( isCorner != NULL ) {
787 if ( isRequired != NULL ) {
807 ppt->
c[0] = vertices[j];
808 ppt->
c[1] = vertices[j+1];
814 ppt->
ref = refs[i-1];
826 int* areCorners,
int* areRequired) {
835 vertices[j] = ppt->
c[0];
836 vertices[j+1] = ppt->
c[1];
842 if ( areCorners !=NULL ) {
849 if ( areRequired != NULL ) {
868 fprintf(stderr,
" ## Error: %s: You must set the number of elements with the",
870 fprintf(stderr,
" MMG2D_Set_meshSize function before setting elements in mesh\n");
875 fprintf(stderr,
" ## Error: %s: unable to allocate a new element.\n",
877 fprintf(stderr,
" max number of element: %" MMG5_PRId
"\n",
mesh->
ntmax);
883 fprintf(stderr,
"\n ## Error: %s: attempt to set new triangle at position %" MMG5_PRId
".",
885 fprintf(stderr,
" Overflow of the given number of triangle: %" MMG5_PRId
"\n",
mesh->
nt);
886 fprintf(stderr,
" ## Check the mesh size, its compactness or the position");
887 fprintf(stderr,
" of the triangle.\n");
908 fprintf(stderr,
"\n ## Error: %s: triangle %" MMG5_PRId
" has null area.\n",
910 for ( ip=0; ip<3; ip++ ) {
912 for ( j=0; j<3; j++ ) {
913 if ( fabs(ppt->
c[j])>0. ) {
914 fprintf(stderr,
" Check that you don't have a sliver triangle.\n");
928 fprintf(stderr,
"\n ## Warning: %s: %" MMG5_PRId
" triangles reoriented\n",
939 assert ( k <= mesh->nt );
952 assert ( k <= mesh->nt );
955 pt->
tag[0] &= ~MG_REQ;
956 pt->
tag[1] &= ~MG_REQ;
957 pt->
tag[2] &= ~MG_REQ;
969 fprintf(stderr,
"\n ## Warning: %s: reset the internal counter of"
970 " triangles.\n",__func__);
971 fprintf(stderr,
" You must pass here exactly one time (the first time ");
972 fprintf(stderr,
"you call the MMG2D_Get_triangle function).\n");
973 fprintf(stderr,
" If not, the number of call of this function");
974 fprintf(stderr,
" exceed the number of triangles: %" MMG5_PRId
"\n ",
mesh->
nt);
981 fprintf(stderr,
"\n ## Error: %s: unable to get triangle.\n",
983 fprintf(stderr,
" The number of call of MMG2D_Get_triangle function");
984 fprintf(stderr,
" can not exceed the number of triangles: %" MMG5_PRId
"\n ",
mesh->
nt);
996 if ( isRequired != NULL ) {
1015 for (i=1;i<=
mesh->
nt;i++)
1019 ptt->
v[0] = tria[j] ;
1020 ptt->
v[1] = tria[j+2];
1021 ptt->
v[2] = tria[j+1];
1023 ptt->
ref = refs[i-1];
1030 for( ii=0 ; ii<3 ; ii++)
1037 fprintf(stderr,
"\n ## Error: %s: triangle %" MMG5_PRId
" has null area.\n",
1039 for ( ip=0; ip<3; ip++ ) {
1042 for ( jj=0; jj<3; jj++ ) {
1043 if ( fabs(ppt->
c[jj])>0. ) {
1044 fprintf(stderr,
" Check that you don't have a sliver triangle.\n");
1052 ptt->
v[2] = ptt->
v[1];
1058 fprintf(stderr,
"\n ## Warning: %s: %" MMG5_PRId
" triangles reoriented\n",
1070 for (i=1;i<=
mesh->
nt;i++)
1074 tria[j] = ptt->
v[0];
1075 tria[j+1] = ptt->
v[1];
1076 tria[j+2] = ptt->
v[2];
1079 refs[i-1] = ptt->
ref ;
1080 if ( areRequired != NULL ) {
1083 areRequired[i-1] = 1;
1085 areRequired[i-1] = 0;
1095 fprintf(stderr,
"\n ## Error: %s: You must set the number of quadrilaterals with the",
1097 fprintf(stderr,
" MMG2D_Set_meshSize function before setting elements in mesh\n");
1102 fprintf(stderr,
"\n ## Error: %s: attempt to set new quad at position %" MMG5_PRId
".",
1104 fprintf(stderr,
" Overflow of the given number of quads: %" MMG5_PRId
"\n",
mesh->
nquad);
1105 fprintf(stderr,
"\n ## Check the mesh size, its compactness or the position");
1106 fprintf(stderr,
" of the quad.\n");
1126 MMG5_int* ref,
int* isRequired) {
1127 static MMG5_int nqi = 0;
1132 fprintf(stderr,
"\n ## Warning: %s: reset the internal counter of"
1133 " quadrilaterals.\n",__func__);
1134 fprintf(stderr,
" You must pass here exactly one time (the first time ");
1135 fprintf(stderr,
"you call the MMG2D_Get_quadrilateral function).\n");
1136 fprintf(stderr,
" If not, the number of call of this function");
1137 fprintf(stderr,
" exceed the number of quadrilaterals: %" MMG5_PRId
"\n ",
mesh->
nquad);
1144 fprintf(stderr,
"\n ## Error: %s: unable to get quadra.\n",__func__);
1145 fprintf(stderr,
" The number of call of MMG2D_Get_quadrilateral function");
1146 fprintf(stderr,
" can not exceed the number of quadra: %" MMG5_PRId
"\n ",
mesh->
nquad);
1155 if ( ref != NULL ) {
1159 if ( isRequired != NULL ) {
1179 pq->
v[0] = quadra[j];
1180 pq->
v[1] = quadra[j+1];
1181 pq->
v[2] = quadra[j+2];
1182 pq->
v[3] = quadra[j+3];
1185 pq->
ref = refs[i-1];
1204 quadra[j] = pq->
v[0];
1205 quadra[j+1] = pq->
v[1];
1206 quadra[j+2] = pq->
v[2];
1207 quadra[j+3] = pq->
v[3];
1210 refs[i-1] = pq->
ref ;
1212 if ( areRequired != NULL ) {
1215 areRequired[i-1] = 1;
1218 areRequired[i-1] = 0;
1230 fprintf(stderr,
"\n ## Error: %s: you must set the number of elements"
1231 " with the",__func__);
1232 fprintf(stderr,
" MMG2D_Set_meshSize function before setting elements in mesh\n");
1237 fprintf(stderr,
"\n ## Error: %s: attempt to set new edge at position %" MMG5_PRId
".",
1239 fprintf(stderr,
" Overflow of the given number of edge: %" MMG5_PRId
"\n",
mesh->
na);
1240 fprintf(stderr,
" ## Check the mesh size, its compactness or the position");
1241 fprintf(stderr,
" of the edge.\n");
1260 assert ( k <= mesh->na );
1272 assert ( k <= mesh->na );
1276 ped->
tag &= ~MG_REQ;
1285 assert ( k <= mesh->na );
1300 ,
int* isRidge,
int* isRequired) {
1306 fprintf(stderr,
"\n ## Warning: %s: reset the internal counter of edges.\n",
1308 fprintf(stderr,
" You must pass here exactly one time (the first time ");
1309 fprintf(stderr,
"you call the MMG2D_Get_edge function).\n");
1310 fprintf(stderr,
" If not, the number of call of this function");
1311 fprintf(stderr,
" exceed the number of edges.\n ");
1312 fprintf(stderr,
" Please, call the MMG2D_Get_meshSize function to get"
1313 " this number.\n ");
1320 fprintf(stderr,
"\n ## Error: %s: unable to get edge.\n",__func__);
1321 fprintf(stderr,
" The number of call of MMG2D_Get_edge function");
1322 fprintf(stderr,
" can not exceed the number of edges: %" MMG5_PRId
"\n ",
mesh->
na);
1338 if ( isRidge != NULL ) {
1345 if ( isRequired != NULL ) {
1358 for (i=1;i<=
mesh->
na;i++)
1378 for (i=1;i<=
mesh->
na;i++)
1387 if ( areRidges != NULL ) {
1394 if ( areRequired != NULL ) {
1396 areRequired[i-1] = 1;
1398 areRequired[i-1] = 0;
1409 if ( k < 1 || k >
mesh->
nt ) {
1410 fprintf(stderr,
"\n ## Error: %s: unable to access to triangle %" MMG5_PRId
".\n",
1412 fprintf(stderr,
" Tria numbering goes from 1 to %" MMG5_PRId
"\n",
mesh->
nt);
1418 if ( (!met) || (!met->
m) || met->
size==1 ) {
1432 fprintf(stderr,
"\n ## Error: %s: You must set the number of"
1433 " solution with the",__func__);
1434 fprintf(stderr,
" MMG2D_Set_solSize function before setting values");
1435 fprintf(stderr,
" in solution structure \n");
1439 if ( pos >= met->
npmax ) {
1440 fprintf(stderr,
"\n ## Error: %s: unable to set a new solution.\n",
1442 fprintf(stderr,
" max number of solutions: %" MMG5_PRId
"\n",met->
npmax);
1446 if ( pos > met->
np ) {
1447 fprintf(stderr,
"\n ## Error: %s: attempt to set new solution"
1448 " at position %" MMG5_PRId
".",__func__,pos);
1449 fprintf(stderr,
" Overflow of the given number of solutions: %" MMG5_PRId
"\n",met->
np);
1450 fprintf(stderr,
" ## Check the solution size, its compactness or the position");
1451 fprintf(stderr,
" of the solution.\n");
1463 if ( met->
npi == met->
np ) {
1466 fprintf(stderr,
"\n ## Warning: %s: reset the internal counter"
1467 " of points.\n",__func__);
1468 fprintf(stderr,
" You must pass here exactly one time (the first time ");
1469 fprintf(stderr,
"you call the MMG2D_Get_scalarSol function).\n");
1470 fprintf(stderr,
" If not, the number of call of this function");
1471 fprintf(stderr,
" exceed the number of points: %" MMG5_PRId
"\n ",met->
np);
1477 if ( met->
npi > met->
np ) {
1478 fprintf(stderr,
"\n ## Error: %s: unable to get solution.\n",
1480 fprintf(stderr,
" The number of call of MMG2D_Get_scalarSol function");
1481 fprintf(stderr,
" can not exceed the number of points: %" MMG5_PRId
"\n ",met->
np);
1485 *s = met->
m[met->
npi];
1494 fprintf(stderr,
"\n ## Error: %s: you must set the number of"
1495 " solution with the",__func__);
1496 fprintf(stderr,
" MMG2D_Set_solSize function before setting values");
1497 fprintf(stderr,
" in solution structure \n");
1501 for ( k=0; k<met->
np; ++k )
1510 for ( k=0; k<met->
np; ++k )
1520 fprintf(stderr,
"\n ## Error: %s: you must set the number of"
1521 " solution with the",__func__);
1522 fprintf(stderr,
" MMG2D_Set_solSize function before setting values");
1523 fprintf(stderr,
" in solution structure \n");
1527 fprintf(stderr,
"\n ## Error: %s: unable to set a new solution.\n",
1529 fprintf(stderr,
" Minimal index of the solution position must be 1.\n");
1532 if ( pos >= met->
npmax ) {
1533 fprintf(stderr,
"\n ## Error: %s: unable to set a new solution.\n",
1535 fprintf(stderr,
" max number of solutions: %" MMG5_PRId
"\n",met->
npmax);
1539 if ( pos > met->
np ) {
1540 fprintf(stderr,
"\n ## Error: %s: attempt to set new solution"
1541 " at position %" MMG5_PRId
".",__func__,pos);
1542 fprintf(stderr,
" Overflow of the given number of solutions: %" MMG5_PRId
"\n",met->
np);
1543 fprintf(stderr,
"\n ## Check the solution size, its compactness or the position");
1544 fprintf(stderr,
" of the solution.\n");
1548 isol = (pos-1) * met->
size + 1;
1551 met->
m[isol+1] = vy;
1561 if ( met->
npi == met->
np ) {
1564 fprintf(stderr,
"\n ## Warning: %s: reset the internal counter of points.\n",
1566 fprintf(stderr,
" You must pass here exactly one time (the first time ");
1567 fprintf(stderr,
"you call the MMG2D_Get_vectorSol function).\n");
1568 fprintf(stderr,
" If not, the number of call of this function");
1569 fprintf(stderr,
" exceed the number of points: %" MMG5_PRId
"\n ",met->
np);
1575 if ( met->
npi > met->
np ) {
1576 fprintf(stderr,
"\n ## Error: %s: unable to get solution.\n",__func__);
1577 fprintf(stderr,
" The number of call of MMG2D_Get_vectorSol function");
1578 fprintf(stderr,
" can not exceed the number of points: %" MMG5_PRId
"\n ",met->
np);
1582 *vx = met->
m[met->
size*(met->
npi-1)+1];
1583 *vy = met->
m[met->
size*(met->
npi-1)+2];
1593 fprintf(stderr,
"\n ## Error: %s: you must set the number of"
1594 " solution with the",__func__);
1595 fprintf(stderr,
" MMG2D_Set_solSize function before setting values");
1596 fprintf(stderr,
" in solution structure \n");
1600 for ( k=0; k<met->
np; ++k ) {
1614 for ( k=0; k<met->
np; ++k ) {
1631 fprintf(stderr,
"\n ## Error: %s: you must set the number of"
1632 " solution with the",__func__);
1633 fprintf(stderr,
" MMG2D_Set_solSize function before setting values");
1634 fprintf(stderr,
" in solution structure \n");
1638 if ( pos >= met->
npmax ) {
1639 fprintf(stderr,
"\n ## Error: %s: unable to set a new solution.\n",
1641 fprintf(stderr,
" max number of solutions: %" MMG5_PRId
"\n",met->
npmax);
1645 if ( pos > met->
np ) {
1646 fprintf(stderr,
"\n ## Error: %s: attempt to set new solution "
1647 "at position %" MMG5_PRId
".",__func__,pos);
1648 fprintf(stderr,
" Overflow of the given number of solutions: %" MMG5_PRId
"\n",met->
np);
1649 fprintf(stderr,
" ## Check the solution size, its compactness or the position");
1650 fprintf(stderr,
" of the solution.\n");
1653 isol = pos * met->
size;
1654 met->
m[isol ] = m11;
1655 met->
m[isol + 1] = m12;
1656 met->
m[isol + 2] = m22;
1665 if ( met->
npi == met->
np ) {
1668 fprintf(stderr,
"\n ## Warning: %s: reset the internal counter of points.\n",
1670 fprintf(stderr,
" You must pass here exactly one time (the first time ");
1671 fprintf(stderr,
"you call the MMG2D_Get_tensorSol function).\n");
1672 fprintf(stderr,
" If not, the number of call of this function");
1673 fprintf(stderr,
" exceed the number of points: %" MMG5_PRId
"\n ",met->
np);
1679 if ( met->
npi > met->
np ) {
1680 fprintf(stderr,
"\n ## Error: %s: unable to get solution.\n",__func__);
1681 fprintf(stderr,
" The number of call of MMG2D_Get_tensorSol function");
1682 fprintf(stderr,
" can not exceed the number of points: %" MMG5_PRId
"\n ",met->
np);
1687 *m11 = met->
m[isol ];
1688 *m12 = met->
m[isol+1];
1689 *m22 = met->
m[isol+2];
1699 fprintf(stderr,
"\n ## Error: %s: You must set the number"
1700 " of solution with the",__func__);
1701 fprintf(stderr,
" MMG2D_Set_solSize function before setting values");
1702 fprintf(stderr,
" in solution structure \n");
1706 for ( k=0; k<met->
np; ++k ) {
1721 for ( k=0; k<met->
np; ++k ) {
1739 switch ( psl->
type ) {
1753 fprintf(stderr,
"\n ## Error: %s: unexpected type of solution: %s.\n",
1767 switch ( psl->
type ) {
1781 fprintf(stderr,
"\n ## Error: %s: unexpected type of solution: %s\n",
1795 switch ( psl->
type ) {
1809 fprintf(stderr,
"\n ## Error: %s: unexpected type of solution: %s.\n",
1824 switch ( psl->
type ) {
1838 fprintf(stderr,
"\n ## Error: %s: unexpected type of solution: %s\n",
1849 fprintf(stderr,
"\n ## Error: %s: if you don't use the MMG2D_loadMesh function,",
1851 fprintf(stderr,
" you must call the MMG2D_Set_meshSize function to have a");
1852 fprintf(stderr,
" valid mesh.\n");
1853 fprintf(stderr,
" Missing datas.\n");
1857 if ( met->
npi != met->
np ) {
1858 fprintf(stderr,
"\n ## Error: %s: if you don't use the MMG2D_loadMet function,",
1860 fprintf(stderr,
" you must call the MMG2D_Set_solSize function to have a");
1861 fprintf(stderr,
" valid solution.\n");
1862 fprintf(stderr,
" Missing datas.\n");
1870 fprintf(stderr,
" ** MISSING DATA.\n");
1871 fprintf(stderr,
" Check that your mesh contains points.\n");
1872 fprintf(stderr,
" Exit program.\n");
1878 fprintf(stderr,
" ** 2 DIMENSIONAL MESH NEEDED. Exit program.\n");
1881 if ( met->
dim != 2 ) {
1882 fprintf(stderr,
" ** WRONG DIMENSION FOR METRIC. Exit program.\n");
1886 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
if(!ier) exit(EXIT_FAILURE)
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.