Текст
                    лгоритмы
и алгоритмические
языки
ПАКЕТЫ
ПРИКЛАДНЫХ
ПРОГРАММ
Системное
наполнение


АКАДЕМИЯ НАУК СССР ВЫЧИСЛИТЕЛЬНЫЙ ЦЕНТР Алгоритмы и алгоритмические языки ПАКЕТЫ ПРИКЛАДНЫХ ПРОГРАММ Системное наполнение издать: льство «и а у ка» МОСКВА 1984
УДК 519.6 Пакеты прикладных программ. Системное наполнение. М.: Наука: 1984. (Сер. Алгоритмы и алгоритмические языки). Статьи сборника посвящены разработке проблемно-ориенти¬ рованного программного обеспечения вычислительных машин — пакетов прикладных программ. Рассматриваются вопросы си¬ стемного и функционального наполнения пакетов, предлага¬ ются инструментальные системы, предназначенные для изго¬ товления пакетов программ, описываются конкретные пакеты, ориентированные на решение задач математической физики. Для инженеров и программистов, работающих в области программного обеспечения сложных расчетов. Редакционная коллегия: А. А. САМАРСКИЙ (главный редактор), А. А. АБРАМОВ (зам. главного редактора), Ю. Г. ЕВТУШЕНКО, В. Г. ИВАНОВА К. А. КАРПОВ (зам. главного редактора), В. Я. КАРПОВ, В. В. КОБЕЛЕВ, А. Н. КОНОВАЛОВ, Д. А. КОРЯГИН, В. М. КУРОЧКИН (зам. главного редактора), Э. 3. ЛЮБИМСКИЙ, И. Н. МОЛЧАНОВ, Е. С. НИКОЛАЕВ, И. В. ПОТТОСИН, И. В. СЕРГИЕНКО, А.-И. А. СТАНЕВИЧЮС (ответственный секретарь), П. И. ЧУШКИН Рецензенты: Ю.М. ДАВЫДОВ, Ю.П. ПОПОВ „ 1702070000-548 П 042(02)-84 142-84-IV © Издательство «Наука», 1984 г.
УДК 519.682 ТРЕБОВАНИЯ К ЯЗЫКУ СПЕЦИФИКАЦИЙ ПАКЕТОВ ПРИКЛАДНЫХ ПРОГРАММ М. М. Бежанова В работах по технологии и формализации процессов проекти¬ рования сложных программных систем [1—13] основное внима¬ ние уделяется рассмотрению их в развитии, преемственности разных типов проектирования. Это актуально для крупных проектов, длительных по времени разработки и вовлекающих большое число разработчиков. Пакеты прикладных программ (ППП), как правило, не явля¬ ются столь крупными проектами. Для них актуальным является признание важности самой стадии проектирования. Здесь доста¬ точно пока рассматривать один, от силы два этапа проектирова¬ ния. Главное — создание языковых и программных средств проектирования, удобных и доступных разработчикам ППП. 1. СПЕЦИФИКАЦИЯ ППП Точное документирование проектных решений при разработке ППП особенно существенно ввиду объема и сложности работы. Если даже каждое проектное решение простое, то при наличии большого числа таких решений необходимо их точное описание. Язык спецификаций, как правило, имеет точный синтаксис, дающий возможность автоматически анализировать и интерпре¬ тировать написанные на нем тексты. Термин «спецификация» используется в различных смыслах, что приводит к недоразумениям. При рассмотрении проекта программной системы под спецификацией понимается точное описание используемых понятий, действий и требований. Как отмечается в [14], существует два вида спецификаций. Первый из них ориентирован на определение действий, функций и описывает как единое целое группу операторов или параметризованное выражение. Такая спецификация задается описанием входа- выхода и отображением входных значений в множество выход¬ ных. Второй вид спецификаций ориентирован на абстракции данных. Главным здесь является спецификация класса данных, над которым действует группа операций. И в том, и в другом случае полезно рассматривать всю группу как мультипроцедур- ный модуль. Это позволяет скрыть от других модулей всю ин¬ формацию о взаимодействиях внутри группы. 3
Спецификация как абстрактное математическое описание не¬ которого понятия не обязательно однозначно определяет способ его программирования. Все методы спецификаций в [14] разбиты на пять категорий. Основой такой классификации является специфика применяемо¬ го формального аппарата. Имеющийся опыт спецификации систем реального времени [3, 4], систем обработки данных [5—9] и трансляторов [11] пока¬ зывает, что для каждой из таких систем создается свой аппарат формализации, в котором выбирается за основу какой-либо ба¬ зовый класс понятий. Выделяется четыре класса базовых понятий: данные, схемы управления, функции (операции), внешние требования. Рассмотрим в качестве одного из типов систем ППП в области вычислительной математики и ее приложений. Анализ их пока¬ зывает, что при спецификации таких систем недостаточно исполь¬ зовать (или считать главным) лишь один класс понятий. На выбор используемых понятий при спецификации системы влияют такие факторы, как предметная область (т. е. некоторая область вычислительной математики и ее приложений); способ построе¬ ния и использования пакета (характер исполнения); степень проработанности (детализации) операций (функций); уровень проектирования (в иерархии этапов проектирования). В зави¬ симости от конкретных условий проектирования выбирается то или иное подмножество специфицируемых понятий. Спецификация должна быть выполнена на уровне понятий, а не их реализаций, уровень же конкретизации понятий может меняться при детализации проекта. В качестве примера можно привести группу конкретизируемых понятий из класса операций. В процессе уточнения на последовательных этапах проектирова¬ ния специфицируются следующие понятия: уравнение I метод решения (математическое описание) I алгоритмы решения (порядок вычислений) I модуляризация алгоритмов (выделение отдельных модулей, уточнение использования известных функций, алгоритмов и операций преобразования и т. п.) I выделение программных компонент (функций, процедур, описаний данных — в терминах выбираемого языка программирования, использование компонент базового ПО). 2. ОПИСАНИЕ МОДЕЛИ СИСТЕМЫ Система программирования на стадии проектирования пред¬ ставляется некоторой моделью. В процессе проектирования модель трансформируется — уточняется, конкретизируется, по¬
является несколько ее представлений. Практика показывает, что при разработке ППП естественнее рассматривать процесс транс¬ формации как непрерывный, не выделяя обязательные уровни конкретизации. В каждый момент конкретизация отдельных частей модели может быть различна, важно, чтооы при этом сохранялась информация о предыдущих поколениях частей модели и вертикальные связи, позволяющие отслеживать их преемст¬ венность. Средством описания модели системы программирования явля¬ ется некоторый язык спецификаций. Анализ языков специфика¬ ций [14] показывает, что существует несколько подходов в описании спецификаций. Один из них состоит в использовании не¬ большого числа формализмов из уже существующих (математичес¬ ких) дисциплин или специально разработанных для использова¬ ния в спецификациях. Для описания спецификаций рассматриваемых ППП, видимо, должны быть выбраны по крайней мере четыре таких формализма для описания каждого из указанных выше классов базовых по¬ нятий. Опыт разработки [2—12] и анализ методов спецификаций [14] показывает, что невозможно подобрать абстракции, которые оди¬ наково хорошо описывали бы все эти классы. В частности, во всех методах спецификации, рассматриваемых в [14], полностью отсутствуют средства описания требований к исполнению, обра¬ ботки ошибочных ситуаций, описания внешних требований. Пред¬ лагаемая в них функциональная нотация слишком детальна, от¬ сутствие механизма умолчаний вынуждает описывать общеизвест¬ ные математические понятия и т. п. Отметим еще одно важное обстоятельство. Во всех работах по языкам спецификаций подчеркивается, и это совершенно спра¬ ведливо, что метод спецификации должен быть полностью форма¬ лизован, иначе трудно научить людей правильно и последова¬ тельно им пользоваться. Однако это не означает, что язык спецификаций является полностью формализованным, фиксирован¬ ным. Учитывая большую сложность создания языка специфика¬ ций для систем программирования и актуальность создания такого языка для описания разрабатываемых уже проектов систем, естественно выбрать следующий подход. Язык спецификаций может включать как формальный аппарат, так и рекомендуемые, не по л ностью^формализованные конструкции, для которых дается лишь семантическое, содержательное описание. Такой «полу¬ формальный» язык, видимо, может явиться основой для последую¬ щего постепенного наращивания формального аппарата за счет формализации неформальных конструкций. В’то же время он может уже сейчас использоваться как язык описания специфи¬ каций проектируемых систем. В принципе такой подход используют и разработчики систем поддержки при реализации крупных проектов: систем ISDOS [5], BMD [3, 4], Multics [2]. В каждой из таких технологий рас¬ 5
сматривается один или несколько формализмов для описаний основного для данного проекта класса понятий (данных и функ¬ ции в PSL [5] и ЮТА [9], схемы управления в PDL [15] и RSL [6], внешние требования и иерархия разработки в RDL [8], требования в SDL-TDL [16], а остальные классы понятий описываются неформально или полуформально. Это дает воз¬ можность реализовывать в системах поддержки как формальные проверки (на корректность, полноту, правильность трансформа¬ ций и т. п.) для основных понятий, так и хранить и документи¬ ровать полную информацию о проектах. 2.1. Схема управления Отметим сначала, что при проектировании модели системы можно рассматривать две разные схемы управления: схему управ¬ ления исполнением системы и управления разработкой системы. Нас будет интересовать только первая, хотя предлагаемые для ее описания формализмы годятся и для описания второй. В схеме управления отражается взаимодействие компонент системы при исполнении, т. е. процесс исполнения системы. Это могут быть последовательное или параллельное исполнение; исполнение при выполнении некоторого условия; альтернатив¬ ное исполнение нескольких ветвей; исполнение при завершении некоторого события, которое может быть как внешним по отно¬ шению к программной системе, так и определяться вычисляемыми значениями данных. Перечисленный набор не является полным и свидетельствует о многообразии типов связей по управлению. Ясно, что при описании связи должен быть указан ее тип, все атрибуты и возможные параметры, свойственные связям этого типа. Примером спецификаций такого типа является «Потоковый подход», реализованный в языке RSL системы поддержки REVS [6]. Потоки в проектируемой системе определяются в виде /?-сетей. 7?-сети состоят из вершин, специфицирующих результаты обработки, и дуг, связывающих их. Имеется несколько типов вершин. 7?-сеть может быть представлена как графически, так и в виде структуры. Схема управления является основой при проектировании си¬ стем в рамках системы поддержки ДИАЛОГ[17]. Инструменталь¬ ный язык этой системы позволяет описать конструируемую си¬ стему в виде процесса. Средствами языка описываются циклы, ветвления, повторения, возвраты и альтернативы, которые могут к тому же исполняться под управлением пользователя. Структу¬ ра процесса в целом может быть описана как иерархия подпро¬ цессов. Для задач вычислительной математики описание схемы управ¬ ления исполнением играет важную роль в спецификации всей модели системы. 6
Схема управления описывается понятиями структур управле¬ ния. Известны различные формализмы для изображения структур управления: сети Петри, /?-сети, структурированные схемы про¬ грамм и т. п. Во всех этих подходах для описания схем имеются два базовых понятия: элементы схем и порядок их сопряжения. Элементы схем могут иметь несколько фиксированных типов. Порядок сопряжения может задаваться тремя способами: а) описываться как самостоятельная компонента (например, в виде графа); б) регламентировать порядок и позиции описаний элементов (описание уровней структур путем указания их вложенности при помощи блочных скобок или номеров уровней); в) определяться правилами порождения составных конструк¬ ций из элементов схем. Последний способ является наиболее приемлемым для тексто¬ вого (а не графического) изображения схем управления. Он ис¬ пользуется в приводимом ниже языке описания схем управления. Одной из главных его особенностей является структурирован¬ ность, существенно сокращающая возможность появления се¬ мантических ошибок и позволяющая выполнять довольно про¬ стой автоматический контроль правильности описания схем управления. Схема управления модели в целом представима группой структуры управления. Из общей схемы управления могут быть выделены подсхемы, представимые также группами структуры управления. Цель такого выделения может быть различной — это либо замкнутые функциональные компоненты, либо фраг¬ менты схем, детализируемые отдельно (позже или другими раз¬ работчиками), либо части, удобно размещаемые на листе бумаги. Рассматриваемый язык описания структур управления содер¬ жит 6 основных типов структурных управляющих элементов: структура управления, цикл, выбор, параллельность, вызов мо¬ дуля, вызов структуры. Каждый из них является замкнутой конструкцией, содержа¬ щей элементы других типов, и поэтому описывается как группа. Последовательность управляющих элементов является после¬ довательностью элементов указанных типов, разделяемых и за¬ вершаемых символом с;\ В составе этой последовательности, кроме того, могут присутствовать некоторые вспомогательные элементы, специфичные для отдельных групп. 1) Группа структуры управления группа—структуры—управления:: = ВХОД имя—входа; последовательность—управляющих- элементов КОН СТР Группа структуры может содержать один или более структур¬ ных элементов окончания выполнения вида ВЫХОД СТР имя—выхода 7
Каждый из выходов структуры идентифицируется своим именем. 2) Группа цикла группа—цикла:: = ЦИКЛ ([имя—цикла,] * критерий—повторения) последовательность—управляющих—элементов КОН ЦИКЛА [имя-цикла] * Здесь последовательность управляющих элементов может содер¬ жать структурные элементы прерывания выполнения цикла двух типов: НА ПОВТОР [имя—цикла] * ВЫХОД ЦИКЛА [имя-цикла] * Первый из них инициирует возврат на вычисление критерия повторения, а второй элемент означает выход из группы цикла на следующий за ней элемент. 3) Группа выбора группа—выбора:; = ВЫБОР ([имя—выбора,] * критерий—выбора, список значений—критерия) {имя—критерия—выбора=значение—критерия: последовательность—управляющих—элементов КОН ВЫВ [имя—выбора] *;} Здесь последовательность управляющих элементов может содер¬ жать элемент прерывания выполнения группы вида НА ПОВТОР [имя—выбора] * означающий возврат на вычисление критерия выбора. 4) Группа параллельности группа параллельности :: = ПАРАЛ [имя—группы] *: {ВЕТВЬ: последовательность—управляющих—элемен¬ тов} КОН ПАР [имя—группы] * 5) Группа вызова модуля группа—вызова—модуля :: = МОДУЛЬ ([имя—вызова,] * имя—модуля, список— имен—реакций—на—исполнение) {имя—реакции—на—исполнение: последовательность—управляющих—элементов} КОН ВЫЗОВА [имя—вызова] * Список имен реакций на исполнение модуля должен соответ¬ ствовать списку выходов соответствующего модуля. Если модуль имеет лишь один выход, то имя реакции может отсутствовать как в самом вызове, так и в качестве метки после¬ довательности элементов. ♦ Имеется в виду одно и то же имя в рамках данной группы. Если в после¬ довательности управляющих элементов данной группы нет вложенных групп этого же типа, то имя группы может отсутствовать. 8
6) Группа вызова структуры группа—вызова—структуры::^ СТРУКТ ([имя—вызова’] * имя—структуры, список— имен—реакций—на—исполнение) {имя—реакции—на—исполнение: последовательность—управляющих элементов;} КОН ВЫЗОВА [имя—вызова * Группа вызова структурной компоненты содержит вызов группы структуры управления (подсхемы) и средства идентификации ее выходов с элементами вызывающей структуры. 2.2. Спецификация модуля Функция модуля. Задание функций, определяемых модулем, является главной составной частью описания модуля. При описании функций модуля должны быть заданы: область определения (возможные значения используемых данных); об¬ ласть значения (возможные значения функций); собственно функ¬ циональная зависимость. Основная цель формализации функциональной зависимости — обеспечение точного и однозначного описания функций модуля, а также создание правильной и четкой проектной документации. Сейчас пока не представляется возможным формализовать полностью описание функциональной зависимости, оставляя его в то же время понятным для специалистов в данной проблемной области. Чтобы формализация не приводила к «измельчению» средств, утрате ими смысла, семантики проблемной области, нужно создавать для этой цели проблемные языки очень высо¬ кого уровня, скажем, «язык численного анализа», «язык числен¬ ного решения дифференциальных уравнений» и т. п. Определение понятий этих языков должно делаться на основе некоторого ба¬ зового языка. Наиболее распространенным является аксиомати¬ ческое определение функциональной зависимости. Однако эта форма задания, удобная для систем обработки данных, как правило, не характерна для систем, выполняющих численные расчеты. Здесь, видимо, естественной является зависимость, оп¬ ределяемая формулами, уравнениями, условиями и т. п. Аппарат формализации этой зависимости должен базироваться па общепри¬ нятой в языках программирования записи выражений, функций, простых условий, итераций и т. п., т. е. быть максимально близ¬ ким к математической записи, но учитывать необходимость ли¬ неаризации записи и структурирования текста. Потоки данных. Описание потоков данных является очень важной частью проекта системы. Понятие «управляющей модели», как способа описания системы на стадии проектирования пред¬ полагает, что потоки данных трактуются, как глобальные обще¬ значимые массивы данных. Эта информация носит постоянный, статический характер (она не зависит от динамики использова¬ ния модуля) и поэтому рассматривается как описание модуля. 9
Помимо описания характера использования данных в обраба¬ тывающих модулях, бывает необходимо задавать описания по¬ токов, точки их инициализации и исчезновения. В спецификации модуля задается секция ПОТОКИ ДАННЫХ, в которой перечисляются имена потоков данных и способы их использования (доступа) данным модулем. Возможные способы доступа: создает (порождает), инициализирует, вводит, читает (использует), получает (дальше не передает), корректирует (пишет), выдает Параметры и локальные переменные. Спецификация парамет¬ ров задается в секции ПАРАМЕТРЫ, содержащей список пара¬ метров, снабженных характеристиками. Возможный набор этих характеристик: имя, тип, вид, размеры, характер использования (аргумент, результат, аргумент—результат и т. п.), свойства и характеристики (качественные и количественные). Локальными данными модуля являются данные, доступные только в этом модуле. Эти данные, вообще говоря, важны только для самого модуля, но могут быть описаны, если используются в описаниях функций и алгоритмов. Может оказаться важной и характеристика требуемых для них ресурсов. 1 В секции модуля ЛОКАЛЬНЫЕ ДАННЫЕ задаются: имя, тип, вид, размеры, характеристики и ограничения. Вход и выходы модуля. Важной частью описания интерфейса модуля является спецификация его входа и выхода. Вход определяется в виде спусковой функции или в виде ус¬ ловия использования модуля. Выходы из модуля имеют вид условий, аргументами которых являются либо прерывания определенного типа, либо значения и свойства данных. Несколько выходов у модуля появляются, как правило, из-за того, что он делает априорные и апостериор- ныеЪроверки данных и контролирует ход их обработки. Списку выходов модуля при его вызове сопоставляется список реакций на результат исполнения. ' Межмодульный интерфейс. Межмодульный интерфейс вклю¬ чает в себя ряд понятий, которые специфицируют внешние связи модуля. Для удобства рассмотрения разобьем эти понятия на группы. 1. Используемые модули. ' Задается поименное перечисление модулей, используемых (вызываемых) при исполнении данного модуля. Возможно также указание условий вызова. Перечень используемых модулей дается с некоторым ключевым словом, например, ВЫЗЫВАЕТ список—имен—модулей. 2. Интерфейс по иерархии. Этот тип интерфейса задает вертикальные связи модуля в про¬ екте. Возможны два вида таких связей. Один из них указывает происхождение модуля, его место в иерархической структуре модели. Это отношение может служить для отслеживания ото¬ бражений фаз проектирования, в частности, при автоматической 10
трансформации. Интерфейс по иерархии может быть задан в виде ЧАСТЬ имя—компоненты. Второй вид вертикальных связей указывает коммуникации через границу всей стадии проектирования. Он определяет, ка¬ кие внешние требования обеспечиваются данным модулем. Эта связь имеет вид ОБЕСПЕЧИВАЕТ требования. 2.3. Характеристика модели в целом Модель в целом представляется структурой и, следовательно, ее спецификация описывается аналогично спецификации модуля. Однако для модели в целом существенным является также опи¬ сание ее внешних характеристик, касающихся описания обору¬ дования, базового программного обеспечения, пользовательской среды и т. п. Достаточно подробно об этом написано в [18]. Более полный анализ работ по спецификациям проектирова¬ ния систем программирования приведен в [19]. Итак, задачами проектирования ППП являются: создание языка спецификаций, ориентированного на понятия и особенности разработки рассматриваемого класса пакетов; язык спецификаций должен включать в себя как формальный аппарат, так и полуформальные описательные средства, по мере расширения языка переводимые в формальные и предназначенные для полной документации проекта; назначением языка спецификаций проектирования является создание полного и согласованного проекта на разрабатываемый ППП, обеспечивающего качество и надежность его функциони¬ рования; разработка спецификаций проектирования должна базиро¬ ваться на системе поддержки, включающей средства, необходи¬ мые для хранения, выдачи, проверки полноты и непротиворечи¬ вости спецификаций проекта. ЛИТЕРАТУРА 1. Ross D. Т. Structured analysis (SA): A language for communicating ideas.— IEEE Trans. Software Eng., 1977, vol. SE-3, N 1, p. 16—34. 2. Irvine C. A., Brackett J, W. Automated software engineering through structured management.— IEEE Trans. Software Eng., 1977, vol. SE-3, N 1, p. 34-40. 3. Alford W. W. A Requirements engineering methodology for real-time processing requirements.— IEEE Trans. Software Eng., 1977, vol. SE-3, N 1, p. 60-68. 4. Davis C. G., Vick C. R. The software development system.— IEEE Trans. Software Eng., 1977, vol. SE-3, N 1, p. 69—84. 5. Teichroew D., Hershey E. A. PSL/PSA: A computer-aided technique for structured documentation and analysis of information processing systems.— IEEE Trans. Software Eng., 1977, vol. SE-3, N 1, p. 41—48. 6. Bell T. E., Bixler D. C., Dyer M. E. An extendable approach to computer- aided software requirements engineering.— IEEE Trans. Software Eng.., 1977, vol. SE-3, N 1, p. 49—59. 11
7. Nunamaker J. F. A methodology for the design and optimization of in¬ formation processing systems.— AFIPS Conf. Proc., 1971, vol. 38, p. 283— 294. 8. Heacox H. C. RDL: a language for software development.— Sigplan Not. 1979, vol. 14, N 12, p. 71—79. 9. Nakajtna R., Yuasa T., Kojama K. The IOTA programming system — a sypport system for hierarchial and modular programming.— In: Infor¬ mation. Processing 80. IFIP Congress Ser., 1980, p. 299—304. 10. Brown W. S. Support software for large systems.— In: Software Eng. Techniques, Report of a Conf, sponsored by the NATO Science Committee. Rome, 1969, p. 53—60. 11. Gaudel M. C. A formal approach to translator specification.— In: Infor¬ mation Processing 77; IFIP Congress Ser., 1977, p. 123—127. 12. Shido O., Jwarnoto K., Fu/ibayashi S. A software design system based on a unified design methodology.— Information processing, 1980, vol. 3, N 3, p. 186—196. 13. Турский В. Методология программирования. М.: Мир, 1981. 263 с. 14. Дисков Б., Зиллес С. Методы спецификации, используемые для абстрак¬ ции данных.— В кн.: Данные в языках программирования, М.: Мир, 1982, с. 91 — 122. 15. Caine S. И., Gordon Е. К. PDL—a tool for software design.— AFIPS Conf. Proc. 1975, vol. 44, p. 271—276. 16. Ceri 5., Peladatti G., Bracchi G. Integrated specification of static and dynamic raquirements of data base applications: the transaction definition language.— In: Information Processing 80: IFIP Congress Ser., 1980, p. 499—504. 17. Веселов E. IT., Мавурик В. П. Инструментальные средства для проблем¬ но-ориентированных систем.— В кн.: Проблемы вычислительной тех¬ ники. М.: 1981, с. 123 — 144. 18. Бежанова М. М. Проектные спецификации пакетов прикладных программ: Препр. ВЦ СО АН СССР № 225. Новосибирск, 1980. 45 с. 19. Бежанова М. М. Спецификация модели проблемно-ориентированной системы. Препр. ВЦ СО АН СССР № 361. Новосибирск, 1982. 28 с. УДК 519.6^3 ПРИНЦИПЫ ПОСТРОЕНИЯ БАЗОВОГО СИСТЕМНОГО ОБЕСПЕЧЕНИЯ ПАКЕТОВ ПРИКЛАДНЫХ ПРОГРАММ В. В. Пененко, И. В. Поттосин, Ф. Г. С зет .тако ?а £• ^Усложнение математических моделей, рост объемов факти¬ ческой^информации, необходимой для их применения, предъяв¬ ляют дополнительные требования к способам построения матема¬ тических моделей и их практической реализации па ЭВМ в виде комплексов и пакетов прикладных программ (ППП). В качестве примера рассмотрим класс задач, связанных с проблемами физики атмосферы и океана и охраной окружающей среды. Используемые для их решения математические модели описываются системами нестационарных нелинейных дифференциальных уравнений с частными производными в трехмерных областях. Многие физи¬ ческие'факторы учитываются в них параметрически. Параметры моделей и поля начальных значений оцениваются по результатам обработки данных натурных измерений. 12
Изучение физических процессов в природных областях свя¬ зано с проблемой сбора, обработки и интерпретации фактической информации. Опыт показывает, что не всегда возможно заранее алгоритмизировать различные ситуации, возникающие при кон¬ троле и интерпретации фактической информации. На практике необходимо предусматривать интерактивный режим взаимодей¬ ствия исследователей с вычислительной системой и с математи¬ ческой моделью обработки и интерпретации информации и ре¬ зультатов численного моделирования. Способы практической реализации во многом определяют качество математического моделирования. Сложность современ¬ ных математических моделей требует большого запаса алгорит¬ мов, чтобы выбирать тот или иной в зависимости от особенностей конкретной задачи. Не безразлично также, за счет каких средств достигается конечный результат моделирования. Поэтому есте¬ ственно требовать от алгоритмов не только устойчивости и эконо¬ мичности с вычислительной точки зрения, но и простоты их кон¬ структивной и программной реализации. С позиций построения численных моделей сложных систем очень удобно использовать метод расщепления, основные идеи которого в настоящее время хорошо известны [1—4]. Этот метод позволяет осуществлять ре¬ дукцию сложных задач к совокупности более простых, решение которых на ЭВМ не вызывает затруднений. Разработаны способы построения схем расщепления, позволяющие на всех этапах редукции задач сохранять смысл, заложенный в первоначальной их постановке. В [5] на основании анализа широкого круга инженерных и фи¬ зических задач в качестве основного инструмента для их решения предлагаются ППП. Наш подход целиком согласуется с этим ре¬ шением, и анализ проблемной области в нашем случае подтверж¬ дает это. С методом расщепления наиболее естественным образом согла¬ суется модульный принцип программирования. На основе идей метода расщепления и принципов модульного программирования для каждого класса задач выбирается некоторое базисное множе¬ ство алгоритмов универсального назначения, которые реализуют¬ ся на ЭВМ в виде библиотеки программ-модулей, составляющих ядро функционального наполнения ППП. При наличии такой библиотеки упрощается процесс конструирования численных мо¬ делей. Если структура моделей задана, этот процесс во многих случаях сводится к объединению библиотечных программ в еди¬ ный комплекс. Таким образом, численная модель, построенная на принципах метода расщепления и модульного программирова¬ ния, имеет блочную структуру. Учет в модели новых факторов мо¬ жет осуществляться посредством введения новых этапов в схему расщепления и новых модулей в библиотеку. Модульная струк¬ тура алгоритмов и программ дает возможность подойти к реше¬ нию целых классов задач, и наличие средств адаптации пакетов к конкретным условиям позволяет активно использовать накапли¬ ваемый опыт® 13
Эта методология положена в основу создания ППП для реше¬ ния задач физики атмосферы и океана и охраны окружающей среды (АТОС). Конструктивные аспекты рассматриваемой проб¬ лемы подробно описаны в [6]. Опыт создания ППП показывает, что большое число реальных пакетов обладает одинаковыми или близкими системными потреб¬ ностями, что ставит задачу выделения для широкого круга паке¬ тов некоторого базового системного обеспечения (БСО). Конкрет¬ ные пакеты основываются на этом обеспечении, и для них доста¬ точно разработать некоторый минимум специфических системных средств, связанных с функциональной частью этого конкретного пакета. 1. ОПРЕДЕЛЕНИЕ БАЗОВОГО СИСТЕМНОГО ОБЕСПЕЧЕНИЯ ППП Под БСО ППП мы будем понимать совокупность программных средств, обеспечивающих адекватную потребностям пользовате¬ лей ППП (в широком смысле) операционную обстановку [7]. Спе¬ цифика задач математического моделирования показывает, что процесс создания ППП не может быть отделен от процесса его ис¬ пользования; Процесс создания пакета связан с постепенным на¬ коплением модулей функционального наполнения и ведением тестовых методических расчетов. Использование пакета начинает¬ ся раньше, чем завершается создание функционального наполне¬ ния и пересекается по времени с доработкой, развитием и модифи¬ кацией ППП. Все это означает, что операционная обстановка, создаваемая базовым обеспечением, должна отвечать интересам разного типа пользователей, отношение которых к пакету различ¬ но как по функциям, так и по привилегированности. Удобно различать четыре типа пользователей: 1) разработчик, который связан с пополнением и модифика¬ цией функционального наполнения и с выполнением методичес¬ ких расчетов; 2) конструктор, который приспосабливает БСО для нужд конкретного пакета или класса путем соответствующей генерации компонентов или предусмотренного описания предметной области; 3) администратор, отвечающий за организацию коллектива пользователей и за поддержание общей базы данных (БД) пакета; 4) потребитель, осуществляющий решение конкретных задач данной проблемной области (для чего он может вводить в пакет дополнительные конкретные модули и конкретные обрабатываемые данные). Из перечисления функций пользователей разного типа видно, что по характеру деятельности различные типы пользователей до¬ вольно сильно пересекаются, однако степень их привилегирован¬ ности, естественно, должна различаться. Примером является пе¬ ресечение функций разработчика и потребителя. Если разработчик имеет дело с накоплением и модификацией некоторой общей ин¬ 14
формации, остающейся в пакете, то потребитель обычно ведет лишь текущую информацию, нужную для решения отдельной конкретной задачи, и осуществляет обработку результатов рас¬ чета. На самом деле число типов пользователей больше, чем пере¬ числено здесь. Выделяется по крайней мере еще два типа, а именно: разработчик БСО (поскольку и само системное обеспечение может модифицироваться и пополняться в процессе существова¬ ния пакета); разработчик системного обеспечения конкретного пакета (имеется в виду создатель специфических для данного класса за¬ дач компонентов, отсутствующих в БСО). Вместе с тем нужды последних двух типов пользователей не отражаются, на наш взгляд, в БСО пакета, а обеспечиваются дру¬ гим (предыдущим) слоем программного обеспечения. Под БСО пакета мы будем понимать только средства, обеспечивающие пот¬ ребности первых четырех типов пользователей. Заметим, что в работах, посвященных ППП, в той или иной мере выделяются различные типы пользователей и рассматри¬ ваются их различающиеся потребности. Например, особую важ¬ ность имеет пользователь-конструктор в системах, основанных на достаточно развитом синтезе программ (СПОРА [8], ПРИЗ [9]). Близкая к приведенной классификация типов пользователей приводится в [10]. Представляя, как это сказано в [11], общую структуру про¬ граммного обеспечения как последовательность трех уровней: ядра, системного уровня и проблемного уровня, отнесем БСО к системному уровню. Это означает, что БСО ППП представляет собой сочетание специализированных операционной и инструмен¬ тальной систем, ориентированных на вышеупомянутые четыре типа пользователей. Заметим, что такие типы пользователей, как разработчики системного обеспечения, работают в операцион¬ ной обстановке, созданной непосредственно ядром. В ряде работ, в частности [5, 12, 13], пакет подразделяется на системную часть и функциональное наполнение. Нам кажется естественным разделить функциональное наполнение на функ¬ циональную часть и информационную часть. В функциональную часть следует включить программные модули и модули описания предметных областей. К информационной части следует отнести данные, документы, справочники для пользователей и т. п. Это разделение позволяет выделить активную часть функционального наполнения, учитываемую при планировании вычислений, син¬ тезе программ и других подобных действиях, необходимых для функционирования пакета. Такое разделение нам кажется пра¬ вомерным, несмотря на то что данные и их структура могут учи¬ тываться при синтезе. Однако этот учет носит более неявный ха¬ рактер, чем для элементов собственно функциональной части. Заметим, что при проектировании программ, исходя из данных [14], на самом деле учитываются не конкретные значения данных, 15
а некоторые их характеристики, такие, как структура, множества допустимых значений, взаимовлияние и т. д. Существенно отме¬ тить, что при определении функциональной и информационной частей могут быть выделены определенные типы объектов (ком¬ понентов) функционального наполнения с заданными для каждого типа своей синтаксической структуры и семантики использова¬ ния. Знание типа объекта, а значит, его синтаксической структуры и семантики может позволить учесть специфику объекта при ра¬ боте С НИМ. 2. БАЗОВОЕ СИСТЕМНОЕ ОБЕСПЕЧЕНИЕ КАК СПЕЦИАЛИЗИРОВАННАЯ ОС Нужды пользователей ППП требуют наличия в БСО ряда функций, характерных для ОС. Эти функции, вообще говоря, поддерживаются универсальным образом компонентами ядра, однако разработка и использование ППП обладает устойчивой спецификой, которая требует специализации ОС. Здесь важно до¬ стигнуть более естественного общения пользователя с Г1Г111 и по¬ вышения эффективности применяемых ОС решений. В специали¬ зации нуждаются прежде всего такие традиционные функции ОС, как ведение архива, планирование и ведение пользователей. При создании архива или БД конкретного ППП существенно выделять смысл тех или иных объектов БД по отношению к паке¬ ту. Универсальными средствами ядра поддерживается универсаль¬ ная работа с объектами БД, при которой смысл объектов оказы¬ вается скрытым, а характер работы с данными определяется в основном физическими носителями информации. Вместе с тем реальная БД пакета содержит разнотипные объекты — информа¬ ционные данные, программные модули, описание предметной области, документы и т. д., операции над которыми по самому существу этих объектов различны. Даже одинаковые внешние операции, такие, например, как редактирование, могут быть из соображений эффективности реализованы по-разному, в зависи¬ мости от типа объекта. Характер именования из соображений удобства и защиты для разных типов объектов тоже может быть различен — в нем может быть учтена, например, иерархия моду¬ лей или отражение структуры информационных данных. Пра¬ вила доступа к объектам также могут определяться типом объекта. Среди объектов могут быть выделены объекты с известными именами, определяющими характер работы с ними, такие, как, на¬ пример, стандартные величины. Заметим, что в некоторых систе¬ мах (см., например, ФИХАР [15]) доступ к стандартным перемен¬ ным может привести к вызову последовательности процедур, со¬ здающих в БД значения этих переменных. Все это свидетельствует о том, что включение в специфицированную ОС всего разнообра¬ зия понятий, свойственных базам данных для ППП, является не¬ обходимым. Иначе говоря, БСО ППП должно превратить универ¬ сальный архив, поддерживаемый средствами ядра, в проблемно- ориентированную БД. 16
№ Планирование распадается на планирование вычислений, т. е. выстраивание последовательности исполняемых работ, и плани¬ рование распределения ресурсов (в первую очередь памяти). Планирование вычислений в пакетах в отличие от явно задавае¬ мых последовательностей исполняемых шагов у ОС ядра (для чего существует язык управления заданиями) в существенной мере базируется па неявном задании последовательности вычислений. В связи с этим в БСО пакета появляются специальные компонен¬ ты, которые извлекают последовательность вычислений из описа¬ ния модели предметной области [16 — 18, 19]. Характер описания модели связан с предметной областью и может включать комби¬ нацию явных и неявных указаний на поток информации, поток управления или фиксацию некоторого набора типичных после¬ довательностей управления. В первых двух случаях (при выделе¬ нии потоков данных и/или управления) синтезаторы и решатели, реализующие планирование вычислений, ориентированы на до¬ статочно широкий круг проблемных областей в силу того, что за¬ дания потоков управления и/или данных носят достаточно общий характер. В последнем случае строится специализированный син¬ тезатор, который по описанию задач из некоторого узкого класса определяет, какая из набора последовательностей управления нужна в данном случае. Планирование распределения ресурсов в рамках ППП может также в отличие от универсальной ОС ядра учитывать специфику предметной области и знания о модулях функционального напол¬ нения. Одним из видов планирования ресурсов может быть управ¬ ление параллельностью исполнения. Сам процесс распаралле¬ ливания и дальнейшая синхронизация параллельных процессов могут опираться на некоторые критерии, ориентирующиеся на спе¬ цифику предметной области. Дополнительный эффект может дать учет конкретной специфики реального класса задач при распре¬ делении таких параллельно работающих устройств, как каналы. Специальная политика распределения каналов при обработке больших массивов информации может существенно повысить эффективность обработки. Заметим, что при определении парал¬ лельности вычислений планирование вычислений и планирование распределения ресурсов переплетаются. Одной из существенных черт распределения ресурсов, которое может быть эффективно решено с учетом конкретных задач, является распределение дан¬ ных по различным уровням памяти. И в этом случае БСО пакета может получить существенный выигрыш по отношению к универ¬ сальной ОС. Классификация пользователей на уровне ядра, как правило, не бывает достаточно разветвленной. По отношению к ППП эта классификация может быть более развита. Уже в п. 2 отмечались те черты типа пользователей, на которых, нам кажется, естествен¬ но ориентировать ППП. В рамках БСО ППП следует поддерживать такую или подоб¬ ную классификацию пользователей. Это позволяет обеспечить до¬ 17
полнительную надежность БД пакет | аботы с ней, при которой тип пользователя определяет как допустимые функциональные действия, так и права доступа к БД. Как уже отмечалось в [11], ядро должно содержать необходи¬ мый базис понятий и примитивов, которые должны обеспечить любую специализацию. БСО как специализированная ОС не кон¬ струирует заново набор понятий и операций с ними. Та специфика, которая вносится ППП в ОС, отражается в конструировании этих понятий и операций из базисных, содержащихся в ядре. БСО па¬ кетов является надстройкой над средствами ядра, создающей то самое повернутое к пользователю лицо ОС, о котором упоминает¬ ся в [20] и которое создает упомянутое в этой работе проникновение ОС в пакеты. 3. БСО КАК^СПЕЦИАЛИЗИРОВАННАЯ ИНСТРУМЕНТАЛЬНАЯ СИСТЕМА В процессе работы с пакетом существует необходимость, с од¬ ной стороны, развивать и модифицировать сам пакет, а с другой — обеспечить манипулирование элементами функционального напол¬ нения. Для осуществления этой инструментальной работы БСО пакета должно включать в себя инструментальную систему в смысле работы [20]. Сразу оговоримся, что БСО не должно реализовать развитые возможности изменения системной части. Инструментальные возможности БСО по отношению к системной части ограничивают¬ ся средствами генерации, предоставляемыми конструктору. Что же касается изменения и развития функционального наполнения, то инструментальные возможности БСО в этом отношении должны быть достаточно полными. Сюда включаются возможности разви¬ того редактирования, трансляции с инструментальных по отно¬ шению к функциональной части языков программирования, до¬ кументирования (накопление и визуализация документов) и т. д. Заметим, что общее программное обеспечение содержит набор универсальных инструментальных средств таких, как трансля¬ торы, редакторы, всевозможные утилиты и т. п. Однако исполь¬ зование разнообразных инструментальных средств требует от пользователя детального знания всех характеристик, параметров и режимов этих средств, определенных для универсального ис¬ пользования. В то же время пользователи пакетов работают с ин¬ струментальными средствами в некотором ограниченном контек¬ сте и, что важно, контексты для различных типов пользователей различны. В связи с этим БСО, помимо наличия в нем специали¬ зированных инструментальных средств, должно обеспечить огра¬ ниченность контекста использования универсальных средств, характерную для различных типов пользователей пакетов. Таким образом, БСО ППП должно создать для пользователей операционную обстановку, обеспечивающую модификацию функ¬ ционального наполнения и разработку его компонентов. При 18
создании этой обстановки БСО обязано использовать существую¬ щие инструментальные средства и обеспечить контакт с ними более естественным и ориентированным на специфические нужды поль¬ зователей ППП образом. Неотъемлемым инструментальным средством для работы с функциональным наполнением являются всевозможные редак¬ торы. При создании возможностей редактирования БСО может использовать в полной мере существующие редакторы (в том чис¬ ле и такие развитые редактирующие инструменты, как макро¬ генераторы). Специфика пользователей пакетов может повлиять на развитие языков редакторов, а это развитие может быть реа¬ лизовано как надстройка над соответствующими универсальными средствами. Точно также эта специфика может повлиять на со¬ держание специализированных библиотек макросов или редакти¬ рующих вставок. Отметим, что различие типов компонентов функ¬ ционального наполнения и само наличие таких выделенных типов может упростить или сделать более естественным указание на те или иные редактирующие действия, связанные с конкретным ти¬ пом компонентов. Так, при этом может быть учтена структура модулей языка (языков) реализации функциональной части или существующий синтаксис описания моделей предметной области, специфика информационных данных и т. п. За счет такого учета универсальные редактирующие средства могут быть дополнены специализированными, учитывающими тип компонентов функ¬ ционального наполнения, а с другой стороны, те или иные уни¬ версальные редактирующие средства, примененные к компонен¬ ту известного типа, могут быть выражены более простым и есте¬ ственным образом. Кроме развития универсальных средств редактирования, осо¬ бенности работы пользователей по изменению компонентов раз¬ личных типов могут привести к появлению специализированных языково-ориентированных редакторов и макрогенераторов. В част¬ ности, специфика структур данных может определить и особый способ их модификации или пополнения, и специализированный редактор данных может оперировать с ними, используя априорное знание о допустимых структурах этих данных. Дальнейшее раз¬ витие средств работы с функциональным наполнением должно при¬ вести к появлению в БСО помимо разного рода редакторов суще¬ ственно более мощных инструментов преобразования программ, о которых упоминается в работе [20]. Одним из реальных путей к созданию средств преобразований программ, ориентированных на ППП, является построение систем конкретизации [21] над язы¬ ками программирования, применяемыми для написания программ¬ ных модулей ППП. Наличие в функциональной части программных модулей на алгоритмических языках требует включения в инструментальные возможности средств трансляции с этих языков, а также средств объединения оттранслированных модулей. Все эти возможности содержатся в стандартных системах программирования, и роль 19
БСО в этом отношении ограничивается надстройкой над соответ¬ ствующими универсальными средствами. Свойственное для си¬ стем программирования задание режимов и параметров трансля¬ ции и управление объединением объектных модулей сводится за счет существования надстройки к выбору из некоторого набора типичных для ППП ситуаций. Существование такого набора об¬ легчает пользователю работу с системой программирования. Существенным для БСО является обеспечение более высокого уровня языка программирования, чем уровень типичных алгорит¬ мических языков. В этом отношении можем различать четыре ос¬ новных подхода: создание системы, замкнутой по проблемно-ориентированному языку или набору таких языков; создание системы с проблемно-ориентированными языками, являющимися расширением некоторого стандартного языка про¬ граммирования, с возможностью автоматической реализации этих расширений; создание системы с языком описания предметных областей, позволяющим приспосабливать входной язык к конкретному классу задач за счет описания общей для этого класса задач пред¬ метной области; создание открытых систем с нефиксированным проблемно- ориентированным языком, создающих возможность автоматичес¬ ким образом строить трансляторы по формальному описанию кон¬ кретного проблемно-ориентированного языка. Существование замкнутых систем оправдывается тем, что для них возможно для некоторого класса задач выразить наиболее естественным и ничем не ограниченным образом описание поста¬ новки конкретной задачи из фиксированного класса [22]. При этом предполагается, что БСО содержит трансляторы с проблем¬ но-ориентированных языков, написанные без привлечения средств этого базового обеспечения. Создание систем с проблемно-ориентированными расширения¬ ми стандартного языка программирования (встроенные системы) [23, 24] предполагает поддержку этого создания со стороны БСО. Как отмечается в [23, 24], наиболее употребимым средством такого создания являются макросредства, позволяющие вводить расши¬ рения как библиотеку соответствующих макросов. Иногда для этого возможно использовать стандартные макрогенераторы, ориентированные на некоторый язык программирования (напри¬ мер, препроцессор языка ПЛ/1 ). В этом случае БСО содержит только поддержку пользовательского интерфейса с этими стан¬ дартными средствами. В некоторых случаях создаются специаль¬ ные инструменты для расширений, являющиеся компонентами БСО [25]. Системы, реализующие языки для описания предметных обла¬ стей, оказываются удобными в том отношении, что, предоставляя универсальные средства для определения входных языков для конкретных классов задач, они дают пользователю весьма удоб-
ные возможности для формулирования данной задачи из конкрет¬ ного класса. Примерами таких языков являются Утопист системы «Приз» и Декарт системы СПОРА. В этих системах формулирова¬ ние конкретной задачи фактически складывается из двух этапов. На первом — конструктор средствами языка описания предмет¬ ной области пополняет функциональную часть описанием модели предметной области, включающей понятия предметной области, отношения между понятиями, программные модули, реализующие типичные для предметной области функции обработки, описания значений стандартных переменных и т. п. Потребитель, рассчиты¬ вая на наличие описания предметной области, формулирует свою задачу в терминах понятий уже введенной модели. Хотя синтак¬ сически язык, используемый потребителем, одинаков для раз¬ личных предметных областей, однако богатая семантика введен¬ ной модели предметной области создает хорошую проблемную ориентированность языка потребителя. Все трудности с обеспе¬ чением проблемной ориентированности фактически переносятся на конструктора. В открытых системах в БСО включаются такие компоненты, которые позволяют автоматически строить трансляторы со спе¬ циализированных проблемно-ориентированных языков. В отли¬ чие от предыдущего случая синтаксис и семантика проблемно- ориентированного языка не фиксируются, а фиксируются лишь ме¬ тасредства для формального описания входных языков пакетов. Примерами таких компонентов являются РТК [26] и DEPOT [27]. Первая система представляет собой инструмент со специальным языком для описания алгоритмов текстовой обработки, основанной на формализме R-грамматик [28]. Вторая же система представляет собой систему построения трансляторов (СПТ), ориентированную на специализированные языки. Заметим, что применение СПТ для специализированных языков оказывается в практическом смысле гораздо больше подготовленным, чем применение СПТ для клас¬ сических языков программирования. Известно [29], что семанти¬ ческая часть в СПТ пока еще не дает возможности эффективного построения трансляторов для языков с богатой семантикой. В то же время специализированные языки ППП не предъявляют очень больших требований к формальному описанию семантики, так как значительная часть семантической специфики языка спрятана в программных модулях функциональной части пакета. Достаточ¬ но широкий опыт применения системы DEPOT [30, 31] свиде¬ тельствует о практичности применения идеологии СПТ для па¬ кетов и проблемно-ориентированных систем. В работе [20] отмечается, что любой инструментальный комп¬ лекс — это прежде всего универсальный язык, обладающий раз¬ нообразием базовых средств и вычислительных моделей. Один из путей создания такого языка — построение совокупности языко¬ вых средств различных уровней. О некоторых уровнях уже упо¬ миналось — это языки программирования для написания программ¬ ных модулей функциональной части, языки описания модели 21
предметной области, наконец, метаязыки для задания формаль¬ ного описания входного языка пакета (или языки инструменталь¬ ных средств написания транслятора для этого входного языка). Существенной частью этой совокупности языков является язык взаимодействия с ППП. Важность такого языка отмечается в работе [32]. Этот язык общения представляет собой как бы самый высокий уровень языка инструментальной системы и дает воз¬ можности обращения к компонентам БСО и работы над объекта¬ ми функционального наполнения. Операциями в этом языке вы¬ ступают процедуры, создаваемые системной частью (транслиро¬ вать, редактировать, объединять, преобразовывать и т. п.), а данными, над которыми работают эти процедуры, выступают объекты различных типов, содержащиеся в функциональном наполнении. Одна из важных работ, выполняемых инструментальной си¬ стемой,— документирование. Создание любого пакета предпола¬ гает создание и документации по этому пакету. Естественно, что в БСО должны содержаться компоненты, автоматизирующие на¬ копление, изменение и выдачу нужной документации. Такая документация содержится в информационной части функциональ¬ ного наполнения и включает в себя как оперативную справочную информацию, доступную пользователю в диалоговом режиме, так и полную документацию по пакету, оформленному в соответ¬ ствии с существующими ГОСТами. 4. ОБЩАЯ СТРУКТУРА БСО Итак, БСО должно объединять возможности операционной и инструментальной систем. В зависимости от типов пакетов в различных пакетах на первый план могут выступать или опера¬ ционные, или инструментальные возможности. Типы пакетов в соответствии с их функциональным назначением довольно под¬ робно выделяются в работе [33]. Огрубляя эту классификацию можно сказать, что существуют три типа пакетов: аналитический, объединяемый математической моделью [33] г предметный, объединяемый моделью предметной среды (физи¬ ческое явление, экономическая модель, техническая конструкция и т. д.), и операционный, объединяемый некоторым режимом функционирования (диалоговая работа, использование средств машграфики, режим реального времени, управление БД и т. д.). Для аналитических пакетов ввиду определенности существую¬ щих математических моделей проблема эволюции и развития ока¬ зывается менее острой, и поэтому инструментальные средства БСО отступают на второй план по сравнению с операционными. Типичным примером аналитического пакета с развитой операцион¬ ной частью является ТЕНЗОР [34]. Для этих пакетов оказывается важным организация архива модулей, планирование вычисле¬ ний, распределение ресурсов и т. п. 22
Для предметных пакетов проблема эволюции оказывается (более острой. Важным оказывается также удобный язык описания предметной области. Все это приводит к тому, что инструменталь¬ ные средства оказываются весьма важными для работы с такими пакетами. Это не исключает необходимости и в развитых опера¬ ционных средствах. Для операционных пакетов, уже в силу самого определения, наиболее важными оказываются операционные средства. Однако эволюция этих пакетов тоже существенна, в частности, для попол¬ нения пакетов некоторыми частными видами общего режима, и поэтому и инструментальные средства для таких пакетов также необходимы. В ряде работ уже отмечалась необходимость инструменталь¬ ных средств для работы с пакетами [35, 36]. Однако, на наш взгляд, существенным является сочетание в БСО не только инструмен¬ тальных, но и операционных средств, и, как мы видели выше, именно операционные средства оказываются преимущественными. Необходимость такого сочетания уже явно отмечалась в ряде работ, в частности, это следует из перечня системных характе¬ ристик пакета, перечисленных в работе [37], и описания системы СОК [38]. Вместе с тем разделение инструментальных и опера¬ ционных средств носит чисто логический характер, и в реальной компоненте базового системного обеспечения ППП такие средства могут быть объединены. Общая структура БСО должна предполагать возможность его пополнения и обогащения новыми компонентами. Сама структура при этом представляется не как глубокая иерархия компонентов, а как простая структура из двух уровней. На верхнем уровне находится общий монитор БСО, а на следующем уровне совокуп¬ ность исполнителей, реализующих некоторую интегральную (с возможным объединением инструментальных и операционных средств), достаточно четко выделяемую функцию БСО. Монитор осуществляет первичный контакт с пользователем пакета и выбор соответствующего исполнителя. Учитывая необходимость попол¬ нения и развития функций БСО, монитор должен допускать под¬ ключение новых исполнителей, а следовательно, и развитие язы¬ ка общения с пакетом. Простая структура БСО обеспечивает то, что при подключении новых исполнителей изменяется только, как правило, монитор. В мониторе фиксируется набор типов объектов и определяющих операций для каждого типа. В свою очередь, тот или иной тип объектов может допускать более детализиро¬ ванные операции, которые понимаются уже соответствующим исполнителем. Состав исполнителей, таким образом, фиксируется на основа¬ нии допустимых типов объектов и определяющих операций для них. Поэтому при проектировании БСО существенно определить набор допустимых типов объектов, их атрибуты и вытекающий из этого набор основных операций. Более точно тип объекта опреде¬ ляется одновременно с набором основных операций с ним, бо¬ 23
лее того, он задается этим набором. Такое определение состава исполнителей, исходя из типов объектов, кажется нам и более естественным, и более технологичным. В дальнейшем мы пере¬ числим некоторый первоначальный набор типов и операций и вытекающий из этого состав исполнителей. 6. СИСТЕМА СОФИСТ Для иллюстрации высказанных выше принципов рассмотрим разрабатываемую в ВЦ СО АН СССР систему СОФИСТ [39—41 ], которая должна играть роль БСО ППП для ЕС ЭВМ. Сразу ого¬ воримся, что этот пример не в полной мере отражает все изложен¬ ные принципы. Однако основные решения по этим принципам со¬ ответствуют идеологии системы. Для того чтобы не вводить в за¬ блуждение читателя, признаемся, что продумывание общих прин¬ ципов и их окончательная фиксация не предшествовали разра¬ ботке системы. Наоборот, эти принципы формулировались в про¬ цессе работы над системой. Однако дальнейшее развитие системы предполагается вести на их основе. Определенную специфику в разработку системы СОФИСТ внесли два фактора: БСО, овеществленное в системе, в качестве своего ядра имеет ОС ЕС; приложение системы СОФИСТ прежде всего предполагается для задач математической физики, а в качестве первого круга задач были выбраны задачи физики атмосферы и океана и ох¬ раны окружающей среды. Выбор в качестве ядра ОС ЕС ввиду многообразия средств, содержащихся в нем, позволил ряд компонентов системы реали¬ зовать просто как интерфейс между пользователем и соответствую¬ щими средствами ОС ЕС. Вместе с тем ОС ЕС мало ориентирована на прикладного программиста, и перед разрабатываемой системой стала задача обеспечения более естественного контакта с пользо¬ вателем. Класс задач математической физики и задачи охраны окру¬ жающей среды, в частности, характеризуются большими объе¬ мами программ и данных, что приводит к необходимости в каче¬ стве одной из основных задач БСО считать задачу организации архива большого объема и эффективной работы с ним [42]. Исходя из ближайших нужд пользователей из-за определенной непрора- ботанности общих методов спецификации модели (в программном смысле) в системе такой круг пользователей, как конструкторы, специально не выделялся, а потребитель был объединен по своим системным возможностям с разработчиком. Таким образом, в системе существует два класса пользователей — администратор, в возможности которого внесены и некоторые функции конст¬ руктора, и непривилегированный пользователь, возможности которого объединяют права разработчика и потребителя. В качестве типов объектов в системе выделены следующие: 24
исходный модуль (фрагмент на базовом языке); объектный модуль (фрагмент на языке загрузки); схема решения (последовательность модуле^ для решения типовых задач); задача (готовая к исполнению программа); данные (набор исходных значений переменных); пакет редактирования (набор текстовых изменений значений объектов); документ (текст, подготовленный для последующего формати¬ рования); задание (фрагмент на языке взаимодействия для типичных взаимодействий). Этот набор типов объектов обеспечивает достаточно широкие нужды пользователей. Он, разумеется, в общем случае не являет¬ ся исчерпывающим, так как может быть развит за счет включе¬ ния таких объектов, как, например, макросы, паспорта модулей и т. д. Сами атрибуты введенных типов объектов могут быть также развиты — так схема решения может иметь более богатую се¬ мантику, исходный модуль может содержать дополнительные утверждения о свойствах данных, или разметку, позволяющую его модифицировать. Над этими объектами определены естествен¬ ные операции: трансляция, объединение, формирование задачи, загрузка, запуск в решение, редактирование, форматирование и формирование выходного документа и выполнение задания. Исходя из указанных типов объектов и интеграции в системе СОФИСТ операционных и инструментальных возможностей, на¬ бор исполнителей системы является следующим: информационная база для накопления совокупности модулей, данных, документов и т. д.; редактор текстов для модификации программных модулей данных и документов; транслятор и редактор связей для получения исполняемых программ; исполнитель задач для реализации типовых схем решения; документатор для подготовки документации; администратор для принятия решений по организации коллек¬ тива лиц, взаимодействующих с пакетом; генерация, с помощью которой администратор определяет конкретный состав компонентов системы из перечисленных и указывает объемы информационной базы и системных таблиц. Монитор системы осуществляет первоначальное распознава¬ ние оператора и вызов соответствующего исполнителя. Каждый исполнитель производит пооператорную интерпретацию относя¬ щихся к нему операторов. В процессе работы над системой оказалось разумным осущест¬ вить независимую от общего монитора работу с некоторыми ис¬ полнителями. В результате на базе таких исполнителей были созданы свои изолированные системы, одна из которых — До¬ кументатор [43] получила достаточно широкое распространение.
7. ЗАКЛЮЧЕНИЕ Конкретный пакет прикладных программ основывается на общем для достаточно широкого класса ППП базовом систем¬ ном обеспечении, в которое погружено функциональное напол¬ нение данного пакета. С точки зрения пользователя (в первую очередь потребителя и разработчика) пакет объединяет в себе системный и проблемный уровни и в смысле работы [11]. Разра¬ ботанный сейчас ППП АТОС представляет собой совокупность системы СОФИСТ (как системной части) и ядра функционального наполнения. Сама система СОФИСТ соответствует тем общим принципам БСО, которые были изложены и в этом смысле ее применение должно быть шире, чем только для данного конкрет¬ ного пакета. Вместе с тем система СОФИСТ представляет собой только первую версию такого БСО и предполагает развитие в соответствии с общими принципами. Одной из предпосылок к та¬ кому развитию должен быть реальный опыт по применению сис¬ темы СОФИСТ к другим пакетам, а также и развитие ППП АТОС в смысле расширения ядра функционального наполнения. Само развитие функционального наполнения ППП АТОС должно происходить с помощью системы СОФИСТ. Приложение системы СОФИСТ к конкретным пакетам позволит более четко специали¬ зировать функции исполнителей. При этом некоторые конкретные пакеты могут привести к появлению новых исполнителей. Эти исполнители могут представлять как частный интерес, и тогда они останутся как компоненты, привлекаемые только для реше¬ ния задач данного пакета, но могут и привести к возникнове¬ нию новых, общих для всех пакетов исполнителей. Таким образом, система СОФИСТ является основой развер¬ тывания БСО для достаточно широкого класса ППП. В силу этого сама система проектируется как развиваемая. Монитор системы СОФИСТ с самого начала предполагает возможность пополнения системы новыми исполнителями. Язык общения с системой на самом деле представляет собой совокупность подъязыков, соот¬ ветствующих исполнителям, и в силу этого допускает развитие. Общим для всех подъязыков является только понятие типа объекта. ЛИТЕРАТУРА 1. Марчук Г. И. Методы вычислительной математики. М.: Наука, 1977. 455 с. 2. Марчук Г. И. Математическое моделирование в проблеме окружающей среды. М.: Наука, 1982. 320 с. 3. Самарский А. А. Введение в теорию разностных схем. М.: Наука. 1977. 550 с. 4. Яненко И. II. Методы дробных шагов решения многомерных задач ма¬ тематической физики. Новосибирск: Наука, 1967. 145 с. 5. Самарский А. А. Пакеты прикладных программ как средство обеспече¬ ния сложных физических расчетов.— В кн.: Перспективы системного и теоретического программирования: Тр. Всесоюз. симпоз. Новосибирск: ИТПМ и ВЦ СО АН СССР, 1979, с. 5-16. 26
<3. Пененко В. В. Методы численного моделирования атмосферных процес¬ сов. Л.: Гидрометеоиздат, 1981. 351 с. 7 Эфрос Л. Б. Концептуальный анализ программных систем.— Управляю¬ щие системы и машины, 1979, № 2, с. 25—32. 8 Бабаев И. О., Новиков Ф. А ., Петрушина Т. И. Язык ДЕКАРТ — вход¬ ной язык системы СПОРА.— В кн.: Прикладная информатика. М.: финансы и статистика, 1981, вып. 1, с. 35—73. 9. Кахро М. И., Калья А. П., Тыугу Э. X. Инструментальная система про¬ граммирования ЕС ЭВМ (ПРИЗ). М.: Финансы и статистика, 1981, 156 с. 10. Ершов А. И., Ильин В. И. Пакеты программ — технология решения прикладных задач: Препр. ВЦ СО АН СССР № 121. Новосибирск, 1978. 22 с. 11. Поттосин И. В. Структура операционных систем коллективного поль¬ зования.— В кн.: Некоторые проблемы вычислительной и прикладной математики. Новосибирск: ИТПМ и ВЦ СО АН СССР, 1975, с. 250—257. 12. Горбунов-Посадов М. М., Карпов В. Я., Корягин Д. А. и др. Пакет при¬ кладных программ САФРА. Системное наполнение: Препр. ИПМ АН СССР № 85. М., 1977. 27 с. 13. Карпов В. Я. Корягин Д. А., Самарский А. А. Принципы разработки пакетов прикладных программ для задач математической физики: Препр. ИПМ АН СССР № 86. М., 1977. 18 с. 14. Велъбицкий И. В. Двумерное программирование.— В кн.: Перспективы развития в системном и теоретическом программировании: Тр. Всесотоз. симпоз. Новосибирск: ИТПМ и ВЦ СО АН СССР, 1978, с. 128—138. 15. Зизин М. Н., Загацкий Б. А., Темноева Т. А., Ярославцева Л. Н. Авто¬ матизация реакторных расчетов. М.: Атомиздат, 1974. 102 с. 16. Тыугу Э. X. На пути к практическому синтезу программ.— Киберне¬ тика, 1976, № 6, с. 34—43. 17. Лавров С. С., Залогова Л. А., Петрушина Т. И. Принципы планирования решения задач в системе автоматического синтеза программ.— Про¬ граммирование, 1982. № 2, с. 35—43. 18. Лаврищева Е. И. Подход к промышленной технологии изготовления больших программ.— В кн.: Перспективы развития в системном и тео¬ ретическом программировании: Тр. Всесотоз. симпоз. Новосибирск: ИТПМ и ВЦ СО АН СССР, 1978, с. 122-127. 19. Бежанова М, М. Спецификация модели проблемно-ориентированной системы: Препр. ВЦ СО АН СССР № 361. Новосибирск, 1982. 28 с. 20. Ершов А. П. Некоторые субъективные замечания к актуальным пробле¬ мам программирования.— В кн.: Перспективы системного и теорети¬ ческого программирования: Тр. Всесотоз. симпоз. Новосибирск: 1979, с. 113—127. 21. Касьянов В. Н., Поттосии И. В. Системы конкретизации: подход и ос¬ новные понятия: Препр. ВЦ СО АН СССР № 349, Новосибирск. 1982. 22 с. 22. Ильин В. П., Петрова С. И. Модульная структура библиотеки итера¬ ционных алгоритмов решения разностных уравнений: Препр. ВЦ СО АН СССР № 9. Новосибирск, 1976, с. 14—24. 23. Бежанова М. М. Входные языки пакетов прикладных программ: Препр. ВЦ СО АН СССР № 168. Новосибирск, 1979. 30 с. 24. Бежанова М. М. Встроенные проблемно-ориентированные системы: Препр. ВЦ СО АН СССР № 205. Новосибирск, 1979. 30 с. 25. Тодорой Д. Н. Создание средств машинной графики методом расширяе¬ мых языков и систем: Автореф. дис... д-ра физ.-мат. наук. Киев: Ин-т кибернетики АН УССР, 1981. 40 с. 26. Велъбицкий И. В., Ходаковский В. И., Шолмов Л. И. Технологический комплекс программ на машинах ЕС ЭВМ и БЭСМ-6. М.: Статистика, 1980. 263 с. 27. Korting 5., Mager К., Riechert F. Realisierung des Systems DEPOT auf ESER-Anlagen.— Weiterbildungszentrum fur mathematische Kyber- netik und Rechentechnik Informationsverarbeitung. Dresden: 1979, Heft 37, s. 63—69. 27
28. Велъбицкий И. В. Метаязык R-грамматпк.— Кибернетика, 1973, № 3. с. 47—63. 29. Koskimies К., Raiha K.-J., Sarjakovski М. Compiler construction using attribute grammars.— In: Proc, of the sigplan 82 symposium on compiler construction. Boston, Massachusetts, 23—25 iune, 1982, p. 153—158. 30. Lotzsch J. Zur Anwendungsbreite des Systems DEPOT.— Weiterbildungs- zentrum fur mathematische Kubernetik und Rechentechnik Informations- verarbeitung. Dresden: 1979, Heft 37, s. 79—85. 31. Muller E. Die Erarbeitung von Sprachmitteln fiir Planungs-aufgaben im Eisenbahntransport.— Wciterbildungszentrum fiir mathematische Kybep- netik und Rechentechnik Informationsverarbeitung. Dresden: 1979, Heft 37, s. 63-69. 32. Карпов В. Я., Корягин Д. А. Задачи системного программирования, связанные с разработкой пакетов прикладных программ.— В кн.: Пер¬ спективы системного и теоретического программирования. Тр. Всесоюз. симпоз. Новосибирск. ВЦ СО АН СССР, 1979, с. 17—31. 33. Яненко Я. Я., Карначук В. И., Коновалов А. Я. Проблемы математичес¬ кой технологии.— В кн.: Численные методы механики сплошной среды. Новосибирск: ВЦ и Ин-т теорет. и прикл. мех. СО АН СССР, 1977, т. 8. № 3, с. 129—157. 34. Бежанова М. М. Системная программа ТЕНЗОР.—В кн.: Тр. 2-й Все¬ союз. конф, по программированию. Новосибирск: ВЦ СО АН СССР, 1970, с. 33-40. 35. «Радуга-6». Метасистема для построения проблемно-ориентированных языков систем и пакетов прикладных программ/Сухомлин В. А., Бон¬ дарь А. Н., Гончарова 3. В. и др.— В кн.: Материалы VI конф, по экс¬ плуатации вычислительной машины БЭСМ-6. Тбилиси: ВЦ АН СССР и Ин-т прикл. мат-кп тбилисского гос. университета, 1977, с. 92—99. 36. Гололобова С. Я.. Ильин В. Я., Плотникова Г. А. Система модульного программирования МОПР: Общее описание: Препр. ВЦ СО АН СССР № 409. Новосибирск, 1982. 23 с. 37. Корягин Д. А. Об огдтом подходе к проблеме разработки системного обеспечения для задач вычислительной физики.— Программирование, 1982, № 1, с. 44-50. 38. Система обеспечения комплексов программ математической физики/ Воронов А. В., Зименков В. И., Легоньков В. И. и др.: Препр. ИПМ АН СССР № 49. М., 1979. 26 с. 39. Светлакова Ф. Г. Специализированный язык взаимодействия с информа¬ ционной базой пакета программ: Препр. ВЦ СО АН СССР № 254. Но¬ восибирск, 1980. 30 с. 40. Светлакова Ф. Г. Функциональная структура базовой информационной системы пакета прикладных программ АТОС.— В кн.: Языки и системы программирования. Новосибирск, 1981, с. 147—153. 41. Светлакова Ф. Г. Функциональные возможности пользователей в базо¬ вой информационной системе пакета прикладных программ АТОС.— В кн.: Математическая теория и практика систем программного обеспе¬ чения: Тр. советско-болгарского совещания. Новосибирск: 1982, с. 150-160. 42. Светлакова Ф. Г. Организация информационной базы пакета приклад¬ ных программ АТОС.— В кн.: Комплексы программ математической физики: Материалы VII Всесоюз. семинара по комплексам программ математической физики. Новосибирск: 1982, с. 86—91. 43. Братухина В. А., Курляндчик Я. М., Непомнящих Г. И., Светлакова Ф. Г. Система автоматизации подготовки документации. Документатор БЭСМ-6. Документатор ЕС ЭВМ: Препр. ВЦ СО АН СССР № 370. Но¬ восибирск, 1982. 22 с. 28
УДК 519.685 СИСТЕМА МОПР ДЛЯ АВТОМАТИЗАЦИИ РАЗРАБОТОК И ЭКСПЛУАТАЦИИ ПАКЕТОВ ПРИКЛАДНЫХ ПРОГРАММ С. П. Гололобова, В. П. Ильин Система модульного программирования — МОПР предназна¬ чена для автоматизации разработок и поддержки функциониро¬ вания пакетов прикладных программ (ППП). Она позволяет ав¬ томатизировать основные этапы технологии решения приклад¬ ных проблем: формирование и развитие библиотеки модулей, определяющих класс задач и алгоритмов (включение новых мо¬ дулей или исключение старых, их редактирование, апробирова¬ ние, документирование и т. д.), подготовка исходной информации и задания для расчетов, вывод результатов в наглядной форме, обмены данными с внешней памятью, организация вычислитель¬ ного процесса для задачи. Класс задач мы определяем как некоторое множество отдель¬ ных задач достаточно многочисленных, но имеющих общие свой¬ ства в отношении применяемых алгоритмов и информационных массивов [1, 2]. Реализация алгоритмов для класса задач пред¬ полагается основанной на модульном принципе, т. е. выделяются «математические модули», каждый из которых осуществляет ре¬ шение частной подзадачи и определяется исходными данными, применяемыми методами и результатами. Математическое обеспе¬ чение класса задач состоит из совокупности таких модулей, ин¬ формационных и управляющих связей, определяющих последо¬ вательность операций при решении конкретных задач. Систему МОПР можно рассматривать как универсальное си¬ стемное наполнение ППП, не зависящее от функциональных ком¬ понентов, определяющих предметную область [3]. Основные принципы системы МОПР изложены в [4], при ее разработке использовался опыт эксплуатации системы КСИ- БЭСМ [5] для решения задач электрооптики, а также ряда дру¬ гих пакетов программ (см. литературу в 1—3]). В данной работе описывается реализация первой версии системы, ориентированной на решение классов задач в рамках мониторной системы «Дубна» на БЭСМ-6 [6]. Рассматриваемый уровень системы МОПР можно интерпрети¬ ровать как первый этап автоматизация решения прикладных задач, являющийся базой для построения более развитых паке¬ тов, основанных на автоматическом модульном анализе задачи, планировании оптимальной последовательности вычислений, ор¬ ганизации виртуальной памяти, использовании диалога с ЭВМ и т. д. Такого типа проблемы или ставились, или разрабатывались н различных работах (см., например, обзор в [1, 2]). 29
1. ОБЩАЯ ХАРАКТЕРИСТИКА СИСТЕМЫ Программными средствами .системы МОПР являются аппарат стандартных переменных, библиотека модулей и макросов, ар¬ хивы, редактор, язык модульного программирования, язык биб¬ лиотечных заказов и собственное информационное обеспечение. Стандартными переменными объявляются величины, обычно употребляемые при решении данного класса задач. Они имеют фиксированные имена и спецификации, которые хранятся в со¬ ответствующем каталоге. Введение таких каталогизированных переменных позволяет автоматизировать операции ввода данных (в том числе с использованием принципа умолчания), вывода результатов в стандартных форматах, интерфейс между модуля¬ ми, работу с архивами. В МОПР включается временный (барабанный) архив — для за¬ поминания массивов в процессе решения одной задачи, и постоян¬ ный (ленточный или дисковый) архив — для обмена данными между разными задачами. Архивные средства содержат простые операторы обмена и защиту информации по паролям. Библиотека системы включает модули, реализованные в виде процедур или функций на языках Фортран, Алгол и подпрограмм на автокоде Мадлен. Храниться они могут как в форме исходных программных текстов, так и в качестве модулей загрузки. В системе предусматривается тип генерируемых модулей, представленных в библиотеке не законченными процедурами, а фрагментами программных текстов. Вызов такого модуля предпо¬ лагает этап сборки, или генерации, окончательного текста про¬ граммы в зависимости от исходных данных решаемой задачи на основе включаемых заранее в систему условий генерации. Исполь¬ зование генерируемых модулей сокращает общий объем программ¬ ных текстов при формировании развитых, даже избыточных библиотек, имеющих для отдельных подзадач различные вариан¬ ты алгоритмов, которые обладают зачастую текстовой близостью, но отличаются сравнительной эффективностью для разных исход¬ ных данных. При этом решается проблема достижения экономи¬ ческого решения отдельных задач и вместе с тем обеспечивается достаточная универсальность пакета в целом. Для обеспечения возможности автоматизации выбора алго¬ ритмов в систему вводятся так называемые макромодули. Макро¬ модуль определяется как группа модулей, решающих по-разному одну подзадачу и имеющих однотипные входные и выходные данные. Макромодуль имеет свое имя и может быть вызван из управляющей программы при решении задачи, причем этот вы¬ зов предполагает этап выбора модуля из данной группы (на ос¬ нове заложенных заранее в систему критериев). Каждый модуль снабжается своим паспортом, хранящимся тоже в библиотеке и содержащим информацию о его типе, языке реализации, входных, промежуточных и выходных переменных, а также о требуемых ресурсах. Данные о составе библиотеки, рас¬ 30
положении модулей и паспортов содержатся в библиотечном каталоге. Предполагается, что вычислительный процесс для задачи опи¬ сывается пользователем в виде блок-схемы, представляющей со¬ бой управляющую программу на языке модульного программи¬ рования. Этот язык является расширением Фортрана и содержит операторы вызова модулей (не зависящие от их типов и языков), обращения к архивам и содержит средства параметрической мак¬ рогенерации. В схеме могут употребляться как обычные фортра- новские величины, так и стандартные переменные, причем для последних не требуются спецификации, упрощается форма пере¬ дачи параметров модулям и введены некоторые арифметические действия над векторами. Для служебных операций, связанных с формированием функ¬ ционального наполнения, модификациями и расширениями па¬ кетов программ, предназначается язык библиотечных заказов. Сюда включаются операторы действий над библиотечными мо¬ дулями и макросами (включение новых или исключение старых, редактирование, документирование и др.), изменения состава стандартных переменных, заказов разделов архива пользова¬ телями. Основными компонентами системы МОПР являются програм¬ ма-библиотекарь для реализации библиотечных заказов и про¬ цессор с языка модульного программирования — программа, формирующая вычислительный процесс для решаемой задачи и организующая интерфейс с монитором «Дубна». Все системные компоненты реализованы на версии Алгола [7] при интенсивном использовании средств работы с битовыми и строковыми перемен¬ ными. Сама система располагается на одной магнитной ленте, а при заказе разделов архива больших объемов могут быть исполь¬ зованы дополнительные ленты. Использование системы производится или в режиме форми¬ рования пакета, или в режиме счета. В первом случае пользова¬ тель подготавливает список библиотечных заказов и информацию к ним (тексты модулей, макросов, паспортов и т. д.), а во втором — схему решения и исходные данные задачи. В обоих случаях про¬ хождение задачи в рамках МС «Дубна» состоит из двух этапов. Сначала происходит анализ данных пользователя и формирова¬ ние управляющих «дубнинских» карт для непосредственного вы¬ полнения задачи. В счетном режиме при этом формируется также управляющая программа решения задачи, содержащая вызовы модулей, описания переменных и процедур, обращения к внеш¬ ним устройствам и другие необходимые операции. После этого происходит возврат в МС «Дубна» с передачей сформированного пакета управляющих карт, а дальше следует собственно процесс решения. 31
2. ОПИСАНИЕ ОСНОВНЫХ КОМПОНЕНТОВ Переменные системы МОП Р. В МОПР перемен¬ ные делятся на базовые и стандартные. Базовые — это или форт- рановские переменные в управляющей программе, или перемен¬ ные языков реализации модулей. Все операции ввода-вывода с ними осуществляются средствами MG «Дубна» и соответствующих языков. Стандартные переменные — это величины, часто употребляе¬ мые при решении класса задач, на который ориентирован пакет программ, сформированный и функционирующий на базе данной системы. Все стандартные переменные имеют свои определенные имена, спецификации и канонические значения, зафиксированные в каталоге стандартных переменных. В; каталог включаются пе¬ ременные, являющиеся параметрами библиотечных модулей, а также те, которые могут употребляться в управляющей програм¬ ме при решении какой-либо прикладной задачи из рассматривае¬ мого класса. Стандартные переменные могут иметь следующие типы: целый, вещественный, логический, битовый и строковый. Переменные всех типов, кроме строковых, могут быть простыми (скалярными) или одно — дву- и трехмерными массивами. Границы индексов массивов могут задаваться или целыми числами, или значениями целых стандартных переменных. Значением строковой стандарт¬ ной переменной является совокупность символов числом не более шести. Каноническое значение стандартной переменной — это такое, которое используется при решении прикладной задачи в «МОПРовском» пакете программ, если соответствующая величина участвует в расчетах, но не задается пользователем в исходной информации. Для стандартных переменных — массивов кано¬ нические значения есть нуль (если тип — целый, вещественный или битовый) или «истина» (для логических переменных), а для скаляров — задаются при включении переменных. Для вещественных переменных могут быть определены также физические размерности и единицы измерения. (Например, рас¬ стояние или время могут задаваться или выводиться на печать пользователем в удобных для него единицах: метр, сантиметр, миллиметр или минута, секунда, миллисекунда и т. д.). Единицы измерения указываются при вводе исходных данных или выводе результатов счета в виде фиксированных имен. Назначением стандартных переменных является упрощение для пользователя некоторых рутинных операций при решении прикладных задач: ввода исходной информации (с использова¬ нием принципа умолчания), обмена данными между различными задачами или между разными модулями — в процессе решения одной задачи, вывод результатов в наглядных стандартных фор¬ матах с указанием (при необходимости) используемых физиче¬ ских единиц, сложения (вычитания) массивов и умножения их на скалярные величины. 32
Включение новых стандартных переменных (или исключение старых) проводится с помощью операторов языка библиотечных заказов. При включении новых модулей в библиотеку системы рекомен¬ дуется, чтобы их параметры являлись стандартными переменны¬ ми __ это позволяет упростить написание управляющей програм¬ мы. Для этого переменные модулей должны или употребляться с именами соответствующих величин в каталоге, или объявляться новыми стандартными переменными и включаться в каталог. Подчеркнем, однако, что рекомендация является пожеланием, ио не обязательным требованием. Библиотека модулей и макросов. Системная библиотека является средством организации работы с отдельными фрагментами алгоритмов, оформленных в виде программных мо¬ дулей или макросов и используемых для решения данного клас¬ са задач. Макрос мы определяем как одиосвязный отрывок текста на языке модульного программирования, имеющий свое имя и пас¬ порт. Назначением макроса является осуществление макрогене¬ рации управляющей программы (блок-схемы) решения задачи: если в ней имеется оператор вызова макроса, то реализация его заключается в подстановке соответствующего текста (тела) са¬ мого макроса на место оператора в блок-схеме. Макрос не обязан обладать функциональной самостоятельностью и общим требовани¬ ем к его составлению является то, что после этапа макрогенерации управляющая программа должна быть правильной. В тексте мак¬ роса может быть оператор вызова другого макроса, однако ре¬ курсивные вызовы не разрешаются. Вызов макроса допускается простой и параметрический. Простой вызов предполагает подстановку текста макроса в его неизменном виде, а параметрический — с одновременной заменой формаль¬ ных параметров макроса на фактические. Формальные и факти¬ ческие параметры — это отрывки текста, указываемые соответ¬ ственно в паспорте макроса и в операторе вызова. При вызове подстановка соответствующего фактического параметра произ¬ водится по всему тексту макроса. Паспорт макроса включает в себя список формальных парамет¬ ров и служебную информацию. Модуль в системе МОПР определяется как программная реа¬ лизация достаточно содержательной части алгоритма (подзада¬ чи), имеющая свое имя, паспорт, включенная в состав библиотеки и оформленная в виде процедуры, подпрограммы или функции на одном из алгоритмических языков базового обеспечения. Модули допускаются следующих типов: языковые, загрузоч¬ ные, генерируемые и макромодули. Языковыми модулями явля¬ ются процедуры или функции на языках Алгол, Фортран или на автокоде Мадлен. Загрузочные модули — это оттранслированные языковые модули, хранящиеся в библиотеке в форме «модулей загрузки» МС «Дубна». 2 Заказ № 485 33
Генерируемые модули — это такие, которые хранятся в биб¬ лиотеке программными фрагментами на алгоритмических языках и выполнение которых включает предварительный этап генера¬ ции (сборки) процедуры, подпрограммы или функции из отдель¬ ных частей. Выбор необходимой конфигурации для каждого конкретного случая производится по заранее вложенным в биб¬ лиотеку критериям. Генерируемые модули представляются в виде основного текста — «скелета» модуля, состоящего из поименованных отрывков сим¬ вольной информации, и вспомогательных фрагментов — «вста¬ вок». Редактирование заключается в исключении,' добавлении или замене фрагментов «скелета» с использованием библиотечного набора «вставок». Макромодуль — это группа модулей для решения одной пол¬ задачи, имеющая свое имя и паспорт в составе библиотеки. В одну группу могут входить модули на различных языках, в том числе модули загрузки и генерируемые модули. Макромодуль фактически объединяет набор разных модулей с одинаковыми функциями, а реализация обращения к макромодулю включает этап предва¬ рительного выбора конкретного метода на основе анализа исход¬ ных данных по заложенным в его паспорте критериям. Модуль, входящий в состав группы макромодуля, может вызываться не¬ посредственно, в обход блока выбора метода. Кроме того, такой модуль сам может быть макромодулем. Отметим, что схемы выбора модулей и их генерации анализи¬ руются статически, т. е. один раз до счета задачи. Каждый библиотечный модуль может содержать вызовы дру¬ гого модуля любого типа и языковой реализации, в том числе макромодуля и генерируемого модуля. Внутренние вызовы моду¬ лей должны описываться по правилам обращения к подпрограм¬ мам или процедурам на соответствующих языках. Библиотека системы, помимо самих модулей, содержит тексты их паспортов и каталог модулей. Каталог включает имя модуля (для макромодуля это означает имя соответствующей группы мо¬ дулей) и координаты расположения тела модуля и его паспорта в библиотеке. Паспорт модуля содержит следующую информацию. 1. Тип модуля (макромодуль, генерируемый модуль, готовый модуль на алгоритмическом языке или загрузочный модуль). 2. Вид модуля (языковое представление модуля, связанное со способом доступа к нему), который зависит от того, является модуль процедурой или процедурой-функцией, а также от язы¬ ка написания: язык загрузки, автокод, Фортран, Алгол-60. 3. Список аргументов модуля. 4. Список результатов. 5. Список промежуточных величин. 6. Список формальных параметров. 7. Список имен вызываемых модулей. 8. Объем занимаемой оперативной памяти. 9. Примерное время счета. 34
10. Дополнительная информация о модуле. Описания (3—10) в паспорте модуля могут отсутствовать. Для генерируемого модуля и макромодуля в состав паспорта включаются тексты условий генерации или выбора нужного мо¬ дуля в зависимости от значений стандартных переменных. Системный архив. Архивные системные средства предназначены для операций с внешней памятью над стандартны¬ ми переменными. Архив разделяется на постоянный (ленточный или дисковый) — для обмена данными между разными задачами и временный (барабанный) — для интерфейса между модулями в процессе решения одной задачи. Запись в постоянный и временный архивы, чтение и исклю¬ чение переменных из разделов постоянного архива производится операторами языка модульного программирования. Не могут быть записаны две переменных под одинаковыми именами. За¬ пись (и соответственно чтение) в архив производится в двух ва¬ риантах: при сохранении стандартного имени переменной в ар¬ хиве или с присвоением переменной в архиве нового имени. Если при записи переменной ее архивное имя не совпадает ни с каким именем в каталоге раздела архива, то для нее формируется своя строчка каталога. В противном случае запись нового зна¬ чения производится на месте старого, и только при совпадении размерности записываемой и уже записанной переменных. Язык модульного программирования. Язык модульного программирования реализован как средство напи¬ сания управляющей программы (блок-схемы) решения прикладной задачи с помощью системы МОПР. Он является расширением Фортрана в первую очередь благодаря введению операций вызовов модуля и макроса. Дополнительные возможности обеспечиваются также использованием стандартных переменных, операций обра¬ щения к архивам, арифметических действий с массивами и неко¬ торых других средств. Средства языка МОПР включают все конструкции Фортрана, реализованные в составе МС «Дубна». Мы остановимся только на отличительных особенностях языка модульного программирова¬ ния, употребляя без пояснения некоторые понятия Фортрана в их обычном смысле. Управляющая программа решения задачи представляет собой текст на языке МОПР (в частном случае — на Фортране). Форма записи операторов МОПРа та же, что в Фортране: как правило, один оператор набивается на одной перфокарте, спра¬ ведливы фортрановские правила переноса оператора на после¬ дующие карты или расположения нескольких операторов на одной перфокарте. Каждому оператору МОПРа должен предшествовать символ %. Допустимыми символами в языке модульного программирова¬ ния являются те же, что и в Фортране. В блок-схеме могут употребляться базовые переменные (в полном соответствии с правилами Фортрана) и стандартные. 2* 35
Ввод базовых переменных в управляющей программе произво¬ дится только средствами Фортрана, а для стапдратных — преду¬ смотрен системный ввод, но может использоваться и фортраном- ский ввод данных. Формально стандартными переменными для данной задачи являются такие, которые включены пользова¬ телем в состав исходных данных при системном вводе и описаны в каталоге стандартных переменных. Такие переменные в блок- схеме неявно считаются имеющими свои описания спецификаций и начальные значения. Средства ввода данных. Ввод исходных данных при решении задачи для базовых переменных производится по общим правилам МС «Дубна». Стандартные переменные могут вводиться с помощью фортрановских операторов в управляющей программе, но для них предусмотрены также специальные средства ввода. Системный ввод инициируется оператором % DATA и произ¬ водится единообразным заданием для данных всех типов в виде строки символов. Задание любой величины заключается в круг лые скобки и состоит из ее имени и значения, разделяемых зна¬ ком равенства. Задания разных величин разделяются запятыми. После имени вещественной переменной в круглых скобках может указываться имя единицы измерения. Если оно не указывается, то вводимое значение переменной предполагается имеющей ту же единицу измерений, что и каноническое значение. Единица из¬ мерения вводимой переменной должна быть указана в соответст¬ вии с размерностью ее канонического значения. Значения простыл переменных всех типов задаются по форме, принятой в версии языка Алгол-ГДР (строковые стандартные переменные допуска¬ ются длиной не более шести символов). Массивы представляются в виде списков значений их элементов, разделяемых запятыми. Для сокращения записи многократно повторяющихся подряд значений массивы могут описываться заданием элемента массива в круглых скобках и следующего перед ним числа его повторений, как в операторе DATA в Фортране. Представление значений стандартных переменных в памяти производится в соответствии с их типами по каталогу. Вывод на печать как базовых, так и стандартных переменных может задаваться в блок-схеме по правилам Фортрана. Для стандартных переменных, кроме того, возможна печать с помощью оператора SPRINT, предусматривающего указание единиц из¬ мерения величин, использование некоторых стандартных форма¬ тов и спецификаторов полей вывода. Операции обращения к модулям. Оператор вызова модуля яв¬ ляется одним из основных в языке модульного программирования. По форме он совпадает с вызовом процедуры или процедуры- функции в Фортране. Фактическими параметрами модуля могут быть любые из ба¬ зовых или стандартных переменных, допускаемые языком реа¬ лизации модуля. 36
Операторы вызова модуля-nj отц дуры и модул„-<1 уш;цИ11 j одинаковую форму для различных языковых реализаций и любой структуры: макромодулей, генерируемых, языковых и загрузоч- пых модулей. Рассмотренные вызовы предполагают загрузку модуля в опе¬ ративную память на все время решения задачи. При повторном вызове модуля загрузка модуля не производится, если он уже находится в оперативной памяти. Для экономии памяти при ре¬ шении задач с большим числом вызываемых модулей предусмот¬ рен вызов д одуля с освобождением занимаемой им оперативной па¬ мяти по окончании его работы. Такого вида вызов разрешается для модулей любого типа, а соответствующий оператор вызова отли¬ чается от вышеописанного только заменой слова CALL на CALL LOAD GO. Вызов макроса. Оператор вызова макроса начинается со слу¬ жебного слова МАС, за которым следует имя макроса и, возможно, список фактических параметров. Результат действия оператора заключается в том, что в блок- схеме задачи на место текста «МАС (имя макроса) (список факти¬ ческих параметров)» подставляется тело макроса (с заменой его формальных параметров на фактические, если последние указаны в вызове). Операция обращения к архивам. Системные операторы обра¬ щения к архивам предназначены для информационных обменов в управляющей программе, связанных со стандартными пере¬ менными. Допускаются следующие формы употребления «архив¬ ных» операторов: WDRUM (N, (список переменных)) — запись во временный архив указанных в списке переменных; RDRUM (N, (список переменных)) —чтение из временного архива; WTAPE (N, (список переменных)) — запись в постоянный архив; RTAPE (N, (список переменных)) — исключение из постоян¬ ного архива указанных в списке переменных; EXCLUD (N, (список переменных)) — чтение из постоянного архива. Здесь N — целое число без знака — означает номер (от 0 до 7) раздела постоянного архива, к которому делается обращение. Номер раздела может опускаться, что воспринимается как обра¬ щение к нулевому разделу. Во временном архиве разделы не фор¬ мируются. В приведенных выше операторах «список переменных» содер¬ жит указатели отдельных переменных, каждый из которых вклю¬ чает стандартное имя переменной и его архивное имя. Если архив¬ ное имя записываемой переменной совпадает со стандартным, то оно может не указываться. Во временном архиве архивное имя не указывается, поскольку оно всегда считается совпадающим со стандартным. 37
В один раздел архива, а также во временный архив не могут быть записаны две переменные с одинаковыми именами. Выполнение операторов записи сопровождается занесением строки каталога архива для соответствующей переменной и выдс< лением участка памяти в архивном файле. Если же в каталоге уже есть строка с таким именем, то новая строка не формируется, а запись производится на ранее выделенное место. Если при этом записываемая переменная — массив с длиной, большей отведен¬ ного ранее участка файла, то записывается только часть такого массива и выдается соответствующее сообщение. Для оператора EXCLUD в списке переменных указываются только архивные имена. Выполнение этого оператора заключается в стирании соответствующей строки каталога архива. Арифметические действия с массивами. В тексте блок-схемы решения задачи допускается выполнение операций сложения стандартных переменных — вещественных массивов одинаковой структуры, а также их умножения на скалярную переменную. Результат сложения (или вычитания) двух или более массивов есть массив той же размерности и с теми же границами индексов, что у операндов (если последние имеют разную структуру, то операция сложения над ними не определена). Умножение массива на скаляр, как и сложение массивов, понимается покомпонентно, причем при записи такого произведения сомножители можно писать в любой последовательности. Аналогично покомпонентно определяется действие оператора присваивания, если по обе части его находятся массивы одинаковой структуры. Язык библиотечных заказов. Язык библио¬ течных заказов предназначен для пользователя таких операций, как расширение состава библиотеки (т. е. включение новых модулей, макромодулей и макросов), ее редактирование и выдача на печать отдельных компонентов. Кроме того, сюда включены операторы заказа раздела архива и включения или исключения стандартных переменных. Описание требуемых библиотечных операций представляется в виде БИБЛИОТЕЧНОГО ЗАДАНИЯ, включающего список отдельных библиотечных заказов (обрамляемый служебными словами БИБЛИО и ООО). Библиотечные операции подразуме¬ вают проведение контроля работы пользователя с диагностикой ошибок. Общий вид библиотечного задания имеет вид БИБЛИО 1-й заказ последний заказ ООО Заказ — это операция над элементом данных системы или ее разделом. Введены следующие операции: ВКЛЮЧИТЬ, ВЫДАТЬ. ТРАНСЛИРОВАТЬ, ИСКЛЮЧИТЬ, ЗАМЕНИТЬ, ДОБАВИТЬ. Элементами данных являются МАКРОС, СП (стандартная пере¬ 38
менная), ФИЗ РАЗ (физическая размерность), КАТАЛОГ, ЗАГРУ- ЗОЧНЫЙ МОДУЛЬ, ЯЗЫКОВЫЙ МОДУЛЬ, МАКРОМОДУЛЬ, ГЕНЕРИРУЕМЫЙ модуль, архив, информационный ФАЙЛ. К компоненте МОДУЛЬ применимы разбиения по разде¬ лам ТЕЛО модуля, ПАСПОРТ, ИМЯ, ВСТАВКА. В свою очередь, раздел ПАСПОРТ разбивается на подразделы: ВИД, АРГУМЕНТ, ТИП, РЕЗУЛЬТАТ, ПРОМЕЖУТОЧНЫЙ, ВЫЗОВ, МОДУЛИ, ПАМЯТЬ, ВРЕМЯ, УСЛОВИЯ, ПЕРЕМЕННЫЕ, информа¬ ция. Операция ВКЛЮЧИТЬ компоненту подразумевает: внесение имени компоненты в каталог; запись самой компоненты; запись данных о расположении этой компоненты. По директиве ИСКЛЮ¬ ЧИТЬ компоненту происходит вычеркивание соответствующих строк каталогов. Директива ТРАНСЛИРОВАТЬ предназначена для расшире¬ ния библиотеки загрузочных модулей. Директивы ЗАМЕНИТЬ и ДОБАВИТЬ служат для изменения текстов. 3. СТРУКТУРА СИСТЕМЫ И ПОРЯДОК ФУНКЦИОНИРОВАНИЯ Структура системы определяется программными компонентами и компонентами данных. К компонентам данных МОПР относятся: оглавление системы, библиотеки модулей, библиотека макросов, файл служебных пас¬ портов, архив, файл информации. Программными компонентами системы являются: управляющая программа, программа-библиотекарь, редактор текстов, процес¬ сор, информатор. Программные компоненты системы реализованы в виде отдель¬ ных самостоятельных подпрограмм и могут работать независимо. Компоненты данных системы являются данными прямого доступа. Система МОПР работает в следующих режимах: формирование пакета для МС «Дубна», модификация и расширение библиотек, редактирование текстов, выдача информации. Сформированный системой пакет может выполнять следующие задания: трансляция и счет, счет, трансляция, счет и запись пакета на МЛ или МД; трансляция модулей и запись в библиотеку; перфорация перфокарт; создание из модулей системы файла тек¬ стов МС «Дубна» на МЛ или МД. При обнаружении ошибки в задании пользователя происходит выдача сообщения о характере ошибки и ее местонахождении. Дальнейшая работа идет только в режиме синтаксического кон¬ троля. Программа-библиотекарь. Программа-библио¬ текарь обрабатывает библиотечные заказы, с помощью которых можно создавать, расширять и модифицировать библиотеку систе- МьЬ файлы текстов паспортов, файл информации. Библиотекарь 39
также подготавливает текст на связь с внешними устройствами (АЦПУ, МБ, МЛ). Редактор систем ы. Редактор текстов позволяет редактировать по строкам и контекстно библиотечные модули и и\ паспорта. Отредактированные модули поступают в формируемы!; пакет. По желанию пользователя модуль может быть записан в библиотеку с прежним или с новым именем. Все редактируемые и отредактированные карты печатаются. Существует и режим пе¬ чати полных текстов. С помощью редактора можно влиять на систему вызова модулей: брать текстовые модули при наличии загрузочных вариантов, исключать вызываемые модули. Процессор системы. Процессор просматривает входную программу пользователя на языке МОПР. При работе процессора операторы МОПРа переводятся в операторы Фортра¬ на. При вызове модуля из библиотеки вызываются все указанные в паспорте модули, и если среди них хотя бы один реализован на Алголе, то формируется головная программа на Алголе. Если во входной программе по LOAD GO вызывается модуль, написанный на Алголе, то будет сформирован пакет, правильный в смысле правил МС «Дубна». Если работе процессора предшествовала работа редактора, то через управляющую программу передается информация о рас¬ положении отредактированных модулей, списки текстовых и от¬ меняемых модулей. Имеющиеся во входной программе пользователя обращения на языке МОПР к внешним устройствам (АЦПУ, ВУ, МБ, МД, МЛ) заменяются на вызовы соответствующих системных программ. При вызове макроса происходит считывание текста макроса с заменой формальных параметров на фактические и передача его на обработку процессором как обычного входного текста про¬ граммы. При вызове макромодуля происходит выбор модулей в зависи¬ мости от входных данных, а при вызове генерируемого — генера¬ ция модуля по условиям. ? Информатор. Информатор МОПР выдает информацию о системе и инструкцию к пользованию. Возможна выдача по раз¬ делам. Управляющая программа системы (УПС). УПС просматривает текст входного задания пользователя и по управляющим картам системы запускает соответствующие про¬ граммные компоненты: библиотекарь, редактор, процессор, ин¬ форматор. После окончания работы одной компоненты происходит анализ выходной информации. При отсутствии ошибок происходит вызов следующей компоненты с передачей информации о резуль¬ татах работы предыдущей. Каждый компонент может работать в одиночном режиме. В функции УПС входит дооформление пакета для «Дубны» и передача управления на начало этого пакета. УПС осуществ¬ ляет также ввод данных к задаче. 40
4. П1ИМЕГЫ РАГСТЫ СИСТЕМЫ В настоящее время проводится работа по эксплуатации ППП ЭРА [8] для решения задач электрооптики в рамках системы МОПР. ППП ЭРА был разработан ранее как комплекс подпрограмм на языках Фортран, Алгол и Мадлен, с достаточно сложным набором входных языков, информационных обменов, и насчитывает более 200 модулей. Мы проиллюстрируем некоторые простые случаи ра¬ боты системы МОПР с этим пакетом программ. Приведем пример работы библиотечного компонента системы. Пусть задание пользователя имеет вид I. I ; БИБЛИО I ВКЛ-ЯЗЫК-SWEET: ПАСПОРТ ? < j ЯЗЫК: ФОРТРАН; ’ ТИП: ПРОЦЕДУРА; МОДУЛИ: FORVSW, ORDER, BACKSVT} > ВЫДАЙ-ЯЗЫ-ТВЕ: МОДУЛЬ ООО В этом случае выдача результата работы на АЦПУ выглядит в соответствии с II. Далее приводится текст модуля IBE. Пример Л ОБРАБАТЫВАЕТСЯ ЗАКАЗ: 2 ВКЛ-ЯЗЫ-SWEET :ПАС ИМЯ ЕСТЬ В КАТ ТЕЛО ПАСПОРТА 0 ЯЗЫ:Ф0РТ; 1 ТИП:ПРОЦ; 2 МОДУЛИ: FORVSW, ORDER, BACKSW; КОНЕЦ ПАСПОРТА СЛУЖ ПАСПОРТ ЗАПИСИ В ЗОНУ 302 ОБРАБАТЫВАЕТСЯ ЗАКАЗ: 3 ВЫДАЙ-ЯЗЫ-IBE: МОДУЛЬ ТЕЛО МОДУЛЯ: < ТЕКСТ-МОДУЛЯ > КОНЕЦ МОДУЛЯ задания на редакцию см. III. Результатом работы будет отредак- Ш РЕДАКТИРУЙ MONFIE : МОДУЛЬ ОТМ 22 ОТМ SERVIS КОНЕЦ М°ДУЛЬ MONFIE с отменой вызываемого модуля -ЖVIS. Данные о расположении отредактированного модуля 41
пойдут на вход процессора, задание которому может выглядеть как IV. Сформированный системой пакет в этом случае имеет вид V. g PROGRAM ПЕЧАТЬ %CALL LOADGO(’PG') %CALL LOADGO('MONFIE') RETURN END ДАННЫЕ < ТЕКСТ ДАННЫХ > ООО х ВЫЗЫВАЕМЫЕ ЯЗЫКОВЫЕ МОДУЛИ: MONFIE ВЫЗЫВАЕМЫЕ ЗАГРУЗОЧНЫЕ МОДУЛИ: LIBLIST: 41563 ***LIBLIST*** ВЫЧИСЛ ELL РОХ СДВИГ PODKA FOY SOS KWA LON ТОЧКА WALJ INP ВСТАВК OTRESK TOLJ СЕТКА GEOM 1 WETWI GRUS ORTOG PODOBL SETKAY PSPY PG ПРОШЕ SIGP PG2M PCIRCL GRIPIC SCH COLLAT SCHABL SPL SLOR ASS TIP ФУНКИИ DIGIT Головная программа соответствует VI. И АЛГОЛ-ГДР ’С ODE’: ПРОГРАММА; 'BEGIN’ ПРОГРАММА; ’END^EOP* Сформированные системы МОПР подпрограммы (VII) — пра¬ вильные в смысле МС «Дубна». Ж ♦PROCEDURE’ SSMONF; ♦BEGIN' LOAD('‘MONFIE) •END’’EOP’ ’PROCEDURE' SSPG; ’BEGIN' LOAD(’'PG''); ’END''EOP' •ФОРТРАН SUBROUTINE ПРОГРА EXTERNAL SSPG, SSMONF CALL ALPROC(SSPG,O) CALL ALPROC(SSMONF,0) RETURN END 42
ЛИТЕРАТУРА 1 Ершов А. И., Ильин В. 7/. Пакеты программ — технология решения прикладных задач: Препр. 13 Ц СО АН СССР № 121. Новосибирск, 1978. 22 с. 2. Ильин В. И. Вопросы технологии пакетов программ для задач математи¬ ческой физики. В кн.: Разработка пакетов прикладных программ. Но¬ восибирск, Наука, 1982, с. 113—129. 3. Карпов В. Я., Корягин Д. А., Самарский А. А. Принципы разработки пакетов программ для задач математической физики: Препр. ИМИ АН СССР № 86. М., 1977. 18 с. 4. Ильин В. И. Об одном варианте системы модульного программирования: Препр. ВЦ СО АН СССР № 9. Новосибирск, 1976. 24 с. 5. Ильин В. И. Численные методы решения задач электрооптики. .Ново¬ сибирск, Наука, 1974. 202 с. 6. Мазный Г. Л. Программирование на БЭСМ-6 в системе «Дубна». М.: Наука, 1978. 271 с. 7. АЛГОЛ-ГДР. Оперативно-информационный материал: Препр. ВЦ СО АН СССР № 74. Новосибирск, 1977. 44 с. 8» Горбенко И. И., Ильин В. 77., Попова Г. С., Свешников В. М. Пакет программ ЭРА для автоматизации электрооптических расчетов. В кн.: Численные методы решения задач электронной оптики. Новосибирск: ВЦ СО АН СССР, 1979, с. 34-60. УДК 519.685 МОБИЛЬНАЯ ИНСТРУМЕНТАЛЬНАЯ СИСТЕМА РАЗРАБОТКИ ПАКЕТОВ ПРОГРАММ А. Л. Шмуидак МИС — мобильная инструментальная система программиро¬ вания — является системой широкого профиля для построения пакетов программ. Она предназначена для автоматизации по¬ строения пакетов с независимыми и вложенными языками. Система МИС работает на ЕС ЭВМ, установлена на МВК «Эльбрус-1» и перенесена на мини-ЭВМ «Норд». Система МИС поддерживает модульную технологию программирования — ее входной язык содержит средства явного описания межмодульных связей, а ее системные программы обеспечивают автоматическую сборку и исполнение рабочей программы из заранее запрограммированных модулей. МИС предназначена для построения пакетов программ с раз¬ ными характеристиками: диалоговых пакетов с развитыми средствами диалога и не¬ большим объемом планирования вычислений; пакетов с автоматическим синтезом программ по модели за¬ дачи (с большим объемом планирования вычислений); пакетов с большим объемом вычислений, и как следствие, с высокими требованиями к эффективности исполнения; пакетов с небольшим объемом вычислений, ио с быстрой реак¬ цией на запросы пользователя в интерактивном режиме. 43
Удовлетворение требований различных пакетов программ вместе с обеспечением переносимости системы сделало разработ¬ ку системы МИС весьма сложной задачей, основные решения которой коротко описаны в данной статье. Прототипом МИС является система программирования ПРИЗ ЕС. МИС является развитием последней с учетом опыта, полу¬ ченного при эксплуатации системы ПРИЗ и пакетов про¬ грамм. Пакеты программ, созданные при помощи МИС, имеют раз¬ витую системную часть, включающую транслятор с входного языка, планировщик вычислений, программы работы с семанти¬ ческой памятью и системную часть, работающую во время ис¬ полнения рабочей программы (семантическую машину). Система МИС обеспечивает инструментальную поддержку ос¬ новных этапов разработки и эксплуатации пакетов прикладных программ. На этапе проектирования ППП МИС позволяет описать об¬ щую структуру пакета: используемые структуры данных и взаимо¬ связи между ними. С помощью такого описания, используя реа¬ лизуемые системой возможности автоматического синтеза про¬ грамм, разработчик может получить алгоритмы решения типовых задач и проверить, соответствует ли проект спецификациям па¬ кета. Таким образом, МИС поддерживает технологию разработки сверху вниз, позволяя гарантировать корректность алгоритма решения задачи, до того как будут разработаны модули нижнего уровня. На этапе разработки системной части пакета МИС представ¬ ляет разработчику необходимую среду. С помощью имеющихся во входном языке средств можно сформировать описание соот¬ ветствующей данному пакету прикладной области (в терминах входного языка УТОПИСТ — описание вычислительной модели). Семантическая память системы — архив моделей — позволяет запоминать такие описания для последующего использования. Архив может хранить иерархии понятий, так что во время ра¬ боты с пакетом пользователь может уточнить, с какой частью описания он хочет работать. Для обеспечения эксплуатации пакета разработчик может воспользоваться имеющимся в системе макрогенератором. Рас¬ познавание макровызова происходит по образцу, имеется воз¬ можность генерации повторяющейся группы с подстановкой зна¬ чений из списка параметров. • j Наконец, при эксплуатации готового ППП МИС предостав¬ ляет пользователю следующие возможности. 1. Описание конкретной модели задачи на основании храня¬ щейся в семантической памяти информации. Модель может за¬ даваться как с помощью описательных средств языка УТОПИСТ, так и с помощью разработанного при создании пакета и реали¬ зуемого с помощью макросредств проблемно-ориентированного языка. 44
2. Постановка задачи и управление ходом вычислений. Язык УТОПИСТ включает оператор постановки задачи, по которому яа основании вычислительной модели синтезируется алгоритм решения задачи. Кроме того, УТОПИСТ содержит традицион¬ ный набор средств управления ходом вычислений. 3. Запуск задачи на счет. Система транслирует написанную пользователем программу на промежуточный язык, распределяет память для используемых объектов модели и подключает необ¬ ходимые модули функционального наполнения пакета. Системный интерпретатор исполняет программу, интерпретируя операторы промежуточного языка и вызывая программы пакета. Отладочные средства системы наряду с традиционными поз¬ воляют вывести алгоритм решения задачи или диагностику в случае, если поставленная задача оказалась неразрешимой. 1. ОБЗОР ВХОДНОГО ЯЗЫКА Язык взаимодействия пользователя с МИС сохранил основ¬ ные черты входного языка системы ПРИЗ. Он разбивается на три части. 1. Язык УТОПИСТ, предназначенный для работы с моделью предметной области. Он состоит из языка определения моделей и языка описания вычислений на модели. 2. Командный язык, предназначенный для управления рабо¬ той МИС. Он включает следующие группы директив: директивы управления семантической памятью, директивы изменения режимов работы системы, средства вызова сервисных программ. 3. Язык макроопределений. Системный макрогенератор по¬ зволяет строить проблемно-ориентированные языки. Основные отличия входного языка МИС от входного языка ПРИЗа. Введено регулярное описание отношений в язык описания моделей; в языке описания вычислений изменены операторы управления и введен новый оператор (применить отношение); язык макроопределений разработан заново. Вычислительная модель. Предметная область описывается на УТОПИСТе в виде вычислительной модели. Вы¬ числительная модель — это совокупность объектов, связанных между собой отношениями. Объектом может быть как простая переменная, так и сложная структура, состоящая из подобъектов, связанных между собой отношениями. Отношение определяет две вещи: во-первых, как, зная зна¬ чения одного множества объектов (входящих), найти значения чторого множества объектов (выходных) и, во-вторых, способ получения этих значений. Вычислительная модель позволяет адекватно описывать пред¬ метную область и в то же время использовать для описаний вы¬ 45
числений непроцедурные возможности, базирующиеся на авто¬ матическом синтезе программ. Язык описания моделей. Определение объектов. Задание объектов возможно одним из трех способов. 1. Объект можно определить как элементарный: целый, ве¬ щественный, логический или текстовый. 2. Объект можно строить из подобъектов, связанных между собой или с другими объектами отношениями. Пример. Line: (Angle:real, Point: (X. Y.real)); 3. Объект строится как производный от другого объекта, наследуя его структуру и отношения; при этом возможно введе¬ ние дополнительных отношений. Пример. Vertline: Line cos Angle = 0; Семантическая память и параметризация объектов. Для созда¬ ния ППП важно иметь возможность долговременного хранения моделей. Для этой цели в МИС имеется семантическая память. Семантическая память организована как иерархия моделей. Обновление семантической памяти текущей моделью осуществля¬ ется соответствующими директивами системы. Семантическая память или указанная пользователем ее часть рассматривается как продолжение текущей модели. Это означает, что если некоторый объект определяется через уже существую¬ щий, то последний ищется сначала в текущей модели, а затем в семантической памяти. Для повышения универсальности хранимых в семантической памяти моделей в МИС имеется возможность параметризации объектов, обеспечиваемая за счет введения специального описа¬ ния типа undef (неопределенный). Это позволяет хранить в се¬ мантической памяти следующее универсальное описание стека: Stack: (Element:undef; Push: rel in Element impl mod (PUSIIEL); Pop: rel out Element impl mod (POPEL)); Естественно, непосредственно использовать такой объект в процессе вычислений система не позволяет. Однако его можно использовать для описания объекта «стек целых»: Intstack: Stack Element type int; Определение отношений. Реализуемая некоторым отношением связь может быть либо модулем из ППП (например, Samprel: relation in X out Y implementation mod (SUBR) указывает, что модуль SUBR вычисляет по входному объекту X выходной объект Y), либо уравнением (например, rel X * Y = Z означает, что если заданы два объекта, то можно вычислить третий). Задание отношений в алгебраическом виде особенно удобно на этапе от¬ ладки модели предметной области, хотя, вообще говоря, являет¬ ся менее универсальным; так, в последнем примере, если нам заданы Y и Z, система будет считать, что можно вычислить X, 46
межДУ тем’ еслы Y равно нулю, это невозможно и во время счета будет выдано сообщение о неразрешимом уравнении. Отношения, заданные с помощью модулей, могут быть пара¬ метризованы. Например, отношение, используемое для решения обыкновенного дифференциального уравнения X = F (Т, X), X (Т0) = Х0, задается следующим образом: rel in Х0, Т0, Т1, N (arg Т, X res F) (arg Т, X) impl mod (DIFF). При этом подразумевается, что модуль DIFF имеет па¬ раметры: начальное значение функции, начальную и конечную точки интегрирования; число отрезков, на которые делится интервал интегрирования; имя модуля, который вычисляет значение правой части урав¬ нения в данный момент времени; имя модуля, которому передаются значения момента времени и значение функции для обработки результатов. Для того, чтобы такое отношение было использовано в про¬ цессе вычислений, в модели должны присутствовать отношения, с помощью которых можно вычислить значение функции по Т и X. Язык описания вычислений. Предоставляемые системой средства описания вычислений разбиваются на две груп¬ пы. К первой — относятся конструкции, использующие семан¬ тику вычислительной модели в полном объеме. В настоящее время в системе есть две такие конструкции: оператор постановки задачи и оператор применения отношения. Во вторую группу входят конструкции входного языка, использующие семантику вычислительной модели лишь частично: модель используется только как описание структуры данных, без учета содержащейся в описании модели информации об отношениях. В данной работе мы не будем подробно останавливаться на второй группе конструкций. Эта часть языка достаточно тради¬ ционна и включает следующие операторы: присваивание, услов¬ ный оператор, цикл, вызов подпрограммы, ввод-вывод с терми¬ нала, блок. Оператор постановки задачи — основное средство описания вычислений в УТОПИСТе — имеет вид: compute (список входных объектов —> список выходных объ¬ ектов). Обработка такого оператора называется планированием. Алгоритм планирования описан в [2]. Отметим, что время пла¬ нирования линейной задачи (т. е. такой, в которой отсутствуют параметрические отношения) линейно зависит от длины модели. В результате планирования строится алгоритм решения за¬ дачи, по которому затем строится фрагмент программы. Если задача оказалась неразрешимой, система может подсказать поль¬ зователю «недостающие» объекты. Оператор применения отношений. Как мы видели выше, оператор постановки задачи автоматически выбирает из модели нужные отношения. В языке имеется возможность явного при¬ 47
менения отношений (оператор epply). Семантика его такая как если бы вызывался реализующий отношение модуль, однако это действие выполняется в более содержательных терминах: мы абстрагируемся от деталей реализации отношения (нмеиц модуля, порядка следования параметров). Кроме того, если от- ношение параметризовано, то происходит планирование вычис¬ лений и синтезируется подпрограмма, вызываемая в процессе применения отношения. 2. РЕАЛИЗАЦИЯ СИСТЕМЫ При разработке были выдвинуты следующие требования к системе. Она должна работать как в диалоговом, так и в пакет¬ ном режиме; быть мобильной, т. е. переносимой на другие ЭВМ с минимальными затратами; быть легко модифицируемой. Второе требование обусловлено тем, что за последнее время создается все большее число различных ППП и усложняется их структура, что делает весьма целесообразным применение системы. Третье — тем, что входной язык системы будет расши¬ ряться за счет дополнительных возможностей описания вычис¬ лительных моделей и языка описания вычислений. Исходя из этих требований система была спроектирована к реализована следующим образом. 1. Трансляция входного текста осуществляется за один про смотр. При этом формируется внутреннее представление модели, список используемых модулей и программа для семантической машины. 2. Представление объектов в семантической памяти и их внутреннее представление совпадают, что значительно ускоряет работу с семантической памятью. 3. Для целей планирования внутреннее представление моде¬ ли преобразуется к списковому виду: каждому объекту при этом сопоставляется список отношений, в которых он участвует, и наоборот, для каждого отношения строится список участвую¬ щих в нем объектов. 4. Требования мобильности и высокой реактивности системы оказали существенное влияние на выбор представления резуль¬ татов трансляции и способ исполнения объектной программы. Объектный код, получающийся в результате трансляции, пред¬ ставляет собой программу для специально разработанной се¬ мантической машины. Семантическая машина имеет стековую архитектуру; ее репертуар команд учитывает особенности вход¬ ного языка, связанные с автоматическим синтезом программ, и имеет средства связи с модулями пакета. При запуске программы на счет сначала подключаются необходимые модули ППП, затем программа исполняется таким образом, что код для семанти¬ ческой машины интерпретируется, а модули пакета исполняются непосредственно. Поскольку основной объем вычислений прихо¬ дится па модули пакета, интерпретация управляющей программы не приводит к существенной потере эффективности. 48
5. За исключением небольшого числа подпрограмм (в основ¬ ном предназначенных для взаимодействия с операционной систе¬ мой) МИС реализована на Фортране. Этот язык обеспечивает высокую степень модульности, он в достаточной степени стандартизован, трансляторы для него имеются практически на всех ЭВМ. 6. С целью обеспечения легкости модификации системы при ее разработке широко применялся «кластерный» подход: для каждой из информационных структур предусмотрен набор мо¬ дулей, реализующих необходимые манипуляции с ними. Кроме того, при таком подходе можно при необходимости разрабаты¬ вать более эффективные машинно-зависимые способы представле¬ ния данных. ЛИТЕРАТУРА 1. Калъя А . ИКахро М. И., Тыугу Э. X. Инструментальная система про¬ граммирования ЕС ЭВМ (ПРИЗ). М.: Финансы и статистика, 1981. 161 с. 2. Тыугу Э. X., Харф М. Я. Алгоритм структурного синтеза программ.— Программирование, 1979, № 4, с. 34—42. УДК 519.687.G ОБ ОДНОМ ПОДХОДЕ К РАЗРАБОТКЕ И ПРИМЕНЕНИЮ СРЕДСТВ ПОДДЕРЖКИ ДИАЛОГОВЫХ ПАКЕТОВ ПРИКЛАДНЫХ ПРОГРАММ А. А. Грановский, Е. П. Епифанова, А. И. Шалагинов Важным методом исследований в различных областях знаний с применением ЭВМ является вычислительный эксперимент. Сред¬ ством проведения экспериментов обычно служат пакеты при¬ кладных программ (ППП). Как правило, они рассчитаны на многократное и длительное использование и представляют собой сложные и дорогостоящие программные изделия. По этой при¬ чине при их разработке и эксплуатации опираются на целый ряд специализированных средств поддержки. При надлежащей организации они в совокупности образуют то, что получило наз¬ вание инструментальной системы (ИС). Возможности* ИС в зна¬ чительной мере определяют организацию пакета, технологию его разработки и характер эксперимента [1]. В статье излагается подход авторовТ к разработке средств поддержки диалоговых ППП. Он характерен тем, что созданная на его основе ИС служит достаточно универсальным средством при разработке ППП и одновременно допускает специализацию, путем которой она может быть затем включена в состав’ готового пакета или использована в основе его^ системного наполнения. 49
Приводятся' доводы в пользу принятого подхода, описываются возможности ИС. На примере ППП для решения ряда задач энергетики показано использование ИС пакетом и ее влияние на его архитектуру. 1. ХАРАКТЕРИСТИКА ИНСТРУМЕНТАЛЬНЫХ СРЕДСТВ Существует объективная потребность в том, чтобы на различ¬ ных этапах работы с пакетом (при программировании, отладке, а затем и при выполнении расчетов) пользоваться едиными ин¬ струментальными средствами. Объясняется это в значительной мере тем, что для крупных программных систем обычно нельзя бывает провести четкую временную грань между названными этапами. Кроме того, часто (особенно в условиях академическо¬ го НИИ) разработчик и пользователь пакета — одно и то же лицо, которому такая унификация была бы весьма полезна. Для достижения желаемого единства инструментальных средств нужно, чтобы они были достаточно универсальными и в то же время гибкими, допускающими необходимую специализацию и настрой¬ ку. Первого можно добиться, заложив в основу построения ИС широко используемые на конкретной ЭВМ базовые средства про¬ граммного обеспечения х. Необходимой же гибкости достигают разработкой интерфейсов между компонентами ИС и базовыми средствами и, с другой стороны, аппаратом макровозможностей. При разработке больших, сложно организованных программ приходится иметь дело с разнообразием форм представления данных. Рабочими объектами могут быть: оттранслированные модули; тексты программ, подлежащие редактированию; доку¬ ментирующий (полный) текст программы. При расчетах, кроме того, могут требоваться схемы счета, текстовые вставки, данные. Все эти различные по-существу компоненты отличаются еще и по чисто технологическим признакам, таким, как время жизни, «ак¬ тивность», характерный размер, стоимость обработки. Их разно¬ родность приводит к необходимости иметь в ИС средства доступа к внешней памяти различного назначения, от стационарных па¬ кетов МД, входящих в состав той или иной системы коллектив¬ ного пользования, до индивидуальных носителей, закрепленных за конкретным пакетом. Важно, что значительная часть пере¬ численных объектов хранится и используется в текстовом виде. Зачастую в такой же форме осуществляется в пакете и межмодуль¬ ный интерфейс, особенно на верхних уровнях иерархии. Поэтому операции над текстом являются весьма существенными функци¬ ями ИС и должны включать развитые средства работы с файлами, диалогового редактирования и макропроцессирования. Важны также вопросы, связанные с организацией пакета и работой с ним. Прежде всего весьма желательна возможность в одном сеансе работы за терминалом выполнять любые действия, 1 В пашем случае речь идет об ЭВМ БЭСМ-6 с ОС ДИСПАК и МС «Дубна». 50
свойственные люоому из этапов процесса «программирование — отладка — расчеты». Чтобы технически наиболее полно вопло¬ тить эту возможность, нужно, чтобы ИС могла: вместе с процессом пользователя функционировать в рамках общих ресурсов; сов¬ местно с ним обрабатывать общие (текстовые) данные; в зависи¬ мости от характера обработки выполнять ее либо в диалоге с человеком, либо автономно, по заранее заданному сценарию. На любом из этапов ИС должна обеспечить оперативное получение результатов на терминале и активное вмешательство в вычисли¬ тельный процесс. Работающая па таких принципах ИС выполнена в Сибирском энергетическом институте СО АН СССР [2]. Ниже мы кратко остановимся на конкретных свойствах системы и ее использова¬ нии при разработке пакетов программ. Вопросы, связанные с организацией, функционированием ППП и его системным на¬ полнением рассматриваются отдельно в следующей главе. ИС состоит из двух крупных независимых компонентов 2, ра¬ ботающих на ЭВМ БЭСМ-6 в МС «Дубна» [3] (МОНИТОР-80). Цели дальнейшего изложения не требуют развернутой характе¬ ристики АПБ. Достаточно только отметить, что он предназначен для хранения и использования библиотек оттранслированных программ на дисках коллективного доступа; библиотеки пред¬ ставляют собой то же самое, что и PERSONAL LIBRARY МС «Дубна». Обращения к ним по записи или считыванию произво¬ дятся по символическим именам. Предусмотрены определенные меры защиты и сохранности информации. Более подробно остановимся на свойствах ТРТ-80. Средства¬ ми МС «Дубна» он загружен статически и записан на один из постоянно установленных МД. Вызов его в решение выполняется в пакете задачи 3 по общим правилам МС и благодаря такому характеру загрузки происходит очень быстро. При вызове ТРТ-80 располагается вслед за резидентом МС, сменяя прежнее со¬ стояние оперативной памяти задачи. Связь с пей он сохраняет через временную библиотеку, внешние файлы и пакет задачи. Языком системы служит фиксированный набор операторов. Их вводят с терминала или задают в том же самом пакете. Операторы можно объединить в несколько функциональных групп. Обмен текстом с в н е ш н и м и ф а й л а м и; в ы- в о д на терминал, АЦПУ, перфокарт ы. ТРТ-80 обеспечивает доступ (чтение и запись) к четырем типам файлов. Ими являются: файлы МС «Дубна» на МЛ, МД, МБ в формате Редактора текстов МС; файлы МС, обмен с которыми ведется по логическим (фортраиным) каналам в текстовом формате; файлы Диалогового монитора ДИМОН [4]; текст листинга АЦПУ. Во всех случаях при чтении текста в рабочий файл системы проис¬ 2 Их названия: АПБ — Архив персональных библиотек и ТРТ-80 — Тер- минальный редактор текстов. Пакетом задачи в МС «Дубна» называется текстовый файл, содержащий некоторое задание на обработку средствами МС. 51
ходит автоматическое преобразование строк к формату редактора текстов МС, а при записи из него — к формату соответствующего файла. Вывод на терминал происходит построчно порциями ц0 12 строк. Печать на АЦПУ идет с разбиением на страницы ц снабжается информацией, полезной при документировании. Редактирование текста. По соответствующим воз- можиостям ТРТ-80 не уступает большинству современных диало¬ говых редакторов [5]. Редактирование может быть строковым ц контекстным, имеются средства для задания различных пара- метров работы. Можно также выполнять и «экранное-редактиро¬ вание» средствами самого дисплея. Работа с листингом АЦПУ. Листинг — это текст с результатами решения задачи, который накапливается ОС ДИСПАК на диске вывода для итоговой печати на АЦПУ. Как над любым текстовым файлом, над ним выполнимы все типовые операции ТРТ-80 и, кроме того, возможны специфические: ав¬ томатизированный анализ результатов с отбором и показом на терминале наиболее значимой информации, незамедлительный вывод на печать при получении интересных результатов, отказ от вывода на бумагу. Макросредства. С их помощью реализуются две важ ные функции системы: управление в пакете задачи и работа ТРТ-80 в качестве макропроцессора. Обе достигаются благодаря тому, что в пакет входят наряду с картами задания МС «Дубна» еще и карты — операторы ТРТ-80 и системы могут поочередно читать карты, занимаясь совместной обработкой пакета. Часть операторовУГРТ-80 служит тому, чтобы структурировать пакет: передать управление любой его части, устроить циклы, выборки, разветвления, перейти в диалоговый режим или опять в автоном¬ ный. Текст пакета можно редактировать и дополнять текстами внешних файлов. При такой организации системы достаточно емкие и содержательные преобразования данных выполняются как одна макрооперация за терминалом. С е р в и с. В эту группу входят средства, реализующие спра¬ вочные и часть управляющих функций. Ими можно определить ресурсы задачи и доказать необходимые библиотеки программ, ленты, диски, тракты МБ, отпечатать протокол работы, перейти на новый терхминал, сделать паузу, выполнить ряд других дей¬ ствий. Таким образом, в языке системы нашли отражение все основ¬ ные этапы обработки текстовых данных. В рамках ТРТ-80 для обработки характерно то, что она: допускает чередование диалогового и автономного режимов; может описывать сложный вычислительный процесс, посколь¬ ку проводится комбинированными средствами ТРТ-80, МС «Дуб¬ на» и программами пользователя; допускает высокую степень автоматизации и специализации за счет выделения характерных процедур обработки в библиоте¬ ки макроопераций. 52
Для иллюстрации того, как система используется на стадии разработки ППП, вкратце опишем процесс отладки некоторой программы. Текст ее может быть написан на любом из алгорит¬ мических языков MG п вместе с пакетом задачи храниться в одном из внешних файлов. Если’пакет будет передан MG, то она оттранслирует програм¬ му и вернет управление ТРТ-80. Последний сообщит о найденных ошибках трансляции и предоставит возможности для их анализа и устранения. Анализ автоматизирован и базируется на доступе к листингу АЦПУ и свойствах самого транслятора. Редактируя исходный текст и повторно транслируя его, можно за несколько прогонов в одном сеансе работы устранить все ошибки такого рода и перейти к отладочному счету задачи, а текст записать во внешний файл. ТРТ-80 также обеспечивает связь с задачей во время счета и делает это несколькими способами. Наряду с просмотром лис¬ тинга можно получить доступ к тем результатам, которые в виде текста задача запишет в свои 'файлы (оператором Фортрана WRITE или его аналогами в других языках программирования). Кроме того, она может самостоятельно поддерживать диалог с пользователем. При естественном или аварийном завершении за¬ дачи управление опять будет передано системе. 2. СИСТЕМНОЕ НАПОЛНЕНИЕ ПРОГРАММНОГО КОМПЛЕКСА СОЮЗ Программный комплекс СОЮЗ предназначен для решения од¬ ной из основных задач управления развитием Единой элекро- энергетической системы страны — выбора рациональной струк¬ туры ее генерирующих мощностей и основной электрической сети на перспективу 10—25 лет [6]. В комплексе реализуется опти¬ мизационная задача большой размерности, поэтому характер расчетов таков, что не все они могут быть проведены в диалоговом режиме. Принятая схема вычислений в необходимых случаях предполагает чередование диалоговой и автономной обработки. Другой особенностью комплекса является то, что он состоит из небольшого числа крупных подсистем с достаточно предопре¬ деленной схемой их выполнения. Поэтому здесь не приходится стоять перед сложной проблемой автоматизированного выбора схемы вычислений. К основным задачам системного наполнения относятся управление подсистемами комплекса, их ресурсами и подготовка заданий для них. Последнее связано со сложностью Модели, необходимостью готовить и учитывать большое число раз¬ личных факторов. Дадим лишь краткий перечень компонентов комплекса СОЮЗ, Поскольку вопросы функционального наполнения рассматрива¬ лись в [7, 8]. БАНК ДАННЫХ — подсистема, предназначенная для фор¬ мирования, редактирования, длительного хранения и использо¬ 53
вания необходимой для проведения исследований технико-эконо¬ мической информации, составляющей содержание базы данных комплекса. ВВОД — МОДЕЛЬ — служит для отбора из базы конкретной исходной информации, необходимой для выполнения расчетов и преобразования ее к требуемым форматам. Часть этих данных может непосредственно содержаться во входном пакете подсистемы. ОПТИМИЗАТОР — осуществляет собственно оптимизацион¬ ный расчет. Возможны различные режимы его работы — первич¬ ный счет задачи, продолжение счета с контрольной точки, уско¬ ренный пересчет решения при изменении части исходной инфор¬ мации. ВЫВОД — производит расшифровку решения, формирование требуемых результирующих показателей и выдачу их на печать по заказанным пользователем табличным формам. ТИПОВЫЕ РЕШЕНИЯ — предназначена для формирования архива так называемых типовых решений и использования их в качестве начальных приближений для сокращения времени сче¬ та задачи. СОЮЗ-1 — диалоговый монитор, координирующий работу подсистем комплекса и помогающий готовить и исполнять задания для них в диалоговом режиме. Рассмотрим, в какой взаимосвязи должны находиться в комп¬ лексе диалоговые системы СОЮЗ-1 и ТРТ-80. Здесь будет оправ¬ дан подход, который принят в некоторых системах взаимодей¬ ствия с имитационными моделями [9]. Суть его состоит в том, что пользователь и модель взаимодействуют через посредников — системный монитор и монитор модели. Такое выделение не одной, а двух компонентов связано с двойственным характером реали¬ зуемых в процессе общения функций. Это же справедливо и в данном случае. СОЮЗ-1 (по аналогии — монитор модели) работает с исследователем в терминах предметной области, помогая ему формулировать очередной этап работы для конкретного исполнителя. ТРТ-80, выполняя роль системного монитора, увязывает компоненты комплекса и организует над¬ лежащий вычислительный процесс. Обе системы поддерживают между собой информационные и управляющие связи и опираются на единый набор базовых средств. В основу организации комплекса положено использование ряда библиотек программ и файлов, размещенных на внешних запоминаю¬ щих устройствах БЭСМ-6 4. Программные модули подсистем комп¬ лекса оформлены как персональные библиотеки МС «Дубна» и находятся в АПБ. Наиболее часто используемые текстовые фай¬ лы хранятся в ДИМОНе, в библиотеке СОЮЗ. Сюда входят: — набор пакетов для вызова в решение подсистем комплекса, в том числе и подсистемы СОЮЗ-1; 4 Здесь не приведены сведения по тем компонентам комплекса СОЮЗ, ко¬ торые связаны с его информационным обеспечением. Этот вопрос рас¬ смотрен в работе [10]. 54
— рабочие файлы для хранения входной информации, обра¬ батываемой подсистемами; — пакеты служебных программ администратора; — описание схем диалога (таблиц «меню»), по которым настраи¬ вается СОЮЗ-1. На индивидуальных носителях хранятся остальные тексты, до¬ ступ к которым возможен через ТРТ-80 и редактор текстов МС «Дубна». Такая схема размещения дает определенные преимущества. Она позволяет начать работу сразу с запуска нужной подсистемы, причем с большой вероятностью необходимая для этого инфор¬ мация оказывается «под рукой» — в АПБ или ДИМОНе. Если предполагается работать в диалоговом режиме, начать нужно с вызова монитора СОЮЗ-1. Он управляется небольшим числом директив и, в свою очередь, может вызывать ряд специализирован¬ ных диалоговых подмониторов. Каждый служит для общения с одной определенной подсистемой комплекса. При реализации диалога использован известный метод «меню». В данном случае он удобен также тем, что позволяет учесть специфику конкрет¬ ной подсистемы. Подготовленное задание переводится во внутреннее представ¬ ление и его можно затем либо исполнить, либо записать в биб¬ лиотеку заданий. То и другое делается с помощью ТРТ-80. В пер¬ вом случае система заказывает необходимые для этого ресурсы и вызывает подсистему — исполнителя. Результаты обработки мож¬ но наблюдать на терминале по листингу АЦПУ, чему способствует табличная форма выдачи. Связь с подсистемами устанавливается также через логические каналы МС «Дубна». В частности, таким путем СОЮЗ-1 передает ТРТ-80 подготовленное задание для записи его в библиотеку ДИМОНа. Все действия по подготовке и выполнению задания, связанные с переходами СОЮЗ-1 ТРТ-80 ПОДСИСТЕМА и сопутствую¬ щими им передачи данных, могут заранее быть описаны в пакете задачи и исполнены как одна макрооперация. Библиотека таких описаний полностью задает семантику языка управления ком- лексом. Конкретная последовательность макроопераций образует схему расчета. ЛИТЕРАТУРА 1. Бежанова М. М., Москвина Л. А. Инструментальные системы для по¬ строения пакетов прикладных программ: Препр. ВЦ СО АН СССР № 360. Новосибирск, 1982. 37 с. 2. Грановский А. А., Шалагинов А. И. Методы и средства эффективного использования ЭВМ при разработке пакетов прикладных программ в тер¬ минальном режиме.— В кн.: Разработка пакетов прикладных программ. Новосибирск: Наука, 1982, с. 174—183. 3. Мазный Г. Л. Программирование на БЭСМ-6 в системе ДУБНА. М.: Наука, 1978. 271 с. 4. Усов С. А. Диалоговый монитор ДИМОН. М.: Наука, 1979. 125 с. 5. Любимский Э. 3., Малинкин А. В. Современные диалоговые редакторы: Препр. ИПМ АН СССР № 21. М., 1979. 51 с. 55
6. Системный подход при управлении развитием электроэиергетики/Поц ред. Л. С. Беляева, Ю. Н. Руденко. Новосибирск: Наука, 1980. 237 с 7.. Иванкова Л. А., Труфанов В. В. Комплекс СОЮЗ для оптимизации структуры ЕЭЭС СССР. Структура и принципы организации.— В кп.: Пакеты прикладных программ. Методы п разработки. Новосибирск* Наука, 1981, с. 157—167. 8. Грановский А. А., Иванкова Л. А., Такайшвили В. Р., Труфанов В. [р Особенности организации пакетов программ при использовании систем Л БД-6 и ДИМОН для ЭВМ БЭСМ-6.—В кн.: Комплексы программ ма¬ тематической физики. Новосибирск: ИТПМ СО АН, 1980, с. 157 — 166. 9. Родионов А. С. Системы взаимодействия с имитационными моделями; (Краткий обзор).— В кн.: Системный анализ и исследование операций., Новосибирск: ВЦ СО АН, 1977, с. 15—31. 10. Грановский А. А., Такайшвили В. Р., Труфанов В. В. Комплекс СОЮЗ для оптимизации структуры ЕЭЭС СССР: Информационное обеспечение ц режимы использования.— В кн.: Пакеты прикладных программ. Мето¬ ды и разработки. Новосибирск: Наука, 1981, с. 167 —174.j УДК 519.68Г*53. ПАКЕТ ПРИКЛАДНЫХ ПРОГРАММ ДЛЯ РЕШЕНИЯ ОДНОМЕРНЫХ ЗАДАЧ МАТЕМАТИЧЕСКОЙ ФИЗИКИ И. А. Адамская, И. Д. Софронов Пакет прикладных программ [1, 2], получивший название одномерного комплекса (ОК), предназначен для широкого класса задач математической физики и механики сплошной среды с одной пространственной переменной. Специфическая особенность пакета — его ориентация на мас¬ совый счет, т. е. на численное решение больших серий задач в течение длительного времени разными пользователями. Естественно, что к эксплуатационным характеристикам прог¬ рамм, предназначенным для проведения массового счета, предъяв¬ ляются высокие требования: минимальный труд на подготовку к счету и минимальное машинное время на счет отдельной задачи, точность, надежность и безаварийность счета. Ориентация пакета на массовый счет и определила его струк¬ туру. В основе структуры ОК, как и любого пакета прикладных прог¬ рамм, лежит деление па сервисную систему (системное наполне¬ ние пакета) и счетные модули (функциональное наполнение пакета) [2]. Под счетным модулем (СМ) в ОК понимается специализирован¬ ная прикладная программа, ориентированная на свой класс за¬ дач математической физики или механики сплошной среды. Если исходить из традиционного определения модуля как некоторой функционально законченной программной единицы, то СМ в ОК представляет собой связку таких модулей. 56
Под связкой модулей понимается совокугшоть взаимно свя¬ занных, предварительно настроенных для работы друг с другом модулей, работающих в пакете как один большой модуль. Конеч¬ но, связки ограничивают разнообразие комбинаций, которые мож- до'было бы составить из отдельных модулей; они иногда приводят к повторению одних тех же модулей в различных связках, но зато обеспечивают более высокую экономичность счетных модулей, улучшают эксплуатационные характеристики пакета программ в целом. В качестве базового языка программирования для счетных модулей ОК принят Фортран. Этот выбор (помимо исторических причин — транслятор с Алгола в составе мониторной системы «Дубна» [4] появился позднее начала работ над ОК) в значитель¬ ной мере обусловлен тем, что Фортран представляет удобный способ обмена информацией с помощью COMMON-блоков, кото¬ рые используются как для внутренних потребностей счетных мо¬ дулей, так и для обмена с программами сервисной системы. К тому же это в значительной мере обеспечивает независимость ОК от ЭВМ, так как трансляторы с Фортрана есть на всех универсаль¬ ных 3BMf ^1. СИСТЕМНОЕ НАПОЛНЕНИЕ ПАКЕТА Сервисная система одномерного комплекса (сервис ОК) раз¬ рабатывалась с учетом особенностей прикладных задач, на реше¬ ние которых ориентирован пакет [5, 6]. Она выполняет функции, потребность в которых возникает во всех счетных модулях, а именно: ввод и вывод информации; управление счетом; хранение и редактирование исходных данных, промежуточных и окончатель¬ ных результатов с помощью архивной службы; обмен информацией между задачами одного или разных классов через единый архив; выполнение нестандартных для Фортрана действий и др. Архитектуру пакета ОК определяет специально разработан¬ ный для него входной язык [4]. Он дает возможность описывать все объекты, необходимые для расчета разнообразных задач, а также нестандартные действия над ними, т. е. вся информация, необходимая для счета: фактическая, формирующая и управляю¬ щая, задается средствами входного языка. Сервис ОК существует в двух вариантах. 1-й — разработан Для машины БЭСМ-6 [5]. В этом варианте модули сервисной части написаны на языке Мадлен. 2-й вариант сервиса ОК — это так называемый языковый вариант [6], в котором была предпринята попытка еще более ослабить зависимость пакета программ от структуры ЭВМ. В этом варианте значительная часть сервисных программ также написана на языке высокого уровня — Фортра¬ не — с минимальным использованием автокода (не более 10 % от общего объема программы). Однако и языковый вариант сервиса ОК не является полностью Независимым от машины, если под машиной понимать ЭВМ вместе 57
с ОС и системой программирования (напомним, что счетные моду¬ ли, объем программирования которых во много раз превосходит объем программирования сервисной части, являются практически машинно независимыми). Функции сервиса ОК, которые предполагают тесное взаимо¬ действие с операционной системой, например, динамическая заг¬ рузка, распределение памяти, формирование программ и др., не могут быть реализованы единообразно для разных машин. Поэтому, говоря о «языковом» варианте, каждый раз надо ого¬ варивать, о какой ЭВМ идет речь. «Языковый» вариант сервиса ОК создан для машины серии ЕС. В настоящее время эксплуати¬ руется на машине ЕС-1060. По своей внутренней структуре 2-й вариант сервиса ОК («языковый») имеет мало общего с 1-м. Однако функциональные связи со счетными модулями максимально сохранены, на что разработчиками было потрачено немало усилий. Как уже отмечалось выше, СМ написаны на Фортране и в идеале они должны были бы быть инвариантны по отношению к ЭВМ. На практике же при переходе с машины БЭСМ-6 на ма¬ шины серии ЕС небольшие изменения потребовалось внести и в счетные модули. Эти изменения связаны, во-первых, с отли¬ чием версий Фортрана «Дубна» на машине БЭСМ-6 и Фортрана-IV [7] на машинах ЕС и, во-вторых, с необходимостью адаптации к изменениям в сервисной части ОК, что потребовало незначи¬ тельных доработок. Общий объем сервисных программ ОК (системное наполнение) во 2-м варианте ^20 тыс. операторов Фортрана, 6 тыс. операто¬ ров Автокода, 1,5 тыс. управляющих карт. 2. ФУНКЦИОНАЛЬНОЕ НАПОЛНЕНИЕ ПАКЕТА Общий объем счетных модулей ОК (функциональное наполне¬ ние) как в первом, так и во втором вариантах в настоящее время насчитывает ^100 тыс. операторов Фортрана. Наполнение пакета продолжается. Следует остановиться на модуле УРС-ОК [8], который содер¬ жит библиотеку уравнений состояний и занимает особое положе¬ ние в пакете: УРС-ОК вместе с сервисной системой обслуживает все СМ. Единая система программ уравнений состояния УРС-ОК по своему назначению может быть разделена на две группы: модули У PC, вычисляющие термодинамические функции, необходимые при численном решении задач математической фи¬ зики; программы сервисной системы ОК, осуществляющие настрой¬ ку модулей У PC на решение данного варианта задачи по тому или иному счетному модулю. 58
Модуль УРС-ОК рассчитывает уравнения состояния как функции виДа: р = / (Л Р, «1, «2, ■ • •, «к); £■ = <р (7’, р, Q, с,, . . ст), (1) где р — давление; Е — энергия; Т — температура; р — плот¬ ность; at (I = 1, . . к), Cj (J = 1, . . ., in) — параметры веществ, с помощью которых описывается связь термодинамических вели¬ чин между собой. Допускается задание уравнения состояния в виде Р — / (-Е» Р? ^1» • • •» Лп)- (2) УРС (2) приводится к виду (1), если принять формально Е — сТ. Наряду с (1) УРС-ОК позволяет рассчитывать все необходи¬ мые термодинамические производные, такие, например, как др1дТ, др!Зр, дЕ!дТ, дЕ!др и др. Как уже отмечалось выше, пакет ОК ориентирован на решение широкого класса задач математической физики и механики сплошной среды с одной пространственной переменной. В соот¬ ветствии с этим среди счетных модулей ОК имеются: модули для решения уравнений гидродинамики; гидродинамики с теплопро¬ водностью; задач теории упругости и пластичности; кинетического уравнения; задач управляемого термоядерного синтеза и т. д. Остановимся подробнее на некоторых СМ. СМ для решения уравнений гидродина¬ мики одномерных течений [9]: dU 1 „d-1 ЭР — П dv dr^i dt 1 дН ~ ’ dt dH д (Е + и2/2) dt drd~xpu 1 дН -=о, dr dt (3) Здесь t — время; Н — лагранжева массовая координата; и __ скорость частиц вещества; р — давление; v = 1/р — удель¬ ный объем; Е — внутренняя энергия единицы массы; г — эй¬ лерова пространственная координата; d = 3 (в случае сферичес¬ кой симметрии), d = 2 (в случае цилиндрической симметрии), d = 1 (в случае плоской симметрии). Система (3) дополняется уравнениями состояния либо вида (1), либо вида (2). Предполагается, что среда, в которой рас¬ считывается течение, неоднородна, состоит из N областей (рис. 1), | | I 1 1 1 /7 ^/7-/ ^Г7 Рис. 1. Области неоднородной среды каждая из которых характеризуется своим уравнением состояния и начальной плотностью. 59
Для решения уравнений (3) используется неоднородный ностиый метод: выделяется счет ударных волн, идущих по невоз, мущенному веществу, свободных и контактных границ. В об.inc- тях между выделенными границами используется в зависимости от особенностей течения либо схема Годунова [10], либо схема Куропатенко [11]. Общий объем СМ ^ 7 тыс. операторов Фортрана. СМ позво¬ ляет вести расчет задач на машине ЕС-1060 с памятью 2 Мбайта с неограниченным числом областей и счетных точек. Машинное время на счет одной задачи зависит от числа счетных точек, числа областей и сложности УРСов в них и колеблется от 1 мин до 2 ч. Пример. Рассматривается пакет чередующих легких и тяжелых слоев (рис. 2): рт/рл = 25. ' У7 777 У7 777 J7 -777, Л 777 /7 7П I 1 1 1 1 1—Ч 1 1 1 1 /?: /7 /7,2 6,4 0,6 0,6 7,/7 7,2 7,4 7,6 7,6 2,0 Рис. 2. Пакет чередующихся легких и тяжелых слоев В начальный момент времени при № = 0 задается линейное распределение скорости вещества = rltQ (в данной задаче tQ = 1) и постоянное значение давления р(0) = 1. Уравнение Рис. 3. Распределение скорости в начальный момент времени состояния в каждом слое — идеа¬ льный газ с показателем адиа¬ баты у = 5/3. Задача имеет точное аналити¬ ческое решение [12]: давление п относительная плотность 6 = р/р0. в каждый данный момент време¬ ни постоянны; скорость u = (r/z)— — 1. Если рассматривать и как функцию лагранжевой координа¬ ты 77, то она с течением времени не меняется, что касается внут¬ ренней энергии, то она постоян¬ на внутри каждого слоя, при- всех {легких слоев чем эти константы — одни для и другие для всех тяжелых. При t 1 значения плотности, давления, энергии неограниченно растут по всей массе рассматриваемого газа. Задача рассчитывалась со следующей сеткой: в каждом лег¬ ком слое было взято по 8 точек, в каждом тяжелом — по 40 (точ¬ ки выбирались так, чтобы на контактных границах выполнялось условие согласованности Годунова [13]). Задача была сосчитана до времени t = 0,9999, сделано 4113 шагов по времени, затрачено времени на ЭВМ ЕС — 8 мин 35 с. 60
На рис. 3 сплошной линией изображено заданное распределе¬ ние скорости в начальный момент времени. Крестиками отмечены значения скорости, полученные на последнем шаге. Как видно из рисунка, расчет с хорошей точностью воспроиз¬ водит аналитическое решение. Счетный модуль для решения задач ме¬ ханики сплошной среды с возможностью учета следующих физических процессов: газовой динамики, упругопластического деформирования на основе законов пластического течения Прандтля—Рейса, отколь- ного и радиального разрушения, теплопроводности [14]. Основные уравнения, рассчитываемые в данном модуле, имеют следующий вид: ди 1 О , х d — 1 , * — = — ^(Рг + <?) - (Рг~ Рб) + g, dE IF 1 рг d-1 (4) “Г д дг Pr ~~ Р& (d — 1) и Р ~ + I Р = Х/з (Рт + PQ -I- а). где pr, ре, pz — компоненты тензора напряжений, взятые с об¬ ратным знаком; g — ускорение силы тяжести;’ Q — скорость энерговыделения; х — коэффициент теплопроводности; q = = (7л + £кв — суммарная псевдовязкость; £л, £кв — соответ¬ ственно линейная и квадратичная псевдовязкости, определяемые следующим образом gji = i:cnCwdpldt, [ скв(Аг)2-Щ-^-У, если dp/dt>0 gl\B = Р \ <« / (5) [ 0, если dpfdt 0. Здесь сл, скв — постоянные коэффициенты; cw — газодинамичес¬ кая, изэнтропическая скорость звука. к Система (4) дополняется газодинамическим УРСом вида (1): ^-(pr —.Ре) = —2G(gr —£е); I pr — Ре | < Y (р,Е); Р = — (Рг + Ре + Рф); Рф = Ре для d = 1, 3. 61
и механическим уравнением состояния 4 (р - д) = 2G (ь + 4 р -$-) J?(p - р.Г < 4 Y‘ (р, В) i для d = 2. Здесь G = 3/2к (1 — 2v)/(l + v) — модуль сдвига (к — модуЛь объемного сжатия, v — коэффициент Пуассона), Y — функцця определяющая предел текучести; I = г, 9, z\ gr, Se, — компов ленты тензора скоростей деформации: = для d = 1,2, 3, ( Для d = 3, г i 0 для d = 1, 2. и/r для d = 2, 3, О для d = 1, В зависимости от d в случае нарушения второго неравенства из системы (6) или одного из неравенств в системе (7) происходит корректировка напряженного состояния в счетной точке на по¬ верхность текучести: В задачах со сферической и цилиндрической симметрией (d = 2, 3) при расчетах упругопластических течений возможны два вида разрушений растягивающими усилиями: радиальные трещины и отколы. Первые возникают под действием растягиваю¬ щих тангенциальных напряжений, вторые — нормальных. Кри¬ терием возникновения отколов и трещин является выполнение неравенства t $ I Pi — Pi Iх dt > к, О где pi — радиальное или тангенциальное напряжение; р1? к, X — константы вещества. При возникновении радиального разрушения совместно с приведенным неравенством используется дополни' тельное условие: тангенциальные упруго-пластические дефор' мации S’e на растягивающих тангенциальных давлениях не долж¬ ны превышать некоторой критической величины &кр (константа вещества). Для задач с плоской симметрией (d = 1) возможно лишь от- кольное разрушение. При образовании трещин среда представляется бесконечным числом стержней, направленных по радиусу, причем для описа¬ ния движения таких областей используется та же система (5) 62
I'D только с измененным механическим уравнением состояния. Проиллюстрируем алгоритм расчета растрескавшейся области примере одного типа симметрии, например, цилиндрической (J = 2). в момент образования трещины полагается Дй; = Д^2 = 0, Др,. = \pz = Ap0v/(1 — v) = pqv/(1 — v), Pq = 0, pr = pr -p Apr, pz = pz ^pz, p = */з (pr Pz)* При этом если выполнено условие текучести Мизеса ^(Р-А)2>4у2’ * = '-’0’2’ г то происходит корректировка напряжений по формулам Р — Pi = (Р — Pi) Y '|Л7з/3 (Р — Pi)2- После этого происходит корректировка на поверхность текучести^ а также пересчет напряжений в стержнях на замкнутую поверх¬ ность р^ = рг(Д 4- Лй’е), р^ = Рг(Д + Ай’е)» В процессе дальнейшего деформирования стержней по прира¬ щениям /\<£г получаются приращения Арг и Apz по ‘формулам крг = — A£r2G/(l — v), Npz = — Mgr2Gv/(l — v), = — Agrv/(1 — v), pr = pr + Apr, pz = pz + Apz. Захлопывание трещины происходит при выполнении критерия Рст РиНТ (рИНТ, Е). Здесь Ринт — давление, получаемое по газодинамическому УРСу с интегральной средней плотностью ячейки, рассчитывае¬ мой по закону сохранения массы; рст — давление в стержне. После захлопывания границы среда имеет нулевую прочность на растяжение тангенциальными усилиями. Откольное разрушение разбивает среду на несколько независи¬ мых областей, разделенных свободными поверхностями, между которыми находится вакуум. Уравнения, описывающие движе¬ ние, при этом не изменяются. Учет раздавливания среды производится с помощью изменения По некоторому закону прочностных параметров, а также газодина¬ мического УРСа. Для численного интегрирования приведенных выше уравнений Используется явная разностная схема второго порядка точности типа «крест». Для счета теплопроводности используется метод рас¬ цепления, т. е. на первом этапе решается система уравнений (4) — (6) или (4), (5), (7) без учета теплопроводности (х = 0), в ре¬ зультате чего определяются промежуточные величины u, г, р, Е, рг, рг —pq. На втором этапе рассматривается распространение 63
тепла в неподвижной и недеформируемой среде, т. е совместно с газодинамическими уравнениями состояния решается система уравнений duldt = drldt = dpi dt = О, dt p7'd_1 \ J * После этого расчета исправляются все промежуточные значения. Для областей, где теплопроводность не учитывается, промежуточ¬ ные значения являются конечными. Общий объем СМ ~ 3500 тыс. операторов Фортрана. СМ поз¬ воляет вести расчет на ЕС-1060 с памятью 2 Мбайта практически с неограниченным числом областей и счетных точек. Время счета одной задачи зависит от того, на учет каких физи¬ ческих процессов настроен модуль в данном расчете, от сложно¬ сти используемых газодинамических УРСов, от числа счетных то¬ чек и колеблется от нескольких минут до нескольких десятков часов. П ример. Задача о выходе ударной волны на систему плас¬ тин, разделенных вакуумом [15] (рис. 4). /У: 00 00 70 70 70 70 70 70 /и ль ЛЬ ЛЬ AL AL |/ZZZZZZZZZZZZZZ/|\\X\\\\YZZZZZZZJ Г/Z/Z/Z/] rz/z/z/zi— zzzzzz O:~J0O ~00 0 0 70 70 20 20 00 00 40 40 00 00 Рис. 4. Система пластин, разделенных вакуумом В области (—300, 0) заданы параметры ударной волны: и = = 2 км/с; р = 42,44 Па; р = 3,756 г/см3; Е = 1,933 кДж/гр. Ос¬ тальные пластины находятся в покое, т. е. и = р = Е = 0. Ро = 2,7 г/см3. Уравнение состояния имеет вид: р = А (р/ро - 1) + В (р/ро - I)2 + с (р/ро - I)3 + рГ7?. Расчет проводился со следующими значениями параметров: А = 75 Па; В = 40,5 Па; с = 0; Г = 1; Y = 0,3 ПА; а = 0,33; Ркр = —1Па. Задача считалась до выхода ударной волны наг = = 50 мм. Число точек по областям, с которыми проведен рас¬ чет, указано на рис. 4. Время счета на ЭВМ ЕС-1060 2 мин 47 с. Результаты совпали с приведенными в [15]. СМ для расчета критических парамет¬ ров я дерных реакторов [16]: ищется решение ки¬ нетического уравнения в одногрупповом приближении (s, grad ср) а (.$>) ср = -0- 0 pi0) ср (3, <?) ds, = (s, s'). 64]
Неизвестная функция ср (s, £TJ) обозначает плотность нейтронов, детящих в направлении 5 из данной точки пространства 9. Гра¬ ничные условия соответствуют отсутствию падающего извне по¬ тока нейтронов. Предполагается, что индикатрисса рассеяния изотропна, ис¬ точники нейтронов внутри системы отсутствуют. Критические параметры рассчитываются для двух типов сим¬ метрии: сферической и цилиндрической. Для решения кинетиче¬ ского уравнения используется метод сферических гармоник. Получающаяся в результате 9d2N-i аппроксимации система 2N обыкновенных дифференциальных уравнений решается методом прогонки частных решений с ортогонализацией [16]. Расчет кри¬ тических параметров ведется до сходимости по гармоникам. Время счета зависит от числа гармоник, используемых в расчете, и колеблется от 1 с до 1 мин. Объем СМ 1000 операторов Фортрана. Всего СМ работа¬ ющих в ОК около 20, в том числе и для решения в линейном при¬ ближении двумерных газодинамических задач, имеющих малую несимметрию начальных и граничных условий [17]. Как уже отме¬ чалось, пакет постоянно пополняется новыми счетными модулями. Этапы подключения нового счетного модуля в ОК следующие: определение класса задач, для решения которых предназначен данный СМ; определение вида объектов, с которыми будет работать данный СМ; формализация определения класса задач в виде описания стан¬ дарта задачи; программная реализация СМ; освоение счета изолированных задач; освоение массового счета серий задач с использованием всех возможностей комплекса. 3. ЗАКЛЮЧЕНИЕ Первый вариант пакета ОК эксплуатируется с 1976 г., второй («языковый») — с 1979 г. Так что можно говорить об опыте эк¬ сплуатации пакета. Прежде всего следует отметить, что переход на так называемый языковый вариант ОК не ухудшил эксплуатационных характерис¬ тик пакета, если под эксплуатационными характеристиками по¬ нимать: трудоемкость подготовки задач к счету; время центрального процессора (ЦП), затрачиваемое на счет той или иной задачи в ОК; процент загрузки Ц11 при счете задач в рамках ОК. Что же касается сравнения пакета по указанным параметрам со специализированными программами, написанными на языке ЭВМ, то здесь можно сказать следующее. Трудоемкость подготовки задач к счету в ОК в среднем мень¬ ше, чем в специализированных программах. 3 Заь-аз № 485 65
Это достигается в первую очередь за счет использования хивной службы, позволяющей, в частности, вести счет задач риями, формировать новые задачи путем разнообразных ссы.юк на старые и других дополнительных средств, представляемых цс. полнителям сервисом ОК. Время ЦП полностью определяется свойствами трансляторов с Фортрана. Пока это время больше, чем по специализированны^ кодовым программам (так для транслятора «Дубна» отношение времен ЦП для разных задач колеблется от 1,4 до 3,5 в пользу ко¬ довых программ). Но так как трансляторы постоянно совершенствуются и уже сейчас есть трансляторы с оптимизацией, то задача получения «языковых» программ, близких по времени ЦП к кодовым, явля¬ ется вполне реальной задачей. Сервис ОК не обеспечивает специально возможность автомати¬ чески строить прикладные программы из модулей, тем не менее благодаря средствам самой системы программирования внесение изменений в счетные модули, подключение к связке модулей но¬ вых модулей труда не представляет. А это значит, что в рамках ОК можно вести не только массовый счет, но и широко ставить вычислительные эксперименты. ЛИТЕРАТУРА 1. Коновалов А . Н., Яненко Н. II. Модульный принцип построения программ как основа создания пакетов прикладных программ решения задач меха¬ ники сплошной среды.— В кн.: Комплексы программ математической физики. Новосибирск: ВЦ СО АН СССР, 1972, с. 48—54. 2. Карпов В. Я., Корягин Д. А., Самарский А. А. Принципы разработки пакетов прикладных программ для задач математической физики.-- ЖВМ и МФ, 1978, т. 18, с. № 2, с. 458-467. 3. Софронов И. Д. Пакет программ для решения одномерных задач матема¬ тической физики «Одномерный комплекс».— ВАНТ. Сер. Методики и программы численного решения задач математической физики, 1978, вып. 1 (1), с. 3—6. 4. Мазный Г. Л. Мониторная система «Дубна» (руководство для пользова¬ телей). Дубна: ОИЯИ, 1970. 241 с. 5. Воронов Е. Г., Каплунов М. И., Подвалъный В. Г. и др. Сервисная систе¬ ма одномерного комплекса.— ВАНТ. Сер. Методики и программы чис¬ ленного решения задач математической физики, 1978, вып. 2(2), с. 3—12. 6. Каплунов М. II., Софронов И. Д. Система программирования одномерных задач.— В: Наст. сб. 7. Фортран ЕС ЭВМ. М.: Статистика, 1978. 64 с. 8. Забелина Т. В., Леонова II. И., Сураева 3. В., Тимонъкина А. В. Орга¬ низация программ уравнений состояния в одномерном комплексе.— Вопросы атомной науки и техники. Сер. Методики и программы числен¬ ного решения задач математической физики, 1979, вып. 4 (6), с. 13—15, 9. А дамская И. А., Горбатпенко В. И., Евстигнеева 3. А. и др. Программа BAL для решения задач газовой динамики в одномерном комплексе.- ВАНТ. Сер. Методики и программы численного решения задач матема¬ тической физики, 1979, вып. 3(5). с. 3—14. 10. Годунов С. К. Разностный метод численного расчета разрывных решений уравнений гидродинамики.— Матем. сб., 1959, 47, вып. 3, с. 271—306. 11. Куропатенко В. Ф. Метод построения разностных схем для численного 66
интегрирования уравнений гидродинамики.— IIзв. вузов. Сер. матом., 1962, № 3 (28). с. 75—86. 42, Белоконь В. Л., Забродин В. А., К аж дан Я. М. и др. Пример ультра- высокого сжатия: Предпр. ИМП АН СССР № 39. М., 1978. 50 с. 43. Численное решение многомерных задач газовой динамики/Под ред. С. К. Годунова. М.: Наука, 1976. 400 с. 44. Баталов В. А., Свидинский В. А., Селии В. И., Софронов В. II. Про¬ грамма УП для решения одномерпых газодинамических и упругопласти¬ ческих задач механики сплошных сред.— ВАНТ. Сер. Методики и про¬ граммы численного решения задач математической физики, вып. 1 (1), 1978, с. 21 — 28. 45, Хофман РЭндрю Д., Максвелл Д. Расчет поведения пористого алюми¬ ния при ударном сжатии.— Механика, 1970, № 5, с. 114—126. 16. А дамская И. А., Годунов С. К. Метод сферических гармоник в задаче о критических параметрах.— ЖВМ и МФ, 1964, т. 4, № 3, с. 473—484. j7. Гришина Г. А. Метод линейного приближения в численных расчетах задач газовой динамики: Препр. ИПМ АН СССР, № 21. М., 1980. 41 с. УДК 519.685.1 СИСТЕМА ПРОГРАММИРОВАНИЯ ОДНОМЕРНЫХ ЗАДАЧ М. И. Каплунов, И. Д. Софронов 1. ОБЩАЯ ХАРАКТЕРИСТИКА СИСТЕМЫ Вопросам создания больших программ, пакетов прикладных программ и программных комплексов уделяется большое внима¬ ние. Об этом свидетельствует большое число работ, посвященных этим вопросам; некоторые работы носят фундаментальный харак¬ тер [1—4], другие описывают конкретные пакеты различной проб¬ лемной ориентации [5—7]. Основные проблемы, возникающие при создании больших программ и программных комплексов, пред¬ ставлены в [4]. Описываемый здесь одномерный комплекс (ОК) можно рассмат¬ ривать как пакет программ для решения одномерных задач ма¬ тематической физики (в этих задачах предполагается, что области, В которых рассчитывается движение, имеют либо плоскую симмет¬ рию, цилиндрическую, либо сферическую). Круг решаемых про¬ граммами ОК задач охватывает нестационарные задачи газовой Динамики и распространения различных видов излучения, опи¬ сываемого кинетическим уравнением, и т. д. Полные постановки краевых задач, решаемые системы диффе¬ ренциальных уравнений, а также применяемые дискретизации Достаточно подробно описаны в [8]. Как всякий развитый пакет, ОК включает системную часть, Функциональное (проблемное) наполнение и языковые средства общения пользователя с пакетом. Функциональное наполнение состоит из счетных модулей, под которыми мы понимаем закончен¬ ные программы, предназначенные для решения задач определенно¬ го класса. Это не означает полной автономности счетного модуля; ^четный модуль ОК может функционировать, вообще говоря, 67 3*
только в среде, создаваемой системной частью ОК; однако для функционирования счетного модуля не требуется участия других модулей. Предполагается, что языком программирования счет¬ ных модулей является Фортран, как наиболее распространенный язык высокого уровня для научных расчетов. Системная часть ОК (сервис ОК) призвана решить три основ¬ ные задачи — сокращение трудозатрат на создание программ, упрощение их дальнейшей эксплуатации и сведение к минимуму- зависимости проблемного наполнения от марки ЭВМ и версии ОС. В плане решения первой задачи сервис ОК осуществляет цен¬ трализацию многих функций, общих для различных программ,— ввод и расшифровку данных, организацию обменов, с внешней па¬ мятью, вывод результатов, управление счетом, распределение па¬ мяти. Кроме того, сервис предоставляет программисту-разработ¬ чику счетного модуля возможности, которые невозможно или за¬ труднительно реализовать средствами Фортрана — возможности управлять из начальных данных размерами массивов и конфигу¬ рацией программы, работать с объектами «нефортранной» природы. Решение второй задачи связано с наличием развитой архив¬ ной службы, обеспечивающей создание и ведение различных биб¬ лиотек и архивов для хранения программного хозяйства, тексто¬ вой или числовой информации, а также с наличием специального языка управления входными или архивными данными (запуск задач на счет, организация счета серий задач). Работы по одномерному комплексу ведутся с 1972 г. Первона¬ чально создавалась версия ОК для БЭСМ-6 [9, 10], а в дальней¬ шем разработана системная часть ОК для ЕС ЭВМ. При этом не¬ которые счетные модули были перенесены практически без изме¬ нений; модификации других счетных модулей были связаны с рас¬ ширением их функций или оптимизацией алгоритмов. В настоящее время сервис ОК содержит следующие компо¬ ненты: систему интерпретации входных данных; систему служеб¬ ных программ, образующих операционную среду для счетных мо¬ дулей ОК; интерпретатор управляющих карт; архивную службу. 2. ОБЪЕКТЫ ОК И ИХ ИСПОЛЬЗОВАНИЕ Поскольку счетные модули суть программы, написанные на Фортране, они могут использовать любые объекты, допустимые в фортранных программах. Однако сервис ОК предоставляет возможность использовать и объекты специального вида, которые не могут фигурировать в тексте на стандартном Фортране. Введе¬ ние новых объектов связано с ориентацией на определенный класс задач, с необходимостью настраивать конфигурацию программы и данных на конкретный расчет, с расширением способов поиска различной информации, находящейся в процессе счета во внешней памяти. В соответствии с тем, что решаемые с помощью ОК задачи име¬ ют, как правило, деление на счетные области, объекты ОК делятся 68
на общие и областные — последние характеризуются различными свойствами в разных областях. Наиболее простые объекты — общие скаляры и общие одно¬ мерные массивы, располагающиеся в оперативной памяти, реали¬ зуемые соответственно как одно-или многоэлементные COMMON- блоки. Если бы массивы имели только фиксированную размер¬ ность, они могли бы рассматриваться как фортранные объекты. Сервис ОК позволяет задавать размеры всех массивов, в том числе и рассматриваемых ниже, более того, размеры некоторых масси¬ вов могут быть зафиксированы уже при работе счетного модуля, если для их определения необходимо произвести некоторые рас¬ четы. Одномерный внешний массив — массив, хранящийся во внеш¬ ней памяти, произвольный доступ к элементам которого осуществ¬ ляется с помощью специальных программ сервиса. Эти програм¬ мы выполняют подкачку внешних массивов в память скрытым от пользователя образом. Внешние массивы предоставляют наиболее простые средства организации данных во внешней памяти (диске). Интенсивная поэлементная обработка внешних массивов при определенных условиях может приводить к значительным затра¬ там времени, поэтому для большей эффективности введен новый нефортранный объект — массив, вызываемый по имени (МВИ). Так называются массивы, постоянно хранящиеся на диске и вызы¬ ваемые в память для обработки и записываемые на диск явным обращением к специальным программам сервиса. После вызова МВИ в память, доступ к его элементам осуществляется с помощью обычных средств Фортрана. Двумерные массивы представляют собой просто объединение нескольких одномерных массивов, которые могут иметь разную размерность, но общее место хранения (оперативная память или диск). Первый индекс при обращении к двумерному массиву оп¬ ределяет выбор одномерного массива, второй индекс определяет номер его элемента. Следующую группу объектов составляют так называемые сменные объекты: табличные функции, условные си¬ стемы массивов, формальные подпрограммы. Счетные модули об¬ ращаются к объектам этой группы по фиксированным (формаль¬ ным) именам. В начальных данных каждому формальному имени могут быть поставлены в соответствие несколько фактических объектов вместе с условиями их смены. Специальные программы сервиса во время счета осуществляют проверку условий и на¬ стройку на соответствующий конкретный объект. Табличная функция определяется парой одномерных массивов, играющих роль массива аргументов и массива значений функции (или несколькими такими парами, если необходимо производить смену табличной функции в зависимости от тех или иных усло¬ вий). С точки зрения счетного модуля обращение к табличной функции не отличается от обращения к обычной функции, посколь¬ ку сервис вычисляет значения функций при любых значениях ар¬ 69
гумента путем линейной интерполяции по массивам, составляю¬ щим в данный момент табличную функцию. Условная система массивов удовлетворяет потребности счетных модулей использовать сменные таблицы констант. Обращение к этому объекту в счетном модуле оформляется как вычисление функции целочисленного аргумента, определяющего номер эле¬ мента того массива, который выбран из системы согласно заданно¬ му условию. Формальные подпрограммы реализуют возможность обращения из счетного модуля к подпрограммам, чьи имена и, возможно, па¬ раметры задаются в начальных данных конкретного расчета. Вывод результатов счета осуществляется с помощью таких общих объектов, как разрез и семейство выдач. Разрез представляет собой совокупность объектов, записывае¬ мую во внешнюю память (в архив результатов) и предназначенную для продолжения счета задачи после прерывания, для передачи данных другой задаче или для выполнения автономной обработки результатов счета. Каждый счетный модуль может организовывать произвольные выдачи, не контролируемые сервисом. Однако сервис предостав¬ ляет в распоряжение разработчиков счетных модулей набор стан¬ дартных средств выдач вместе со средствами управления составом, форматом и условиями выполнения выдач. К стандартным сред¬ ствам выдач относятся так называемые большие и малые выдачи, состав которых определяется в основном типом задачи, простран¬ ственные выдачи (график, профиль), временные выдачи (след, диа¬ грамма). Пространственные и временные выдачи могут быть вы¬ ведены на АЦПУ или графопостроитель. В начальных данных может быть образовано несколько се¬ мейств выдач: семейство выдач — это совокупность выдач, объ¬ единенных общим условием их выполнения. Счетный модуль мо¬ жет братиться к сервису с требованием выполнить выдачи всех семейств. В состав семейства выдач могут входить, кроме перечисленных стандартных выдач, еще запись разреза, а также произвольная ав¬ торская программа, исполнение которой также управляется условиями, заданными для семейства. Областными объектами могут быть объявлены скаляры, мас¬ сивы, сменные объекты. Областные скаляры оформляются как COMMON-блоки, длина которых равна количеству областей в за¬ даче. Областные массивы допускают кроме пообластной нумера¬ ции элементов также и сквозную нумерацию по всем областям. Отметим, что уравнения состояний и пробеги оформляются как областные формальные подпрограммы. 3. ЯЗЫКОВЫЕ СРЕДСТВА ОК После того, как написание (или по крайней мере проектиро¬ вание) счетного модуля закончено, объекты, с которыми может ра¬ ботать модуль, и их характеристики оказываются полностью 70
определенными. Как и во всякой модульной системе, счетный модуль в ОК имеет своего рода паспорт (в ОК онпазывается стандар¬ том задачи), в котором перечислены все объекты счетного модуля и указаны их основные характеристики; так, для скаляров, мас¬ сивов, условных систем массивов могут быть указаны тип (целый или вещественный) и диапазон элементов массива (убывание, воз¬ растание, монотонность), допустимый диапазон размерностей мас¬ сивов. Для сменных объектов в стандарте указываются их фор¬ мальные имена. Для всех объектов можно указать стандартные значения, присваиваемые этим объектам, если эти значения не оп¬ ределены иначе (например, в начальных данных для конкретного расчета). В стандарте указывается имя головной подпрограммы в дереве загрузки счетного модуля. Разумеется, счетные модули могут использовать внутренние объекты, не описанные в стандарте, но эти объекты недоступны сер¬ вису и взаимодействие между счетным модулем и сервисом по поводу этих объектов невозможно. С другой стороны, при описании начальных данных можно использовать объекты, не зафиксиро¬ ванные в стандарте. Такие объекты носят вспомогательный харак¬ тер (например, они могут использоваться для определения дру¬ гих объектов) и недоступны счетному модулю. Стандарт задачи описывается на некотором специализировап- ном языке, называемом в дальнейшем входным языком ОК. Кроме описательных (паспортных) данных, язык стандартов содержит все необходимые средства для задания начальных данных задачи; тем самым понятие стандарта несколько шире, чем просто паспорт счетного модуля. Стандарт задачи— это скорее описание неко¬ торой типичной (эталонной) задачи данного класса, позволяющее для каждого конкретного расчета описывать только отличия рас¬ считываемой задачи от эталонной. В результате трансляции текста стандарта задачи или началь¬ ных данных задачи образуется так называемое информационное поле (ИП) задачи, содержащее все определенные в исходном тексте объекты вместе со служебной информацией, обеспечивающей эф¬ фективный доступ к этим объектам. Как исходный текст, так и сформированное из него ИП могут быть записаны в архив для ис¬ пользования при формировании других стандартов или близких задач. Во входном языке предусмотрены различные средства для сокращения объема вводимой информации. Компактность входных данных обеспечивается возможностью ссылок на уже введенные в этом же тексте данные или на данные, содержащиеся в различных архивах и библиотеках, в том числе на результаты счета других задач. Целям сокращения объема входной информации служит и использование систем макросов, т. е. некоторых текстовых заго¬ товок, требующих для формирования задания минимальной ин¬ формации преимущественно числового вида. Кроме входного языка для управления работой сервиса ОК введен язык управляющих карт ОК. Последовательность управ¬ 71
ляющих карт (УК) задается во вводном потоке и определяет по¬ следовательность действий, поручаемых сервису ОК. Большая группа УК предназначена для работы с архивами и библиотеками. С их помощью производится инициализация архивов и библио¬ тек, выдача сведений об их состоянии, перепись объектов из одно¬ го архива в другой, установка режима хранения тех или иных ар¬ хивных объектов, обмен данными между архивами и внешними по отношению к ОК носителями. Вторую группу составляют УК, по¬ зволяющие вводить данные с перфокарт, редактировать, трансли¬ ровать, загружать на счет, производить запись информации для продолжения счета и т. д. Наконец, по специальной УК можно обратиться к произвольной авторской подпрограмме и после ее выполнения продолжить интерпретацию управляющих карт. Набор УК позволяет в рамках одного задания организовать последовательный счет серии задач одного типа (например, близ¬ ких по постановке) или задач разных типов, связанных по переда¬ ваемым через архив данным. Параллельная работа различных счетных модулей в ОК не предусмотрена. 4. ФУНКЦИОНИРОВАНИЕ ОК С точки зрения ОС ЕС любой расчет в рамках ОК оформляется как обычное задание, состоящее из последовательности обращений к каталогизированным процедурам. Сервис ОК содержит ряд ка¬ талогизированных процедур, предназначенных для формирования и преобразования программных библиотек. Как правило, необ¬ ходимые действия при этом могут быть выполнены с помощью утилит ОС ЕС; введение специальных процедур ОК позволяет стандартизировать и, как следствие, сократить необходимую для работы утилит информацию. Основная процедура, предназначенная для выполнения рас¬ четов, состоит из 3 шагов — подготовительного, на котором выпол¬ няется интерпретация управляющих карт (в частности, трансля¬ ция начальных данных задачи), исполнительного, состоящего в исполнении счетного модуля, и заключительного, производяще¬ го вывод результатов (в частности, временных выдач), накоплен¬ ных на исполнительном шаге. Основная часть программ, входя¬ щих в сервис ОК, работает на 1-м и 3-м шаге. На исполнительном шаге работают программы системной поддержки счета. Программы системной поддержки можно разбить на группы: а) программы поиска в ИП, с помощью которых можно уста¬ новить наличие того или иного объекта в ИП, определить его ха¬ рактеристики и источник задания; б) программы обмена с ИП, с помощью которых осуществляет¬ ся вызов внешних массивов по имени или поэлементный доступ к внешним массивам; в) программы управления сменными объектами; г) программы управления выдачами; 72
д) программы распределения памяти и динамической загрузки программ. 1 Эти программы осуществляют резервирование памяти под мас¬ сивы, истинные размеры которых определяются только на ста¬ дии счета. О динамической загрузке программ следует сказать особо. Дело в том, что в ОС ЕС отсутствуют столь же простые, удобные и эф¬ фективные средства динамической загрузки, какие предоставлялись пользователям МС «Дубна», на БЭСМ-6 [11]. С другой стороны, счетные модули, впервые реализованные на БЭСМ-6, ширюко ис¬ пользуют эти средства. В связи с этим система динамической за¬ грузки в сервисе ОК для ЕС ЭВМ создавалось заново. Основной принцип динамической загрузки состоит в том, что каждый оче¬ редной оверлей формируется с учетом ранее загруженных программ. Если какая-либо подпрограмма или COMMON-блок в момент обращения к динамической загрузке уже находятся в па¬ мяти, они не включаются в загружаемый оверлей, тем самым каж¬ дая подпрограмма или COMMON-блок присутствуют в памяти в единственном экземпляре. Возможно несколько режимов дина¬ мической загрузки оверлеев: а) оверлей загружается и получает управление; после окон¬ чания работы оверлея он автоматически удаляется из памяти; б) оверлей загружается и выполняется, но не удаляется из памяти до выполнения явного требования исключить его из памяти; в) оверлей загружается в память, но не получает управления. Вызов подпрограмм данного оверлея осуществляется из под¬ программ, включенных в оверлеи, загружаемые позднее. Следует отметить, что не все программы, осуществляющие си¬ стемную поддержку счета, существуют в готовом виде в библио¬ теке ОК. Некоторые программы формируются сервисом на ста¬ дии трансляции начальных данных, затем транслируются, связываются и включаются в библиотеку только на время дан¬ ного расчета. Итак, что же дает сервис ОК пользователю? Отдельный поль¬ зователь при создании счетного модуля освобождается от необхо¬ димости заботиться о вспомогательных функциях, которые берет на себя централизованный сервис; кроме того, пользователь полу¬ чает средства, реализующие возможности, не предоставляемые Фортраном и ОС, а использование некоторых средств ОС заметно упрощается. Группа (организация) пользователей извлекает оп¬ ределенные преимущества из централизации сервиса. Унификация средств ввода-вывода, форматов данных, хранимых в архивах, об¬ легчает межмодульные связи, а также формирование серий, близ¬ ких по постановке задач. Различные счетные модули получают воз¬ можность пользоваться единой библиотекой уравнений состоянии и пробегов, общими библиотеками констант. Наконец, программ¬ ный фонд, собранный в одномерный комплекс, проще переносится 73
на другие ЭВМ, поскольку зависимость от ЭВМ и ее базового матобеспечения сосредоточена в системной части комплекса. ЛИТЕРАТУРА 1. Коновалов А . Н.< Яненко Н. II. Модульный принцип построения программ как основа создания пакетов прикладных программ решения задач меха¬ ники сплошной среды.— В кн.: Комплексы программ математической физики. Новосибирск. ВЦ СО АН СССР, 1972, с. 48—54. 2. Самарский А. А. Общие вопросы модульного программирования для задач математической физики.— В кн.: Структура и организация паке¬ тов программ. Тбилиси: ВЦ АН ГССР, 1976, с. 9 — 11. 3. Карпов В. Я., Корягин Д. Л., Самарский А. А. Принципы разработки пакетов программ для задач математической физики. Препр. ИПМ АН СССР № 86. М., 1977. 18 с. 4. Воронков А, В., Легонькое В. И. О системе программного обеспечения больших задач математической физики: Препр. ИПМ АН СССР № 45. М., 1979. 22 с. 5. Карначук В. И., Коновалов А . II. О пакете прикладных программ мате¬ матической физики.— В кн.: Структура и организация пакетов про¬ грамм. Тбилиси: ВЦ АН ГССР, 1976, с. 21 — 22. 6. Башмачников А. И., Загацкий Б. А. и др. ФИХАР — модульная систе¬ ма программ для реакторных расчетов.— В кн.: Тр. III семинара по комплексам программ математической физики. Новосибирск: ВЦ АН СССР, 1973. 7. Горбунов-Посадов М. М., Карпов В. Я., Корягин Д. А. и др. Пакет при¬ кладных программ САФРА: Системное наполнение: Препр. ИПМ АН СССР № 85. М., 1977. 27 с. 8. А дамская И. А., Софронов И. Д. Пакет прикладных программ для ре¬ шения одномерных задач математической физики.— В: Наст. сб. 9. Софронов И. Д. Пакет программ для решения одномерных задач матема¬ тической физики.— ВАНТ. Сер. Методики и программы численного ре¬ шения задач матем. физики, 1978. вып. 1(1), с. 3—6. 10. Воронов Е. Г. и др. Сервисная система одномерного комплекса.— ВАНТ. Сер. Методики и программы численного решения задач матем. физики, 1978, вып. 2(2), с. 3-12. 11. Мазный Г. Л. Мониторная система «Дубна»: Руководство для пользова¬ теля. Дубна: ОИЯИ, 1979. 241 с. УДК 519,683.8:537.84 КОМПЛЕКС ПРОГРАММ HERA ДЛЯ РЕШЕНИЯ ЗАДАЧ ОДНОМЕРНОЙ МАГНИТНОЙ ГИДРОДИНАМИКИ С. А. Гайфулин, В. А. Гасилов, В. Я. Карпов, А. Ю. Круковский, Т. В. Мищенко Авторы настоящей работы ставили своей целью перенос луч¬ ших методик в функциональное наполнение пакета САФРА, сде¬ лав их, таким образом, общедоступными. В работе описывается программа HERA, предназначенная для решения уравнений одномерной магнитной газовой динамики с теплопроводностью в цилиндрически симметричной области. Алгоритмы, реализованные в программе, основаны на большом опыте, накопленном в ИПМ им. М. В. Келдыша АН СССР в кол¬ 74
лективе, руководимом академиком А. А. Самарским. Этот опыт отражен в методиках и программах Ц—3], эффективно использо¬ вавшихся при численном моделировании процессов в различных физических задачах. В программе HERA состояние среды описывается четырьмя ос¬ новными функциями р, u, Т, В, которые представляют собой плот¬ ность, скорость, температуру и магнитную индукцию соответст¬ венно. Предполагается, что магнитное поле имеет либо только 2-ю компоненту (задача о 0-пинче), либо только (р-ю составляющую (задача о Z-пинче). Каждая переменная является функцией времени п радиуса — расстояния до оси цилиндра. Использованная в программе разностная аппроксимация диф¬ ференциальных уравнений, а также методы решения разностных уравнений основаны на принципах, изложенных в [1—3]. Структура программы и общие правила ее написания базируют¬ ся на системе OLYMPUS [5—7]. Программа частично использует программные единицы программы FLORA [8]. Программа HERA является частью функционального напол¬ нения ППП САФРА [4] и существенно использует предоставляе¬ мые пакетом возможности сборки. 1. КРАТКИЕ СВЕДЕНИЯ О ПРОГРАММЕ Название программы — HERA. ЭВМ, для которой предназначена про¬ грамма — БЭСМ-6 и машины серии ЕС. Постановка задачи. Решаются уравнения одно¬ мерной магнитной газовой динамики с теплопроводностью в ци¬ линдрической геометрии (задачи о Z- и 0-пинче). Уравнения решаются в лагранжевых массовых координатах. Предусмотрена возможность учета граничных условий различных типов. Метод решения. Уравнения в частных производных решаются разностными методами. Используется полностью кон¬ сервативная разностная схема. Ограничения сложности задачи связаны только с ограничением ресурсов вычислительной машины. Память машины БЭСМ-6 позволяет использовать сетку порядка 200 точек. Время счета. При сетке 100 точек характерное время расчета одного временного слоя порядка 1 с. Особенности программы. Программа являет¬ ся частью функционального наполнения ППП САФРА и суще¬ ственно использует предоставленные пакетом услуги. Программа написана в рамках системы OLYMPUS и может быть легко моди¬ фицирована для учета специальных объемных источников энергии, уравнения состояния и т. д. Вспомогательные программы. Программа использует подпрограммы системы OLYMPUS Состояние программы. HERA успешно эксплуа¬ тируется и предназначена для широкого круга пользователей. 75
Язык программирования. Программа написа¬ на на языке Фортран-Дубна. Однако в ней нигде не использова¬ лись операторы указанной версии языка, которые не входят в язы¬ ки Фортран-1 V и Фортран-Стандарт. Операционная система. Специальные требова¬ ния к операционной системе не предъявляются. 2. ПОСТАНОВКА ЗАДАЧИ В программе HERA предполагается, что пространственная область, в которой происходит изменение параметров вещества и поля, содержит ось симметрии. Введем цилиндрическую систе¬ му координат (г, ф, z), направив ось z вдоль оси симметрии. Ве¬ щество в механическом отношении рассматривается как идеаль¬ ная (невязкая) сжимаемая жидкость, состояние которой зависит от одной пространственной координаты — расстояния от оси. Расчетная область представляет собой сектор цилиндра единич¬ ной высоты с углом в один радиан. Движение вещества описывается уравнением Эйлера, которое в массовых лагранжевых координатах (иг, t) имеет вид dUldt = — rdPIdm + //р. (1) Здесь и (иг, t) — скорость вещества, определяющая изменение Эйлеровой пространственной координаты дг/dt = и (иг, Z), (2) р (иг, t) — плотность вещества; Р (тп, t) — гидродинамическое давление; / (иг, t) — объемная плотность электромагнитной силы. Массовая координата иг связана с эйлеровой пространственной координатой г соотношением dm = р г dr. (3) Будем предполагать, что значения массовой координаты иг лежат в пределах: О^иг^/И, которые не изменяются со временем. Пределы изменения пространственной координаты г изменяются со временем: 0 <1 г г (М, t). На границах области иг = 0, г = 0 и иг = М, г = гПрав для уравнения (1) будем рассматривать следующие условия: при г = О скорость равна нулю; при гПрав (2) может быть задана либо ско¬ рость и (М, t) — иПрав (t), либо давление Р (М, t) = РПрав (£). В начальный момент времени для уравнений (1) — (2) должно быть задано распределение пространственной координаты г (иг, 0) (или, что эквивалентно вследствие (3), распределение р(иг, 0), или р (г, 0) и начальной скорости и (иг, 0). Гидродинамическое давление Р, входящее в уравнение (1), определяется плотностью вещества и его температурой. Распре¬ деление по пространству и изменение со временем температуры в области описывается уравнением энергии: ^1 = — р АШ dW I г dt dt \ р ) dm (4) 76
Здесь е (яг, t) — внутренняя энергия вещества, отнесенная к единице массы; W (яг, — поток тепла через поперечное сече¬ ние области; G (яг, t) — массовая плотность источников энергии, з частности джоулев нагрев. Поток тепла W связан с градиентом температуры W = — щ>гдТ1дт, (5) где х — коэффициент теплопроводности. Для уравнения энергии (4) будем рассматривать следующие гра¬ ничные условия: при г=0 поток тепла равен нулю; при г = гПрав W может быть задана либо температура Т (М, t) = ТПрав (t), либо ноток тепла через границу W (М, t) = Жправ (О- В начальный момент времени t = 0 в области должно быть задано распределе¬ ние температуры Т (яг, 0). Объемная плотность / (яг, t) электромагнитных сил в уравне¬ нии (1) пропорциональна векторному произведению вектора плот¬ ности тока j на вектор магнитной индукции В. Поскольку коэффициенты уравнений электромагнитного поля зависят от системы единиц, в программе введены две константы <Сг и С2, которые в системе СГСЕ равны: с± = 4л/С и С2 — 1/С, где С = 2,998-10* * 10 см/с — скорость света; в системе СИ = = ц0, С2 = 1, где ц0 = 4-10“7 Генри/м — магнитная проницае¬ мость вакуума; в системе единиц, используемой в [1]: = 4л, €2 - 1. При этом / = С2 [j, В]. Если вектор электрического поля направлен по оси Z, а маг¬ нитная индукция имеет только ср-ю составляющую (задача о Z-пинче), то плотность магнитной силы направлена по радиусу и равна / = -CJB. (6) Уравнения электромагнитного поля в массовых лагранжевых ко¬ ординатах имеют вид д дш (гВ), д / В \ дЕ 2 dt \ рг / дш ’ (7) (8) где Е (m, t) — Z-я. компонента электрического поля. Если вектор электрического поля имеет только ср-ю компонен¬ ту, а магнитная индукция направлена по оси Z (задача о 0-пинче), то плотность магнитной силы направлена по радиусу и равна / - С2]В. (6.1) Уравнения электромагнитного поля в массовых лагранжевых координатах имеют вид: . рг дВ (7Л) (8.1) 77
где Е (т, Z) — ср-я компонента вектора электрического поля. Связь между плотностью тока и электрическим полем опреде¬ ляется законом Ома: (д 7 = сЕ, где о (гп, t) — проводимость среды. Для уравнений поля будем рассматривать следующие гранич¬ ные условия. На левой границе при г = 0 в силу симметрии либо В (0, I) = 0 (Z-пинч), либо Е (0, t) = 0 (0-пинч). На внешней границе допускаются условия трех типов. 1. Задана индукция В (М, t) = В (гПрав (£), t)- При задании граничных условий 2-го и 3-го типов предполагается, что цилинд¬ рический столб вещества, движение которого рассчитывает про¬ грамма, помещен в неподвижный коаксиальный цилиндр — раз¬ рядную камеру радиуса г*. Внешнюю границу вещества радиусом Гирав (£), отделяет от разрядной камеры вакуумный промежу¬ ток, в котором гГ1рав г г*. Допускается граничное условие следующего вида. 2. На разрядной камере задано электрическое поле Е (г*, 3. Предполагается наличие внешней электрической цепи. При этом стенки разрядной камеры рассматриваются как участок электрической цепи с сопротивлением В и индуктивностью L, рассчитанными на единицу длины столба вещества. Во внешнюю цепь подключен конденсатор емкости С с разностью потенциалов V (£). Обозначим через I (t) ток во внешней цепи. Подчеркнем, что величины 7?, L, С, V, I относятся к единице длины столба плазмьь Таким образом, если I — длина столба плазмы, R, L. С, V, 1 —реальные параметры цепи, то для Z-пинча В = RU,. L = L/l, С = Cl, V = Г П, I = Т, а для 0-пинча В = Rl, L = - LI, С = СП, V = V, I = ТП. Напряжение на обкладках конденсатора изменяется со вре¬ менем по закону 7(<) = 70--^Цт)йт, (10) О где Vo — начальное напряжение. Для Z-пинча разность потенциалов на концах внешней цепи совпадает с напряженностью электрического поля на камере и равна (11) Поскольку в вакуумном промежутке магнитная индукция зави¬ сит от радиуса, как В (г, t) = CJ (г)/(2лг), (12) 78
(13) из (8) мы получаем соотношение Е (г.. У - Е I) = 4{/ (<) In -7-^ j, которое и представляет собой правое граничное условие. Для 0-пинча разность потенциалов на концах внешней цепи равна V — RI — LdHdt, а напряженность электрического поля да камере E(r*, t) = — (7 — RI — LdlldfjIZnr*. (11.1) Щагнитная индукция в вакуумном промежутке не зависит от ра¬ диуса и равна В (t) = CJ (t). (12.1) Проинтегрировав (8) по вакуумному промежутку, получим урав¬ нение V RI Ь прав^ прав? О = [(^2 7‘прав) (13.1) .которое и представляет собой граничное условие справа. Для решения уравнений поля в начальный момент времени t = 0 должно быть задано распределение магнитной индукции в области В (гл, 0), напряжение и ток во внешней цепи. Уравнения движения, энергии и поля совместно с уравнением состояния и выражениями для коэффициента теплопроводности, проводимости и источника энергии образуют замкнутую систему. Уравнение состояния. В стандартной версии программы считается, что давление вещества связано с его плот¬ ностью и температурой соотношением Р = RpT, где R — пос¬ тоянная, а внутренняя энергия в расчете на единицу массы за¬ висит только от температуры: е = RT/(y — 1), где R и у — за¬ даваемые пользователем постоянные. Коэффициент теплопроводности. В стан¬ дартной версии программы предполагается, что коэффициент теплопроводности х связан с температурой и плотностью вещест¬ ва соотношением вида х = xQTaipb', тде х, Ь± — задаваемые пользователем постоянные. Коэффициент электропроводности. В стан¬ дартной версии программы предполагается, что проводимость вещества зависит от его температуры и плотности по закону а = (У0Тагр\ где о0? ^2 — задаваемые пользователем постоянные. Источник энергии. При протекании электрического тока по веществу оно нагревается. Процесс этот описывается объемными источниками в уравнении энергии (4), плотность кото¬ 79
рых равна jE. В связи с этим в стандартной версии программы предполагается, что источники энергии имеют массовую плот¬ ность вида G = ]Е!р + Go^p''3, где Go, а3, Ь3 — задаваемые пользователем постоянные. Кроме этого, в программе можно учесть источники энергии произволь¬ ного вида. 3. СИСТЕМА РАЗНОСТНЫХ УРАВНЕНИЙ Дифференциальные уравнения движения, энергии и поля со¬ вместно с уравнением состояния полностью описывают математи¬ ческую модель задачи. Для численного решения этих уравнений мы пользуемся разностными методами и вводим сетку как по про¬ странству, так и по времени. При этом процедура решения урав¬ нений сводится к последовательному нахождению решения на каждом временном слое. Номер временного слоя будем отмечать верхним индексом п, так, что tn — значение времени па тг-м слое. Шаг по времени будем обозначать &tn = tn+1 — tn, или, ради краткости, просто AZ. Область изменения массовой координаты тп, простирающаяся от точки ш = 0 (г = 0) до m = М (г = гправ (Ц), делится на N интервалов (ячеек). Центры ячеек будем нумеровать индексом I (I = 1, 7V). Границы ячеек нумеруются индексом / (/ = 1, N + 1). Давление вещества Р, плотность р, масса ячейки тп, темпера¬ тура Т, внутренняя энергия с, источники энергии G, магнитная индукция В считаются определенными в центрах ячеек и отме¬ чаются индексом Z. Скорость и, координата г, поток тепла ТУ, напряженность электрического поля Е относятся к границам ячеек и отмечаются индексом /. Каждая ячейка содержит не изменяющуюся со временем мас¬ су вещества Атпг, так что плотность вещества в ячейке равна Pz = 2Amz/(rJn — г*), 1 Г I < N, j = I. (14) Уравнение Эйлера (1) во внутренних узлах сетки аппроксими¬ руем следующим разностным уравнением: (Amz + Am^) (uf1 - w”)/(2М) = = + + 2<7<Л’. (15) Здесь 7?- — коэффициент, являющийся разностной аппрокси¬ мацией коэффициента г в (1): Rj = 0,5 (r-+1 + г-), a qt — давление искусственной вязкости, вводимое в разностную схему для сквозного счета ударных волн. Будем брать его в виде комби¬ нации линейной и квадратичной вязкости. При р]г рр1 или при U?+L вязкость равна нулю, а в противном случае вычис¬ 80
ляется по формуле qi"1 = P”+1 {— + НгМ}- (16) Здесь jii и ц2 коэффициенты линейной и квадратичной вязкости, которые могут быть заданы пользователем. Выражение для магнитной силы fj. приведено ниже. При 7=1 скорость равна нулю. В граничной точке 7 = N + 1 в случае¬ заданной скорости уравнение (15) вообще не нужно, а в случае заданного давления мы полагаем Дтп/v (ujJ+i — и^+1)/(2Д£) = = - ^+1 {Рирав (^+1) - Pn1 - QN1} + W Уравнение траекторий (2) аппроксимируем соотношением (г”'1 - r")/AZ = (u”+1 + u?)/2, 1 < j < N + 1. (17) Для решения системы разностных уравнений на нулевом слое при п = 0 должны быть определены: массы ячеек Дигп границы ячеек г;-, скорости границ плотности в ячейках pz (1 I <1 2V), (1 < у < N + 1). Величины Дтп^г^ и pz связаны соотношением (14). Разностную аппроксимацию уравнения энергии (4) запишем в виде г?+1 _ е? = - (ZT1 + с1) (1/рГ1 - 1/р?) - — — И7+1) + MG?+1, 1<Z<;V. (18) Связь (5) потока тепла с градиентом температуры аппрокси¬ мируем следующим образом: wp1 = - 2 (рх); (гГ1)2 (ТГ1 - + Агсм), 2 < j < N. (19) Иа левой границе, поскольку поток тепла в центре равен ну¬ лю, W± = 0. На правой границе, в случае заданной граничной температуры, - - 2 (хр)Л. (гК1!)2 (Гправ G”+1) - ^Г)/А^. Выражение для источника энергии Gt приведено ниже. Для решения системы разностных уравнений энергии в начальный мо¬ мент времени должна быть задана температура ячеек Ть 1 < I < N. Перейдем к аппроксимации уравнений поля. Z-пинч. Введем Ъ = гВ — величину, определенную в цен¬ трах ячеек. Согласно [1] заменим уравнения (7), (9) на + Z = 7. (20) Величины и Qj есть интерполяция плотности и проводимо¬ сти, определенных в центрах ячеек, на границы ячеек. 81
В программе эта интерполяция выполняется следующим об¬ разом: Р; = (Amz + Anzz-x)/(rz — ИД), о,- = {«Гц (г • — rti) + (У[ (rj — rj)}/(rl — Г?_х), rz == o,5(r"+1 + тДД1). Если ввести величины Дт, 4- Д/м, , 4 о о Л = 4^ °iEi = ~ Ei <СТИ to — П-i) + (Тг (Г[ — />!)}, имеющие смысл тока, текущего по j-й границе в расчете на один радиан, то аппроксимацию (20) можно записать в виде С1 - = С\1^+1. (21) Используемая нами аппроксимация уравнения (8) несколько отличается от используемой в [1], хотя также приводит к пол¬ ностью консервативной разностной схеме. Предполагая, как и ранее, что величина Ъ = гВ — постоянная в ячейке, проинтег¬ рируем уравнение (8) по ячейке: Ej+1 - Е} = С2 А In , 2 < I < N. Будем использовать чисто неявную разностную схему и аппрок¬ симируем последнее соотношение следующим образом: Запишем теперь граничные условия в разностной форме. На левой границе Ъ± = 0, или Е™ = Е™. Чтобы записать граничное условие справа, введем В (г) = Ъ*!г — магнитную индукцию вне плазмы. В этом случае соотношение (20) при / = N + 1 запи¬ шется в виде 77’71+1 &N+1 — Если задана магнитная индукция на внешней границе плазмы (первый тип граничного условия), то соотношение (23) замыкает систему разностных уравнений поля. Если мы учитываем вакуумный промежуток rNrl (tn г г*) между плазмой и разрядной камерой, то величина Ь* в нем аналогично (22) изменяется по закону (24) ( rN+l rW+l ) 82
(25) (27) Если задано электрическое поле Е (г*, t) на разрядной камере (второй тип граничного условия), то соотношение (24) замыкает систему разностных уравнений поля. При наличии внешней электрической цепи (третий тип гра¬ ничного условия) связь между величинами Ъ* и Е* следует из разностной аппроксимации (11): Е*+1 = Р(0’5) — 7?7(0>5) — (7”+1 — 7"), где 1 = Ъ^2л/Сг, (26) = Vn — I^MIC. Магнитная сила, действующая на 7-ю границу ячейки, равна г1 In ( 3 3 2 < 7 < ^ + 1, ^v+i = Мощность джоулева нагрева, выделяемого на 7-й границе между ячейками, равна Qi = Л/1/}"’’”; 2 < 7 < N + 1. (29) Эта мощность распределяется между ячейками I и I — 1 пропор¬ ционально проводимости ячеек, так что скорость вклада энергии в ячейку равна (СПдж = ЕГ1 [Ej 4- az (г? - г^)](0,5) + 4* Е^+1 -у (Т, (fj+1 Г;)]<°>5>. Г- (28) (30) Покажем, что выписанная выше разностная схема является пол¬ ностью консервативной, т. е. что из разностных’уравнений дви¬ жения, энергии и поля вытекает закон сохранения полной энер¬ гии системы. Введем 1=1 (31) А кинетическую энергию системы поля n-м временном слое; (32) 1=1 внутреннюю энергию системы на n-м слое. Из разностных урав¬ нений движения и энергии вытекает, что (ekin “Ь £int)n+1 (ekin eint)n — ДИ Д^И^драд (£n+1) N N+1 —At 2 + M 2 Еи^6\ (33) 1 = 1 j=2 где ДИ = —Рправ (tn+1) 0,5 [(г/Й)2 — (гл+1)2] — работа внешнего 83
Л fcmag (34) давления над системой. Введем магнитную энергию на тг-м вре, менном слое: l=i i Изменение магнитной энергии, заключенной в плазме, при пере- .ходе от n-го к (п + 1)-му временному слою равно N+l W+1 ЕтД - ^ag = - А* £ <?; - А* £ ^°’6)ВД1 - j=l i=l С' —П+1 ^2 гП+1» п 1 N+1 Wn- . 1 rw+l Складывая с предыдущим соотношением, мы видим, что изме¬ нение полной энергии плазмы &tot ~ ekiu 4“ ^int 4“ Smag есть „ т-П+1 _ e«ot = ДА - ОРп - А^прав 4- 1 ZW+1 N 4~ У?, (<?Пист 4—’5)^v++i- (35) i=i Таким образом, в результате тождественных преобразований из разностных уравнений движения, энергии и поля следует, что изменение полной энергии плазмы связано с работой внешних сил давления, работой внешнего магнитного поля, притоком тепла через внешнюю границу, притоком магнитной энергии через внешнюю границу, объемными источниками тепла, в которые не входит джоулев нагрев. Если граничное условие для уравнения поля ставится на раз¬ рядной камере, то мы можем включить в систему и вакуумный интервал. Энергия содержащегося в нем магнитного поля равна е«ао = -^-(ЭДЧп^. (36) 1 rtf+l Изменение ее за шаг по времени равно п+1 п At Svac SVac — ~7=г~ ,.п+1 7W+1 гп ^+1 Таким образом, изменение полной энергии системы равно (8tot + evac)n+1 — (etot + £Vac)n = ^4 — AtWправ (in+1) -|- + Ai (Оист + (37) 1=1 84
j]cjh напряжение на разрядной камере создается внешней элект¬ рической цепью, то поток магнитной энергии At/C^'^E1*1 равен — энергии, выделяемой электрической цепью за 4>дин временной шаг. 0-п и н ч. Согласно [1] уравнения (7.1) и (9) заменим на еТ1 Pj 0’Г1)2 Сгз. i=i; (38) 2 где ej = р; и oj есть интерполяция функций на границу ячей¬ ки. В программе эта интерполяция выполняется следующим образом: Р; = (Дтпг + Дтпц)/^ — rf-j), Oj (гI — r^) = <Тц (Tj — п^) + az (rz — г}), rz = 0,5 (г?*1 + r7+t)- Если ввести величины = (Amt + A^z-i) <W(2Pjd) = Ej {сг^ (r; — rz_j) + az (rz — r^)}, имеющие смысл тока, текущего по /-й границе, то аппроксимацию (22) можно также записать в виде В, - = -С^. (39) При аппроксимации] уравнения (8.1) мы используем чисто неявную схему: в;г+1 рГ1 (40) ~ 1 < I < N, / = I. Запишем теперь граничные условия в разностной форме. На левой границе et = 0. Чтобы записать граничное условие справа, введем магнитную индукцию В (М, t) = В* (t) на границе плазмы. При j = N 4- 1 соотношение (38) мы запишем в виде п+1 eN+l 2р п+1 п+1 „п+1 rl=NrN+l (41) Если магнитная индукция В* (£) задана, то соотношение (41) замыкает систему уравнений поля. Если мы учитываем вакуумный промежуток r^+i (О r "С г* между плазмой и разрядной камерой, то магнитная индукция В* (t) в нем согласно (40) изменяется по закону {В™ [4 - (г^Д)2] - Вп* [г2 - (г£+1)2]} = - (еГ - <\), (42) 85
где е* = г*Е* —величина на разрядной камере. Если эта личина задана, то соотношения (41), (42) замыкают систему уравнений поля. Наконец, при наличии внешней электрическом цепи, е* и В* связаны согласно (11.1) соотношением где I = В*/Съ (44) = Vй — (45) Магнитная сила, действующая на у-ю границу ячейки, равна (46) Мощность джоулева нагрева, выделяемого на у-й границе между ячейками равна Q, = ef+1lf'b\ 2 < j < А + 1. (47) Эта мощность распределяется между ячейками I и I — 1 пропорцио¬ нально проводимости ячеек, так что мощность вклада энергии в ячейку равна (6г?+1)дж = j+iaz (r j+i — r z)](0,5) + el+i[^ j+i^i(r j+i—rz)](0’°?‘ (48) Выписанная выше разностная схема является полностью кон сервативной [1], т. е. из разностных уравнений движения, энергии и поля вытекает закон сохранения полной энергии системы. Введем магнитную энергию на n-м временном слое N т 1(г”+1)2 - С”)2]- (49; 1=1 Изменение магнитной энергии, заключенной в плазме, при перехо¬ де от n-го к (п + 1)-му временному слою равно N+l N+1 emVg - e"ag = - Ai Q} - A* J? - j=l j=l р(0,5)ЛП+1 C2 J^n+l г/^n+l iJB, \91 — c? ejv+1 ~ 4СГ LV ^+1) — V-iV+l) ]• Складывая с соотношением (33), мы видим, что изменение полной энергии плазмы есть ЦЦ - etnot = АЛ - -g- В^ [«*)* - «^1 - N - А^прав (tn«) + Af J? Am, (G”+1)„CT ^«i. (50) 1=1 Таким образом, в результате тождественных преобразований из разностных уравнений движения, энергии и поля следует, что 86
изменение полной энергии плазмы связано с работой внешних сил -давления, работой внешнего магнитного поля, притоком тепла ^ерез внешнюю границу, притоком магнитной энергии через внешнюю границу, объемными источниками тепла, в которые не входит джоулев нагрев. Если граничное условие для уравнения поля ставится на раз¬ рядной камере, то мы можем включить в систему и вакуумный ин¬ тервал. Энергия содержащегося в нем магнитного поля равна ^ас==^-даЙ-(^+1)2]. (51) Изменение ее за шаг по времени равно Таким образом, изменение полной энергии системы равно (e”ot + е"ас) - (etot - е”ас) = ДА — Д^прав (I™) + + Д< £ (СПист - В^К+1- (52) 1=1 Если напряжение на разрядной камере создается внешней электрической цепью, то поток магнитной энергии равен Д£/<°’5)е*+1 — энергии, выделяемой электрической цепью за один временной шаг. 4. СТРУКТУРА ПРОГРАММНОГО КОМПЛЕКСА И ОБРАЩЕНИЕ К ПРОГРАММЕ В комплексе соблюдены соглашения системы OLYMPUS 15—7] и используются предоставляемые системой услуги. В част¬ ности, в комплексе нет основной программы и подпрограмм клас¬ са управления расчетом, в качестве которых используются соот¬ ветствующие подпрограммы библиотеки CRONUS. Все переменные, необходимые для работы программы, хранят¬ ся в оперативной памяти вычислительной машины и группируются в блоки общей памяти. Главным отличием схемы счета комплекса HERA от схемы счета комплекса FLORA [8] является наличие в комплексе HERA подпрограмм, связанных с решением уравнения поля: 2.40 FIELD — управление решением уравнений поля; 2.41 ECDUCT — расчет коэффициентов электропроводности; 2.42 ABCFF — расчет коэффициентов разностного уравне¬ ния поля; 2.44 CIRCT — расчет тока и напряжения во внешней цепи; 2.45 HFORCE — расчет магнитной силы; 2.46 FINDHE — расчет электрического и магнитного поля в системе. 87
Модули, имеющие функциональные имена, совпадающие с именами в комплексе FLORA, претерпели изменения, связанные в основном со следующими факторами: явно учтена цилиндри¬ ческая геометрия, в уравнение движения введена магнитная сила, в уравнение энергии введен джоулев нагрев, в подсчет полного баланса энергии введена энергия магнитного поля. Сборка конкретных версий программ (Z- или 0-пинч, различ¬ ные источники тепла, граничные и начальные условия и т. д.)у проведение расчетов и другие возможности комплекса программ HERA подробно описаны в инструкциях [9, 10]. ЛИТЕРАТУРА 1. Самарский А. А., Попов 10. П. Разностные методы решения задач газо¬ вой динамики. М.: Наука, 1980. 351 с. 2. Самарский А. А., Волосевич П. П., Волчинская М. И., Курдюмов С. II. Численные методы решения одномерных нестационарных задач магнит¬ ной гидродинамики: Препр. ИПМ АН СССР. М., 1967. 48 с. 3. Самарский А. А., Волосевич II. II., Волчинская М. И., Курдюмов С. II. Метод конечных разностей для решения одномерных нестационарных задач магнитной гидродинамики.— ЖВМ и МФ, 1968, т. 8, № 5, с. 1025— 1038. 4. Горбунов-Посадов М. М., Карпов В. Я., Корягин Д. А. и др. Пакет САФР^: Программное обеспечение вычислительного эксперимента.— В кн.: Пакеты прикладных программ. Вычислительный эксперимент. М.: Наука, 1983, с. 50—69. 5. Roberts К. V. An Introduction to the OLYMPUS System. Computer Phys. Commun., N 7 (1974), p. 237—243. 6. Christiansen J. P., Roberts K.V. OLYMPUS. A standart control and uti¬ lity package for initial-value Fortran programs. Computer Phys. Com¬ mun., N 7 (1974), p. 245—270. 7. Гайфулии С. А., Карпов В. Я., Мищенко Т. В. САФРА. Функциональное наполнение. Система OLYMPUS: Препр. ИПМ им. М. В. Келдыша АН СССР № 27, М., 1980. 25 с. 8. Гайфлулин С. А., Захаров А. В., Змитренко II. В. и др. Программа расчета уравнений одномерной газодинамики с теплопроводностью.— В кн.: Пакеты прикладных программ. Вычислительный эксперимент,. М.: Наука, 1983, с. 70—85. 9. Гайфулии С. А ., Захаров А. В., Змитренко II. В. и др. САФР А. Функ¬ циональное наполнение FLORA. Программа расчета уравнений одномер¬ ной газовой динамики с теплопроводностью: Инструкция. М.: ИПМ им. М. В. Келдыша АН СССР, 1982. 52 с. 10. Гайфулии С. А., Гасилов В. А., Карпов В. Я. и др. САФРА. Функцио¬ нальное наполнение. Программа HERA расчета уравнений одномерной магнитной гидродинамики с теплопроводностью в осесимметричном слу¬ чае. М.: ИПМ им. М. В. Келдыша АН СССР, 1983. 66 с. 88
УДК 519.683.8:53 ОРГАНИЗАЦИЯ ФУНКЦИОНАЛЬНОГО НАПОЛНЕНИЯ В ГЕНЕРАТОРЕ ПРОГРАММ «ПОЛЕ-ЗМ» В. Л. Рвачев„ Г. П. Манько, И. И. Кирюшина, В. И. Осьмачко Пакет прикладных программ для решения задач математической физики (генератор программ «Поле») предназначен для решения задач исследования, расчета и оптимизации деформационных, си¬ ловых, температурных и других физико-механических полей. В настоящее время в эксплуатации находятся две версии генера¬ тора «Поле-3» и «Поле-ЗВ», рассчитанные на решение скалярных и векторных задач соответственно. Организационно генератор программ (ГП) состоит из трех частей: функционального наполнения, системного наполнения и языка заданий. Функциональное наполнение отражает специфи¬ ку предметной области и включает прикладные программы, ис¬ пользуемые при составлении рабочего комплекса программ для решения поставленной задачи, и набор стандартных схем счета, из которых состоит программа решения той или иной типичной задачи [1]. Язык заданий (директивы) является средством обще¬ ния пользователя с ГП «Поле» [2, 3]. Системное наполнение, ис¬ пользуя элементы функционального наполнения и понимая кон¬ струкции языка, реализует дисциплину работы с пакетом. В новой версии ГП «Поле-ЗМ» сохранена преемственность пре¬ дыдущих версий, изменена организация функционального на¬ полнения и работа с ним. В настоящее время решен вопрос авто¬ матической настройки системы на требуемую размерность (реше¬ ние одно-, дву и трехмерных краевых задач). Автоматическая настройка системы на требуемую размерность осуществляется с помощью директивы об основном уравнении. Эта директива, как и любая другая в ГП «Поле», состоит из заго¬ ловка и тела директивы, между которыми ставится разделитель «:» (двоеточие). Конец директивы определяется разделителем «;» (точка с запятой). Тело директивы об основном уравнении пред¬ ставляет собой ту же конструкцию, что и в «Поле-3», «Поле-ЗВ» [2], а заголовок ее видоизменен и имеет вид: (ЗАГОЛОВОК ДИРЕКТИВЫ):: = РЕШИТЬ КРАЕВУЮ ЗАДАЧУ / (РАЗМЕРНОСТЬ), (КЛАСС ЗАДАЧИ) / ДЛЯ ДИФ¬ ФЕРЕНЦИАЛЬНОГО УРАВНЕНИЯ | РЕШИТЬ КРАЕВУЮ ЗАДАЧУ / (РАЗМЕРНОСТЬ), (КЛАСС ЗАДАЧИ) / ДЛЯ СИ¬ СТЕМЫ ДИФФЕРЕНЦИАЛЬНЫХ УРАВНЕНИЙ | РЕШ / (РАЗМЕРНОСТЬ), (КЛАСС ЗАДАЧИ)/ (РАЗМЕРНОСТЬ) :: - ПУСТО | 1-МЕРНУЮ | 2-МЕРНУЮ | | 3-МЕРНУЮ (КЛАСС ЗАДАЧИ):: - (ЛИНЕЙНОСТЬ) | (СТАЦИОНАР¬ НОСТЬ) | (ЛИНЕЙНСТЬ), (СТАЦИОНАРНОСТЬ) | ПУСТО (ЛИНЕЙНОСТЬ):: = ЛИНЕЙНУЮ ((МЕТОД) | НЕЛИНЕЙ¬ НУЮ (ТПП НЕЛИНЕЙНОСТИ) (СТАЦИОНАРНОСТЬ):: = 89
НА СОБСТВЕННЫЕ ЗНАЧЕНИЯ «МЕТОД» | СТАЦИОНАР НУЮ «МЕТОД» | НЕСТАЦИОНАРНУЮ «МЕТОД» <ТИП НЕЛИНЕЙНОСТИ):: = С ВНУТРЕННЕЙ НЕ ЛИПЕЦ НОСТЬЮ «МЕТОД» | С ВНЕШНЕЙ НЕЛИНЕЙНОСТЬЮ ТОД» | С ОБЩЕЙ НЕЛИНЕЙНОСТЬЮ «МЕТОД» «МЕТОД»:: = ПРЕОБРАЗОВАНИЕ КИРХГОФА | БУБНО- ВА - ГАЛЕРКИНА | МАЛОГО ПАРАМЕТРА | СЕТОК | ВАР11 д, ЦИ01Н1ЫМ | ПЕРЕМЕННЫХ ПАРАМЕТРОВ УПРУГОСТИ УПРУГИХ РЕШЕНИЙ | С ПРЕОБРАЗОВАНИЕМ ПО Z С ПРЕОБРАЗОВАНИЕМ Г1О ФИ | С ПРЕОБРАЗОВАНИЕМ ПО Т. В дальнейшем предполагается осуществлять автоматическую настройку модулей функционального наполнения также на решав’ мый класс задачи, указанный в заголовке директивы об основном уравнении. Кроме этого, в новой версии модули функционального наполне- ния составляются на языке СТЕП, являющимся внутренним для ГП «Поле». Этот язык позволяет пользователю (математику-при¬ кладнику) программировать на уровне формул. Введение внутрен¬ него языка связано с тем, что составлением и подключением к системе новых модулей функционального наполнения занимаются математики-прикладники, для которых программирование на процедурном языке не является профессиональным занятием. Язык СТЕП определяется с помощью множества допустимых предложений. Это множество предложений определяется предмет¬ ной областью каждого банка и может пополняться пользователем. Предложение должно оканчиваться точкой. Если оно начинается символом «*», то это — комментарий. СТЕП имеет многоуровне¬ вую структуру. На верхнем уровне осуществляется запись схемы вычисления алгоритма, т. е. запись правил сборки программы с помощью фундаментальных понятий. На остальных уровнях -- запись программы в виде последовательности метапеременных (макровызовов) в соответствии с правилами, определенными на предыдущих уровнях. На этих уровнях осуществляется текстовая подстановка. В ос¬ нове транслятора с языка СТЕП лежат средства макрогенерации [4]. Каждой метапеременной соответствует некоторая текстовая заготовка. Т. е. имеем макроопределение, имя которого является метапеременной, а тело — текстовой заготовкой. Текстовая за¬ готовка может быть на базовом языке, языке СТЕП или на их смеси. Отсюда следует, что макроопределение может быть вложен¬ ным. По желанию пользователя можно произвести замену лю¬ бой последовательности символов текстовой заготовки на другую последовательность. Программа на языке СТЕП — это последовательность предло¬ жений, причем первое из них — это «СТЕП.», а последнее «КОНЕЦ СТЕП.». Порядок следования предложений имеет принципиальное значение, так как определяет порядок сборки текстовых заго¬ товок. 90
результатом макрогенерации является программа на базовом ^зыке ГП «Поле». Единственное условие, которое должно соблю¬ даться при написании программы на языке СТЕП, состоит Р том, что результат макрообработки должен быть с точки зрения синтаксиса и семантики правильной исходной программой. В качестве примера составления программы на языке СТЕП рассмотрим формулу структуры решения краевой задачи [9] для уравнения = q!D (или V4£7 — KU = 0) ■д краевых условий U |qq = 0 Она имеет вид U — соР wrP (£>2о> -J- vT2to) — tfDiP. Запись программы на языке СТЕП: СТРШЗ. СТЕП. * С7 = £71. *U1 = W * Р _ 0,5 М7**2*Р* (D2(JV) + CONST* Т2 (W)) - — W** 2*£И (Р). W = ОМЕГА. Р = ПОЛИНОМ. Z6 = W ** 2. Z2 = D2 (И7) + 0,3 * Т2 (И7) (Z2 => Z9), ГДЕ Zl = D2 (И7), Z2 = Т2 (И7). Zl = Z6 * Z2. Ul = W*P — 0,5 * Zl — Z6*P1(P). КОНЕЦ СТЕП. Транслятор преобразует эту программу в следующую последо¬ вательность макровызовов: О ВНЕШНИЕ СТРШЗ О О ЗАГОЛОВОК О О ОПИСАНИЕ СТРШЗ О О И7 = ОМЕГА О 0Р=ПОЛИНОМ О 0Z6 = = W ** 2 О О Zl = D2 (И7) О О Z2 = Т2 (И7) О О Z2 = = D2 (IV) + 0,3 *72 (И7) (Z2 => Z9) О О Z1=Z6 * Z2 О О U1 = = И7*Р—;0,5*Zl —Z6*£>1 (Р) О О КОНЕЦ О Запись 0 Z2 = D2 (И7) + 0,3 * Т2 (PF) (Z2 => Z9) 0 , говорит о том, что при замене макровызова на тело макроопределения в тексто¬ вую заготовку вместо символов Z2 подставляются символы Z9. При разработке языка СТЕП использовались идеи, описанные в [4—8]. Для реализации поставленных выше задач потребовалось по- новому организовать хранение и сборку модулей функционально¬ го наполнения ГП «Поле-ЗМ». Архив функционального напол¬ нения ГП состоит из универсальных и специализированных моду¬ лей, зависящих и не зависящих от размерности задачи. Универсальные модули, не зависящие от размерности задачи, записаны в библиотеку постоянных модулей и могут входить в рабочий комплекс программ любой задачи из предметной обла¬ сти пакета. Специализированные, зависящие от размерности задачи моду¬ ли оформлены в виде функциональных банков. Имя банка отра¬ жает назначение модулей, входящих в этот банк. 91
структур решений краевых задач; операций; операций отсечки; формул склейки; операций отсечки без нормализации; В ГП «Поле-ЗМ» были созданы следующие функциональны^, банки: 1) 2) 3) 4) 5) 6) 7) — виды — виды — виды — виды виды — методы обработки матриц; — методы интегрирования; — виды выдачи результатов на АЦПУ пип графопостроитель; — виды аппроксимационных полиномов; — методы формирования матрицы; — виды кортежных операций. СТР R6> К ФИН SI OBR ИНТЕГР 8) ВЫДАЧА 9) ПОЛИН 10) FORMAT И) КОРТЕЖ Каждый банк — это множество макроопределений, имеющих характерные для данного банка имена. Правила сборки модуля из текстовых заготовок задаются программой на языке СТЕГ1, входящей в банк или подключаемой с перфокарт. Такая органи¬ зация функциональных банков позволяет конструировать раз¬ личные модули, используя одни и те же текстовые заготовки, создавать новые модули, используя уже имеющиеся текстовые заготовки, или дополнить при необходимости банк новыми макро¬ определениями, автоматически конструировать модули уже на¬ строенными на нужную размерность. Информация о специализированных модулях, необходимых для генерации рабочего комплекса программ конкретной задачи, берет¬ ся из информационного массива, заполняемого при трансляции директив. Уникальные специализированные модули, не зависящие от размерности и не включенные ни в один функциональный банк, записаны в личную библиотеку и вызываются из нее по списку. В этот список заносятся все имена модулей, не найденных в биб¬ лиотеке постоянных модулей и в функциональных^банках. ЛИТЕРАТУРА 1. Рвачев В. Л., Манъко Г. П. Генераторы программ серии «Поле» для ре¬ шения задач математической физики.— Численные методы механики сплошной среды, 1981, т. 12, № 3, с. 79—104. 2. Манъко Г. П. Язык директив для генератора программ «Поле-3» (Ч. I): Препр. № 118 ИПМ АН УССР. Харьков, 1979. 66 с. 3. Манъко Г. П. Язык директив для генератора программ «Поле-3» (Ч. II): Препр. № 143 ИПМ АН УССР. Харьков, 1979. 72 с. 4. Грис Д. Конструирование компиляторов для цифровых вычислительных машин. М.: Мир, 1975. 544 с. 5. Жоголев Е. А. Синтаксически управляемое конструирование программ.— Программирование, № 6, 1976, с. 20—25. 6. Велъбицкий И. В., Ковалев А. Л. Метасистема СТЭЛЗ. Принципы эво¬ люционного развития языков программирования.— УС и М, № 1, 1980, с. 56—61. 7. Глушков В, М., Велъбицкий И. В., Стогний А . А . Единый подход к тех¬ нологии разработки пакетов прикладных программ.— В кн.: Структура и организация пакетов программ. Тбилиси: ВЦ АН ГССР, 1976, С. 5—9. 92
8. Дзержинский Ф. Я., Тер-Сааков А. П. Технология программирования — структурный подход: Учебно-методическое пособие. М.: ЦНИИатом- информ, 1978. 88 с. 9, Рвачев В. Л., Курпа Л. В., С-клепус Н. Г., Учишвили Л. А . Метод R-функ¬ ций в задачах об изгибе и колебании пластин сложной формы. Киев: Наук, думка, 1973. 124 с. УДК 519.683.8:536 ТЕХНОЛОГИЯ ПРОГРАММИРОВАНИЯ АЛГОРИТМОВ РЕШЕНИЯ КРАЕВЫХ ЗАДАЧ ТЕПЛОПРОВОДНОСТИ В ГЕНЕРАТОРЕ ПРОГРАММ «ПОЛЕ-3» Г. П. Манько, Н. А. Сафонов, Н. Д. Сизова 1. НЕЛИНЕЙНЫЕ КРАЕВЫЕ ЗАДАЧИ Рассматривается линейное дифференциальное уравнение эллиптического типа в частных производных, заданное в области Q CZ 723, ограниченной кусочно-гладкими поверхностями Г^ со смешанными краевыми условиями з = - V = Й, 1 k ]J (1) и = Т Г1? (2) duldv + hpi = /х, Г2, (3) ди!дУ -|- h2ifi = f2, Гз, (4) где х — (ях, х2, хъ) ЕЕ Q, То, F, ft, и £= Н1, v —■ направление внешней нормали к границе области Q, а0, Аи £= L2 (Q). Граничное условие на Гз соответствует теплообмену излучением по закону Стефана — Больцмана [1]. К задаче (1) — (4) применим итерационный процесс [2], осно¬ ванный на замене условия (4) одним из условий: диДду + h2u'i-1ui = f2, Г3, (5) dui/dv=f2~h2Ui-1, Г3, (6) где i — номер шага итерационного процесса. Таким образом, нелинейная краевая задача (1)— (4) свелась к последовательности линейных краевых задач, в каждой из кото¬ рых теплообмен на Гз описывается уже линейным законом (5) или (6). Задачи (1) —(3), (5) или (1)—(3), (6) решаются^ помощью метода 72-функций [3]. Для обеспечения сходимости итерационно¬ го процесса на каждом i-м шаге вычисляется полусумма темпера¬ турных полей Z-ro и (Z — 1)-го шагов. Описываемый в данной статье подход к решению краевой за¬ дачи (1) — (4) основывается на применении 72-функций в сочетании с методом линейной итерации [3]. Это позволило формализовать вычислительный алгоритм и создать теоретическую базу для ав¬ 93
томатизации программирования при решении нелинейных крае, вых задач данного типа. Схема алгоритма решения данного класса задач следующая. 1. Замена нелинейного граничного условия (4) линейным по (5) или (6) и построение в результате такой линеаризации итера¬ ционного процесса. 2. Задание начального приближения температурного поля. 3. Решение линейной краевой задачи на Z-м шаге итерацион¬ ного процесса. 4. Определение среднего арифметического значения темпера¬ турных полей i-го и (i — 1)-го шагов. 5. Проверка условия окончания итерационного процесса. Если оно не выполняется, то перейти к п. 3, т. е. к следующему шагу. В Институте проблем машиностроения АН УССР создай генератор программ «Поле-3» [4], предназначенный для автомати¬ зированного составления комплекса программ решения двумер¬ ных и осесимметричных краевых задач математической физики в областях сложной формы. Для решения задачи (1)—(4) в усло¬ виях эксплуатации генератора программ «Поле-3» расширены воз¬ можности некоторых директив входного языка и составлены про¬ граммные модули функционального наполнения, реализующие описанный выше алгоритм. Покажем использование ГП «Поле 3» для решения задач типа (1)—(4) на следующем тестовом примере. Пусть нелинейная краевая задача имеет вид: Aw- = /, Q, zz = То, Г1? du!dv + hu± = О, Г2, (7) (8) (9) где Q — прямоугольная область с центром в начале декартовой системы координат с границами: : г = ±1, Г2:г/ = ±1, = ст 1 fivim с границами, i j . ju =■ i, ± 2 • У — ~r~ J- я л 0 — = 1 + (Л/2) (1 - г/2), f = -2 exp (1 - z2) (1 - 2z2) _ [4 (1 — у2) - • (1 + 8г2) + И exp (4(1 — r2)). Линеаризация краевой задачи (7) —(9) по (5) приводит ее к виду: = /, Й, (10) щ = То, Г1? (И) du-Jdv + 4- = 0, Г2, (12) а по (6) граничное условие (4) имеет вид dujdv = —hui-i, Г2. (13) Приближенное решение задач (10)—(12) и (10), (11), (13) строилось по формуле: п где к _ 1, 11 — координатная последовательность, строя- (14) 94
даяся на основе теории Л-функций [3]. Неизвестные коэффициен¬ ты на каждом шаге итерационного процесса определялись 03 условия минимума следующего функционала: Ii = {(grad и{)2 dQ. -f- hut^uf d?2 (15) Q Г2 для задачи (10) —(12), Ii = § {(grad Ui)2 + 2/uJ ~2 hul^Ui d£2 (16) Q Г2 для задачи (10),. (11), (13). Минимизация функционалов (15) и (16) осуществлялась с по¬ мощью метода Ритца [5]. Для решения задачи (7)—(9) генератором программ «Поле-3» необходимо определить вид структуры для линейных краевых задач (10) —(12) или (10), (11), (13). Составляющие части струк¬ туры решения задачи (10)—(12) выглядят так: Щ = uoi + Wii, Uot = Ф1 + (ЯА - ф2, (17) Uu = hPu - [D? (ЛЛх) - ЯхАРхг]. (18) п Здесь Plt = 2 Ск'Утп —коэффициенты, подлежащие ’опре- к=1 делению; — аппроксимирующая последовательность (поли¬ номы Чебышева); Ц и /2 — функции, определяющие участки гра¬ ниц области с однотипными краевыми}условиями, и такие, что fj = 0, на Г;, fj^> 0 в Q, fj < 0 на Q, j = 1, 2, df2ldv = 1 на Гг, Л = (1 — £2)/2, /2 = (1 — у2)/2. Функции фх = = То и ф2 = И2 = 0 определяют правые части граничных условий (11) и (12) соответственно, Hi — «склейка» функций Н± и Я2: Н = (ZT1G)2 + H2Ui-i <O1)/(cD1 4- (D2), где cojl = 0 — уравнение границы, на которой задано линейное условие третьего рода, со2 = 0 — нелинейное условие. В данном тексте линейное условие отсутствует, поэтому Н1 и Н2 определя¬ лись одинаково: Нг = Н2 = Из = . 001, = со> = /2. Для организации итерационного процесса к ГП «Поле-3» подключены составленные по разработанному [алгоритму блоки формирования матриц и оформления результатов. Начальное приближение для работы этих блоков задается в директивах «ВВЕСТИ КОЭФФИЦИЕНТЫ» и «ДОПОЛНИТЕЛЬНЫЕ ПАРАМЕТРЫ». Для блока оформления результатов через дирек¬ тиву «КОНСТАНТЫ»: (a, s, N)» задается абсолютная точность е: I Ск0 — | <е, & = 1, п и число шагов 7V, по достижении 95
которого произойдет окончание итерационного процесса, если заданная точность е не достигается. Исходная информация для решения задачи (7)—(9) на вход¬ ном языке ГП «Поле-3» имеет следующий вид. 1. РЕШИТЬ КРАЕВУЮ ЗАДАЧУ ДЛЯ ДИФФЕРЕНЦИАЛЬ¬ НОГО УРАВНЕНИЯ: О и = V (Vi в Wi). 2. С КРАЕВЫМИ УСЛОВИЯМИ: UCB3 = Ф (Bi = Pi, Fi, F2, F2, F2/<Pi = Ri на Fit Ф2 = R2 на F2!Hi = КЗ на F2IH2 = R3 на F2). 3. ЛОГИКА ФОРМ ОБЛАСТЕЙ: Wi = (Fl Д F2), W2 = F2. 4. ФУНКЦИОНАЛЬНЫЕ КОМПОНЕНТЫ: Fi = (1 _ X * Х)/2, D (1, 0) Fi = -X, D (0, 1) Fi = 0, D (2, 0) Fl = -1, D (1, 1) Fl = 0, D (0, 2) Fl =0, F2 = (1 — Y * Y)/2, D (1, 0) F2 = 0, D (0, 1) F2 = —Y, D (2, 0) F2 = 0, D (1, 1) F2 = 0, D (0, 2) F2 = -1, Ri = 1 +.0005*(1 D (1, 0) Ri = 0, D (0, 1) Ki = = —.001 * Y, D (2, 0) Ri = 0, D (1, 1) Ri = 0, D (0, 2) Ri = 001, R2 = 0, R3 =.001, G1 = EXP (1 — X*X) +. 0005* (1 - У*У)*ЕХР (4* (1 - - X*X)), Vi = — 2 * EXP (1 — X * X) * (1 — 2 * X * X) — (4 * (1 — У * У) * (1 - 8 * X*X) + 1) *.001 * EXP (4 * (1 - X * X)). 5. АППРОКСИМИРОВАТЬ НЕОПРЕДЕЛЕННЫЕ КОМПО¬ НЕНТЫ: Pl — функций вида (1), где 1 — ПОЛИН(ЧЕБЫШЕ) с парам (10, Ч, Ч) в прямоугольнике (—1, —1, 1, 1). 6. КОНСТАНТЫ: (0, .0001, И). 7. ВВЕСТИ КОЭФФИЦИЕНТЫ. 8. ДОПОЛНИТЕЛЬНЫЕ ПАРАМЕТРЫ: 0, 0, 0, . . ., 0. 9. ОБРАБОТКА: ROT (напечатать коэффициенты). 10. ИНТЕГРИРОВАТЬ: область — ГАУСС 40 в Wi с сеткой (0, 0, 1, 1, 10), контур — КОНОПР по Wi с сеткой (1, 1, 109, 100 , 0, 1). И. ВИД ФОРМЫ РЕЗУЛЬТАТА: ТАБЛ/СЕТКА (1) для формул (1, 2, 3)/, сетки: 1 — (0, 0, 1, 1, .2, .2) в Wi, формулы: Ф1 = U, Ф2 = G1, ФЗ = (U - G1)/G1. .12. СФОРМИРОВАТЬ <F0RM1>:AZT — ИНТЕГРАЛ ПО ОБЛАСТИ ОТ ВЫРАЖЕНИЙ <GRADt71/ X GRADG1 j> + ИНТЕГРАЛ ПО КОНТУРУ ОТ ВЫРАЖЕНИЯ <•5 X (GRADC71/ х GRAD+2 X UiJ + GRADKl? X X GRADJ+2 X (71/)>, j BJ — ИНТЕГРАЛ ПО ОБЛАСТИ ОТ ВЫРАЖЕНИЯ <- GRADG17 х GRAD/70 - V X UiJ} + 96
ИНТЕГРАЛ ПО КОНТУРУ ОТ ВЫРАЖЕНИЯ <—(71/ х GRADt/O X GRADVT2>. 13. КОНЕЦ ИНФОРМАЦИИ. Переход от итерационного процесса, основанного на (5), к итерационному процессу по (6) осуществляется заменой в дирек¬ тиве 2 имени структуры UCEZ на БСБк. В табл. 1 приведены значения температурного поля для h = = 0.001, причем в первой строке — точное решение Мт = = exp (1 — х2) + (h/2) (1 — у2) exp [4 (1 — л2)], во второй — значение приближенного решения согласно краевому условию (12), а в третьей — согласно краевому условию (13). Таблица 1 X V 0 0.2 0.4 0.6 0.8 1.0 2.74558 2.63496 2.33076 1.90295 1.43544 1.00050 0 2.74425 2.63365 2.32963 1.90219 1.43508 1.00050 2.74561 2.63495 2.33073 1.90297 1.43545 1.00050 2.74449 2.63403 2.33019 1.90269 1.43536 1.00048 0.2 2.74314 2.63272 2.32908 1.90194 1.43498 1.00048 2.74449 2.63402 2.33018 1.90271 1.43535 1.00048 2.74121 2.63124 2.32846 1.90191 1.43510 1.00042 0.4 2.73983 2.62995 2.32741 1.90118 1.43471 1.00042 2.74117 2.63122 2.32849 1.90193 1.43507 1.00042 2.73575 2.62658 2.32558 1.90062 1.43468 1.00032 0.6 2.73441 2.62534 2.32455 1.89987 1.43432 1,00032 2.73572 2.62658 2.32561 1.90061 1.43467 1.00032 2.72811 2.62007 2.32155 1.89881 1.43409 1.00018 0.8 2.72683 2.61886 2.32053 1.89809 1.43380 1.00018 2.72810 2.62007 2.32154 1.89880 1.43413 1.00018 2.71828 2.61170 2.31637 1.89648 1.43333 1.00000 1.0 2.71704 2.61052 2.31538 1.89584 1.43294 1.00000 2.71827 2.61169 2.31637 1.89650 1.43327 1.00000 Второй тестовый пример, просчитанный в условиях ГП «Поле-3» по описанной выше методике, состоит в следующем: Ди = 0, Q, (19) и = Ф15 1\, (20) du/dv +ки* = Ф2, Г2, (21) где Q — прямой круговой цилиндр (O^r^l, 0 z < 1); — боковая поверхность цилиндра (г = 1); Г2 — верхнее (z = 1) и нижнее (z = 0) основания цилиндра. Фх = 1,5 4- z2, ( 2 + h (3 — 0,5r?), z = 1, Фз=4 й (2 — 0,5r2), z = 0. Для сравнения приведем точное решение и? = 2 4- z2 — 0,5г2. В табл. 2 приведены значения температурного поля для h = = 0,5896-10~9. В первой строке табл. 2 приведено точное ре- 1/.2 4 Заказ М 485
Таблица “2 Z г 0 0.2 0.4 0.6 0.8 1.0 2.000 1.980 1.920 1.820 1.680 1.50() 0 2.000 1.979 1.918 1.819 1.679 1.500 2.000 1.979 1.918 1.819 1.679 1.500 2.160 2.140 2.080 1.980 1.840 1.660 0.4 2.158 2.139 2.079 1.979 1.839 1.660 2.158 2.138 2.079 J.979 1.839 1.660 2.360 2.340 2.280 2.180 2.040 1.860 0.6 2.359 2.339 2.279 2.179 2.039 1.860 2.358 2.338 2.279 2.179 2.039 1.860 3.000 2.980 2.920 2.820 2.680 2.500 1.0 3.000 2.980 2.918 2.820 2.679 2.500 3.000 2.980 2.918 2.819 2.679 2.500 (22 шение, во второй и третьей строках — приближенное решеип согласно первому и второму способам линеаризации. 2. ПРОСТРАНСТВЕННЫЕ КРАЕВЫЕ ЗАДАЧИ Рассмотрим в ограниченной замкнутой области Q линейное дифференциальное уравнение эллиптического типа +аоМ = /(х), ХЕЙ, Лг, 1=1 й 4 1 ' и (х) е Н1 (Q, Л) = {и I ue Н1 (Q), Au (х) е L2 (й)} при следующих граничных условиях Вти= У^-^-(со3у{,хк)-Ь^а = 0, k(l=i к x^S, S=\J Sk. к=1 По отношению к коэффициентам дифференциального ния (22) и граничных условий (23) предполагается выполнение следующих условий (х) s L°° (Й), а0 (х) > а0 > 0, / (х) е La (й), b% (X), Ь™ (х) е= H'h (S), а1к (х) = аы (х). Заметим, что к однородным граничным условиям (23) можно перейти, используя общий способ, приведенный в работе [3]. 98 (23) уравне-
Соотношение (23) является общим граничным условием, ко¬ торое за счет выбора коэффициентов Ъ™ (х), Ь™ (х) приводит к граничным условиям первого, второго или третьего типа. Ком¬ бинируя на различных поверхностях Si граничные условия раз¬ ных типов, переходим к смешанным граничным условиям. К задаче (22)—(23) применим конечное интегральное преоб¬ разование [6] по переменной яз, определяемое следующим образом: Ж (Л2 (fi), L2 (Q): и (^1, х2, х3) й (хь х2, у) = ь3 = ^и (хг, х2*х3) К (х3, у) dx3. (24) а3 При этом предполагается, что выполнены достаточные усло¬ вия применимости конечного интегрального преобразования по переменной [6L Интеграл в (24) предполагается существующим в смысле Ле¬ бега, К (ггз, у) ЕЕ С2 (аз, Ьз) — ядро интегрального преобразова¬ ния, хз — переменная преобразования, изменяющаяся в интер¬ вале (аз, Ьз), у — параметр интегрального преобразования. Q ЕЕ 7?2 и является проекцией Q Е= В3 по переменной хз ЕЕ (аз, Ьз). После применения к задаче (22)—(23) интегрального преоб¬ разования (24) получим следующую краевую задачу: 2 ? А*й\хъ х2, у) = — У, аой — у2« = = f\x^x2, у), х = (*!, х2) РЕЙ, (25) 2 Втч1 (xt, х2, у) = У, biu* cos (vz,xfr) — ^^==0 Tf77=i k x ЕЕ Г, Г = J (26) Г *=1 Интегральное преобразование (24) предполагает существова¬ ние обратного преобразования' Ж”1 (L2 (Q), L2 (Q): й (хъ х2, у) —> и (а^, х2, х3) = оо‘ = S « (®1, ^2, Yi) к (х3, у{), (27) где {К (хз, yz)}£Li — некоторая полная система функций, кото¬ рая определяется в результате решения соответствующей задачи Штурма—Лиувилля [6], {й (хг, х2, уг}ь=1 — неизвестные коэф¬ фициенты, подлежащие определению, и которые могут быть най¬ дены из решения (25)—(26) с помощью структурного метода [3]. ’Перейдем теперь к вопросу решения задачи (25) —(26), т. е. к вопросу определения неизвестных коэффициентов {й (хи х2, У/}нл- Для этого заменим- задачу (25)—(26) эквивалентной вариа¬ ционной задачей, предполагая, что выполпены условия приме¬ 99 /!♦
нимости вариационного принципа [5]. й* (а;) е W (Й), W (Й) = {й | й е Н1 (Й), Вт,й |rmi = 0}, (2S) ДДй*) = min Ф (й), где Н1 (й, Л*) — область определения оператора Л*, W (й) - — пространство допустимых функций, й* — элемент, минимизирую щий функционал Ф (й). При довольно общих предположениях относительно краевой задачи (25) —(26) элемент й оказывается близким в W (й) к й* [51. Бесконечномерную вариационную задачу (28) с помощью ме¬ тода Ритца, Бубнова—Галеркина и др. [5] сведем к конечномер ной и будем отыскивать элемент йп, аппроксимирующий й*к Представим элемент йп в виде п Mn(X!, Х2, ?) = S G<Pi» где {<pj£=i — координатная последовательность, которая пред¬ полагается известной. Координатная последовательность {cpJiLi строится с помощью метода Д-функций [3]. Получив решение задачи (25)—(26) в виде (29), с помощью обратного интегрального преобразования (27) получим решение исходной краевой задачи (22)—(23), которое представляется сле¬ дующим образом: (30) Универсальность метода Д-функций в сочетании с методом конечных интегральных преобразований позволила формализо¬ вать вычислительный алгоритм [7] и применить эту формализацию для решения задач данного типа с использованием прогрессив ной технологии программирования — генераторов программ се рии «Поле» [4]. Алгоритм решения краевой задачи (22)—(23) состоит из сле¬ дующих этапов: 1) выполнение конечного интегрального преобразования одной из пространственных переменных (i = 1, 2, 3); 2) решение вспомогательной задачи определения собственных чисел и собственных функций, т. е. решение соответствующей задачи Штурма—Лиувилля; 3) решение преобразований краевой задачи (25)—(26) вариа¬ ционным методом; 4) переход к решению исходной краевой задачи (22)—(23) на основе обратного интегрального преобразования (27). Для подключения данного класса задач (22)—(23) к ГП «По¬ ле-3» были расширены возможности его входного языка и состав¬ 100
лены программные модули функционального наполнения, реа¬ лизующие алгоритм решения. На примере одной из тестовых задач рассмотрим использова¬ ние ГП «Поле-3» для пространственных краевых задач эллипти¬ ческого типа. Пусть для параллелепипеда (0 < х < а, 0 < у < Ъ, 0 < z < с) требуется решить следующую задачу: Ди (х, у, z) = 0, (31) и |х=0 = 1, [(32) |х—а ~ |у=0 = ly=b ~ |z=o ~ |z=c — 0. ‘ (33) /Применим к уравнению (31) и граничным условиям (32)—(33) конечное интегральное преобразование (24) по переменной с у, у) — [и(х, ?/, z)sin yzdz. (34) О Тогда получим следующую двумерную краевую задачу для пря¬ моугольника (0 z «С Ь)] + = (35) й|х=0 = 1/Т, (36) W |х=а = U |у=0 = и \у=Ь =0, у= ПТП1С. (31) Задачу (35)—(37) решаем с помощью структурного метода и по¬ лучаем ее решение в виде некоторой функции й (х, у, у). Тогда для трехмерной задачи (31)—(33) решение представляется с по¬ мощью следующего ряда: (38) Результаты решения задачи (31)—(33), полученные с помощью метода разделения переменных, приведены в работе [1] в виде формулы оо оо m=o j=o 2т 1 . 2/ -|- 1 sin sin 1 л у a b J ( 2,"J 1 (39) X Для решения задачи (31)—(33) с помощью ГП «Поле-3» опре¬ делим следующие данные: а) о выборе опорных функций для получения уравнения оц {хч У) ~ участков границы Г области Q; б) о выборе структуры и метода решения задачи и способе фор¬ мирования матрицы системы линейных уравнений; 101
в) о методах интегрирования при вычислении элементов матриц?.; системы уравнений; г) о методе решения системы линейных алгебраических урав нений и др. Для того чтобы получить решение задачи (22)—(23) в виде (30) с использованием решения задачи (25)—(26), необ¬ ходимо также рассмотреть вопросы, связанные с определением собственных чисел ут и собственных функций К (z, ут) задач;: Штурма — Лиувилля [6], а также вопросы формирования реше ния [30]. Рассмотрим, как поставленные вопросы решаются в условия? эксплуатации ГП «Поле-3». Задачу (35)—(37) будем решать* методом Ритца, который’при- водит к системе алгебраических уравнений АС = Вйтде А = В = (ЬД, С = {сД, ац = а$ + a^QiQ^ а$ — grad uli * grad ulf dQ9 q = J йн . йх/dP, b} = &P bf = - $dr, г г параметры QL принимают значение ут для каждого т (т = 1, . . , . . ., ik)\ йт Hi — составляющие структурной формулы й = = Й1 4- Ui = (OjPj, u0 — (<o2Ri 4- <o3Z?2)/((o2*4- co3); Rt, R2 продолжение в Q функций, заданных на границе Г, (Rt |O2 = 0) и Г2 (R2 |6Ъ = l/ym = i/Qt) соответственно; = /j/2, = ft, со3’= /2, Л = х, f2 = у (0.8 — у) (1.6 — х), 73! =“— не- 7 г определенная компонента структуры решения, Сг-—коэффициенты, подлежащие определению, cpj — полиномиальные последователь¬ ности. Нахождение элементов системы Ритца выполняется по 16-то¬ чечной формуле Гаусса в прямоугольнике Q (0, 0, 1.6, 0.8). Для подключения данного класса задач к ГП «Поле-3» в нем расширены программные модули функционального^ наполнения, реализующие алгоритмы решения пространственных краевых задач (22) —(23). Так, к блоку ФОРМИРОВАТЕЛЬ подключен программный модуль FORMS, предназначенный для формирования матрицы системы алгебраических уравнений (32). Программный модуль OBRT подключен к блоку ОБРАБОТКА, реализующему решеппе задачи ТШтурма—Лиувилля, модули ТАТР, ТОЧН и т. д. к другим блокам ГП «Поле-3». Приведем задание исходной информации в виде директив для компоновки пакета программ решения задачи (31) — (33) в усло¬ виях эксплуатации ГП «Поле-3». 102
Таблица 3 X У Ф1 Ф2 0.4 0.2 0.991084 0.998337 0.8 0.2 0.993983 0.998464 1.2 0. 2 0.991084 0.998337 0.4 о л 0.993937 0.999862 0.8 0.4 0.994885 0.999989 1.2 0.4 0.992937 0.999862 0.4 0.6 0.991084 0.998337 0.8 0.6 0.991983 0.998464 1.2 0.6 0.991084 0.998337 2 = 0,8 Таблица 4 X У Ф1 Ф2 0.4 0.2 0.612548 0.617977 0.8 0.2 0.613585 0.619483 1.2 0.2 0.612548 0.617977 0.4 0.4 0.613159 0.618781 0.8 0.4 0.615241 0.620486 1.2 0.4 0.613159 0.618781 0.4 0.6 0.612548 0.617977 0.8 0.6 0.613585 0.619483 1.2 0.6 0.612548 0.617977 1. РЕШИТЬ КРАЕВУЮ ЗАДАЧУ ДЛЯ УРАВНЕНИЯ 0 U - E1U = 0. 2. С КРАЕВЫМИ УСЛОВИЯМИ UD2 = Ф (ВО = Р1, 1У1/Ф1 = R1 на W2, па 1УЗ). 3. ЛОГИКА ФОРМ ОБЛАСТЕЙ: W2 = Fl, W3 = F2, Wl = (Fl * F2). 4. ФУНКЦИОНАЛЬНЫЕ КОМПОНЕНТЫ: Fl = X, F2 = у * (0.8 — У) * (1.6 - X), D (1,0) Fl = 1, D (0, 1) F1 = 0, D (1,0) F2 = —Y * (0.8 - У), D (0, 1) F2 = (1.6 - X) * (0.8 - 2 * У), El = 1, Qi = 1, Ri = 1 R2 — О G1 = 1. 5. АППРОКСИМИРОВАТЬ НЕОПРЕДЕЛЕННЫЕ КОМ¬ ПОНЕНТЫ PI-ФУНКЦИЙ, ВИДА (I), где I - ПОЛИНОМ <ЧЕБЫШЕВА> С ПАРАМЕТРАМИ (3, В, В) В ПРЯМОУГОЛЬ¬ НИКЕ (0, 0, 1.6, 0.8). 6. ИНТЕГРИРОВАТЬ: ОБЛАСТЬ — ГАУСС 40 В Wl С СЕТ¬ КОЙ (0, 0, 1.6, 0.8, 16). 7. КОНСТАНТЫ: (0, 0, 0, 0, 0, 0, 1.6). 8. СФОРМИРОВАТЬ МАТРИЦУ, ГДЕ Aij — интеграл по области от выражения <AZ71i * А£71/ + Qi * Qi * Uli * Ulf>, bj — интеграл по области от выражения <—А £70 * EUij — — Qi* Qi* UO* Ulf). 9. ОБРАБОТАТЬ МАТРИЦУ МЕТОДОМ: ROT (НАП : М, К), для граничных условий — 1 при ik = 50. 10. ВИД ФОРМЫ РЕЗУЛЬТАТА: ТАТР/сетка (1) для формулы (Ф1)/, ТОЧН/сетка (I) для формулы (Ф2)/, сетка: 1 - (0.4, 0.2, 1.2, 0.6, 0.4, 0.2, 0, 1.6, 0.8) в W1, формулы: Ф1 = U, Ф2 = G1. 11. КОНЕЦ ИНФОРМАЦИИ. В табл. 3—4 приведены результаты решения (28) (столбец Ф1) краевой задачи (31)—(33) для плоскостей z = const и результаты решения (39) (столбец Ф2). 10В
ЛИТЕРАТУРА 1. Карслоу X, С., Егер Д. К. Теплопроводность твердых тел. М.: Наука 1970. 352 с. 2. Рвачев В. Л., Слесаренко А. П. Алгебра логики и интегральные преобра¬ зования в краевых задачах. Киев: Наук, думка, 1976. 288 с. 3. Рвачев В. Л. Теория R-функций и некоторые ее приложения. Киев; Наук, думка, 1982. 552 с. 4. Манъко Г. IT. Проблемио-ор1ентован1 програмуюч1 системы (генератори програм) сер. II «Поле».— В1сник АН УРСР, 1982, № 3, с. 3—8. 5. Михлин С. Г. Вариационные методы в математической физике. М.: Наука, 1970. 512 с. 6. Кошляков Н. С., Глинер Э. Б., Смирнов М. М. Уравнения в частник производных математической физики. М.: Высш. шк. 1970. 710 с. 7. Рвачев В. Л., Слесаренко А. II. Алгебрологические и проекционные ме¬ тоды в задачах теплообмена. Киев: Наук, думка, 1978. 140 с. УДК 519.688:538.56-|-519.632-]-519.614 ПАКЕТ ПРИКЛАДНЫХ ПРОГРАММ MULTIMODE ДЛЯ ЧИСЛЕННОГО МОДЕЛИРОВАНИЯ ОСЕСИММЕТРИЧНЫХ И ПРОДОЛЬНО-ОДНОРОДНЫХ ЭЛЕКТРОМАГНИТНЫХ РЕЗОНАТОРОВ. АЛГОРИТМЫ И РЕАЛИЗАЦИЯ В ОС ЕС М. С. Касчиев, В. А. Касчпева, Э. Штрайт, В. В. Гусев, А. И. Федосеев 1. ВВЕДЕНИЕ Проектирование электромагнитных резонаторов с заданными характеристиками — основная задача при разработке ускоряющей структуры линейного ускорителя. Ввиду сложности геометрии разрабатываемых резонаторов исследование их характеристик на основе физической модели становится не всегда возможным. Бо ¬ лее перспективный путь — вычисление требуемых величин при помощи математической модели. При таком подходе возможен их быстрый пересчет при изменении геометрии резонатора. В послед¬ ние годы в различных исследовательских центрах мира создан ряд специализированных программ [1—5], в которых предлагают¬ ся разнообразные методы численного решения входящих в моде¬ ли уравнений. Отметим, что для успешной работы с этими про¬ граммами необходима достаточно точная априорная информация о собственных частотах, что чувствительно снижает эффектив¬ ность их приложения. Кроме того, достижение необходимой точно¬ сти (~10~6) вычисления собственных частот требует большого числа узлов разностной сетки (от 3000 [2] до 15000—20000 [1, 3]). В настоящей работе описывается пакет программ MULTIMODE, предназначенный для расчета частот, электромагнитных полей и вторичных величин осесимметричных и продольно-однородных резонаторов [6—8]. Реализованы восьмиточечные четырехуголь¬ 104
ные изопараметрические конечные элементы, при помощи которых производится дискретизация задачи. Использование этих элемен¬ тов позволяет получить четвертый порядок точности относительно шага сетки при вычислении частоты и достаточно хорошо аппрок¬ симировать криволинейные границы. Разностная задача решает¬ ся по методу итерации в подпространстве [9], который позволяет одновременно вычислить несколько первых собственных значе¬ ний и собственных векторов. При этом начальные приближения выбираются пакетом автоматически путем анализа рассматривае¬ мых матриц. Сравнение с другими программами показывает, что при расчете одинаковых резонаторов для достижения одинаковой точности на одной и той же ЭВМ (ICL 1906А ИФВЭ) MULTIMODE требует в 10—100 раз меньше машинного времени [6—8]. В рабо¬ те описывается также системная часть пакета для ЭВМ серии ЕС в системе ОС и приводятся тесты для работы с пакетом. 2. МАТЕМАТИЧЕСКАЯ! ПОСТАНОВКА |ЗАДАЧИ Исходя из уравнений Максвелла, в случае гармонической за¬ висимости полей от времени вида свободные колебания явля¬ ются решениями задачи: rot Н 4- fcoe Е = 0, div Е = 0, rot Е — Н — 0, div Н = 0 в Q. (1) Ех = 0 на металлических поверхностях. Здесь Н и Е — напряженности магнитного и электрического поля, е и ц — диэлектрическая и магнитная проницаемость среды, со — круговая частота. В случае продольно-однородных и осе¬ симметричных резонаторов из (1) следует уравнение: = (2) где X = со2ец. Для продольно-однородных резонаторов а = 0, хх = х, х2 = = у и на металлических поверхностях выполняются условия ди!дп = 0 для //-волн, и = 0 для £-волн. (3) При этом компоненты векторов Е и Н определяются следующим образом: для Я-волн Нг = и, Ех = 1 /сое ди 1 ди 1(Л£ дх ’ для Е-волн Ех = «, Ях= — 1 ди /соц ду ’ и 1 ди У /соц дх ’ Ех ~ Еу = Нг = 0. Для осесимметричных резонаторов а = 1, х±= г, х2 = z и на 5 Заказ № 485 105
металлических поверхностях и = 0 для Я-волн, ди!дп = 0 для Е-волн. (4) Тогда поля определяются: для Я-волн и 11 ди TJ 1 1 ди tL (Т а -П - ■ П ' “ • J~i р . - 4 г ’ 2 /сои г dr 1 иоц г dz ’ Ez = Ег =ее Ну = О, для Е-волн Т1 и -г, 1 1 ди 11 ди Н« = , Ez= - —- , Ег = : — , * Г /СОЕ Г дг 1СО(- г dz 1 /Д =/7,. = Е(Р = 0. Во всех случаях на границах симметрии ставятся условия ди!дп = 0 или и = 0. Необходимые вторичные величины как добротность Q, запасен¬ ная энергия W и т. д., являются некоторыми функционалами от U [7, 8]. 3. ВАРИАЦИОННО-РАЗНОСТНАЯ СХЕМА Известно, что решение рассматриваемой спектральной задачи эквивалентно нахождению стационарных точек функционала Рэлея—Ритца R(v)= х? + (-£-)М dxidx-i^^x^-ddxidxi. (5) Й й Стационарные точки и функционала R (и) являются собственны¬ ми функциями задачи (2), (3) или (2), (4), а К = R (и). Отметим, что допустимые при минимизации функции v ЕЕ (Q). п Представим область Q в виде Q = U 5е, где Se — криво- е=1 линейные четырехугольники, удовлетворяющие условиям согла¬ сования [10]. В каждом четырехугольнике в качестве узлов вы¬ бираем вершины и середины сторон. Рассмотрим пространство Sh cz Я^, состоящее из функций вида Г’е (#1, Я2) = 4 + ^1^1 + ^2^2 + ^з^1^2 + <4^1 + + + ^2 (6) на каждом четырехугольнике, непрерывных в общих узлах и удовлетворяющих главному краевому условию. В выберем базис {cpji^i, N — число узлов в Q, где <pz (х{, xi) = i,j = = 1,2,..., Я, {(^, х$)}У=1 — координаты узлов. Тогда проб' N ную функцию vh ~ Sh можно представить в виде vh = У £г-срг, i=i 106
где {7г}ь=1 — некоторые коэффициенты. Подставляя vh в (5), получим дискретный аналог функционала Рэлея—Ритца R (vh) = 5= qTKq!qTMq, где К, М — матрицы жесткости и массы задачи, qT == (<7i, Q21 • • QnY Стационарные точки этого соотношения являются решениями обобщенной алгебраической проблемы соб¬ ственных значений Kuh = KhMu\ (7) где (uh)T = (u?, • • •, un) — приближенные значения собст¬ венных функций задачи (2), (3) или (2), (4) в узлах сетки. При этом выполняются следующие оценки [10]: |ХР-^| = О(Х>), ||Ир-^||0 = С»(Х3рЧз), (8) где h = max diam 5е, а р — номер соответствующего решения. В случае изопараметрических элементов базисные функции ср* выписываются в локальных координатах —1 g, ц 1 (см. [11] с. 299). Тогда к= У ке, е=1 п М = 2j т.е. е=1 Здесь ке, те — локальные (для каждого элемента) матрицы жест¬ кости и массы, которые имеют вид: 11 11 кК=\ $ BTE1B\Je\dldr], те = $ $ ^“ФФТ|Л|^^. (9) -1 -1 —1 -1 В этих выражениях использованы обозначения: Je — якобиан отображения, 8 *2 (?, П) = 3 X2i(Pi (£, П), i=l я i=l {(^ii, ^2i)}i=i ~ координаты узлов в элементе Интегралы, входящие в (9), вычисляются приближенно с помо¬ щью трехточечных формул Гаусса. Важным этапом в реализации метода конечных элементов является процедура автоматического построения сетки. В области Q вводится исходная сетка четырехугольников, удовлетворяющих условиям согласования [10], которые будем называть суперэлементами (рис. 1). 107 5*
Обозначим узлы в 5-м суперэлементе через Р±, Р2, Рз, Р^ р рб, Р7, Р8. При помощи отображения 8 8 ^1 (£, л) = S ^1гФг (I, л)’ ^2 (£> л) ,S Х2гф1 (?» Л) г=1 г=;1 (10) Рис. 1. Суперэлсмеит S в п его образ в плоскости (£, ПЛОСКОСТИ (rrp Я'2) л) квадрат G переводится в четырехугольник S. Построенная в G равномерная сетка из прямоугольников отобра¬ жается в криволиней¬ ную сетку суперэлеме¬ нта S. При этом рас¬ положение точек Р2, Р4, PG, Ps позволяет сжимать сетку в одну или другую сторону. Преобразование (10) остается однозначно об¬ ратимым, если | U^)|<0,5, Й (Л)|< 0,5, где через g (730, Л £= 1, 2, . . .8 обозначены образы то¬ чек в квадрате G. После генерации сетки проводится перенумерация узлов с целью уменьшения ширины ленты матрицы К и М. Численное исследование задачи на собственные значения со¬ стоит из двух этапов: аппроксимация дифференциальной задачи разностной задачей и решение возникающей при этом алгебраи¬ ческой задачи на собственные значения. Как правило, основное время счета занимает последняя задача. Известно, что для боль¬ шинства практических задач достаточно иметь только несколько первых собственных значений. С другой стороны, из оценок (8) видно, что нельзя надеяться на достижение хорошей точности при вычислении высших гармоник, так как при больших номе¬ рах —» ос, р> ос. Отметим, что оценки типа (8) имеются и для конечно-разностных схем [12]. Поэтому целесообразно ис¬ пользовать численный метод, который быстро вычисляет лишь несколько первых собственных чисел задачи (7) и эффективно учитывает ленточную структуру и симметричность матриц К и М. Для численного решения алгебраической проблемы на собственные значения был выбран метод итерации в подпростран¬ стве [9]. Метод позволяет вычислить несколько первых собствен¬ ных значений и собственных функций с требуемой точностью, при этом одновременно получаются оценки и для нескольких более высоких частот. Существенно, что выбранный метод по¬ зволяет находить как простые, так и кратные собственные значе¬ ния. В пакете реализован также автоматический выбор начальных приближений. 108
4. ПРОГРАММНАЯ РЕАЛИЗАЦИЯ В СИСТЕМЕ ОС ЕС В этом пункте изложена программная реализация пакета в операционной системе ЕС. Здесь учтены особенности и возмож¬ ности ОС. Отметим, что все вычисления в процессе обработки задания ведутся с двойной точностью. Все необходимые для решения задачи программные средства и входные данные размещаются на инициализированном магнит¬ ном диске MODEO1. Здесь организованы следующие файлы: SONY. FTNTX — библиотека исходных текстов программ, написанных на языке Фортран-1 V. В этой библиотеке содержатся тексты используемых процедур — MMODE, CR14, CR15 и по¬ мещаются файлы входных данных для конкретной задачи. SONY. FTNOB — библиотека объектных модулей. SONY.WORK14, SONY.WORK15 — рабочие файлы, ко¬ торые используются для передачи информации на различных, этапах решения задачи. Система MULTIMODE генерируется следующим образом. На инициализированном диске MODEO1 копируются с дистрибу¬ тивной ленты библиотеки SONY.FTNTX и SONY.FTNOB. При. помощи процедур CR14 и CR15 на диске создаются рабочие файлы SONY.WORK14 и SONY.WORK15. Процедура MMODE запи¬ сывается на системной библиотеке SYS1.PROCLIB. Отметим, что, если диск инициализирован под другим именем, следует изме¬ нить имя MODEO1 на имя диска в процедурах MMODE, CR14 и CR15. Выполнение конкретного задания осуществляется при помощи многошаговой процедуры MMODE. Пакет MULTIMODE рассчи¬ тан на работу с помощью диалоговой системы, например, TERM, PRIMUS. Это нашло отражение при разработке процедуры MMODE. Для удобства пользователя расчет конкретного резона¬ тора производится в несколько этапов. Запуск системы осущест¬ вляется следующим заданием для ОС. //JOBname JOB //EXEC MMODE, NAME=name, A= // Параметр name определяет имя задания и имена файлов, в кото¬ рых записаны входные данные. Эти файлы должны быть предва¬ рительно занесены в библиотеку SONY.FTNTX. В табл. 1 при¬ ведены этапы решения задачи. Процедура MMODE выполнена так, что если какой-либо параметр не указан, соответствующий шаг не выполняется. Основное внимание следует уделить этапу AUTOMODE. Выполнение задания до конца возможно только после успешного окончания работы программы AUTOMODE. На этапах MLTMODE2 и MLTMODE3 в зависимости от сложности решаемой задачи иногда необходима большая оперативная па¬ мять. Отметим, что каждая из остальных программ требует 250К оперативной памяти. В процедуре MMODE введен параметр RM, при помощи которого имитируется динамическое распределение 109
Таблица 1 Модули пакета и значения параметров процедуры MMODE Имя этапа Параметр в MMODE Назначение AUTOMODE A Автоматизированная подготовка данных о гео¬ метрии резонатора и разбиение области на су¬ перэлементы. Подготовка всех данных для ге¬ нерации сетки и визуализация области GRIDMODE G Генерация конечно-элементной сетки OPTIMODE 0 Перенумерация узлов с целью уменьшения ши¬ рины полуленты матриц К и М PLOTMODE P Визуализация полученной сетки MLTMODE1 Ml Генерация локальных матриц жесткости и массы MLTMODE2 М2 Генерация глобальных матриц К и М и запись их профиля в одномерных массивах MLTMODE3 М3 Вычисление заданного числа собственных чисел и собственных векторов задачи SECOMODE SA Вычисление вторичных величин для осесиммет¬ ричных резонаторов PLANMODE SP Вычисление вторичных величин для продольно¬ однородных резонаторов памяти. Значения п параметра RM, которые могут быть получе¬ ны на этапе Ml, равняются 3, 4, 5, 6, 7, а количество оперативной памяти, необходимой для работы на этапах М2 и М3, соответст¬ венно 300К, 400К, . . ., 700К. Значение RM по умолчанию рав¬ но 3. Таким образом, рекомендуется производить вычисления следующими шагами. //JOBname JOB И EXEC MMODE, NAME=name,A= Если получено сообщение об успешном окончании работы, за¬ пустить новое задание. //JOBname JOB //EXEC MMODE, NAME=name, G=, O=, P=, Ml= После окончания этапа n получается значение п параметра RM. Запустить следующее задание. //JOBname JOB //EXEC MMODE, NAME-name, M2=, M3=, SA=, RM=n // для осесимметричного резонатора. Или //JOBname JOB //EXEC MMODE, NAME=name,M2=,M3=,SP=,RM=n для продольно-однородного. В конце выдачи на каждом этапе печатается информация об использованном времени ЦП, дата и время запуска этого шага. 110
5. ПОДГОТОВКА ВХОДНЫХ ДАННЫХ Входные данные программы готовятся отдельно для каждого этапа, если требуются. Этап AUTOMODE: необходим файл IAname. В нем должна содержаться следующая информация. Карта № 1 служит для идентификации вводимых данных. Формат карты № 1 — (20А4). Перегонная Назначение HEAD заголовок задачи, 80 символов Группа карт № 2 содержит информацию о системах коорди¬ нат, используемых для задания положения узла в суперэлементе. Программа дает возможность одновременно с координатами {xY,x2) задавать до 20 локальных систе^м полярных координат, полезных, когда области содержат круговые элементы. В данных карт № 2 задаются также вид графического вывода, наличие геометриче¬ ских симметрий, вид резонатора, тип колебаний и пр. (табл. 2). Группа карт № 3 необходима, если IAUX-1 и содержит ин¬ формацию о полярных системах координат. Эти координатные системы определяются заданиехМ их полюсов в глобальной системе координат (#i,z2) и идентифицируются номером, уникальным для конкретной полярной системы. Формат группы карт № 3 — NAMELIST/POLAR/. Данные задаются в виде списка &POLAR ORIGIN = NA1, ХА1, YA1, NA2, ХА2, YA2, &END где NA — номер полярной системы, ХА — ^-координата полюса, YA — [/-координата полюса. Группа карт № 4 содержит информацию об узлах суперэле¬ ментов. Формат ввода NAMEL1ST/NODES/, а данные задаются в виде &NODES DATA = N1 ,NC1,NA1,X1,Y1, N2,NC2,NA2,X2,Y2, &END Каждый узел описывается группой из 5 чисел, где N — номер узла в глобальной нумерации узлов, NC — гра¬ ничный код, равный 0 — если узел не граничный, NC >0 — но¬ меру границы (см. ниже), NA система координат, в которой зада¬ ется узел 0 — система координат (хх, х<^, NA^>0 — номер полярной системы координат (группа карт № 3), X,Y — коор¬ динаты узла: абсцисса х± и ордината х2 для системы (л^, х2) или радиус R и угол ANG (в градусах) для полярных координат. Группа карт № 5 содержит данные о всех суперэлементах: узлы, граничные коды сторон, материал, число разбиений по сто¬ ронам (табл. 3). Локальная нумерация узлов для каждого супер- 111
Таблица 2 Формат группы карт № 2 AUTOMODE — NAMELIST/SET/ Переменная Назначение Значение ц0 умолчанию 1AUX Полярные системы координат, используемые для задания положения узла 0 — не используются 1 — используются 0 IPLOT Определяет вид графической информации и тип графических устройств, содержит трехзначный код J3J2J1 И — номер устройства 1 — графопостроитель WATANABE 2 — графопостроитель GALCOMP 3 — устройство печати 4 — терминал 5 — графический дисплей J2 — 1 или 3 нумерация узлов — 2 или 3 нумерация элементов J3 — 1 или 3 нумерация границ — 2 или 3 нумерация материала IPLOT = 0—графический вывод отсутствует 3 NGTRA Отражение сетки относительно оси для симмет¬ ричных областей 0 — не используется М >> 0 — число отражений 0 IPRINT Индикатор печати данных п результатов 0 — минимальная печать 1 — расширенная печать 0 ISD Запись выходной структуры данных 0 — запись не требуется 6 — запись требуется () ISYM Индикатор типа резонатора 0 — продольно-однородный 1,2 — осесимметричный 1 — координаты точек не задаются 2 — координаты точек задаются 1 IFIELD Индикатор типа волн 0 — 2?-волны 1 — Я-волны 1 элемента задается, начиная с одной из его вершин против часовой стрелки, при этом можно не задавать узлы на сторонах суперэле¬ ментов или задавать их равными нулю. Узлы, которые не заданы, генерируются программой. Признаком конца ввода данных о су¬ перэлементах является ввод элемента с номером N = 0. Поясним 112
Таблица 3 Формат группы карт № 5 AUTOMODE — NAMELIST/ELEM/ Переменная Назначение Значение по . умолчанию N NSUB(2) ВС(4) МАТ BOUND(8) Номер вводимого элемента Количество разбиений плюс 1 по стороне 2 и по стороне 1 NSUB(1)<21, NSUB(2)<21 Коды границ суперэлемента. 0 — сторона не является границей области NS>0 — номер границы, на которой лежит сторона Условный номер материала для данного супер¬ элемента (используется при отражении) Содержит 4 или 8 чисел — глобальные номера узлов суиерэлемента г. 3,3- 0, 0„0,,1Ь г Таблица 4 Формат группы карт № 6 — NAMELIST/REFLEC/ Переменная Назначение Значение по 1 умолчанию А, В, С NE NC(NE) Коэффициенты уравнения прямой Ах^ -j- 13x2 т С = 0 Количество границ, коды которых меняются Новые коды границ 0, 0, 0- о. О' определение данных в массиве BOUND. Если п3, тг5, ni номе¬ ра вершин Р3, Р5, Р? суперэлемента (см. рис. 1), то BOUND — = п3, пт. В этом случае номера точек Р2, Р4, Р3, Р8 и их координаты генерируются программой. Координаты получаются путем линейной интерполяции координат соседних вершин в со¬ ответствующей системе координат (полярной или декартовой).. Если координаты вершин заданы в разных системах, то коорди¬ наты узла генерируются в середине отрезка, соединяющего вер¬ шины. Если еще задан и некоторый из узлов Р2, Р4, Р3, Р8, на¬ пример Р4 с номером п4, то массив BOUND нужно задавать BOUND = 0, п3, п±, п5, 0, «7, 0. Указанный срединный узел остается, а остальные узлы получаются по описанному выше спо¬ собу. Код узла или границы в группах карт № 4 и № 5 опреде¬ ляется так: 0 — общая сторона двух суперэлементов или граница симмет¬ рии области Q с условием Неймана ди/дп = 0, 1 — граница симметрии области с условием Дирихле и — 0г 2 — ось пролета пучка, всегда должна быть при г = 0, исполь¬ зуется только для осесимметричных резонаторов, 3, 4, 5 — металлические границы резонатора. Вдоль этих гра¬ ниц вычисляются некоторые вторичные величины. ИЗ
Таблица 5 Список данных PLOTMODE — NAMELIST/PLOT/ Переменная Назначение Значение по умолчанию IPLOT Управление графическим выводом, смысл тот же, что и в AUTOMODE 3 XD, YD Размер области для рисунка — максималь¬ ные значения на графическом устройстве Максимальные для данного устройства XI, Yl, Х2, Y2 Координаты нижней левой и верхней правой вершин прямоугольной части сет¬ ки, которую необходимо начертить Таблица 6 Список данных MLTMODE — NAMELIST/MODE/ Переменная Назначение Значение по умолчанию NROOT Число частот, которые нужно найти 1 ALFA Сдвиг по частоте для ускорения сходимости, МГц 1С0 IREAD Считывание начального приближения, 0 — начальное приближение к собственным функциям, вырабатывается программой 1 — начально? приближение считывается с фай¬ ла SONY. WORK14 0 NITEM Максимальное число итераций 16 Таблица 7 Список данных NAMELIST (SECO) Для осесимметричного резонатора Перехменная Назначение Значение по умолчанию ВЕТА Отношение скорости пучка частиц к скорости 0.5 EZO света Нормировка поля Е вдоль оси z 1. IPRINT Индикатор печати 1 IROOT 0 — минимальная 1 — расширенная Вычисление вторичных величин 0 — для всех NROOT частот ш — для частоты с указанным номером ш, 0 KSYM 1<ш< NROOT Число симметрий в резонаторе 2 Группа карт № 6 содержит информацию об отражении сетки относительно данной прямой (табл. 4). Эти карты не нужны, если NGTRA = 0. Элементы, у которых МАТ < 0, не отражаются. 114
Таблица 8 Список данных для продольно-однородного резонатора — NAMELIST (SECO) Переменная Назначение Значение по умолчанию ио Нормировка поля вдоль заданной линии 1 IPRINT Как для осесимметричного резонатора 1 IROOT То же 0 KSYM » 2 Таблица 9 Сравнение MULTIMODE и SUPERFISH Программа Число узлов Число частот Частота МГц Машинное время MULTIMODE 1103 7 1166.87 1361.32 1802.82 2361.37 2612.06 2672.71 2676.72 9 мин SUPERFISH 3000 1 1166.92 50 мин На этапе AUTOMODE проводится проверка корректности входных данных и при обнаружении ошибки печатается соответ¬ ствующая диагностика. Выполнение следующих этапов возможно только после успешного окончания работы программы AUTOMODE. Этап GRIDMODE (OPTIMODE) — использует данные, по¬ лученные на этапе AUTOMODE (GRIDMODE), записанные в ра¬ бочем файле SONY. W0RK15. Этап PLOTMODE — необходим файл IPname, в котором должна содержаться управляющая информация (табл. 5). Этапы MLTMODE1, MLTMODE2, MLTMODE3 используют входные данные из файла IMname (табл. 6). Поясним смысл пере¬ менной IREAD. Первоначальное выполнение задания М3 всегда требует значение IREAD-О. Если после выполнения NITEM итераций не обнаружена сходимость, необходимо задать IREAD-1 и снова запустить только шаг М3. Вычисления продолжаются, а в качестве начальных приближений используется информация, полученная после выполнения первых NITEM итераций. На этапах SECOMODE или PLANMODE необходим файл ISname (табл. 7, 8). Программная реализация пакета в операционной системе GEORGE для ЭВМ ICL 1906 ИФВЭ описана в работе [7]. 115
Таблица 10 Вторичные величины резонатора Величина /1 /2 /з Запасенная энергия И7 (Дж) 0,02144 0,30924 2,62226 Модность потерь в металле Р (Вт) 5563,76 138391 802763 Добротность Q 28254,58 19112,99 37006,44 Фактор пролетного времени Т 0,03251 0,39521 5,5421 В Приложении (табл. 9) приводятся результаты, получен¬ ные при моделировании одного реального резонатора пакетом MULTIMODE и сравнения с пакетом SUPERFISH [2] для того же резонатора. В конце показан пример входных данных для всех этапов расчета резонатора, изображенного на рис. 10. 6. ЗАКЛЮЧЕНИЕ В работе описан пакет прикладных программ MULTIMODE, предназначенный для численного моделирования осесимметрич¬ ных и продольно-однородных электромагнитных резонаторов сложной геометрической формы. Использованные в пакете би- квадратичные изопараметрические конечные элементы позволяют достаточно аппроксимировать криволинейные участки границ и при небольшом числе узлов сетки получить значения частот в пределах необходимой для практики точности. Метод итераций в подпространстве дает возможность одновременно находить несколько первых собственных частот и соответствующих функ¬ ций, не требуя при этом априорной информации о распределе¬ нии спектра. Метод позволяет вычислять как простые, так и крат¬ ные частоты. Сравнение при решении одинаковых задач с дру¬ гими методами на ЭВМ одинакового класса показывает, что MULTIMODE требует на 1—2 порядка меньше процессорного времени^при достижении одинаковой точности. Это позволяет эффективно рассчитывать сложные резонаторы, а также прово¬ дить оптимизацию их геометрии. Пакет снабжен собственным графическим программным обеспечением, что дает возможность получать графическое представление результатов. В настоящее время пакет MULTIMODE внедрен в ОИЯИ, ИФВЭ, ИЯФ АН СССР, ИМ БАН и используется для проектирования новых ус¬ корительных установок. ПРИЛОЖЕНИЕ На рис. 2 показан осесимметричный резонатор ускоряющей структуры с диафрагмами и шайбами [8]. На рис. 3 приведены линии уровней рассчитанных Е'-волн, выполненных пакетом MULTIMODE. В табл. 9 приведены значения 7 частот, рассчи- 116
тайных пакетом, время работы ЦП, число узлов сетки и сравне¬ ние с программой SUPERFISH [2]. В табл. 10 показаны полу¬ ченные вторичные величины. Все вычисления проведены на ЭВМ ICL 1906А ИФВЭ. Наконец, приведем пример для теста. На рис. 4, а показана сетка суперэлемеитов на этапе AUTOMODE, а на рис. 4, б — сгенерированная на этапе GRIDMODE сетка. Приведем содержание входных файлов. Имя задания ES. УНГ ФАЙЛ IAES TEST EXAMPLE-HALF OF CIRCLE WILT R=5 cm &SET IAUX=1, NGTRA=1, ISYM=O &ENB &POLAR 0RIGIN=1,0,0 &END &NODES DATA=1, 0,0,0,0 , 2,0,1,2,0, 3,3,1,5,0, 4,3,1,5,45, 5,3,1,5,90, 6,0,1,2,90, 7,0,0,2,2 &END &ELEM N=1 , NSUB=3,3, , BC=O,0,0,0, B0UNB=1,2,7,6 &END &ELEM N=2, NSUB=3,3, . BC=O,3,o,o, BOUND=2,3,4,7 &END &ELEM N=3, NSUB=3,3, > BC=O,3,0,0, BOUMD=7,4,5,6 &END &ELEM N=0 &END &REFLEC A=‘ 1 &EIW ФАЙЛ IRES &PLOT IPL0T=3 &END ФАЙЛ IMES &MODE NR00T=5 &END 117
Рис. 4. Сетка суперэлементов (а) и сгенерированная сетка для теста (б) Частоты, полученные в результате расчета в (МГц): 0,0016; 1758,89; 2918,42; 3661,56; 4017,5. Время решения задачи на ЭВМ ЕС 1060 ОИЯИ - И с. ЛИТЕРАТУРА 1. Hout II. С. et al. Rev. Sci. Instrum., 1966, vol. 37. p. 755 — 762. 2. Halbach K., Holsinger R. EPart, Accel., 1976, vol. 7, p. 213—222. 3. Мурин Б. H. Линейные ускорители ионов. M.: Атомпздат, 1978, т. 2. 4 Гаврилин А. В. Препр. ВЦ СО АП СССР № 268. Новосибирск. 1980. 16 с. 5. Карлинер М. М. Препр. ПЯФ СО АН СССР № 79 — 59. Новосибирск, 1979. 20 с. 6. Насчнева В. А.. Касчиев М. С. Федосеев А. И. Препр. ОИЯИ № 11—81—695. Дубна. 1981, 10 с, 7. Касчиева В. Л., Насчиев М. С., Почин В. II., Федосеев А. И. Препр. ИФВЭ 82-92. Серпухов, 1982. 23 с. 8. Гусев В. В.— В кн.: Тр. VIII конф, по СВ и УЗЧ, Протвино, 1982. Серпухов: ИФВЭ. 1982, 470 с. 9. Bathe Kl.-J., Wilson Ed. Numerical Methods in Finite Elements Analysis, Prentice-Hall, Clip. N. J., Engle-wood, 1976. 521 p. 10. Стренг Г., Фикс Дж. Теория метода конечных элементов. М.: Мир, 1977. 349 с. И. Сегерлинд Л. Применение метода конечных элементов. М.: Мир, 1979. 392 с. 12. Самарский А. А. Введение в теорию разностных схем. М.: Наука, 1978. 552 с. 119
УДК 519.61517.971 ПАКЕТ ПРИКЛАДНЫХ ПРОГРАММ «ПОТЕНЦИАЛ» В. А. Бутенков, А. В. Лотов Пакет прикладных программ (ПП) «Потенциал» предназначен для анализа линейных моделей управляемых систем на основе метода обобщенных множеств достижимости (ОМД) [1—3]. Суть метода ОМД состоит в следующем. Пусть математическая модель объекта исследования, выделяю¬ щая допустимые значения переменных среди всевозможных, имеет вид х ЕЕ Gx CZ X. (1) где х — переменные модели, Gx — множество допустимых значе¬ ний переменных, X — линейное пространство переменных моде¬ ли. Переменные модели могут быть как конечномерными вектора¬ ми, так и функциями (времени или других параметров). Пусть задано отображение F, определенное на X и ставящее каждому х в соответствие /, / ЕЕ Ер, где Ер — конечномерное линейное пространство показателей системы. Под обобщенным множеством достижимости понимается образ множества Gx при отображении F, т. е. такое множество G/, что Gf= {f ЕЕ Ер: f = Fx, xEEGx}. (2) ПП «Потенциал» предназначен для построения (или аппрокси¬ мации) множеств G/ для моделей с выпуклыми множествами Gx и линейными отображениями F. Предполагается, что множество Gx задано (или аппроксимировано) в виде Gx = {х^ Еп: Ах^ Ь}, (3) где А и b — числовые матрица и вектор. Множество Gf должно быть получено в виде Gf = {/ е Ер: Df < d}, (4) где Dud — также числовые матрица и вектор. Метод ОМД предназначен для оценки потенциальных возмож¬ ностей управляемых систем, принятия решений при многих кри¬ териях, для агрегирования моделей, содержащих управления, для согласования иерархических систем моделей и т. д. [4—7]. В част¬ ности, если вектор показателей совпадает с вектором фазовых ко¬ ординат управляемой динамической системы в некоторый момент времени Т, то множество G/ является обычным множеством дости¬ жимости, которое может использоваться для качественного ана¬ лиза свойств системы и синтеза оптимального управления [8], для оценки устойчивости и идентификации динамических систем и т. д. 120
1. ВЫЧИСЛИТЕЛЬНЫЕ МЕТОДЫ, ВКЛЮЧЕННЫЕ В СИСТЕМУ «ПОТЕНЦИАЛ» Для построения описания G/ для Gx вида (3\ и линейных ото¬ бражений F используется подход [9,10]. Он состоит в следующем. Соотношения / — Fx, Ах b (5) в совокупности описывают некоторое многогранное множество М в пространстве Еп'гр переменных {х, /}, х ~ Еп, / ЕЕ Ер. Нетруд¬ но видеть, что ортогональная проекция Р множества М в подпро¬ странство переменных /, т. е. Р = {/ ЕЕ Ер: Ля СЕ Еп, так что {х, /} ЕЕ М}, (6) где через {х, /} обозначен вектор в пространстве совпадает с искомым множеством G/. Для построения ортогональных проекций многогранных мно¬ жеств, заданных системами линейных неравенств, могут быть ис¬ пользованы алгоритмы свертывания. Суть их заключается в после¬ довательном построении новых систем неравенств (так называе¬ мых сверток исходной системы), таких, что в каждой следующей системе число переменных меньше на единицу, а множество реше¬ ний совпадает с проекцией исходного многогранного множества в соответствующее подпространство. Существенным недостатком первого алгоритма такого рода [11] является лавинообразное уве¬ личение количества зависимых (т. е. излишних для описания мно¬ жества) неравенств в свертках. В результате алгоритм удается использовать лишь в простейших случаях. В дальнейшем пред¬ принимались усилия для уменьшения числа зависимых неравенств в свертках [12, 13]. Оптимальный алгоритм свертывания для слу¬ чая системы неравенств с параметрическим представлением векто¬ ра свободных членов был предложен С. Н. Черниковым (Алго¬ ритм сокращенного фундаментального свертывания) [13, 14]. Близ¬ кий к нему алгоритм реализован в системе «Потенциал». Все же при работе с системами, имеющими фиксированный век¬ тор свободных членов, алгоритм сокращенного фундаментального свертывания сам по себе недостаточно эффективен, так как не обеспечивает отсутствия зависимых неравенств, обычно сильно затрудняющих свертывание или даже делающих его невозможным (из-за ограниченности ОЗУ ЭВМ). Для расширения возможностей алгоритма свертывания требуется дополнительное удаление зави¬ симых неравенств с помощью специальных алгоритмов. В [7, 15] описан алгоритм удаления зависимых неравенств, ис¬ пользующий информацию о системе неравенств, вырабатываемую симплекс-методом, в [4] предложен алгоритм на основе двойствен¬ ного симплекс-метода, в [16] описан эвристический алгоритм, ос¬ нованный на погружении множества решений системы неравенств в множество простой природы. Последний алгоритм в ряде случаев отличается высокой эффективностью, но не гарантирует удаление из системы всех зависимых неравенств. 121
В [17] предложен алгоритм анализа независимости неравенств в линейной системе, в основу которого положена известная лемма Минковского—Фаркаша о зависимых неравенствах. Алгоритм позволяет найти для каждого неравенства (^, х) системы такие значения 6* и что при << Ь* система становится не¬ совместной, а при bi Ь*'" неравенство становится зависимым, если свободные члены остальных неравенств при этом зафиксиро¬ ваны. Алгоритм позволяет провести расчет значений Ь* и Ь** сра¬ зу для всех неравенств системы. Его также можно использовать для удаления зависимых неравенств из линейных систем. В работе [4] было предложено так называемое е-огрубление си¬ стем неравенств. В системе обнаруживаются и удаляются «мало¬ существенные» неравенства, незначительно изменяющие в совокуп¬ ности множество ее решений. Полученная система с меньшим коли¬ чеством неравенств описывает множество, близкое в некотором смысле к исходному и содержащее его. Проекция полученного мно¬ жества будет также содержать искомую проекцию. Указан способ построения множества, содержащегося в искомой проекции. Использование е-огрубления или близкого к нему 6-огрубле¬ ния [7] дает возможность построить следующий вариант численно¬ го алгоритма проектирования. Процесс проектирования состоит из двух этапов. На первом производится исключение «малосущест¬ венных» неравенств из исходной системы. На втором производится свертывание огрубленной системы, в процессе которого, если тре¬ буется, из промежуточных сверток удаляются зависимые нера¬ венства. Уменьшение количества неравенств в системе после огрубления облегчает проведение свертывания. Альтернативными свертыванию методами построения проек¬ ций многогранников являются итеративные методы, в которых ис¬ комая проекция задается с помощью двух многогранников — оценок проекции, которые постепенно сближаются. Граничные точки искомой проекции при этом принадлежат теоретико-мно¬ жественной разности верхней оценки и внутренних точек нижней оценки. В [7, 18] описываются два метода подобного рода. Все описанные выше методы проектирования многогранных множеств, методы удаления зависимых неравенств из линейных систем, а также методы аппроксимации включены в ППП «Потен¬ циал». 2. РЕАЛИЗАЦИЯ ПАКЕТА ПРИКЛАДНЫХ ПРОГРАММ «ПОТЕНЦИАЛ» ППП «Потенциал» [19] реализован на ЭВМ БЭСМ-6 в рамках мониторной системы «Дубна» и операционной системы ДИСПАК. В настоящей статье дается описание пакета по состоянию на ко¬ нец 1982 г. Общая архитектура ППП «Потенциал» показана на рис. 1—3. Программное обеспечение пакета включает: совокупность моду¬ лей, сгруппированных по своему назначению в три библиотеки; 122
Рис. 1. Структура программного обеспечения системы «Потенциал» Рис. 2. Схема функционирования системы «Потенциал» (цикл обработки одного задания) две подсистемы, одна из которых предназначена для ввода и пре¬ образования числовой информации, а вторая — для графического анализа построенных ОМД; мониторную программу, управляю¬ щую работой системы. Все операции в пакете выполняются рабо¬ чими блоками, собираемыми из библиотечных модулей. Рабочие блоки последовательно сменяют друг друга в оперативной памяти ЭВМ в соответствии с предложениями языка управления задания¬ ми. Очередное предложение либо вводится пользователем с экра¬ на дисплея в диалоговом режиме, либо выбирается из заранее за¬ данного сценария работы при пакетном запуске. Для передачи результатов вычислений от одного рабочего блока другому приме¬ няются основной, а в ряде случаев и дополнительный, буферы дан¬ ных, находящиеся на внешних запоминающих устройствах. Кро¬ ме того, в системе имеются вспомогательные информационные структуры, в которых может храниться информация, отличающая¬ ся по формату от записей на буферах данных. Для длительного хранения информация с буферов данных и вспомогательных ин- 123
ОЗУ [резидент мониторной"] [Системы „Дубна” J ^Мониторная "* 'программа ' [системы „Потенциал”* ["поле для рабочих ~] [блоков j [обменные листы j Системный МД Гмониторная система”! L’2?Z_621aL J МБ I Дополнительные буферы данных [виблигеки модулей [ [ системы „Потенциал”] 4 4 I I ^Вспомогательные 1 I информационные [ | ; структуры J 1 I Г Основной буфер 1 Архивные МД МЛ 1_ | j данных 1 Т“ L Базы данных 1 J Рабочий МД Рис. 3. Распределение оперативной и внешней памяти в системе «Потен¬ циал» формационных структур может переноситься в базы данных (БД). БД и дополнительные буферы постоянных данных, размещенные на внешних магнитных носителях, образуют архив системы «По¬ тенциал». Для управления работой системы разработан специальный язык управления заданиями. Функционирование системы состоит в по¬ следовательном выполнении предложений этого языка. Каждое предложение языка управлений заданиями начинается с дескрип¬ тора, идентифицирующего задание. За дескрипторохМ следует список параметров — числовых значений и идентификаторов, оп¬ ределяющих константы вычислительных методов, режимы функ¬ ционирования рабочих блоков и т. п. В языке используются как позиционные, так и ключевые параметры. В ряде случаев парамет¬ ры могут отсутствовать в предложении, при этом действуют их стандартные значения. Управляющий язык пакета отличается компактностью и удо¬ бен для работы пользователя как в диалоговом, так и в пакетном режимах. Модули «Потенциал» по своему назначению делятся на три группы — вычислительные, системные и управляющие. Вычисли¬ тельные модули составляют функциональное наполнение пакета. Они являются основными конструктивными элементами, из кото¬ рых формируются рабочие блоки, реализующие включенные в па¬ кет вычислительные методы. Ряд вычислительных методов пред¬ ставлен в пакете несколькими модификациями. Выбор той или иной модификации метода может привести к разным наборам реа¬ лизующих его вычислительных модулей и способам их соедине¬ ния в рабочих блоках. 124
Для обеспечения функционирования вычислительных модулей в операционной среде системы «Потенциал» в состав рабочего бло¬ ка должны включаться специальные системные модули. К их чис¬ лу относятся модули обмена с внешними запоминающими уст¬ ройствами, модули интерфейса с БД, модули синтаксического разбора текста предложений языка управления заданиями, моду¬ ли диалогового взаимодействия с пользователем во время счета. В пакет включены системные модули, различающиеся по уров¬ ню выполняемых функций. Модули, реализующие элементарные системные функции, являются базовыми. Таковы, например, мо¬ дуль считывания из входного потока очередной литеры, модуль физического обмена с ОЗУ и т. д. Другие модули выполняют бо¬ лее сложные операции и содержат обращения к модулям базового уровня. Например, модуль считывания из входного потока дейст¬ вительного числа использует модуль считывания очередной лите¬ ры и т. д. Набор системных модулей в пакете сфорхмирован так, чтобы обеспечить, с одной стороны, удобство, а с другой — гиб¬ кость использования системных средств. Модули различных уров¬ ней в равной степени доступны для использования. Поэтому, если в рабочем блоке неудобно применять, например, стандартный системный модуль разбора параметрической части предложения языка управления заданиями, можно организовать разбор спе¬ циальным образом, обращаясь к системным модулям более низ¬ кого уровня. Модули третьего тип$с— управляющие (УМ) — содержат ин¬ формацию о структуре рабочих блоков, реализующих предложе¬ ния языка управления заданиями системы. Имеется соответствие между заданиями пакета и УМ. По существу, управляющие моду¬ ли содержат последовательность обращений к системным и вычис¬ лительным модулям, требуемую для выполнения задания. В типичном УМ определяется следующая последовательность операций. Прежде всего контролируется наличие и корректность требуемых исходных данных на информационных структурах си- .стемы. Если имеются какие-либо несоответствия, то выдается диагностическое сообщение и возбуждается аварийный процесс. Проверочные операции выполняются с помощью специальных си¬ стемных модулей и позволяют контролировать корректность про¬ хождения последовательности заданий в системе. Далее произво¬ дится разбор текста выполняемого предложения языка управ¬ ления заданиями и определяются режимы] функционирования рабочего блока. Следующей операцией является ввод исходных данных в ОЗУ, после чего управление передается вычислительным модулям. Завершают рабочий блок системные модули, передаю¬ щие полученные результаты из ОЗУ на информационную структу¬ ру системы. Модульный принцип организации системы «Потенциал» позво¬ лил сделать ее открытой к расширению. Для подключения новых вычислительных алгоритмов достаточно добавить соответствую¬ щие модули в состав библиотеки. 125
Добавляя новые УМ, пользователь может пополнять список заданий пакета. С помощью УМ можно задать не предусмотренную заранее комбинацию вычислительных модулей, изменить тип ин¬ формационных структур, используемых для ввода исходных дан¬ ных или вывода результатов и т. п. Этот способ расширения спис¬ ка заданий, выполняемых «Потенциалом», может быть назван созданием новых заданий на микроуровне. Он требует от пользо¬ вателя определенной квалификации в области программирования, а также точного знания функций используемых системных и вы¬ числительных модулей. Существует и другая возможность создания новых заданий па¬ кета. Каждый пользователь по своему усмотрению может опреде¬ лить цепочку из имеющихся заданий пакета. Системные средства позволяют запускать такие цепочки на исполнение как единое за¬ дание. Описание цепочки может храниться в БД. По существу, определение цепочки заданий равносильно созданию управляюще¬ го модуля, в который как составные элементы входят УМ отдель¬ ных заданий. Поэтому данную возможность следует назвать обра¬ зованием новых заданий пакета на макроуровне. Использование макрозаданий удобно в тех случаях, когда пользователю прихо¬ дится многократно повторять одну и ту же последовательность операций. Такая ситуация имеет место, например, при многошаго¬ вом построении множеств достижимости для динамических систем. При запуске системы «Потенциал» в ОЗУ загружается мони¬ торная программа. Мониторная программа обеспечивает ввод оче¬ редного предложения языка управления заданиями, выделяет дескриптор задания и, используя соответствующий УМ, произво¬ дит сборку и загрузку рабочего блока в ОЗУ. Модули в системе «Потенциал» представляют собой функцио¬ нально законченные программные единицы. Написаны они на алгоритмических языках Фортран и Алгол, а системные модули базового уровня — на автокоде Мадлен. Благодаря этому сборка рабочих блоков и загрузка их в оперативную память осуществля¬ ется средствами динамического загрузчика мониторной системы «Дубна». Такой способ загрузки обеспечивает экономное исполь¬ зование ОЗУ ЭВМ, что очень важно для вычислительных алгорит¬ мов пакета. В оперативной памяти практически находятся только модули, необходимые для выполнения текущего задания. Для ускорения работы системы отдельные часто используемые системные и управляющие модули загружаются вместе с монитор¬ ной программой или даже непосредственно включены в нее. Этим уменьшаются общие затраты времени на загрузку модулей. После выполнения рабочего блока управление возвращается мониторной программе для ввода очередного задания. Как уже говорилось, обмен информацией между рабочими блоками производится с помощью основного и дополнительных буферов данных. На них может находиться информация следую¬ щих шести базовых типов. Данные первых 2 типов представляют собой совокупности коэффициентов спствхМ линейных неравенств 12)
и систем линейных равенств. Они позволяют описывать любые выпуклые многогранные множества. Следующие 2 типа предна¬ значены для описания пар многогранников, включенных один в другой. Предполагается, что многогранники могут быть описаны системами неравенств, различающимися только векторами свобод¬ ных членов. Чтобы задать оба таких многогранника, достаточно перечислить коэффициенты при неизвестных в неравенствах одной из систем и коэффициенты обоих векторов свободных членов. В за¬ висимости от формы представления коэффициентов второго векто¬ ра свободных членов данные относятся к 3-му или 4-му типам. 5-й тип выделен для записи промежуточных сверток, полученных при прерывании процесса свертывания систем линейных нера¬ венств. Данные этого типа отличаются от данных 1-го типа нали¬ чием специальных индексов, позволяющих продолжить сверты¬ вание системы. Наконец, данные 6-го типа представляют собой запись координат совокупности вершин многогранника. Информация с буферов данных для длительного хранения мо¬ жет переноситься в БД. При этом каждая запись идентифициру¬ ется пятисимвольным именем. Пользователю предоставляется воз¬ можность занести в специальное поле записи в БД любую справоч¬ ную информацию. Для работы ряда вычислительных алгоритмов, включенных в пакет, требуется информация иного формата и назначения, чем записываемая на буферах данных. Например, для проектирования многогранного множества необходимо указать список переменных подпространства проекции, а для эвристического алгоритма уда¬ ления зависимых неравенств нужно указать диапазоны возмож¬ ных значений каждой переменной. Для задания информации по¬ добного рода в системе введен ряд вспомогательных информацион¬ ных структур. Так, для разделения проектируемых переменных и переменных подпространства проекции служит специальный уп¬ равляющий вектор. Информация, находящаяся на вспомогатель¬ ных информационных структурах, также может сохраняться в БД. Для ряда задач в пакете имеется несколько различных методов решения. Проектировать многогранное множество, например, можно как с помощью свертывания задающей его системы линей¬ ных неравенств, так и с помощью метода уточнения оценок проек¬ ций. Выбор метода решения конкретной задачи в существующей реализации пакета ложится на пользователя. Это связано с труд¬ ностью априорного определения наиболее эффективного для дан¬ ной задачи метода. Под наиболее эффективным в данном случае мы понимаем метод, который позволяет получить удовлетворитель¬ ный результат на данной вычислительной установке за минималь¬ ное время. Универсальные методы, обладающие широкой об¬ ластью применимости, часто требуют большого времени счета. Поэтому в практических расчетах, прежде чем обращаться к уни¬ версальным методам, целесообразно попытаться решить задачу с помощью более простых методов. 127
Общая схема вычислений при этом выглядит следующим обра¬ зом. В начале пользователь выбирает для решения задачп один из простых алгоритмов. О ходе вычислительного процесса он мо¬ жет судить по информации, выводимой на экран дисплея (в пакет¬ ном режиме информация печатается на АЦПУ). Объем выводимой информации регулируется специальным параметром языка уп¬ равления заданиями. Если вычисления протекают неудачно, то пользователь может прервать счет и применить какой-либо дру¬ гой метод, имеющийся в пакете. В ряде случаев предусмотрена возможность корректировки параметров задания в процессе его выполнения. Это позволяет пользователю оперативно и достаточ¬ но просто управлять ходом вычислений. При аварийных ситуациях в процессе вычислений, не приво¬ дящих к необратимым последствиям, предусмотрено их автома¬ тическое устранение. Например, в случае переполнения массива неравенств при построении очередной промежуточной свертки ав¬ томатически включаются процедуры удаления зависимых нера¬ венств для построенной части свертки, после чего свертывание продолжается. Для приведения данных к формату, принятому в системе «По¬ тенциал», разработана специальная подсистема — редактор дан¬ ных. Все операции с данными производятся с помощью приказов, форматы и мнемоника которых выбраны с тем расчетом, чтобы обеспечить максимальную краткость и удобство для пользова¬ теля. Операции производятся над объектами редактирования — чис¬ ловыми векторами и матрицами, находящимися на рабочем поле в оперативной памяти. Одновременно на рабочем поле может на¬ ходиться только один объект редактирования. Редактор позволяет вводить на рабочем поле числовую информацию с экрана терми¬ нала, а также данные из пакета заданий мониторной системы «Дубна», с помощью которого запускается «Потенциал». Возможен также ввод информации с внешних магнитных носителей, из БД и основного буфера данных. Пользователь может вставить п сте¬ реть столбцы и строки, транспонировать матрицу на рабочем поле, заменить отдельные элементы объекта редактирования или целые их группы, выполнить с элементами арифметические преобразова¬ ния и т. п. Большинство операций могут выполняться как со всем объектом редактирования, так и с его частями. В редактор вклю¬ чены специальные приказы, облегчающие формирование в БД за¬ писей данных в стандартном представлении системы «Потенциал». Подсистема графического анализа многогранных множеств предназначена для изучения построенных ОМД. Здесь пользова¬ телю предоставляется возможность получить изображение дву¬ мерных проекций и сечений многогранных множеств на экране алфавитно-цифрового дисплея, напечатать их на АЦПУ и вычер¬ тить на графопостроителе CALCOMP-360. С помощью приказов подсистемы для исследуемых множеств указываются переменные, соответствующие осям абсцисс и ординат на рисунках, диапазоны 128
значений этих переменных, интересующие пользователя. Для се¬ чений задаются значения фиксируемых переменных. После этого, дав специальный приказ, можно получить изображение сечения или проекции на терминальном устройстве. Уменьшая диапазоны значений переменных, соответствующих осям, можно получать отдельные фрагменты рисунка в более крупном масштабе. В подсистеме предусмотрена возможность образования пакета двумерных проекций и сечений различных множеств, которые впоследствии можно вычерчивать с наложением на одном листе. При работе с дисплеем в диалоговом режиме наложение на одно и то же поле рисунков из пакета осуществляется последователь¬ но. Это позволяет пользователю получить более наглядное пред¬ ставление об изучаемом множестве. Как уже говорилось, система «Потенциал» реализована на ЭВМ БЭСМ-6. Однако, поскольку подавляющее большинство модулей написаны на алгоритмических языках высокого уровня (Алголе и Фортране), относительно несложной представляется операция по переводу ее на другие ЭВМ. Для этого требуется только пе¬ реписать машинно-зависимые системные модули базового уровня и смоделировать на внешних запоминающих устройствах новой ЭВМ информационные структуры системы «Потенциал». 3. ИСПОЛЬЗОВАНИЕ ПИП ППП «Потенциал» использовался для исследования ряда эко¬ лого-экономических моделей, представляющих практический ин¬ терес. Укажем некоторые из них. В рамках программно-целевого подхода к управлению эконо¬ микой страны проводилось исследование укрупненной межотрас¬ левой динамической модели народного хозяйства (описание моде¬ ли см. в [20]). Целью исследований было определение обобщающих показателей экономического развития на пятнадцатилетний пе¬ риод в соответствии с заданными целевыми установками на ко¬ нец периода. С помощью «Потенциала» были построены множества сочетаний целевых показателей, достижимых к концу планового периода при определенных предположениях о траекториях их изменения (траектории линейного роста, роста с постоянным тем- ПОМ и т. п.). В модели экономики выделялось 18 отраслей. Требовалось най¬ ти возможные сочетания в конце планового периода 7 показателей социально-экономического развития. Связи между 138 перехмен- ными модели описывались 216 неравенствами и 68 равенствами. После исключения ряда переменных с использованием равенств задача была сведена к проектированию многогранника в 70-мер¬ ном пространстве, описываемого 216 неравенствами, в 7-мерное подпространство показателей. Построение искомого ОМД методом уточнения оценок проекции потребовало 5 мин 30 с, а методом синтеза сечений — 2 мин 8 с. Проекция, полученная с точностью юколо 5% (имеется в виду отношение расстояния между оценками 129
проекции к характерному размеру проекции), описывалась 82 неравенствами. Построенное множество показателей было исследовано с по¬ мощью подсистемы графического анализа ОМД. На основе ОМД проводился анализ упрощенного варианта мно¬ гоотраслевой многорегиональной модели мировой экономики, со¬ зданной под руководством В. Леонтьева [21]. Предполагалось, что каждый регион имеет собственную программу потребления, уро¬ вень реализации которой зависит от разделения труда между ре¬ гионами и их взаимной торговли. Кроме экономических в модели учитывались социальные и экологические факторы — уровень занятости и уровень загрязнения окружающей среды в регионе. С помощью системы «Потенциал» были получены и изучены раз¬ личные множества показателей. Например, для выяснения взаимо¬ зависимости уровней потребления регионов строилось соответ¬ ствующее 4-мерное множество. Для его получения потребовалось спроектировать многогранник, описываемый 79 неравенствами из 20-мерного пространства в 4-мерное подпространство. Проек¬ ция была получена алгоритмом уточнения оценок проекции за 4 мин. Важной особенностью данной модели была ее блочность, что позволило упростить вычисления и проводить их поэтапно. ППП «Потенциал» с успехом применялся для решения задач многокритериальной оптимизации региональных эколого-эконо¬ мических систем (см., например [22]), а также для анализа гло¬ бальных эколого-экономических моделей. Кроме этого, пакет использовался для расчета множеств дос¬ тижимости для управляемых систем обыкновенных дифферен¬ циальных уравнений, а также некоторых простых управляемых систем дифференциальных уравнений в частных производных. 4. СПИСОК ЗАДАЧ, РЕШАЕМЫХ С ПОМОЩЬЮ ПАКЕТА «ПОТЕНЦИАЛ» В заключение перечислим задачи, которые могут быть решены с помощью алгоритмов пакета «Потенциал». Задачи построения ОМД. 1) Построение ОМД для линейной статической модели вида Ля 6, х ЕЕ Еп и линейных показателей / = Fx, / ЕЕ Ер. 2) Построение множества достижимости для линейной динами- ческой модели yt+i = Atyt +BiUt + at, Cbjt + C'tui ^Ci, Z = 0,. . . , T — 1, где At,Bt, Cvt, C™, at, ct — числовые матрицы и векторы, t = 0, . . • . . ., Т — 1, а множество значений у0 описывается системой Лоу дЕ <Z0, /)0, с/0 — числовые матрица и вектор. 3) Построение ОМД для линейной динахмической модели ука¬ занного вида для линейных показателей /, определенных на пере¬ менных у0, . . ., z/т, и0, иг, . . ., ит-г. 130
Задачи анализа систем линейных нера¬ венств. 1) Проверка совместности системы линейных неравенств. 2) Построение системы неравенств, эквивалентной исходной и не содержащей зависимых неравенств (удаление зависимых неравенств). 3) Определение пределов независимости неравенств в линей¬ ной системе. Задачи преобразования многогранных множеств и их описаний. 1) Построение ортогональной проекции многогранного мно¬ жества, заданного системой линейных неравенств. 2) Построение приближенного описания ортогональной проек¬ ции многогранного множества. 3) Переход к приближенному описанию многогранных мно¬ жеств за счет уменьшения количества неравенств в системе (огрубление множества). 4) Построение сопряженного конуса для конуса, заданного «однородной системой линейных неравенств (нахождение общего неотрицательного решения систехмы однородных линейных не¬ равенств). 5) Переход от описания многогранника в виде совокупности вершин к описанию в виде системы неравенств и наоборот. Задачи анализа ОМД. 1) Графический анализ многогранного множества с помощью построения двумерных сечений и проекций. 2) Многокритериальная оптимизация с помощью двумерных сечений и проекций множества. Алгоритмы ППП «Потенциал» могут использоваться и для дру¬ гих более специальных задач. ЛИТЕРАТУРА 1. Лотов А. В. Исследование экономических систем с помощью множеств достижимости.— В кн.: Тр. Междунар. конф. «Моделирование экономи¬ ческих процессов» (Ереван, апрель 1974). М.: ВЦ АН СССР, 1975, с. 257—266. 2. Лотов А. В. О понятии обобщенных множеств достижимости и их по¬ строении для линейных управляемых систем.— Докл. АН СССР, 1980, т. 250, № 5, с. 1081 — 1083. 3. Лотов А . В. О понятии и построении обобщенных множеств достижимости для линейных управляемых систем в частных производных.— Докл. АН СССР, 1981, т. 261, № 2, с. 297-300. 4. Лотов А. В., Огнивцев С. Б. О предварительном распределении ресурсов между программами в программно-целевом подходе к планированию народного хозяйства. М.: ВЦ АН СССР, 1980. 48 с. 5. Лотов А. В. Анализ потенциальных возможностей экономических систем.— Экономика и мат. методы, 1981, т. 17, вып. 2, с. 377—381. 6. Лотов А, В, Агрегирование как аппроксимация обобщенных множеств достижимости.— Докл. АН СССР, 1982, т. 265, № 6, с. 1134—1137. 7. Бушенков В. А., Лотов А. В. Методы построения и использования об¬ общенных множеств достижимости. М.: ВЦ АН СССР, 1982. 53 с. 131
8. Федоренко Р. ГТ. К задаче Коши для уравнения динамического програм¬ мирования Веллмана.— Ж урн. вычисл. математики и мат. физики 1969, т. 9. № 2, с. 426—432. 9. Лотов А . В. Численный метод построения множеств достижимости для линейной управляемой системы.— Журн. вычисл. математики и мат. физики, 1972, т. 12, № 3, с. 785—788. 10. Лотов А. В. Численный метод построения множеств достижимости для линейных управляемых систем с фазовыми ограничениями.— Журн_ вычисл. математики it матем. физики, 1975, т. 15, № 1, с. 67 — 78. 11. Fourier J. В. Solution d’une question particuliere des calcul dos inc-gali- tes.— Nouveau bulletin des sciences par la societe philomathique de Paris, 1826, p. 99. 12. Mo икни T. С. и др. Метод двойного описания.— В кн.: Матричные игры. М.: Фпзматгпз, 1961, с. 81 —109. 13. Черников С. II. Свертывание конечных систем липейных неравенств.— Докл. АН СССР. 1963, т. 152, № 5, с. 1075-1078. 14. Черников С. II. Линейные неравенства. М.: Наука, 1968. 488 с. 15. Бутенков В. А.. Лотов А. В. Методы и алгоритмы анализа линейных систем па основе построения обобщенных множеств достижимости.— Журн. вычисл. математики и мат. физики, 1980, т. 20, № 5. с. 1130—1141. 16. Бутенков В. А. Один алгоритм построения проекций многогранных множеств.— В ктт.: Аэрофпзттка и прикладная математика. М.: МФТИ. 1980, с. 99 — 101. 17. Бутенков В. А., Лотов А. В.. Алгоритм анализа независимости нера¬ венств в линейной системе.— Жугн. вычисл. математики и мат. физики. 1980. т. 20, № 3, с. 562—572.' 18. Бутенков В. А. Численный алгоритм построения проекций миогогр н- пых множеств.— В кп.: Аэрофпзпка и прикладная математика. М.: МФТИ, 1981, с. 108-110. 19. Бутенков В. А. Пакет прикладных программ «Потенциал» для построе¬ ния и анализа обобщенных множеств достижимости.— В ки.: Системы программного обеспечения решения задач оптимального планирования: Тез. докл. VII Всесоюз. симпоз. (Нарва—Йыэсуу, 1982). М.: ЦЭМИ АН СССР, 1982. 12 с. 20. Матлин И. С. Сводная народнохозяйственная модель в системе опти¬ мального перспективного планирования.— Экономика и мат. методы, 1978, т. 14, вып. 6, с. 1102—1112. 21. Гранберг А. Г., Рубинштейн А. Г. Модификации межрегиональной меж¬ отраслевой модели мировой экономики.— Экономика и мат. методы,. 1979, т. 15, вып. 2, с. 307 — 320. 22. Bushenkov V., Ereshko F., Kindler J., Lotov A.. L. de Mare. Application of the Generalized Reachable Sets Method to Water Resources Problems in Southwestern Skane, Sweden. WP-82-120, Laxenburg, Austria: Inter¬ national Institute for Applied Systems Analysis, p. 24.
СОДЕРЖАНИЕ Требования к языку спецификаций пакетов приклад¬ ных программ 3 М. М. Бежанова Принципы построения базового системного обеспече¬ ния пакетов прикладных программ 12 B. В. Иененко, И. В. 11оттосин, Ф. Г. Светлакова Система МОПР для автоматизации разработок и экс¬ плуатации пакетов прикладных программ 29 C. 11. Гололобова, В. 11. Ильин Мобильная инструментальная система разработки па¬ кетов программ 43 /1. Л. Шмундак Об одном подходе к разработке и применению средств поддержки диалоговых пакетов прикладных программ 49 A. А. Грановский, Е. 11. Епифанова, А. И. Шалагинов Пакет прикладных программ для решения одномерных задач математической физики 56 И. А. Адамская, И. Д. Софронов Система’ программирования одномерных задач 67 М. II. Каплунов, И. Д. Софронов Комплекс программ EIERA для решения задач одно¬ мерной магнитной гидродинамики 74 С. /1. Гай фулин, В. А. Гасилов, В. Я. Карпов, А. 10. Круковский, Т. В. Мищенко Организация функционального наполнения в генера¬ торе программ «Поле-ЗМ» 89 B. Л. Рвачев, Г. 11. Манько, И. II. Кирюшина, В. II. Осьмачко Технология программирования алгоритмов решения краевых задач теплопроводности в генераторе про¬ грамм «Поле-3» 93 Г. И. Манько, Н. А. Сафонов, Н. Д. Сизова 133
Пакет прикладных программ MULTIMODE для чис¬ ленного моделирования осесимметричных и продоль¬ но-однородных электромагнитных резонаторов. Алго¬ ритмы и реализация в ОС ЕС 104 М. С. Касчиев, В. А. Касчиева, Э. Шт радт, В. В Гусев, A. И. Федосеев Пакет прикладных программ «Потенциал» . 120 B. А. Вушенксв, А. В. Лотов ПАКЕТЫ ПРИКЛАДНЫХ ПРОГРАММ Системное наполнение (Сер. Алгоритмы и алгоритмические языки) Утверждено к печати Вычислительным центром Академии паук СССР Редактор О. В. Шамфарова. Редактор издательства А. А. Боровая. Художник М. Р. Ибрагимов. Художественны!! редактор H. А. Фильчагина. Технический редактор Ф. М. Хенох. Корректор Р. 3. Землянская 11Б № 27874 Сдано в набор 10.07.84. Подписано к печати 13.11.84. Т-19876. Формат 60x90l/i„. Бумага кн.-журнальная. Гарнитура обыкновенная. Печать высокая. Усл. печ. л. 8,5. Уч.-изд. л. 9,7. Уел. кр. отт. 8,75. Тираж 45."0 экз. Тип. зак. 485. Цена 95 коп. Издательство «Наука» 117864 ГСП-7, Москва В 485 Профсоюзная ул., 90 2-я типография издательства «Наука» 121099, Москва, Г-99, Шуйц скип нор., 10
УДК 519.682 Б е ж а и о в а М. М. Требования к языку спецификаций пакетов прикладных программ.— В кн.: Пакеты прикладных программ. Системное наполнение. М.: Наука, 1984. (Сер. Алгоритмы и алгоритмические языки). Рассматриваются базовые понятия и средства языка, предназначенного для спецификации проектов ППП. Приводится анализ средств описания проектов крупных проблемно-ориентированных систем. Библ. 19 иазв. УДК 519.683 ПененкоВ.В., ПоттосинИ. В., Светлакова Ф. Г. Принципы построения базового системного обеспечения пакетов прикладных программ. — В кн.: Пакеты прикладных программ. Системное наполнение. М.: Наука, 1984. (Сер. Алгоритмы и алгоритмические языки). Вводится определение базового системного обеспечения ППП и рассматри¬ ваются его функции. Излагаются принципы построения базового системного обес¬ печения, которые иллюстрируются на примере системы СОФИСТ, реализуемой в ВЦ СО АН СССР. Библ. 43 иазв. УДК 519.685 Гололобова С. П., II л ь и п В. П. Система МОПР для автоматизации разработок и эксплуатации пакетов прикладных программ.— В ки.: Пакеты приклад¬ ных программ. Системное наполнение. М.: Наука, 1984 (Сер. Алгоритмы и алго¬ ритмические языки). Рассматриваются структура и реализация системы модульного программи¬ рования МОПР, основными компонентами которой являются: программа-библио¬ текарь, процессор, управляющая программа, редактор, информатор, архивы, библиотеки модулей, файлы паспортов и информации. Приводятся примеры опыт¬ ной эксплуатации системы. Библ. 8 иазв. УДК 519.685 Ш м у и д а к А. Л. Мобильная инструментальная система разработки пакетов программ. — В кн.: Пакеты прикладных программ. Системное наполнение. М.: Наука, 1984. (Сер. Алгоритмы и алгоритмические языки). Излагаются кратко основные решения, принятые при разработке системы МИС, предназначенной для автоматизации построения пакетов программ с неза¬ висимыми и вложенными языками. Библ. 2 назв. УДК 519.687.6 Грановский А. А., Епифанова Е. П., Ш а л а г и н о в А. И. Об одном подходе к разработке и применению средств поддержки диалоговых пакетов прикладных программ.— В кн.: Пакеты прикладных программ. Системное на¬ полнение. М.: Наука, 1984. (Сер. Алгоритмы и алгоритмические языки). Излагается один из возможных подходов к разработке средств системной под¬ держки диалоговых пакетов прикладных программ. Приводится краткое описа¬ ние этих средств, дается пример их использования в конкретном ППП для реше¬ ния ряда задач энергетики. Показывается влияние выбора общесистемных средств на архитектуру пакета. Библ. 10 назв. УДК 519.688:53 А д а м с к а я И. А., С о ф р о н о в И. Д. Пакет прикладных программ для решения одномерных задач математической физики.— В кн.: Пакеты прикладных, программ. Системное наполнение. М.: Наука, 1984. (Сер. Алгоритмы и алгорит¬ мические языки). Дается описание пакета прикладных программ, получившего название одно¬ мерного комплекса (ОК), который предназначен для решения задач математиче¬ ской физики и механики сплошной среды с одной пространственной переменной. Ил. 4. Библ. 17 назв. 135
УДК 519.685.1 Капл у нов М. II. Софр о н о в И. Д. Система программирования одномер¬ ных задач.— В ни.: Пакеты прикладных программ. Системное наполнение. М.: Наука, 1984. (Сер. Алгоритмы и алгоритмические языки). Дается общая характеристика системы, классифицируются ее объекты, крат¬ ко описываются языковые средства, рассматриваются особенности функциониро¬ вания системы на ЭВМ серии ЕС. Библ. И назв. УДК 519.683.8:537.84 Г а и ф у л и и С. А., Г а с и л о в В. А., К а р п о в В. Я., К р у к о в с к и й A. Ю., Мищенко Т. В. Комплекс программ HERA для решения задач одно¬ мерной магнитной гидродинамики.— В ни.: Пакеты прикладных программ. Си¬ стемное наполнение. М.: Наука, 1984. (Сер. Алгоритмы и алгоритмические языки). Дано описание программы HERA решения уравнений одномерной магнит- ной газовой динамики с теплопроводностью в лагранжевых массовых координа¬ тах в осесимметричной области. Предполагается, что магнитное поле имеет либо только д-ю компоненту (задача о Z-пинче), либо только z-ю (задача о 0-пинче). Программа предназначена для общего пользования и является частью функцио¬ нального наполнения пакета прикладных программ САФРА. Программа написана на языке Фортран в рамках системы OLYMPUS. Библ. 10 назв. УДК 519.683.8:53 Р в а ч е в В. Л., М а н ь к о Г. П., Кирюшина И. И., Осьмачко B. Н. Организация функционального наполнения в генераторе программ «Поле- ЗМ» .— В кн.: Пакеты прикладных программ. Системное наполнение. М.: Наука, 1984. (Сер. Алгоритмы и алгоритмические языки). Описывается организация функционального наполнения в новой версии гене¬ ратора программ «Поле-ЗМ», предназначенного для решения одно-, двух- и трех¬ мерных задач математической физики без ограничений на характер краевых усло¬ вий и геометрию области. Характеризуется язык СТЕП, с помощью которого со¬ ставляются новые модули функционального наполнения. Библ. 9 назв. УДК 519.683.8:536 М а н ь к о Г. П., Сафоновы. А., С и з о в а Н. Д. Технология програм¬ мирования алгоритмов решения краевых задач теплопроводности в генераторе программ «Поле-3.».— В кн.: Пакеты прикладных программ. Системное напол¬ нение. М.: Наука, 1984. (Сер. Алгоритмы и алгоритмические языки). Описывается технология программирования алгоритмов решения нелиней¬ ных и пространственных краевых задач теплопроводности в генераторе программ «Поле-3». Табл. 4. Библ. 7 назв. УДК 519.688:538.56 -j- 519.632 + 519.614 К а с ч и е в М. С., К а с ч и с в а В. А., Ш т р а й т Э., Гус е в В. В., Федосеев А. II. Пакет прикладных программ MULTIMODE для численного моделирования осесимметричных и продольно-однородных электромагнитных резонаторов. Алгоритмы и реализация в ОС ЕС.— В кн.: Пакеты прикладных программ. Системное наполнение. М.: Наука, 1984. (Сер. Алгоритмы и алгорит¬ мические языки). Описывается системная реализация пакета программ MULTIMODE, пред¬ назначенного для решения спектральной задачи, которая возникает при модели¬ ровании резонаторов. Сравнения с другими известными пакетами показывают, что при расчетах конкретных резонаторов MULTIMODE требует на два порядка меньше процессорного времени при использовании одинаковых ЭВМ и достиже¬ нии одинаковой точности расчетов. Табл. 10. Ил. 4. Библ. 12 назв. УДК 519.6:517.977 Бушенков В. А., Лотов А. В. Пакет прикладных программ «Потен¬ циал» .—В кн.: Пакеты прикладных программ. Системное наполнение. М.: Наука, 1984. (Сер. Алгоритмы и алгоритмические языки). Описывается пакет программ «Потенциал», предназначенный для анализа линейных моделей управляемых систем на основе построения обобщенного мно¬ жества достижимости — образа множества допустимых значений переменных модели при отображении в пространство показателей функционирования системы. Ил. 3. Библ. 22 назв.
ВНИМАНИЮ АВТОРОВ В сборниках серии «Алгоритмы и алгоритмические языки» публикуются работы по программированию и алгоритмическим языкам с преимуществен¬ ной ориентацией на проблематику пакетов прикладных программ, и в част¬ ности на различные аспекты функционального наполнения, системного и языкового обеспечения пакетов. Редколлегия серии просит авторов придерживаться следующих правил при подготовке статей для сборника. 1. Автор представляет первый и второй экземпляры рукописи на рус¬ ском языке, отпечатанные на пишущей машинке через два интервала на одной стороне листа стандартного формата (30 X 21 см) объемом не более 25 с. На первой странице рукописи в следующем порядке указываются: индекс универсальной десятичной классификации (УДК), название статьи, инициалы и фамилия автора. Аннотация печатается на отдельном листе. 2. Статья должна иметь необходимую документацию от учреждения, в котором выполнена данная работа (2 экз.). 3. Все формулы и обозначения должны быть отчетливо вписаны от руки черными чернилами и размечены в соответствии с общими правилами оформ¬ ления для публикации. 4. Иллюстративный материал (рисунки, таблицы больших размеров) должен быть выполнен на отдельных листах. На их обратной стороне должны быть указаны чернилами фамилия автора, номер рисунка. Ссылка на рису¬ нок, таблицу дается в тексте. Месторасположение рисунка, таблицы указы¬ вается на полях рукописи. 5. Программы или их фрагменты рекомендуется отчетливо напечатать на пишущей машинке (без вписывания букв и цифр от руки) на отдельных листах так, чтобы можно было получить их светокопию. 6. Литература печатается на машинке на отдельном листе. Работы перечисляются в том порядке, в котором входят в текст первые ссылки на них. Номер работы, служащий в тексте ссылкой, заключается от руки в квадратные скобки. Для книги указывается место издания, издательство, год издания и число страниц в книге; для журнальной статьи — название журнала, год издания, том, выпуск (или номер), страницы начала и конца статьи; для статьи сборника — название сборника, место издания, издательство, год издания, страницы начала и конца статьи. Пример: 1. Госин Я. И., Смирнова М. Н., Черняк Л. Е. и др. Библиографические сведения в изданиях. М.: Книга, 1981. 192 с. 2. Тамм В. Г., Тыугу Э. X. Пакеты программ.— Изв. АН СССР. ТК, 1977, № 5, с. 111—124. 3. Загацкий Б. А. Прикладные программы для ЕС ЭВМ.—В кн.: Системное программирование. Новосибирск: ВЦ СО АН СССР, 1973, ч. 2, с. 161— 177. 7. Рукопись должна быть тщательно выверена и подписана автором с указанием даты отправки статьи, точного почтового адреса автора, место его работы и телефонов. Рукописи для публикации в сборниках серии следует направлять по адресу: 117333, Москва В-333, ул. Вавилова 40, ВЦ АН СССР, редколлегия серии «Алгоритмы и алгоритмические языки», тел.: 135-25-39, 135-12-09.
■ ■ ■ ■ .. ■ ■ ■