Wmincon -- a Matlab/C++/Cuda based toolbox for computing constrained Willmore minimizers
SubdivisionLab -- a Matlab based toolbox for subdivision algorithms
Built upon our earlier package SubdivisionLab, Wmincon provides:
Installation and Usage:
- 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().
- 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().
- 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.
- Download the package from the link above, unzip it.
- At the SubdivisionLab\ directory, run >> startup . This adds all the paths to Matlab.
- To compile the C++ code, run >> MakeCpp
- 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.)
- 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.
- 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:
- Numerical Methods for Biomembranes: conforming subdivision versus non-conforming PL methods (Jingmin Chen, Thomas Yu, Patrick Brogan, Robert Kusner, Yilin Yang and Andrew Zigerelli)
- Numerical Methods for Biomembranes based on Piecewise Linear Surfaces (John Brogan, Yilin Yang and Thomas Yu)(pdf)(Conference Proceedings, Enumath2017)
- A Flexible C^2 Subdivision Scheme on the Sphere: with application to biomembrane modelling (Jingmin Chen, Sara Grundel and Thomas Yu)(pdf)(bibtex entry)
Below, the Matlab script /Papers/Enumath17/Figure1.m is shown on the left, the graphical outputs are shown on the right:
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