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

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.

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

1. Подпрограммы помощи: Help() и Stat(): в реализации этих подпрограмм нет ничего сложного - они просто выводят информацию с помощью оператора write.

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

API AV favUpdate, потом с помощью пустого цикла идет задержка. Пустой цикл просто перебирает числа от 1 до значения переменной delay*106. Это повторяется циклически для всех необходимых значений k.

3. Подпрограммы вида отображения: Visu(), Plain(), PlainX, PlainY(): в них сначала происходит проверка на текущий тип отображения. Если он не совпадает с тем, который выбран сейчас, то производится подготовка оболочки AV (масштабы шкал, их названия, тип отображения). Потом заполняется необходимый массив и вызывается favUpdate.

4. Служебные подпрограммы: ChangeK(): изменяет текущий шаг моделирования (переменная k), затем заполняет все массивы новой информацией, после чего вызывает favUpdate. ChangeDelay(): изменяет значение переменной delay, которая влияет на время задержки при анимации, а также на время задержки при исполнении команды pause. Paus(): подпрограмма сделана специально для скриптового режима. Она обеспечивает задержку. Состоит из пустого вложенного цикла.

Таким образом мы разобрали структуру и принципы работы программы console.exe. Приступим теперь к ее описанию.

1.5 Описание работы программы визуализации

В этом подразделе будут рассмотрены следующие вопросы:

· Терминология программы

· Формат файла со служебной информацией (pre-файла).

· Команды программы

· Скриптовый режим программы

· Запуска программы.

Терминология программы.

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

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

· pre-файл - файл со служебной информацией (например, размерности массива)

· скрипт - последовательность команд (сценарий), записанных в текстовый файл, которые программа может интерпретировать.

· i - переменная в трехмерном массиве TDMas. Ее аналог - координата y

· j - переменная в трехмерном массиве TDMas. Ее аналог - координата x.

· Формат данных - формат по которому записываются данные в файл.

Формат pre-файла.

Pre-файл (от preset - предварительные установки)- это файл с установками, необходимыми для работы программы, а также с оформлением шкал.

Минимальная длина этого файла в строках - три, максимальная не ограничена, но читаться будут только первые восемь. Итак построчно:

1. Максимальное значение k. Формат: I2 (integer, две цифры)

2. Максимальное значение i. Формат: I2

3. Максимальное значение j. Формат: I2

Очень важно! Эти три строки обязательно должны быть в файле, иначе работа программы завершится с ошибкой. К тому же их нужно обязательно правильно и точно указать. Согласно этим параметрам формируются внутренние массивы программы и потом заполняются данными. Ошибка может повлечь за собой потерю данных или их искажение.

4. Коэффициент по оси X (j). Это позволяет отобразить данные не с теми координатами, которые предлагает AV, а с необходимыми вам. Т.е. индексы массива будут переведены, например, в микроны. По умолчанию равен 1 (т.е. на шкале отображаются индексы массива). Формат: E4.2 (т.е. вещественный, две цифры после запятой. Например, 0.50)

5. Коэффициент по оси Y (i). По умолчанию равен 1. Формат: E4.2

6. Имя оси X. Это имя отображается как имя заданной оси. Длина - не более 20 символов. По умолчанию : `X'.

7. Имя оси Y. Не более 20 символов. По умолчанию: `Y'.

8. Имя оси Z. (ось результатов). Не более 20 символов. По умолчанию: `Z'

Далее можно вставлять свои комментарии и пояснения. Программой они не учитываются.

Команды программы.

К сожалению язык Fortran не предоставляет достаточно мощных подпрограмм обработки строк. Поэтому все команды имеют вид не команда операнды, а просто команда. Далее, при необходимости, программа требует ввод дополнительных данных, обычно - координат, но помимо этого и различных значений. Внимание: все команды должны быть набраны в нижнем регистре.

Команды можно разделить на четыре группы:

1. Команды помощи

2. Виды отображения

3. Анимация

4. Служебные

Рассмотрим все команды (включая их дополнительный ввод) по их видам:

Команды помощи:

· help - эта команда выводит информацию о программе, ее версии и список всех доступных команд. Упоминание о ней есть в строке приглашения к вводу (Enter comand (help for comand list)>).

· status - эта команда выводит сообщение о текущих установках: максимальное и минимальное i, максимальное и минимальное j, максимальное k, текущее k, значение delay.

Виды отображения:

· visual - эта команда включает 3D-вид отображения. При запуске программы включается именно он. Она не требует дополнительного ввода.

· plain3d - эта команда включает отображение в виде растровой карты (контрастной заливки). В этом виде нельзя проводить анимацию. Не имеет дополнительного ввода.

· plainx - эта команда переключает в режим отображения одномерных массивов. Она позволяет отобразить сечение по Y. (Т.е. будет отображаться массив с изменяющейся координатой X и постоянной координатой Y). Требует ввод i.

· plainy - эта команда также переключает в режим отображения одномерных массивов. Она позволяет отобразить сечение по X. (Т.е. будет отображаться массив с изменяющейся координатой Y и постоянной координатой X). Требует ввод j.

Анимация.

· anim - эта команда позволяет провести анимацию при выбранном типе отображения (кроме контрастной заливки). При 3D -виде (команда visual) она требует только ввода начального значения k (k1) и конечного значения k (k2). При сечении по Y (команда plainx) она требует ввода координаты i, при каком значении этой переменной будет происходить анимация. При сечении по X (команда plainy) она требует ввода координаты j, при каком значении этой переменной будет происходить анимация. По окончании анимации текущее k принимает значение k2.

Служебные команды.

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



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