High Quality 2D/3D Visualization
Based on industry recognized visualization library VTK (Visual Tool Kit) and
OpenGL, MATFOR graphics library has extended the limit of data visualization to
your astonishing imagination. Complicated data exhibition like streamline,
surface plot, isosurface plot, vector plot, and slicing plot can be easily
created in a few lines of programming. MATFOR focuses on optimizing the quality
of visualization for plotting any sort of data. Figure 1 illustrates a series of
isosurface plots that are stacked based on meteorological radar data with
multiple altitudes to form a high quality weather map.
Figure 1: Isosurface Plot
Unlike other graphics libraries such as OpenGL, MATFOR
graphics library provides a user-friendly and simple environment for
implementation. Without going into the trouble of Windows programming nor being
trapped into low-level graphical routines, computed data is visualized by simply
inserting graphical commands with data of interest as the input arguments. No
previous Windows or graphics initialization is needed. Time is saved due to the
design of automatic initialization with default environment setting. As a result,
you may find your visualization pops out on the screen instantly. Example 1
illustrates how the mesh plot procedure is embedded in C++ programs.
Example 1: Mesh Plot embedded in C++
Figure 2: Result of Mesh Plot
Movie-like presentation capability creates a dynamical way of thinking at your
simulation. MATFOR provides recording approach for the presentation. Pictures
displaying on screen can be captured and saved into a movie file in format like
avi (Audio Video Interleave). Such files can be replayed using media players.
Figure 3: Recorded Animation Playing on Media Player
Scientific computing researchers can only debug or do error checking at the
end of each program execution. Chung-Shan Institute of Science and Technology
reveals that when doing CFD (Computational Fluid Dynamics) researches, 70% of
time is spent on post-processing (e.g. data format conversion, data export,
colormap adjustment, view angle adjustment and visualization debugging), because
computed data can only be visualized for examination after huge quantity of data
is processed. Therefore, real-time program monitoring mechanism becomes a
necessity for scientific computing programmers as it aids them in reducing the
time and effort spent on post-processing.
While the efficiency of MATFOR's graphical
procedures is consistently being optimized, MATFOR focuses on enabling a
real-time program monitoring mechanism for debugging purpose. To achieve this
goal, MATFOR provides Graphics Viewer and Data Viewer that display intermediate
data. During execution, you can 1) see how the algorithm runs on the Graphics
Viewer, 2) pause the algorithm and export intermediate data to spreadsheet-like
Data Viewer for further examination. "Real-time pro gram monitoring
mechanism helps us to save at least 60% of developing time in each project",
says Dr. Huang of Chung-Shan Institute of Science and Technology.
Single data typing
MATFOR adopts the simple calling concept that is used in Matlab by introducing
state-of-the-art data type called "mfArray". It is a highly flexible array that
does not require explicit data typing nor dimensioning. Such single data typing
brings simplicity in calling routines, as the one used in Matlab and Visual
mfArray provides dynamic data typing and
dimensioning in C++ environment. Most of our procedures are based on
it. mfArray-based procedures can be easily embedded into your
program without any modification to your source code. It also allows
you to use Matlab-like syntax in C++ environment. Example 2 shows
how mfArray is declared and used.
Example 2: Declaration and Usage of mfArray in C++
The MATFOR Numerical Library is a collection of
mathematical functions, ranging from elementary mathematical functions such as
mfSin, mfCos, and complex arithmetics, to sophisticated functions like
eigenvalues, lu decomposition, matrix inverse and conditioning functions.
Based on Intel?s MKL(math kernel library), the Numerical
Library is promised to deliver high accuracy and high performance. The
Numerical functions are organized into several smaller import library sets ?
elfun, fileio, datafun, elmat, and matfun. Most functions use mfArray as
input and output argument. With the easy-to-use syntax, MATFOR?s functions
fully take the advantage of vector language programming so they can be
called very intuitively.
The Numerical functions adopt the easy-to-call
syntax. It allows you to fully focus on the problem solving without
having to worry about the data structure management and input argument
handling. In addition, MATFOR provides specific numerical functions that
automatically find the optimal way to solve commonly-used numerical
algorithms, such as solving an inverse matrix. This ensures the robustness
and efficiency of the code.
Example 3: Solving Ax = b, x = mfLDiv(A, b)
MATFOR 3 in C++ for Windows:
Platform: Windows 98/NT/2000/Me/XP
Compiler: Borland C++ Builder, Visual C++, Intel C/C++ 7.0 or above
MATFOR 3 in C++ for Linux:
Platform: Linux system with glibc 2.2.5 or 2.2.93 and
the 2.4.X Linux kernel
Compiler: GNC C++, Intel C/C++ 7.0 or above