Author Victor Matveev, NJIT
Current Version 6.0.5
Date September 24, 2008
Installation instructions README
Terms and Conditions GNU Public License 
Reference Manual manual.html
Source (all UNIX platforms) calc_unix_6.0.5.tgz  (160 KB)
Windows CygWin executable calc_cygwin.exe  (361 KB)
Visual C++ source with gnuplot CalC_win32_6.0.5.zip  (1MB)
Windows XP executable calc_win32.exe  (224 KB)

Release 6.0.5 allows time-dependent rates of Ca2+-buffer binding

CalC ("Calcium Calculator") is a modeling tool for integrating the 3D reaction-diffusion problem (or the corresponding reduced 1D and 2D problems) arising in biophysical modeling of intracellular calcium dynamics. CalC simulates the entry of calcium into a volume through point-like channels, and its diffusion, buffering and binding to calcium receptors. An arbitrary number of mobile and/or fixed calcium buffers may be included (one-to-one calcium binding stoichiometry is assumed). The diffusion volume is given by a superposition of rectangular boxes, and may include rectangular obstacles to diffusion representing vesicles or other diffusion barriers (curvilinear geometry is in the works). Non-uniform diffusion coefficients are allowed (to simulate tortuosity effects).

CalC runs on Windows (cygwin strongly recommended) and all UNIX platforms. On UNIX platforms (including the cygwin Windows-based Linux emulator), simulation results can be viewed in real time by piping the output into the xmgrace / xmgr graphics applications. Alternatively, file plots can be produced, in a format readable by MATLAB and gnuplot.

CalC reads the definitions specifying a model simulation from a user-provided ASCII script file. A script file can import other script files and can include non-trivial flow control, which increases the flexibility and reusability of simulation descriptions. The CalC manual describes the script syntax. Example script files are provided. If you prefer a simulation environment controlled by a graphic user interface, you should check out the Virtual Cell Project.

CalC uses a variation of the Alternating Direction Implicit (ADI) finite difference method, which is very CPU-time efficient, and accurate to 2nd order in time and space. To preserve the 2nd order accuracy, the calcium and buffer concentration fields are calculated on time grids that are staggered by half a time step with respect to each other. Time-step is varied adaptively during the simulation. Spatial grid is static, but can be declared in a non-uniform way by stretching in each of the 3 directions. ODEs describing calcium receptor binding are integrated using a standard 5th order Cash-Karp adaptive step-size Runge-Kutta scheme.

CalC is written in C++ and is fully object-oriented. It was developed by Victor Matveev at the Mathematical Research Branch, NIDDK, NIH, and its development continues here at the Department of Mathematical Sciences, NJIT. CalC is free (copylefted) and is provided on an as-is basis. I will try to respond to any bug reports or other questions (e.g. you can send me script files that don't run correctly). If you plan to use CalC in your work, please make appropriate attribution by citing this URL, and/or our 2002 Biophys J article.


This material is based upon work supported by the National Science Foundation grants 0417416 and 0817703. Any findings, recommendations and conclusions provided by this material do not necessarily reflect the views of the National Science Foundation

Additions and modifications as of September 22, 2008 (version 6.0.5)
Significant improvement of non-uniform grid generation. The uniform interval in the stretch definition is accurately preserved.
Time dependent calcium binding and unbinding rates are now allowed.
Several minor bug fixes and improvements
Additions and modifications as of April 27, 2008 (version 5.9.1)
For convenience, Dirichlet boundary conditions has been re-defined, and by default fixes the calcium and buffer concentrations to their background values, instead of zero.
A volume-distributed linear calcium uptake process is now implemented.
Fixed a bug in special buffer obstacle implementation causing segmentation fault in scripts using for loops. Thanks to Robert Zucker for reporting the bug.
Additions and modifications as of March 31, 2008 (version 5.7.9)
Fixed a bug in Dirichlet boundary conditions implementation, introduced in version 5.5.9. Thanks to Thomas Frank for reporting the bug.
Additions and modifications as of March 20, 2008 (version 5.7.8)
Fixed a bug causing segmentation fault with large-size scripts that make use of the local concentration variables (thanks to Robert Zucker for reporting the bug).
The constructor code for time-dependent objects was significantly cleaned up in order to fix a minor bug in initialization of min/max variables. This bug resulted in the crash of xmgrace graphics application when auxiliary variables depended on min/max objects (thanks to Robert Zucker once again for reporting).
Additions and modifications as of Nov 22, 2007 (version 5.7.0)
Implemented buffer obstacles - diffusion obstacles specific to individual buffers. These special obstacles are complementing the more complex tortuosity definition which retards the diffusion of buffers in a specific spatial region.
Additions and modifications as of Feb 14, 2007 (version 5.5.95)
Improved handling of viewport coordinates in xmgr/xmgrace graphics
Additions and modifications as of May 27, 2006 (version 5.5.9)
Tortuosity has been implemented for all cartesian and curvilinear geometries; the low-level integration routines have been streamlined.
The flux boundary conditions have been redefined to implement in a more physiological fashion the zero flux at the background level of calcium concentration
Implemented the continue flow-control statement
Fixed a bug in the parsing of Ca2+ influx width values in 1D and 2D geometries, introduced in version 5.1.0.
Additions and modifications as of October 5, 2005 (version 5.5.0)
Streamlined the makefiles, which should now be problem-free and work on any UNIX platform including OS X. Since the supplied Ygl library binary is not compatible with the newer 64-bit systems, Linux compilation excludes by default the Ygl capabilities. Use "gmake -f Makegl" to include Ygl graphics on a 32-bit Linux platform.
The execution status string now wastes much less CPU time, since it only updates once a second. This eliminates the need for the verbose=0 command to improve efficiency.
When using CalC as an ODE solver, the mode=ODE command is now not necessary. ODE system is assumed if the grid and the Ca2+ diffusion coefficient are not defined in the script file.
Fixed a bug in mute plot data output appearing in the Windows version of the program. The bug only appears when the numerical engine encounters instability and does back-stepping. The bug is related to the inability of Windows to properly process the "rename" OS command.
Fixed a bug in expression optimizer that affects truncation of mathematical formulas of form "variable / const * const", "variable / const / const", "variable - const + const", and "variable - const - const"
Additions and modifications as of May 24, 2005 (version 5.4.5)
Fixed a bug that spoiled the accuracy of the total Charge conservation check after instability recovery during adaptive time-step calculation.
Fixed a bug causing some scripts to crash when they include both graphics and Export data dumps (incorrect plot count).
Minor bug fixed causing some scripts to terminate at very small time steps during adaptive integration.
Additions and modifications as of February 4, 2005 (version 5.4.0)
Implemented several new geometries, such as 2D polar and cylindrical geometries, and 3D cylindrical and spherical geometries (note that periodic boundary conditions are not yet implemented). The geometry implementation code has been considerably streamlined.
Keyword point is now obsolete: plot syntax has been simplified.
Slight change in pump-like Neumann boundary condition definition (removed the [Ca2+]bgr offset in the denominator pump term - it wasn't physiological)
Further changes to the Makefile now allow problem-free compilation on cygwin, which is a very nice and completely free Linux emulator for Windows.
Fixed a bug in expression optimizer: some expressions containing zeros and ones were truncated incorrectly.
Additions and modifications as of October 18, 2004 (version 5.1.0)
Implemented stochastic discrete-state continuous-time Markov process variables, which allow to model stochastic channel kinetics (see an example script).
Implemented distinct Ca2+ currents.
Click here for a complete list of older versions and changes.


To-Do List:



Victor Matveev
This server is running a Redhat distribution of Linux.
Last modified: Apr 7, 2007