mirror of
https://github.com/LCPQ/quantum_package
synced 2024-12-22 20:35:19 +01:00
Now ocaml compiles again
This commit is contained in:
parent
ed0e5ffdf4
commit
be4baee2e8
60
ocaml/Generic_input_of_rst.ml
Normal file
60
ocaml/Generic_input_of_rst.ml
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
open Core.Std;;
|
||||||
|
open Qptypes;;
|
||||||
|
|
||||||
|
|
||||||
|
let fail_msg str (ex,range) =
|
||||||
|
let msg = match ex with
|
||||||
|
| Failure msg -> msg
|
||||||
|
| _ -> raise ex
|
||||||
|
in
|
||||||
|
let range = match range with
|
||||||
|
| Sexp.Annotated.Atom (range,_) -> range
|
||||||
|
| Sexp.Annotated.List (range,_,_) -> range
|
||||||
|
in
|
||||||
|
let open Sexp.Annotated in
|
||||||
|
let start_pos = range.start_pos.offset
|
||||||
|
and end_pos = range.end_pos.offset
|
||||||
|
in
|
||||||
|
let pre = String.sub ~pos:0 ~len:start_pos str
|
||||||
|
and mid = String.sub ~pos:start_pos ~len:(end_pos-start_pos) str
|
||||||
|
and post = String.sub ~pos:(end_pos)
|
||||||
|
~len:((String.length str)-(end_pos)) str
|
||||||
|
in
|
||||||
|
let str = Printf.sprintf "%s ## %s ## %s" pre mid post
|
||||||
|
in
|
||||||
|
let str = String.tr str ~target:'(' ~replacement:' '
|
||||||
|
|> String.split ~on:')'
|
||||||
|
|> List.map ~f:String.strip
|
||||||
|
|> List.filter ~f:(fun x ->
|
||||||
|
match String.substr_index x ~pos:0 ~pattern:"##" with
|
||||||
|
| None -> false
|
||||||
|
| Some _ -> true
|
||||||
|
)
|
||||||
|
|> String.concat ~sep:"\n"
|
||||||
|
in
|
||||||
|
Printf.eprintf "Error: (%s)\n\n %s\n\n" msg str;
|
||||||
|
;;
|
||||||
|
|
||||||
|
|
||||||
|
let evaluate_sexp t_of_sexp s =
|
||||||
|
let sexp = ("("^s^")") in
|
||||||
|
match ( Sexp.of_string_conv sexp t_of_sexp ) with
|
||||||
|
| `Result r -> Some r
|
||||||
|
| `Error ex -> ( fail_msg sexp ex; None)
|
||||||
|
;;
|
||||||
|
|
||||||
|
let of_rst t_of_sexp s =
|
||||||
|
Rst_string.to_string s
|
||||||
|
|> String.split ~on:'\n'
|
||||||
|
|> List.filter ~f:(fun line ->
|
||||||
|
String.contains line '=')
|
||||||
|
|> List.map ~f:(fun line ->
|
||||||
|
"("^(
|
||||||
|
String.tr line ~target:'=' ~replacement:' '
|
||||||
|
)^")" )
|
||||||
|
|> String.concat
|
||||||
|
|> evaluate_sexp t_of_sexp
|
||||||
|
;;
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -11,7 +11,7 @@ endif
|
|||||||
LIBS=
|
LIBS=
|
||||||
PKGS=
|
PKGS=
|
||||||
OCAMLCFLAGS="-g -warn-error A"
|
OCAMLCFLAGS="-g -warn-error A"
|
||||||
OCAMLBUILD=ocamlbuild -j 0 -syntax camlp4o -cflags $(OCAMLCFLAGS) -lflags $(OCAMLCFLAGS)
|
OCAMLBUILD=ocamlbuild -j 0 -syntax camlp4o -cflags $(OCAMLCFLAGS) -lflags $(OCAMLCFLAGS) -ocamlopt ocamlc.opt
|
||||||
MLFILES=$(wildcard *.ml) ezfio.ml Qptypes.ml
|
MLFILES=$(wildcard *.ml) ezfio.ml Qptypes.ml
|
||||||
MLIFILES=$(wildcard *.mli)
|
MLIFILES=$(wildcard *.mli)
|
||||||
ALL_TESTS=$(patsubst %.ml,%.byte,$(wildcard test_*.ml))
|
ALL_TESTS=$(patsubst %.ml,%.byte,$(wildcard test_*.ml))
|
||||||
|
@ -228,9 +228,9 @@ let parse_input_ezfio input=
|
|||||||
and (min, max) = String.lsplit2_exn ~on:':' c
|
and (min, max) = String.lsplit2_exn ~on:':' c
|
||||||
and msg = d
|
and msg = d
|
||||||
in
|
in
|
||||||
let name :: typ :: ezfio_func :: min :: max :: msg :: [] =
|
let (name, typ, ezfio_func, min, max, msg) =
|
||||||
match (name :: typ :: ezfio_func :: min :: max :: msg :: []) with
|
match (List.map [ name ; typ ; ezfio_func ; min ; max ; msg ] ~f:String.strip) with
|
||||||
| l -> List.map ~f:String.strip l
|
| [ name ; typ ; ezfio_func ; min ; max ; msg ] -> (name, typ, ezfio_func, min, max, msg)
|
||||||
| _ -> assert false
|
| _ -> assert false
|
||||||
in
|
in
|
||||||
Printf.sprintf ezfio_template
|
Printf.sprintf ezfio_template
|
||||||
|
@ -9,12 +9,12 @@ let test_module () =
|
|||||||
In_channel.create (Qpackage.root^"/data/basis/"^(String.lowercase b))
|
In_channel.create (Qpackage.root^"/data/basis/"^(String.lowercase b))
|
||||||
in
|
in
|
||||||
|
|
||||||
|
(*
|
||||||
let molecule =
|
let molecule =
|
||||||
let xyz_file = "F2.xyz" in
|
let xyz_file = "F2.xyz" in
|
||||||
Molecule.of_xyz_file xyz_file
|
Molecule.of_xyz_file xyz_file
|
||||||
in
|
in
|
||||||
|
*)
|
||||||
let nuclei = molecule.Molecule.nuclei in
|
|
||||||
|
|
||||||
let basis =
|
let basis =
|
||||||
(Basis.read_element basis_channel (Nucl_number.of_int 1) Element.F) @
|
(Basis.read_element basis_channel (Nucl_number.of_int 1) Element.F) @
|
||||||
|
@ -16,7 +16,10 @@ let test_bielec_intergals () =
|
|||||||
in
|
in
|
||||||
print_endline output;
|
print_endline output;
|
||||||
let rst = Input.Bielec_integrals.to_rst b in
|
let rst = Input.Bielec_integrals.to_rst b in
|
||||||
let b2 = Input.Bielec_integrals.of_rst rst in
|
let b2 = match Input.Bielec_integrals.of_rst rst with
|
||||||
|
| Some x -> x
|
||||||
|
| None -> assert false
|
||||||
|
in
|
||||||
if (b = b2) then
|
if (b = b2) then
|
||||||
print_endline "OK"
|
print_endline "OK"
|
||||||
else
|
else
|
||||||
@ -43,8 +46,11 @@ let test_dets () =
|
|||||||
in
|
in
|
||||||
print_endline (Input.Determinants.to_rst b |> Rst_string.to_string ) ;
|
print_endline (Input.Determinants.to_rst b |> Rst_string.to_string ) ;
|
||||||
print_endline (Input.Determinants.sexp_of_t b |> Sexplib.Sexp.to_string ) ;
|
print_endline (Input.Determinants.sexp_of_t b |> Sexplib.Sexp.to_string ) ;
|
||||||
let r = Input.Determinants.to_rst b in
|
let rst = Input.Determinants.to_rst b in
|
||||||
let b2 = Input.Determinants.of_rst r in
|
let b2 = match Input.Determinants.of_rst rst with
|
||||||
|
| Some x -> x
|
||||||
|
| None -> assert false
|
||||||
|
in
|
||||||
if (b2 = b) then
|
if (b2 = b) then
|
||||||
print_endline "OK"
|
print_endline "OK"
|
||||||
else
|
else
|
||||||
@ -57,7 +63,10 @@ let test_cisd_sc2 () =
|
|||||||
in
|
in
|
||||||
print_endline (Input.Cisd_sc2.to_string b);
|
print_endline (Input.Cisd_sc2.to_string b);
|
||||||
let rst = Input.Cisd_sc2.to_rst b in
|
let rst = Input.Cisd_sc2.to_rst b in
|
||||||
let b2 = Input.Cisd_sc2.of_rst rst in
|
let b2 = match Input.Cisd_sc2.of_rst rst with
|
||||||
|
| Some x -> x
|
||||||
|
| None -> assert false
|
||||||
|
in
|
||||||
if (b = b2) then
|
if (b = b2) then
|
||||||
print_endline "OK"
|
print_endline "OK"
|
||||||
else
|
else
|
||||||
@ -71,8 +80,11 @@ let test_electrons () =
|
|||||||
in
|
in
|
||||||
print_endline (Input.Electrons.to_string b);
|
print_endline (Input.Electrons.to_string b);
|
||||||
let rst = Input.Electrons.to_rst b in
|
let rst = Input.Electrons.to_rst b in
|
||||||
let new_b = Input.Electrons.of_rst rst in
|
let b2 = match Input.Electrons.of_rst rst with
|
||||||
if (b = new_b) then
|
| Some x -> x
|
||||||
|
| None -> assert false
|
||||||
|
in
|
||||||
|
if (b = b2) then
|
||||||
print_endline "OK"
|
print_endline "OK"
|
||||||
else
|
else
|
||||||
print_endline "Failed in rst"
|
print_endline "Failed in rst"
|
||||||
@ -84,9 +96,12 @@ let test_fci () =
|
|||||||
in
|
in
|
||||||
print_endline (Input.Full_ci.to_string b);
|
print_endline (Input.Full_ci.to_string b);
|
||||||
let rst = Input.Full_ci.to_rst b in
|
let rst = Input.Full_ci.to_rst b in
|
||||||
let new_b = Input.Full_ci.of_rst rst in
|
let b2 = match Input.Full_ci.of_rst rst with
|
||||||
|
| Some x -> x
|
||||||
|
| None -> assert false
|
||||||
|
in
|
||||||
print_endline (Input.Full_ci.to_string b);
|
print_endline (Input.Full_ci.to_string b);
|
||||||
if (b = new_b) then
|
if (b = b2) then
|
||||||
print_endline "OK"
|
print_endline "OK"
|
||||||
else
|
else
|
||||||
print_endline "Failed in rst"
|
print_endline "Failed in rst"
|
||||||
@ -98,9 +113,12 @@ let test_hf () =
|
|||||||
in
|
in
|
||||||
print_endline (Input.Hartree_fock.to_string b);
|
print_endline (Input.Hartree_fock.to_string b);
|
||||||
let rst = Input.Hartree_fock.to_rst b in
|
let rst = Input.Hartree_fock.to_rst b in
|
||||||
let new_b = Input.Hartree_fock.of_rst rst in
|
let b2 = match Input.Hartree_fock.of_rst rst with
|
||||||
|
| Some x -> x
|
||||||
|
| None -> assert false
|
||||||
|
in
|
||||||
print_endline (Input.Hartree_fock.to_string b);
|
print_endline (Input.Hartree_fock.to_string b);
|
||||||
if (b = new_b) then
|
if (b = b2) then
|
||||||
print_endline "OK"
|
print_endline "OK"
|
||||||
else
|
else
|
||||||
print_endline "Failed in rst"
|
print_endline "Failed in rst"
|
||||||
@ -117,9 +135,12 @@ let test_nucl () =
|
|||||||
Ezfio.set_file "F2.ezfio" ;
|
Ezfio.set_file "F2.ezfio" ;
|
||||||
let b = Input.Nuclei.read () in
|
let b = Input.Nuclei.read () in
|
||||||
let rst = Input.Nuclei.to_rst b in
|
let rst = Input.Nuclei.to_rst b in
|
||||||
let new_b = Input.Nuclei.of_rst rst in
|
let b2 = match Input.Nuclei.of_rst rst with
|
||||||
|
| Some x -> x
|
||||||
|
| None -> assert false
|
||||||
|
in
|
||||||
print_endline (Input.Nuclei.to_string b);
|
print_endline (Input.Nuclei.to_string b);
|
||||||
if (b = new_b) then
|
if (b = b2) then
|
||||||
print_endline "OK"
|
print_endline "OK"
|
||||||
else
|
else
|
||||||
print_endline "Failed in rst"
|
print_endline "Failed in rst"
|
||||||
|
@ -148,7 +148,6 @@ subroutine make_s2_eigenfunction
|
|||||||
integer, parameter :: bufsze = 1000
|
integer, parameter :: bufsze = 1000
|
||||||
logical, external :: is_in_wavefunction
|
logical, external :: is_in_wavefunction
|
||||||
|
|
||||||
print *, irp_here
|
|
||||||
! !TODO DEBUG
|
! !TODO DEBUG
|
||||||
! do i=1,N_det
|
! do i=1,N_det
|
||||||
! do j=i+1,N_det
|
! do j=i+1,N_det
|
||||||
|
Loading…
Reference in New Issue
Block a user