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.

6.         Block_6: блок описания подпрограмм. Все подпрограммы являются встроенными и содержатся в разделе contains. Все подпрограммы предназначены для обработки команд. Почти все из них (кроме Animat и Paus) не содержат локальных переменных, для упрощения взаимодействия, структуры, сокращения количества требуемых ресурсов.

Графически структуру программы можно изобразить как это сделано на рис 4 (оговоримся сразу – это не блок-схема программы, это только схематичное изображение структуры).

Как легко можно заметить, для модификации программы, добавления в нее новых команд и возможностей достаточно изменять только блоки 4 и 6, т. е. добавлять новые условия и подпрограммы. Так же желательно включать новые команды в подпрограмму Help. Это позволит пользователям в любой момент получить список команд программы.

Почти все подпрограммы, реализующие команды используют глобальные массивы TDMas, VMas, PXMas, PYMas, XAxis, YAxis – это позволяет не передавать их, а также оперировать ими, в случае необходимости в основной программе. Так же подпрограммы используют глобальные переменные plx, ply, pld и vis.


Рис 4.

Каждая из них равна единице если соответствующий режим включен и равна нулю в противоположном случае. Эти переменные используются для того чтобы не переключаться каждый раз в новый режим. Также они используются подпрограммой Animat() для определения, какой массив ей заполнять.

Полный список всех подпрограмм и команд, им соответствующих:

Подпрограмма Команда
Помощь
Stat() status
Help() help
Анимация
Animat() anim
Виды отображения
PlainX() plainx
PlainY() plainy
Plain() plain3d
Visu() visual
Служебные
Paus() pause
ChangeDelay() delay
ChangeK() k
- newfile
- exit

Команды newfile и exit не имеют своих подпрограмм – они выполняются оператором goto n.

Разберем подпрограммы по видам:


Информация о работе «Визуализация инженерных и научных расчетов»
Раздел: Информатика, программирование
Количество знаков с пробелами: 112439
Количество таблиц: 9
Количество изображений: 11

Похожие работы

Скачать
249178
21
46

... системам линейных алгебраических уравнений с более чем одной неизвестной; MATLAB решает такие уравнения без вычисле-ния обратной матрицы. Хотя это и не является стандартным математическим обозначением, система MATLAB использует терминологию, связанную с обычным делением в одномерном случае, для описания общего случая решения совместной системы нескольких линейных уравнений. Два символа деления / ...

Скачать
114601
5
73

... концентрических окружностей с уменьшающимся радиусом по мере затухания колебаний скорости и момента. Аналогичная картина наблюдается при ступенчатом набросе нагрузки. 5. РАЗРАБОТКА ВИРТУАЛЬНОЙ ЛАБОРАТОРНОЙ РАБОТЫ НА БАЗЕ ВИРТУАЛЬНОЙ АСИНХРОННОЙ МАШИНЫ   Иную возможность анализа АД представляет специализированный раздел по электротехнике Toolbox Power System Block. В его библиотеке имеются блоки ...

Скачать
60267
1
0

... - в группе переменных, «зажатых в кулак», но этот «кулак», как мы уже отмечали, легко разжать, выводя на дисплей найденные значения с «первородной» размерностью массы (kg), длины (m) и времени (sec): пакет MathCAD «разжимает» и сам вектор, м составные размерности, приписывая к числам комбинации основных физических единиц. Но не только этим хороша размерность в задачах. Главное то , что она ...

Скачать
55431
1
0

... де-факто, чему способствовала и их большая универсальность). Таким образом, именно Microsoft Excel был выбран мной для разработки средства автоматизации расчетов в лабораторной работе «Предварительные вычисления в триангуляции». Поэтому другие средства построения электронных таблиц здесь не рассматриваются, но зато уделяестся внимание некоторым специфичным средствам Excel. Возможности EXCEL ...

0 комментариев


Наверх