Стабильная версия | 2.7.0 / 19 января 2020 г.; 8 месяцев назад (19.01.2020) |
---|---|
Написано на | C ++ |
Операционная система | Linux, Unix, OS X |
Тип | Анализ методом конечных элементов |
Лицензия | GPL (версия 2) с «исключением времени выполнения» |
Веб-сайт | www.dune-project.org |
DUNE (Distributed и U nified N umerics E nvironment) - это модульная библиотека C ++ для решения уравнений в частных производных с использованием сеточных методов.
Библиотека DUNE разделена на модули. В версии 2.7 основные модули:
и доступен модуль документации. Кроме того, существует несколько дополнительных модулей, в том числе некоторые из них, разработанные третьими сторонами.
Разработка DUNE началась в 2002 году по инициативе профессора Бастьяна (тогда Гейдельбергский университет ), доктора Ольбергера (во время его абилитации в Университете Фрайбурга ) и профессора Румпфа (тогда Университет Дуйсбург-Эссен ). Целью была модель развития, не привязанная к одному университету, чтобы сделать проект привлекательным для широкой аудитории. По той же причине была выбрана лицензия, позволяющая использовать DUNE вместе с проприетарными библиотеками. Хотя большинство разработчиков все еще имеют университетское образование, другие предоставляют DUNE коммерческую поддержку.
Что отличает DUNE от других программ конечных элементов, так это то, что с самого начала основная цель проектирования DUNE должен был обеспечить эффективное соединение новых и устаревших кодов. DUNE - это в первую очередь набор абстрактных интерфейсов, которые воплощают концепции из научных вычислений. В основном они предназначены для использования в приложениях конечных элементов и конечных объемов, но также возможны методы конечных разностей.
Центральный интерфейс - это интерфейс сетки. Он описывает структурированные и неструктурированные сетки произвольной размерности, как с многообразной, так и с неоднородной структурой. Существует семь различных реализаций интерфейса сетки. Четыре из них представляют собой инкапсуляцию существующих менеджеров сети. Следовательно, можно напрямую сравнивать различные реализации сетки. Также описана функциональность для параллельного программирования.
Различные методы C ++, такие как программирование шаблонов, универсальное программирование, метапрограммирование шаблонов C ++ и статический полиморфизм. используемый. Они хорошо известны в других областях разработки программного обеспечения и постепенно проникают в научные вычисления. Они позволяют компилятору устранить большую часть накладных расходов, связанных с дополнительным уровнем абстракции. Для этого от компилятора требуется высокий уровень соответствия стандартам.