Инструменты для научных вычислений?

Начинаю заниматься вычислительной гидродинамикой и остро ощущаю, что не хватает удобных библиотек и инструментов для создания расчетных программ, реализующих конечно-разностные методы (полагаю, в силу своего не знания)).

Кто-нибудь может просветить — что обычно используют при создании таковых? Меня интересует, какими обычно пользуются языками (c++ / python / scala и т.д.), библиотеками (petsc / blitz++ / numpy / scipy и т.д.), как строят сетку и сохраняют результаты расчетов?
  • Вопрос задан
  • 4992 просмотра
Пригласить эксперта
Ответы на вопрос 8
doxtarzlo
@doxtarzlo
Научные вычисления? Почему бы не MATLAB?
Ответ написан
Комментировать
noonv
@noonv
matlab | octave
Ответ написан
Комментировать
anmipo
@anmipo
R. На хабре есть вводные статьи.
Ответ написан
Комментировать
Для символьных можно Mathematica, Maple.
Ответ написан
Комментировать
kbtsiberkin
@kbtsiberkin
OpenFOAM показывает себя надёжной программой, и позволяет порой не задумываться о тонкостях алгоритма, т.к. от пользователя требуется практически только задание уравнений.

А если честно, всю сознательную научную жизнь пишу на Fortran, последнее время активно используя gfortran и современные интеловские компиляторы. Значительная часть нашей кафедры и научных сотрудников смежного профиля также использует Fortran для численного моделирования. Язык эффективный, ни капельки не мёртвый. Кроме того, для него легко найти и хорошие, давно используемые и потому хорошо отлаженные библиотеки — MKL, IMSL, LAPACK и другие. Список можно глянуть в англ.вики.

Собственно, Fortran для гидродинамики (да и вообще для научных вычислений) действительно остаётся актуальным и качественным языком, где практически невозможно «выстрелить себе в ногу».

Для символьных вычислений достаточно хорош Maple (в режиме Classic Worksheet, практически не загружающем интерактивного интерфейса), из бесплатных программ почти равнозначна ему Maxima. Wolfram Mathematica довольно тяжеловесна и несколько специфична в работе, зато имеет эффективные встроенные средства распараллеливания на многоядерные процессоры и очень хорошие средства визуализации, а также реализации интерактивности на графиках и при расчётах.

MATHLAB и Octave работают только на численные вычисления, но тоже сравнительно эффективны. Хотя, написание программы для них порой ничем не отличается от написания программы на каком-либо языке программирования, и в этом смысле они неэффективны. Чистые языки более гибки в своих средствах.
Ответ написан
Комментировать
Muff
@Muff
Femlab
Ответ написан
Комментировать
@petch
Для численного моделирования использую следующую связку:
FEniCS - очень удобная библиотека и пакет инструментов для конечно-элементного решения систем ДУ, можно писать на C++ или Python (кстати, в качестве BLAS используется PETSc)
Gmsh - построение геометрии и генерация сеток, как альтернативу можно использовать NetGen
ParaView - для визуализации расчетов
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы