LDP/LDP/howto/docbook/Scientific-Computing-with-G...

1458 lines
60 KiB
XML

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN" "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
<article id="index">
<articleinfo>
<!-- Title -->
<title>Scientific Computing with Free software on GNU/Linux HOWTO </title>
<author>
<firstname>Manoj</firstname>
<surname>Warrier</surname>
<affiliation>
<!-- Valid email...spamblock/scramble if so desired -->
<address><email>m_war (at) users.sourceforge.net</email></address>
</affiliation>
</author>
<author>
<firstname>Shishir</firstname>
<surname>Deshpande</surname>
<affiliation>
<!-- Valid email...spamblock/scramble if so desired -->
<address><email>shishir (at) ipr.res.in</email></address>
</affiliation>
</author>
<author>
<firstname>V. S. </firstname>
<surname>Ashoka</surname>
<affiliation>
<!-- Valid email...spamblock/scramble if so desired -->
<address><email>ashok (at) rri.res.in</email></address>
</affiliation>
</author>
<pubdate>2003-10-03</pubdate>
<!-- Most recent revision goes at the top; list in descending order -->
<!-- All dates specified in ISO "YYYY-MM-DD" format -->
<revhistory id="revhistory">
<revision>
<revnumber>1.2</revnumber>
<date>2004-10-19</date>
<authorinitials>M. W</authorinitials>
<revremark>1 Correction and new additional links</revremark>
</revision>
<revision>
<revnumber>1.1</revnumber>
<date>2004-06-21</date>
<authorinitials>M. W</authorinitials>
<revremark>Updates and evaluated distros</revremark>
</revision>
<revision>
<revnumber>1.0</revnumber>
<date>2003-11-18</date>
<authorinitials>JP</authorinitials>
<revremark>Document Reviewed by LDP.</revremark>
</revision>
<revision>
<revnumber>0.0</revnumber>
<date>2003-10-01</date>
<authorinitials>M. W</authorinitials>
<revremark>first draft proposed</revremark>
</revision>
</revhistory>
<!-- Provide a good abstract; a couple of sentences is sufficient -->
<abstract>
<para>
This document aims to show how a PC running GNU/Linux can be used
for scientific computing. It lists the various available free software
and also links on the world wide web to tutorials on getting started
with the tools.
</para>
</abstract>
</articleinfo>
<sect1 id="preamble">
<title>Preamble</title>
<!-- Legal Sections -->
<sect2 id="copyright">
<title>Copyright and License</title>
<!-- The LDP recommends, but doesn't require, the GFDL -->
<para>
This document, <emphasis>Scientific Computing with free software on GNU/Linux HOWTO</emphasis>,
is copyrighted (c) 2002 by <emphasis>Manoj Warrier</emphasis>.
Permission is granted to copy, distribute and/or modify this document under the terms of the
GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation;
with no Invariant Sections,
with no Front-Cover Texts, and with no Back-Cover Texts.
A copy of the license is available
<ulink url="http://www.gnu.org/licenses/licenses.html#FDL">
here</ulink>
</para>
</sect2>
<sect2 id="disclaimer">
<title>Disclaimer</title>
<para>
No liability for the contents of this document is accepted.
Use of the concepts, examples, links and information is entirely at
your own risk.
There may be errors and inaccuracies, that could damage your system,
waste your time, etc... Proceed with caution, and although
this is unlikely, the author takes no responsibility whatsoever.
</para>
<para>
All copyrights are held by their respective owners, unless
specifically noted otherwise. Use of a term in this document
should not be regarded as affecting the validity of any trademark
or service mark. Naming of particular products, software or
brands should not be seen as endorsements
</para>
<para>
I have not used many of the software applications to which links are provided.
There are simply too many applications that do the same thing,
that one cannot be expected to have used all of them. In a book
on Scientific Computing using GNU/Linux, one would
mention ones favorite tool to carry out a task and describe it in
detail. However this is a howto providing links to various
available free tools for scientific computing and may contain
links to some software that promises much but delivers little
and vice versa.
</para>
</sect2>
<sect2 id="motive">
<title>Motivation</title>
<para>
This howto mainly consists of the links provided at
http://Scilinux.sourceforge.net which has to be disbanded due to a name
conflict. The best alternative seems to be to make it a Linux document
and host it at the LDP site. Another reason is that there seems to be
many free software applications doing the same things. We hope to provide links to
the available software thereby making it easy for the scientific community
to make a choice without spending much time.
</para>
</sect2>
<!-- Give credit where credit is due...very important -->
<sect2 id="credits">
<title>Credits / Contributors</title>
<para>
In this document, I have the pleasure of acknowledging:
</para>
<!-- Please scramble addresses; help prevent spam/email harvesting -->
<itemizedlist>
<listitem>
<para>
Linus Trovalds, Richard M. Stallman and their merry men for
Linux, GNU and also for indirectly broadening various
perspectives which were not really obvious.
</para>
</listitem>
<listitem>
<para>
A host of colleagues and friends from the
<emphasis> Institute for Plasma Research, India </emphasis>
for discussions at various times.
</para>
</listitem>
<listitem>
<para>
Marcel Bose, Ivan Lamouret, K. Scott Hunziker, Livine Christin,
W. Herbert, Simon Pinches and many others for suggesting various
links mentioned in this document.
</para>
</listitem>
<listitem>
<para>
Vasudha my wife for letting me do what I wish and egging me on
with comments like "let us hope that you will finish at least
this project"
</para>
</listitem>
</itemizedlist>
<para>
Shishir and Ashoka are co-authors of this document because such a
collection of links was Shishir's idea and Ashoka is always
contributing by providing links, suggestions and a second point
of view. They will be helping me maintain this HOWTO too.
</para>
</sect2>
<!-- Feedback -->
<sect2 id="feedback">
<title>Feedback</title>
<para>
Feedback is most certainly welcome for this document. Send
your additions, comments and criticisms to the following
email address : <email>m_war at users.sourceforge.net</email>.
</para>
</sect2>
<!-- Translations -->
<sect2 id="translations">
<title>Translations</title>
<para>
No translations yet.
</para>
</sect2>
</sect1>
<!-- rest of document follows... -->
<sect1 id="intro">
<title>Introduction</title>
<para>
GNU/Linux is probably the platform of choice for scientific
computing. There exists a wide variety of high level languages,
debugging tools and other code development tools for
programming, numerical subroutines for solving various types of
equations, plotting and visualization packages, word processing
software which can display equations and figures and in fact parallel
programming software to construct a supercomputer with off the shelf
PC parts and some hardware. This document aims to provide a list
of <emphasis> free software </emphasis> for carrying out the above
tasks and links to tutorials and other documents on how to setup and
use these software applications.
</para>
<para>
This document does not aim to provide links to subject specific free
software available for GNU/Linux systems. It aims to show how
GNU/Linux can be used best to handle scientific computing tasks.
It is hoped that people or institutions with interest in a
specific subject list, compile a list of the free software available
for that subject ... for example see <emphasis>Linux for Astronomy,
Linux for Biotechnology </emphasis> and <emphasis> Linux for
Chemistry </emphasis> at
<ulink url="http://www.randomfactory.com">The Random Factory
</ulink>. Another site with a lot of links (to commercial and
free) scientific software is
<ulink url="http://SAL.KachinaTech.COM">Scientific Applications
on Linux</ulink>. The <ulink url="http://www.gnu.org/directory/science/">
GNU Software Directory</ulink> also has links to many of the links
provided in this howto plus many more topic specific software.
You may also want to check out <ulink url="http://freshmeat.net/browse/97/">
The Science and Engineering</ulink> section at Freshmeat.net.
</para>
<para>
The software links provided are classified into
<itemizedlist>
<listitem> <para>
<ulink url="./devtools.html">Code development tools</ulink>
</para></listitem>
<listitem><para>
<ulink url="./mathpack.html">Mathematics packages</ulink>
</para></listitem>
<listitem><para>
<ulink url="./numlib.html">Numerical subroutines and libraries</ulink>
</para></listitem>
<listitem><para>
<ulink url="./graphvis.html">Graphics and visualization</ulink>
</para></listitem>
<listitem><para>
<ulink url="./systems.html">GNU/Linux Systems</ulink>
</para></listitem>
<listitem><para>
<ulink url="./publish.html">Publishing tools</ulink>
</para></listitem>
<listitem><para>
<ulink url="./database.html">Databases</ulink>
</para></listitem>
<listitem><para>
<ulink url="./lablinux.html">Linux in the Laboratory</ulink>
</para></listitem>
</itemizedlist>
</para>
<para>
Just installing GNU/Linux on your PC makes it a powerful workstation.
The various popular distributions however do not have all the tools
needed to make it the ideal scientific computing machine. This HOWTO
aims to fill in this gap by creating a list of free software useful
for scientific computing. It is assumed that people reading this
document already have a PC with Linux and the GNU utilities installed.
For those who do not have such a setup and want to install GNU-Linux
can check out <ulink url="./GNULinuxWS.html">GNU/Linux Systems</ulink>
for links to documents on installing GNU/Linux, and also on how to get
started using GNU/Linux. Recently there has been an effort by Dirk
Eddelbuettel to create a scientific computing environment
<ulink url="http://dirk.eddelbuettel.com/quantian.html">Quantian</ulink>
which probably is the first GNU-Linux distribution tailored for
Scientists. I checked out the latest release and it has almost
all the packages mentioned in this document and many packages
not mentioned. It is fair to say that if you have any linux distribution
in which the packages are managed by rpms or any debian based system,
you will find pre-compiled binaries of these packages and will not
have to waste much time installing them.
</para>
</sect1>
<sect1 id="devtools">
<title>Code Development Tools</title>
<para>
Code development consists of mainly Programming languages,
Debugging tools, Version Management tools, Compiling tools,
and Integrated Development Environments (IDEs) where all
the above are coupled as a single software application.
</para>
<!-- Programming Languages -->
<sect2 id="ProgLang">
<title>Programming Languages</title>
<para>
Links are provided to various compilers used in Scientific
Computing like FORTRAN, C, C++, Java and more recently
Python.
</para>
<itemizedlist>
<listitem>
<para>
<ulink url="http://gcc.gnu.org/">GNU Compiler Collection
</ulink>:
GNU's project to produce a world class optimizing compiler.
It works on multiple architectures and diverse environments.
Currently GCC contains front ends for C, C++, Objective C,
GNU Fortran-95, Java, and Ada, as well as libraries for these languages
(libstdc++, libgcj,..).
</para>
<para>
For manuals on using the various GCC compilers check out
<ulink url="http://www.gnu.org/software/gcc/onlinedocs/">
The GCC online documentation</ulink>
</para>
</listitem>
<listitem>
<para>
<ulink url="ftp://ftp.gnu.org/gnu/g77/index.html">g77
</ulink>:
The GCC front end for FORTRAN 77. It is a very good FORTRAN77
compiler. It however does not have the -r8 option which compiles
a program as double precision. This could be a good compiler
design philosophy but in many cases gives problems when porting
a code from SUN / DEC / HP workstations onto Linux systems.
The g77 manual is available at
<ulink url="http://gcc.gnu.org/onlinedocs/g77/">The Gcc Online
documentation</ulink> site.
</para>
</listitem>
<listitem>
<para>
<ulink url="http://gcc.gnu.org/fortran/">gfortran</ulink>.
I was happy to receive this link by mail. It was 3 years since I had
migrated to using the GNU C compiler for scientific computing because
there was no "truly free" FORTRAN-95 compiler available then. I thank
Paul Thomas for this link.
</para>
</listitem>
<listitem>
<para>
<ulink url="http://g95.sourceforge.net">g95</ulink>.
gfortran above and g95 are reportedly offshoots from the same CVS tree.
Has an impressive list of programs that compiles and runs using this
compiler.
</para>
</listitem>
<listitem>
<para>
<ulink url="http://www.llnl.gov/casc/Overture/henshaw/install/node6.html">
fort77 and f2c</ulink>:
fort77 is a perl program which invokes the f2c command
(a Fortran to C translator) transparently, so it can
be used just like a real Fortran compiler. Fort77 can
be used to compile Fortran, C and assembler code and
can link the code with f2c libraries. If you install
fort77, you'll also need to install the f2c package.
This does not have the "-r8" problem. You can download
fort77 and f2c from the above link.
</para>
</listitem>
<listitem>
<para>
<ulink url="http://lush.sourceforge.net">lush</ulink>:
An object-oriented programming language, which combines the flexibility
of an interpretive language, with the efficiency of a compiled language.
It has full interfaces to numerical libraries (GSL, LAPACK, BLAS),
graphics libraries (OpenGL), which allows creation of graphics and 3D
animations and many other features that sound too good to be
true. I have not yet tried this out, but it sounds very promising.
</para>
</listitem>
<listitem>
<para><ulink url="http://www.python.org/topics/scicomp/">
Scientific Python</ulink>:
You may want to explore
<ulink url="http://www.python.org">Python</ulink> for your
scientific computing needs. Python is an interpreted,
interactive, object-oriented programming language.
It has a number of extensions for numerics, plotting,
data storage and combined with Tk lets you develop very
good GUIs for your codes. The most exciting aspect is that
it simplifies programming because it has modules for almost
anything (vectors, tensors, transformations, derivatives,
linear algebra, Fourier transforms, statistics, etc ...) are
available. You can also wrap C and Fortran libraries from
Python. Finally if you want to write a numerical scheme of
your own you may find that it is simpler in Python.
There are also interfaces to netCDF (portable binary files),
MPI and BSPlib (parallel programming).
</para>
<para>
You can further explore Python for Scientific computing here:
</para>
<itemizedlist>
<listitem>
<para>
<ulink url="http://starship.python.net/crew/hinsen/scientific.html">
Scientific-Python</ulink>:
A collection of modules for scientific computing on Python.
All the necessary modules can be downloaded as either a tar file
or an RPM file from here. The maintainer Konrad HINSEN also has
a nice tutorial on
<ulink url="http://starship.python.net/crew/hinsen/tutorial.ps">
Scientific Computing in Python</ulink>.
</para>
</listitem>
<listitem>
<para>
<ulink url="http://www.scipy.org">SciPy</ulink> An open source
library of scientific tools for Python. It includes modules for
graphics and plotting, optimization, integration, special
functions, signal and image processing, genetic algorithms,
ODE solvers, etc.
</para>
</listitem>
</itemizedlist>
</listitem>
</itemizedlist>
</sect2>
<!-- Debugging tools -->
<sect2 id="DebugTool">
<title>Debugging Tools</title>
<para>
In this section links are given to mainly debugging tools for GCC and
FORTRAN. I understand that python has a debugging module built in though I
have not used it. The purpose of a debugger is to allow you to see what is
going on inside a program while it executes or what the program was doing
when/if it crashed.
</para>
<itemizedlist>
<listitem>
<para><ulink url="http://www.dsm.fordham.edu/~ftnchek">Ftnchek:</ulink>
A FORTRAN checker designed to detect errors in a Fortran
program that a compiler usually does not. Therefore it is best
to run ftnchek on your FORTRAN programs after it has compiled
without errors. Its purpose is to assist the user in finding
semantic errors. Semantic errors are legal in the Fortran
language but are wasteful or may cause incorrect operation.
An on-line <ulink url="http://www.dsm.fordham.edu/~ftnchek/html/">
manual</ulink> is available. This project is looking for volunteers
to bringing ftnchek up to the Fortran 90 standard.
</para>
</listitem>
<listitem>
<para> <ulink url="http://www.gnu.org/software/gdb/gdb.html">gdb
</ulink>:
All programs written in the languages supported by GCC can be
debugged using <emphasis>gdb</emphasis>, an excellent interactive,
command line debugger. You can compile your programs using a -g option
which then compiles your code with debugging information inserted
into the executable. It can start your programs, stop your programs
on specified conditions and at specified locations, examine what
happened when your program stops. In a large code with multiple
cascading calls to various functions it can back trace the function
calls. You can also
<ulink url="http://sources.redhat.com/gdb/current/onlinedocs/">Download
the document</ulink> <emphasis>Debugging with GDB</emphasis> and
a quick reference card.
</para>
</listitem>
<listitem>
<para> <ulink url="ftp://ftp.x.org/contrib/utilities/">xxgdb:</ulink>
It is a front end to the gdb debugger. Useful for beginners
to gdb as it lists out the whole gdb commands as buttons with a area
for viewing source on which one can include break points, etc by a
click of the mouse, and another area for viewing the debugging results.
</para>
</listitem>
<listitem>
<para> <ulink url="http://www.gnu.org/software/ddd/ddd.html">DDD:
</ulink>
The GNU Data Display Debugger, GNU DDD, is a graphical front-end for
command-line debuggers such as GDB, DBX, WDB, Ladebug, JDB, XDB, the
Perl debugger, or the Python debugger. Besides ``usual'' front-end
features such as viewing source texts it also has a good interactive
graphical data display, where data structures are displayed as graphs.
Follow this link for a <ulink url="http://www.gnu.org/manual/ddd/">
DDD manual</ulink> in postscript / HTML / PDF format.
</para>
</listitem>
</itemizedlist>
</sect2>
<!-- Version Control Tools -->
<sect2 id="VCT">
<title>Version Control Tools</title>
<para>
It will be worth your while investing some time in learning to use
one of the version control tools below (cvs is what I use ..) if you
are into any serious code development.
</para>
<itemizedlist>
<listitem>
<para> <ulink url="http://www.cvshome.org/dev/codelinux.html">
Concurrent Versions System </ulink>:
CVS is one of the most popular version control systems running on the
Linux operating system. Popular Linux projects like Apache, EGCS, GIMP,
and others are using CVS to coordinate their efforts ... This is how
the URL linked above describes their effort.
</para>
<para>
A tutorial on CVS is available at <ulink url="http://www.gentoo.org/doc/cvs-tutorial.html">
Gentoo Linux Documentation</ulink> and a free CVS book is available
<ulink url="http://cvsbook.red-bean.com/">here</ulink>
</para>
</listitem>
<listitem>
<para> <ulink url="http://www.xcf.berkeley.edu/~jmacd/prcs.html">
Project Revision Control System </ulink>:
PRCS, the Project Revision Control System, is the front end to a set of
tools that (like CVS) provide a way to deal with sets of files and
directories as an entity, preserving coherent versions of the entire set.
PRCS was designed primarily by Paul N. Hilfinger, with input and
modifications by Luigi Semenzato and Josh MacDonald. PRCS is written and
maintained by Josh MacDonald. Its purpose is similar to that of SCCS,
RCS, and CVS, but (according to its authors, at least), it is much simpler
than any of those systems. This page is where information on the latest
developments in PRCS can be found. </para>
</listitem>
<listitem>
<para><ulink url="http://www.cryon.com/gbuild/">Gbuild</ulink> :
gbuild is a script written in the Bourne shell language to simplify
package maintenance by allowing you to automate code update from CVS,
compilation, building tar/rpms/srpms of your package. some external
scripts which certain functions of gbuild depend on are written in Perl.
gbuild is released under the GPL.
</para>
</listitem>
</itemizedlist>
</sect2>
<sect2 id="IDE">
<title>Integrated Development Environments</title>
<para>
Integrated development environments (IDEs) can be very useful for
building code and ideally come with all the above tools (i.e a compiler,
a debugger and a version control tool). In addition to that IDEs also
usually provide a makefile generator, documenting help, online help
manuals, etc.
</para>
<itemizedlist>
<listitem>
<para> <ulink url="http://www.kdevelop.org/"> Kdeveloper </ulink>:
A easy to use C/C++ IDE (Integrated Development Environment) for Linux.
It supports KDE/Qt, GNOME, plain C and C++ projects. This site has a lot
of documentation ..... a highly browsable site for software developers.
Specifically, KDevelop manages or provides:
</para>
<para>
All development tools needed for C++ programming like Compiler,
Linker, automake and autoconf; KAppWizard, which generates complete,
ready-to-go sample applications; Class generator, for creating new
classes and integrating them into the current project; File management
for sources, headers, documentation etc. to be included in the
project; The creation of User-Handbooks written with SGML and the
automatic generation of HTML-output with the KDE look and feel;
Automatic HTML-based API-documentation for your project's classes with
cross-references to the used libraries; Internationalization support
for your application, allowing translators to easily add their target
language to a project;
KDevelop also includes WYSIWYG (What you see is what you get)-creation
of user interfaces with a built-in dialog editor; Debugging your
application by integrating KDbg; Editing of project-specific pixmaps
with KIconEdit; The inclusion of any other program you need for
development by adding it to the "Tools"-menu according to your
individual needs.
</para>
</listitem>
<listitem>
<para> <ulink url="http://vdkbuilder.sourceforge.net/">VDKbuilder</ulink>:
VDKbuilder is a tool that helps programmers in constructing GUI interfaces,
editing, compiling, linking, and debugging within an integrated environment.
Using VDKBuilder dramatically reduces developing time since all code related
to GUI construction and signal processing is automatically generated,
maintained and updated. It is distributed under the GNU Public License.
Visit the site for downloading the software.
</para>
</listitem>
</itemizedlist>
</sect2>
</sect1>
<sect1 id="mathpack">
<title>Mathematics Packages</title>
<para>
All the links below are free high level languages and Mathematics Packages
for Scientific Computation on Linux. These packages are usually like a
Mathematical Laboratory in which numerical computations can be done and
usually have their own interpreted language. They either link to a
popular (free) plotting package or have their own graphics and plotting
capability. They also provide capability to I/O files and interface
with other programming languages like C, C++, Fortran, etc ... Now a days
some of them have parallel programming capabilities. I have not included
<ulink url="http://www.mupad.de/">MuPAD</ulink>, a good symbolic math
package, since is not really free. Check out if their most
<ulink url="http://www.sciface.com/personal.shtml"> free license</ulink>
suits you.
</para>
<itemizedlist>
<listitem> <para> <ulink url="http://www.octave.org/">Octave</ulink>:
An excellent package for numerical computations.
It uses gnuplot for plotting
and has a online help. It is also easily extensible (i.e. new functions,
procedures can be written) either using its own language or by using
dynamically loadable modules written in C, C++, Fortran or other languages.
An extensive manual is available
<ulink url="http://www.octave.org/doc/octave_toc.html">here</ulink>.
You can get a GNOME based front end for it
<ulink url="http://freshmeat.net/projects/goctave/">here</ulink>.
It is distributed under the GNU Public License.
</para>
</listitem>
<listitem>
<para>
<ulink url="http://www-rocq.inria.fr/scilab/">Scilab</ulink>:
Another superb package numerical computations having a good user interface
and a very good online click-able help. Its plotting and graphic capabilities
are also very impressive. It also provides for easy interfacing with Fortran
and C. It has its own
<ulink url="http://www-rocq.inria.fr/scilab/license.txt">free license</ulink>.
</para>
</listitem>
<listitem>
<para> <ulink url="http://wuarchive.wustl.edu/languages/yorick/doc/index.html">
Yorick</ulink>:
Yorick is a fast, interpreted language, designed for scientific computing and
numerical analysis. The syntax is similar to C, but the variables need not
be declared. It offers an interactive graphics package based on X windows.
X-Y plots, quadrilateral meshes, filled meshes, cell arrays, and contours are
supported. You can embed compiled routines in Yorick to solve problems for
which the interpreter is too slow. It is also useful as a pre and post
processor for large physical simulation programs. A tutorial like manual
is available
<ulink url="http://wuarchive.wustl.edu/languages/yorick/doc/manual/yorick.html">
here</ulink>.
Yorick is open source software,
<ulink url="http://wuarchive.wustl.edu/languages/yorick/doc/copyright.html">
copyright</ulink> of the Regents of the University of California.
</para>
</listitem>
<listitem>
<para>
<ulink url="http://algae.sourceforge.net/">Algae</ulink>:
As the above link describes it, Algae is a interpreted language for
numerical analysis. It was developed as a fast and versatile
tool, capable of handling large problems. Algae consists of the programming
language Algae, and algae, the interpreter.
Its features include speed (generally much faster than octave, RLaB
and Scilab), storage of sparse arrays and a code profiling capability
(to check where your code spends its time). A user manual is available
<ulink url="http://algae.sourceforge.net/algae.html">here</ulink>.
It is distributed under the GNU General Public License.
</para>
</listitem>
<listitem>
<para> <ulink url="http://yacas.sourceforge.net/">YACAS</ulink>:
As the above link describes it, "YACAS is an easy to use, general purpose
Computer Algebra System, a program for symbolic manipulation of
mathematical expressions. It uses its own programming language designed for
symbolic as well as arbitrary-precision numerical computations". Links to
documentation (user manual, tutorial, etc ..) is available
<ulink url="http://yacas.sourceforge.net/manindex.html">here</ulink>.
It is distributed under the GNU General Public License.
</para>
</listitem>
<listitem>
<para>
<ulink url="http://rlab.sourceforge.net/">RLAB</ulink>:
The above link describes it thus, "Rlab is an interactive, interpreted
scientific programming environment. Rlab is a very high level language
intended to provide fast prototyping and program development, as well
as easy data-visualization, and processing". It is distributed under the
GNU General Public License. The author Ian Searle has written an article in
<ulink url="http://www.linuxjournal.com/">The Linux Journal</ulink> titled
<ulink url="http://rlab.sourceforge.net/lj/lj.html">An Introduction to Rlab
</ulink>
which as he reminds us, is a bit dated, and a
<ulink url="http://rlab.sourceforge.net/html/rlab-ref.html">
Reference Manual</ulink> is also available.
</para>
</listitem>
<listitem>
<para> <ulink url="http://maxima.sourceforge.net">
Maxima</ulink>:
Maxima is a symbolic computation program. The above link describes it
as follows, "Maxima is a descendant of DOE Macsyma, which had its origins
in the late 1960s at MIT. It is the only system based on that effort still
publicly available and with an active user community, thanks to its open
source nature. Macsyma was the first of a new breed of computer algebra
systems, leading the way for programs such as Maple and Mathematica. This
particular variant of Macsyma was maintained by William Schelter from 1982
until he passed away in 2001. In 1998 he obtained permission to release
the source code under GPL".
</para>
</listitem>
<listitem> <para>
<ulink url="http://www.r-project.org/">The R-Project for Statistical Computing</ulink>:
R is a language and environment for statistical computing and graphics.
It provides a large collection of tools for statistical analysis of large
arrays of data and also graphical facilities. R is also a complete effective
programming language. For computationally intensive tasks, C, C++ and Fortran
code can be linked and called at run time. A comprehensive set of manuals
dealing with installation, introduction, writing extensions, etc ... is
available <ulink url="http://cran.r-project.org/manuals.html">here</ulink>.
It is distributed under the GNU General Public License.
</para>
</listitem>
<listitem>
<para>
<ulink url="http://www.fis.unipr.it/%7Estefanw/gtybalt.html">gTybalt</ulink>:
gTybalt is a step towards a free computer algebra system. It is object
oriented, allowing symbolic calculations within C++. It is efficient,
in the sense that solutions developed with gTybalt can be compiled with
a C++ compiler and executed independently of gTybalt. The mathematical
formulae are visualized using TeX fonts and can easily be converted to
LaTeX. I did not realize that it has good graphic capabilities till I
checked out the gTybalt
<ulink url="http://www.fis.unipr.it/%7Estefanw/gtybalt/gtybalt.html">manual</ulink>.
It is distributed under the GNU General Public License.
</para>
</listitem>
<listitem>
<para>
<ulink url="http://www-swiss.ai.mit.edu/%7Ejaffer/JACAL.html">JACAL</ulink>:
As the link above describes it, " JACAL is an interactive symbolic mathematics
program. JACAL can manipulate and simplify equations, scalars, vectors,
and matrices of single and multiple valued algebraic expressions containing
numbers, variables, radicals, and algebraic differential, and holonomic
functions".
</para>
</listitem>
<listitem>
<para>
<ulink url="http://www.gnu.org/software/bc/bc.html">bc</ulink>:
bc is an arbitrary precision numeric processing language. It supports
interactive execution of statements. Click here for a <ulink url="http://www.gnu.org/manual/bc/index.html">Manual</ulink> in a variety of formats.
It is GNU software and is distributed under the GNU General Public License.
</para>
</listitem></itemizedlist>
</sect1>
<sect1 id="numlib">
<title>Numerical Methods and Libraries</title>
<para>
The best thing that could happen for scientific computing with free
software on GNU/Linux is the GNU Scientific Library
<ulink url="http://sources.redhat.com/gsl">GSL</ulink>.
It however has source code only in C and people who use FORTRAN
will find that a let down. Pouncing on this opportunity it is
recommended that GSL is another reason (in addition to the GCC
C compiler, coupled with the advantages of C programming)
for starting to learn to use C. In addition to this,
the two best source code repositories for Numerical Methods and
libraries are <ulink url="http://www.netlib.org">Netlib</ulink>
and <ulink url="http://math.nist.gov/">GAMS</ulink>.
There are new numerical packages being developed outside the usual
"write a FORTRAN program, get a numerical subroutine from INTERNET
for solving the numerics" concepts. The merits and demerits of this
approach are debatable, but there exist more options like
<ulink url="http://oonumerics.org/oon">Object Oriented Numerics</ulink>
GSL and <ulink url="http://www.ginac.de/">GiNaC</ulink> which are
exciting developments.
</para>
<sect2 id="Repositories">
<title>Repositories</title>
<itemizedlist>
<listitem>
<para>
<ulink url="http://www.netlib.org/">Netlib</ulink>:
An amazing amount of free source code for Numerical Methods. Netlib
is THE source code repository which contains an innumerable
amount of source code for Numerical Methods. It also has an active
<ulink url="http://www.netlib.org/utk/discus">discussion forum
</ulink> wherein you can submit your queries and stay posted for
help. Netlib also has a <ulink url="http://www.nhse.org/ptlib">
Parallel Tools Library </ulink> and a search by subject.
</para>
</listitem>
<listitem>
<para>
<ulink url="http://math.nist.gov/">
GAMS: Guide to Available Mathematical Software</ulink>
GAMS has a very useful search using which one can search for
keywords (example: ``diffusion'' to search for a diffusion equation
solver). However the browse by package at GAMS reveals that a lot of
the software they provide is a link to the netlib repository.
</para>
</listitem>
<listitem>
<para>
<ulink url="http://oonumerics.org/oon">Object Oriented Numerics</ulink>
A site devoted to object oriented numerics. It has a Mailing list,
Extensive Links to freely available libraries (OO of course)
and freely available tools for object oriented scientific computing.
</para>
</listitem>
<listitem>
<para>
<ulink url="http://sources.redhat.com/gsl">GNU Scientific Library</ulink>
The GNU Scientific Library (GSL) is a collection of numerical routines
written from scratch in C. It provides an Applications Programming
Interface (API) for C programmers and also allows wrappers to be written
for very high level languages. It covers a wide range of numerical
computing topics, has a good manual, is widely portable and is distributed
under the GNU General Public License.
</para>
</listitem>
<listitem>
<para>
<ulink url="http://www.ginac.de/">GiNaC</ulink>
GiNaC is designed to allow the creation of software which need symbolic
manipulations embedded in them. It extends C++ by a set of algebraic
capabilities and is recursively named for GiNaC is not a Computer Algebra
system. It is distributed under the terms and conditions of the GNU
general public license (GPL).
</para>
</listitem>
</itemizedlist>
</sect2>
<sect2>
<title>Other topic specific numerical libraries</title>
<itemizedlist>
<listitem>
<para>
<ulink url="http://www.fftw.org/">FFTW</ulink>
FFTW is a collection of fast C routines for computing the Discrete
Fourier Transform in one or more dimensions. It includes complex,
real, and parallel transforms, and can handle arbitrary array sizes
efficiently. This package includes both the double- and
single-precision FFTW uniprocessors and the threads libraries.
</para>
</listitem>
<listitem>
<para>
<ulink url="http://www.netlib.org/lapack">LAPACK</ulink>
LAPACK (Linear Algebra PACKage) is a standard library for numerical
linear algebra. LAPACK provides routines for solving systems of
simultaneous linear equations, least-squares solutions of linear
systems of equations, eigenvalue problems, and singular value
problems. LAPACK is coded in Fortran77 and is built with egcs.
It is well documented and widely used (and therefore widely tested).
</para>
</listitem>
<listitem>
<para>
<ulink url="http://www.nersc.gov/~xiaoye/SuperLU">SuperLU</ulink>
SuperLU is a general purpose library which performs an LU decomposition
for the direct solution of large, sparse, non-symmetric systems of linear
equations on high performance machines. Its written in C and is callable
from either C or Fortran.
</para>
</listitem>
<listitem>
<para>
<ulink url="http://www.caam.rice.edu/software/ARPACK/">ARPACK
</ulink>
ARPACK is a set of Fortran77 subroutines designed to solve large scale
eigenvalue problems. A <ulink url="http://www.caam.rice.edu/software/ARPACK/UG/ug.html#ARPACK">Users Guide
</ulink> is available. The above link also gives information about a
parallel version of ARPACK - PARPACK and a object oriented version
ARPACK++.
</para>
</listitem>
<listitem>
<para>
<ulink url="http://icemcfd.com/cfd/CFD_codes.html">
Computational Fluid Dynamics codes</ulink>
This link contains a comprehensive listing of public domain, shareware
and freeware Computational Fluid Dynamics codes links with a description
of each CFD code.
</para>
</listitem>
</itemizedlist>
</sect2>
</sect1>
<sect1 id="graphvis">
<title>Graphics and Visualization</title>
<itemizedlist>
<listitem>
<para>
<ulink url="http://www.gnuplot.info">Gnuplot</ulink>
Gnuplot is a command-line driven interactive function plotting
utility. It handles both curves (2 dimensions) and surfaces (3
dimensions). Surfaces can be floating in the 3-d coordinate space,
or as a contour plot. For 2-d plots, there are also many plot
styles, including lines, points, lines with points, error bars,
and impulses. Graphs may be labeled with arbitrary labels and
arrows, axes labels, a title, date and time, and a key. It has
multiple plotting capabilities too. It allows saving the graphs in
various formats which can be included in word processors.
It can be used to generate publication quality plots.
</para>
</listitem>
<listitem>
<para>
<ulink url="http://ngwww.ucar.edu"> NCAR Graphics </ulink>
A very popular graphics package which is very well documented and widely
used. It provides basic ingredients for creating complex plots as
functions / routines that can be called from Fortran and C. There is
a contributed programming interface to the NCAR Graphics package:
NCL (NCAR Command Language). The programming interfaces provide access
to complex graphics utilities like contouring, world map projections,
and velocity vectors. For the most part, the C interface is built on
top of the Fortran interface... It is distributed under the GNU public
license. Click <ulink url="http://ngwww.ucar.edu/ngdoc/ng4.2">here</ulink>
for going to the documentation of all its various components.
</para>
</listitem>
<listitem>
<para>
<ulink url="http://www.opendx.org">OpenDX</ulink>
A very good Open Source Data eXplorer. It can handle large amounts of data
and creates great visualizations. It was the tool I stumbled upon when
I wanted a free graphics routine to make 3-D plots and zoom-in, rotate,
and really eXplore the output Data from my codes. The downside is that
compiling from source is really challenging and getting started is a
difficult. However it has excellent documentation distributed with it
and once I started off it was the best tool I have ever used.
</para>
</listitem>
<listitem>
<para>
<ulink url="http://gri.sourceforge.net">Gri:</ulink>
It is a language for scientific graphics programming. The claim that Gri
is similar to LaTeX in the sense that both provide extensive power as a
reward for tolerating a learning curve seems exciting and I for one want
to check this out!! Check out the following
<ulink url="http://www.linuxjournal.com/article.php?sid=3743">article</ulink>
in The Linux Journal. Go to the gri home page if you are now impressed by
it and check out download info and manuals.
</para>
</listitem>
<listitem>
<para>
<ulink url="http://mayavi.sf.net">MayaVi:</ulink>
A scientific data visualizer written in Python. It is distributed under the
<ulink url="http://www.opensource.org/licenses/bsd-license.html">BSD
license</ulink>. The screenshots look promising. Check out the above link
for more details.
</para>
</listitem>
<listitem>
<para>
<ulink url="http://www.astro.caltech.edu/~tjp/pgplot">PGPLOT:</ulink>
PGPLOT is a Fortran 77 or C callable subroutine package for drawing
scientific 2D and Simple 3D plots. One can call these routines during
runtime and redirect the output to a variety of devices at run time.
It is well documented and the full documentation is available at the
above site. It is Free for Non-Commercial Use. A user manual is available
online at <ulink url="http://www.astro.caltech.edu/~tjp/pgplot/contents.html">PGPLOT
Users Manual</ulink>
</para>
</listitem>
<listitem>
<para>
<ulink url="http://plplot.sourceforge.net/">PLplot:</ulink>
This is a library of scientific plotting functions that can be called from
C, C++, FORTRAN, TCL, PYTHON. PLplot features as described in the above link
are, "It can be used to create standard x-y plots, semilog plots,
log-log plots, contour plots, 3D plots, mesh plots, bar charts and pie charts.
Multiple graphs (of the same or different sizes) may be placed on a single
page with multiple lines in each graph. There are almost 2000 characters
in the extended character set. This includes four different fonts, the
Greek alphabet and a host of mathematical, musical, and other symbols.
A variety of output devices are supported and new devices can be easily
added by writing a small number of device dependent routines". To download
click
<ulink url="http://sourceforge.net/project/showfiles.php?group_id=2915">
here </ulink>.
</para>
</listitem>
<listitem>
<para>
<ulink url="http://plasma-gate.weizmann.ac.il/Grace/">Grace</ulink>
Grace is a WYSIWYG 2D plotting tool for the X Window System and Motif.
Grace runs on practically any version of Unix. Grace is a descendant of
ACE/gr, also known as Xmgr. It is lisenced under the GNU public license.
This link also has a tutorial and download information.
</para>
</listitem>
<listitem>
<para>
<ulink url="http://scigraphica.sourceforge.net/">SciGraphica
</ulink>
SciGraphica is a application for data analysis and technical graphics.
It fully supplies plotting features for 2D, 3D and polar charts. The
aim is to obtain a fully-featured, cross-platform, user-friendly,
self-growing scientific application. It is free and open-source,
released under the GPL license.
</para>
</listitem>
<listitem>
<para>
<ulink url="http://www.gnu.org/software/plotutils/plotutils.html">
Plotutils</ulink>:
The GNU plotutils package contains software for both programmers and
technical users. Its centerpiece is libplot.a powerful C/C++ function
library for exporting 2-D vector graphics in many file formats, both
vector and raster. It can also do vector graphics animations.
Besides libplot, the package contains command-line programs for
plotting scientific data. Many of them use libplot to export graphics.
</para>
</listitem>
<listitem>
<para>
<ulink url="http://www.dislin.de">DISLIN</ulink>
DISLIN is a high-level plotting library for displaying data as curves,
polar plots, bar graphs, pie charts, 3D-color plots, surfaces, contours
and maps.
</para>
</listitem>
<listitem>
<para>
<ulink url="http://ImLib3d.sourceforge.net">ImLib3D</ulink>
ImLib3D is an open source C++ library for 3D (volumetric) image processing.
It contains most basic image processing algorithms, and some more
sophisticated ones. It comes with an optional viewer that features
multi-planar views, animations, vector field views and 3D (OpenGL)
multi-planar.
</para>
</listitem>
<listitem>
<para>
<ulink url="http://ptolemy.eecs.berkeley.edu/java/ptplot">Ptplot</ulink>:
Ptplot is a 2D data plotter and histogram tool implemented in Java.
Ptplot can be used as a standalone applet or application, or it can be
embedded in your own applet or application.
</para>
</listitem>
</itemizedlist>
</sect1>
<sect1 id="systems">
<title>Programming systems for GNU/Linux</title>
<para>
This section deals with links to tutorials and documents for installing
Linux on a PC, getting started with Linux, and then going a step further
-- to optimize your PC for processing power, using multiple processors
(Symmetric Muliti Processing - SMP); making a cheap, upgradeable
Supercomputing Linux cluster and finally links to software to do parallel
programming on Linux.
</para>
<sect2 id="GNULinuxWS">
<title>The GNU/Linux Workstation</title>
<para>
As with most documentation related to GNU/Linux,
<ulink url="http://tldp.org">the Linux Documentation project's</ulink>
home page is a priceless source. You might first want to read
<ulink url="http://tldp.org/HOWTO/Installation-HOWTO/index.html">
The Linux Installation HOWTO</ulink>. For those who want to install
Linux along with Windows might want to browse through
<ulink url="http://www.tldp.org/HOWTO/Linux+Windows-HOWTO/index.html">
The Linux + Windows HOWTO</ulink>. When installing Linux make sure
that you choose to install all documentation. After installing Linux,
a good, comprehensive document to getting started with using Linux is
<ulink url="http://rute.sourceforge.net">The Rute Users Tutorial and
Exposition</ulink> which is a beginners guide to Linux and UNIX like
systems. I'd like to give a less intimidating (size-wise) link to a
small beginners guide, but U will find this useful after taking the
plunge. You might also want to go through <ulink url="http://www.tldp.org/LDP/sag/index.html">The Linux System
Administrator's Guide</ulink> and to check out <ulink url="http://www.tldp.org/LDP/lame/LAME/linux-admin-made-easy/index.html">
The Linux Administration Made Easy (LAME) guide</ulink>
It attempts to describe day-to-day administration and maintenance
issues commonly faced by Linux system administrators.
</para>
</sect2>
<sect2 id="PPSMP">
<title>Parallel Processing and Symmetric Multiprocessing:
Supercomputing</title>
<para>
It is possible to get large volume number crunching without
spending millions of rupees on a supercomputer. You only need
to link together (by some high speed network) the requisite
number of CPUs, with GNU/LINUX as the underlying OS. Add
some freely available message passing software and a effective
parallel processing number crunching machine is made. Such
clusters are called "Beowulf clusters". The other advantages
of such a cluster other than building costs is, up-gradation
costs are minimal. The two best resources for Linux cluster
builders are
<itemizedlist>
<listitem>
<para> <ulink url="http://www.beowulf.org">The Beowulf
Project home page </ulink> and </para>
</listitem>
<listitem> <para>
<ulink url="http://www.extremelinux.org">The Extreme
Linux Project</ulink>
</para>
</listitem>
</itemizedlist>
These sites are upgraded frequently with useful information
for cluster builders.
</para>
<sect3 id="ppdocs">
<title>Parallel computing document links</title>
<para>
You will also want to read this excellent article on
<ulink url="http://freshmeat.net/articles/view/458/">Linux
Clustering Software</ulink> (and the large variety of links
it provides) by Joe Greenseid. I hope to go through the links
and include them subsequently in this HOWTO.
</para>
<para>
Other free document links for parallel processing are:
</para>
<itemizedlist>
<listitem>
<para>
<ulink url="http://www.ibiblio.org/pub/Linux/docs/HOWTO/Beowulf-HOWTO">
The Beowulf Howto </ulink>:
This document introduces the Beowulf Supercomputer architecture
and provides background information on parallel programming,
including links to other more specific documents, and web pages.
But, before that for an understanding of parallel processing and
Symmetric multiprocessing on Linux, check out the following:
</para>
</listitem>
<listitem>
<para>
<ulink url="http://www.ibiblio.org/pub/Linux/docs/HOWTO/Parallel-Processing-HOWTO">
The Parallel Processing on Linux HOWTO</ulink>
</para>
</listitem>
<listitem>
<para>
<ulink url="http://www.ibiblio.org/pub/Linux/docs/HOWTO/SMP-HOWTO">
The Symmetric Multiprocessing HOWTO</ulink>
</para>
</listitem>
</itemizedlist>
</sect3>
<sect3 id="PPSW">
<title> Parallel processing software for Linux </title>
<para>
Now after reading the above documents, you have an idea of parallel
processing. Parallel program libraries are the core of parallel processing
on a Linux cluster. There are various free implementations of parallel
processing libraries. Since parallel processing is all about performance,
these libraries have some very nice functional tools to analyze your parallel
program performance. Given below is a set of links to these parallel
program libraries and tools.
</para>
<itemizedlist>
<listitem>
<para>
<ulink url="http://www-unix.mcs.anl.gov/mpi">
Message Passing Interface</ulink>:
MPI is a standard specification of message passing libraries. The above
document gives a lot of links to documents on the standard, etc.. A MPI
implementation for Linux
<ulink url="http://www-unix.mcs.anl.gov/mpi/mpich">mpich</ulink> is also
available at that site. There are a lot of documents for
<ulink url="http://www-unix.mcs.anl.gov/mpi/tools.html">Learning to use MPI
</ulink>.
</para>
</listitem>
<listitem>
<para>
<ulink url="http://www.lam-mpi.org/">Local Area Multicomputer
- LAM</ulink>:
LAM (Local Area Multicomputer) is an MPI programming environment and
development system for heterogeneous computers on a network.
With LAM, a dedicated cluster or an existing network computing
infrastructure can act as one parallel computer solving one problem.
LAM features extensive debugging support in the application development
cycle and peak performance for production applications. LAM features a
full implementation of the MPI communication standard.
You can download the sources (tar-zipped, rpm) or binaries from
<ulink url="http://www.lam-mpi.org/download/">here</ulink>
A host of MPI tutorial links and also a `getting started with LAM'
tutorial is available <ulink url="http://www.lam-mpi.org/tutorials/">
here</ulink>
</para>
</listitem>
<listitem>
<para>
<ulink url="http://www.epm.ornl.gov/pvm/pvm_home.html">
Parallel Virtual Machine </ulink>:
As the PVM home page describes, it is a software package that permits
a heterogeneous collection of Unix and/or NT computers hooked together
by a network to be used as a single large parallel computer. Thus large
computational problems can be solved more cost effectively by using the
aggregate power and memory of many computers. The software is very
portable. The source, which is available free thru netlib, has been
compiled on everything from laptops to CRAYs.
</para>
</listitem>
<listitem>
<para>
<ulink url="http://ganglia.sourceforge.net">Ganglia</ulink>:
Ganglia is an open source cluster monitoring and execution environment
developed at the University of California, Berkeley Computer Science
Division. As the above link describes it, "Ganglia is as simple to
install and use on a 16-node cluster as it is to use on a 512-node
cluster as has been proven by its use on multiple 500+ node clusters".
It not only can link nodes in a cluster, but also link clusters to other
clusters.
</para>
</listitem>
</itemizedlist>
</sect3>
</sect2>
</sect1>
<sect1 id="publish">
<title>
Word-Processing and Poster presenting tools on Linux
</title>
<para>
Those of you who do not use <ulink url="http://www.latex-project.org">
LaTeX</ulink> and find it challenging and want a WYSIWYG word processor,
keep your ears tuned to <ulink url="http://www.openoffice.org">OpenOffice
</ulink>
which has released version 1.2 of its openoffice software. Its tools
may compare well with the best in the market.
</para>
<sect2 id="wp">
<title> Word Processing Tools </title>
<itemizedlist>
<listitem>
<para>
<ulink url="http://www.latex-project.org">Latex</ulink>:
LaTeX is a high-quality typesetting system, with features designed for
the production of technical and scientific documentation. LaTeX is the
de facto standard for the communication and publication of scientific
documents.
<ulink url="http://www.maths.tcd.ie/~dwilkins/LaTeXPrimer/">
David R.Wilkin's primer </ulink> "Getting Started with LaTeX"
is a good tutorial to getting started with LaTeX.
For those who have to live with a WYSIWYG documenting tool, check
<ulink url="http://www.lyx.org">LyX</ulink>. This is a front-end for
latex. It isn't as powerful as latex proper, but helps with a good WYSIWIG.
</para>
</listitem>
<listitem>
<para>
<ulink url="http://lout.sourceforge.net">Lout</ulink>:
A document formatting system similar to latex. Good features, documentation
and history. Light weight and outputs postscript. Thanks to Emiliano Gavilan
for this link.
</para>
</listitem>
<listitem>
<para>
<ulink url="http://www.abisource.com">Abiword</ulink>:
As the AbiWord home page says,
"AbiWord is suitable for typing papers, letters, reports, memos, and so forth".
It has won many awards and seems to be the best open source WYSIWYG word
processor. Check out the above link to know more about it and download it.
</para>
</listitem>
<listitem>
<para>
<ulink url="http://www.koffice.org/kword">kword</ulink>:
As the kword home page says,
"KWord is a FrameMaker-like word-processing and desktop publishing application.
KWord is capable of creating demanding and professional looking documents.
Whether you are a corporate or home user, production artist or student, KWord
will prove a valuable and easy to use tool for all your word processing and
layout needs". Check out the above link to know more about it and download it.
(you might want to know more about the whole <ulink url="http://www.koffice.org">
koffice</ulink> suite).
</para>
</listitem>
</itemizedlist>
</sect2>
<sect2 id="ppt">
<title> Poster presentation tools </title>
<itemizedlist>
<listitem>
<para>
<ulink url="http://www.koffice.org/kpresenter/">
KPresenter</ulink>:
KPresenter is the presentation tool of the KOffice suite of office
utilities. It allows screen presentations with all the trappings one
is used to seeing in costly presentation tools. It also allows honest,
real scientific presentations where one does not have to impress the
audience with non subject specific stuff :-). The best thing about it
is the possibility of saving the presentation as a html file. It makes
portable network graphics files with each presentation slide. With a
smattering of knowledge of html files one could put in a animated image
as a image link thereby allowing one to show movies too when necessary.
</para>
</listitem>
<listitem>
<para>
<ulink url="http://www-epb.lbl.gov/xfig/">Xfig </ulink>:
Though the man page claims that it is a facility for the
interactive generation of figures ...., It in fact much more than that.
Other than generating figures for elucidating what you want to say in
a poster, it helps you import and export figures in a variety of formats,
write text in various fonts and sizes, generate Greek symbols and color
text, Save as latex picture file or any other format supported by your
word processor for inclusion in your publications, generate GIFs of each
page of the poster to put on your web site, and finally it generates
*.fig files which are small in size. The only thing on my wish list for
xfig is the capability to edit the imported pictures which are not in
*.fig format. Therefore for a computer screen projected poster
presentation you need a frames capable browser with contents in one frame
and the xfig generated posters (exported as *.png or *.jpg from Xfig) on
the other.
</para>
</listitem>
</itemizedlist>
</sect2>
</sect1>
<sect1 id="database">
<title> Free Database Management Systems for Linux </title>
<para>
Scientific computing has two parallel data needs, one the physical values
of the data itself, and the other is Database systems to manage the data.
In this document links are provided only to database resources on the net
and free Database systems. I personally do not use databases to manipulate
the data generated by my codes. gawk, sed, and other basic Unix commands
like grep, head and tail seem sufficient to manipulate any data I generate.
I thought I should include this section for the large data generators.
Hopefully a person with experience in databases will make this section better.
</para>
<itemizedlist>
<listitem>
<para>
<ulink url="http://www.iam.unibe.ch/~scg/Archive/Software/FreeDB/ ">
Free database list</ulink>
</para>
</listitem>
<listitem>
<para>
<ulink url="http://www.acm.org/sigmod/databaseSoftware/ ">
ACM SIGMOD</ulink>:
Index of publicly available database software.
</para>
</listitem>
<listitem>
<para>
<ulink url="http://www.mysql.com">MySQL</ulink>:
A relational Database management system.
</para>
</listitem>
<listitem>
<para>
<ulink url="http://www.postgresql.org">PostgreSQL</ulink>
As the link above describes it ...PostgreSQL is
a sophisticated Object-Relational DBMS, supporting almost all SQL
constructs, including subselects, transactions, and user-defined types
</para>
</listitem>
</itemizedlist>
</sect1>
<sect1 id="lablinux">
<title>Linux in the laboratory</title>
<para>
Again this is a section where I have zero experience and hope someone will
with experience will contribute towards making this document better. However,
I provide below links suggested by Sambaran Pahari and Deepak Gupta. These
links seem to be very good from my inexperienced viewpoint.
</para>
<itemizedlist>
<listitem>
<para>
<ulink url="http://www.llp.fu-berlin.de">The Linux Lab Project</ulink>
A site for "Linux Lab Project."..everything to do with laboratory process,
process control, automation and data acquisition on Linux.
As the above link says, "The Linux lab project is intended to help people with
development of data collection and process control software for LINUX.
It is planned to provide a standardized development environment for a wide variety
of applications from hardware support to application development".
</para>
</listitem>
<listitem>
<para>
<ulink url="http://www.torque.net/linux-pp.html">
Linux Parallel port drivers</ulink>:
The above link says, "If you have a parallel port device and would
like to know if there is a Linux driver available for it --then this is
the place to look". Sounds like a confident claim.
</para>
</listitem>
</itemizedlist>
</sect1>
</article>