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
30 November 2025, 10:20:56 UTC
  • Code
  • Branches (1)
  • Releases (0)
  • Visits
Revision 1c5e37e40d3389205b273d299ca8ce48513e5e92 authored by Alec Jacobson on 06 March 2023, 19:56:13 UTC, committed by GitHub on 06 March 2023, 19:56:13 UTC
Update mg_VCycle.cpp
1 parent f285051
  • Files
  • Changes
    • Branches
    • Releases
    • HEAD
    • refs/heads/main
    • 1c5e37e40d3389205b273d299ca8ce48513e5e92
    No releases to show
  • 337a0c0
  • /
  • README.md
Raw File Download
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.

  • revision
  • directory
  • content
  • snapshot
origin badgerevision badge
swh:1:rev:1c5e37e40d3389205b273d299ca8ce48513e5e92
origin badgedirectory badge
swh:1:dir:337a0c00a645cd2fb8b810c020feb82537c11a65
origin badgecontent badge
swh:1:cnt:76fb60bd3650ee0438c0ba6f405fc9ddef9845ab
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.

  • revision
  • directory
  • content
  • snapshot
Generate software citation in BibTex format (requires biblatex-software package)
Generating citation ...
Generate software citation in BibTex format (requires biblatex-software package)
Generating citation ...
Generate software citation in BibTex format (requires biblatex-software package)
Generating citation ...
Generate software citation in BibTex format (requires biblatex-software package)
Generating citation ...
Tip revision: 1c5e37e40d3389205b273d299ca8ce48513e5e92 authored by Alec Jacobson on 06 March 2023, 19:56:13 UTC
Update mg_VCycle.cpp
Tip revision: 1c5e37e
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.
The diff you're trying to view is too large. Only the first 1000 changed files have been loaded.
Showing with 0 additions and 0 deletions (0 / 0 diffs computed)
swh spinner

Computing file changes ...

back to top

Software Heritage — Copyright (C) 2015–2025, 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