Level Set Method Library (LSMLIB)Developers: Kevin T. Chu (Serendipity Research) and Masa Prodanovic (Univ. of Texas at Austin)
Table of Contents
- Limitations and Known Problems
- Applications of LSMLIB
- Researchers using LSMLIB
- LSMLIB Talks & Minisymposia
- For Developers
|May 13, 2011:||LSMLIB source code repository moved to github! https://github.com/ktchu/LSMLIB|
|May 3, 2009:||LSMLIB 1.0.1 Released! This is a minor bug fix release to ensure compatibility with the recently released LSMPQS software package.|
|February 17, 2009:||
Let us help showcase your research!
We continually update the LSMLIB Applications web page and are in the process of creating a new web page to list individuals and research groups who are actively using LSMLIB. If you would like your work to be included on either of these web pages, please let us know!
|February 15, 2009:||LSMLIB 1.0.0 Released!|
The Level Set Method Library (LSMLIB) provides support for the serial and parallel simulation of implicit surface and curve dynamics in two- and three-dimensions. It contains an implementation of the basic level set method algorithms and numerical kernels described in "Level Set Methods and Dynamics Implicit Surfaces" by S. Osher and R. Fedkiw and "Level Set Methods and Fast Marching Methods" by J.A. Sethian. It also contains implementations of several advanced level set method techniques available in the literature.
The library consists of a collection of Fortran subroutines, C functions, and C++ classes. In addition, MATLAB interfaces are provided for some of the basic components of the level set method algorithm. The main features of the library include:
- High-computational and high-programmer performance through the use of mixed-language programming (e.g. C++/Fortran77, C/Fortran77, MATLAB/C/Fortran77);
- Support for serial and parallel computation;
- Support for narrow-band/localized computation;
- Support for vector level set method calculations;
- Restart capabilities.
- LSMLIB Toolbox Package and Serial LSMLIB Package: C and Fortran compilers
- Parallel LSMLIB Package: SAMRAI (v2.1.0), HDF5 (> v1.6.4), MPI
- LSMLIB MATLAB Toolbox: MATLAB MEX compiler
LSMLIB has been tested on the following systems:
- Mac OS X (10.3.9, 10.4, 10.5): GCC 3.3, GCC 4.0, Intel Compilers (10.0)
- Linux: GCC (3.x, 4.x), Intel Compilers (10.1, 11.0)
- Windows: Cygwin with Open Watcom compilers
While we do officially support Windows at this time, we have been fortunate to have users who have graciously contributed notes on their experiences with LSMLIB on Windows. We provide these as a way to help our Windows users get started. Unfortunately, we do not have Windows systems to test on, so we will not be able to provide detailed support for Windows at this point in time.
- LSMLIB for Windows Using MingW and Msys (thanks to Xiaohai Wan, Eli Lilly)
- LSMLIB for Windows Using MS Visual Studio 2005 (thanks to Thomas Pintelon, University of Cambridge)
- Compiling LSMLIB MATLAB Toolbox with CMake and Visual Studio (thanks to Ning Zhang, NanFang Medical University)
- SAMRAI 2.3.0 patch (thanks to David Martin, University of Oulu)
- This library is still under development and has not been thoroughly tested. If you find a bug or have a suggestion, please send me an email at ktchu AT serendipityresearch DOT org, and I will make an attempt to incorporate the appropriate change into the next release of the library. Thank you for your patience during the development process.
- We are happy to have other researchers use the LSMLIB software in their work (either through collaborations or independently). We merely ask that you reference LSMLIB in presentations and documents that result from your use of the library.
LSMLIB Toolbox PackageThe LSMLIB Toolbox package is a collection of numerical kernels that are commonly used in level set method calculations. It currently provides numerical kernels for the following:
- computation of spatial derivatives using high-order ENO/WENO schemes
- TVD Runge-Kutta time integration schemes
- imposing boundary conditions
- computation of a variety of geometric quantities (e.g. normal, area/volume, curvature, etc.)
- integration over regions defined by implicit functions
- computing the right-hand side of specific level set method partial differential equations; and
- localization/narrow-band calculations
- fast marching method calculations (e.g. signed distance function, solution to Eikonal equation)
- various utility functions (e.g. delta functions, norms, etc.)
Serial LSMLIB Package
The Serial LSMLIB package is intended to provide support for serial level set method calculations. Currently, it contains functions for
- managing of computational grids and data
- initializing level set functions for simple geometries
- imposing boundary conditions
- computing signed distance functions and extension fields via the fast marching method
- carrying out common data manipulations (e.g. copying data, computing the norm of a grid function).
This package is still actively under development. In the near future, we hope to extend the package to cover more of core numerical kernels that support the following level set method calculations:
- time evolution of the level set function,
- reinitialization and orthogonalization (for codimension-two problems), and
- motion in restricted domains.
Parallel LSMLIB Package
The Parallel LSMLIB package is built using the Structured Adaptive Mesh Refinement Application Infrastructure (SAMRAI) developed and maintained in the Center for Applied Scientific Computing (CASC) at Lawrence Livermore National (LLNL) The decision to leverage SAMRAI for the Level Set Method Library was made because SAMRAI is specifically designed to address several key issues:
- manage parallelism,
- provide check-point and restart capabilities.
A major design goal of SAMRAI is to provide support for each of these features in a scalable manner. Furthermore, the API for SAMRAI is designed to shield the application developer from the tedious bookkeeping and memory management involved in writing code for parallel, structured adaptive mesh refinement applications. The underlying philosophy of SAMRAI is that an application developer should be able to migrate to a high-performance, parallel program with adaptive mesh capabilities with minimal effort once a satisfactory numerical algorithm has been developed for calculations on a single, simple rectangular mesh. We have taken advantage of these features to implement a high-performance, parallel (eventually adaptive) level set method library.
LSMLIB MATLAB Toolbox
The MATLAB LSMLIB package provides a set of MATLAB scripts and MEX-files that support level set method calculations. This package currently provides functions for
- time evolution of level set functions,
- computation of high-order spatial derivatives,
- total variation diminishing Runge-Kutta time integration, and
- computation of signed distance functions and extension fields using fast marching methods.
Development Version (hosted at github)
- LSMLIB API Reference: detailed documentation of library routines.
Current Library Limitations and Known Problems
- The package only supports one-, two-, and three-dimensional calculations.
- Adapative mesh refinement is not yet available.
- Computation of the maximum stable time step is incorrect for problems involving both advection and motion in the normal direction.
- There are a few warnings that show up when using strict compilers (e.g. Intel Compilers). These are primarily a result of not explicitly dealing with return values from standard C library functions and do not lead to any numerical inaccuracies.
The LSMLIB developers gratefully acknowledge support from the following funding agencies:
- Department of Energy under contract numbers DE-FG02-97ER25308 (Computational Science Graduate Fellowship) and DE-FC26-06NT43067
- Department of Agriculture under grant #2007-35102-18162
- National Science Foundation
- Air Force Office of Scientific Research
We would also like to thank the following individuals:
- Professor David J. Srolovitz (Yeshiva University) and Professor Steven L. Bryant (University of Texas at Austin) - support and encouragement in developing LSMLIB
- Zhaoxuan Wu - original autoconf system for building LSMLIB
- Xiaohai Wan, Thomas Pintelon, and Ning Zhang - documentation for building LSMLIB on Windows
- Contributing Users/Bug Reporters:
Daniel Thorpe, Markus Gross, Anatoliy Kats, Yi Li,
Guillaume Walck and his students, Burak Ozkalayci, Zhang Ning,
Stefan Sokoll, Moslem Kazemi, Danping Zou, Marc Day, and Ruhollah Tavakoli.
Our humblest apologies if we have accidentally left anybody off of this list. Please let us know and we will remedy the situation immediately.
- Level Set Methods and Fast Marching Methods J. A. Sethian. 1999.
- Level Set Methods and Dynamic Implicit Surfaces. S. Osher and R. Fedkiw. 2002.
- The Fast Construction of Extension Velocities D. Adalsteinsson and J. A. Sethian. J. Comp. Phys., 148, 2-22, 1999.
- A PDE-Based Fast Local Level Set Method. D. Peng, B. Merriman, S. Osher, H. Zhao, and M. Kang. J. Comp. Phys., 155, 410-438, 1999.
- A Remark on Computing Distance Functions. G. Russo and P. Smereka. J. Comp. Phys., 163, 51-67, 2000.
- The numerical approximation of a delta function with application to level set methods. P. Smereka. J. Comp. Phys., 211, 77-90, 2006.