96 fprintf(stderr,
"\n ## Warning: %s: old solution deletion.\n",__func__);
99 fprintf(stderr,
"\n ## Error: %s: mmgs need a solution imposed on vertices.\n",
118 fprintf(stderr,
"\n ## Error: %s: type of solution not yet implemented.\n",
133 fprintf(stderr,
" Exit program.\n");
141 MMG5_int nentities,
int *typSol) {
148 fprintf(stderr,
"\n ## Warning: %s: old solutions array deletion.\n",
161 for ( j=0; j<nsols; ++j ) {
166 sprintf(data,
"sol_%d",j);
171 sprintf(data,
"sol_%d.o",j);
177 fprintf(stderr,
"\n ## Error: %s: unable to set the size of the"
178 " solution num %d.\n",__func__,j);
189 fprintf(stderr,
"\n ## Warning: %s: old mesh deletion.\n",__func__);
199 fprintf(stderr,
" ** MISSING DATA:\n");
200 fprintf(stderr,
" Your mesh must contains at least points and triangles.\n");
216 fprintf(stderr,
"\n ## Error: %s: not enough memory %d\n",
232 if ( typEntity != NULL )
235 if ( typSol != NULL ) {
236 if (
sol->size == 1 )
238 else if (
sol->size == 3 )
240 else if (
sol->size == 6 )
257 MMG5_int* np,
int* typSol) {
262 fprintf(stderr,
"\n ## Error: %s: your mesh structure must be allocated"
263 " and filled\n",__func__);
273 if ( typSol != NULL ) {
274 typSol[j] = psl->
type;
300 fprintf(stderr,
"\n ## Error: %s: you must set the number of points with the",
302 fprintf(stderr,
" MMGS_Set_meshSize function before setting vertices in mesh.\n");
307 fprintf(stderr,
"\n ## Error: %s: unable to allocate a new point.\n",__func__);
308 fprintf(stderr,
" max number of points: %" MMG5_PRId
"\n",
mesh->
npmax);
314 fprintf(stderr,
"\n ## Error: %s: attempt to set new vertex at position %" MMG5_PRId
".",
316 fprintf(stderr,
" Overflow of the given number of vertices: %" MMG5_PRId
"\n",
mesh->
np);
317 fprintf(stderr,
"\n ## Check the mesh size, its compactness or the position");
318 fprintf(stderr,
" of the vertex.\n");
344 ppt->
c[0] = vertices[j];
345 ppt->
c[1] = vertices[j+1];
346 ppt->
c[2] = vertices[j+2];
353 ppt->
ref = refs[i-1];
361 int* isCorner,
int* isRequired) {
366 fprintf(stderr,
"\n ## Warning: %s: reset the internal counter of points.\n",
368 fprintf(stderr,
" You must pass here exactly one time (the first time ");
369 fprintf(stderr,
"you call the MMGS_Get_vertex function).\n");
370 fprintf(stderr,
" If not, the number of call of this function");
371 fprintf(stderr,
" exceed the number of points: %" MMG5_PRId
"\n ",
mesh->
np);
378 fprintf(stderr,
"\n ## Error: %s: unable to get point.\n",__func__);
379 fprintf(stderr,
" The number of call of MMGS_Get_vertex function");
380 fprintf(stderr,
" can not exceed the number of points: %" MMG5_PRId
"\n ",
mesh->
np);
388 int* isCorner,
int* isRequired, MMG5_int idx) {
390 if ( idx < 1 || idx >
mesh->
np ) {
391 fprintf(stderr,
"\n ## Error: %s: unable to get point at position %" MMG5_PRId
".\n",
393 fprintf(stderr,
" Your vertices numbering goes from 1 to %" MMG5_PRId
"\n",
mesh->
np);
403 if ( isCorner != NULL ) {
410 if ( isRequired != NULL ) {
421 int* areCorners,
int* areRequired) {
430 vertices[j] = ppt->
c[0];
431 vertices[j+1] = ppt->
c[1];
432 vertices[j+2] = ppt->
c[2];
438 if ( areCorners !=NULL ) {
445 if ( areRequired != NULL ) {
459 fprintf(stderr,
"\n ## Error: %s: You must set the number of triangles"
460 " with the",__func__);
461 fprintf(stderr,
" MMGS_Set_meshSize function before setting triangles in mesh\n");
466 fprintf(stderr,
"\n ## Error: %s: unable to allocate a new triangle.\n",
468 fprintf(stderr,
" max number of triangle: %" MMG5_PRId
"\n",
mesh->
ntmax);
474 fprintf(stderr,
"\n ## Error: %s: attempt to set new triangle at position %" MMG5_PRId
".",
476 fprintf(stderr,
" Overflow of the given number of triangles: %" MMG5_PRId
"\n",
mesh->
nt);
477 fprintf(stderr,
"\n ## Check the mesh size, its compactness or the position");
478 fprintf(stderr,
" of the triangle.\n");
501 fprintf(stderr,
"\n ## Warning: %s: reset the internal counter of triangles.\n",
503 fprintf(stderr,
" You must pass here exactly one time (the first time ");
504 fprintf(stderr,
"you call the MMGS_Get_triangle function).\n");
505 fprintf(stderr,
" If not, the number of call of this function");
506 fprintf(stderr,
" exceed the number of triangles: %" MMG5_PRId
"\n ",
mesh->
nt);
513 fprintf(stderr,
"\n ## Error: %s: unable to get triangle.\n",__func__);
514 fprintf(stderr,
" The number of call of MMGS_Get_triangle function");
515 fprintf(stderr,
" can not exceed the number of triangles: %" MMG5_PRId
"\n ",
mesh->
nt);
526 if ( isRequired != NULL ) {
545 ptt->
v[0] = tria[j] ;
546 ptt->
v[1] = tria[j+1];
547 ptt->
v[2] = tria[j+2];
554 ptt->
ref = refs[i-1];
568 tria[j+1] = ptt->
v[1];
569 tria[j+2] = ptt->
v[2];
572 refs[i-1] = ptt->
ref ;
573 if ( areRequired != NULL ) {
576 areRequired[i-1] = 1;
578 areRequired[i-1] = 0;
588 fprintf(stderr,
"\n ## Error: %s: You must set the number of edges with the",
590 fprintf(stderr,
" MMGS_Set_meshSize function before setting edges in mesh\n");
594 fprintf(stderr,
"\n ## Error: %s: unable to allocate a new edge.\n",
596 fprintf(stderr,
" max number of edge: %" MMG5_PRId
"\n",
mesh->
namax);
601 fprintf(stderr,
"\n ## Error: %s: attempt to set new edge at position %" MMG5_PRId
".",
603 fprintf(stderr,
" Overflow of the given number of edges: %" MMG5_PRId
"\n",
mesh->
na);
604 fprintf(stderr,
"\n ## Check the mesh size, its compactness or the position");
605 fprintf(stderr,
" of the edge.\n");
618 ,
int* isRidge,
int* isRequired) {
623 fprintf(stderr,
"\n ## Warning: %s: reset the internal counter of edges.\n",
625 fprintf(stderr,
" You must pass here exactly one time (the first time ");
626 fprintf(stderr,
"you call the MMGS_Get_edge function).\n");
627 fprintf(stderr,
" If not, the number of call of this function");
628 fprintf(stderr,
" exceed the number of edges: %" MMG5_PRId
"\n ",
mesh->
na);
635 fprintf(stderr,
"\n ## Error: %s: unable to get edge.\n",__func__);
636 fprintf(stderr,
" The number of call of MMGS_Get_edge function");
637 fprintf(stderr,
" can not exceed the number of edges: %" MMG5_PRId
"\n ",
mesh->
na);
646 if ( isRidge != NULL ) {
653 if ( isRequired != NULL ) {
692 if ( areRidges != NULL ) {
699 if ( areRequired != NULL ) {
701 areRequired[i-1] = 1;
703 areRequired[i-1] = 0;
711 assert ( k <= mesh->np );
717 assert ( k <= mesh->np );
723 assert ( k <= mesh->np );
730 assert ( k <= mesh->np );
736 assert ( k <= mesh->nt );
744 assert ( k <= mesh->nt );
752 assert ( k <= mesh->na );
757 assert ( k <= mesh->na );
763 assert ( k <= mesh->na );
769 assert ( k <= mesh->na );
776 assert ( k <= mesh->np );
788 assert ( k <= mesh->np );
800 if ( k < 1 || k >
mesh->
nt ) {
801 fprintf(stderr,
"\n ## Error: %s: unable to access to triangle %" MMG5_PRId
".\n",
803 fprintf(stderr,
" Tria numbering goes from 1 to %" MMG5_PRId
"\n",
mesh->
nt);
809 if ( (!met) || (!met->
m) || met->
size==1 ) {
826 fprintf(stderr,
"\n ## Error: %s: You must set the number of solution"
827 " with the",__func__);
828 fprintf(stderr,
" MMGS_Set_solSize function before setting values");
829 fprintf(stderr,
" in solution structure \n");
833 fprintf(stderr,
"\n ## Error: %s: unable to set a new solution.\n",
835 fprintf(stderr,
" Minimal index of the solution position must be 1.\n");
838 if ( pos >= met->
npmax ) {
839 fprintf(stderr,
"\n ## Error: %s: unable to set a new solution.\n",
841 fprintf(stderr,
" max number of solutions: %" MMG5_PRId
"\n",met->
npmax);
845 if ( pos > met->
np ) {
846 fprintf(stderr,
"\n ## Error: %s: attempt to set new solution at"
847 " position %" MMG5_PRId
".",__func__,pos);
848 fprintf(stderr,
" Overflow of the given number of solutions: %" MMG5_PRId
"\n",met->
np);
849 fprintf(stderr,
"\n ## Check the solution size, its compactness or the position");
850 fprintf(stderr,
" of the solution.\n");
861 if ( met->
npi == met->
np ) {
864 fprintf(stderr,
"\n ## Warning: %s: reset the internal counter of points.\n",
866 fprintf(stderr,
" You must pass here exactly one time (the first time ");
867 fprintf(stderr,
"you call the MMGS_Get_scalarSol function).\n");
868 fprintf(stderr,
" If not, the number of call of this function");
869 fprintf(stderr,
" exceed the number of points: %" MMG5_PRId
"\n ",met->
np);
875 if ( met->
npi > met->
np ) {
876 fprintf(stderr,
"\n ## Error: %s: unable to get solution.\n",__func__);
877 fprintf(stderr,
" The number of call of MMGS_Get_scalarSol function");
878 fprintf(stderr,
" can not exceed the number of points: %" MMG5_PRId
"\n ",met->
np);
882 *s = met->
m[met->
npi];
891 fprintf(stderr,
"\n ## Error: %s: You must set the number of solution"
892 " with the",__func__);
893 fprintf(stderr,
" MMGS_Set_solSize function before setting values");
894 fprintf(stderr,
" in solution structure \n");
898 for ( k=0; k<met->
np; ++k )
907 for ( k=0; k<met->
np; ++k )
917 fprintf(stderr,
"\n ## Error: %s: You must set the number of"
918 " solution with the",__func__);
919 fprintf(stderr,
" MMGS_Set_solSize function before setting values");
920 fprintf(stderr,
" in solution structure \n");
924 fprintf(stderr,
"\n ## Error: %s: unable to set a new solution.\n",
926 fprintf(stderr,
" Minimal index of the solution position must be 1.\n");
929 if ( pos >= met->
npmax ) {
930 fprintf(stderr,
"\n ## Error: %s: unable to set a new solution.\n",
932 fprintf(stderr,
" max number of solutions: %" MMG5_PRId
"\n",met->
npmax);
936 if ( pos > met->
np ) {
937 fprintf(stderr,
"\n ## Error: %s: attempt to set new solution at position %" MMG5_PRId
".",
939 fprintf(stderr,
" Overflow of the given number of solutions: %" MMG5_PRId
"\n",met->
np);
940 fprintf(stderr,
"\n ## Check the solution size, its compactness or the position");
941 fprintf(stderr,
" of the solution.\n");
946 met->
m[3*pos+1] = vy;
947 met->
m[3*pos+2] = vz;
955 if ( met->
npi == met->
np ) {
958 fprintf(stderr,
"\n ## Warning: %s: reset the internal counter of points.\n",
960 fprintf(stderr,
" You must pass here exactly one time (the first time ");
961 fprintf(stderr,
"you call the MMGS_Get_vectorSol function).\n");
962 fprintf(stderr,
" If not, the number of call of this function");
963 fprintf(stderr,
" exceed the number of points: %" MMG5_PRId
"\n ",met->
np);
969 if ( met->
npi > met->
np ) {
970 fprintf(stderr,
"\n ## Error: %s: unable to get solution.\n",__func__);
971 fprintf(stderr,
" The number of call of MMGS_Get_vectorSol function");
972 fprintf(stderr,
" can not exceed the number of points: %" MMG5_PRId
"\n ",met->
np);
976 *vx = met->
m[3*met->
npi];
977 *vy = met->
m[3*met->
npi+1];
978 *vz = met->
m[3*met->
npi+2];
989 fprintf(stderr,
"\n ## Error: %s: You must set the number of"
990 " solution with the",__func__);
991 fprintf(stderr,
" MMGS_Set_solSize function before setting values");
992 fprintf(stderr,
" in solution structure \n");
996 for ( k=0; k<met->
np; ++k ) {
1011 for ( k=0; k<met->
np; ++k ) {
1023 double m22,
double m23,
double m33, MMG5_int pos) {
1026 fprintf(stderr,
"\n ## Error: %s: You must set the number of"
1027 " solution with the",__func__);
1028 fprintf(stderr,
" MMGS_Set_solSize function before setting values");
1029 fprintf(stderr,
" in solution structure \n");
1033 fprintf(stderr,
"\n ## Error: %s: unable to set a new solution.\n",
1035 fprintf(stderr,
" Minimal index of the solution position must be 1.\n");
1038 if ( pos >= met->
npmax ) {
1039 fprintf(stderr,
"\n ## Error: %s: unable to set a new solution.\n",
1041 fprintf(stderr,
" max number of solutions: %" MMG5_PRId
"\n",met->
npmax);
1045 if ( pos > met->
np ) {
1046 fprintf(stderr,
"\n ## Error: %s: attempt to set new solution"
1047 " at position %" MMG5_PRId
".",__func__,pos);
1048 fprintf(stderr,
" Overflow of the given number of solutions: %" MMG5_PRId
"\n",met->
np);
1049 fprintf(stderr,
"\n ## Check the solution size, its compactness or the position");
1050 fprintf(stderr,
" of the solution.\n");
1054 met->
m[6*pos] = m11;
1055 met->
m[6*pos+1] = m12;
1056 met->
m[6*pos+2] = m13;
1057 met->
m[6*pos+3] = m22;
1058 met->
m[6*pos+4] = m23;
1059 met->
m[6*pos+5] = m33;
1065 double *m22,
double *m23,
double *m33) {
1069 if ( met->
npi == met->
np ) {
1072 fprintf(stderr,
"\n ## Warning: %s: reset the internal counter of"
1073 " points.\n",__func__);
1074 fprintf(stderr,
" You must pass here exactly one time (the first time ");
1075 fprintf(stderr,
"you call the MMGS_Get_tensorSol function).\n");
1076 fprintf(stderr,
" If not, the number of call of this function");
1077 fprintf(stderr,
" exceed the number of points: %" MMG5_PRId
"\n ",met->
np);
1083 if ( met->
npi > met->
np ) {
1084 fprintf(stderr,
"\n ## Error: %s: unable to get solution.\n",__func__);
1085 fprintf(stderr,
" The number of call of MMGS_Get_tensorSol function");
1086 fprintf(stderr,
" can not exceed the number of points: %" MMG5_PRId
"\n ",met->
np);
1090 *m11 = met->
m[6*met->
npi];
1091 *m12 = met->
m[6*met->
npi+1];
1092 *m13 = met->
m[6*met->
npi+2];
1093 *m22 = met->
m[6*met->
npi+3];
1094 *m23 = met->
m[6*met->
npi+4];
1095 *m33 = met->
m[6*met->
npi+5];
1106 fprintf(stderr,
"\n ## Error: %s: You must set the number"
1107 " of solution with the",__func__);
1108 fprintf(stderr,
" MMGS_Set_solSize function before setting values");
1109 fprintf(stderr,
" in solution structure \n");
1113 for ( k=0; k<met->
np; ++k ) {
1131 for ( k=0; k<met->
np; ++k ) {
1152 switch ( psl->
type ) {
1166 fprintf(stderr,
"\n ## Error: %s: unexpected type of solution: %s.\n",
1181 switch ( psl->
type ) {
1195 fprintf(stderr,
"\n ## Error: %s: unexpected type of solution: %s\n",
1209 switch ( psl->
type ) {
1223 fprintf(stderr,
"\n ## Error: %s: unexpected type of solution: %s.\n",
1237 switch ( psl->
type ) {
1251 fprintf(stderr,
"\n ## Error: %s: unexpected type of solution: %s\n",
1263 fprintf(stderr,
"\n ## Error: %s: if you don't use the MMGS_loadMesh"
1264 " function,",__func__);
1265 fprintf(stderr,
" you must call the MMGS_Set_meshSize function to have a");
1266 fprintf(stderr,
" valid mesh.\n");
1267 fprintf(stderr,
" Missing datas.\n");
1271 if ( met->
npi != met->
np ) {
1272 fprintf(stderr,
"\n ## Error: %s: if you don't use the MMGS_loadSol"
1273 " function,",__func__);
1274 fprintf(stderr,
" you must call the MMGS_Set_solSize function to have a");
1275 fprintf(stderr,
" valid solution.\n");
1276 fprintf(stderr,
" Missing datas.\n");
1284 fprintf(stderr,
" ** MISSING DATA.\n");
1285 fprintf(stderr,
" Check that your mesh contains points and triangles.\n");
1286 fprintf(stderr,
" Exit program.\n");
1292 fprintf(stderr,
" ** 3 DIMENSIONAL MESH NEEDED. Exit program.\n");
1295 if ( met->
dim != 3 ) {
1296 fprintf(stderr,
" ** WRONG DIMENSION FOR METRIC. Exit program.\n");
1300 if ( !met ->ver ) met ->
ver = 2;
1315 fprintf(stderr,
"\n ## Warning: %s: maximal memory authorized must be"
1316 " strictly positive.\n",__func__);
1317 fprintf(stderr,
" Reset to default value.\n");
1333 fprintf(stderr,
"\n ## Warning: %s: angle detection parameter set"
1334 " to default value\n",__func__);
1350 fprintf(stderr,
"\n ## Warning: %s: multi material mode not compatible with"
1351 " references preservation. Refs preservation disabled.\n",__func__);
1385 fprintf(stderr,
"\n ## Warning: %s: new local parameter values\n",__func__);
1392 fprintf(stderr,
" Exit program.\n");
1397 inival = MMG5_INTMAX;
1411 fprintf(stderr,
"\n ## Warning: %s: new level-set based references values\n",__func__);
1416 printf(
" Exit program.\n");
1429 fprintf(stderr,
"\n ## Warning: %s: new multi materials values\n",__func__);
1432 fprintf(stderr,
"\n ## Warning: %s: multi material mode not compatible with"
1433 " references preservation. Refs preservation disabled.\n",__func__);
1440 printf(
" Exit program.\n");
1454 fprintf(stderr,
"\n ## Error: %s: unknown type of parameter\n",__func__);
1506 fprintf(stderr,
"\n ## Error: %s: unknown type of parameter\n",__func__);
1524 fprintf(stderr,
"\n ## Warning: hmin value must be strictly lower than hmax one"
1533 fprintf(stderr,
"\n ## Warning: hmin value must be strictly lower than hmax one"
1557 fprintf(stderr,
"\n ## Error: %s: hausdorff number must be strictly"
1558 " positive.\n",__func__);
1568 if (val < 0.0 || val > 1.0) {
1569 fprintf(stderr,
"\n ## Error: %s: Coordinate regularization parameter must be comprised between 0 and 1.\n",__func__);
1585 fprintf(stderr,
"\n ## Error: %s: unknown type of parameter\n",__func__);
1592 double hmin,
double hmax,
double hausd){
1597 fprintf(stderr,
"\n ## Error: %s: You must set the number of local"
1598 " parameters",__func__);
1599 fprintf(stderr,
" with the MMGS_Set_iparameters function before setting");
1600 fprintf(stderr,
" values in local parameters structure. \n");
1604 fprintf(stderr,
"\n ## Error: %s: unable to set a new local parameter.\n",
1606 fprintf(stderr,
" max number of local parameters: %d\n",
mesh->
info.
npar);
1610 fprintf(stderr,
"\n ## Warning: %s: you must apply your local parameters",
1612 fprintf(stderr,
" on triangles (MMG5_Triangle or %d).\n",
MMG5_Triangle);
1613 fprintf(stderr,
" ## Unknown type of entity: ignored.\n");
1617 fprintf(stderr,
"\n ## Error: %s: negative references are not allowed.\n",
1623 fprintf(stderr,
"\n ## Error: %s: negative hmin value is not allowed.\n",
1628 fprintf(stderr,
"\n ## Error: %s: negative hmax value is not allowed.\n",
1633 fprintf(stderr,
"\n ## Error: %s: negative hausd value is not allowed.\n",
1641 if ( par->
elt == typ && par->
ref == ref ) {
1646 fprintf(stderr,
"\n ## Warning: %s: new parameters (hausd, hmin and hmax)",
1648 fprintf(stderr,
" for entities of type %d and of ref %" MMG5_PRId
"\n",typ,ref);
1666 fprintf(stderr,
"\n ## Error: %s: unexpected entity type: %s.\n",
1677 int split,MMG5_int rin,MMG5_int rout){
const char * MMG5_Get_typeName(enum MMG5_type typ)
int MMG5_Set_inputParamName(MMG5_pMesh mesh, const char *fparamin)
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 MMGS_Get_vertices(MMG5_pMesh mesh, double *vertices, MMG5_int *refs, int *areCorners, int *areRequired)
Get the coordinates, references and attributes of all vertices in the mesh.
int MMGS_Set_triangles(MMG5_pMesh mesh, MMG5_int *tria, MMG5_int *refs)
Set the vertices and references of all triangles in the mesh.
int MMGS_Set_iparameter(MMG5_pMesh mesh, MMG5_pSol sol, int iparam, MMG5_int val)
set an integer parameter of the remesher
int MMGS_Get_edges(MMG5_pMesh mesh, MMG5_int *edges, MMG5_int *refs, int *areRidges, int *areRequired)
Get vertices, references and attributes of all edges in the mesh.
int MMGS_Get_edge(MMG5_pMesh mesh, MMG5_int *e0, MMG5_int *e1, MMG5_int *ref, int *isRidge, int *isRequired)
Get the vertices, reference, and attributes of the next edge in the mesh.
int MMGS_Set_inputMeshName(MMG5_pMesh mesh, const char *meshin)
Set the name of the input mesh.
int MMGS_Get_vectorSol(MMG5_pSol met, double *vx, double *vy, double *vz)
Get the next element of a vector solution structure.
int MMGS_Get_tensorSols(MMG5_pSol met, double *sols)
Get all elements of a tensor solution field.
int MMGS_Get_meshSize(MMG5_pMesh mesh, MMG5_int *np, MMG5_int *nt, MMG5_int *na)
Get the number of vertices, triangles, and edges of the mesh.
int MMGS_Set_vertices(MMG5_pMesh mesh, double *vertices, MMG5_int *refs)
Set the coordinates and references of all vertices in a mesh.
int MMGS_Get_vectorSols(MMG5_pSol met, double *sols)
Get all elements of a vector solution structure.
int MMGS_Set_requiredVertex(MMG5_pMesh mesh, MMG5_int k)
Assign the "required" attribute to a vertex.
int MMGS_Set_localParameter(MMG5_pMesh mesh, MMG5_pSol sol, int typ, MMG5_int ref, double hmin, double hmax, double hausd)
set a local parameter
int MMGS_Init_mesh(const int starter,...)
Initialize a mesh structure and optionally the associated solution and metric structures.
int MMGS_Set_inputParamName(MMG5_pMesh mesh, const char *fparamin)
Set the name of the input parameter file.
int MMGS_Free_allSols(MMG5_pMesh mesh, MMG5_pSol *sol)
Deallocate an array of solution fields.
int MMGS_Unset_requiredEdge(MMG5_pMesh mesh, MMG5_int k)
Remove the "required" attribute from an edge.
int MMGS_Set_solsAtVerticesSize(MMG5_pMesh mesh, MMG5_pSol *sol, int nsols, MMG5_int nentities, int *typSol)
Initialize an array of solution fields defined at vertices: set dimension, types and number of fields...
int MMGS_Get_tensorSol(MMG5_pSol met, double *m11, double *m12, double *m13, double *m22, double *m23, double *m33)
Get the next element of a tensor solution structure.
int MMGS_Set_vertex(MMG5_pMesh mesh, double c0, double c1, double c2, MMG5_int ref, MMG5_int pos)
Set the coordinates of a single vertex.
int MMGS_Get_solSize(MMG5_pMesh mesh, MMG5_pSol sol, int *typEntity, MMG5_int *np, int *typSol)
Get the number of elements, dimension, and type of a solution.
int MMGS_Set_requiredTriangle(MMG5_pMesh mesh, MMG5_int k)
Assign the "required" attribute to a triangle.
int MMGS_Set_scalarSols(MMG5_pSol met, double *s)
Set the values of all elements of a scalar solution structure.
int MMGS_Get_ithSols_inSolsAtVertices(MMG5_pSol sol, int i, double *s)
Get one out of several solutions at all vertices in the mesh.
int MMGS_Free_structures(const int starter,...)
Structure deallocations before return.
int MMGS_Set_edges(MMG5_pMesh mesh, MMG5_int *edges, MMG5_int *refs)
Set the vertices and references of all edges in a mesh.
int MMGS_Unset_requiredVertex(MMG5_pMesh mesh, MMG5_int k)
Remove the "required" attribute from a vertex.
int MMGS_Unset_requiredTriangle(MMG5_pMesh mesh, MMG5_int k)
Remove the "required" attribute from a vertex.
int MMGS_Free_all(const int starter,...)
Deallocations before return.
int MMGS_Set_ithSol_inSolsAtVertices(MMG5_pSol sol, int i, double *s, MMG5_int pos)
Set a single element of one out of multiple solution fields that are defined on vertices.
int MMGS_Set_tensorSol(MMG5_pSol met, double m11, double m12, double m13, double m22, double m23, double m33, MMG5_int pos)
Set a single element of a tensor solution structure.
void MMGS_Init_parameters(MMG5_pMesh mesh)
Initialize the input parameters.
int MMGS_Set_requiredEdge(MMG5_pMesh mesh, MMG5_int k)
Assign the "required" attribute to an edge.
int MMGS_Set_ridge(MMG5_pMesh mesh, MMG5_int k)
Assign the "ridge" attribute to an edge.
int MMGS_GetByIdx_vertex(MMG5_pMesh mesh, double *c0, double *c1, double *c2, MMG5_int *ref, int *isCorner, int *isRequired, MMG5_int idx)
Get the coordinates and reference of a specific vertex in the mesh.
int MMGS_Get_scalarSol(MMG5_pSol met, double *s)
Get the next element of a scalar solution structure.
int MMGS_Set_inputSolName(MMG5_pMesh mesh, MMG5_pSol sol, const char *solin)
Set the name of the input solution file.
int MMGS_Get_ithSol_inSolsAtVertices(MMG5_pSol sol, int i, double *s, MMG5_int pos)
Get one out of several solutions at a specific vertex.
int MMGS_Set_edge(MMG5_pMesh mesh, MMG5_int v0, MMG5_int v1, MMG5_int ref, MMG5_int pos)
Set the vertices and reference of one edge in the mesh.
int MMGS_Get_iparameter(MMG5_pMesh mesh, MMG5_int iparam)
Get the value of an integer parameter of the remesher.
void MMGS_Init_fileNames(MMG5_pMesh mesh, MMG5_pSol sol)
Initialize file names to their default values.
int MMGS_Set_lsBaseReference(MMG5_pMesh mesh, MMG5_pSol sol, MMG5_int br)
Set a new level-set base reference.
int MMGS_Set_corner(MMG5_pMesh mesh, MMG5_int k)
Assign the "corner" attribute to a vertex.
int MMGS_Set_scalarSol(MMG5_pSol met, double s, MMG5_int pos)
Set a single element of a scalar solution structure.
int MMGS_Set_solSize(MMG5_pMesh mesh, MMG5_pSol sol, int typEntity, MMG5_int np, int typSol)
Initialize an array of solution fields: set dimension, types and number of fields.
int MMGS_Get_solsAtVerticesSize(MMG5_pMesh mesh, MMG5_pSol *sol, int *nsols, MMG5_int *np, int *typSol)
Get the number of elements, type, and dimensions of several solutions defined on vertices.
int MMGS_Get_scalarSols(MMG5_pSol met, double *s)
Get all elements of a scalar solution structure.
int MMGS_Unset_corner(MMG5_pMesh mesh, MMG5_int k)
Remove the "corner" attribute from a vertex.
int MMGS_Set_vectorSols(MMG5_pSol met, double *sols)
Set all elements of a vector solution structure.
int MMGS_Set_multiMat(MMG5_pMesh mesh, MMG5_pSol sol, MMG5_int ref, int split, MMG5_int rin, MMG5_int rout)
Set the reference mapping for the elements of reference ref in level-set discretization mode.
int MMGS_Get_triangle(MMG5_pMesh mesh, MMG5_int *v0, MMG5_int *v1, MMG5_int *v2, MMG5_int *ref, int *isRequired)
Get the vertices, reference, and required attribute of the next triangle in the mesh.
int MMGS_Set_ithSols_inSolsAtVertices(MMG5_pSol sol, int i, double *s)
Set all elements of one out of multiple solution fields that are defined on vertices.
int MMGS_Set_meshSize(MMG5_pMesh mesh, MMG5_int np, MMG5_int nt, MMG5_int na)
Set the number of vertices, triangles and edges of the mesh and allocate the associated tables.
int MMGS_Set_vectorSol(MMG5_pSol met, double vx, double vy, double vz, MMG5_int pos)
Set a single element of a vector solution structure.
int MMGS_Set_triangle(MMG5_pMesh mesh, MMG5_int v0, MMG5_int v1, MMG5_int v2, MMG5_int ref, MMG5_int pos)
Set the coordinates and reference of a single triangle.
int MMGS_Get_normalAtVertex(MMG5_pMesh mesh, MMG5_int k, double *n0, double *n1, double *n2)
Get the normal orientation at an edge.
int MMGS_Get_vertex(MMG5_pMesh mesh, double *c0, double *c1, double *c2, MMG5_int *ref, int *isCorner, int *isRequired)
Get the coordinates c0, c1,c2 and reference ref of the next vertex of mesh.
double MMGS_Get_triangleQuality(MMG5_pMesh mesh, MMG5_pSol met, MMG5_int k)
Get the quality measure of a triangle.
int MMGS_Chk_meshData(MMG5_pMesh mesh, MMG5_pSol met)
Check if the numbers of given entities match with mesh and solution size and check mesh data.
int MMGS_Set_tensorSols(MMG5_pSol met, double *sols)
Set all elements of a tensor solution structure.
int MMGS_Unset_ridge(MMG5_pMesh mesh, MMG5_int k)
Remove the "ridge" attribute from an edge.
int MMGS_Set_normalAtVertex(MMG5_pMesh mesh, MMG5_int k, double n0, double n1, double n2)
Set the normal orientation at a single vertex.
int MMGS_Set_outputMeshName(MMG5_pMesh mesh, const char *meshout)
Set the name of the output mesh file.
int MMGS_Free_names(const int starter,...)
Structure deallocations before return.
int MMGS_Get_triangles(MMG5_pMesh mesh, MMG5_int *tria, MMG5_int *refs, int *areRequired)
Get the vertices, references, and required attributes of all triangles in the mesh.
int MMGS_Set_dparameter(MMG5_pMesh mesh, MMG5_pSol sol, int dparam, double val)
set a real-valued parameter of the remesher
int MMGS_Set_outputSolName(MMG5_pMesh mesh, MMG5_pSol sol, const char *solout)
Set the name of the output solution file.
MMG5_pMesh MMG5_pSol * sol
if(!ier) exit(EXIT_FAILURE)
va_start(argptr, starter)
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)
API headers and documentation for the mmgs library.
@ MMGS_IPARAM_numberOfLocalParam
@ MMGS_IPARAM_numsubdomain
@ MMGS_DPARAM_angleDetection
@ MMGS_IPARAM_numberOfLSBaseReferences
@ MMGS_IPARAM_numberOfMat
int MMGS_Init_mesh_var(va_list argptr)
int MMGS_setMeshSize_alloc(MMG5_pMesh mesh)
int MMGS_Free_all_var(va_list argptr)
int MMGS_Free_names_var(va_list argptr)
int MMGS_memOption(MMG5_pMesh mesh)
int MMGS_Free_structures_var(va_list argptr)
#define MMG5_SAFE_CALLOC(ptr, size, type, law)
double MMG5_caltri_ani(MMG5_pMesh mesh, MMG5_pSol met, MMG5_pTria ptt)
#define MMG5_INCREASE_MEM_MESSAGE()
#define MMG5_ADD_MEM(mesh, size, message, law)
double MMG5_caltri_iso(MMG5_pMesh mesh, MMG5_pSol met, MMG5_pTria ptt)
double MMG5_caltri33_ani(MMG5_pMesh mesh, MMG5_pSol met, MMG5_pTria pt)
#define MMG5_DEL_MEM(mesh, ptr)
To store user-defined references in the mesh (useful in LS mode)
Local parameters for a specific entity and reference.
Structure to store vertices of an MMG mesh.
Structure to store triangles of a MMG mesh.