Answer the question
In order to leave comments, you need to log in
Tools for scientific computing?
I am starting to study computational fluid dynamics and acutely feel that there are not enough convenient libraries and tools for creating computational programs that implement finite-difference methods (I believe, due to my ignorance)).
Can anyone enlighten - what is usually used to create them? I am interested in what languages are usually used (c++ / python / scala, etc.), libraries (petsc / blitz++ / numpy / scipy, etc.), how do they build a grid and save the results of calculations?
Answer the question
In order to leave comments, you need to log in
OpenFOAM shows itself to be a reliable program, and sometimes it allows you not to think about the intricacies of the algorithm, because. the user is practically only required to set equations.
And to be honest, I have been writing all my conscious scientific life in Fortran, lately I have been actively using gfortran and modern Intel compilers. A significant part of our department and related researchers also use Fortran for numerical modeling. The language is efficient, not a bit dead. In addition, it is easy to find good, long-used and therefore well-established libraries for it - MKL, IMSL, LAPACK and others. The list can be viewed in the English wiki.
Actually, Fortran for hydrodynamics (and indeed for scientific computing) really remains a relevant and high-quality language, where it is almost impossible to “shoot yourself in the foot”.
Maple is good enough for symbolic calculations (in the Classic Worksheet mode, which practically does not load the interactive interface), from free programs Maxima is almost equivalent to it. Wolfram Mathematica is quite heavy and somewhat specific in work, but it has effective built-in parallelization tools for multi-core processors and very good visualization tools, as well as implementation of interactivity in graphs and calculations.
MATHLAB and Octave work only for numerical calculations, but are also relatively efficient. Although, writing a program for them is sometimes no different from writing a program in any programming language, and in this sense they are inefficient. Pure languages are more flexible in their means.
For numerical modeling, I use the following bundle:
FEniCS - a very convenient library and a package of tools for the finite element solution of remote control systems, you can write in C ++ or Python (by the way, PETSc is used as BLAS)
Gmsh - geometry construction and mesh generation, as an alternative you can use NetGen
ParaView - for visualization of calculations
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question