CxALite is a lightweight java library allowing users to couple concurrent process as describe in Complex Automata (CxA) theory. It is particularly suited for scientific computing to parallelize and couple multi-scale and multi-science models. In its current implementation, CxALite works only on shared-memory machines (multi-core and/or multi-cpu).
CxALite was written to match strictly the CxA execution model described in
P.M.A. Sloot and A.G. Hoekstra, Modeling Dynamic Systems with Cellular Automata", in Handbook of Dynamic System Modeling, Edior: Paul A. Fishwick, Series: Chapman & Hall/CRC Computer & Information Science Series (to be published).
Another open source implementation of CxA called MUSCLE (Multiscale Coupling Library and Environment) is available also. MUSCLE is CxALite big brother and has the following advantages:
- MUSCLE allows to couple code written in Java, C, C++ and Fortran, where CxALite is limited to Java code.
- MUSCLE allows to split a simulation on several machines.
- MUSCLE contains facilities to manage physical units.
However, CxALite has a few advantages over MUSCLE:
- CxALite has no dependencies (except the standard Java runtime).
- CxALite has a very compact code base (less than 350 lines of code).
- CxALite is particularly unobstrusive, allowing fast experimentation and prototyping.
License and ownership
CxALite is an free open source library released under GNU GPLv3 license (see the LICENSE file included in the bundle). It was developped during EU founded research project COAST.
Copyright University of Geneva (Jean-Luc Falcone), 2009. All rights reserved.
There is only one requirement for the core middleware:
- Java platform JDK (tested and developed with 1.6 but 1.5 should also work).
CxALite will thus work on every machine with a valid java installation (Linux, MacOSX, Solaris, Windows, etc.)
Additionaly, you will need to install the ant tool if you want to build it from source.
However optional extra code provided in cxa.extra package requires extra depencies. However, all the depencies are bundled in the releases. Currently, CxALite extra needs:
- XOM a nice XML writer/parser, less verbose than java standard API.
You can grab the latest archives of CxALite project at GitHub download page.
Alternatively, you can use the Git source manager to directly clone the current developement repository with:
Simply download and unpack the tarball. The jar can be directly used in classpath and the documentation is already generated.
The project use ant as a build tool. To compile and produce the jar:
$ ant jar
To compile the javadoc:
$ ant doc
The required dependencies for the extra package are included in the lib directory.
To use it, just append the needed jar to your classpath. There are currently thre jars:
- CxALite.jar: the middleware base, requiring no extra depencies except a standard java environment.
- CxALite-examples.jar: the compiled examples.
- CxALite-extra.jar: extra class requiring dependencies found in the lib directory.
Documentation is provided as guides in the wiki pages and javadoc apis in the release bundle.
Have a look in 'cxa.examples' packages for examples.
Support and Collaboration
You can get help through the following methods:
- Read the project wiki
- Open an entry in the project issue tracker
- Email the project maintainer: jean-luc[dot]falcone[at]unige[dot]ch
Do not hesitate to send critics and feature requests.