Skip to content

rubenwiersma/gravo_mg_cpp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Gravo MG C++ library

[Paper] [Project page]

C++ library implementing Gravo MG. Gravo MG is a Geometric Multigrid Method for solving linear systems on curved surfaces. For more information, check out our project page.

Linking in CMake

You can add this library to your project by simply including the files in your folder for dependencies (e.g., by using git submodules or CMake fetch content) and then adding the subdirectory to your CMake file:

add_subdirectory(deps/gravomg)
target_link_libraries([project_name] PRIVATE gravomg)

Usage

Create the solver and construct a hierarchy:

GravoMG::MultigridSolver(positions, neighbors, mass)
solver->buildHierarchy();

Solve a linear system

Eigen::SparseMatrix<double> lhs;
Eigen::MatrixXd rhs, x;
solver->solve(lhs, rhs, x);

Citations

Please cite our paper if this code contributes to an academic publication:

@Article{WiersmaNasikun2023GravoMG,
author = {Ruben Wiersma, Ahmad Nasikun, Elmar Eisemann, Klaus Hildebrandt},
journal = {SIGGRAPH 2023},
title = {A Fast Geometric Multigrid Method for Curved Surfaces},
year = {2023},
month = jul,
number = {4},
volume = {41},
doi = {10.1145/3588432.3591502},
publisher = {ACM}
}

About

C++ library for Gravo MG

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published