Wmincon -- a Matlab/C++/Cuda based toolbox for computing constrained Willmore minimizers
SubdivisionLab -- a Matlab based toolbox for subdivision algorithms
 

Download: Wmincon+SubdivisionLab.zip

Overview:
Built upon our earlier package SubdivisionLab, Wmincon provides:
  1. Matlab and Cuda code for computing the Willmore (W) energy, area (A), volume (V), total mean curvature (M), and harmonic energy (HE) of a Loop and C2g0 subdivision surface. The main functions are WAVM_SS() and HE_SS().
  2. Matlab, C++ and CUDA code for discrete W, A, V, M and HE energies defined on PL surfaces. The main functions are W_PL(), A_PL(), V_PL(), M_PL() and HE_PL().
  3. Matlab functions Wmincon_PL() and Wmincon_SS() that interface between the above functions and three general optimization solvers (fmincon, snopt and granso) for solving various constrained Willmore problems.
Installation and Usage:
  1. Download the package from the link above, unzip it.
  2. At the SubdivisionLab\ directory, run >> startup . This adds all the paths to Matlab.
  3. To compile the C++ code, run >> MakeCpp
  4. To compile the Cuda code, run >> MakeCuda. (This requires editing the Cuda toolkit path in MakeCuda(). MakeCuda exploits the parallel toolbox to make the compilation of the CUDA code as painless as possible.)
  5. If step 4 or 5 fails for you and if you use either Linux or Windows, feel free to contact us for the compiled .mex files.
  6. Explore the scripts under the Papers/ directory to see how various constrained Willmore minimizers can be solved. Currently, the results from the following papers can be reproduced by the scripts under the Papers/ directory:

Example:
Below, the Matlab script /Papers/Enumath17/Figure1.m is shown on the left, the graphical outputs are shown on the right:

Limitation:
Currently, a GPU is required to run all the scripts in the paper, and the only reason is that WAVM_SS.cpp, the C++ version of WAVM_SS.cu, is not yet implemented. Without a GPU, all the scripts using a PL method can be executed. For instance, Figure (a)-(c), but not (d)-(e), above can be generated on a regular computer with no GPU.

Support: Please feel free to contact the PI (yut @ drexel . edu) for technical support.

Contributors: Patrick Brogan, Jingmin Chen, Yilin Yang, Thomas Yu, Andrew Zigerelli

Acknowlegement: NSF grants DMS 1115915, DMS 1522337
 

Last update: January 11, 2019