Санкт-Петербургский Государственный
Технический Университет
Физико-Механический факультет, кафедра Гидроаэродинамики
Руководитель проекта |
Е.М.Смирнов |
Реализация |
А.Левченя |
Консультации |
В.В.Рис |
Документация на программу "СВЕТ"
ПОСТАНОВКА ЗАДАЧИ
ПРИНЯТЫЕ СОГЛАШЕНИЯ
ВОЗМОЖНОСТИ ПРОГРАММЫ
МАТЕМАТИЧЕСКАЯ БАЗА
ИСПОЛЬЗОВАННЫЕ РАЗРАБОТКИ
АСПЕКТЫ ПРОГРАММИРОВАНИЯ
ФОРМАТЫ ФАЙЛОВ
ИЗМЕНЕНИЯ, ПРОИЗВОДИВШИЕСЯ В ПРОГРАММЕ
ПОДДЕРЖКА И РАСПРОСТРАНЕНИЕ
ЛИТЕРАТУРА
1 марта 2000 года представлена программа, исправляющая сбой в работе пакета SVET на компьютерах Pentium II (здесь можно взять файл, PENT2.RAR, 8K). Утилита PENT2.EXE запускается один раз в каталоге с программой SVET командой PENT2 SVETTV1.EXE.
В виде отдельного файла доступно подробное описание различных функций программы, скомпилированное на основе исходного текста встроенной справочной системы
Постановка задачи
В последние годы на кафедре гидроаэродинамики для компьютерного моделирования
двумерных и трехмерных процессов в сплошных средах применяются: пакет программ
SINF для решения уравнений переноса, пакет программ визуализации FLAG и
другие программы, использующие единые форматы файлов данных и принципы
их обработки. В качестве вспомогательных инструментов используются различные
программы, также разработанные на кафедре сотрудниками и студентами: генератор
двумерных сеток MIG, сервисная программа для работы с двумерными и трехмерными
сетками GROT.
Создаваемая программа SVET (Scalar and Vector Tools - скалярно-векторный инструментарий) как часть данного набора программ предназначена для вычисления дифференциальных (градиент, дивергенция, ротор) и интегральных (суммы, средние значения, потоки) величин для полей, заданных на структурированных сетках, а также для выполнения развитого набора алгебраических операций.
Поля на сетке задаются одним из двух способов: либо в узлах сетки (первый способ), либо в центрах ячеек плюс в серединах ребер восьмивершинников, центрах граней граничных ячеек и угловых узлах (второй способ). При втором способе задания поле по каждому индексному направлению имеет размерность на единицу больше чем соответствующая размерность сетки.
Таблица 1
Пункт меню | Содержание |
File - Файловые операции |
Просмотр файлов произвольного размера в текстовом окне, редактирование небольших текстовых файлов, смена директории и временный выход в операционную систему |
Domain - Расчетная область |
Команды управления размерами расчетной области - считывание размеров из внешнего файла и установка ограничений по размерам расчетной подобласти |
DivCurlGrad - Дифференциальные операции |
Дифференциальные операции (градиент, дивергенция и ротор в декартовой и цилиндрической системах координат), переключатель способа задания данных |
Integral - Интегральные операции |
Суммирование, осреднение, вычисление потока вектора и конвективного потока скаляра |
Algebra - Алгебраические операции |
Набор основных линейных и произвольных алгебраических и трансцендентных операций над скалярными и векторными полями |
Other - Другие операции |
Преобразование различных форматов и типов записи сеток и полей, формирование стартовых (с нулевыми значенями функции) полей, ївырезкаї подобластей из сетки/поля |
Options - Дополнительные возможности |
Калькулятор для выполнения промежуточных вычислений, настройка параметров программы |
Window - Управление окнами экрана |
Организация интерфейса программы |
Отдельная команда меню Start вызывает начальный диалог программы, где выбирается режим работы - с двумерными или трехмерными данными. Здесь же можно получить доступ к контекстнозависимой гипертекстовой справочной системе программы.
Дифференциальные величины: Таблица 2
Суммирование, осреднение и вычисление потоков: Таблица 3
Здесь А может быть как скалярной, так и векторной величиной.
Реализация вычислительных формул
Вычисления производятся по следующим формулам:
где S - поверхность ячейки, - внешняя нормаль, V - объем ячейки.
Интерполяция
Приближенная функция строится в виде f=ax+by+cz+d, коэффициенты
a, b, c, d находятся по значениям f в четырех точках пространства
с известными координатами. Формула с четным количеством коэффициентов выбрана
из соображений симметрии. Интерполяция производится в области размером
2x2x2 ячейки, для которых известны значения величин в центрах. Рассматриваемые
ячейки разбиваются на две группы по 4 ячейки таким образом, чтобы в каждой
группе все ячейки имели только одну общую угловую точку (на рисунке 2 ячейки
одной группы выделены цветом).
Рис.2.
Системы линейных алгебраических уравнений решаются методом Гаусса по схеме Жордано без обратного хода. Полученные значения функции f арифметически осредняются.
Процедуры, вычисляющие дифференциальные величины, взяты из программы SVADO.
Процедуры суммирования, осреднения и вычисления потоков (далее называемые процедурами пакета AverTool).
Реализация двумерных вычислений
Вычисление дифференциальных величин, суммирование и осреднение, вычисление
потоков при использовании двумерных сеток реализовано через вызов соответствующих
процедур для трехмерных сеток. С помощью специальных процедур-конвертеров
двумерные сетки и поля "растягиваются" в трехмерные (рис.3).
Структура данных до и после преобразования показана в таблице 4. После
вычислений и обратного преобразования полей в двумерные выводятся полученные
результаты.
Рис. 3
Таблица 4
Исх. данныев 2d д.с.к. | Преобр. данные в 3d д.с.к. | Исходные данные в меридиональной плоскости цилиндрической системы координат | Преобразованные данные в цилиндрической системе координат | |
Значение скаляра в точке | u | u u u |
a | a a a |
Значение вектора в точке | (u, v) | (u, v, 0) (u, v, 0) (u, v, 0) |
(az, ar) | (az, ar, 0) (az, ar, 0) (az, ar, 0) |
Координаты узла сетки | (x, y) | (x, y, K*) (x, y, 0) (x, y, -K) |
(z, r) | (z, r, Kr) (z, r, 0) (z, r, -Kr) |
* Величина K выбирается такой, чтобы полученная "трехслойная" сетка была достаточно тонкой; при необходимости аналогично вышеописанному производится преобразования сетки/поля в четырехслойное.
Далее приведены описания форматов из справки по программам пакета FLAG:
объемная сетка
GRID_FILE contains 3D-grid data in the following format:
the first string :<NI><NJ><NK> (grid size)
next NI*NJ*NK strings: <X><Y><Z>(Cartesian coordinates)
(Here & later I-index rises first)
VECTOR_FILE contains 3D-vector data in the following format:
the first string : :<NI><NJ><NK> (grid size)
next NI*NJ*NK strings: <Vx><Vy><Vz>(vector components)
SCALAR_FILE contains 3D-scalar data in the following format:
the first string : :<NI><NJ><NK> (grid size)
next NI*NJ*NK strings: (scalar value)
плоская сетка
GRID_FILE contains 2D-grid data in the following format:
the first string : <NI><NJ>(grid size)
next NI*NJ strings: <X><Y>(Cartesian coordinates)
(I-index rises first)
VECTOR_FILE contains 2D-vector data in the following format:
the first string : <NI><NJ>(grid size)
next NI*NJ strings: <Vx><Vy>(vector components)
SCALAR_FILE contains 2D-scalar data in the following format:
the first string :<NI><NJ>(grid size)
next NI*NJ strings: <Z>(scalar value)
* новая программа
+ добавленные возможности
лето 96
* программа NewSVADO: командная строка, дифференциальные и сервисные операции на трехмерных сетках, выгрузка промежуточных результатов в файлы на диске
* программа SVVT 1.0 (Scalar&Vector Volume Tools): дифференциальные операции по методу контрольного объема, линейная объемная интерполяция, расширение объема производимых сервисных операций
24.7.96
* программа SVET 1.0: работа с двумерными областями
4.8.96
* программа SVET 2.0: самодельный интерактивный интерфейс
+ работа в цилиндрической системе координат
+ расширение функций по алгебраическим преобразованиям полей
16.8.96
+ поддержка и управление файлами пределов
+ сосредоточение файлов, связанных с программой, в одном каталоге с исполняемым файлом
18.4.97
+ работа программы в защищенном режиме процессора
+ процедуры пакета AverTool: суммирование и осреднение, вычисление потоков
10.5.97
+ в текстовых файлах в качестве разделителя может использоваться запятая
+ при выводе протокола в AverTool'е расшифровывается номер поверхности и вычисляются модули векторов
+ возможно вычисление потока вектора
+ поддерживаются трехмерные вектора, заданные на плоскости
+ процедуры AverTool'а работают на двумерных областях
26.5.97
+ два формата вывода - столбчатый и экономичный, преобразование между ними
26.6.97
+ Контроль выделения памяти, корректное завершение последней операции при недостатке памяти
23.2.98
* программа SVET TV-1: интерфейс Turbo Vision - верхнее двухуровневое меню, контекстнозависимые строка состояния и интерактивная гипертекстовая справочная система, окно для вывода протокола и статусно-информационное окно
27.2.98
+ новая структура меню, стартовый диалог, переделан внешний вид программы
22.5.98
+ Вывод протокола в файл SVET.LOG с возможностью настройки: не создавать файл, дописывать данные в конец или создавать новый при запуске программы
+ В протокол при запуске программы выводится дата создания данной версии, дата и время формирования протокола
+ Запоминание установленных опций в файле SVET.CFG (запись и считывание их)
+ Временные файлы программы *.SVT автоматически удаляются из программного каталога по окончании работы с программой
25.5.98
+ возможность просмотра текстовых файлов произвольного размера
+ возможность выбора в конфигурации файла справочной системы
+ редактирование вручную файла конфигурации - он имеет текстовый формат
+ параметр /PRIVATE, по которому становятся доступны дополнительные команды меню
+ по окончании работы с программой производится переход в каталог, из которого программа была запущена
26.5.98
+ новая структура меню
+ вычисление дифференциальных величин в частных случаях двумерной области (цилиндрическая система координат и др.) вынесено в отдельные команды меню
+ контроль за типом данных при расчете дифференциальных величин (FDM и др.) осуществляется специальными командами меню
+ специальная команда включения/выключения поддержки трехмерных векторов, заданных на плоских сетках
+ возможность загрузки сетки прямо перед вычислением дифференциальных величин
+ в протокол при вычислении дифференциальных величин заносится размерность расчетной области и тип данных - FDM или нет
28.5.98
+ корректно работающие, согласованные между собой процедуры управления размерами расчетной области: считывание размеров расчетной области из заголовка файла данных, интерактивное определение пределов по части расчетной области, загрузка сетки
+ усовершенствован алгоритм вычисления координат вновь открываемого окна просмотра или редактирования файла
22.6.98
+ переработана структура меню вычисления дифференциальных операций
+ изменены наименования размерностей и использование этих наименований в статусном окне, диалоге изменения размерности и при выводе протокола вычисления дифференциальных величин
23.6.98
+ структуризация процедуры алгебраических преобразований для ее использования в новом блоке соответствующих команд
+ алгебраические процедуры: сложение скаляра с константой, умножение скаляра на константу, перемножение скалярных полей, умножение вектора на скаляр
+ процедура формирования стартового (нулевого) поля
29.6.98
+ вычисление ротора трехкомпонентного вектора, заданного на двумерной сетке
+ линейные алгебраические операции - сложение/вычитание скалярных/векторных полей
+ покомпонетное формирование поля из одного или нескольких многокомпонентных полей
+ списки предыдущих значений строк ввода интерфейсной части программы сохраняются в файле SYSTEM.CFG (сейчас и далее файл с различной системной информацией программы) перед окончанием и автоматически загружаются в начале следующего сеанса
17.7.98
+ единая процедура перезаписи поля в экономичном или столбчатом формате
20.7.98
+ локальное меню, вызываемое правой клавишей мыши или комбинацией Alt+F10
+ команда просмотра в текстовом окне последнего выводного файла
+ во многие главы справки добавлено описание сообщений об ошибках и предупреждениях, выдаваемых программой
16.9.98
+ масштабирование вектора и сложение вектора с константой (векторной)
17.9.98
+ процедура "вырезки" подобласти из сетки/поля
18.9.98
+ вычисление ротора трехкомпонентного поля в цилиндрической системе координат
23.9.98
+ настройка режима экстраполяции данных при вычислении дифференциальных величин при задании данных в центрах ячеек
+ настройка ширины поля вывода
+ загрузка и сохранение новых настроек в файле конфигурации программы
24.9.98
+ особая проверка размерности исходного поля перед выполнением дифференциальных операций при задании данных в центрах ячеек
10.10.98
+ расширена справочная информация, развита система перекрестных ссылок; в целом, как и ранее, здесь представлена подробная информация обо всех изменениях в программе
+ разработаны и принципиально протестированы (проверены все возможные
варианты форматов исходных данных, проведены проверочные вычисления при
задании исходными величинами полиномов до второй степени) процедуры, связанные
с вычислением дифференциальных величин при задании данных в центрах ячеек:
^ "растягивание" плоского поля в четырехслойное
^ выделение памяти под вычислительные процедуры
^ пре-интерполяция: перенос значений, заданных в центрах ячеек, в середины
граней ячеек
^ вычислительные процедуры: градиент, дивергенция, ротор - исходные данные
заданы в серединах граней ячеек, получаются значения для центров ячеек
^ пост-экстраполяция - перенос значений вычисленных величин на граничный
слой сетки одним из двух способов