Skip to content

Commit 08ff4f8

Browse files
committed
Correction of a bug causing duplicated edges in opnbdy mode
1 parent 8859486 commit 08ff4f8

File tree

3 files changed

+5
-3
lines changed

3 files changed

+5
-3
lines changed

src/mmg2d/hash_2d.c

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -600,14 +600,15 @@ int MMG2D_pack(MMG5_pMesh mesh,MMG5_pSol sol,MMG5_pSol met) {
600600
else if ( (pt->ref==pt1->ref) && MG_SIN(pt->tag[i]) ) {
601601
++mesh->na;
602602
}
603-
else if ( mesh->info.opnbdy ) {
603+
else if ( mesh->info.opnbdy && pt->ref == pt1->ref && k < iel ) {
604604
if ( (pt->tag[i] & MG_REF) || pt->tag[i] & MG_BDY ) {
605605
assert ( pt->tag[i] & (MG_REF+MG_BDY) );
606606
++mesh->na;
607607
}
608608
}
609609
}
610610
}
611+
611612
/** Count edges stored in quadrangles */
612613
for (k=1; k<=mesh->nquad; k++) {
613614
pq = &mesh->quadra[k];
@@ -676,7 +677,7 @@ int MMG2D_pack(MMG5_pMesh mesh,MMG5_pSol sol,MMG5_pSol met) {
676677
pt1 = &mesh->tria[iel];
677678
if ( !iel || (pt->ref > pt1->ref) ||
678679
((pt->ref==pt1->ref) && MG_SIN(pt->tag[i])) ||
679-
(mesh->info.opnbdy && ((pt->tag[i] & MG_REF) || (pt->tag[i] & MG_BDY)))) {
680+
(mesh->info.opnbdy && (pt->ref==pt1->ref) && (k<iel) && ((pt->tag[i] & MG_REF) || (pt->tag[i] & MG_BDY)))) {
680681
++ned;
681682
ped = &mesh->edge[ned];
682683
ped->a = pt->v[i1];

src/mmg2d/inout_2d.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1304,7 +1304,7 @@ int MMG2D_saveMesh(MMG5_pMesh mesh,const char *filename) {
13041304
}
13051305
}
13061306

1307-
/* edges */
1307+
/* Edges */
13081308
nedreq = 0;
13091309
if ( mesh->na ) {
13101310
if(!bin) {

src/mmg3d/hash_3d.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1216,6 +1216,7 @@ int MMG5_hGeom(MMG5_pMesh mesh) {
12161216
i2 = MMG5_iprv2[i];
12171217
kk = adja[i] / 3;
12181218
if ( (!kk) || pt->tag[i] & MG_NOM ) {
1219+
if ( !kk ) pt->tag[i] |= (MG_BDY + MG_GEO); // Dunno what to do here
12191220
if ( pt->tag[i] & MG_NOM ) {
12201221
if ( mesh->info.iso )
12211222
pt->edg[i] = ( pt->edg[i] != 0 ) ? -MMG5_abs(pt->edg[i]) : mesh->info.isoref;

0 commit comments

Comments
 (0)