Main Page > SSD projects >SAGE

SAGE Project


We are elaborating a system of visualization programs synthesis for problems of the numerical simulation. The system is intended for automation of graphics programs development. SAGE is an acronym for the Scientific Application Graphical Environment.


The main goal of the SAGE-project is to create a programming tool, which provides development of visualization programs without explicit coding and does not require any knowledge of graphics and graphical user interface programming from the user. The system is called for to reduce the intellectual efforts and time costs paid by researcher dealing with development of visualization program.


Fast evolution of the computational technologies maintain growth of the numerical simulation popularity. Nowadays, numerical simulation is used in many natural sciences. One peculiarity of such simulation is a production of huge volume of numerical data, which are not convenient for analysis without prior visualization.
It is imortant to have a high-quality view on the modelís behaviour by means of usage of intermediate and final numerical data of modeling. That is why researchers face the necessity of searching and selection of visualization tools.
There are two ways to solve this probem: a) write a specific graphical application by hand; and b) use of an existing programming product.
The first way is not optimal, because the researcher has to know, how to manage and use the integration development environment, window's management libraries (e.g. MFC, OWL) and graphical languages (e.g. OpenGL). Moreover, development of the visualization program is very laborious process including many steps such as design, coding and debugging of a program. In a whole, all these things are as difficult as development of simulation program.
Existent visualization tools (e.g. MATLAB, TechPlot, OpenDX etc.), as a rule, cannot fully satisfy all users' demands. Some of them don't provide creation of stand-alone graphical programs, others have no ability for visualization program GUI editing, thirds impose their own data format and sequence of data-handling etc.
One big problem flows out of all these statements. The problem is about how to get a visualization tool in the simplest and the fastest way.


SAGE-system provides a tool for development of visualizaiton applications with required GUI, with no explicit code writing and no explicit library usage. The main idea of such type of development is concluded in the fact, that process of creation of the visualization program is going on by means of manipulation with the simplest graphical objects and doesn't concern with direct programming. Instead of human, SAGE automatically produces necessary code by itself.
SAGE-system should satisfy completely for the following set of requirements:
Provide static and dynamic visualization of the wide range of types of the scientific data;

  • Produce stand-alone visualization programs;
  • Create and edit GUI for the visualization programs;
  • Should be easy to learn and simple to use;
  • Should be portable between Windows and UNIX operating system's families.
  • Should be scalable, that is should can increase its own functionality using itself.

The software structure

SAGE-system consists of three main components: 1) Fragment Library; 2) LAVA-compiler (LAVA is an acronym for a Language of Assembling Visualization Application); and 3) Graphical Framework.
The Fragment Library is intended for program fragments manipulation (storage, addition, usage etc.). A fragment can be an usual variable, element of the graphical interface (e.g. a button) or some algorithm (e.g. reading data from file). It can be implemented as like a library function (class) or like as a C/C++ code written by user. SAGE provides tools for assembling new program fragments from fragments already existed.
LAVA-language is destined for description of visualization program. One can express all the parameteres and features of graphical application using this language. It is possible to produce C++ code from LAVA-code, and that produced code will be the visualization program. LAVA-compiler provides this translation. The C++-program, produced by LAVA-compiler, is to be compiled by C/C++-compiler and as a result of it an executable file will be generated.
SAGE graphical user interface provides functionality, which was mantioned above. User works directly in a graphical framework, which generate LAVA-program based on his actions.


The first version of the LAVA-compiler is released. It is possible now to develop the visualization programs in this language. The initial content of the fragments' library is created (now, there are 29 fragments there). Stubs for main menu and for basic GUI-components are developed.


Head of project: Malyshkin V. E.
Senior developer: Cherkasov A. V.
Developers: Lavrushenko N. B.