Метод конечных элементов linux

советы

Хочу предложить небольшой обзор свободного программного обеспечения для численных расчётов. Прежде всего для решения систем уравнений в частных производных (УрЧП). Решать их нужно во многих инженерных и начных областях (в гидродинамике, теории упругости, теплопроводности, электромагнетизме и других). К счастью, в этой области написано много качественных свободных программ. И учитывая, что GNU/Linux — сегодня главная платформа для численных расчётов, это неудивительно. К сожалению, не все, кому приходится впервые сталкиваться с численными расчётами знают об этих программах. Чаще всего на слуху пара названий коммерческих продуктов с закрытым исходным кодом, ограниченными возможностями расширения и астрономической ценой. Этим мини-обзором я хочу исправить такую ситуацию и рассказать о свободных программах. Я надеюсь, этот обзор будет полезен тем, кто начинает заниматься численными расчётами и ищет подходящее программное обеспечение.

Обзор я построю от простого (математически) к сложному. Практически все численные методы решения уравнений в частных производных сводятся к решению систем линейных уравнений. Решать их приходится часто и много. Поэтому вначале я расскажу о программном обеспечении необходимом для решения систем линейных уравнений, а затем уже о прикладных программных пакетах, облегчающих применение тех или иных методов (конечных элементов, конечных объёмов, конечных разностей) для решения собственно уравнений в частных производных. Большинство пользователей заинтересовано именно в программах из второй группы, но понимание того, что находится «под капотом» необходимо.

Основы

Линейная алгебра
  • BLAS, есть несколько программных реализаций, свободные: BLAS c netlib, автоматически оптимизированный ATLAS; несвободные: MKL (Intel), GotoBLAS и другие
  • LAPACK
  • PLAPACK
  • ScaLAPACK
  • Elemental (основан на FLAME)
Читайте также:  Queue depth in linux
Решение систем линейных уравнений
  • Прямые методы
    • UMFPACK
    • SuperLU
    • TAUCS (библиотека включает и итерационные алгоритмы)
    • Многие методы могут быть легко реализованы самостоятельно, см. книжку Templates for the solution of linear systems: building blocks for iterative methods
    • PETSc (возможность распараллеливания по MPI)
    • LASPACK (включает многосеточные методы, но годится только для последовательных машин)
    • TAUCS (библиотека включает и прямые алгоритмы)
    • Aztec (библиотека для параллельного итерационного решения линейных систем, эффективная, с доступным исходным кодом, но несвободной лицензией)
    Работа с (разреженными) матрицами
    • Fortran
      • UMFPACK
      • SuperLU
      • PETSc
      • SPARSKIT2
      • UMFPACK
      • SuperLU
      • PETSc
      • TAUCS
      • TNT (просто и сердито, один inlcude-файл)
      • FLENS (включает также эффективный, удобный и элегантный интерфейс к BLAS и LAPACK)
      • uBLAS (интерфейс к BLAS из коллекции библиотек Boost)
      • GMM++ (предоставляет единый интерфейс к разным решателям, успешно используется в GetFEM++)
      • Blitz++ (вообще говоря, не поддерживает разреженные матрицы, но это очень эффективная библиотека, если нужны плотные многомерные матричные структуры, но без линейной алгебры)
      • Seldon (не пробовал)
      • SparseLib++ (не пробовал)
      • + всё то же самое, что и в C
      • PySparse (есть в Debian)
      • petsc2py (интерфейкс к PETSc из Python)

      Прикладные программные пакеты и библиотеки

      Переходим к решению собственно систем уравнений в частных производных. Три наиболее используемых математических метода: метод конечных элементов, метод конечных объёмов и метод конечных разностей.

      Именно так я и сгруппирую программные пакеты: по типу реализованного математического метода. После имени пакета указаны его основные особенности, такие как размерность задачи на которую он рассчитан или язык программирования с которым он может применяться.

      • Python с PySparse
      • C++ с GMM++ или каким-нибудь другим из решателей линейных систем (см. выше)
      • C или Fortran с любым подходящим решателем линейных систем
      • Overture (см. выше)

      Универсальные среды для расчётов и прототипирования (замена Matlab)

      Источник

Оцените статью
Adblock
detector