[GRASS-dev] New grass library and modules

Markus Neteler neteler at itc.it
Wed Jan 24 09:59:06 EST 2007


Hi Soeren,

this looks really nice and will help to better establish GRASS
as GIS workhorse also for heavy computations.

You could submit this to Computer & Geosciences as article :)

Markus

On Mon, Jan 22, 2007 at 10:10:19PM +0100, Soeren Gebbert wrote:
> Dear developers,
> i would like to submit a new library and two modules based on the new library 
> into cvs.
> 
> The new library called "gpde_lib" is designed to support the solution of 
> partial differential equations within grass. The discretization of PDE's is 
> based on raster and volume maps. 
> I have implemented groundwater flow for two and three dimensions.
> Heat flow and solute transport are on my todo list.
> 
> All library functions start with a N_ 
> eg: N_create_les() or N_alloc_array_2d().
> 
> The current draft doxygen documentation is available here:
> 
> http://www-pool.math.tu-berlin.de/~soeren/grass/modules/grass-pde-lib/html/
> 
> I have implemented two modules based on the new library to solve confined and 
> unconfined groundwater flow in two dimensions and confined groundwater flow 
> in three dimensions. The two programs are still very basic and support only 
> two boundary conditions (dirichlet and neumann).
> 
> The modules are called r.gwflow and r3.gwflow.
> 
> The grass PDE lib provied functions to create and solve lineare equation 
> systems. Therefor different linear equation solvers are implemented:
> * LU decomposition for quadratic matrices (direct)
> * GAUSS elimination for quadratic matrices (direct)
> * CG method for quadratic and sparse matrices (iterative)
> * BiCGStab method for quadratic and sparse matrices (iterative)
> 
> The solvers and the creation of a linear equation system (matrix assembling) 
> are parallelized with OpenMP http://www.openmp.org. The speedup of the 
> solvers is quite good (IMHO):
> http://www-pool.math.tu-berlin.de/~soeren/grass/modules/screenshots/sgi_altix_cg_bench.png
> 
> The new library do not use functions of the gmath library to create vectors or 
> matrices, or to solve a linear equation systems. There reasons are:
> 1.) I was quite unsure if the gmath library calls are thread safe
> 2.) I do not wanted to use function calls to get access to vectors and
>      matrices for performance reasons
> 3.) I wanted to parallelize the equation solvers with OpenMP and therefor all 
>      vector and matrix operations i use
> 4.) I'm not very familiar with the gmath library 
> 5.) I do not know which gmath functions need LAPACK or BLAS
> 
> If those question can be clarified, it should be possible to use gmath 
> functions in the gpde library.
> The only problems i see for now are, that there are two different function 
> calls to perform a LU decomposition and the gpde lib do not use the matrix 
> and vector structures of the gmath lib.
> 
> I have implemented a lot of unit and integration tests on code basis, which 
> will also be commited into cvs. Those tests assure the correct functionality 
> of the lib. If the tests are compiled, a new module called test.gpde.lib is 
> created and can be executed within grass to test all functions of the 
> library. IMHO we should create a test structure for each library to check the 
> correct functionality on function base. 
> 
> If there are no objections against the library, i would like to commit it to 
> cvs.
> 
> Best regards
> Soeren
> 
> _______________________________________________
> grass-dev mailing list
> grass-dev at grass.itc.it
> http://grass.itc.it/mailman/listinfo/grass-dev




More information about the grass-dev mailing list