Рефераты. Визуализация инженерных и научных расчетов

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

Имя

Смысл/вид

Тип.

array

Имя отображаемого массива / входной

Числовой

status

Статус вызова fagl-подпрограммы. В случае успеха равен нулю/ выходной

integer(4)

filename

Строка, возвращаемая faglGetShareName/ выходной

CHARACTER(*)

filename

Имя файла без расширения, если файл пишется в директорию, из которой вызвано приложение, либо полное имя файла / входной.

CHARACTER(*)

lbnd

Массив ранга 1, размер которого равен рангу отображаемого массива / выходной

INTEGER(4)

title

Строка, отображаемая в заголовке экземпляра AV / входной

CHARACTER(*)

Для вызова приведенных выше подпрограмм в использующем их программном компоненте следует выполнить ссылку:

Use avdef ! Ссылка на модуль avdef.f90

Модуль AVDEF содержит интерфейсы fagl-подпрограмм.

Перечисленные подпрограммы обычно используются следующим образом:

1. до отображения массива array вызовите faglStartWatch с параметром array;

2. если необходимо отображать массив, имея нижнюю левую границу, отличную от единицы, примените faglLBound;

3. для отображения сообщения, сопровождающего выводимые данные, вызовите faglName;

4. для запуска AV и отображения массива array вызовите faglShow с первым параметром, равным array. AV будет функционировать до тех пор, пока не выполнена команда faglClose;

5. если хранимые массивом данные подверглись изменениям, то для их отображения вызовите faglClose;

6. для сохранения массива array в виде файла с расширением AGL (Array Graphing Language) вызовите faglSaveAsFile, использовав array в качестве первого параметра. При этом AV может быть некактивным;

7. при необходимости можно вызвать faglGetShareName и получить строку filename, позволяющую процедурам Avis2D и AvisGrid осуществлять доступ к памяти, занятой массивом.

8. после завершения просмотра массива вызовите faglEndWatch.

Для массивов отображаемых в AV рекомендуется использовать атрибут !DEC$ATTRIBUTES array_visualizer :: array. Действие этого атрибута таково: память, занимаемая массивом array, используется и AV и приложением. При отсутствии атрибута будут созданы две области данных array и при каждом обновлении массива после вызова faglUpdate данные будут копироваться из области, принадлежащей приложению, в область, используемую AV.

Заметим, что DEC-атрибут ARRAY_VISUALIZER может быть применен только с динамическими объектами, т.е. объектами, обладающими атрибутом PIONTER или ALLOCATABLE.

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

Fav - подпрограммы управляют AV и обеспечивают взаимодействие AV с приложением. Как правило, fav- и fagl- подпрограммы используются совместно. Fav - подпрограммы подразделяются на группы, имеющие названия:

· запуск AV

· доступ к данным

· зона вывода

· фильтрация данных

· палитра

· оси координат

· выбор

· виды изображений

· 3D вид

· растровая карта

· векторный граф

· отображение данных

· камера

· маркер

· разное

Работа с fav-подпрограммами станет возможной после выполнения ссылки:

Use avviewer

в которой модуль AVVIEWER содержит интерфейсы и константы подпрограмм.

Поскольку fav - подпрограмм очень много (более 100), приведем описание только тех из них, которые используются в программе.

Подпрограмма

Что выполняет

Запуск AV

favStartViewer

Запускает экземпляр AV

favEndViewer

Завершает работу экземпляра AV

Доступ к данным

favSetArray

Загружает в AV заданный массив

Фильтрация данных

favUpdate

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

Оси координат

favSetDimScale

Ассоциирует ось координат с массивом, содержащим разметку оси.

favSetUseAxisLabel

Включает/отключает вывод заданных пользователем имен осей координат

favSetAxisLabel

Задает имя указанной оси координат.

Виды изображений

favSetGraphType

Задает видовой режим

Разное

favSetArrayName

Задает текст, выводимый на заголовочной полосе AV

favShowWindow

Отображает/скрывает окно AV

1.4 Разработка программы визуализации

Задачей ставилось создание ПО, позволяющего просматривать результаты расчетов в графическом виде, использую при этом библиотеки AV и язык Compaq Visual Fortran (CVF).

Интерфейс с рассчитывающей программой был выбран файловый, т.е. входными данными для программы console являются два файла. Один - читающийся первым с начальными установками для массива, осей координат. Второй - непосредственно результаты. Тип файлов - не компрессированные, текстовые. Последнее выбрано исходя из соображений совместимости не только с Fortran-программами, но и с C/C++ и даже Pascal-программами.

Требования к выводу информации.

Для вывода были поставлены следующие задачи:

· для двумерных массивов - вывод в 3D виде с возможностью анимации

· для двумерных массивов - вывод в виде растровой карты (контрастной заливки)

· вывод одномерных случаев (сечений массива) с возможностью анимации.

Выбор пользовательского интерфейса.

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

Структура программы.

Программу можно логически разбить на 6 блоков, выполняющих каждый свои функции (в листинге (Приложение 1) они помечены комментариями):

1. Block_1: описание переменных и массивов. Все массивы имеют атрибут allocatable, для совместимости с DEC-атрибутом ARRAY_VISUALIZER. Рабочие массивы следующие: TDMas - трехмерный массив, в который заносятся все результаты расчетов. VMas - двумерный массив, отображаемый в 3D-виде и в растровой заливке. PXMas и PYMas - одномерные массивы, соответствующие сечениям по координатам. XAxis и YAxis - одномерные массивы, содержащие разбивку шкал.

2. Block_2: считывание служебной информации, результатов расчетов, формирование массивов шкал. Этот блок начинается с оператора call Help(), вызывающего соответствующую подпрограмму, показывающую команды программы. Потом задаются значения по умолчанию для имен и масштабов шкал. Далее организовывается ввод имен файлов - сначала файла со служебной информацией, потом файла с данными. Имена должны быть не больше 70 символов (включая пути). Далее идет считывание файла со служебной информацией, потом размещение массивов в памяти, после чего задаются массивы шкал и, наконец считываются отображаемые данные, которые распределяются между всеми массивами, участвующими в визуализации (начальное состояние: для PXMas i=1, для PYMas j=1, для всех массивов k=1)

3. Block_3: задание начальных установок AV с помощью подпрограмм API.

4. Block_4: блок обработки команд. Состоит из операторов if..then…end if . Если команда распознана, то передается управление соответствующей подпрограмме. При вводе команды newfile передается управление блоку 2, а при вводе команды exit передается управление блоку 5.

5. Block_5: завершение программы. Освобождение ресурсов, задействованных для связи с AV, освобождение памяти, выделенной под массивы и закрытие оболочки AV.

Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12



2012 © Все права защищены
При использовании материалов активная ссылка на источник обязательна.