If you are interested in a short overview about what is Scientific Programming and which are the tools used in general, here is a short but very nice article: A case study on large-scale parallel scientific code development. Just a short summary:
"All codes use the message passing interface (MPI) library to achieve parallelism. In addition, each code uses external libraries for features such as
- I/O (HDF, NetCDF, CGNS, or Panda);
- mesh operations, including adaptive mesh refinement (ParaMesh, Mesquite, Metis, MeshSim, or SAMRAI);
- computational geometry (CGAL);
- linear algebra (BLAS, LAPACK), and tools for solving sparse linear systems and systems modeled by partial differential equations (PETSc, Hypre, or Clawpack).
While these codes use parallel libraries that sit atop MPI, developers still had to write raw MPI code to achieve desired functionality."