Introduced Alcotest

This commit is contained in:
Anthony Scemama 2018-07-04 20:24:51 +02:00
parent 4dec632e5a
commit 125e5dac4c
13 changed files with 13204 additions and 6 deletions

View File

@ -1,5 +1,6 @@
PKG str unix bigarray lacaml
S .
S Test
S Nuclei
S CI
S Utils

View File

@ -18,7 +18,7 @@ ALL_EXE=$(ALL_BYTE) $(ALL_NATIVE)
default: $(ALL_EXE) doc
tests: $(ALL_TESTS)
tests: run_tests.native
QCaml.odocl: $(MLIFILES)
ls $(MLIFILES) | sed "s/\.mli//" > QCaml.odocl
@ -48,7 +48,7 @@ doc: QCaml.odocl
$(OCAMLBUILD) -ocamlc ocamlcp $*.byte -use-ocamlfind $(PKGS)
clean:
$(OCAMLBUILD) -clean # rm -rf _build $(ALL_EXE) $(ALL_TESTS) *.native *.byte
$(OCAMLBUILD) -clean # rm -rf _build $(ALL_EXE) *.native *.byte
debug: run_integrals.native
./debug.sh

View File

@ -6,5 +6,5 @@ Requirements
* Zarith : Arbitrary-precision integers
* gmp : GNU Multiple Precision arithmetic library
* odoc-ltxhtml : https://github.com/akabe/odoc-ltxhtml
* Alcotest : Lightweight testing framework

View File

@ -51,3 +51,27 @@ let make ?(nocc=0) ~guess ao_basis =
| `Huckel -> Huckel (huckel_guess ao_basis nocc)
let test_case ao_basis =
let test_hcore () =
match make ~guess:`Hcore ao_basis with
| Hcore matrix ->
let a = Lacaml.D.Mat.to_array matrix in
let reference =
Lacaml.D.Mat.add
(Lazy.force ao_basis.AOBasis.eN_ints |> NucInt.matrix)
(Lazy.force ao_basis.AOBasis.kin_ints |> KinInt.matrix)
|> Lacaml.D.Mat.to_array
in
Array.iteri (fun i x ->
Alcotest.(check (array (float 1.e-15))) "same guess" a.(i) x) reference
| _ -> assert false
in
[
"HCore", `Quick, test_hcore;
]

View File

@ -10,4 +10,4 @@ type t = guess
val make : ?nocc:int -> guess:[ `Hcore | `Huckel ] -> AOBasis.t -> t
val test_case : AOBasis.t -> unit Alcotest.test_case list

2
_tags
View File

@ -1,4 +1,4 @@
true: package(str,unix,bigarray,lacaml)
true: package(str,unix,bigarray,lacaml,alcotest)
<*.byte> : linkdep(Utils/math_functions.o), custom
<*.native>: linkdep(Utils/math_functions.o)
<odoc-ltxhtml>: not_hygienic

2
opam
View File

@ -20,5 +20,5 @@ remove: [
["ocamlfind" "remove" "QCaml"]
]
depends: [
"ocamlfind" "lacaml" {build}
"ocamlfind" "lacaml" "alcotest" {build}
]

12
run_tests.ml Normal file
View File

@ -0,0 +1,12 @@
let basis_file = "test_files/cc-pvdz"
let nuclei_file = "test_files/h2o.xyz"
let simulation_closed_shell =
Simulation.of_filenames ~charge:0 ~multiplicity:1 ~nuclei:nuclei_file basis_file
let () =
Alcotest.run "SCF test" [
"Guess", Guess.test_case simulation_closed_shell.Simulation.ao_basis;
]

26
test_files/caffeine.xyz Normal file
View File

@ -0,0 +1,26 @@
24
Caffeine
1 -3.3804130 -1.1272367 0.5733036
7 0.9668296 -1.0737425 -0.8198227
6 0.0567293 0.8527195 0.3923156
N -1.3751742 -1.0212243 -0.0570552
C -1.2615018 0.2590713 0.5234135
C -0.3068337 -1.6836331 -0.7169344
C 1.1394235 0.1874122 -0.2700900
N 0.5602627 2.0839095 0.8251589
O -0.4926797 -2.8180554 -1.2094732
C -2.6328073 -1.7303959 -0.0060953
O -2.2301338 0.7988624 1.0899730
H 2.5496990 2.9734977 0.6229590
C 2.0527432 -1.7360887 -1.4931279
H -2.4807715 -2.7269528 0.4882631
H -3.0089039 -1.9025254 -1.0498023
H 2.9176101 -1.8481516 -0.7857866
H 2.3787863 -1.1211917 -2.3743655
H 1.7189877 -2.7489920 -1.8439205
C -0.1518450 3.0970046 1.5348347
C 1.8934096 2.1181245 0.4193193
N 2.2861252 0.9968439 -0.2440298
H -0.1687028 4.0436553 0.9301094
H 0.3535322 3.2979060 2.5177747
H -1.2074498 2.7537592 1.7203047

3371
test_files/cc-pvdz Normal file

File diff suppressed because it is too large Load Diff

5486
test_files/cc-pvqz Normal file

File diff suppressed because it is too large Load Diff

4273
test_files/cc-pvtz Normal file

File diff suppressed because it is too large Load Diff

5
test_files/h2o.xyz Normal file
View File

@ -0,0 +1,5 @@
3
Water
O 0. 0. 0.
H -0.756950272703377558 0. -0.585882234512562827
H 0.756950272703377558 0. -0.585882234512562827