Выбор между бесплатным и коммерческим программным обеспечением

В последнее время все больше внимания уделяется бесплатному и открытому программному обеспечению (Open Source). В списках фирм, поддерживающих разработку бесплатного ПО, можно найти названия таких крупных фирм, как AREVA, BMW, DaimlerChrysler и т. д. (http://www.opencascade.com/customers/). Интенсивно развивается программное обеспечение для создания 3D моделей (http://www.opencascade.com), генерации сеток (http://geuz.org/gmsh/), решения методом конечных/граничных элементов (http://www.dealii.org/),  решения больших систем линейных уравнений (http://www.mcs.anl.gov/petsc/petsc-as/) и графического представления полученных результатов (http://www.paraview.org/).
Среду моделирования можно скомпоновать из нескольких программных продуктов или воспользоваться готовым комплексным решением, например, таким, как Salome (http://www.salome-platform.org/). Удивительно то, что полученная таким образом среда проведения расчетов для решения многих задач, намного превосходит по возможностям коммерческие аналоги, доступные по цене от 30 до 100 тыс. долларов.
  
Разберемся сначала в достоинствах коммерческого ПО, как наиболее часто используемого.
  1. Простота внедрения на производстве.
    Как правило, можно найти богатое предложение различных обучающих курсов, найти книжки, да и сами разработчики стремятся к разработке дружественного пользователю интерфейса (по крайней мере, они в этом уверены и постоянно об этом говорят).
  2. Универсальность.
    Как правило, любой коммерческий продукт включает в себя возможности решения большого количества различных задач. Типичным примером является Ansys (http://www.ansys.com/). В этой программе можно считать статические и динамические задачи для твердого тела и жидкости, магнитное поле, температуру и т. д.
  3. Разработчики несут ответственность за качество ПО.
    Новые версии ПО постоянно тестируются разработчиком. При возникновении каких либо ошибок в расчетах, можно всегда попытаться свалить ответственность на разработчика ПО.
    Несмотря на это, я находил существенные ошибки в коммерческом ПО. Большие фирмы, прежде чем начать использовать ПО, гоняют его пол года на тестовых задачах. Свалить же вину на разработчика тоже еще ни кому не удавалось.
    Тем не менее, тот факт, что расчеты проводились на широко известном коммерческом ПО является всегда весомым аргументом.
  4. Возможность проведения очень сложных наукоемких вычислений.
    Необходимость в таких расчетах возникает относительно редко, а стоимость годовой лицензии на ПО доходит до 100 тысяч долларов, примером такой программы является ABAQUS (http://www.simulia.com/), позволяющий проводить расчеты для сложных моделей материалов.
  5. Проведение расчетов для решения относительно простых задач требует минимальных знаний МКЭ.
    Многие программы обладают мастером построения модели, благодаря которому, начинающий пользователь может довольно быстро получить первые результаты. Так, например, в SolidWorks (http://www.solidworks.com/) интерфейс МКЭ максимально приближен к проблемам инженера-конструктора. Хотя, конечно, такие дружественные интерфейсы значительно сужают возможности анализа МКЭ.
Теперь о бесплатном/открытом программном обеспечении.
  1. Решение может быть оптимизировано под конкретную задачу.
    Задача может быть решена значительно быстрее, если использовать известную информацию о решении задачи, так, например, можно использовать хорошее начальное решение, выбрать метод решения линейных уравнений, автоматизировать генерацию сетки и т.д.
  2. Имея исходный код, можно расширить возможности ПО по своему усмотрению.
    Конечно, исходный код можно изучать, модифицировать, разрабатывать дальше. Некоторые пакеты, например, такие как FEniCS Project (http://www.fenicsproject.org/) предназначены для разработки на их базе МКЭ программного обеспечения.
  3. Разработанную систему моделирования можно сделать частью собственного ПО.
    Конечно, необходимо учитывать особенности лицензии ОПО, но в большинстве случаев это возможно. Описание самой широко используемой лицензии GPL можно найти на http://ru.wikipedia.org/wiki/GNU_General_Public_License.
  4. Открытое ПО может превосходить коммерческие аналоги по своим возможностям.
Так, например, открытое ПО code-aster (www.code-aster.org/) в некоторых возможностях анализа превосходит даже такое широко известное коммерческое ПО как Ansys (http://www.ansys.com/).
  1. Часто содержит последние разработки в области численных вычислений.
    Большинство открытых программ разрабатывается при университетах, например, deal.II (http://www.dealii.org/), который получил приз Вилкинсона (http://www.mcs.anl.gov/research/opportunities/wilkinsonprize/index.php) как один из лучших программных продуктов, предназначенных для проведения численных расчетов.
  2. Бесплатно
    Это часто не последний аргумент, который особенно важен, если необходимо выполнить несколько вычислений параллельно на компьютерном кластере, в случае коммерческого программного обеспечения количество параллельно считающихся задач ограничено лицензией.
  3. Современные возможности визуализации.
    Написанный на база библиотеки VTK пакет ParaView (http://www.paraview.org/), значительно превосходит по возможностям представления графической информации некоторые коммерческие ПО.
  4. Возможность использования современных макро языков, таких как Python и Lua для автоматизации рассчетов.
Так, например, Python поддерживают Salome (http://www.salome-platform.org), code-aster (www.code-aster.org/), FEniCS (http://www.fenicsproject.org/), поддержка языка Lua реализована в gmsh (http://geuz.org/gmsh/), FEMM (http://www.femm.info/wiki/HomePage)

На основании приведенного сравнения можно выделить две области, где использование бесплатного/открытого программного обеспечения безусловно превосходит коммерческое - это задачи оптимизации и решения обратной задачи. Для решения этих задач необходимо перебрать большое количество пробных вариантов. Используя бесплатное/открытое ПО, это можно сделать, как правило, параллельно на нескольких компьютерах, соединенных в сеть. Коммерческое ПО этого не позволяет из-за ограниченного количества лицензий. Кроме этого, разработанная таким образом среда моделирования, может быть передана/продана клиенту. Я с успехом разрабатывал софт для задач геофизики (обратная задача), дефектоскопии (обратная задача) и машиностроения (оптимизация формы, массы и других параметров структуры).

Если вам знаком метод конечных элементов, вы не боитесь порыться в документации, не боитесь слова Linux и немного программируете, то можете с успехом применять открытое ПО и для повседневных расчетов, и тем более для визуализации полученных результатов.