CryoSimulation v1.01
====================

Written by:  Chris Studholme
Last Update: 28-Oct-1996
Copyright:   GPL (http://www.fsf.org/copyleft/gpl.html)
Web Site:    http://www.cs.toronto.edu/~cvs/MSc/
Email:       cvs@cs.toronto.edu


This is the software generated during the writing of my Masters thesis in
Applied Mathematics at the University of Alberta.  The title of the thesis
is:

             Modeling Heat and Mass Transport In
             Biological Tissues During Freezing

Abstract:

    Cryobiology, the study of life at low temperatures, requires modeling to
    extend understanding and predict responses of living systems. A compartment
    model was developed to represent complex biological tissues as a hierarchy
    of compartments. To implement this model, a description of phase behaviour
    in real solutions was developed using thermodynamic principles. Osmotic
    pressures in solutions, derived from phase behaviour, were used to predict
    water and solute movements across semi-permeable membranes. The heat
    conduction equation was solved with a piece-wise quadratic model of
    temperature and concentrations profiles. This diffusion model includes
    effects of moving phase boundaries within tissues, and allows for planar
    and dendritic ice formation. Constitutional supercooling was calculated for
    prediction of dendritic breakdown. This model was applied to real tissue
    systems to predict responses on tissue and cellular scales. The model's
    generality and use of biophysical mechanisms and parameters allows
    applications to a wide variety of real tissue systems.

The complete text of the thesis is available at the web site noted above.

This software was written solely to aid in the writing of the thesis, and
therefore, it may not be suitable for other purposes.  By request I have made
the source code available to the public under the Free Software Foundation's
General Public Licence (read the file COPYING for details).  

The software was written in Borland C++ v4.5.  It contains the following main
components:

  cryosim.h cryosim.cpp cryosima.cpp: 
    Main simulation library.

  makesim.cpp:
    A command line program for creating solute and simulation binary files from
    text files (see the data directory for samples).

  simdoer.cpp:
    A command line program for running simulations (requires solute and
    simulation binary files).

  objstrm.h objstrm.cpp:
    I couldn't figure out how to use the mechanism for streaming objects to and
    from files as provided by Borland, so I wrote my own.

  subint.h subint.cpp diff.cpp:
    I'm not sure what these are.  I think they were just programs to test ideas
    that were later incorporated into the main library.


I can tell you about the following points of non-portability in the code:

1. In cryosima.cpp you will find x86 assembly language to change C++ references
   that have already been set.  My objstrm classes use these methods when
   streaming classes from a file.

2. I had a habit of initializing classes with: 
     memset(&someclass, 0, sizeof(someclass));
   This tends to overwrite the virtual method table of the object but seemed to
   work for me at the time.

Other points of non-portability may exist.

At this time I have no plans to rewrite any of this code.  If you find the
code useful and modify it in any significant way, I would appreciate hearing
about it.  I may also be able to answer questions about how it works.  If I
were to start working with the code again, the first thing I would do is
rewrite the whole thing in Java.

Email comments and questions to:

  cvs@cs.toronto.edu

