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

Обзор свободных пакетов конечно-элементного анализа

Здесь перечислены как собственно решатели PDE, так и использующие эти решатели пакеты конечно-элементного анализа. Ищу развивающиеся проекты, с прицелом встроить куда-нибудь код MPM.

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

Библиотеки и пакеты для решения ДУ в частных производных методом конечных элементов

  • FreeFEM++ is a partial differential equation solver. Свой язык программирования (С++-подобный и транслируемый в C++). freefem scripts can solve multiphysics non linear systems in 2D and 3D. Есть своя IDE — FreeFem++-cs. Со встроенными типами триангуляций и пространств конечных элементов. Код получается понятен, краток и приближен к математической записи задачи в слабой форме. Хорошая документация, много примеров использования на разных задачах. Кроссплатформенный.
  • GetDP 1D-3D, идеологически близок FreeFEM++: описание проблемы с помощью специального языка, приближенное к математической формулировке. Может решать интегро-дифференциальные задачи, в данный момент заточен под задачи из области электромагнетизма, акустики, теплопроводности и механики.
  • GetFEM++ Библиотека для C++, есть интерфейсы высокого уровня для Matlab, Scilab и Python. Поддерживает большое количество типов конечных элементов, включая экзотичные, вроде X-FEM, практически любой размерности, есть возможность программирования типовых задач с помощью готовых «кирпичиков», избегая явной сборки линейной системы. Отсутствуют встроенные средства создания сеток, но можно пользоваться внешними. Библиотека кроссплатформенная.
  • Rheolef 1D-3D-библиотека для C++. Код получается краток и приближен к математической записи задачи в слабой форме. Автоматическая адаптация сеток для 2D-задач.
  • Ofeli 2D-3D, библиотека C++. Среди примеров есть задачи теплопроводности, решения уравнения Навье–Стокса для несжимаемой жидкости, теории упругости (2D и 3D), электромагнетизма.
  • deal.II 1D-3D-библиотека для C++. Локальная адаптация сеток, p- и hp- методы, встроенные средства создания сеток, автоматическое распараллеливание сборки линейной системы и других операций на многоядерных/многопроцессорных машинах (SMP), поддержка кластерного параллелизма (MPI). Хорошая документация.
  • FETK 2D-3D, набор объектно-ориентированных библиотек Си, ориентирован на решение эллиптических уравнений, поддерживает адаптивные сетки и предлагает необычный способ распараллеливания решения (помимо MPI), можно использовать все возможности из bash-подобной оболочки. Есть упрощённая 2D версия для Matlab.
  • FEniCS Partial differential equations can be specified in near-mathematical notation (as finite element variational problems) and solved automatically. FEniCS also provides a large library of important tools for the numerial analyst who wishes to explore and develop new methods. Есть С++ и Python интерфейсы к системе.

Пакеты конечно-элементного анализа

  • Elmer позволяет строить физические модели 1D-3D для решения задач гидродинамики, строительной механики, электродинамики, теплопереноса, акустики и т. д. Cостоит из нескольких модулей: физические модели, граничные и начальные условия задаются в модуле ElmerGUI; численное решение задачи выполняется в ElmerSolver, а результаты обрабатываются в Elmerpost. Задачи описываются в виде легко читаемых текстовых файлов, есть графический интерфейс, поддерживает распараллеливание по MPI.
  • ONELAB is a lightweight interface to finite element software for engineering applications. Native ONELAB clients: GetDP, Gmsh (mesh generator and post-processor), Onelab/Mobile (a finite element package for iPhone). Other clients (non-native) are interfaced with ONELAB by a system of input file pre-processing. Это: Elmer и OpenFOAM (an open source CFD software package developed by OpenCFD).
  • Code_Aster — очень большой (миллион строк кода, более 360 разных конечных элементов) пакет для решения 1D-3D задач механики сплошных сред, термо- и гидродинамики, акустики и магнетизма и других. Заметна ориентация проекта на инженерные приложения, поддерживается язык программирования Python. Документация преимущественно на французском языке.
  • CalculiX. With CalculiX Finite Element Models can be build, calculated and post-processed. The pre- and post-processor is an interactive 3D-tool using the openGL API. The solver is able to do linear and non-linear calculations. Static, dynamic and thermal solutions are available. Both programs can be used independently. Because the solver makes use of the abaqus input format it is possible to use commercial pre-processors as well. In turn the pre-processor is able to write mesh related data for nastran, abaqus, ansys, code-aster and for the free-cfd codes dolfyn, duns, ISAAC and OpenFOAM. A simple step reader is included. In addition external CAD interfaces like vda_to_fbd are available. The program is designed to run on Unix platforms like Linux and Irix computers but also on MS-Windows.
  • Z88Aurora is a free finite element software package for static calculation in mechanical engineering. Beside linear static analysis you can use it for large displacement analysis, stady state thermal analysis and natural frequency analysis. Z88Aurora is divided in three different areas: FE-Preprocessor, FE-Solver and FE-Postprocessor.
  • DUNE (Distributed and Unified Numerics Environment) is a modular toolbox for solving partial differential equations (PDEs) with grid-based methods. It supports the easy implementation of methods like Finite Elements (FE), Finite Volumes (FV), and also Finite Differences (FD).
  • SALOME. Открытая платформа, интегрирующая инструменты численного моделирования. Это пре- и постпроцессор, без решателя (предполагается, что пользователь добавит нужный ему решатель, например Code_Aster). Цикл статей на русском языке. Документация на русском языке.
  • OpenFOAM Открытая интегрируемая платформа для численного моделирования задач механики сплошных сред. Визуальная среда разработки + библиотека C++. Очень большой по объему пакет, предназначен прежде всего для задач гидродинамики. На сегодняшний день является одним из «законченных» и известных приложений, предназначенных для FVM-вычислений.
Читайте также:  Linux tar no path

OpenFOAM под Windows

OpenFOAM — известная программа вычислительной гидродинамики ориентирована в основном на работу под Linux’ами. Тем не менее, сообществом пользователей и несколькими коммерческими фирмами поддерживается ряд версий OpenFOAM под Windows (Список на OpenFOAM Wiki). В частности:

  • blueCFD-Core— проект с открытым исходным кодом, поддерживаемый blueCAPE и направленный на реализацию технологий OpenFOAM непосредственно на Windows без «прокладки» в виде виртуальной машины. За основу берется наиболее свежая версия OpenFOAM (4.x) для Windows (>7, 64-бит). Нами проверена и успешно работает под Windows 7.
  • Caelus-CML— форк OpenFOAM 2.1.1, нацеленный на простоту использования. Развивается самостоятельно. Устанавливается под Windows (64-бит), Ubuntu и RHEL.
  • CFDsupport— OpenFOAM под Windows (64-бит). На 12.03.2017 основой инсталляции была OpenFOAM версии 3.0.0.

Ссылки

Читайте также

Комментарии

Дмитрий Храмов
Компьютерное моделирование и все, что с ним связано: сбор данных, их анализ, разработка математических моделей, софт для моделирования, визуализации и оформления публикаций. Ну и за жизнь немного.

Источник

советы

20080325

Обзор свободных программ для численных расчётов

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

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

Основы

Линейная алгебра
Решение систем линейных уравнений
Работа с (разреженными) матрицами

Особенностью решения уравнений в частных производных — необходимость решать системы линейных уравнений с очень большим числом переменных, но при этом соответствующие матрицы имеют большое количество нулевых элементов (являются разреженными). Практически любой расчёт станет невозможным, если хранить все эти нулевые элементы в памяти компьютера. Соответственно, очень важна способность программного обеспечения эффективно работать именно с разреженными матрицами (хранить в памяти только ненулевые элементы). В большинстве языков программирования это достигается использованием специальных библиотек:

  • Fortran
    • UMFPACK
    • SuperLU
    • PETSc
    • SPARSKIT2
  • C
    • UMFPACK
    • SuperLU
    • PETSc
    • TAUCS
  • C++ (часто предоставляется более удобный и наглядный синтаксис операций)
    • TNT (просто и сердито, один inlcude-файл)
    • FLENS (включает также эффективный, удобный и элегантный интерфейс к BLAS и LAPACK)
    • uBLAS (интерфейс к BLAS из коллекции библиотек Boost)
    • GMM++ (предоставляет единый интерфейс к разным решателям, успешно используется в GetFEM++)
    • Blitz++ (вообще говоря, не поддерживает разреженные матрицы, но это очень эффективная библиотека, если нужны плотные многомерные матричные структуры, но без линейной алгебры)
    • Seldon (не пробовал)
    • SparseLib++ (не пробовал)
    • + всё то же самое, что и в C
  • Python
    • PySparse (есть в Debian)
    • petsc2py (интерфейкс к PETSc из Python)

Ознакомьтесь также со сравнением производительности C++-библиотек для работы с разреженными матрицами, если вас интересуют вопросы быстродействия.

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

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

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

Метод конечных элементов (FEM):Elmer 1-2-3D, проект рассчитаный на решение задач из разных областей физики: теплопроводности, гидродинамики, механики твёрдого тела, акустики, электромагнетизма, квантовой механики; задачи описываются в виде легко читаемых текстовых файлов, есть неплохой графический интерфейс, поддерживает распараллеливание по MPI, лицензия GPL
FreeFEM++ 2D, свой язык программирования транслируемый в C++, типизированный C-подобный, со встроенными типами триангуляций и пространств конечных элементов, код получается понятен, краток и приближен к математической записи задачи в слабой форме — но поддерживаются только треугольные элементы (включая DG- и мини-элементы), хорошая документация, много примеров использования на разных задачах, кроссплатформенный инструмент, лицензия LGPL
FreeFEM3D 3D вариант FreeFEM++, с другими разработчиками, но со схожей идеологией, на сегодняшний день с несколько меньшей фукнциональностью, поддерживает конструктивное описание геометрии задачи
GetDP 1-2-3D, формальное описание проблемы с помощью специального языка, приближенное к математической формулировке, в некотором смысле идеологически близок FreeFEM++, может решать интегро-дифференциальные задачи, в данный момент заточен под задачи из области электромагнетизма, акустики, теплопроводности и механики, ищут добровольцев готовых применить GetDP в области гидродинамики, лицензия GPL
Impact 3D, пакет для расчётов методом конечных элементов упругих и упругопластичных деформаций при ударах, написан на Java, имеет графический интерфейс, лицензия GPL, для визуализации полагается на несвободный, но бесплатный для академичекого использования, GiD
Code_Aster 1-2-3D, очень большой (миллион строк кода, более 360 разных конечных элементов) пакет для расчётов задач механики сплошных сред, термо- и гидродинамики, акустики и магнетизма и других, заметна ориентация проекта на инженерные приложения, поддерживается язык программирования Python, лицензия GPL, документация преимущественно на французском языке
Deal.II 1-2-3D, библиотека для C++, получила в 2007 году премию Вилкинсона, хорошая документация, локальная адаптация сеток, p- и hp- методы, встроенные средства создания сеток, автоматическое распараллеливание сборки линейной системы и других операций на многоядерных/многопроцессорных машинах (SMP), поддержка кластерного параллелизма (MPI), но выбор элементов беднее, чем в GetFEM++, лицензия QPL
FETK 2D-3D, набор объектно-ориентированных библиотек Си, ориентирован на решение эллиптических уравнений, поддерживает адаптивные сетки и предлагает необычный способ распараллеливания решения (помимо MPI), можно использовать все возможности из bash-подобной оболочки (интерпретатора), есть упрощённая 2D версия для matlab, лицензия GPL
Dolfin/FEniCS С++ и Python интерфейсы к системе решения задач FEniCS, хорошая поддержка в Debian и Ubuntu, код приближен к математической постановке задачи в слабой форме, но получается длиннее, чем в FreeFEM++, в силу того, что Python язык универсальный; вообще под зонтиком FEniCS объединено сразу несколько интересных проектов
GetFEM++ 1-2-3-…-ND, библиотека для C++, есть интерфейсы высокого уровня для Matlab и для Python (!), поддерживает большое количество типов конечных элементов, включая экзотичные, вроде X-FEM, практически любой размерности, есть возможность программирования типовых задач с помощью готовых «кирпичиков», избегая явной сборки линейной системы, отсутствуют встроенные средства создания сеток, можно пользоваться внешними, библиотека кроссплатформенна
LibMesh 1-2-3D, библиотека для C++ с возможностью локальной адаптации сеток, параллельное решение линейных систем с помощью PETSc (MPI), поддерживает безматричные методы, выбор элементов шире, чем в Deal.II
LifeV 2D-3D, C++, основные области применения: гидродинамика, теплопроводность, перенос массы и взаимодействие жидкость–структура в пористых средах
Ofeli 2D-3D, библиотека C++, среди примеров есть задачи теплопроводости, решения уравнения Навье–Стокса для несжимаемой жидкости, теории упругости (2D и 3D), электромагнетизма, лицензия GPL
Rheolef 1-2-3D, библиотека для C++, код получается краток и приближен к математической записи задачи в слабой форме, автоматическая адаптация сеток для 2D задач
MODULEF довольно продвинутая библиотека для Fortran77
FEATFLOW 2D-3D, библиотеки для Fortran, пакет ориентирован на решение уравнений Навье–Стокса для течения несжимаемых жидкостей, лицензия типа BSD
OpenFEM довольно продвинутая библиотека для Matlab и Scilab, но версия для свободного Scilab развивается менее активно
Mélina 2D-3D, библиотека для Fortran, документирована исключительно на французском языке
FEAPpv библиотека для Fortran, для задач теории упругости и теплопроводности, распространяется бесплатно и в качестве приложения к книге, но лицензия неясна, является урезанной версией несвободной библиотеки FEAP
ALBERTA-FEM 1D-2D-3D, библиотека для C, адаптивные сетки, контроль невязок, лицензия GPL, но на данный момент несвободная документация (для старой версии — книжка на Amazon). Release candidate новой версии 3.0 можно найти здесь, там же и черновик книжки к ней (без права копирования).
Метод конечных объёмов (FVM):FiPy библиотека для Python, удобная запись задачи, приближенная к математической записи в сильной форме, получается простой и краткий код, решает задачи типа реакция–диффузия–конвекция в 1-2-3D, но не работает с областями со сложной геометрией, библиотека кроссплатформенна
Gerris 2D-3D, пакет ориентированный на решение задач вычислительной гидродинамики (несжимаемаемые течения, уравнения Эйлера, Стокса или Навье–Стокса), поддерживает адаптивные сетки, расчёт переноса веществ в жидкости, распараллеливание по MPI, использует метод Volume-of-Fluid для отслеживания границы между жидкостями, постановка задачи описывается в виде графа, геометрия твердых объектов может быть импортирована из приложений CAD и 3D-моделирования, лицензия GPL
OpenFOAM визуальная среда + библиотека C++, огромный проект, заточен прежде всего под задачи гидродинамики, кроссплатформенный, у меня пока с ним не сложилось
Overture пакет C++ библиотек для расчётов на сложных и перекрывающихся сетках методами конечных разностей и конечных объёмов, поддерживает MPI, основной упор на гидродинамику и теорию горения. Лицензия несвободная, запрещает коммерческое использование.
Метод конечных разностей (FD):Здесь можно резко упростить себе жизнь: для этого годится любая библиотека, предоставляющая удобный интерфейс для работы с разреженными матрицами и решателями линейных систем. Заполнение матрицы обычно очевидно из используемой численной схемы. Можно порекомендовать следующие комбинации:

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

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

Помимо специализированных пакетов описанных выше, есть также свободное ПО для «быстрого и лёгкого» программирования расчётов. Производительность в этом случае обычно приносится в жертву лёгкости программирования и широким функциональным возможностям (универсальности). Приспособить их можно и для решения уравнений в частных производных. Из таких универсальных сред я хочу упомянуть: Python Просто удобный язык программирования, но в комбинации с возможностями NumPy/SciPy, графическими возможностями matplotlib (pylab) или VTK/MayaVi, вместе с библиотекой PySparse для работы с разреженными матрицами, многими библиотеками для численных расчётов, удобством интерпретируемого языка программирования и интерактивной оболочкой ipython — на сегодня Python это уже довольно серьёзный инструмент вычислителя. Мне нравится вот эта быстрая вводная книжка по его использованию: Practical Scientific Computing in Python. Для решения УрЧП можно использовать GetFEM++, Dolfin/FEniCS или FiPy.
Scilab Свободная альтернатива Matlab. Активно развивается и спонсируется. Много возможностей. Для решения УрЧП есть OpenFEM.
Octave Вроде как позиционируется в качестве замены Мatlab, но вот с решением уравнений в частных производных как-то тихо. Я нашёл только очень простенький FEMOCTAVE. В будущем обещают прикрутить решатель из FEniCS. Хочу, однако, заметить, что если цель стоит именно в решении уравнений в частных производных, и метод нужно написать быстро, то стоит обратить внимание на неуниверсальные, но гибкие и лёгкие в использовании:

  • FreeFEM++/FreeFEM3D
  • GetDP
  • Gerris

Если же программирование задачи надо исключить или свести к минимуму, могут пригодится «графические» среды (я, в данный момент, не могу ничего сказать об их гибкости/эффективности):

  • Elmer
  • Impact

На этом я заканчиваю этот обзор. Я намеренно исключил из обзора программное обеспечение предназначенное для других классов задач. Например, про что я знаю мало и рассказать не могу про R (статистика), среды для символьных вычислений, ПО для анализа и обработки изображений, ПО для кластерного анализа и распознавания образов, ПО для анализа генетических последовательностей (список можно продолжать). Буду рад поставить ссылки на соответствующие обзоры.Дополнение 2008.04.15: добавил в обзор Code_Aster, Elmer, FEATFLOW, FETK, Gerris, Impact, Mélina, Ofeli, Overture. Дополнение 2011.06.30: добавил FLAME, PLAPACK, ScaLAPACK, Elemental и ALBERTA-FEM, исправил битые ссылки.

Источник

Читайте также:  Сканер benq 5250c драйвер windows 10
Оцените статью