Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
33 changes: 33 additions & 0 deletions src/mmg2d/inout_2d.c
Original file line number Diff line number Diff line change
Expand Up @@ -978,6 +978,21 @@ int MMG2D_loadSol(MMG5_pMesh mesh,MMG5_pSol sol,const char *filename) {

fclose(inm);

/* For anisotropic metric, check that eigenvalues are stricly positive*/
if ( sol->size == 3 ) {
for (k=1; k<=sol->np; k++) {
double lambda[2],vp[2][2];
MMG5_eigensym(sol->m+3*k,lambda,vp);

if (!(lambda[0] > 0. && lambda[1] > 0.)) {
fprintf(stderr, " ## Error: At least one negative eigenvalue in"
" provided metric file : %lf %lf \n", lambda[0],
lambda[1]);
return -1;
}
}
}

/* stats */
MMG5_printMetStats(mesh,sol);

Expand Down Expand Up @@ -1092,6 +1107,24 @@ int MMG2D_loadAllSols(MMG5_pMesh mesh,MMG5_pSol *sol, const char *filename) {
}
fclose(inm);

/* For anisotropic metric, check that eigenvalues are stricly positive*/
for ( j=0; j<nsols; j++ ) {
psl = *sol+j;
if ( psl->size == 3 ) {
for ( k=1; k<=psl->np; k++ ) {
double lambda[2],vp[2][2];
MMG5_eigensym(psl->m+3*k,lambda,vp);

if (!(lambda[0] > 0. && lambda[1] > 0.)) {
fprintf(stderr, " ## Error: At least one negative eigenvalue in"
" provided metric file : %lf %lf \n", lambda[0],
lambda[1]);
return -1;
}
}
}
}

/* stats */
MMG5_printSolStats(mesh,sol);

Expand Down
33 changes: 33 additions & 0 deletions src/mmg3d/inout_3d.c
Original file line number Diff line number Diff line change
Expand Up @@ -2207,6 +2207,21 @@ int MMG3D_loadSol(MMG5_pMesh mesh,MMG5_pSol met, const char *filename) {

fclose(inm);

/* For anisotropic metric, check that eigenvalues are stricly positive*/
if ( met->size == 6 ) {
for (k=1; k<=met->np; k++) {
double lambda[3],vp[3][3];
MMG5_eigenv3d(1,met->m+6*k,lambda,vp);

if (!(lambda[0] > 0. && lambda[1] > 0. && lambda[2] > 0.)) {
fprintf(stderr, " ## Error: At least one negative eigenvalue in"
" provided metric file : %lf %lf %lf \n", lambda[0],
lambda[1], lambda[2]);
return -1;
}
}
}

/* stats */
MMG5_printMetStats(mesh,met);

Expand Down Expand Up @@ -2305,6 +2320,24 @@ int MMG3D_loadAllSols(MMG5_pMesh mesh,MMG5_pSol *sol, const char *filename) {
}
fclose(inm);

/* For anisotropic metric, check that eigenvalues are stricly positive*/
for ( j=0; j<nsols; j++) {
psl = *sol + j;
if ( psl->size == 6 ) {
for (k=1; k<=psl->np; k++) {
double lambda[3],vp[3][3];
MMG5_eigenv3d(1,psl->m+6*k,lambda,vp);

if (!(lambda[0] > 0. && lambda[1] > 0. && lambda[2] > 0.)) {
fprintf(stderr, " ## Error: At least one negative eigenvalue in"
" provided metric file : %lf %lf %lf \n", lambda[0],
lambda[1], lambda[2]);
return -1;
}
}
}
}

/* stats */
MMG5_printSolStats(mesh,sol);

Expand Down
33 changes: 33 additions & 0 deletions src/mmgs/inout_s.c
Original file line number Diff line number Diff line change
Expand Up @@ -1378,6 +1378,21 @@ int MMGS_loadSol(MMG5_pMesh mesh,MMG5_pSol met,const char* filename) {

fclose(inm);

/* For anisotropic metric, check that eigenvalues are stricly positive*/
if ( met->size == 6 ) {
for (k=1; k<=met->np; k++) {
double lambda[3],vp[3][3];
MMG5_eigenv3d(1,met->m+6*k,lambda,vp);

if (!(lambda[0] > 0. && lambda[1] > 0. && lambda[2] > 0.)) {
fprintf(stderr, " ## Error: At least one negative eigenvalue in"
" provided metric file : %lf %lf %lf \n", lambda[0],
lambda[1], lambda[2]);
return -1;
}
}
}

/* stats */
MMG5_printMetStats(mesh,met);

Expand Down Expand Up @@ -1474,6 +1489,24 @@ int MMGS_loadAllSols(MMG5_pMesh mesh,MMG5_pSol *sol, const char *filename) {
}
fclose(inm);

/* For anisotropic metric, check that eigenvalues are stricly positive*/
for ( j=0; j<nsols; j++) {
psl = *sol + j;
if ( psl->size == 6 ) {
for (k=1; k<=psl->np; k++) {
double lambda[3],vp[3][3];
MMG5_eigenv3d(1,psl->m+6*k,lambda,vp);

if (!(lambda[0] > 0. && lambda[1] > 0. && lambda[2] > 0.)) {
fprintf(stderr, " ## Error: At least one negative eigenvalue in"
" provided metric file : %lf %lf %lf \n", lambda[0],
lambda[1], lambda[2]);
return -1;
}
}
}
}

/* stats */
MMG5_printSolStats(mesh,sol);

Expand Down