From df848da8a2e791b0a005bd9c83a42f6a9e109f6c Mon Sep 17 00:00:00 2001 From: Corentin Prigent Date: Tue, 13 Feb 2024 15:16:56 +0100 Subject: [PATCH 1/7] Added continuous integration tests on ubuntu with int64 in github action workflow --- .github/workflows/main-job.yml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/.github/workflows/main-job.yml b/.github/workflows/main-job.yml index d8b978c1a..6ccec8004 100644 --- a/.github/workflows/main-job.yml +++ b/.github/workflows/main-job.yml @@ -310,6 +310,13 @@ jobs: cd build ctest --timeout 7200 -VV -C ${{ inputs.cmake_build_type }} -j ${{ env.NJOBS }} + - name: Test Mmg with in64_t integers + # Run long tests only on ubuntu with pattern off, scotch on, vtk on and int64_t integers + if: matrix.os == 'ubuntu-20.04' && matrix.pattern == 'off' && matrix.scotch == 'on' && matrix.vtk == 'on' && matrix.int == 'int64_t' + run: | + cd build + ctest --timeout 7200 -VV -C ${{ inputs.cmake_build_type }} -j ${{ env.NJOBS }} + - name: Test non native I/Os of Mmg if: matrix.vtk == 'on' run: | From 14aa08548bc084ec8c9a2803b53887942d78ac23 Mon Sep 17 00:00:00 2001 From: Corentin Prigent Date: Tue, 13 Feb 2024 15:22:55 +0100 Subject: [PATCH 2/7] Added continuous integration tests on ubuntu with int64 in github action workflow --- .github/workflows/main-job.yml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/.github/workflows/main-job.yml b/.github/workflows/main-job.yml index 6ccec8004..0901c7997 100644 --- a/.github/workflows/main-job.yml +++ b/.github/workflows/main-job.yml @@ -98,6 +98,13 @@ jobs: vtk: on int: int64_t + - os: ubuntu-20.04 + pattern: off + pointmap: off + scotch: on + vtk: on + int: int64_t + - os: ubuntu-20.04 pattern: off pointmap: off From 0239e604a1c2c9321889ff61f83a22e1c4c21a6c Mon Sep 17 00:00:00 2001 From: Corentin Prigent Date: Mon, 19 Feb 2024 12:16:17 +0100 Subject: [PATCH 3/7] Modified calls to MMG5_SWAPBIN to MMG5_swapbin to ensure compatibility when MMG is compiled in int 64 --- src/mmg2d/inout_2d.c | 46 +++++++++++++++--------------- src/mmg3d/inout_3d.c | 66 ++++++++++++++++++++++---------------------- src/mmgs/inout_s.c | 50 ++++++++++++++++----------------- 3 files changed, 81 insertions(+), 81 deletions(-) diff --git a/src/mmg2d/inout_2d.c b/src/mmg2d/inout_2d.c index 2ace1decc..7c7105f7a 100644 --- a/src/mmg2d/inout_2d.c +++ b/src/mmg2d/inout_2d.c @@ -182,7 +182,7 @@ int MMG2D_loadMesh(MMG5_pMesh mesh,const char *filename) { MMG_FREAD(&bpos,MMG5_SW,1,inm); //NulPos if(iswp) bpos=MMG5_swapbin(bpos); MMG_FREAD(&mesh->np,MMG5_SW,1,inm); - if(iswp) mesh->np=MMG5_SWAPBIN(mesh->np); + if(iswp) mesh->np=MMG5_swapbin(mesh->np); posnp = ftell(inm); rewind(inm); fseek(inm,bpos,SEEK_SET); @@ -191,7 +191,7 @@ int MMG2D_loadMesh(MMG5_pMesh mesh,const char *filename) { MMG_FREAD(&bpos,MMG5_SW,1,inm); //NulPos if(iswp) bpos=MMG5_swapbin(bpos); MMG_FREAD(&mesh->nt,MMG5_SW,1,inm); - if(iswp) mesh->nt=MMG5_SWAPBIN(mesh->nt); + if(iswp) mesh->nt=MMG5_swapbin(mesh->nt); posnt = ftell(inm); rewind(inm); fseek(inm,bpos,SEEK_SET); @@ -201,7 +201,7 @@ int MMG2D_loadMesh(MMG5_pMesh mesh,const char *filename) { MMG_FREAD(&bpos,MMG5_SW,1,inm); //NulPos if(iswp) bpos=MMG5_swapbin(bpos); MMG_FREAD(&ntreq,MMG5_SW,1,inm); - if(iswp) ntreq=MMG5_SWAPBIN(ntreq); + if(iswp) ntreq=MMG5_swapbin(ntreq); posntreq = ftell(inm); rewind(inm); fseek(inm,bpos,SEEK_SET); @@ -210,7 +210,7 @@ int MMG2D_loadMesh(MMG5_pMesh mesh,const char *filename) { MMG_FREAD(&bpos,MMG5_SW,1,inm); //NulPos if(iswp) bpos=MMG5_swapbin(bpos); MMG_FREAD(&mesh->nquad,MMG5_SW,1,inm); - if(iswp) mesh->nquad=MMG5_SWAPBIN(mesh->nquad); + if(iswp) mesh->nquad=MMG5_swapbin(mesh->nquad); posnq = ftell(inm); rewind(inm); fseek(inm,bpos,SEEK_SET); @@ -219,7 +219,7 @@ int MMG2D_loadMesh(MMG5_pMesh mesh,const char *filename) { MMG_FREAD(&bpos,MMG5_SW,1,inm); //NulPos if(iswp) bpos=MMG5_swapbin(bpos); MMG_FREAD(&nqreq,MMG5_SW,1,inm); - if(iswp) nqreq=MMG5_SWAPBIN(nqreq); + if(iswp) nqreq=MMG5_swapbin(nqreq); posnqreq = ftell(inm); rewind(inm); fseek(inm,bpos,SEEK_SET); @@ -228,7 +228,7 @@ int MMG2D_loadMesh(MMG5_pMesh mesh,const char *filename) { MMG_FREAD(&bpos,MMG5_SW,1,inm); //NulPos if(iswp) bpos=MMG5_swapbin(bpos); MMG_FREAD(&ncor,MMG5_SW,1,inm); - if(iswp) ncor=MMG5_SWAPBIN(ncor); + if(iswp) ncor=MMG5_swapbin(ncor); posncor = ftell(inm); rewind(inm); fseek(inm,bpos,SEEK_SET); @@ -237,7 +237,7 @@ int MMG2D_loadMesh(MMG5_pMesh mesh,const char *filename) { MMG_FREAD(&bpos,MMG5_SW,1,inm); //NulPos if(iswp) bpos=MMG5_swapbin(bpos); MMG_FREAD(&mesh->na,MMG5_SW,1,inm); - if(iswp) mesh->na=MMG5_SWAPBIN(mesh->na); + if(iswp) mesh->na=MMG5_swapbin(mesh->na); posned = ftell(inm); rewind(inm); fseek(inm,bpos,SEEK_SET); @@ -246,7 +246,7 @@ int MMG2D_loadMesh(MMG5_pMesh mesh,const char *filename) { MMG_FREAD(&bpos,MMG5_SW,1,inm); //NulPos if(iswp) bpos=MMG5_swapbin(bpos); MMG_FREAD(&nreqed,MMG5_SW,1,inm); - if(iswp) nreqed=MMG5_SWAPBIN(nreqed); + if(iswp) nreqed=MMG5_swapbin(nreqed); posreqed = ftell(inm); rewind(inm); fseek(inm,bpos,SEEK_SET); @@ -255,7 +255,7 @@ int MMG2D_loadMesh(MMG5_pMesh mesh,const char *filename) { MMG_FREAD(&bpos,MMG5_SW,1,inm); //NulPos if(iswp) bpos=MMG5_swapbin(bpos); MMG_FREAD(&nreq,MMG5_SW,1,inm); - if(iswp) nreq=MMG5_SWAPBIN(nreq); + if(iswp) nreq=MMG5_swapbin(nreq); posreq = ftell(inm); rewind(inm); fseek(inm,bpos,SEEK_SET); @@ -320,7 +320,7 @@ int MMG2D_loadMesh(MMG5_pMesh mesh,const char *filename) { ppt->c[i] = (double) fc; } MMG_FREAD(&ppt->ref,MMG5_SW,1,inm); - if(iswp) ppt->ref=MMG5_SWAPBIN(ppt->ref); + if(iswp) ppt->ref=MMG5_swapbin(ppt->ref); } } else { if (!bin) { @@ -336,7 +336,7 @@ int MMG2D_loadMesh(MMG5_pMesh mesh,const char *filename) { if(iswp) ppt->c[i]=MMG5_swapd(ppt->c[i]); } MMG_FREAD(&ppt->ref,MMG5_SW,1,inm); - if(iswp) ppt->ref=MMG5_SWAPBIN(ppt->ref); + if(iswp) ppt->ref=MMG5_swapbin(ppt->ref); } } if ( ppt->ref < 0 ) { @@ -356,11 +356,11 @@ int MMG2D_loadMesh(MMG5_pMesh mesh,const char *filename) { } else { MMG_FREAD(&ped->a,MMG5_SW,1,inm); - if(iswp) ped->a=MMG5_SWAPBIN(ped->a); + if(iswp) ped->a=MMG5_swapbin(ped->a); MMG_FREAD(&ped->b,MMG5_SW,1,inm); - if(iswp) ped->b=MMG5_SWAPBIN(ped->b); + if(iswp) ped->b=MMG5_swapbin(ped->b); MMG_FREAD(&ped->ref,MMG5_SW,1,inm); - if(iswp) ped->ref=MMG5_SWAPBIN(ped->ref); + if(iswp) ped->ref=MMG5_swapbin(ped->ref); } if ( ped->ref < 0 ) { ped->ref = -ped->ref; @@ -382,10 +382,10 @@ int MMG2D_loadMesh(MMG5_pMesh mesh,const char *filename) { else { for (i=0 ; i<3 ; i++) { MMG_FREAD(&pt->v[i],MMG5_SW,1,inm); - if(iswp) pt->v[i]=MMG5_SWAPBIN(pt->v[i]); + if(iswp) pt->v[i]=MMG5_swapbin(pt->v[i]); } MMG_FREAD(&pt->ref,MMG5_SW,1,inm); - if(iswp) pt->ref=MMG5_SWAPBIN(pt->ref); + if(iswp) pt->ref=MMG5_swapbin(pt->ref); } for (i=0; i<3; i++) { ppt = &mesh->point[ pt->v[i] ]; @@ -425,7 +425,7 @@ int MMG2D_loadMesh(MMG5_pMesh mesh,const char *filename) { } else { MMG_FREAD(&i,MMG5_SW,1,inm); - if(iswp) i=MMG5_SWAPBIN(i); + if(iswp) i=MMG5_swapbin(i); } if ( i>mesh->nt ) { fprintf(stderr,"\n ## Warning: %s: required triangle number %8" MMG5_PRId "" @@ -460,10 +460,10 @@ int MMG2D_loadMesh(MMG5_pMesh mesh,const char *filename) { else { for (i=0 ; i<4 ; i++) { MMG_FREAD(&pq1->v[i],MMG5_SW,1,inm); - if(iswp) pq1->v[i]=MMG5_SWAPBIN(pq1->v[i]); + if(iswp) pq1->v[i]=MMG5_swapbin(pq1->v[i]); } MMG_FREAD(&pq1->ref,MMG5_SW,1,inm); - if(iswp) pq1->ref=MMG5_SWAPBIN(pq1->ref); + if(iswp) pq1->ref=MMG5_swapbin(pq1->ref); } for (i=0; i<4; i++) { ppt = &mesh->point[ pq1->v[i] ]; @@ -485,7 +485,7 @@ int MMG2D_loadMesh(MMG5_pMesh mesh,const char *filename) { } else { MMG_FREAD(&i,MMG5_SW,1,inm); - if(iswp) i=MMG5_SWAPBIN(i); + if(iswp) i=MMG5_swapbin(i); } if ( i>mesh->nquad ) { fprintf(stderr,"\n ## Warning: %s: required quadrilaterals number" @@ -511,7 +511,7 @@ int MMG2D_loadMesh(MMG5_pMesh mesh,const char *filename) { } else { MMG_FREAD(&ref,MMG5_SW,1,inm); - if(iswp) ref=MMG5_SWAPBIN(ref); + if(iswp) ref=MMG5_swapbin(ref); } ppt = &mesh->point[ref]; ppt->tag |= MG_CRN; @@ -528,7 +528,7 @@ int MMG2D_loadMesh(MMG5_pMesh mesh,const char *filename) { } else { MMG_FREAD(&ref,MMG5_SW,1,inm); - if(iswp) ref=MMG5_SWAPBIN(ref); + if(iswp) ref=MMG5_swapbin(ref); } ppt = &mesh->point[ref]; ppt->tag |= MG_REQ; @@ -546,7 +546,7 @@ int MMG2D_loadMesh(MMG5_pMesh mesh,const char *filename) { } else { MMG_FREAD(&ref,MMG5_SW,1,inm); - if(iswp) ref=MMG5_SWAPBIN(ref); + if(iswp) ref=MMG5_swapbin(ref); } ped = &mesh->edge[ref]; ped->tag |= MG_REQ; diff --git a/src/mmg3d/inout_3d.c b/src/mmg3d/inout_3d.c index 83d1b72e8..92ba08d88 100644 --- a/src/mmg3d/inout_3d.c +++ b/src/mmg3d/inout_3d.c @@ -274,7 +274,7 @@ int MMG3D_loadMesh_opened(MMG5_pMesh mesh,FILE *inm,int bin) { MMG_FREAD(&bpos,MMG5_SW,1,inm); //NulPos if(iswp) bpos=MMG5_swapbin(bpos); MMG_FREAD(&mesh->npi,MMG5_SW,1,inm); - if(iswp) mesh->npi=MMG5_SWAPBIN(mesh->npi); + if(iswp) mesh->npi=MMG5_swapbin(mesh->npi); posnp = ftell(inm); rewind(inm); fseek(inm,bpos,SEEK_SET); @@ -283,7 +283,7 @@ int MMG3D_loadMesh_opened(MMG5_pMesh mesh,FILE *inm,int bin) { MMG_FREAD(&bpos,MMG5_SW,1,inm); //NulPos if(iswp) bpos=MMG5_swapbin(bpos); MMG_FREAD(&npreq,MMG5_SW,1,inm); - if(iswp) npreq=MMG5_SWAPBIN(npreq); + if(iswp) npreq=MMG5_swapbin(npreq); posnpreq = ftell(inm); rewind(inm); fseek(inm,bpos,SEEK_SET); @@ -292,7 +292,7 @@ int MMG3D_loadMesh_opened(MMG5_pMesh mesh,FILE *inm,int bin) { MMG_FREAD(&bpos,MMG5_SW,1,inm); //NulPos if(iswp) bpos=MMG5_swapbin(bpos); MMG_FREAD(&mesh->nti,MMG5_SW,1,inm); - if(iswp) mesh->nti=MMG5_SWAPBIN(mesh->nti); + if(iswp) mesh->nti=MMG5_swapbin(mesh->nti); posnt = ftell(inm); rewind(inm); fseek(inm,bpos,SEEK_SET); @@ -301,7 +301,7 @@ int MMG3D_loadMesh_opened(MMG5_pMesh mesh,FILE *inm,int bin) { MMG_FREAD(&bpos,MMG5_SW,1,inm); //NulPos if(iswp) bpos=MMG5_swapbin(bpos); MMG_FREAD(&ntreq,MMG5_SW,1,inm); - if(iswp) ntreq=MMG5_SWAPBIN(ntreq); + if(iswp) ntreq=MMG5_swapbin(ntreq); posntreq = ftell(inm); rewind(inm); fseek(inm,bpos,SEEK_SET); @@ -311,7 +311,7 @@ int MMG3D_loadMesh_opened(MMG5_pMesh mesh,FILE *inm,int bin) { MMG_FREAD(&bpos,MMG5_SW,1,inm); //NulPos if(iswp) bpos=MMG5_swapbin(bpos); MMG_FREAD(&mesh->nquad,MMG5_SW,1,inm); - if(iswp) mesh->nquad=MMG5_SWAPBIN(mesh->nquad); + if(iswp) mesh->nquad=MMG5_swapbin(mesh->nquad); posnq = ftell(inm); rewind(inm); fseek(inm,bpos,SEEK_SET); @@ -320,7 +320,7 @@ int MMG3D_loadMesh_opened(MMG5_pMesh mesh,FILE *inm,int bin) { MMG_FREAD(&bpos,MMG5_SW,1,inm); //NulPos if(iswp) bpos=MMG5_swapbin(bpos); MMG_FREAD(&nqreq,MMG5_SW,1,inm); - if(iswp) nqreq=MMG5_SWAPBIN(nqreq); + if(iswp) nqreq=MMG5_swapbin(nqreq); posnqreq = ftell(inm); rewind(inm); fseek(inm,bpos,SEEK_SET); @@ -329,7 +329,7 @@ int MMG3D_loadMesh_opened(MMG5_pMesh mesh,FILE *inm,int bin) { MMG_FREAD(&bpos,MMG5_SW,1,inm); //NulPos if(iswp) bpos=MMG5_swapbin(bpos); MMG_FREAD(&mesh->nei,MMG5_SW,1,inm); - if(iswp) mesh->nei=MMG5_SWAPBIN(mesh->nei); + if(iswp) mesh->nei=MMG5_swapbin(mesh->nei); posne = ftell(inm); rewind(inm); fseek(inm,bpos,SEEK_SET); @@ -338,7 +338,7 @@ int MMG3D_loadMesh_opened(MMG5_pMesh mesh,FILE *inm,int bin) { MMG_FREAD(&bpos,MMG5_SW,1,inm); //NulPos if(iswp) bpos=MMG5_swapbin(bpos); MMG_FREAD(&mesh->nprism,MMG5_SW,1,inm); - if(iswp) mesh->nprism=MMG5_SWAPBIN(mesh->nprism); + if(iswp) mesh->nprism=MMG5_swapbin(mesh->nprism); posnprism = ftell(inm); rewind(inm); fseek(inm,bpos,SEEK_SET); @@ -347,7 +347,7 @@ int MMG3D_loadMesh_opened(MMG5_pMesh mesh,FILE *inm,int bin) { MMG_FREAD(&bpos,MMG5_SW,1,inm); //NulPos if(iswp) bpos=MMG5_swapbin(bpos); MMG_FREAD(&nereq,MMG5_SW,1,inm); - if(iswp) nereq=MMG5_SWAPBIN(nereq); + if(iswp) nereq=MMG5_swapbin(nereq); posnereq = ftell(inm); rewind(inm); fseek(inm,bpos,SEEK_SET); @@ -356,7 +356,7 @@ int MMG3D_loadMesh_opened(MMG5_pMesh mesh,FILE *inm,int bin) { MMG_FREAD(&bpos,MMG5_SW,1,inm); //NulPos if(iswp) bpos=MMG5_swapbin(bpos); MMG_FREAD(&ncor,MMG5_SW,1,inm); - if(iswp) ncor=MMG5_SWAPBIN(ncor); + if(iswp) ncor=MMG5_swapbin(ncor); posncor = ftell(inm); rewind(inm); fseek(inm,bpos,SEEK_SET); @@ -365,7 +365,7 @@ int MMG3D_loadMesh_opened(MMG5_pMesh mesh,FILE *inm,int bin) { MMG_FREAD(&bpos,MMG5_SW,1,inm); //NulPos if(iswp) bpos=MMG5_swapbin(bpos); MMG_FREAD(&mesh->nai,MMG5_SW,1,inm); - if(iswp) mesh->nai=MMG5_SWAPBIN(mesh->nai); + if(iswp) mesh->nai=MMG5_swapbin(mesh->nai); posned = ftell(inm); rewind(inm); fseek(inm,bpos,SEEK_SET); @@ -374,7 +374,7 @@ int MMG3D_loadMesh_opened(MMG5_pMesh mesh,FILE *inm,int bin) { MMG_FREAD(&bpos,MMG5_SW,1,inm); //NulPos if(iswp) bpos=MMG5_swapbin(bpos); MMG_FREAD(&nedreq,MMG5_SW,1,inm); - if(iswp) nedreq=MMG5_SWAPBIN(nedreq); + if(iswp) nedreq=MMG5_swapbin(nedreq); posnedreq = ftell(inm); rewind(inm); fseek(inm,bpos,SEEK_SET); @@ -383,7 +383,7 @@ int MMG3D_loadMesh_opened(MMG5_pMesh mesh,FILE *inm,int bin) { MMG_FREAD(&bpos,MMG5_SW,1,inm); //NulPos if(iswp) bpos=MMG5_swapbin(bpos); MMG_FREAD(&nr,MMG5_SW,1,inm); - if(iswp) nr=MMG5_SWAPBIN(nr); + if(iswp) nr=MMG5_swapbin(nr); posnr = ftell(inm); rewind(inm); fseek(inm,bpos,SEEK_SET); @@ -392,7 +392,7 @@ int MMG3D_loadMesh_opened(MMG5_pMesh mesh,FILE *inm,int bin) { MMG_FREAD(&bpos,MMG5_SW,1,inm); //NulPos if(iswp) bpos=MMG5_swapbin(bpos); MMG_FREAD(&ng,MMG5_SW,1,inm); - if(iswp) ng=MMG5_SWAPBIN(ng); + if(iswp) ng=MMG5_swapbin(ng); posnormal = ftell(inm); rewind(inm); fseek(inm,bpos,SEEK_SET); @@ -401,7 +401,7 @@ int MMG3D_loadMesh_opened(MMG5_pMesh mesh,FILE *inm,int bin) { MMG_FREAD(&bpos,MMG5_SW,1,inm); //NulPos if(iswp) bpos=MMG5_swapbin(bpos); MMG_FREAD(&mesh->nc1,MMG5_SW,1,inm); - if(iswp) mesh->nc1=MMG5_SWAPBIN(mesh->nc1); + if(iswp) mesh->nc1=MMG5_swapbin(mesh->nc1); posnc1 = ftell(inm); rewind(inm); fseek(inm,bpos,SEEK_SET); @@ -450,7 +450,7 @@ int MMG3D_loadMesh_opened(MMG5_pMesh mesh,FILE *inm,int bin) { ppt->c[i] = (double) fc; } MMG_FREAD(&ppt->ref,MMG5_SW,1,inm); - if(iswp) ppt->ref=MMG5_SWAPBIN(ppt->ref); + if(iswp) ppt->ref=MMG5_swapbin(ppt->ref); } } else { if (!bin) { @@ -462,7 +462,7 @@ int MMG3D_loadMesh_opened(MMG5_pMesh mesh,FILE *inm,int bin) { if(iswp) ppt->c[i]=MMG5_swapd(ppt->c[i]); } MMG_FREAD(&ppt->ref,MMG5_SW,1,inm); - if(iswp) ppt->ref=MMG5_SWAPBIN(ppt->ref); + if(iswp) ppt->ref=MMG5_swapbin(ppt->ref); } } @@ -554,10 +554,10 @@ int MMG3D_loadMesh_opened(MMG5_pMesh mesh,FILE *inm,int bin) { else { for (i=0 ; i<3 ; i++) { MMG_FREAD(&pt1->v[i],MMG5_SW,1,inm); - if(iswp) pt1->v[i]=MMG5_SWAPBIN(pt1->v[i]); + if(iswp) pt1->v[i]=MMG5_swapbin(pt1->v[i]); } MMG_FREAD(&pt1->ref,MMG5_SW,1,inm); - if(iswp) pt1->ref=MMG5_SWAPBIN(pt1->ref); + if(iswp) pt1->ref=MMG5_swapbin(pt1->ref); } if ( pt1->ref < 0 ) { pt1->ref = -pt1->ref; @@ -626,10 +626,10 @@ int MMG3D_loadMesh_opened(MMG5_pMesh mesh,FILE *inm,int bin) { else { for (i=0 ; i<4 ; i++) { MMG_FREAD(&pq1->v[i],MMG5_SW,1,inm); - if(iswp) pq1->v[i]=MMG5_SWAPBIN(pq1->v[i]); + if(iswp) pq1->v[i]=MMG5_swapbin(pq1->v[i]); } MMG_FREAD(&pq1->ref,MMG5_SW,1,inm); - if(iswp) pq1->ref=MMG5_SWAPBIN(pq1->ref); + if(iswp) pq1->ref=MMG5_swapbin(pq1->ref); } if ( pq1->ref < 0 ) { pq1->ref = -pq1->ref; @@ -702,11 +702,11 @@ int MMG3D_loadMesh_opened(MMG5_pMesh mesh,FILE *inm,int bin) { } else { MMG_FREAD(&pa->a,MMG5_SW,1,inm); - if(iswp) pa->a=MMG5_SWAPBIN(pa->a); + if(iswp) pa->a=MMG5_swapbin(pa->a); MMG_FREAD(&pa->b,MMG5_SW,1,inm); - if(iswp) pa->b=MMG5_SWAPBIN(pa->b); + if(iswp) pa->b=MMG5_swapbin(pa->b); MMG_FREAD(&pa->ref,MMG5_SW,1,inm); - if(iswp) pa->ref=MMG5_SWAPBIN(pa->ref); + if(iswp) pa->ref=MMG5_swapbin(pa->ref); } pa->tag |= MG_REF; if ( pa->ref < 0 ) { @@ -725,7 +725,7 @@ int MMG3D_loadMesh_opened(MMG5_pMesh mesh,FILE *inm,int bin) { } else { MMG_FREAD(&ia,MMG5_SW,1,inm); - if(iswp) ia=MMG5_SWAPBIN(ia); + if(iswp) ia=MMG5_swapbin(ia); } if(ia>na) { fprintf(stderr,"\n ## Warning: %s: ridge number %8" MMG5_PRId " ignored.\n", @@ -746,7 +746,7 @@ int MMG3D_loadMesh_opened(MMG5_pMesh mesh,FILE *inm,int bin) { } else { MMG_FREAD(&ia,MMG5_SW,1,inm); - if(iswp) ia=MMG5_SWAPBIN(ia); + if(iswp) ia=MMG5_swapbin(ia); } if(ia>na) { fprintf(stderr,"\n ## Warning: %s: required Edges number %8" MMG5_PRId "/%8" MMG5_PRId "" @@ -767,7 +767,7 @@ int MMG3D_loadMesh_opened(MMG5_pMesh mesh,FILE *inm,int bin) { } else { MMG_FREAD(&ia,MMG5_SW,1,inm); - if(iswp) ia=MMG5_SWAPBIN(ia); + if(iswp) ia=MMG5_swapbin(ia); } if(ia>na) { fprintf(stderr,"\n ## Warning: %s: parallel Edges number %8" MMG5_PRId "/%8" MMG5_PRId "" @@ -792,10 +792,10 @@ int MMG3D_loadMesh_opened(MMG5_pMesh mesh,FILE *inm,int bin) { else { for (i=0 ; i<4 ; i++) { MMG_FREAD(&pt->v[i],MMG5_SW,1,inm); - if(iswp) pt->v[i]=MMG5_SWAPBIN(pt->v[i]); + if(iswp) pt->v[i]=MMG5_swapbin(pt->v[i]); } MMG_FREAD(&ref,MMG5_SW,1,inm); - if(iswp) ref=MMG5_SWAPBIN(ref); + if(iswp) ref=MMG5_swapbin(ref); } if(ref < 0) { nref++; @@ -875,10 +875,10 @@ int MMG3D_loadMesh_opened(MMG5_pMesh mesh,FILE *inm,int bin) { else { for (i=0 ; i<6 ; i++) { MMG_FREAD(&pp->v[i],MMG5_SW,1,inm); - if(iswp) pp->v[i]=MMG5_SWAPBIN(pp->v[i]); + if(iswp) pp->v[i]=MMG5_swapbin(pp->v[i]); } MMG_FREAD(&ref,MMG5_SW,1,inm); - if(iswp) ref=MMG5_SWAPBIN(ref); + if(iswp) ref=MMG5_swapbin(ref); } pp->ref = ref; if ( pp-> ref < 0 ) { @@ -956,9 +956,9 @@ int MMG3D_loadMesh_opened(MMG5_pMesh mesh,FILE *inm,int bin) { } else { MMG_FREAD(&ip,MMG5_SW,1,inm); - if(iswp) ip=MMG5_SWAPBIN(ip); + if(iswp) ip=MMG5_swapbin(ip); MMG_FREAD(&idn,MMG5_SW,1,inm); - if(iswp) idn=MMG5_SWAPBIN(idn); + if(iswp) idn=MMG5_swapbin(idn); } if ( idn > 0 && ip < mesh->np+1 ) { if ( (mesh->info.iso ) && mesh->point[ip].xp == -1 ) { diff --git a/src/mmgs/inout_s.c b/src/mmgs/inout_s.c index c5c3268aa..27eea381c 100644 --- a/src/mmgs/inout_s.c +++ b/src/mmgs/inout_s.c @@ -189,7 +189,7 @@ int MMGS_loadMesh(MMG5_pMesh mesh, const char *filename) { MMG_FREAD(&bpos,MMG5_SW,1,inm); //NulPos if(iswp) bpos=MMG5_swapbin(bpos); MMG_FREAD(&mesh->npi,MMG5_SW,1,inm); - if(iswp) mesh->npi=MMG5_SWAPBIN(mesh->npi); + if(iswp) mesh->npi=MMG5_swapbin(mesh->npi); posnp = ftell(inm); rewind(inm); fseek(inm,bpos,SEEK_SET); @@ -198,7 +198,7 @@ int MMGS_loadMesh(MMG5_pMesh mesh, const char *filename) { MMG_FREAD(&bpos,MMG5_SW,1,inm); //NulPos if(iswp) bpos=MMG5_swapbin(bpos); MMG_FREAD(&npreq,MMG5_SW,1,inm); - if(iswp) npreq=MMG5_SWAPBIN(npreq); + if(iswp) npreq=MMG5_swapbin(npreq); posnpreq = ftell(inm); rewind(inm); fseek(inm,bpos,SEEK_SET); @@ -207,7 +207,7 @@ int MMGS_loadMesh(MMG5_pMesh mesh, const char *filename) { MMG_FREAD(&bpos,MMG5_SW,1,inm); //NulPos if(iswp) bpos=MMG5_swapbin(bpos); MMG_FREAD(&mesh->nti,MMG5_SW,1,inm); - if(iswp) mesh->nti=MMG5_SWAPBIN(mesh->nti); + if(iswp) mesh->nti=MMG5_swapbin(mesh->nti); posnt = ftell(inm); rewind(inm); fseek(inm,bpos,SEEK_SET); @@ -216,7 +216,7 @@ int MMGS_loadMesh(MMG5_pMesh mesh, const char *filename) { MMG_FREAD(&bpos,MMG5_SW,1,inm); //NulPos if(iswp) bpos=MMG5_swapbin(bpos); MMG_FREAD(&ntreq,MMG5_SW,1,inm); - if(iswp) ntreq=MMG5_SWAPBIN(ntreq); + if(iswp) ntreq=MMG5_swapbin(ntreq); posntreq = ftell(inm); rewind(inm); fseek(inm,bpos,SEEK_SET); @@ -225,7 +225,7 @@ int MMGS_loadMesh(MMG5_pMesh mesh, const char *filename) { MMG_FREAD(&bpos,MMG5_SW,1,inm); //NulPos if(iswp) bpos=MMG5_swapbin(bpos); MMG_FREAD(&nq,MMG5_SW,1,inm); - if(iswp) nq=MMG5_SWAPBIN(nq); + if(iswp) nq=MMG5_swapbin(nq); posnq = ftell(inm); rewind(inm); fseek(inm,bpos,SEEK_SET); @@ -234,7 +234,7 @@ int MMGS_loadMesh(MMG5_pMesh mesh, const char *filename) { MMG_FREAD(&bpos,MMG5_SW,1,inm); //NulPos if(iswp) bpos=MMG5_swapbin(bpos); MMG_FREAD(&ncor,MMG5_SW,1,inm); - if(iswp) ncor=MMG5_SWAPBIN(ncor); + if(iswp) ncor=MMG5_swapbin(ncor); posncor = ftell(inm); rewind(inm); fseek(inm,bpos,SEEK_SET); @@ -243,7 +243,7 @@ int MMGS_loadMesh(MMG5_pMesh mesh, const char *filename) { MMG_FREAD(&bpos,MMG5_SW,1,inm); //NulPos if(iswp) bpos=MMG5_swapbin(bpos); MMG_FREAD(&mesh->na,MMG5_SW,1,inm); - if(iswp) mesh->na=MMG5_SWAPBIN(mesh->na); + if(iswp) mesh->na=MMG5_swapbin(mesh->na); posned = ftell(inm); rewind(inm); fseek(inm,bpos,SEEK_SET); @@ -252,7 +252,7 @@ int MMGS_loadMesh(MMG5_pMesh mesh, const char *filename) { MMG_FREAD(&bpos,MMG5_SW,1,inm); //NulPos if(iswp) bpos=MMG5_swapbin(bpos); MMG_FREAD(&nedreq,MMG5_SW,1,inm); - if(iswp) nedreq=MMG5_SWAPBIN(nedreq); + if(iswp) nedreq=MMG5_swapbin(nedreq); posnedreq = ftell(inm); rewind(inm); fseek(inm,bpos,SEEK_SET); @@ -261,7 +261,7 @@ int MMGS_loadMesh(MMG5_pMesh mesh, const char *filename) { MMG_FREAD(&bpos,MMG5_SW,1,inm); //NulPos if(iswp) bpos=MMG5_swapbin(bpos); MMG_FREAD(&nri,MMG5_SW,1,inm); - if(iswp) nri=MMG5_SWAPBIN(nri); + if(iswp) nri=MMG5_swapbin(nri); posnr = ftell(inm); rewind(inm); fseek(inm,bpos,SEEK_SET); @@ -270,7 +270,7 @@ int MMGS_loadMesh(MMG5_pMesh mesh, const char *filename) { MMG_FREAD(&bpos,MMG5_SW,1,inm); //NulPos if(iswp) bpos=MMG5_swapbin(bpos); MMG_FREAD(&ng,MMG5_SW,1,inm); - if(iswp) ng=MMG5_SWAPBIN(ng); + if(iswp) ng=MMG5_swapbin(ng); posnormal = ftell(inm); rewind(inm); fseek(inm,bpos,SEEK_SET); @@ -279,7 +279,7 @@ int MMGS_loadMesh(MMG5_pMesh mesh, const char *filename) { MMG_FREAD(&bpos,MMG5_SW,1,inm); //NulPos if(iswp) bpos=MMG5_swapbin(bpos); MMG_FREAD(&mesh->nc1,MMG5_SW,1,inm); - if(iswp) mesh->nc1=MMG5_SWAPBIN(mesh->nc1); + if(iswp) mesh->nc1=MMG5_swapbin(mesh->nc1); posnc1 = ftell(inm); rewind(inm); fseek(inm,bpos,SEEK_SET); @@ -323,7 +323,7 @@ int MMGS_loadMesh(MMG5_pMesh mesh, const char *filename) { ppt->c[i] = (double) fc; } MMG_FREAD(&ppt->ref,MMG5_SW,1,inm); - if(iswp) ppt->ref=MMG5_SWAPBIN(ppt->ref); + if(iswp) ppt->ref=MMG5_swapbin(ppt->ref); } } else { if (!bin) { @@ -335,7 +335,7 @@ int MMGS_loadMesh(MMG5_pMesh mesh, const char *filename) { if(iswp) ppt->c[i]=MMG5_swapd(ppt->c[i]); } MMG_FREAD(&ppt->ref,MMG5_SW,1,inm); - if(iswp) ppt->ref=MMG5_SWAPBIN(ppt->ref); + if(iswp) ppt->ref=MMG5_swapbin(ppt->ref); } } if ( ppt->ref < 0 ) { @@ -357,10 +357,10 @@ int MMGS_loadMesh(MMG5_pMesh mesh, const char *filename) { else { for (i=0 ; i<3 ; i++) { MMG_FREAD(&pt1->v[i],MMG5_SW,1,inm); - if(iswp) pt1->v[i]=MMG5_SWAPBIN(pt1->v[i]); + if(iswp) pt1->v[i]=MMG5_swapbin(pt1->v[i]); } MMG_FREAD(&pt1->ref,MMG5_SW,1,inm); - if(iswp) pt1->ref=MMG5_SWAPBIN(pt1->ref); + if(iswp) pt1->ref=MMG5_swapbin(pt1->ref); } for (i=0; i<3; i++) { ppt = &mesh->point[pt1->v[i]]; @@ -412,12 +412,12 @@ int MMGS_loadMesh(MMG5_pMesh mesh, const char *filename) { else { for (i=0 ; i<3 ; i++) { MMG_FREAD(&pt1->v[i],MMG5_SW,1,inm); - if(iswp) pt1->v[i]=MMG5_SWAPBIN(pt1->v[i]); + if(iswp) pt1->v[i]=MMG5_swapbin(pt1->v[i]); } MMG_FREAD(&pt2->v[2],MMG5_SW,1,inm); - if(iswp) pt2->v[2]=MMG5_SWAPBIN(pt2->v[2]); + if(iswp) pt2->v[2]=MMG5_swapbin(pt2->v[2]); MMG_FREAD(&pt1->ref,MMG5_SW,1,inm); - if(iswp) pt1->ref=MMG5_SWAPBIN(pt1->ref); + if(iswp) pt1->ref=MMG5_swapbin(pt1->ref); } if ( pt1->ref < 0 ) { pt1->ref = -pt1->ref; @@ -493,11 +493,11 @@ int MMGS_loadMesh(MMG5_pMesh mesh, const char *filename) { } else { MMG_FREAD(&mesh->edge[k].a,MMG5_SW,1,inm); - if(iswp) mesh->edge[k].a=MMG5_SWAPBIN(mesh->edge[k].a); + if(iswp) mesh->edge[k].a=MMG5_swapbin(mesh->edge[k].a); MMG_FREAD(&mesh->edge[k].b,MMG5_SW,1,inm); - if(iswp) mesh->edge[k].b=MMG5_SWAPBIN(mesh->edge[k].b); + if(iswp) mesh->edge[k].b=MMG5_swapbin(mesh->edge[k].b); MMG_FREAD(&mesh->edge[k].ref,MMG5_SW,1,inm); - if(iswp) mesh->edge[k].ref=MMG5_SWAPBIN(mesh->edge[k].ref); + if(iswp) mesh->edge[k].ref=MMG5_swapbin(mesh->edge[k].ref); } if ( mesh->edge[k].ref < 0 ) { mesh->edge[k].ref = -mesh->edge[k].ref; @@ -518,7 +518,7 @@ int MMGS_loadMesh(MMG5_pMesh mesh, const char *filename) { } else { MMG_FREAD(&ia,MMG5_SW,1,inm); - if(iswp) ia=MMG5_SWAPBIN(ia); + if(iswp) ia=MMG5_swapbin(ia); } if ( (ia>na) || (ia<0) ) { fprintf(stderr,"\n ## Warning: %s: ridge number %8" MMG5_PRId " ignored.\n", @@ -539,7 +539,7 @@ int MMGS_loadMesh(MMG5_pMesh mesh, const char *filename) { } else { MMG_FREAD(&ia,MMG5_SW,1,inm); - if(iswp) ia=MMG5_SWAPBIN(ia); + if(iswp) ia=MMG5_swapbin(ia); } if ( (ia>na) || (ia<0) ) { fprintf(stderr,"\n ## Warning: %s: required edge number %8" MMG5_PRId " ignored\n", @@ -609,9 +609,9 @@ int MMGS_loadMesh(MMG5_pMesh mesh, const char *filename) { } else { MMG_FREAD(&ip,MMG5_SW,1,inm); - if(iswp) ip=MMG5_SWAPBIN(ip); + if(iswp) ip=MMG5_swapbin(ip); MMG_FREAD(&idn,MMG5_SW,1,inm); - if(iswp) idn=MMG5_SWAPBIN(idn); + if(iswp) idn=MMG5_swapbin(idn); } if ( idn > 0 && ip < mesh->np+1 ) memcpy(&mesh->point[ip].n,&norm[3*(idn-1)+1],3*sizeof(double)); From d3bc2629f4e80794a2b17750955648f8199b83dd Mon Sep 17 00:00:00 2001 From: Corentin Prigent Date: Thu, 22 Feb 2024 17:21:42 +0100 Subject: [PATCH 4/7] Initialized some variables to 0 in inout_s.c --- src/mmgs/inout_s.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/mmgs/inout_s.c b/src/mmgs/inout_s.c index 27eea381c..bfbc459a4 100644 --- a/src/mmgs/inout_s.c +++ b/src/mmgs/inout_s.c @@ -60,6 +60,7 @@ int MMGS_loadMesh(MMG5_pMesh mesh, const char *filename) { ncor = nri = ng = nedreq = nq = ntreq = 0; bin = 0; iswp = 0; + bpos = ia = 0; mesh->np = mesh->nt = mesh->nti = mesh->npi = 0; nref = 0; @@ -171,7 +172,7 @@ int MMGS_loadMesh(MMG5_pMesh mesh, const char *filename) { } MMG_FREAD(&mesh->ver,MMG5_SW,1,inm); if(iswp) mesh->ver = MMG5_swapbin(mesh->ver); - while(fread(&binch,MMG5_SW,1,inm)!=0 && binch!=54 ) { + while(fread(&binch,4,1,inm)!=0 && binch!=54 ) { if(iswp) binch=MMG5_swapbin(binch); if(binch==54) break; if(!bdim && binch==3) { //Dimension From 1957d11396a8b518413e837a37460b9d3aaf1a9f Mon Sep 17 00:00:00 2001 From: Corentin Prigent Date: Thu, 29 Feb 2024 15:02:28 +0100 Subject: [PATCH 5/7] Modified byte swapping for 64-bit integers; properly initialized some variables --- src/mmg2d/inout_2d.c | 1 + src/mmg3d/inout_3d.c | 1 + src/mmgs/inout_s.c | 2 +- 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/mmg2d/inout_2d.c b/src/mmg2d/inout_2d.c index 7c7105f7a..feaabd355 100644 --- a/src/mmg2d/inout_2d.c +++ b/src/mmg2d/inout_2d.c @@ -45,6 +45,7 @@ int MMG2D_loadMesh(MMG5_pMesh mesh,const char *filename) { ncor = nreq = nreqed = ntreq = nqreq = 0; bin = 0; iswp = 0; + bpos = 0; mesh->np = mesh->nt = mesh->na = mesh->xp = 0; nref = 0; diff --git a/src/mmg3d/inout_3d.c b/src/mmg3d/inout_3d.c index 92ba08d88..2a5db6c6b 100644 --- a/src/mmg3d/inout_3d.c +++ b/src/mmg3d/inout_3d.c @@ -136,6 +136,7 @@ int MMG3D_loadMesh_opened(MMG5_pMesh mesh,FILE *inm,int bin) { ncor = ned = npreq = ntreq = nqreq = nereq = nedreq = nr = ng = 0; nppar = nedpar = ntpar = nqpar = nepar = 0; iswp = 0; + bpos = ia = idn = ip = 0; mesh->np = mesh->nt = mesh->ne = 0; nref = 0; diff --git a/src/mmgs/inout_s.c b/src/mmgs/inout_s.c index bfbc459a4..e2c01397d 100644 --- a/src/mmgs/inout_s.c +++ b/src/mmgs/inout_s.c @@ -60,7 +60,7 @@ int MMGS_loadMesh(MMG5_pMesh mesh, const char *filename) { ncor = nri = ng = nedreq = nq = ntreq = 0; bin = 0; iswp = 0; - bpos = ia = 0; + bpos = ia = idn = ip = 0; mesh->np = mesh->nt = mesh->nti = mesh->npi = 0; nref = 0; From dac351169780978a3fbae6a7b4f4dc8a823e63f2 Mon Sep 17 00:00:00 2001 From: Corentin Prigent Date: Mon, 25 Mar 2024 16:25:23 +0100 Subject: [PATCH 6/7] Added error message when trying to use ELAS with int64_t; Added PASS property to ctests using ELAS with int64_t --- cmake/testing/libmmg3d_tests.cmake | 5 +++++ cmake/testing/mmg3d_tests.cmake | 11 ++++++++++- src/mmg3d/velextls_3d.c | 14 +++++++------- 3 files changed, 22 insertions(+), 8 deletions(-) diff --git a/cmake/testing/libmmg3d_tests.cmake b/cmake/testing/libmmg3d_tests.cmake index 5e0922b5c..704417f11 100644 --- a/cmake/testing/libmmg3d_tests.cmake +++ b/cmake/testing/libmmg3d_tests.cmake @@ -215,6 +215,11 @@ IF ( ELAS_FOUND AND NOT USE_ELAS MATCHES OFF ) "${PROJECT_SOURCE_DIR}/libexamples/mmg3d/LagrangianMotion_example0/tinyBoxt" "${CTEST_OUTPUT_DIR}/libmmg3d_LagrangianMotion_0-tinyBoxt.o" ) + IF (${MMG5_INT} MATCHES int64_t) + SET(passElasRegex "## Error: MMG5_velextLS: impossible to call elasticity library with int64 integers") + SET_PROPERTY(TEST libmmg3d_example4 + PROPERTY PASS_REGULAR_EXPRESSION "${passElasRegex}") + ENDIF () ENDIF () ADD_TEST(NAME libmmg3d_example6_io_0 diff --git a/cmake/testing/mmg3d_tests.cmake b/cmake/testing/mmg3d_tests.cmake index c65407263..fa5baf52a 100644 --- a/cmake/testing/mmg3d_tests.cmake +++ b/cmake/testing/mmg3d_tests.cmake @@ -572,6 +572,12 @@ IF ( ELAS_FOUND AND NOT USE_ELAS MATCHES OFF ) -out ${CTEST_OUTPUT_DIR}/mmg3d_LagMotion2_tinyBoxt-nsd3.o.meshb ) + IF (${MMG5_INT} MATCHES int64_t ) + SET(passElasRegex "## Error: MMG5_velextLS: impossible to call elasticity library with int64 integers") + SET_PROPERTY(TEST mmg3d_LagMotion0_tinyBoxt mmg3d_LagMotion1_tinyBoxt mmg3d_LagMotion2_tinyBoxt mmg3d_LagMotion2_tinyBoxt-nsd3 + PROPERTY PASS_REGULAR_EXPRESSION "${passElasRegex}") + ENDIF() + ENDIF() ############################################################################## @@ -892,8 +898,11 @@ IF ( LONG_TESTS ) -sol ${MMG3D_CI_TESTS}/LagMotion1_boxt/boxt.sol -out ${CTEST_OUTPUT_DIR}/mmg3d_LagMotion2_boxt-boxt.o.meshb ) + IF (${MMG5_INT} MATCHES int64_t ) + SET_PROPERTY(TEST mmg3d_LagMotion0_boxt mmg3d_LagMotion1_boxt mmg3d_LagMotion2_boxt + PROPERTY PASS_REGULAR_EXPRESSION "${passElasRegex}") + ENDIF() ENDIF() - ENDIF() ############################################################################### diff --git a/src/mmg3d/velextls_3d.c b/src/mmg3d/velextls_3d.c index 959b9e4af..56b6b9bdf 100644 --- a/src/mmg3d/velextls_3d.c +++ b/src/mmg3d/velextls_3d.c @@ -66,13 +66,6 @@ MMG5_int* MMG5_packLS(MMG5_pMesh mesh,MMG5_pSol disp,LSst *lsst,MMG5_int *npfin) int refdirh,refdirnh; int8_t i,j,jface; - /* LibElas is not compatible with int64: Check for int32 overflow */ - if ( mesh->np > INT_MAX || mesh->ne > INT_MAX ) { - fprintf(stderr,"\n ## Error: %s: impossible to call elasticity library" - " with int64 integers.\n",__func__); - return NULL; - } - nlay = 20; refdirh = 0; refdirnh = 1; @@ -401,6 +394,13 @@ int MMG5_velextLS(MMG5_pMesh mesh,MMG5_pSol disp) { LSst *lsst; MMG5_int npf,*invperm; + /* LibElas is not compatible with int64: Check for int32 overflow */ + if ( mesh->np > INT_MAX || mesh->ne > INT_MAX || sizeof(MMG5_int) == 8 ) { + fprintf(stderr,"\n ## Error: %s: impossible to call elasticity library" + " with int64 integers.\n",__func__); + return 0; + } + /* Creation of the data structure for the submesh */ lsst = LS_init(mesh->dim,mesh->ver,P1,1); invperm = MMG5_packLS(mesh,disp,lsst,&npf); From 14229cc74b5047a2313eac6629f582d6b3147d64 Mon Sep 17 00:00:00 2001 From: Corentin Prigent Date: Mon, 25 Mar 2024 17:21:06 +0100 Subject: [PATCH 7/7] Added PASS property to mmg2d lagrangian motion ctests when compiled in int64_t --- cmake/testing/mmg2d_tests.cmake | 6 ++++++ src/mmg2d/velextls_2d.c | 7 +++++++ src/mmgs/inout_s.c | 2 +- 3 files changed, 14 insertions(+), 1 deletion(-) diff --git a/cmake/testing/mmg2d_tests.cmake b/cmake/testing/mmg2d_tests.cmake index 8f3f861f4..07efdc1af 100644 --- a/cmake/testing/mmg2d_tests.cmake +++ b/cmake/testing/mmg2d_tests.cmake @@ -789,6 +789,12 @@ IF ( ELAS_FOUND AND NOT USE_ELAS MATCHES OFF ) -out ${CTEST_OUTPUT_DIR}/mmg2d_LagMotion2_circle-nsd3.o.mesh ) + IF (${MMG5_INT} MATCHES int64_t ) + SET(passElasRegex "## Error: MMG2D_velextLS: impossible to call elasticity library with int64 integers") + SET_PROPERTY(TEST mmg2d_LagMotion0_circle mmg2d_LagMotion1_circle mmg2d_LagMotion2_circle mmg2d_LagMotion2_circle-nsd3 + PROPERTY PASS_REGULAR_EXPRESSION "${passElasRegex}") + ENDIF() + ENDIF() ############################################################################### diff --git a/src/mmg2d/velextls_2d.c b/src/mmg2d/velextls_2d.c index fdcd2c174..40a3a47aa 100644 --- a/src/mmg2d/velextls_2d.c +++ b/src/mmg2d/velextls_2d.c @@ -341,6 +341,13 @@ int MMG2D_velextLS(MMG5_pMesh mesh,MMG5_pSol disp) { LSst *lsst; MMG5_int npf,*invperm; + /* LibElas is not compatible with int64: Check for int32 overflow */ + if ( sizeof(MMG5_int) == 8 ) { + fprintf(stderr,"\n ## Error: %s: impossible to call elasticity library" + " with int64 integers.\n",__func__); + return 0; + } + /* Creation of the data structure for storing the submesh */ lsst = LS_init(mesh->dim,mesh->ver,P1,1); diff --git a/src/mmgs/inout_s.c b/src/mmgs/inout_s.c index e2c01397d..41c6db6d2 100644 --- a/src/mmgs/inout_s.c +++ b/src/mmgs/inout_s.c @@ -172,7 +172,7 @@ int MMGS_loadMesh(MMG5_pMesh mesh, const char *filename) { } MMG_FREAD(&mesh->ver,MMG5_SW,1,inm); if(iswp) mesh->ver = MMG5_swapbin(mesh->ver); - while(fread(&binch,4,1,inm)!=0 && binch!=54 ) { + while(fread(&binch,MMG5_SW,1,inm)!=0 && binch!=54 ) { if(iswp) binch=MMG5_swapbin(binch); if(binch==54) break; if(!bdim && binch==3) { //Dimension