Skip to main content
  • Home
  • Development
  • Documentation
  • Donate
  • Operational login
  • Browse the archive

swh logo
SoftwareHeritage
Software
Heritage
Archive
Features
  • Search

  • Downloads

  • Save code now

  • Add forge now

  • Help

https://github.com/HTDerekLiu/surface_multigrid_code
14 April 2026, 01:52:39 UTC
  • Code
  • Branches (1)
  • Releases (0)
  • Visits
    • Branches
    • Releases
    • HEAD
    • refs/heads/main
    • aee952b15998ceef50f2558b919bd2f5064fa7b4
    No releases to show
  • 8daff06
  • /
  • README.md
Raw File Download Save again
Take a new snapshot of a software origin

If the archived software origin currently browsed is not synchronized with its upstream version (for instance when new commits have been issued), you can explicitly request Software Heritage to take a new snapshot of it.

Use the form below to proceed. Once a request has been submitted and accepted, it will be processed as soon as possible. You can then check its processing state by visiting this dedicated page.
swh spinner

Processing "take a new snapshot" request ...

To reference or cite the objects present in the Software Heritage archive, permalinks based on SoftWare Hash IDentifiers (SWHIDs) must be used.
Select below a type of object currently browsed in order to display its associated SWHID and permalink.

  • content
  • directory
  • revision
  • snapshot
origin badgecontent badge
swh:1:cnt:76fb60bd3650ee0438c0ba6f405fc9ddef9845ab
origin badgedirectory badge
swh:1:dir:8daff066d830be885da80cb8c5846d5d5a4fd6b4
origin badgerevision badge
swh:1:rev:aee952b15998ceef50f2558b919bd2f5064fa7b4
origin badgesnapshot badge
swh:1:snp:ddc1cedc37ffd7f3dfc9f5e01222a2486b0425f7

This interface enables to generate software citations, provided that the root directory of browsed objects contains a citation.cff or codemeta.json file.
Select below a type of object currently browsed in order to generate citations for them.

  • content
  • directory
  • revision
  • snapshot
(requires biblatex-software package)
Generating citation ...
(requires biblatex-software package)
Generating citation ...
(requires biblatex-software package)
Generating citation ...
(requires biblatex-software package)
Generating citation ...
Tip revision: aee952b15998ceef50f2558b919bd2f5064fa7b4 authored by HTDerekLiu on 01 March 2021, 22:51:25 UTC
add compile note
Tip revision: aee952b
README.md
# Surface Multigrid via Intrinsic Prolongation
<img src="./assets/teaser.jpg" width="100%">

Public code release for [Surface Multigrid via Intrinsic Prolongation](https://www.dgp.toronto.edu/projects/intrinsic-prolongation/). For more details, please refer to:

**Surface Multigrid via Intrinsic Prolongation**<br>
[Hsueh-Ti Derek Liu](https://www.dgp.toronto.edu/~hsuehtil/), [Jiayi Eris Zhang](https://eriszhang.github.io/), [Mirela Ben-Chen](https://mirela.net.technion.ac.il/), and [Alec Jacobson](https://www.cs.toronto.edu/~jacobson/)<br>
ACM Transaction on Graphics (Proceedings of SIGGRAPH 2021)<br>
**[[Paper](http://www.dgp.toronto.edu/~hsuehtil/pdf/surfMG_65mb.pdf)]** **[[ArXiv](https://arxiv.org/abs/2104.13755)]** **[[Project Page](https://www.dgp.toronto.edu/projects/intrinsic-prolongation/)]**

## Installation
To get started, clone this repository *recursively*
```
git clone --recursive https://github.com/HTDerekLiu/surface_multigrid_code.git
```
On all platforms, we assume you have installed cmake and a modern c++ compiler on Mac OS X, Linux, or Windows.

## Layout
The main folder contains 6 separate examples that demonstrate some core functionalities and typical usage of our code. All of them have a similar directory and file layout:
```
cmake/
  CMakeLists.txt
README.md
main.cpp
```
+ `01_single_SSP/`: visualize our prolongation operator by mapping the fine mesh vertices onto the coarse mesh.
+ `02_mg_hierarchy/`: show the construction of our multigrid hierarchy and visualize the corresponding prolongation operators between different levels.
+ `03_mg_solver/`: show the usage of our multigrid solver on surface meshes with boundaries.
+ `04_mg_solver_nobd/`: show the usage of our multigrid solver on surface meshes without boundaries.
+ `05_example_mean_curvature_flow/`: show the usage of our multigrid solver in mean curvature flow.
+ `06_example_balloon_sim/`: show the usage of our multigrid solver in balloon simulation.
+ `07_coarse_to_fine/`: show how to use our successive parameterization to map points on the coarse mesh to the input fine mesh.

And they share a common `src` folder for source code and a `meshes` folder for input meshes.

## Compilation
Inside each subfolder, for example `01_single_SSP`, compile in release mode using the following typical cmake/make build routine:
```
cd 01_single_SSP
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release ..
make -j8
```
If all goes well, you should be able to find and run the executable `main_bin` directly with no arguments.

## Usage
We aim to make our multigrid solver as easy to use as possible. To use our multigrid solver for linear systems defined on a fixed surface mesh i.e. typically for solving `Ax = b`, first call `mg_precompute` to construct the multigrid hierarchy. Then, similar to [libigl](https://github.com/libigl/libigl/)'s style of calling direct solvers [min_quad_with_fixed](https://github.com/libigl/libigl/blob/main/include/igl/min_quad_with_fixed.h), our multigrid solver can be used by calling `min_quad_with_fixed_mg_precompute` given a left-hand-side system matrix `A` and then calling `min_quad_with_fixed_mg_solve` to solve the system with the right-hand-side `b`. Please refer to the above examples for more details.

If any issues or questions, please do not hesitate to contact hsuehtil@cs.toronto.edu or jiayieris.zhang@mail.utoronto.ca.

back to top

Software Heritage — Copyright (C) 2015–2026, The Software Heritage developers. License: GNU AGPLv3+.
The source code of Software Heritage itself is available on our development forge.
The source code files archived by Software Heritage are available under their own copyright and licenses.
Terms of use: Archive access, API— Content policy— Contact— JavaScript license information— Web API