From bb43f669e68e61d559fc3c3cf4f5fd69643bd3f2 Mon Sep 17 00:00:00 2001 From: Matthias Hochsteger Date: Fri, 4 Jun 2021 19:57:21 +0200 Subject: [PATCH] Don't skip deleted elements when building point2element table --- libsrc/meshing/meshclass.cpp | 4 ---- libsrc/meshing/meshtype.hpp | 21 +++++++++++++++------ 2 files changed, 15 insertions(+), 10 deletions(-) diff --git a/libsrc/meshing/meshclass.cpp b/libsrc/meshing/meshclass.cpp index c9b5c7ed..751af9ae 100644 --- a/libsrc/meshing/meshclass.cpp +++ b/libsrc/meshing/meshclass.cpp @@ -6554,8 +6554,6 @@ namespace netgen [&](auto & table, ElementIndex ei) { const auto & el = (*this)[ei]; - if(el.IsDeleted()) - return; for (PointIndex pi : el.PNums()) if(free_points[pi]) @@ -6567,8 +6565,6 @@ namespace netgen [&](auto & table, ElementIndex ei) { const auto & el = (*this)[ei]; - if(el.IsDeleted()) - return; for (PointIndex pi : el.PNums()) table.Add (pi, ei); diff --git a/libsrc/meshing/meshtype.hpp b/libsrc/meshing/meshtype.hpp index cff7bd5f..c6180de6 100644 --- a/libsrc/meshing/meshtype.hpp +++ b/libsrc/meshing/meshtype.hpp @@ -838,13 +838,22 @@ namespace netgen void DoArchive (Archive & ar) { - short _np, _typ; - bool _curved; - if (ar.Output()) - { _np = np; _typ = typ; _curved = is_curved; } - ar & _np & _typ & index & _curved; + short _np = np; + short _typ = typ; + bool _curved = is_curved; + auto _index = index; + + ar & _np & _typ & _index & _curved; + if (ar.Input()) - { np = _np; typ = ELEMENT_TYPE(_typ); is_curved = _curved; } + { + new (&this) Element(_np); + np = _np; + typ = ELEMENT_TYPE(_typ); + index = _index; + is_curved = _curved; + } + for (size_t i = 0; i < np; i++) ar & pnum[i]; }