Comments (12)
So it's just a class istantiated somewhere that is necessary to call the functions, there's no particular use of it.
from boundary-first-flattening.
The Common class is a wrapper for cholmod_common, which is struct that stores the state of the cholmod library & needs to be passed to all cholmod functions. There isn't really an Eigen equivalent for this class, I would simply get rid of it and replace the internals of the Sparse and Dense matrix classes with Eigen equivalents.
from boundary-first-flattening.
Be warned that Eigen, though somewhat easier to install than CHOLMOD, is significantly slower.
from boundary-first-flattening.
Hi again,
Do you reckon replacing the supernodal factoring with some of the ones provided by eigen would yield differences in quality of result?
from boundary-first-flattening.
No, I think Eigen is just gonna be slower. It's newer code, and not as well-developed as CHOLMOD/SuiteSparse.
from boundary-first-flattening.
The result should be the same, but supernodal is likely to be fastest. I believe Eigen provides a wrapper around the supernodal version of Cholmod.
from boundary-first-flattening.
That being said, the difference is only about a 2x slowdown for using Eigen over CHOLMOD (IIRC). So if you don't need this extra speed, it's probably no big deal.
from boundary-first-flattening.
Thank you for the support, I realize I'm asking too many questions.
from boundary-first-flattening.
By the way:
inline void Cholesky::buildSymbolic(cholmod_sparse *C)
{
clear();
factor = cholmod_l_analyze(C, common);
if (factor) validSymbolic = true;
}
What would this be, what's a symbolic factorization in suitesparse?
from boundary-first-flattening.
This corresponds to the 'analyzePattern' function in Eigen's Cholesky implementation, while buildNumeric corresponds to 'factorize' function (http://eigen.tuxfamily.org/dox/classEigen_1_1SimplicialCholesky.html). The symbolic factorization determines the nonzero pattern of the Cholesky factorization, the numeric entries of the factorization are determined after computing this pattern. This is done to so that the symbolic (i.e., nonzero) pattern can be reused when only numeric values in the input matrix change.
from boundary-first-flattening.
Hi again,
I've seen you have few error checks, like the following:
inline void Cholesky::buildSymbolic(cholmod_sparse *C)
{
clear();
factor = cholmod_l_analyze(C, common);
if (factor) validSymbolic = true;
}
inline void Cholesky::buildNumeric(cholmod_sparse *C)
{
if (factor) validNumeric = (bool)cholmod_l_factorize(C, factor, common);
}
Eigen doesn't seem to provide a mechanism to check if the factorizations are valid.
Is there anything you can suggest for an equivalent error checking? The documentation doesn't say much unfortunately, I could return a default value but I don't want to propagate any error.
from boundary-first-flattening.
Take a look at the "Sparse Solver Concept" section here: https://eigen.tuxfamily.org/dox/group__TopicSparseSystems.html. "solver.info()!=Success" lets you check if the decomposition failed.
from boundary-first-flattening.
Related Issues (20)
- Cannot open <cblas.h> HOT 4
- seeking surface model with holes HOT 3
- Port to wasm for web
- Mesh has isolated vertex HOT 1
- Include GLFW as Dependency HOT 2
- Concepts in the project HOT 1
- Compile with emscripten question HOT 2
- UV Overlapping problem? HOT 2
- AdjacencyTable uses a slow data structure HOT 1
- `std::vector<bool>` has unfortuante and unexpected implementation HOT 1
- Half edge mesh operations cannot be inlined HOT 1
- Mesh has non manifold vertices HOT 2
- Mac Command Line error - Access Denied HOT 2
- non-manifold edges warning when holes/multiple components HOT 1
- README needs an update for the C++ interface HOT 2
- Asymmetric result after flattening HOT 7
- Vector subscript is out of range exception. PolygonSoup.cpp. HOT 4
- About flattening to a rectangle with specified aspect ratio HOT 3
- How to output area distortion from an app HOT 2
- feat: Export error/quality measures
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from boundary-first-flattening.