MeshRefiner assert fail without MPI
I compiled the moab with latest commit in develop branch (cf01e04), MSMPI(based on MPICH) and VS2015, the library compiled successfully. However, the test_mesh_refiner.cpp is failed when not using MPI.
After I #undef MOAB_HAS_MPI
, the error occur at mref->refine(ents_to_refine)
in test_mesh_refiner.cpp.
The error message is:
Assertion failed: valid_tag_handle( tag_handle ), file ...\src\Core.cpp, line 2136
, which was called by
this->tag_manager->set_element_procs_from_ent( *it );
in Line 133 of RefinerTagManager.cpp
.
I haven't yet tested with MPI, but I assume MeshRefiner can work without MPI, based on how test_mesh_refiner.cpp was written.
I also found that NestedRefine is not included in CMakeList as well.
Thanks.
Comments (11)
-
-
-
assigned issue to
-
assigned issue to
-
reporter Thanks.
I tried to compile NestedRefine as well, but currently, the it's not in any project. (I use cmake on windows).
Besides, does that mean both MeshRefiner and NestedRefine will be removed, or just the former?
-
No, only the former since it relates to only simplices. The latter has templates for all MOAB supported elements and so is more extensible in sense.
-
reporter I tried the NestedRefine. But seems it can't adapt to geometry, I suppose I should keep on MeshRefiner. Is there any workaround there?
The problem I found about MeshRefiner, is the tag tag_ipsproc/ tag_opsproc is not set properly before it is requested.
-
Sorry, I haven't had time to get around to this yet. Soon.
I tried the NestedRefine. But seems it can't adapt to geometry, I suppose I should keep on MeshRefiner. Is there any workaround there?
Do you compile MOAB with CGM ? If you load OCC-based BREP geometry with CGM, then we can use iGeom calls to project the newly inserted points on to the exact geometric surface. You could do a ray trace (line segment intersection on a surface) to find the exact location of the new vertex.
There is ongoing work to make use of the geometry information and in the absence of it, do a higher order surface reconstruction with just the mesh elements. The code is currently being tested and we hope to merge to master by end of August.
I don't think MeshRefiner makes use of the geometry information either. Do you see any code for that tool that suggests otherwise ?
-
reporter Actually I am only guessing MeshRefiner can adapt to geometry because they have something called edge evaluator. Those are pure speculation.
Thanks for the your help. I will try the CGM right away.
-
NestedRefine should be compiled with CMake now. Can you please verify so that I can close this issue ?
-
reporter Thanks. It can compiled and worked fine now.
-
Thanks for confirming. I'll mark this as resolved. If you have any issues with the MOAB-4.9.2 version, please do let us know.
-
- changed status to resolved
Resolved as of MOAB 4.9.2
- Log in to comment
Thanks for reporting this. I will take a look at it and update master with a fix.
You should not manually modify
undef MOAB_HAVE_MPI
. This is a configuration change and needs to propagate correctly. The Refiner tool is currently deprecated and will be removed in the next release. We suggest you use the NestedRefine based UMR tool for your needs. If this is not getting compiled currently, I'll update this also.