10
1
mirror of https://gitlab.com/scemama/QCaml.git synced 2024-11-19 04:22:21 +01:00
QCaml/README.md
2020-09-26 16:45:52 +02:00

95 lines
2.1 KiB
Markdown

QCaml (Quantum Camel)
=====================
<img src="data/chamo_bg.png" width="300" >
QCaml is a quantum chemistry software written in OCaml.
Requirements
------------
* BLAS/LAPACK : Linear algebra
* LaCaml : LAPACK OCaml interface
* Zarith : Arbitrary-precision integers
* GetOpt : Parsing of command-line
* gmp : GNU Multiple Precision arithmetic library
* odoc-ltxhtml : https://github.com/akabe/odoc-ltxhtml
* Alcotest : Lightweight testing framework
```bash
opam install dune lacaml getopt alcotest zarith
```
To use the Intel MKL library:
```bash
export LACAML_LIBS="-L${MKLROOT}/lib/intel64 -Wl,--no-as-needed -lmkl_rt -lpthread -lm -ldl"
opam install lacaml
odoc-ltxhtml allows to embed equations in the documentation generated by Ocamldoc.
Download the source code [here](https://github.com/scemama/odoc-ltxhtml).
```bash
git clone https://github.com/scemama/odoc-ltxhtml
cd odoc-ltxhtml
make install
```
How to build the project
------------------------
Run `make` to compile the libraries and executables that are
meant to be installed.
```
$ make
```
How to run tests
----------------
```
$ make test
```
How to use local libraries interactively
----------------------------------------
Use `dune utop DIR` where DIR if the folder contains the `dune`
file for a library. For instance, our `sub2` sample library can be
used as follows:
```
$ dune utop sub2/lib
...
utop # Proj_sub2.A.do_something ();;
1525373137.245 seconds have elapsed since 1970-01-01T00:00:00.
- : unit = ()
```
Installation
------------
The project can be installed with or without opam.
Without opam, you can run the following which relies directly on
dune:
```
$ make install
```
Similarly:
```
$ make uninstall
```
With opam, you can install the current development version of your
project as a single opam package. It will override the currently
installed package of the same name, if any:
```
$ opam pin add QCaml .
```
For more information on `opam pin`, please consult the opam documentation.
The advantage of the opam-based method is that other opam packages can
depend on this one, and opam will recompile them automatically as
necessary.