Рестарты проекта и пакета

Описание и приемы работы с функцией рестарта

Расчет комплексных проектов, связанных с моделированием в реальном времени длительных процессов, либо процессов с большим объемом сложных вычислений, может занимать много времени. Для того, чтобы иметь возможность запускать моделирование не с начала, а с того места, на котором оно завершилось прошлый раз, в SimInTech предусмотрен механизм рестартов. Рестарт (от англ. restart, другие названия, в т.ч. и жаргонные: исходное состояние, «спасённое» состояние, сохранённое состояние, initial conditions (IC), ай-си) – записанное в файл(ы) состояние модели по её переменным состояния (или внутренним, независимым переменным), в какой-либо момент времени расчета. Фактически любая модель или проект содержит как минимум один рестарт – им является набор начальных значений всех переменных и сигналов. Функция рестартов позволяет создавать произвольное количество таких наборов, а именно: в любой момент расчета проекта, можно создать файл рестарта, который содержит в себе текущее состояние переменных проекта. Эта мера позволит в будущем загрузить состояние проекта из файла и моделирование начнется не с начальных значений, а продолжится с того момента модельного времени, в который был создан файл рестарта и из того состояния модели которое было на момент записи рестарта. Также эта мера позволяет «сохраниться» (по аналогии с компьютерными играми), а именно: если при дальнейшем моделировании что-то «пойдет не так», то в следующий раз можно будет перезапустить расчет с того места, на котором произошло «сохранение». Другой вариант – сохранив один раз исходное состояние, можно моделировать различные сценарии и переходные режимы, которые начинаются из одного и того же состояния модели.

Примечание: как правило, рестарт жестко соответствует модели – при изменении модели (в части топологии схемы и/или количества используемых сигналов) необходимо заново создавать рестарты, т.к. рестарты от «старой» версии модели перестают корректно работать с «новой». Это справедливо почти для всех бинарных рестартов теплогидравлических моделей и моделей электрических сетей, и для большинства текстовых рестартов. Исключения составляют только некоторые случаи, в которых переменные записываются в рестарт именованным способом и тогда возможно использование рестартов от «старой» модели в «новой». При этом тем переменным, которых не окажется в рестарте, будут всё же присвоены начальные значения.

В SimInTech для расчетных схем и для базы сигналов применён именованный способ записи переменных в рестарт – поэтому при малых изменениях расчетной схемы автоматики и/или базы сигналов для них остаются работоспособными рестарты сделанные для предыдущей версии проекта (в той части блоков и сигналов которые остались неизменными). Но в общем случае рекомендуется пересохранять рестарты при любых, сколь угодно малых изменениях расчетной схемы.

Существует несколько способов использовать функцию рестарта.

Настройка рестарта автономного проекта

Рассмотрим работу функции рестарта автономного проекта (одного prt-файла). Интерфейс работы с настройкой рестарта находится на вкладке «Рестарт» окна «Параметры проекта», которое вызывается нажатием кнопки «Параметры расчёта» в окне проекта.

Рисунок 1. Кнопка вызова окна «Параметры проекта»

Рисунок 2. Интерфейс настройки параметров рестарта.

Окно, представленное на рисунке (Рисунок 2), имеет 2 раздела – один управляет сохранением рестарта проекта, а второй – загрузкой.

Когда галочки «Сохранять рестарт» и «Загружать рестарт при инициализации» не установлены, то запуск проекта каждый раз происходит с нулевого момента времени и с начальных условий.

Сохранение рестарта. Установка галочки «Сохранять рестарт» означает включение режима автоматического сохранения рестартов. При этом, название галочки изменяется на «Сохранять рестарт при останове», что означает, что в данном режиме, каждый раз при остановке расчета кнопкой СТОП (Рисунок 3), состояние проекта будет сохраняться в файл, указанный в поле «Имя файла».

Рисунок 3. Кнопка «Стоп»

В том случае, когда режим сохранения рестарта при останове включен, становится доступна еще одна галочка – «Сохранять с шагом», установка которой означает, что в выбранный файл будет записываться состояние проекта каждые n секунд моделирования, где n – число, установленное в поле «Шаг сохранения рестарта, с», которое появляется при установке соответствующей галочки. При этом название самой первой галочки меняется на «Сохранять рестарт с шагом», тем самым являясь индикатором того, какой режим автоматического сохранения рестарта выбран в данный момент (Рисунок 4).

Рисунок 4. Поле ввода шага сохранения рестарта

Еще одной возможностью сохранить рестарт проекта является ручное сохранение с помощью кнопки «Сохранить сейчас», которая становится доступна, когда проект запущен на расчет. То есть в любой момент расчета проекта, можно зайти на вкладку «Рестарт» окна «Параметры проекта» и нажать там кнопку «Сохранить сейчас». При этом текущее состояние проекта будет сохранено в файл, указанный в поле «Имя файла». Режим ручного сохранения можно использовать как независимо, так и совместно с режимами автоматического сохранения с шагом и/или при остановке. При этом следует иметь в виду, что при включенном сохранении рестарта при останове будет перезаписан рестарт, сделанный вручную (т.е. совместное их использование либо не предполагается, либо до остановки расчета надо скопировать сделанный вручную рестарт в файл(ы) с другим именем).

Загрузка рестарта. На той же вкладке «Рестарт» окна «Параметры проекта» есть раздел, посвящённый загрузке рестарта проекта. Этот режим позволяет автоматически при запуске, либо в ручном режиме в процессе моделирования, загружать состояние проекта из файла рестарта.

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

При загрузке рестарта проекта также есть возможность заменить модельное время, сохраненное в рестарте, на новое, значение которого задается здесь же после установки галочки «Изменять модельное время». Это удобно, например, в случае сохранения стационарного состояния модели (например, номинального состояния установки) и принятии этого момента времени за ноль для последующей серии расчетов.

Рассмотрим пример использования функции рестарта проекта. Создадим простой проект, состоящий из блоков типа «линейный источник», «интегратор» и «временной график» (Рисунок 5).

Рисунок 5. Проект для проверки функции рестарта

Не используя функции рестарта, каждый запуск модели на расчет будет начинаться с нулевого момента модельного времени и начального значения параметров модели. Произведем настройку рестарта программы, установив галочку «Сохранять рестарт» и «Загружать рестарт при инициализации» и укажем файл, в который будет сохраняться состояние проекта и из которого оно будет загружаться при следующем запуске (Рисунок 6).

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

Рисунок 6. Окно настройки рестарта программы для проверки работы режима

При таких настройках, состояние проекта будет сохраняться автоматически, при остановке моделирования, в файл 1.rst. При следующем запуске, это состояние будет загружено из файла 1.rst и моделирование продолжится с места предыдущей остановки.
Произведем ряд пробных запусков модели на расчет. Первый раз остановим через несколько секунд (Рисунок 7).

Рисунок 7. Результаты первого запуска модели

Как видно из графика, расчет начался с нулевой секунды (т.к. файла рестарта на диске еще не существовало) и продолжался чуть больше пяти секунд. Снова нажмем на «Пуск» и через некоторое время снова остановим (Рисунок 8).

Рисунок 8. Результаты второго запуска модели

Как видно из графика на рисунке (Рисунок 8), расчет начался с момента времени t≈5,5 секунды, то есть с того, на котором завершился предыдущий. При этом стоит отметить, что значения функции, в моменты времени предшествующие значению 4, недоступны. То есть при сохранении рестарта, запоминаются только мгновенные значения параметров (время моделирования и значения всех независимых сигналов, т.е. переменные состояния модели). Об этом нужно помнить, если необходимо иметь все значения какой-либо функции во все моменты времени, начиная с нуля.

Настройка рестарта пакета

Функции рестарта доступны не только для отдельного файла проекта, но и для пакета, включающего в себя несколько файлов.

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

Настройки рестарта пакета находятся в окне «Настройки пакета», вызываемом по нажатию одноименной кнопки в окне пакета (Рисунок 9).

Рисунок 9. Кнопка «Настройки пакета»

Раздел рестарта пакета состоит из поля базового имени файлов рестарта и двух кнопок: «Сохранить сейчас» и «Загрузить сейчас» (Рисунок 10).

Рисунок 10. Окно настроек пакета

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

Сохранение рестарта пакета без использования базового имени. Сохранение и загрузка файлов рестарта всех проектов осуществляется нажатием соответствующих кнопок в окне настройки пакета во время расчета. В этот момент каждый проект выполняет запись либо считывание своего файла рестарта. Поле «Базовое имя файлов рестарта» при этом остается пустым.

Сохранение рестарта пакета с использованием базового имени. Базовое имя – общая (базовая) часть имени файлов рестарта всех проектов, входящих в состав пакета. То есть, например, если базовое имя файлов рестарта – «RES», то имя файла рестарта каждого проекта будет иметь конструкцию: «RES<уникальная часть имени файла рестарта проекта>». При этом базовое имя может стоять не только в начале, но и в любой части имени файла рестарта проекта.

Базовое имя указывается в настройках пакета в поле «Базовое имя файлов рестарта». При этом имя файла рестарта каждого проекта должно содержать специальное слово $PACKRESTART, которое в процессе сохранения файла заменяется на базовое имя файлов рестарта, указанное в настройках пакета.

Пример:

В настройках пакета из двух проектов указано базовое имя файлов рестарта – restart (Рисунок 11).

Рисунок 11. Настройки базового имени рестартов пакета

При этом имена файлов рестарта каждого проекта содержат специальное слово $PACKRESTART (Рисунок 12 и 13).

Рисунок 12. Настройка имени файла рестарта первого проекта в составе пакета при использовании базового имени

Рисунок 13. Настройка имени файла рестарта второго проекта в составе пакета при использовании базового имени

При таких настройках, каждый раз во время нажатия кнопок «Сохранить сейчас» или «Загрузить сейчас» в окне настройки пакета, будет происходить перезапись или считывание соответственно файлов restart_1.rst для первого проекта и restart_2.rst для второго проекта в составе пакета.

Такой механизм удобен тем, что можно прямо во время расчета пакета, изменять базовое имя и сохранять разные версии рестартов с разными базовыми именами. То есть, возвращаясь к примеру с двумя проектами и базовым именем restart, можно прямо во время расчета изменить базовое имя, скажем, на restart2и получить еще один комплект файлов рестарта для всех проектов. Это значит, что в дополнение к файлам restart_1.rstи restart_2.rst, будут созданы еще и restart2_1.rstи restart2_2.rst. Таким образом, удается получить удобный инструмент для записи рестартов всех файлов пакета в разные моменты времени и также быстро загружать любой из них, то есть начинать расчет с любого, ранее записанного, состояния всего пакета.

Сохранение рестарта пакета с использованием замены файлов. Еще одним вариантом осуществления записи и загрузки разных рестартов проектов пакета, является замена файлов. Смысл операции заключается в том, что с помощью сторонних средств можно переписать содержимое рабочего файла рестарта или копировать его в другой файл. Рассмотрим на примере одного проекта: при времени моделирования 1 час, записываем рестарт проекта в файл restart.rst. Затем копируем его содержимое в файл restart1.rst. Еще через час моделирования опять записываем рестарт проекта в рабочий файл restart.rst и копируем его содержимое в файл restart2.rst. И так каждый час. В результате будем иметь рабочий файл restart.rst, на работу с которым настроен проект, и несколько файлов, отражающих состояние системы в конце каждого часа моделирования (restart1.rst, restart2.rst, restart3.rst и т. д.). В случае необходимости возобновить работу с конкретного момента, содержимое соответствующего файла копируется в основной рабочий файл restart.rst и загружается рестарт.

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