HMD Mathematics Code
Numerical mathematics platform, Matlab alternative
Brought to you by:
racefortune
--------------------------------------------------------------------------
README file for HMD for Computer Modeling
--------------------------------------------------------------------------
Last updated 3-19-2017, version 4.3.11
Contents
---------
1. Required Packages
2. Building HMD
3. Installing HMD
4. Getting Stated
5. Capability
6. Known bugs
--------------------------------------------------------------------------
--------------------------------------------------------------------------
Introduction
--------------------------------------------------------------------------
--------------------------------------------------------------------------
This source distribution was created with the GNU autotoolset. Building
and installing this software is performed with the standard GNU "tarball"
procedure of
./configure
make
make install
Note that there are some required arguments that must be passed to ./configure
(see below). The default installation path (resulting from "make install")
is /usr/local. It is recommended that you keep the source distribution on
your hard drive after the installation, although it is not required. If
you keep the source distribution you will have the examples, and you will
be able to uninstall the software at any time using "make uninstall". A
good place for the distribution might be /usr/local/src. When the source
tarball is unpacked the subdirectory hmd-x.x.x is automatically created,
where x.x.x is the version number.
--------------------------------------------------------------------------
--------------------------------------------------------------------------
1. Required Packages
--------------------------------------------------------------------------
--------------------------------------------------------------------------
* GNU ReadLine
Provides command line text editing in interactive mode
The build package looks for GNU Readline installed on your computer.
If it is found, then the interactive command-line capability will
be built into your program. If GNU Readline is not installed on
your computer, then you can still use HMD to execute .hmd scripts,
but there will be no interactive prompt--in other words, typing
"hmd -i" will cause hmd to exit immediately. If you want the
interactive prompt you must download and install GNU Readline, then
rebuild the HMD package. This package will almost always be already
be installed on your Linux distribution.
* LAPACK
Reguired for the matrix algebra
(LAPACK is now included in the package--you do not need to worry
about downloading and installing)
* Tcl/Tk (optional)
If you want to run the graphical user interface (hmd -j) you need
to have Tcl/Tk installed on your computer. If so, the ./configure
script will find it, and the Tcl/Tk interface will be compiled into
the program. The program executes some Tcl scripts which will be
located in the share path, usually /usr/local/share/hmd/tcl.
Any serious Linux/Unix distribution should have Tcl/Tk already
installed.
* BLT (optional)
You should not have to worry about this unless something goes wrong.
The BLT library is a subset of the Tcl/Tk functionality. A compiled
BLT library is provide and distributed into the share path, which
will usually be /usr/local/share/hmd, hence the libraries will be
found inside /usr/local/share/hmd/tcl/blt. This approach is yet
experimental (12-24-2016). If the BLT libraries do not run because
of an incompatibility with the version of Tcl/Tk you have on your
machine you will need to install and compile your own BLT package
and copy the libraries into the share path stated above.
Dec 2018: the BLT 2.5 source tree is distributed in the HMD source
tree under HMD_SOURCE/tcl/blt/blt2.5. You need to build this package
before running the HMD versions of ./configure, make, make install.
See the file README_hmd under HMD_SOURCE/tcl/blt/blt2.5.
* TkTable (optional)
You should not have to worry about this unless something goes wrong.
The TkTable library is a subset of the Tcl/Tk functionality. A compiled
TkTable library is provide and distributed into the share path, which
will usually be /usr/local/share/hmd, hence the libraries will be
found inside /usr/local/share/hmd/tcl/tktable. This approach is yet
experimental (12-24-2016). If the TkTable libraries do not run because
of an incompatibility with the version of Tcl/Tk you have on your
machine you will need to install and compile your own BLT package
and copy the libraries into the share path stated above.
Dec 2018: the TkTable 2.11 source tree is distributed in the HMD source
tree under HMD_SOURCE/tcl/tktable/tktable2.11. You need to build this
package before running the HMD versions of ./configure, make, make install.
See the file README_hmd under HMD_SOURCE/tcl/tktable/tktable2.11.
* ECL Embedded Common Lisp (optional)
If you use the graphical user interface the Lisp interpreter window
will be available. ECL is not a standard Linux/Unix package.
You must have already installed ECL on your computer. When you build
HMD, and ECL is alread installed, the HMD configure script will find
ECL and build the Lisp interface into the program. But you will not
be able to use it unless you have Tcl/Tk and the program is started
with "hmd -j -k".
The HMD interface to ECL assumes that you built ECL without unicode. To
see whether you have a conflict enter a simple floating point number
assignment into the Lisp interpreter console, say (setq x 1312.45) and
observe the console echo. If there is only one digit displayed, or if
the echo looks trashed then you compiled your ECL distribution with
unicode on. You could rebuild ECL with
./configure --enable-unicode=no --with-unicode-names=no
Or, if you feel you cannot live without unicode, edit the HMD source file
called eval_lisp_ecl.c. Put #define ECL_BUILD_WITH_UNICODE near the top
of the file.
GNU READLINE
------------
HMD requires the READLINE package for the interactive console prompt. This
package should be installed on most Linux distributions, but I don't know
for sure which distributions have it. I know for sure that Slackware comes
with READLINE already installed. If your distribution doesn't have it, then
you need to download it from the GNU site and build/install it on your
machine.
LAPACK -- package for linear algebra
------------------------------------
As of version 3.1.0 (7/30/2005) the LAPACK source files are included in the
HMD source distribution, so you don't need to download and install this package
separately anymore (but information about how this would be done is retained
at the bottom of this file for reference).
GMSH
----
HMD is a model solver. So where are the neat wire-frame 3D images I
wanted to see using a computer modeling tool? HMD uses another program
for this. It's called GMSH. It is available from www.geuz.org/gmsh
and can be downloaded for free. GMSH is used as a standalone program,
not a library, so you don't have to worry about building it. Just
download it and install it.
You create a mesh file with GMSH. This file will have a file extension
.msh. This file is what HMD needs to complete its finite element model.
The GMSH mesh file name is specified as an HMD script command.
--------------------------------------------------------------------------
--------------------------------------------------------------------------
2. Building HMD
--------------------------------------------------------------------------
--------------------------------------------------------------------------
First, navigate under the HMD Mathematics source tree to the blt/blt2.5
directory and build BLT. See the file README_hmd under
HMD_SOURCE/tcl/blt/blt2.5.
Then, navigate under the HMD Mathematics source tree to the
tktable/tktable2.11 directory and build TkTable. See the file README_hmd
under HMD_SOURCE/tcl/tktable/tktable2.11
After you have verified that the GNU Readline and Termcap libraries are
installed, you can build and install the HMD package. I recommend copying
the source distribution tarball file into /usr/local/src. Unpacking the
distribution file will automatically create a subdirectory for HMD and put the
project files there.
Unpack the "tar ball" with the following commands:
gzip -d hmd-x.x.x.tar.gz
tar xvf hmd-x.x.x.tar
or just
tar zxvf hmd-x.x.x.tar.gz
For the newer BZIP2'd distributions (.bz2 extension), use
bzip2 -d hmd-x.x.x.tar.bz2
tar xvf hmd-x.x.x.tar
Note that the "x.x.x" in hmd-x.x.x.tar.gz means the version number. Note that
it doesn't matter whether the file extension is .tar.gz or .tgz.
Change directory to the hmd-x.x.x directory. Build the project with
the following commands:
./configure
Now run
make
This will build hmd, intp, and other utility programs all at once.
--------------------------------------------------------------------------
--------------------------------------------------------------------------
3. Installing HMD
--------------------------------------------------------------------------
--------------------------------------------------------------------------
You don't have to do a formal "install" step to run HMD if you don't want
to. The formal install step, which uses the standard GNU software installation
scripts, will copy the HMD executable programs into your /usr/local/bin
directory (where all users on you system can use HMD).
If you want to install the package into the standard GNU file locations (should
be /usr/local/bin), then type the following command:
make install
Otherwise, you can just cp the HMD executable file, hmd*, to whatever directory
you want and use it there.
After you have installed HMD (ONLY AFTER YOU INSTALL), you can run
make clean
to remove all the temporary files.
--------------------------------------------------------------------------
--------------------------------------------------------------------------
4. Uninstalling HMD
--------------------------------------------------------------------------
--------------------------------------------------------------------------
When it's time to uninstall HMD you can use
make uninstall
Make sure that you keep the uninstall scripts from the package directory so
that you can uninstall later. The safest way to do this is just leave the
source code in /usr/local/src (where I assume you built HMD) and after install-
ation is complete run
make clean
to get rid of the temporary files in the source directory. Then, when you want
to uninstall HMD, change directory to the source directory and run "make
uninstall".
--------------------------------------------------------------------------
--------------------------------------------------------------------------
5. Getting Started
--------------------------------------------------------------------------
--------------------------------------------------------------------------
If you ran "make install", then the HMD programs will be in /usr/local/bin
which should already be in your PATH. You may then run HMD from any directory.
If you didn't run "make install", then you will need to cp the executables
into the directory where you are working.
Type
hmd -V
and the program should run, displaying the version number.
Running a model
---------------
Hmd reads and executes script files. For example, if we want to run the
script file called "fe1.hmd" we would type the following command at the
command line:
hmd -f fe1.hmd
Try it with example #1
-----------------------
To try example #1, change directory to a "work" directory. Copy the following
files from the HMD examples directory (in the source package) to your work
directory:
fe1.hmd
fe1.msh
Note that I already created the mesh file, fe1.msh, for you. You could have
created it your self by running GMSH with the input file fe1.geo to produce
fe1.msh.
Notice that you need at least two files: the HMD command script and the mesh
file. Now execute the program:
hmd -f fe1.hmd
That's all it needs. You should get an output file called "fe1.dat", which is
an ascii text file that will have 5 columns in the following order:
1. The node number corresponding to the data value.
2. The data value.
3. The x coordinate for that node.
4. The y coordinate for that node.
5. The z coordinate for that node.
There will also be an output file called "fe1.inp". This is a file ready to be
read into the GMV graphical viewer.
Interactive Mode
-----------------
You can run HMD interactively (like using Scilab or Matlab) with a variable
workspace by starting HMD with the following command:
hmd -i
From interactive mode, you can run an HMD script by typing
source <hmd_script_file_name>
where, of course, <hmd_script_file_name> must be replaced by the name of your
HMD script file.
How do you exit from interactive mode? Type exit.
The graphical user interface can be used if Tcl/Tk is on your machine.
The GUI is invoked when you start the program with
hmd -j
Possible errors that would occur trying to use the "-j" option:
tclGUI_Main returned -7
The Tcl/Tk script for displaying the GUI cannot find the share path. This
should not occur for a normal Linux install. We look for the share path
either in /usr/local/share/hmd or /usr/share/hmd. But if you are trying to
run from a non-standard location you need to manually set the share path on
the command line or with the .hmd_config file in the current directory. The
HMD share folder will contain a subdirectory called tcl. This will be a
subdirectory in the source tree that is automatically copied to the share
path for a normal installation. If you did not perform a normal installation
then whereever to have the HMD share files, say /home/hmd, you can use a
command line option
-s /home/hmd
or create a file called .hmd_config in the location where you're invoking
HMD, and put the share location in it, like
hmdsharepath = /home/hmd
See the section called FILES.
This would be a problem also for Windows users who want to run HMD from a
different folder than the installation folder. But in this case the file
would be called hmd_config.cfg.
The missing share path prblem could also cause a BLT not loaded error or
a TkTable not loaded error.
----------------------------------------------------------------------------
--------------------------------------------------------------------------
5. CAPABILITY
----------------------------------------------------------------------------
--------------------------------------------------------------------------
5/14/2003
A. Steffens Jr.
----------------------------------------------------------------------------
----------------------------------------------------------------------------
In terms of the maximum size of model you can build with HMD.
Maximum number of nodes on a PC with 512 Mb RAM:
Model Type standard packed band-packed
-------------------------------------------------------------------------
Poisson ? ? 16850
Eigenmodes 5120 12282
-------------------------------------------------------------------------
----------------------------------------------------------------------------
--------------------------------------------------------------------------
6. (Known) Bugs:
----------------------------------------------------------------------------
--------------------------------------------------------------------------
The SPARSPAK routine 1WD fails trying the create a band matrix with a mesh
created on a toroidal geometry.
----------------------------------------------------------------------------
--------------------------------------------------------------------------
7. LAPACK -- package for linear algebra
----------------------------------------------------------------------------
--------------------------------------------------------------------------
This is a well-known linear algebra package freely available at
http://www.netlib.org/lapack
It was written an debugged by mathematicians
E. Anderson
Z. Bai
C. Bischof
S. Blackford
J. Demmel
J Dongarra
J. DuCroz
A. Greenbaum
S. Hammarling
A. McKenny
D. Sorensen
LAPACK is used in Matlab, as well as other matrix algebra software
programs such as Scilab and ALGAE.
----------------------------------------------------------------------------
----------------------------------------------------------------------------
8. FILES
----------------------------------------------------------------------------
----------------------------------------------------------------------------
Files generated and/or used by the HMD program for configuration or other
purposes.
.hmd_config
Contains configuration that apply only to the local session.
1. An alternative to the default "hmdsharepath" path. The default is
/usr/local/share/hmd
This can be overriden by the environment variable, HMDSHAREPATH,
which could then be overriden by the command line option, -s.
They can all be overriden by a setting in the local .hmd_config
for the hmdsharepath. Example,
hmdsharepath /home/share/hmd
2. An alternative path to the help file. This is a text file containing
all the help descriptions. The default path is
$HMDSHAREPATH/help/hmd_help.txt
which, for the default path, resolves to
/usr/local/share/hmd/help/hmd_help.txt
This can be overriden in the local .hmd_config file. Example,
help_path /home/myproj/myhelp.txt
.hmdtk
The .hmdtk file is a local session file for sessions using the Tcl/Tk
GUI (a session started with the -j option).
.histinterp
The command line history for the HMD command workspace when using the
Tcl/Tk GUI (a session started with the -j option).
.hmd_history
The command line history for the HMD command workspace when using the
text console (a session started with the -i option).
.histlisp
The command line history for the ECL common lisp command workspace when
using the Tcl/Tk GUI (a session started with the -j and -k option).
.eclout
A named pipe file in the local directory used for internal communication
between the ECL embedded stdout stream and the Tcl/Tk widget that hosts
the Lisp interpreter.
----------------------------------------------------------------------------
----------------------------------------------------------------------------
Alfred Steffens Jr.
apsteffe@netwood.net