Документация на программу "СВЕТ": справочная информация
Программа SVET (Scalar and VEctor Tools - скалярно-векторный инструментарий) создавалась на кафедре аэродинамики Санкт-Петербургского Государственного Технического Университета начиная с весны 1996 года до настоящего времени.
Программа позволяет работать со скалярными и векторными полями, заданными на структурированных сетках (трехмерных и плоских), выполнять различные сервисные операции, вычислять дифференциальные величины (градиент, дивергенцию и ротор), суммировать и осреднять поля, вычислять конвективные потоки скаляров.
В двух последних частях программы использованы различные готовые разработки студентов кафедры, но большая часть работы проделана Левченя Александром. В программе использованы процедуры, разработанные Евгением Михайловичем Смирновым, студентами Владиславом Арановым и Сергеем Грушиным; за консультации по процессу создания программы автор благодарит Владимира Вольдемаровича Риса и Эдуарда Анатольевича Рудинского.
При выполнении операций комплекса AverTool (суммирование, осреднение и вычисление потоков) следует помнить о несовпадении размерностей поля и сетки. Это сказывается на том, что не следует во избежание ошибки указывать близкие ограничения по одному из индексов - разница между его минимальным и максимальным значениями должна быть по крайней мере равна двум. Также при работе с данными процедурами следует помнить, что все ограничения по расчетной области указываются для исследуемого поля, т.е. могут быть на единицу больше соответствующей размерности сетки.
ВНИМАНИЕ! При расчете дифференциальных полей реализован тот же метод работы с памятью, что и в программе AverTool, т.е. вычисления выполняются за один прогон. Таким образом, на ПК с недостаточной оперативной памятью будет происходить ошибка, при обнаружении которой после соответствующего предупреждения работа прекращается. В данном случае необходимо для корректного окончания расчетов использовать неполные поля и сетки, причем при выполнении дифференциальных операций для этого не требуется предварительного "вырезания" областей из файлов.
Нумерация поверхностей
Оптимальное использование памяти
"Недокументированные" возможности программы
Встроенный транслятор формул
Обработка критических ошибок
Параметры командной строки
Особенности интерфейса
Размерности и форматы файлов
Особенности меню программы
Методы вычисления дифференциальных величин
Вывод протокола
Последние рекомендации
Демонстрационная версия
Файлы пакета
Техническая поддержка
Возможно вычисление градиента скалярного, дивергенции и ротора векторного полей, поддерживаются декартова и цилиндрическая системы координат.
Первые две команды меню позволяют выбрать метод вычисления дифференциальных величин
Вычисляется градиент скаляра, дивергенция и ротор вектора в трехмерной и двумерной декартовой и цилиндрической системах координат (в последнем случае поле задается в меридиональной плоскости), ротор вычисляется у трехкомпонентного вектора, заданного на двумерной сетке.
В результате некорректного ввода исходных данных возможно получение сообщений о недопустимом формате файлов или размере исходной области
Возможно суммирование и осреднение скалярных и векторных полей по части граничной или внутренней сеточной поверхности, по части внутренней или граничной сеточной линии (двумерный случай). В аналогичных областях вычисляются потоки векторных полей и конвективные потоки скалярных полей. Набор возможных команд меню зависит от текущей размерности!
ВНИМАНИЕ! При вычислении потока через внутреннюю или граничную сеточную линию в цилиндрическом осесимметричном случае производится вычисление для всей "трубы", т.е. либо через поперечное сечение, либо через боковую стенку.
В результате некорректного ввода исходных данных возможно получение сообщений о недопустимом формате файлов или размере исходной области, при вводе ограничений по области вычислений сообщается об ошибочном по каким-то причинам значении ограничителя
Возможно вычисление скалярного и векторного произведений векторных полей, а также другие произвольные математические операции с полями. Возможно выделение подобласти из сетки либо поля, вычисление модуля радиус-вектора и формирование поля по сетке и заданным формулам для компонент поля (см. Встроенный транслятор формул). Выполняются преобразования между двумя форматами вывода чисел в файлах данных. Производится осреднение значений по ячейкам и восстановление узлов сетки.
В результате некорректного ввода исходных данных возможно получение сообщений о недопустимом формате файлов или размере исходной области, в случае необходимости использования в процедуре нескольких файлов с одинаковым размером сетки (поля) при нарушении этого условия выдается соответствующее предупреждение
Здесь находятся команды вызова простейшего калькулятора, его варианта с более широкими возможностями (см. Встроенный транслятор формул) и диалога по настройке параметров программы.
Осуществляется выбор и установка в качестве текущей (с выводом информации в соответствующем окне) сетки. После выбора файла на диске производятся вычисления объемов и векторов поверхностей ячеек с сохранением информации в оперативной памяти. В случае использования пределов по расчетной области (установлены ДО загрузки сетки) запрашивается имя файла для записи в него "вырезанной" сетки - ее используемой части; если нет необходимости выводить данный файл, укажите в качестве его имени пустую строку.
Методы вычисления дифференциальных величин
Выдается предупреждение о невозможности работы с данной сеткой, если хотя бы один из ее размеров меньше 3
Описание процедуры - Вычисление дифференциальных величин
Описание процедуры - Вычисление дифференциальных величин
Описание процедуры - Вычисление дифференциальных величин
Возможно вычисление ротора трехкомпонентного поля, заданного на двумерной сетке как в декартовой, так и в цилиндрической системе координат. При этом исходное поле задается в двух файлах - двухкомпонентный вектор и отдельно третья компонента - файл со скалярным полем. Вывод осуществляется в один трехкомпонентный файл. При работе в цилиндрической системе координат, как и в других процедурах, при описании вектора вначале задается высота, потом радиус-вектор, угловая компонента задается в отдельном скалярном файле. При выводе компоненты печатаются в одном файле в следующем порядке: осевая, радиальная и угловая компоненты.
Для выполнения выбранной операции на текущей загруженной сетке (Вам будет предложено использовать загруженную сетку или установить новую) укажите файл с входным полем и введите имя файла для выходного поля, и в случае корректности исходных данных будут произведены необходимые вычисления.
В случае, если не выбрана сетка, то производится установка в качестве текущей сетки из файла, который требуется указать.
Методы вычисления дифференциальных величин
Укажите файл со входным полем и введите ограничения по объему подобласти, где будут производиться вычисления.
Данные задаются на структурированных трехмерных или двумерных сетках, в общем случае криволинейных и неортогональных. Структурированная (упорядоченная по индексам) сетка задается координатами узлов в декартовом пространстве или в меридиональной плоскости, если рассматривается осесимметричное поле. Трехмерная сетка делит рассматриваемую часть пространства на ячейки - восьмивершинники, а двумерная - на четырехугольники.
Программа позволяет работать в декартовой (трехмерный и двумерный случаи) и цилиндрической системах координат (в последнем случае поле задается в меридиональной плоскости). Все файлы сеток и полей содержат в первой строке размеры поля в стандартном порядке индексов - I, J, K. Последующие строки (их число равно произведению указанных размерностей) содержат значения скалярного поля (одно число), компоненты векторного поля (две или три компоненты; возможна работа с двумерными векторами, заданными на плоскости и трехмерными векторами, заданными как на плоскости, так и в пространстве) или координаты узлов сетки. Все вещественные числа в программе выводятся в экспоненциальном формате.
Величины в файле располагаются в определенном порядке, обусловленном удобством программирования на языке Фортран: быстрее всех изменяется первый индекс, медленнее - последний (величины, соответствующие ему, располагаются правее). При задании поля в цилиндрической системе координат роль первой компоненты выполняет высота, роль второй - радиус-вектор. Поля на сетке задаются одним из двух способов: либо в узлах сетки (первый способ), либо в центрах ячеек плюс в серединах ребер восьмивершинников, центрах граней граничных ячеек и угловых узлах (второй способ).
ВНИМАНИЕ! В текстовых файлах с исходными сетками и полями возможно использование запятых в качестве разделителей - они приравниваются к пробелам. Для использования данной возможности следует указать параметр /COMMA, однако в данном варианте загрузка файлов будет происходить медленнее.
Возможна загрузка сетки из файла в качестве текущей, при этом вычисляются ее геометрические параметры; возможно снятие этих установок.
При создании константного векторного или скалярного поля требуется указать имя выходного файла, размерность поля (если какая-либо сетка установлена в качестве текущей, берется ее размерность) и значения величин. ВНИМАНИЕ! В этих процедурах следует помнить о реальном способе реализации плоских расчетов в программе - через приписывание третьей компоненты к сетке и полям СЛЕВА (т.к. левый индекс по установленным стандартам изменяется быстрее). Поэтому в двумерном случае будут запрашиваться NJ- и NK- размерности, аналогично значения величин. В других местах программы от нелогичной нумерации удалось избавиться, однако в данных процедурах нашлись соображения в пользу "неудобного" способа ввода. Будьте внимательны несмотря на устойчивость программы к некорректному вводу !
Формирование константного скалярного поля
Действия аналогичны вычислению радиус-вектора
Действия аналогичны вычислению радиус-вектора
Для корректной отработки данной процедуры следует установить размеры обрабатываемого файла в качестве размеров расчетной области и указать ограничения в пределах данной области. Для собственно "вырезки" следует указать исходный файл и ввести имя для выходного файла.
При вычислении модуля вектора, скалярного или векторного произведений требуется указать на диске исходный файл(ы) и ввести имя выходного файла (полнота имени подразумевает наличие расширения).
Возможно использование формулы произвольной сложности с вызовом трансцендентных функций, см. Встроенный транслятор формул.
Для выполнения вычислительных операций с полями вводится число исходных файлов, на диске указываются все исходные файлы; вводится полное имя выходного файла и вычислительная формула, единая для всех компонент. Ссылки на значения данного исходного файла записываются в виде $#, где # - номер исходного файла в списке; например, для получения поля модуля разности между двумя векторными полями одинаковой размерности надо ввести формулу "abs($1-$2)" ; возможно использование не более семи исходных файлов.
Для формирования нового поля указывается сетка на диске, полное имя выходного файла и его тип: вектор или скаляр. Затем вводится нужное количество формул для каждой из компонент выходного файла. Абсцисса, ордината и аппликата в данной точке указываются ссылками вида x, y и z соответственно; в случае цилиндрической осесимметричной модели возможно использование ссылок r и z (см. Встроенный транслятор формул).
Возможность использования тех или иных букв для указания на координаты узлов сетки зависит от текущей установки системы координат. Для того чтобы установить иную систему координат взамен текущей, можно выбрать ее по команде смены размерности подменю управления расчетной областью (команда смены размерности включена только в расширенный вариант меню). Можно вызвать команду вычисления дифференциальной величины в соответствующей системе координат, но вычислений не производить, т.е. отменить производимые действия. Это приведет к нужному результату, т.к. все процедуры вычисления дифференциальных величин в начале своей работы принудительно устанавливают в качестве текущей требуемую систему координат.
Число компонент создаваемого файла определяется на данный момент также не самым удобным способом. Вы выбираете, какое поле будете создавать: векторное или скалярное. Число компонент векторного поля (3 в трехмерном варианте, 2 в двумерном и 3 в двумерном с поддержкой трехкомпонентных) зависит от текущей установки размерности, изменение которой описано выше.
Выполняется преобразование файла сетки/поля следующим образом: вычисляются значения в центрах ячеек, в результирующий файл выводятся также значения в в серединах ребер восьмивершинников, центрах граней граничных ячеек и угловых узлах. Таким образом, результирующий файл по каждому индексному направлению имеет размерность на единицу больше чем соответствующая размерность исходного файла.
Для проведения данного преобразования необходимо указать на диске исходный файл и ввести имя для файла - результата. ВНИМАНИЕ ! Преобразование производится только для целого поля без возможности использования пределов, поэтому иногда теоретически возможна нехватка памяти для данной операции.
Если Ваша сетка является файлом второго типа, т.е. данные заданы в центрах ячеек и всех соответствующих точках границы (файл такого формата можно построить с помощью процедуры осреднения по ячейкам), можно произвести обратное преобразование, восстановив узлы исходной сетки.
Для проведения данной операции необходимо указать на диске исходный файл и ввести имя для файла - результата. ВНИМАНИЕ ! Преобразование производится только для целой сетки без возможности использования пределов, поэтому иногда теоретически возможна нехватка памяти для данной операции.
Вы просто вводите выражение, разрешенное синтаксисом встроенного транслятора выражений, естественно, не используя букв-переменных, т.е. выражение однозначно рассчитывается в константу. После нажатия Enter при попытке расчета выражения либо выдается его числовое значение, либо сообщается об ошибке трансляции выражения.
В диалоговом окне выводится информация о доступных для расчетов размеров сетки (максимальный размер зависит от производимой операции, см. Оптимальное управление памятью). Далее указывается путь к файлам программы (программа, справочная информация и дополнительные файлы).
В списке-переключателе перечислены опции программы, которые можно переключать в процессе ее работы: проверка ошибок (замедляет работу программы, но повышает ее надежность, рекомендуется при обнаружении неполадок для поиска ошибки); флаг поддержки запятой в качестве разделителя в файлах с исходными данными (замедляет загрузку файлов) и указатель формата вывода (широкий формат - фиксированная ширина полей мантиссы и порядка, узкий - оптимальная форма записи числа в зависимости от его порядка, исключение лишних нулей).Там же устанавливается режим записи файла протокола (см. подробнее)
В списке-переключателе устанавливается режим экстраполяции данных при вычислении дифференциальных величин в поверхностном слое. Значения получаются "перетаскиванием" величины из ближайшей точки или линейным приближением по двум точкам вглубь по сеточной линии.
При выводе числовых величин всеми функциями программы используется значение максимальной ширины поля вывода как в экспоненциальном (столбчатом), так и экономичном формате. По умолчанию данная величина равна 15. Это значение, как и режим экстраполяции данных, можно изменять интерактивно в данном диалоге и в конфигурационном файле.
Управление некоторыми из данных ключей возможно при запуске программы (см. Параметры командной строки).
Программа запоминает установленные параметры в файле SVET.CFG, находящемся в одном каталоге с самой программой, и загружает эти установки при своем запуске в случае наличия на диске такого файла. Установки конфигурационного файла имеют более высокий приоритет, нежели параметры командной строки; запоминание установок в SVET.CFG производится при их изменении в диалоге настройки.
Файл SVET.CFG имеет текстовый формат и может выглядеть так:
+;Error checking Проверка ошибок
-;Comma support Поддержка запятых
+;Short value format Экономичный формат
A;Log state - None,Overwrite,Append Режим вывода протокола
HELPSVET.HLP;help file name Имя файла справки
-;Zero gradient extrapolation Режим экстраполяции
13;Output field width Ширина поля вывода
NC;User defined DOS command Задаваемая пользователем ДОС-команда
Значения флагов задаются представленными в комментариях вариантами, возможно указание имени файла из программного каталога, который будет использоваться при вызове справочной системы; данная установка не изменяется из программы, в диалоге настройки параметров можно лишь посмотреть ее значение (узнать путь к файлу справочной системы). Основная документация к программе не распространяется отдельным текстом во избежании дублирования либо несвоевременности информации об обновлениях, поэтому содержательная информация о функциях программы сосредоточена только в данной гипертекстовой справочной системе.
В новой версии программы в диалог выводится информация о заданной пользователем команде ДОС и флаге необходимости ссоздания трассировочных файлов в вычислительных процедурах (вывод промежуточных сеток и полей, отладочной информации - см. подробнее "Недокументированные" возможности программы).
Содержит информацию о текущей установленной размерности (возможные варианты см. в пункте Поддерживаемые размерности). Выводится имя файла текущей сетки и ее размер (или размер подобласти, в случае частичной загрузки). Отображается информация об установленных ограничениях по подобласти, если они есть: размер расчетной области и ограничения по ней; сообщается о выполняемой в данный момент операции и уровне ее выполнения (в процентах).
В процессе вычислений сюда выводится протокол - информация обо всех производимых действиях.
Возможно дублирование протокола в файл (см. подробнее)Протокол может выглядеть, например, следующим образом:
Calculation of divergence
3D cartesian coordinates
Cell-vertex (FDM) data
Input G:\...D\3D_GRID.DAT
Output G:\...OBAL\3D\1.VAL
SVET: summaring and averaging,
calculation on the boundary
(1st boundary - minimum of I):
Input grid: G:\...AL\3D\CUB.MSH
Input field: G:\...AL\3D\CUB.XYZ
Surface limits: 1-4, 1-3
Summary area: 0.000024
Summary X-component: 0.24E-7
Summary Y-component: 0.72E-7
Summary Z-component: 0.48E-7
Value of summary vector: 0.897998E-7
Mean X-component: 0.001
Mean Y-component: 0.003
Mean Z-component: 0.002
Value of mean vector: 0.003742
Combine fields
Expressions:
[1,1]*3
[2,2]-[1,1]
Input file #1: G:\...BAL\3D\10.UVW
Input file #2: G:\...BAL\3D\11.UVW
Output field with size 512
Output file G:\...LOBAL\3D\5.UV
Таким образом выводится информация о вычислении дифференциальных величин, суммировании-осреднении и выполненных алгебраических преобразованиях соответственно.
При выполнении различных сервисных операций размер оперативной памяти на Вашем ПК не имеет значения, и для работы достаточно лишь необходимого пространства на диске для выходного файла. Но при выполнении дифференциальных операций, суммировании, осреднении и вычислении потоков наличие большей оперативной памяти выигрышно сказывается на производимых операциях. Кстати, программа использует защищенный режим процессора, поэтому для ее успешной работы желателен больший размер оперативной памяти (от 1 МБайт, чем больше, тем лучше). Также необходимо наличие на диске в доступном для поиска месте файлов, обеспечивающих работу в защищенном режиме.
Все дальнейшие рекомендации не касаются Вашей работы, если размер используемой сетки меньше минимального размера доступной для расчетов памяти (сообщается по команде Settings вместе с минимальным и максимальным размером массива - использование наименьших массивов требуется для вычисления потока через внутреннюю сеточную поверхность, а использование наибольших массивов возможно при осреднении скаляра в объеме). Однако в противном случае иногда может создаваться впечатление, что памяти недостаточно, а это не всегда соответствует действительности.
Следует иметь в виду, что для выполнения вычислительных операций требуется некоторое количество (обычно трехмерных) массивов одинаковой размерности, а их количество зависит от производимой операции.
Загрузка текущей сетки (включающая вычисление векторов-поверхностей граней ячеек и объемов ячеек) облегчает работу, при многократном использовании одной и той же сетки экономит время и обязательно требуется для вычисления дифференциальных величин, но занимает в памяти 13 массивов.
Для оптимальной работы полезно знать, сколько массивов требуется для той или иной функции. Кроме загрузки сетки, для вычисления дифференциальных величин требуется от 4 до 6 массивов (первое число в случае вычисления градиента, второе в остальных случаях; в дальнейшем первое число означает загрузку скаляра, второе - вектора).
В процедурах пакета AverTool загрузка сетки занимает, как всегда, 13 массивов, хотя реально требуется меньше. Суммирование/осреднение в объеме требует 4 + от 1 до 3 массивов (4 под сетку, 1 - для скаляра и 3 - для вектора), на граничной поверхности - 12 + от 1 до 3, на внутренней сеточной поверхности - 12 + от 4 до 7. Вычисление потока через граничную поверхность требует 12 + 4 массива, через внутреннюю сеточную поверхность - 12 + 7 массивов. Меньше всего памяти требуется для преобразования расчетного поля скаляра в выводное - 2 массива.
Возможен запуск программы с параметром /ERROR, который может помочь при отладке программы, при этом в случае возникновения ошибки времени выполнения будет выдано дополнительное диагностическое сообщение о процедуре, в которой произошла ошибка (Error indicator: ...), а также стандартное сообщение об ошибке, помогающее локализовать ее в исходном тексте (Runtime error ### at position ####:####).
Параметр /$$$ предназначен для формирования файлов *.$$$, в которые производится вывод промежуточных результатов работы расчетных процедур (при отладке программы). Такие файлы создаются в следующих случаях:
AVERTOOL.$$$ - информация о процедурах пакета AverTool
SVTUNIT5.$$$ - информация о работе процедур "5-го модуля" -
суммирование/осреднение
SI-1.$$$, SJ-1.$$$, SK-1.$$$
SI-2.$$$, SJ-2.$$$, SK-2.$$$
SI-3.$$$, SJ-3.$$$, SK-3.$$$ - вектора-площадки граней ячеек - при их
вычислении
grid_X.$$$
grid_Y.$$$
grid_Z.$$$ - сетка после ее загрузки
VOL.$$$ - объемы ячеек
IM_FIELD.$$$
IM_FLD2.$$$ - "промежуточные" поля с вычисленными дифференциальными
величинами ДО интерполяции, вычисленные по методу FDM и при задании данных в
центрах ячеек соответственно,
IM_GRID.$$$ - соответствующая первому полю сетка, второму полю будет
соответствовать выводная сетка на единицу больших размерностей, нежели
исходная (в трехмерном случае, в двумерном из поля нужно вырезать один слой)
PRE_UI.$$$, PRE_VI.$$$, PRE_WI.$$$,
PRE_UJ.$$$, PRE_VJ.$$$, PRE_WJ.$$$,
PRE_UK.$$$, PRE_VK.$$$, PRE_WK.$$$ - входное поле после предварительной
интерполяции при вычислении дифференциальных величин по второму методу
Программа создает временные файлы с расширением *.SVT в своей директории, по окончании работы программы такие файлы автоматически удаляются.
Запуск программы с параметром /PRIVATE расширяет ее функциональные возможности (появляются дополнительные пункты меню), добавляемые операции исключены по соображениям логической стройности из окончательного варианта интерфейса, и их использование связано с личными пристрастиями создателя.
В файле системной конфигурации SYSTEM.CFG записывается информация о регистрации и количестве запусков программы, эту информацию (имя, на которое зарегистрирована программа, и число запусков) можно узнать по команде Ctrl+F1. За информацией об условиях регистрации обращайтесь к автору. В этом файле сохраняется и другая системная информация, например, содержимое протоколов, связанных со строками ввода.
В выражении допустимо использование любого уровня вложенности скобок, арифметических операций (+,-,*,/ и ^ -возведение в степень) и стандартных функций, аргументы которых указываются в скобках: ln(), lg() (десятичный логарифм), sin(), cos(), tg(), exp(), arcsin(), arccos(), arctg(), sqrt() (квадратный корень), cbrt() (кубический корень), fact() (факториал целого числа) и abs() (модуль числа). Числовые константы допускается записывать в произвольной форме (в том числе и экспоненциальной); возможно использование стандартной константы: число Пи = 3.141592654, указывается: pi.
ВНИМАНИЕ ! в новой версии произведены некоторые изменения, связанные с работой встроенного транслятора. Во-первых, он подключен к стандартному окну ввода числа, т.е. при вводе можно набирать не только числовую константу, но и некоторое однозначно вычисляемое математическое выражение, синтаксис которого рассмотрен выше.
Сообщения транслятора об ошибках
1: Unexpected symbol - нераспознанный символ в выражении,
скорей всего символ просто не на своем месте, т.к. при вводе
выражения автоматически контролируется принадлежность множеству
допустимых символов;
2: Illegal parenthesis using - некорректное использование
скобок, скорей всего, не хватает соответствующей открывающей или
закрывающей круглой (!) скобки;
3: Illegal value format - некорректная запись числовой
константы - проверьте, не перешли ли Вы на шестидесятиричную
систему счисления древних индейцев !
4: Value conversion error - ошибка преобразования числовой
константы - с ее форматом явно что-то не то...
5: Unexpected power symbol - символ степени ^ найден не на
своем месте - короче, в данной ситуации он неприменим;
6: Illegal call of power function - некорректный вызов
возведения в степень, например, отрицательное число возводится в
дробную степень;
7: Unexpected "*" or "/" symbol - кто-то из умножения или
деления оказался не к месту;
8: Division by zero - всего-то деление на нуль;
9: Could not find a numbers - расшифровывали-расшифровывали
выражение, и не нашли в нем ни одного числа;
10: Illegal expression - выражение в целом некорректно -
чтобы получить эту ошибку, надо сильно постараться;
11: Unexpected end of expression - неожиданный конец
выражения - это если в его конце приписать поздравление с 8
марта;
16:Bad argument number - некорректный номер аргумента, или,
скорее всего, неверное число аргументов.
101-112: Illegal call of $$$ function - некорректный вызов
функции $$$ - скорей всего, недопустимый аргумент при вычислении
значения функции, где в качестве $$$ могут быть:
1: sqrt - квадратный корень неотрицательного аргумента;
2: cbrt - кубический корень;
3: fact - факториал целого положительного числа;
4: arcsin - арксинус числа не большего единицы по модулю;
5: arccos - арккосинус того же, что и в арксинусе;
6: arctg - арктангенс;
7: exp - экспонента;
8: ln - натуральный логарифм положительного числа;
9: lg - десятичный логарифм положительного числа;
10: sin - синус аргумента в радианах;
11: cos - косинус того же самого;
12: tg - тангенс (без слов);
13: abs - модуль;
Встроенный компилятор формул
Встроенный транслятор выражений, используемый в программах МАТРИЦЫ и SOLVER, заменен на компилятор для увеличения скорости работы программ (данное нововведение реализовано во всех версиях SVET'а).
Что это значит с точки зрения программиста ? Раньше при вычислении нового значения выражения каждый раз (даже при простом изменении аргумента функции в SOLVER'е) выражение расшифровывалось транслятором и постепенно вычислялось в процессе дешифровки. Налицо некоторая неэффективность, отрицательно сказывавшаяся на быстродействии; но сделать было фактически ничего невозможно, т.к. основное достоинство транслятора - его универсальность, т.е. пригодность для вычисления ЛЮБОГО выражения, что и обеспечивалось.
Однако, оказалось возможно заставить транслятор вместо вычисления выражения при расшифровке составлять нечто вроде программы на условном языке, записывая в виде понятных команд всю последовательность действий по вычислению значения функции в конкретной точке. Поэтому расшифровка производится только один раз, а при циклических вычислениях вызывается лишь процедура выполнения внутренней программы, подсчитывающая результат.
Чем это все обернется для пользователя ? Во-первых, возрастет скорость работы (в несколько раз !). И во-вторых, как на этапе расшифровки, так и при вычислении выражения могут возникнуть новые, специфические ошибки, обусловленные особенностями работы компилятора.
Calculation memory overflow - переполнение вычислительной
памяти: введенное выражение слишком сложно;
Program memory overflow - переполнение программной памяти:
Ваше выражение слишком сложно;
There is no function - введенное выражение равно константе,
т.е. не зависит от заявленных аргументов; в данном случае компилятор не может
создать программу-описание формулы, поэтому если Вы не можете другим способом
реализовать данное действие (например, данная ошибка возможна при попытке
формирования константного поля по данной сетке, в этом случае воспользуйтесь
процедурой формирования стартового поля и другими алгебраическими
процедурами), попробуйте "хитростью" обойти программу - написать что-нибудь
вроде 1+X-X;
Couldn't find any program - при попытке вычисления не
найдена программа - каким-то образом Вы пропустили момент ее
создания, это возможно если программа не перехватила предыдущую ошибку;
ВНИМАНИЕ ! Не стоит жалеть места и представлять константы в выражении в виде готовых чисел, а не более наглядных выражений - компилятор составляет оптимальную программу, и не будет делать одно и то же несколько раз подряд: например, смело заменяйте 0.333... на 1/3 или 3^(-1).
В программе принята стандартная нумерация граничных и внутренних сеточных поверхностей, а именно: для внутренних поверхностей - первая поверхность при постоянстве индекса I, вторая - для индекса J, третья - для К. Граничные поверхности нумеруются от 1 до 6 в том же порядке индексов, но для каждого индекса вначале рассматривается поверхность с его минимальным значением, затем - с максимальным.
Возможен запуск программы (файл SVET*.EXE) с параметрами: // служит для указания директории с файлами справки и конфигурации, если они находятся не в одной директории с исполнимым файлом; пример использования данного параметра: //D:\SVET. Возможно использование параметра /COMMA для эквивалентности запятых пробелам во входных файлах. Параметр /SHORT задает сокращенный формат вывода файлов, по умолчанию используется расширенный формат. В сокращенном данные выглядят оптимально, и размера он меньшего, но при использовании расширенного формата числа располагаются строго по столбцам.
В файле системной конфигурации программы (SYSTEM.CFG) сохраняются данные протоколов строк ввода диалоговых окон, так что при перезапуске программы она "помнит" данные, введенные в диалогах (числа, формулы, имена файлов). Естественно, при долговременной работе программы этот файл заполняется "мусором" - множеством неиспользуемых данных. Возможна очистка протоколов ВСЕХ строк ввода программы, если запустить ее с параметром /CLEARHISTORY.
При остановке программы по т.н. ошибке времени выполнения выдается диагностическое сообщение и взамен стандартного номера ошибки и адреса в программе сообщается о ее характере. В случае, если ошибка не распознана, выдается лишь ее номер (Unknown error #$$$).
Normal termination - нормальное завершение;
File not found - файл не найден;
Path not found - путь не найден;
Too many files open - слишком много
открытых файлов;
File is locked - файл недоступен;
Error in file descriptor - ошибка дескриптора файла;
Error in file handler - ошибка файловой переменной;
Error in drive number - ошибка в номере диска;
Couldn't erase current directory - невозможно стереть
текущую директорию;
Couldn't rename to other drive - невозможно переименование
на другой диск;
Error reading from disk - ошибка чтения с диска;
Error writing to disk - ошибка записи на диск;
No link between file and file descriptor - нет связи между
файлом и файловой переменной;
File wasn't open - файл не был открыт;
File wasn't for input - файл не был
открыт для ввода;
File wasn't open for output - файл не был открыт для
вывода;
Error in value format - неверный
числовой формат;
Disk is locked for writing - диск защищен от записи;
Unknown unit - неизвестный модуль;
Disk not ready - диск не готов;
Unknown command - неизвестная команда;
Error in checksum - неверная контрольная сумма;
Error in disk structure length - ошибка в длине структуры
при работе с диском;
Disk search error - ошибка поиска на диске;
Unknown drive type - неизвестный тип носителя;
Sector not found - сектор не найден;
Out of paper on printer - нет бумаги на принтере;
Device writing error - ошибка записи на устройство;
Device reading error - ошибка чтения с устройства;
Hardware error - ошибка оборудования;
Division by zero - деление на нуль;
Range check error - выход за границы типа (массива);
Stack overflow - переполнение стека;
Not enough memory - недостаточно оперативной памяти;
Error in pointer operation - ошибочная операция с
указателем;
Floating point overflow - переполнение вещественного;
Lost floating point - потеря точности в вещественном;
Floating point error - ошибочная операция с вещественным;
Overlay controller not found - нет диспетчера оверлеев;
Overlay file reading error - ошибка чтения оверлейного
файла;
Ariphmetic overflow error - ошибка целочисленной
арифметики;
General protection fault - глобальная ошибка защиты,
некорректное управление распределением памяти в защищенном
режиме работы процессора.
Необходимо выбрать границу и ввести ограничения по области (части) этой границы, где будут производиться вычисления.
Первое диалоговое окно выбора граничной поверхности аналогично таковому при выборе внутренней сеточной поверхности
Необходимо выбрать тип внутренней линии (поверхности) и ограничения по ее длине (площади), где будут производиться вычисления, а также указать номер этой самой внутренней линии (поверхности).
Интерфейс программы построен средствами пакета Turbo Vision, поэтому ее внешний вид и принципы работы идеально совпадают с продуктами фирмы Borland (системами программирования Turbo Pascal, Turbo C и многочисленными приложениями, при разработке которых использован данный пакет. Особенности имеют место лишь в общем оформлении программы (см. описание окна протокола и статусного окна) и оформлении отдельных диалоговых окон.
Например, стандартный диалог выбора файла или ввода имени вновь создаваемого модернизирован с учетом специфики программы: в нижней его части отображается содержимое первых двух строчек файла, что позволяет определить тип и размерность поля либо сетки, если он удовлетворяет стандартам программы на тип исходных данных.В окончательный вариант программы включено локальное меню, вызываемое по нажатию правой кнопки мыши или комбинацией Alt+F10. Меню содержит наиболее используемые команды, например, просмотр последнего выходного файла.
В программе реализована стандартная возможность Turbo Vision - деактивация (обеспечение недоступности) некоторых команд в зависимости от состояния параметров программы, пункты меню в этом случае выделяются цветом. Специфика состоит лишь в работе механизма блокировки команд.
Введено понятие блока вычислительных команд, к ним отнесены операции вычисления дифференциальных величин, суммирования, осреднения и вычисления потоков. Эти команды заблокированы, если установлены пределы по размерам расчетной подобласти (например, при формировании стартового поля; чтобы снять ограничения, вызовите команду считывания размера расчетной области из внешнего файла, но сам файл не указывайте).
Вычисление потока через часть сеточной поверхности в двумерном случае возможно только при установленной поддержке трехкомпонентных векторов на плоскости.
Команды принудительного снятия установок размера расчетной области и ограничений по ее части доступны только при наличии самих установок.
Формирование стартового поля возможно только при установленных размерах расчетной области.
Если не сделано установки текущей сетки, введите размеры поля. После этого введите необходимые числовые выражения для компонент формируемого поля.
В первом варианте исходное поле задает значения в узлах текущей сетки, в процессе вычисления получаются значения в центрах ячеек, а затем в результате интерполяции получается поле окончательных значений - в узлах исходной сетки. Это - метод FDM (Cell-Vertex data).
Во втором варианте в качестве текущей сетки следует установить основную (расчетную) сетку (такой файл либо имеется, либо его можно получить с помощью соответствующей функции меню Other из выводной сетки). Исходное поле имеет на единицу большие размерности, т.е. содержит величины центров ячеек и граничных точек: вершин, граней и ребер (см. Размерности и форматы файлов). В процессе предварительной интерполяции поле переносится на центры граней, затем вычисляется результирующее поле. Значения в его точках и есть значения во внутренних узлах соответствующей выводной сетки для текущей установленной, а значения в граничном слое получаются экстраполяцией (несколькими способами, способ регулируется в диалоге настройки параметров программы (см. соответствующую главу). Таким образом, полученное поле аналогично исходному и задано на выводной сетке, соответствующей установленной в качестве текущей расчетной сетке.
Указывается имя выходного файла, потом в диалоге задаются параметры сетки, после чего происходит формирование и запись файла. В диалоге для каждой из размерностей следует задать три параметра из четырех (минимальное и максимальное значение величины, шаг сетки и ее размер) и указать, значение какого из четырех параметров неизвестно, т.е. будет вычислено по остальным трем. Для проверки установленных значений предназначена команда Test, по которой происходит пересчет неизвестных параметров с установкой полученных значений в поля диалогового окна.
скалярно-векторный инструментарий, оболочка для работы с данными на структурированных сетках (вариант Turbo Vision).
Авторы: Е.М.Смирнов и А.Левченя, спасибо В.В.Рису за помощь в создании программы
Вы можете выбрать размерность полей, с которыми будете работать, или закончить работу с программой.
Команда входит в меню Domain и имеет самый высокий приоритет в этом меню - производится сброс установок текущей сетки и пределов по расчетной подобласти с установкой введенных ограничений, лишь при их вводе по возможности поля диалоговых окон заполняются численными значениями предыдущих установок
Необходимо в том случае, если Вы хотите работать только с ее частью.
Здесь, как и в других аналогичных диалоговых окнах задания каких-либо ограничений по индексам, используются строки ввода для задания числовых значений, кнопки для подтверждения корректности ввода и выхода из диалога без сохранения введенных данных. Конкретно в данном диалоге введена дополнительная кнопка сброса ограничений до максимально возможных значений. Команда входит в меню Domain и может использоваться совместно с командой загрузки сетки (неявно вызываемой при отсутствии установки текущей сетки, если Вы запускаете при этом вычисление дифференциальных или интегральных величин).
В первом диалоговом окне при отсутствии установленной в качестве текущей сетки следует указать ее размеры.
Во втором диалоговом окне указываются пределы по расчетной области.
При необходимости снять ограничения ("растянуть" их на всю область) следует нажать кнопку Full (полный размер), при этом в строки ввода будут подставлены граничные значения. Если эти значения и будут установлены кнопкой OK, всякие ограничения будут сняты.
Загрузка сетки, считывание размеров расчетной области из внешнего файла, установка ограничений по размерам расчетной области.
Эти команды согласованы между собой и взаимодействуют при необходимости с еще двумя недоступными из меню (в его стандартной конфигурации) - команды сброса текущих установленной сетки и пределов по расчетной подобласти.
Протокол выводится в рабочее окно, в начале его указывается версия программы (дата ее создания) и дата и время создания протокола. В таком виде протокол может дублироваться в файле SVET.LOG, находящемся в каталоге программы, причем управление возможными опциями сосредоточено в диалоге настройки параметров программы. Протокол можно не выводить в файл, можно перезаписывать файл (создавать новый) при каждом запуске программы, протокол можно обновлять, добавляя новые данные в конец файла.
В отличие от стандартного файлового окна, реализованного средствами Turbo Vision, создаваемый объект позволяет только просматривать дисковые файлы, не редактируя их, однако возможен корректный просмотр файлов произвольного размера, в то время как стандартный Turbo Vision - редактор работает только с файлами не больше 64К. Диалог выбора файла аналогичен команде открытия файла для редактирования (см. соответствующую статью)
Данная команда входит в расширенный вариант меню
Данная команда входит в расширенный вариант меню
(с добавлением некоторых "ненужных", но иногда полезных команд) загружается при запуске программы с параметром /PRIVATE (см. подробнее)
При выполнении сервисных операций над полями требуется ответить на запросы, связанные с выбором исходных файлов, указать имя (имена) выходных файлов и при необходимости ввести числовые значения параметров преобразования
В первый блок алгебраических операций включены реализованные через единую процедуру обработки полей с добавлением интерфейсных элементов, облегчающих работу с процедурой. Необходимо лишь указать входные файлы, ввести имя выходного файла и при необходимости ввести числовые значения масштабирующих и сдвиговых констант, все остальные действия производятся автоматически.
Остальные процедуры аналогичны с точки зрения интерфейса
преобразование полей на разных типах сеток, формирование базовых полей для последующих преобразований
Эта команда доступна в двумерном варианте программы (подробнее о меню). См. также подробнее о поддерживаемых размерностях и форматах файлов
Программа представляет собой совокупность двух блоков для работы на трех- и двумерных областях, выбор варианта программы производится в стартовом диалоге и определяет структуру меню: некоторые команды доступны только в двумерном варианте.
Описание требуемых действий
Описание требуемых действий
Описание требуемых действий
Описание требуемых действий
Описание требуемых действий
Описание требуемых действий
Описание требуемых действий
Описание требуемых действий
Описание требуемых действий
Описание требуемых действий
Для работы данной процедуры необходимо наличие установки пределов по расчетной области - ее размер и будет использован в качестве размера результирующего поля.
Аналогична ранее реализованной команде.
В первом диалоге надо указать число исходных файлов (от 1 до 7) и количество компонент результирующего поля (от 1 до 3). Затем выбираются все исходные файлы, вводятся формульные выражения для компонент результирующего поля и имя выходного файла.
Формулы описываются по правилам встроенного транслятора формул, ссылки на аргументы оформляются в виде [N,M], где первое число обозначает номер исходного файла, а второе - номер компоненты в нем. Таким образом, формула скалярного произведения двух плоских векторов может быть реализована так: [1,1]*[2,1]+[2,1]*[2,2], хотя в программе есть отдельная функция вычисления подобных выражений.
Сообщается о следующих ошибках при задании параметров обработки файлов:
Error in value link - ошибка в записи ссылки на число,
Too many arguments - слишком много аргументов в формуле,
Error: ... - конкретная ошибка трансляции формулы,
Too high file number - слишком большой номер обрабатываемого файла,
Too high component number - слишком большой номер компоненты файла
В последних версиях программы сделаны принципиальные изменения в "стратегии" работы интерфейса, на которые следует обратить внимание.
Полностью устранена необходимость наличия отдельной команды загрузки сетки - перед выполнением дифференциальных операций или вычислением интегральных величин при отсутствии текущей установки требуется загрузка сетки, а при ее наличии запрашивается, необходимо ли загрузить другую сетку или использовать текущую установку; отдельная команда выбора размерности имеет смысловую нагрузку, например, перед формированием поля по сетке и формуле (формулам), при наличии установки цилиндрических координат вместо переменных x, y используются обозначения z и r.
Устранена необходимость наличия отдельных команд сброса текущих установок сетки и пределов по расчетной области; такие команды были необходимы, например, перед началом работы с расчетной областью нового (произвольного) размера, если перед этим была загружена сетка (из которой, может быть, была выделена подобласть в качестве расчетной). Для того чтобы "сбросить" обе текущие установки, можно вызвать процедуру загрузки в качестве установки размерности данных внешнего файла, при этом в случае наличия текущих установок будет запрошено подтверждение; но новый файл не указывать - старые установки будут "сброшены", а новых сделано не будет.
Ни в дифференциальных операциях, ни в интегральных не поддерживается работа с ограничениями по расчетной области. Вначале она организовывалась через специальные файлы пределов, что было связано с ограниченными ресурсами ПК, затем ограничения при необходимости задавались интерактивно, но чтобы не усложнять структуру программы, реализованы они были только в некоторых процедурах. Теперь для единообразия поддержка таких ограничений устраняется полностью, а при необходимости может использоваться процедура "вырезки" подобласти сетки или поля для подготовки к расчетам необходимой их части.
Программа может выводить данные в двух форматах - столбчатом и экономичном. В первом случае данные записываются в столбец стандартно заданной ширины (например, 15) в экспоненциальной форме с фиксированным количеством цифр в мантиссе и порядке, со всеми "лишними" нулями. В экономичном формате ограничение на размер мантиссы сохраняется, а число в целом записывается либо в экспоненциальной форме, либо в форме с фиксированной десятичной точкой в зависимости от его величины, но в любом случае без "лишних" нулей, столбцы разделяются одним пробелом. Такая запись получается сокращенной, но столбцы имеют различную ширину.
Данная процедура позволяет, указав в качестве исходного текстовый файл с числовыми данными (естественно, в т.ч. в любом из вышеперечисленных форматов), преобразовать этот файл в конкретный формат: требуется указать имя выводного файла и формат записи данных.
Демонстрационная версия как предварительная содержит в меню некоторые пока нереализованные процедуры, некоторые возможности программы доступны только в зарегистрированной версии, обращайтесь за технической поддержкой. В демонстрационной версии заблокирована работа с большими объемами оперативной памяти.
В пакет программы в процессе ее работы входят следующие файлы:
SVETTV1.EXE - основная программа,
SVET.CFG - текстовый конфигурационный файл,
SYSTEM.CFG - бинарный конфигурационный файл,
HELPSVET.HLP - файл справочной системы,
SVET.LOG - файл протокола.
За технической поддержкой обращайтесь к автору, Левченя Александру,
E-mail: levchenya@aerofmf.stu.neva.ru
WWW: http://aerofmf.stu.neva.ru/~levchenya/svet/
На данной интернет-странице представлена развернутая документация по программе: принятые соглашения, возможности программы, математическая база - вычислительные формулы и их реализация, форматы файлов и другая информация.
В текстовом окне просмотра открывается файл, выбранный в соответствующем диалоговом окне; в отличие от стандартного окна просмотра файла, реализованного встроенными средствами Turbo Vision, возможен просмотр файла произвольного размера.
В процессе работы программы при задании некорректных параметров процедурам возможно получение различных сообщений об ошибках
В различных вычислительных и алгебраических процедурах в результате некорректного ввода исходных данных (при вычислении дифференциальных величин, выполнении операций суммирования/осреднения и различных сервисных операциях) возможно получение сообщений о недопустимом формате файлов или размере исходной области, также возможно получение сообщений о недопустимом формате файлов или размере исходной области, при вводе ограничений по области вычислений сообщается об ошибочном по каким-то причинам значении ограничителя, в случае необходимости использования в процедуре нескольких файлов с одинаковым размером сетки (поля) при нарушении этого условия выдается соответствующее предупреждение.
Выдается предупреждение о невозможности работы с данной сеткой, если хотя бы один из ее размеров меньше 3.
При выполнении произвольных алгебраических операций над полями в целом или их покомпонентной обработке возможно получение специфических сообщений об ошибках, связанных с некорректным управлением встроенным транслятором формул.
В конфигурационном фале (см. просмотр и изменение параметров программы) можно задать ДОС-команду (например, вызов программы оболочки NC - Norton Commander), запуск которой будет производиться по команде подменю File
Здесь находятся команды запуска пакета FLAG (FLow Analysis Graphics), вызывающие программы визуализации полей и сеток. Команды включены в расширенный вариант меню и доступны только зарегистрированным пользователям; при регистрации кроме получения пароля доступа к расширенным возможностям программы Вы получите программы пакета ФЛАГ и инструкцию по их установке.