I've been using FiPy 3.0 level set methods for an application which requires non-uniform grids. I recently tried upgrading to version 3.1 but now get a variety of error messages when I call calcDistanceFunction(). To avoid the complications of my own code, I've also tried "examples.levelSet.distanceFunction.mesh1D", both with skfmm and lsmmlib. It works fine as written but when modified slightly to introduce a non-uniform grid, FiPy 3.1 produces the same errors I see in my application. However FiPy 3.0 appears to work fine.
As best I can tell from examining the source code for skfmm and lsmlib, both assume uniform grids and just don't contain any provisions for non-uniform ones. I'm writing partly to confirm that is the case, and partly to see if you have any suggestions for getting around this problem, other than by sticking with FiPy 3.0. I know the 3.1 documentation points out the new level set libraries should be much faster than the 3.0 native python code, but I also wanted to suggest for future versions (assuming I'm right about the skfmm and lsmlib limitations) that it would be very useful to have the option to fall back to the old 3.0 native python code for non-uniform grid cases. But I certainly understand the desire to simplify the code base. And I suspect from the lack of other bug reports that there may not be too many of us trying to use level set methods on non-uniform grids. If you do have a suggested work-around, please let me know. In any case, thanks for making FiPy available for use like this. Bob Howell ---------------------------- What follows is just a short description of my application, in case that helps in suggesting a work-around. I've been using FiPy 3.0 to study sublimation of icy planetary surfaces, in particular those near the hot fissures at the south pole of Enceladus. I use a level set variable to track the sublimation erosion of the surface. That surface is cooled both by sublimation and by radiation, and heated from the side, where a hot fissure is assumed to be located. I'm interested in the temperature (and erosion) of the surface both near to and far from the fissure. The very non-linear nature of the heat loss terms lead to very steep temperature gradients near the surface and near the fissure. For those reasons I'm using a non-uniform grid, with fine spacing near the surface and the fissure, but much coarser spacing far away. FiPy 3.0 seems to produce reasonable solutions, although numerical instability problems force me to use small time steps, which then lead to long run times. I switched to FiPy 3.1 partly because the new level set libraries would be faster, and partly just to stay with the most recent code base. _______________________________________________ fipy mailing list [email protected] http://www.ctcms.nist.gov/fipy [ NIST internal ONLY: https://email.nist.gov/mailman/listinfo/fipy ]
