10
1
mirror of https://gitlab.com/scemama/QCaml.git synced 2024-07-31 17:44:12 +02:00
QCaml/README.md

86 lines
1.9 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
* gmp : GNU Multiple Precision arithmetic library
* Zarith : Arbitrary-precision integers
* GetOpt : Parsing of command-line
* Alcotest : Lightweight testing framework
* odoc-ltxhtml : https://github.com/akabe/odoc-ltxhtml
```bash
opam install dune lacaml getopt alcotest zarith camlp-streams
```
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 --assume-depexts lacaml
```
How to build the project
------------------------
Run `make` to compile the libraries and executables that are
meant to be installed.
```
$ make -j
```
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.