Maybe, this is a dump question. But anyway.
I developed a finite difference code for a class of problems in dynamo theory. I used GNU Octave (MATLAB) which is good for testing. The problem size scales quadratic. Hence, the number of unknown becomes relatively large.
I am considering to rewrite my program in a different programming language. In my impression the most common languages used in scientific computing are FORTRAN, C++ or Python. The point I would like to make is that I don't want to reinvent the wheel.
Some aspects to get the idea:
- I would like to use existing libraries/ packages such as LAPACK, ARPACK, UMFPACK, PETSc,... for linear algebra applications. I don't want to write Gaussian elimination again.
- I don't want to program every matrix multiply in for-loop.
- I would like to export unstructured data to the
vtk
file format. I would like to use 2-D plotting tool like in GNU Octave. - I would like to use MATLAB like methods such as
sparse
orblkdiag
. - The possibility of running on multiple processors would be appreciated, i.e. openMPI.
I am neither looking for a book such as Numerical Recipes, a book on numerics of PDEs nor an introductory textbooks on programming. I am looking for a book that describes the general approach. How to structure the program? How to make us of existing packages? An example, such as the standard 2-D Poisson equation would be good.