let out_file : string option ref = ref None let basis_file : string option ref = ref None let nuclei_file : string option ref = ref None let speclist = [ ( "-b" , Arg.String (fun x -> basis_file := Some x), "File containing the atomic basis set") ; ( "-c" , Arg.String (fun x -> nuclei_file := Some x), "File containing the nuclear coordinates") ; ( "-o" , Arg.String (fun x -> out_file := Some x) , "Output file") ; ] let run ~out = let out_file = match out with | None -> raise (Invalid_argument "Output file should be specified with -o") | Some x -> x and basis_file = match !basis_file with | None -> raise (Invalid_argument "Basis set file should be specified with -b") | Some x -> x and nuclei_file = match !nuclei_file with | None -> raise (Invalid_argument "Coordinate file should be specified with -c") | Some x -> x in let s = Simulation.of_filenames ~nuclei:nuclei_file basis_file in print_endline @@ Nuclei.to_string @@ Simulation.nuclei s; print_endline "Nuclear repulsion : "; print_float @@ Simulation.nuclear_repulsion s; print_newline (); print_endline @@ Basis.to_string @@ Simulation.basis s; let ao_basis = Simulation.ao_basis s in let overlap = AOBasis.overlap ao_basis in let eN_ints = AOBasis.eN_ints ao_basis in let kin_ints = AOBasis.kin_ints ao_basis in let ee_ints = AOBasis.ee_ints ao_basis in Overlap.to_file ~filename:(out_file^".overlap") overlap; NucInt.to_file ~filename:(out_file^".nuc") eN_ints; KinInt.to_file ~filename:(out_file^".kin") kin_ints; ERI.to_file ~filename:(out_file^".eri") ee_ints let () = let usage_msg = "Available options:" in Arg.parse speclist (fun _ -> ()) usage_msg; run ~out:!out_file