Целью данного проекта является создание программного комплекса для обработки и визуализации результатов конечноэлементного анализа плоских и осесимметричных задач теории упругости, получаемых сторонними конечноэлементными программными комплексами. Основные требования, предъявляемые программному комплексу:

- открытый программный код, не содержащий и не использующий закрытых или коммерческих сторонних библиотек,

- возможность работы с разными типами конечных элементов: прямоугольными и треугольными,

- возможность работы с конечными элементами с порядками аппроксимации, выше чем линейный(т.е. 6-узловой треугольный и т.п.),

- визуализация исходной и деформированной конфигурации задачи как на на совмещенном графике, так и по отдельности,

- визуализация приложенных к области граничных условий,

- визуализация основных геометрических и силовых характеристик полученного

  решения,

- возможность работы с результатами расчетов нелинейной теории упругости, например итерациями в численных методах в теории больших деформаций(для создания слайд-шоу)

- функции масштабирования и перемещения изображения,

- экспорт в популярные графические форматы,

- интуитивный многооконный графический интерфейс, поддерживающий работу с манипулятором типа «мышь», позволяющий использовать программный комплекс как в  демонстрационных, так и образовательных целях,

- возможность запуска под популярными операционными системами: MS Window, GNU/Linux и Apple Mac OS X

- гибкая архитектура, позволяющая использовать модули расширений

 

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

унифицированном виде.

Анализ существующих аналогов и обоснование

 

Рассмотрим наиболее популярные из существующих в мире свободного программного обеспечение программные комплексы, позволяющие осуществлять постпроцессинг результатов конечно-элементного моделирования. К подобным системам относятся в частности:

 

Gmsh(http://www.geuz.org/gmsh/)

 

FElt(http://felt.sourceforge.net/)

 

pdnMESH(http://pdnmesh.sourceforge.net/)

 

SLFFEA(http://slffea.sourceforge.net/)

 

FeapUI(http://feapui.sourceforge.net/)

 

 

FeapUI – это программа для визуализации расчётов программы Feap, автором которой является R.L.Taylor, наряду с O.C. Zienkiewicz один из авторов известного трёхтомного монументального труда по методу конечных элементов The Finite Element Method(к сожалению не переведённого на русский язык). Так как собственно решатель Feap не представляет интереса в рамках данной работы, отметим особенности именно FeapUI как визуализатора результатов расчётов.

Существуют 2 вариации FeapUI: разработанный на Java(и как следствие обладающий переносимым интерфейсом) и написанный на Visual C++. Непереносимый вариант однозначно не удовлетворяет поставленной задаче, поэтому исследование проводилось только Java-варианта программы. К существенным недостаткам данной программы относятся следующие:

Во-первых, java-вариант не поддерживает работу с файлами. Во-вторых, это приложение позволяет визуализировать только тривиальный набор получаемых в ходе конечно-элементного моделирования характеристик. Как минимум широко применяемое в инженерной практике эквивалентное напряжение фон Мизеса нельзя отобразить при помощи этого приложения( не говоря уже о гидростатическом давлении, необходимость отображения которого возникает при решении задач с несжимаемыми эластомерными материалами). Кроме этого, это приложение не позволяет последовательно отображать различные итерации решения, что делает его практически бесполезным при необходимости работать с задачами с конечными деформациями.

Рис. 1 Задание узлов в Java-FeapUI

 

Следующий известный Open Source конечно-элементный пакет с функциями постпроцессинга это SLFFEA. Этот проект был начат San Lee в 1999-м году и снискал некоторую популярность. К его достоинствам относятся кроссплатформенный интерфейс и большее богатство функций для визуализации результатов по сравнению с FeapUI. Пример интерфейса этого пакета можно увидеть на рис. 3, для задачи о нагрузке плоской плиты. GUI этого пакета полностью выполнен в свободной реализации OpenGL MESA и выполнен в виде отдельной «панели». Этот пакет не очень подходит для постпроцессинга, т.к. работает исключительно со своим решателем, не позволяя использовать внешние уже полученные расчётные данные. Кроме этого он годится исключительно для линейных задач.

Рис 2. Параметры визуализации Java-FeapUI

 

Проект pdnMESH обладает кроссплатформенным интерфейсом, написанным с использованием библиотеки GtK. Однако в феврале 2005-го года этот проект обзавёлся версией для Windows с её «родным» интерфейсом, достаточно примитивным, как можно увидеть на рис.4. Основное предназначение этой программы – генерация сетки плоских треугольных элементов, поэтому функции постпроцессинга в ней представлены достостаточно скудно – фактически на отображении одного параметра(произвольного, определяемого во входных данных) и векторного поля они и исчерпываются.

 

Felt – пожалуй наиболее примитивная программа для визуализации результатов КЭ-моделирования. Она тем не менее обладает развитым языком для задания граничных условий и геометрии задачи; однако функции визуализации результатов сильно отстают аналогичных проектов.

         Рис 3. SLFEA для задачи о нагрузке плоской плиты

        

Пожалуй наиболее широкие возможность визуализации результатов КЭ-моделирования представляет замечательный программный пакет для генерации 3х-мерных сеток Gmsh. Интерфейс этого пакета также разработан с использованием кросс-платформенной библиотеки Gtk. Этот пакет поддерживает достаточно широкий набор известных форматов файлов, таких как STEP, IGES, Nastran bulk data, I-deas и т.п. Пакет работает исключительно с 3х-мерными геометриями, поэтому его использование для плоских или осесимметричных задач несколько затруднено.

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

         Рис. 4 Пакет pdnMesh для генерации сетки и КЭ-анализа

 

 

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

Рис.5 Интерфейс программы Gmsh

 

В связи с этим было принято решение инициировать разработку программного комплекса с открытым исходным кодом для визуализации результатов КЭ-моделирования для плоских и осесимметричных задач теории упругости в случае малых и (опционально) конечных деформаций.

 

Требования к программному комплексу

 

На этапе разработки требований к программному комплексу удобно выделить 3 основные стадии:

1)     Выделение общих требований к программному комплексу(Program Requirements, PREQs)

2)     Конкретизация PREQs и выделение конкретных функциональных требований к программному комплексу(Functional Specification Tags, FS-tags)

3)     Формирование UI-спецификации, детально определяющей алгоритмы работы графического интерфейса пользователя и внешнего вида программы

В связи с тем что данная разработка является во многом учебной, вместо подробного описания на этапе 3 можно ограничиться общим описанием основных принципов функционирования UI приложения

 

Общие требования к программному комплексу

 

Здесь будут перечислены те требования, что изложены в начале отчёта, в формальном виде. Вид идентификатора следующий: PREQ.кодовое название программы.[UI].идентификатор, где UI – опционально и означает что требование относится к пользовательскому интерфейсу, а не общее требование к программе

PREQ.QMeshView.OpenSource - открытый программный код, не содержащий и не использующий закрытых или коммерческих сторонних библиотек

PREQ.QMeshView.QuadAndTriangles - возможность работы с разными типами конечных элементов: прямоугольными и треугольными

PREQ.QMeshView.HighOrderElements - возможность работы с конечными элементами с порядками аппроксимации, выше чем линейный(т.е. 6-узловой треугольный и т.п.)

PREQ.QMeshView.UI.UndeformedAndDeformed - визуализация исходной и деформированной конфигурации задачи как на на совмещенном графике, так и по отдельности

PREQ.QMeshView.UI.Boundary - визуализация приложенных к области граничных условий,

PREQ.QMeshView.UI.Strains - визуализация основных геометрических характеристик полученного решения

PREQ.QMeshView.UI.Stresses – визуализация основных силовых характеристик полученного решения

PREQ.QMeshView.SlideShow - возможность работы с результатами расчетов нелинейной теории упругости, например итерациями в численных методах в теории больших деформаций(для создания слайд-шоу)

PREQ.QMeshView.UI.ScalingAndMovements - функции масштабирования и перемещения изображения

PREQ.QMeshView.Export- экспорт в популярные графические форматы

PREQ.QMeshView.UI.MultidocumentSupport - многооконный и многодокументный графический интерфейс(возможность работы с несколькими открытыми файлами)

PREQ.QMeshView.CrossPlatform - возможность запуска под популярными операционными системами: MS Window, GNU/Linux и Apple Mac OS X

PREQ.QMeshView.Plugins - гибкая архитектура, позволяющая использовать модули расширений

 

 

 

Функциональные требования к программному комплексу

 

Функциональные требования конкретизируют общие требования к программному комплексу и позволяют провести предварительное исследование с целью выявления ограничений и принятия архитектурных решений для дальнейшей разработки программного комплекса. Создание функциональных требований – процесс итерационный, в процессе разработки программного комплекса приходится многие функциональные требования изменять, удалять и добавлять.

Идентификатор функциональных требований обычно имеет структуру: FS.кодовое название программы.[UI].идентификатор, где, как и ранее, UI – опционально и означает требование к пользовательскому интерфейсу.

FS.QMeshView.FileLoad – программа должна поддерживать загрузку данных из файлов

FS.QMeshView.ExportFormats – на любом этапе визуализации результатов должна быть поддержка экспорта в форматы bmp, gif и jpg

FS.QMeshView.TriangleElements – должна быть поддержка треугольных КЭ

FS.QMeshView.QuadElements – должна быть поддержка четырёхугольных КЭ

FS.QMeshView.UI.GeometryUndeformed – должна быть поддержка отображения отсчётной(не искажённой) геометрии задачи

FS.QMeshView.UI.GeometryDeformed – должна быть поддержка отображения деформированной геометрии задачи

FS.QMeshView.UI.GeometryBoth – должна быть поддержка совмещённого отображения деформированной и недеформированной геометрии задачи на одном изображении

FS.QMeshView.UI.MeshView – должна быть возможность показать/скрыть конечноэлементную сетку

FS.QMeshView.UI.VectorPlot – должна быть возможность показать векторное поле перемещений узлов КЭ

FS.QMeshView.UI.GlobalNodeNumbers – должна быть возможность показать и скрыть глобальную нумерцию узлов

FS.QMeshView.UI.DegreeNumbers – должна быть возможность показать и скрыть глобальную нумерацию степеней свободы

FS.QMeshView.UI.ElementsNumbers – должна быть возможность показать и скрыть номера КЭ

FS.QMeshView.UI.ElementCharacteristics – должна быть возможность отдельного просмотра всех характеристик конкретного КЭ(глобальные и локальные номера узлов, координаты узлов в деформированной и недеформированной конфигурациях, деформации, площадь)

FS.QMeshView.UI.ElementPlaneStresses – должна быть возможность посмотреть значения всех компонент тензора напряжений для плоских задач ( xx,yy,xy) для выбранного элемента

FS.QMeshView.UI.ElementAxisymmetricStresses – должна быть возможность посмотра значений компонент тензора напряжений для осесимметричных задач(rr,ff,zz,rz) для выбранного элемента

FS.QMeshView.UI.FieldSurface – должна быть возможность посмотреть любую из компонент напряжений в виде поля напряжений по всей геометрии

FS.QMeshView.LogValues – должна быть возможность вывода значений напряжений как в обычной шкале, так и в логарифмической

FS.QMeshView.IntegralValues – должна быть возможность просмотра поля интегральных характеристик(например функций от напряжений), типа эквивалентного напряжения Мизеса или значения главных инвариантов

FS.QMeshView.OtherValues – должна быть возможность просмотра других характеристик, распределённых по КЭ, типа температуры или гидростатического давления

FS.QMeshView.InterpolateStresses – должна быть возможность использовать не только точные характеристики напряжений, но и интерполированные (сглаженные) по всей геометрии задачи

FS.QMeshView.UI.InterpolateStresses – должна быть возможность отображать не только точные характеристики напряжений, но и интерполированные (сглаженные) по всей геометрии задачи

FS.QMeshView.Histogram – должна быть возможность посмотреть гистограммы распределения любых рассчитанных значений

FS.QMeshView.CalculatedForces – должна быть возможность расчета усилий (сил) внутри деформированного тела(в случае если граничные условия задаются в виде перемещений)

FS.QMeshView.Iterations – должна быть использования итераций нагружения для задач с конечными деформациями

FS.QMeshView.UI.Iterations – должна быть возможность просмотра слайд-шоу итераций нагружения для задач с конечными деформациями

FS.QMeshView.IterationsGraphics – должна быть возможность строить графики по любым интегральным характеристикам решения в зависимости от итераций

FS.QMeshView.ExportToText – должна быть возможность экспорта любого поля значений в файл

 

Выбор среды разработки и обоснование такого выбора

 

В связи с перечисленным набором FS-тагов и PREQs возникает необходимость в выборе среды разработки и языков разработки программного проекта. В связи с этим выбор пал на язык C++ как наиболее популярный в настоящее время язык для разработки программных комплексов. Для создания переносимого графического интерфейса пользователя, обладающего удобными естественными элементами управления был выбран Framework Qt от фирмы Trolltech. Framework, представленный этой библиотекой, обладает высокоуровневыми средствами отображения графики, такими как классы QCanvas и т.п., позволяющими в кратчайшие сроки создавать приложения промышленного класса. Этот Framework является кроссплатформенным, позволяя создавать GUI-приложения для платформ Windows, Mac OS X и Linux, сохраняя общую базу исходных кодов. Наконец, лицензионное соглашение от фирмы Trolltech для библиотеки Qt, начиная с версии 4.0, позволяет использовать её для создания некоммерческих приложений с открытым исходным кодом лицензии GNU, к классу которых и будет относиться данная разработка.