Смекни!
smekni.com

Визуализация инженерных и научных расчетов (стр. 2 из 12)

Российская программа 3DField (field.hypermart.net) имеет аналогичное предназначение, однако меньший набор доступных средств и при этом обладает более приятным интерфейсом. Другая система научной графики TecPlot (http://www.amtec.com/) , имеет широкие возможности визуализации различных (не только двумерных) данных. В частности, система позволяет строить поверхности, векторные поля, визуализировать объекты, заданные в виде конечных элементов. К сожалению, при всех своих достоинствах она имеет явно перегруженный интерфейс. При всей красоте этих систем, следует заметить, что они более полезны для подготовки к печати статьи или отчета, нежели для повседневной работы исследователя. Но работу по представлению данных в виде, готовом для печати, эти системы выполняют на высоком уровне. К сожалению, такие программы рассчитаны на сравнительно небольшие объемы данных, что ограничивает область их применения.

Стоит также упомянуть о такой программе как Origin – она используется для визуализации различных инженерных расчетов, в том числе и расчетов в микроэлектронике.

Хотя в области микроэлектронных технологий большую популярность имеют визуализаторы, интегрированные в САПР для ИМС, такие как Cadence, ISE, но все-таки инженеры часто используют свои программы для моделирования приборов и возникает необходимость в визуализаторах их расчетов. В этом случае можно помимо вышеназванного Originупомянуть о пакете фирмы Compaq – ArrayVisualizer. Этот пакет хорош тем, что может быть как интегрированным в среду разработки программ VisualStudio и работать с такими языками как VisualBasic, VisualC++, CompaqVisualFortran (CVF), так и быть отдельной программой. Помимо этого он включает ActiveX-компоненты, которые могут быть использованы для WIN32 приложений.

Помимо этих – WINDOWS-пакетов, есть еще DOS-пакеты, например Mapple. Так как он является приложением DOS, то имеет недружелюбный интерфейс, однако является достаточно мощным.

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

1.2 Описание визуализатора CompaqArrayVisulizer.

ArrayVisualizer (AV) фирмы Compaq позволяет наблюдать как данные числовых массивов, так и их графическое представление. AV содержит в качестве ядра графическую библиотеку OpenGL процедуры которой обеспечивают графический вывод. Дополнительно AV позволяет манипулировать графическими данными, предоставляя возможности для перемещения, поворота и масштабирования изображения, а также для изменения способа его представления на экране. AV содержит:

1. автономно запускаемое приложение, выполняющее отображение данных

2. библиотеку Aview процедур, вызываемых из приложений Фортрана и предназначенных для управления ОМ

3. ActiveX-процедуры библиотек Avis2D и AvisGrid

4. дополнительные визуальные средства

Массив, переданный AV, отображается в двух видах:

1. в виде числовой таблицы, выводимой в верхней части окна AV

2. в графическом виде как трехмерное изображение (3D-вид), или как цветовая карта, или как векторные граф, или как рисунок на плоскости.

Процедуры библиотеки Aview позволяют приложениям CVF или VisualC++ отображать (посредством OLE-автоматизации) данные массива, применяя AV. Также данные массива можно сохранить в виде файла, который загружается в AV в процессе его автономного использования.

ActiveX-процедуры (OCX) библиотек Avis2D и AvisGrid могут быть использованы любой поддерживающей автоматизацию средой, например VisualC++, VisualBasic или CVF, для отображения массивов в разнообразных графических видах. Процедуры Avis2D обеспечивают при выполнении графического вывода более 100 свойств, методов и событий; процедуры AvisGrid применяются для создания представляющих массивы таблиц и предоставляют около 30 свойств, методов и событий.

Возможны несколько вариантов употребления AV. Они, а также присущие им преимущества и недостатки перечислены в следующей таблице:

Вариант Преимущества Недостатки
Загрузка agl-файла, созданного ранее выполненным приложением Не требует написания специального кода для вызова AV Нет возможности автоматизировать изменение отображаемых данных
Использование отладчика CVF Не требует написания специального кода, работает с проектом любого типа Требует ручного задания свойств массива и настройки AV; не может быть использован в VisualC++ или VisualBasic, а также в Release-режиме CVF.
Использование fagl-подпрограмм или в случае С – agl-функций Небольшое число процедур и , следовательно небольшие затраты на программирование, процедуры работают с проектами любого типа и в Debug-, и в Release-режиме. Требует ручного задания свойств массива и настройки AV
Использование fagl- и fav- подпрограмм или в случае C++ - agl-функций и функций класса CAViewer. Можно программно задавать свойства массива и выполнять настройки AV; процедуры работают с проектами любого типа; последовательно в одном экземпляре AV можно отображать несколько массивов. Потребуется освоить большое число процедур (более 100); функции класса CAViewer нельзя применять в C (необходим C++).
Использование ActiveX-процедур библиотек Avis2D и/или AvisGrid Дает возможность выводить создаваемые AV графические образы и таблицы данных без вызова AV; обеспечивает более быстрое Употребляется только в Windows-приложениях Фортрана или MFC в случае VisualC++. Заметим, что в VisualBasic большинство
Воспроизведение образов и больше возможностей для настройки параметров EXE-проектов могут использовать процедуры библиотек Avis2D и AvisGrid; потребуется освоить большое число Avis2D/AvisGrid-процедур; Avis2D и AvisGrid процедуры не могут отображать HDF и текстовые файлы.

Отображение массивов.

Массивы отображаются в следующих видах:

1) 3-D видили Height Plot (рис 1):



рис 1.

1. Растровая карта (контрастная заливка) или ImageMap(рис 2):


рис 2.

2.


Векторный граф, или VectorGraph. (В данной работе не используется).

рис. 3

3. График или PlaneView (рис 3):

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

Для вращения изображения достаточно разместить мышь на поле графического вывода, нажать левую кнопку мыши и затем, оставаясь на поле вывода, перемещать мышь в произвольном направлении.

1.3 Описание библиотеки функций ArrayVisualizer.

Ввиду сложности создания Windows-приложений, а также того, что ActiveX-компонента Avis2D не корректно отображает одномерные массивы было решено использовать непосредственно оболочку ArrayViewer в совокупности с программой, расширяющей его возможности, а так же служащей более простым интерфейсом между программой инженера и AV. Для создания программы был применен подход с использованием fagl- и fav- процедур. Программа писалась на языке CVFv6.5.

Опишем процедуры APIAV, встраивание которых в приложение позволяет запускать AV, передавать ему массив, управлять изображением.

FAGL - подпрограммы.

Синтаксис подпрограммы Описание
faglClose(array,status) Закрывает экземпляр AV. Если затем возникает потребность отобразить массив array снова, то достаточно вызвать лишь faglShow; вызова faglStartWatch выполнять не нужно
faglEndWatch (array, status) Удаляет массив array из списка отображаемых массивов и освобождает ресурсы, связанные с array и используемые подпрограммами библиотеки.
faglGetShareName (array, filename, status) Строка filename, возвращаемая этой подпрограммой, может быть передана процедурам Avis2D и AvisGrid как свойство FileName.
faglHide(array, status) Делает экземпляр AV невидимым. Экземпляр AV станет видимым, если затем вызвать faglShow. Однако если экземпляр AV создан посредством favStartViewer, то вместо faglShow следует употреблять favShowWindow
faglLBound (array, lbnd, status) Устанавливает левые границы измерений отображаемого массива в видах Data или GraphViewsAV. По умолчанию массив отображается с границами, равными единице.
faglSaveAsFile (array, filename, status) Сохраняет текущий массив в файле с расширением AGL. Такой файл может быть загружен и отображен в AV.
faglShow (array, Создает экземпляр AV и отображает данные
status) массива array. Так же делает экземпляр AV видимым.
faglStartWatch (array, status) Добавляет массив array в список отображаемых массивов и возвращает дескриптор hv, который используется для доступа к массиву другими подпрограммами библиотеки. Фактически faglStartWatch использует системные ресурсы для приведения array к виду, необходимому для faglShow. Чтобы освободить эти ресурсы, следует вызвать faglEndWatch.
FaglUpdate(array, status) Приводит в соответствие изображение с данными, хранящимися в массиве array. Употребляется, если приложение изменило отображаемый массив array с момента последнего вызова faglUpdate или faglShow и если есть необходимость обновить изображение. Если же экземпляр AV ассоциируется с массивом, созданным favStartViewer, а не faglShow, то вместо faglUpdate нужно вызвать favUpdate.

Параметры fagl подпрограмм: