================================================

Structured Markov Chains Solver  [ SMCSolver ] 
Dario Bini, Beatrice Meini, Sergio Steffe'
bini@dm.unipi.it, meini@dm.unipi.it, steffe@dm.unipi.it
Dipartimento di Matematica "Leonida Tonelli"
Largo Pontecorvo 5
56127 Pisa
Italy

Version 1.1 - Oct 2006


===============================================

 SMCSolver (STRUCTURED MARKOV CHAINS SOLVER)

 SMCSolver is a software tool for solving some classes of Markov Chains commonly 
encountered in queuing theory.

 It includes several algorithms to solve  (following Kendall classification) M/G/1 
and GI/M/1-type Markov chains, and quasi-birth-death (QBD) processes.

 This software is part of a joint work submitted at SMCTOOLS, together with a similar
tool written completely in Matlab (R) by Benny Van Houdt.

 In this package all the numerical routines are written in Fortran 90.

 SMCSolver has a  graphical interface written in C using GTK+, for a more user 
friendly access to the Fortran Routines.

 At the present it runs on Linux Workstations only.

 A more detailed description on the Problems, the Algorithms and the Software can be 
found in the papers submitted to SMCTOOLS  PISA 10 October 2006.

Numeric routines are in Fortran, front end in C, using gtk-2.0

==============================================

 Compiling SMCSolver_1.1

 You will need:

	--A Linux Workstation, complete with usual development programs like
	--GNU gcc, make, and 
	--libraries and header files of  gtk-2, gthread-2.0 ncurses and librt.
		(pkg-config --modversion  gtk+-2.0 will tell you which version
                 of gtk you have)
	--A Fortran 95 Compiler like Lahey/Fujitsu (R) lf95, of Intel (R) Fortran 
             Compiler ifort or GNU g95.
	--BLAS, LAPACK, and LAPACK95 Fortran Libraries, compiled with your Fortran
             Compiler.
	--the SMCSolver_1.1 sources (get the tgz from one of the authors by e-mail)

 Untar the sources, and change the Makefile uncommenting the lines for your Fortran
Compiler and commenting the lines for different Fortran Compilers.

 Remember that the variable FFLIBS must point to your BLAS, LAPACK, LAPACK95 
libraries and modules. If you use the pre-compiled libraries added in one of the
directories only_g95_64, only_ifort_32, only_lahey_32, you must use a matching
compiler, i.e. G95 (GCC 4.0.1 (g95!) Mar 11 2006 on a 64 bit CPU, or  Intel(R) Fortran 
Compiler Version 8.1 on a 32 bit CPU, or Lahey/Fujitsu Fortran 95 Compiler Release 
L6.20c on a 32 bit CPU.

 Remember that usually the linker requires that a library has a name beginning with 
lib (like libblas.a or liblapack.a ) and refers to it with the flags -I (capital i 
- for modules directory), -L (for library directory), -l (lowercase l - for 
libraries, like -lblas -llapack)


	 make 
		will compile the program SMCSolver;
	 make clean  
		will delete modules, objects and the executable.
 	 
	Several warnings from the compilers are normal.
		

 Errors in compilation can arise from several situations:
	
	--at the beginning gcc wil compile the 9 C files, without linking. An error 
at this stage may point to missing headers or non standard gcc on your Linux 
installation, or corrupt source files.

	--then the Fortran Compiler will compile the 15 Fortran90 files. It may fail i
if the Fortran Compiler lines in the Makefile are not correct for your compiler.
	
	--last step, the Fortran Compiler has to link all the objects with both 
static and run time libraries, and this may fail if some library is not available, 
or if some option in Makefile is not correct for your Fortran Compiler.

 The compiled program SMCSolver will need several shared run time libraries to execute
and will not start if some of these are missing. Moreover several icons and graphical 
details of the windows are loaded dinamically from files of the running host by gtk-2.

==============================================

See the file BUGS for the e-mail addresses for reporting any problem.

==============================================

