DIVA-GUIграфический интерфейс пользователя для симулирующей среды DIVA
M. Chebotarov, E. D. Gilles, M. Ginkel, M. Häfele, A. Kienle, M. Mangold, V. Svjatnyj
Max-Planck-Institut für Dynamik komplexer technischer Systeme, Magdeburg, Deutschland
Department of computer science and informatic, Donetsk State Technical University, Donetsk, Ukraine
E-mails: nikolas@mpi-magdeburg.mpg.de, ginkel@mpi-magdeburg.mpg.de, haefele@mpimagdeburg.
mpg.de, kienle@mpi-magdeburg.mpg.de, mangold@mpi-magdeburg.mpg.de,
svjatnyj@cs.donntu.ru

Перевод с английского: Макогон В.Н.


Источник: Proc. 17. Symposium Simulationstechnik, ASIM 2003, 16-19 May, Magdeburg, Germany (Hrsg.: Hohmann, R.), SCS Publishing House, Erlangen, pp. 155–160.


 

Аннотация

Симулирующая среда DIVA интегрированный инструмент для моделирования и симуляции отдельных процессов как объектов моделирования. DIVA комбинирует некоторые численные методы в виде симуляции, выполнения и динамической оптимизации с новым графическим интерфейсом (GUI). GUI расширяет функциональность DIVA путем введения графического диалогового контроля симулятора, численных алгоритмов и моделей, интерактивно выводя результаты симулирования. Все эти свойства будут описаны в этой статье. Также будут представлены элементы архитектуры GUI, по причине использования Java и CORBA технологий для имплементации и соединения GUI-приложения в  DIVA–симулятор. Для того, чтобы показать возможности DIVA-GUI на реальной задаче, будет приведен небольшой пример.

Введение

Каждое программное приложение требует комфортного и гибкого интерфейса с пользователем. Тем не менее, в последнее время, эта проблема не была высокоприоритетной при разработке специализированных инструментов  как симулирующая среда. Во время разработки эти инструменты становятся более сложными, их функциональность расширяется и становится более унифицированной. Соответственно растет и количество пользователей. Становится актуальной проблема обучения пользователей. Симулирующая среда DIVA [1, 2, 3] содержит мощные численные алгоритмы, которые позволяют решать задачи моделирования, а также задачи нелинейного анализа и оптимизации системы. Среда содержит мощный инструмент для создания моделей ProMoT [4, 5, 6], который позволяет разрабатывать модели различных процессов, а также библиотеки их компонентов. Тем не менее, динамический симулятор располагал только интерфейсом командной строки. Эта усложняло работу опытных пользователей и обучение новичков.

DIVA-GUI (DIVA's Graphical User Interface) решает большинство из этих проблем. GUI имплементирует оконные интерфейс и обеспечивает диалог контроля DIVA –симулятора для установки численных алгоритмов, просмотра и редактирования переменных модели и выполнения команд DIVA. Эти диалоги позволяют задавать все параметры команд, и пользователь получает контекстную подсказку для каждого параметра. Также все диалоги запоминают все настройки, и пользователь в следующий раз может изменить некоторые параметры. Некоторые диалоги (как редактор блочных переменных) позволяют выполнять множество команд одновременно. История выполненных команд сохраняется автоматически, и пользователь может перезагрузить и перезапустить их.

Также GUI имплементирует поддержку интерактивной прорисовки результатов симулирования в виде 2D-диаграмм. Визуализированные графики могут отбражать следующие зависимости:
- переменной от времени;
- переменной от переменной;
- массива переменных от индексов массива;
- массива переменных от другого массива переменных.
В последних двух случаях кривая текущих значений переменных отображается “on-line” на каждом шаге симулирования. Также GUI предоставляет гибкий редактор для установки свойств панели плоттера и конструирования всех видов зависимостей.

GUI приложение имплементировано на языке JAVA [7] с использованием Swing user interface library [7, 8]. Технология CORBA используется для организации интерактивной связи между GUI приложением и DIVA-симулятором. Эта технология позволяет управлять симулятором удаленно и, в перспективе, будет организовывать интерактивную связь между различными симуляторами, которые работают параллельно на разных компьютерах. В этой статье будет рассмотрена архитектура DIVA-GUI. Множество поддерживаемых функций будет описано в деталях. Также будет рассмотрен небольшой пример для демонстрации возможностей DIVA-GUI на реальном задании.

Архитектура DIVA-GUI

Симулирующая среда DIVA имеет долгую историю, и которая началась  в 1985 году в Штутгарте [1, 2, 3]. Динамический DIVA –симулятор был выполнен на языке программирования Fortran 77 и имеет абсолютно хаотическую сложную внутреннюю архитектуру. Fortran 77 не имеет стандартной кросс-платформенной библиотеки графического пользовательского интрфейса. Что же делать?  Как разрабатывать GUI для симулятора? Сейчас мы решим эти проблемы.

Все традиционные GUI имплементированы в наше время в объектно-ориентированном стиле на языках C++ или Java. Тем не менее, C++ не имеет кросс-платформенной GUI библиотеки. С другой стороны, Java имеет не только библиотеки GUI, а и мощные 2D-графические библиотеки, которые могут быть очень полезными для прорисовки результатов симуляции. Таким образом, Java – лучший вариант для разработки кросс-платформенного GUI для нашей симулирующей среды. Но из-за того, что код Java-приложений представляется виртуальной машиной, очень сложно интегрировать Java и Fortran в одном приложении. Соответственно, мы должны найти способ соединить Java-имплементированный GUI с Fortran-имплементированным DIVA-симулятором. Для этих целей можно использовать технологию CORBA [9]. Но, Fortran не является объектно-ориентированным языком программирования, поэтому CORBA не имеет мэппинга Fortran. В таком случае, нам следует имплементировать CORBA-совместимое расширение на одном из языков программирования, который может быть напрямую интегрирован с приложением Fortran в единый процесс. Очевидно, C++ является лучшим способом решения этой проблемы, потому что это низкоуровневый объектно-ориентированный язык, который поддерживается большим количеством ORB (Object Request Broker), и может предоставить прямой доступ к структурам данных Fortran.

Общая системная архитектура показана на Рисунке 1. Здесь можно увидеть два приложения – DIVA-simulator и GUI-application, которые взаимодействуют через ORB.


Рисунок 1 – общая системная архитектура

Это взаимодействие организовано двумя интерфейсами ISimulator и IPlotter (Рис. 2).

Рисунок 2 – взаимодействие через интерфейсы

Интерфейс ISimulator имплементирован на C++ на стороне DIVA-симулятора и предоставляет операции контроля над симуляцией и доступ к данным модели. Интерфейс IPlotter имплементирован на Java на стороне GUI, и предоставляет интерактивную функциональность прорисовки. Оба интерфейса описаны в IDL (Interface Definition Language) и отражены на C++ и Java соответственно [9, 10].

Архитектура C++-имплементированного расширения CORBA для подключения к DIVA –симулятору показана на Рисунке 3.


Рисунок 3 – архитектура DIVA-симулятора

Приложение может быть запущено пользователем или GUI при открытии модели. После этого инициализируется ISimulator –объект, который обеспечивает прямое взаимодействие с ORB. Существуют также другие сервисные объекты, которые обеспечивают выполнение команд DIVA (CCommandExecutor), сохранение и выдача выполненных команд (CCommandCollector), доступ к структурам данных DIVA (CDivaDataProxy), сохранение информации и сообщений об ошибках (CMessageInfoCollector) и доступ к интерактивному плоттеру. Критические и другие ошибки контролируются механизмами исключений C++ и CORBA. Таким образом, мы видим объектно-ориентированную структуру, которая инкапсулирует сложности Fortran-имплементированного ядра DIVA-симулятора.

На рисунке 4 изображена общая архитектура GUI-приложения.

Рисунок 4 – общая архитектура GUI-приложения

Это полностью объектно-ориентированная система, которая включает более 400 классов и компонент. Все операции имплементированы как действия. Пользователь может выполнить эти операции, используя меню, кнопки инструментов и манипуляции с окнами диалога и плоттера. PlotterInterface обеспечивает  доступ к диалоговым средствам плоттера. DIVA-симулятор вызывает плоттер на каждом шаге интегрирования и посылает новые данные  для прорисовки. Интерактивный плоттер может быть использован в других приложениях.

DIVA-GUI функции

DIVA-GUI упрощает контроль DIVA-симулятора и расширяет его стандартную функциональность. GUI содержит главное окно (Рис. 5) с меню, кнопки инструментов и панель, которая показывает важную статусную информацию DIVA-симулятора. Меню и кнопки инструментов предоставляют следующие функции:
- Initializing of model – для открытия файла модели и для ее инициализации/реинициализации симулятором выполнением команды INIANL [3]. Симулятор запустится автоматически со всеми необходимыми параметрами;
- Command history – позволяет открывать, сохранять и перезапускать историю команд, выполненных ранее;
- Initializing and setting up solver – позволяет выбирать активный решатель и менять его параметры, предоставляет диалоговые средства доступа к командам INISOL, CHANGESOL [3];
- Initializing and setting up integrator  – позволяет выбирать активный интегратор и менять его параметры (Рис. 6), предоставляет диалоговые средства доступа к командам INIINT, CHANGEINT [3];
- Model parameters and variables – позволяет просмотреть и редактировать параметры модели и переменные (Рис. 7);
- Simulating – позволяет выбирать и задавать решатели и интеграторы, а также для построения диаграмм и интегрирования модели (Рис. 8), предоставляет диалоговые средства доступа к команлам SOLVE, INTEGRATE, и т. д. [3];
- Plotting diagram constructor – позволяет создавать и задавать панели плоттера, а также конструировать четыре типа зависимостей для диаграмм: переменная от времени, переменная от переменной, массива от индексов массива, массива от массива (Рис. 9, 10);
- Interactive plotting – позволяет немедленно увидеть результаты симуляции в процессе интеграции (Рис. 11), основано на многократно используемом компонент е JPlotter, который может рисовать любой вид 2D-диаграмм, и может быть использован в других приложениях;
- Controlling the simulator – позволяет запускать, снимать с выполнения и присоединяться к DIVA-симулятору, а также настраивать его среду выполнения.  

Рисунок 5 – главное окно DIVA-GUI

Рисунок 6 – инициализация модели DIVA-GUI

 

 Рисунок 7 – DIVA-GUI, редактор переменных модели

 Рисунок 8 – DIVA-GUI, установка настроек симуляции

 

 Рисунок 9 – DIVA-GUI, конструктор диаграмм, плоттер

 Рисунок 10 – DIVA-GUI, конструктор диаграмм, диаграммы

 


Рисунок 11 – DIVA-GUI, интерактивный плоттер

 

Пример

Для того, чтобы показать преимущества DIVA-GUI, опишем простой пример. Модель представляет собой химический процесс окисления этанола перекисью водорода, катализированный тринитратом железа. Процесс детально описан в [11, 12].

Мы не будем описывать процесс разработки модели. Она уже описана и мы только открываем файл модели “hafp.anl” при помощи команды меню Simulation|[Re]initialize Plant. Она открывает диалог, который показан на Рисунке 6. Мы выбираем файл модели, и нажимаем OK. DIVA-симулятор будет запушен, и модель будет инициализирована. Теперь можно просмотреть и редактировать параметры модели и переменные в диалоге на Рисунке 7, который может быть открыт командой меню Simulation|Block Parameters. Диалог обеспечивает графический интерфейс для команды DIVA CHANGEBLO, но также позволяет изменять множество параметров одновременно. Мы можем немедленно интегрировать модель и получить результаты в стандартной форме DIVA – виде DSF-/DDF-файлов, которые можно использовать в MatLab. Но, в этом случае, мы можем просмотреть результаты только по окончании процесса интегрирования. Очень часто это приносит неудобства, потому что большие модели требуют слишком много времени для интегрирования. Также было бы очень удобно получать результаты интерактивно во время отладки модели. Итак, вместе с GUI у нас есть интерактивный плоттер. Тем не менее, перед использованием плоттера нам следует построить диаграммы. Конструктор диаграмм содержит две субпанели. Первая – для конструирования и настройки панели плоттера (Рис. 9), и вторая – для конструирования диаграмм (Рис. 10). Конструктор может быть открыт командой меню Simulation|Edit Plottings. Мы создаем два плоттера для того, чтобы показать зависимости некоторых переменных и температуры. На странице Axises мы можем задать имена осей и их единицы измерения. После этого мы создаем несколько диаграмм для каждого плоттера, выбрав необходимый вид осей, и выбрав переменные для отображения. После этого можно симулировать модель. Существуют также способы настройки решателя и интегратора. Диалог на Рисунке 8 предоставляет все эти возможности. На странице Edit Plottings можно создать диаграмму, на странице Solving можно настроить решатель, и на странице Integrating можно выбрать и настроить интегратор и время окончания интегрирования. Например, мы изменяем интервал вывода до 2.0 для получения более точных кривых. Время окончания интегрирования мы устанавливаем в 3600 секунд. Потом мы нажимаем OK и GUI выполняет симуляцию. Интерактивное окно плоттера (Рис. 11) будет открыто и мы сможем видеть результаты симуляции интерактивно. На верхнем плоттере мы видим зависимости переменных от времени, а на нижнем плоттере – зависимости переменных от температуры (других переменных).

Заключение и планы на будущее

GUI упрощает работу с симулирующей средой DIVA, обеспечивает комфортный диалог для контроля DIVA-симулятора и расширяет функциональность DIVA с помощью интерактивного плоттера. Но представленное приложение – только начальная версия, которую необходимо расширять. Некоторые из следующих задач будут выполнены в будущем:
- Фиксирование всех ошибок;
- Поддержка всех DIVA-команд;
- ProMoT-подобный иерархический просмотр структуры модели;
- Возможность сохранять/загружать диаграммы;
- Help и руководство пользователя;
- Многопоточность архитектуры DIVA-симулятора;
- Сервис OMG для контроля соединений между симулятором и GUI.

Ссылки:

[1] P. Holl, W. Marquardt, E. D. Gilles. DIVA – A powerful tool for dynamic process simulation. Computers in Chemical Engineering, 12:421-425, 1988
[2] K. D. Mohl, A. Spieker, R. Köhler, E. D. Gilles, M. Zeitz. DIVA – A simulation environment for chemical engineering applications. Informatics, Cybernetics and Computer Science (ICCS-97). Collected Volume of Scientific Papers. Pages 8–15. Donetsk State Technical University, Donetsk, Ukraine, 1997
[3] M. Häfele, A. Kienle, E. Klein, A. Kremling, C. Majer, M. Mangold, A. Spieker, E. Stein, R. Waschler, K. P. Zeyer; User Manual. DIVA – 3.9; Institut für Systemdynamik und Regelungstechnick Universität Stuttgart, Max-Planck-Institut Magdeburg; May 2000, February 23, 2001
[4] F. Tränkle, A. Gerstlauer, M. Zeitz, E. D. Gilles; PROMOT/DIVA: A Prototype of a Process Modeling and Simulation Environment; IMACS Symposium on Mathematical Modelling, 2nd MATHMOD; 1997, February; TU Vienna, Austria; pages 341-346
[5] F. Tränkle, M. Zeitz, M. Ginkel, E. D. Gilles; Promot: A Modeling Tool for Chemical Processes; MCMDS-2000, vol. 6, pages 283-307
[6] M. Ginkel, A. Kremling, F. Tränkle, M. Zeitz, E. D. Gilles; Application of the Process Modeling Tool ProMoT to the Modeling of Metabolic Networks; IMACS Symposium on Mathematical Modeling; 2000, vol. 2; TU Vienna, Austria; pages 525-528
[7] http://java.sun.com
[8] http://developer.java.sun.com/developer/onlineTraining/GUI/Swing1/
[9] http://www.corba.org
[10] http://www.omg.org/gettingstarted/omg_idl.htm
[11] C. Hafke; Theoretische und experimentelle Analyse des dynamischen Verhaltens eines kontinuirlich betriebenen Rührkesselreaktors. PhD thesis, Universität Stuttgart, 1972.
[12] G. Kreysa, O.-U. Langer, V.Pilz; Chemische Reaktionen – Erkennung und Beherrschunng sicherheitstechnisch relevanter Zustände und Abläufe; 35. Tutzing-Symposion vom 10.-13.März 1997 in der Evangelischen Akademie Schloß Tutzing am Starnberger See; DECHEMA, Chemische Technik und Biotechnologie e.V.; Frankfurt am Main, 1997