High order optimization of hexahedral mesh takes forever
Dear Gmsh developers,
If I execute the command
gmsh -3 -order 2 -optimize_ho gmsh-opt.geo
using the attached file, I get the following output:
Info : Running 'gmsh -3 -order 2 -optimize_ho gmsh-opt.geo' [Gmsh 4.6.0, 1 node,
...
Info : Smoothing surface 12 (276 elements considered in elastic analogy, worst mapping 5.30833E-03, 69 bad elements)
Info : Smoothing surface 17 (276 elements considered in elastic analogy, worst mapping 5.30833E-03, 69 bad elements)
Info : Generating elastic system...
After that message Gmsh runs forever at 100% CPU usage.
If I run Gmsh with gdb, I get the following backtrace:
#0 __memmove_sse2_unaligned_erms () at ../sysdeps/x86_64/multiarch/memmove-vec-unaligned-erms.S:506
#1 0x00000000024835a5 in ?? ()
#2 0x0000000002487c76 in MatSetValues_SeqAIJ ()
#3 0x0000000002222f6e in MatSetValues ()
#4 0x00000000014956e9 in linearSystemPETSc<double>::addToMatrix(int, int, double const&) ()
#5 0x0000000001847bc5 in ?? ()
#6 0x000000000184b330 in highOrderTools::_applyIncrementalDisplacement(double, std::vector<MElement*, std::allocator<MElement*> >&, bool, double, char*, std::vector<MElement*, std::allocator<MElement*> >&) ()
#7 0x000000000184b642 in highOrderTools::applySmoothingTo(std::vector<MElement*, std::allocator<MElement*> >&, double, bool) ()
#8 0x000000000184b965 in HighOrderMeshElasticAnalogy(GModel*, bool) ()
#9 0x00000000012c92d5 in OptimizeMesh(GModel*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool, int) ()
#10 0x00000000012cf943 in GenerateMesh(GModel*, int) ()
#11 0x000000000110f0e9 in GModel::mesh(int) ()
#12 0x0000000000ef1b06 in GmshBatch() ()
#13 0x0000000000ef2b8f in GmshMainFLTK(int, char**) ()
#14 0x00007ffff75760b3 in __libc_start_main (main=0xea6840 <main>, argc=6, argv=0x7fffffffe538, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7fffffffe528) at ../csu/libc-start.c:308
self = <optimized out>
result = <optimized out>
unwind_buf = {cancel_jmp_buf = {{jmp_buf = {79042048, 2685950806320502189, 15666448, 140737488348464, 0, 0, -2685950807038732883, -2685969837906831955}, mask_was_saved = 0}}, priv = {pad = {0x0, 0x0, 0x6, 0x7fffffffe538}, data = {prev = 0x0, cleanup = 0x0, canceltype = 6}}}
not_first_call = <optimized out>
#15 0x0000000000ef0d39 in _start ()
Best regards, Reinhard