nmwsharp / variational-surface-cutting

Codebase for "Variational Surface Cutting" by Sharp & Crane, SIGGRAPH 2018
GNU General Public License v2.0
90 stars 16 forks source link

Stuck in [qr] symbolic : 79.92 ms #5

Open lukkio88 opened 4 years ago

lukkio88 commented 4 years ago

Hi,

I have a mesh which seems to be disk topology and 2-manifold. When I use your tool (with the GUI) I get the following when I try to initialize the algorithm:

Constructed halfedge mesh with: 
    # verts =  43199
    # edges =  129573
    # faces =  86368
    # halfedges =  259104
    and 6 boundary components. 
Construction took 37.32 ms
Length scale = 29.2406
[ENERGYPLOT]#TITLE:Energy during optimization
[ENERGYPLOT]#NAMES:Length,Distortion (Dirichlet),Distortion (Hencky),Area,Visibility,Normal Deviation
[ENERGYPLOT]#XLABEL:Iteration
[ENERGYPLOT]#YLABEL:Energy Contribution
Building operators...
  ..done building operators.
[qr] symbolic: 79.92 ms

As a workaround I've tried to re-build with the option -DSUITESPARSE=OFF but when I do make -j8 I get:

/home/MeshProcessing/variational-surface-cutting/projects/cuts/core/src/fast_cholesky.cpp: In constructor \u2018FastCholesky::FastCholesky(GC::SparseMatrix<double>&)\u2019:
/home/MeshProcessing/variational-surface-cutting/projects/cuts/core/src/fast_cholesky.cpp:39:13: error: \u2018class GC::SparseMatrix<double>\u2019 has no member named \u2018to_cholmod\u2019
     mat = A.to_cholmod();
             ^
At global scope:
cc1plus: error: unrecognized command line option \u2018-Wno-unused-private-field\u2019 [-Werror]
cc1plus: all warnings being treated as errors
projects/cuts/core/CMakeFiles/cuts-core.dir/build.make:114: recipe for target 'projects/cuts/core/CMakeFiles/cuts-core.dir/src/fast_cholesky.cpp.o' failed
make[2]: *** [projects/cuts/core/CMakeFiles/cuts-core.dir/src/fast_cholesky.cpp.o] Error 1
make[2]: *** Waiting for unfinished jobs....
CMakeFiles/Makefile2:662: recipe for target 'projects/cuts/core/CMakeFiles/cuts-core.dir/all' failed
make[1]: *** [projects/cuts/core/CMakeFiles/cuts-core.dir/all] Error 2
Makefile:129: recipe for target 'all' failed
make: *** [all] Error 2

Because I was hoping maybe using Eigen instead of SuiteSparse would've solved the issue. Any chance you can help to understand what the issue is?

nmwsharp commented 4 years ago

Hi! Pardon the slow responses here. I really wish I had more time to dig in to this, but things are busy!

Unfortunately, I don't have easy answers. It's getting stuck at some step after the symbolic factorization (perhaps the numeric factorization), but it's hard to say where without seeing your application running. Since it's likely a numerical issue, you might try remeshing your input to have more uniform, nearly-equilateral triangles. You're much more likely to run in to numerical issues if there are skinny triangles in the mesh.

The project as-written directly interfaces with Suitesparse for efficiency, so it won't build out of the box with Eigen (even though the larger codebase machinery has some support for swapping in Eigen). I will say that in my experience, the Suitesparse solvers are pretty always more effective than Eigen's.