mirror of
https://github.com/LCPQ/quantum_package
synced 2024-12-23 04:43:50 +01:00
Accelerated EZFIO in ocaml. === UPDATE EZFIO to 1.1.9 ===
This commit is contained in:
parent
57b3a7702b
commit
aa682e3311
@ -46,29 +46,29 @@ end = struct
|
|||||||
;;
|
;;
|
||||||
|
|
||||||
let read_ao_prim_num () =
|
let read_ao_prim_num () =
|
||||||
(Ezfio.get_ao_basis_ao_prim_num () ).Ezfio.data
|
Ezfio.get_ao_basis_ao_prim_num ()
|
||||||
|> Ezfio.flattened_ezfio_data
|
|> Ezfio.flattened_ezfio
|
||||||
|> Array.map ~f:AO_prim_number.of_int
|
|> Array.map ~f:AO_prim_number.of_int
|
||||||
;;
|
;;
|
||||||
|
|
||||||
let read_ao_prim_num_max () =
|
let read_ao_prim_num_max () =
|
||||||
(Ezfio.get_ao_basis_ao_prim_num () ).Ezfio.data
|
Ezfio.get_ao_basis_ao_prim_num ()
|
||||||
|> Ezfio.flattened_ezfio_data
|
|> Ezfio.flattened_ezfio
|
||||||
|> Array.fold ~f:(fun x y -> if x>y then x else y) ~init:0
|
|> Array.fold ~f:(fun x y -> if x>y then x else y) ~init:0
|
||||||
|> AO_prim_number.of_int
|
|> AO_prim_number.of_int
|
||||||
;;
|
;;
|
||||||
|
|
||||||
let read_ao_nucl () =
|
let read_ao_nucl () =
|
||||||
let nmax = Nucl_number.get_max () in
|
let nmax = Nucl_number.get_max () in
|
||||||
(Ezfio.get_ao_basis_ao_nucl () ).Ezfio.data
|
Ezfio.get_ao_basis_ao_nucl ()
|
||||||
|> Ezfio.flattened_ezfio_data
|
|> Ezfio.flattened_ezfio
|
||||||
|> Array.map ~f:(fun x-> Nucl_number.of_int ~max:nmax x)
|
|> Array.map ~f:(fun x-> Nucl_number.of_int ~max:nmax x)
|
||||||
;;
|
;;
|
||||||
|
|
||||||
let read_ao_power () =
|
let read_ao_power () =
|
||||||
let x = Ezfio.get_ao_basis_ao_power () in
|
let x = Ezfio.get_ao_basis_ao_power () in
|
||||||
let dim = x.Ezfio.dim.(0) in
|
let dim = x.Ezfio.dim.(0) in
|
||||||
let data = Ezfio.flattened_ezfio_data x.Ezfio.data in
|
let data = Ezfio.flattened_ezfio x in
|
||||||
let result = Array.init dim ~f:(fun x -> "") in
|
let result = Array.init dim ~f:(fun x -> "") in
|
||||||
for i=1 to dim
|
for i=1 to dim
|
||||||
do
|
do
|
||||||
@ -83,14 +83,14 @@ end = struct
|
|||||||
;;
|
;;
|
||||||
|
|
||||||
let read_ao_coef () =
|
let read_ao_coef () =
|
||||||
(Ezfio.get_ao_basis_ao_coef () ).Ezfio.data
|
Ezfio.get_ao_basis_ao_coef ()
|
||||||
|> Ezfio.flattened_ezfio_data
|
|> Ezfio.flattened_ezfio
|
||||||
|> Array.map ~f:AO_coef.of_float
|
|> Array.map ~f:AO_coef.of_float
|
||||||
;;
|
;;
|
||||||
|
|
||||||
let read_ao_expo () =
|
let read_ao_expo () =
|
||||||
(Ezfio.get_ao_basis_ao_expo () ).Ezfio.data
|
Ezfio.get_ao_basis_ao_expo ()
|
||||||
|> Ezfio.flattened_ezfio_data
|
|> Ezfio.flattened_ezfio
|
||||||
|> Array.map ~f:AO_expo.of_float
|
|> Array.map ~f:AO_expo.of_float
|
||||||
;;
|
;;
|
||||||
|
|
||||||
|
@ -72,8 +72,8 @@ end = struct
|
|||||||
in
|
in
|
||||||
Ezfio.set_bitmasks_generators generators
|
Ezfio.set_bitmasks_generators generators
|
||||||
end;
|
end;
|
||||||
(Ezfio.get_bitmasks_generators ()).Ezfio.data
|
Ezfio.get_bitmasks_generators ()
|
||||||
|> Ezfio.flattened_ezfio_data
|
|> Ezfio.flattened_ezfio
|
||||||
;;
|
;;
|
||||||
|
|
||||||
let read () =
|
let read () =
|
||||||
|
@ -169,8 +169,8 @@ end = struct
|
|||||||
Ezfio.ezfio_array_of_list ~rank:1 ~dim:[| 1 |] ~data:[1.]
|
Ezfio.ezfio_array_of_list ~rank:1 ~dim:[| 1 |] ~data:[1.]
|
||||||
|> Ezfio.set_determinants_psi_coef
|
|> Ezfio.set_determinants_psi_coef
|
||||||
;
|
;
|
||||||
(Ezfio.get_determinants_psi_coef ()).Ezfio.data
|
Ezfio.get_determinants_psi_coef ()
|
||||||
|> Ezfio.flattened_ezfio_data
|
|> Ezfio.flattened_ezfio
|
||||||
|> Array.map ~f:Det_coef.of_float
|
|> Array.map ~f:Det_coef.of_float
|
||||||
;;
|
;;
|
||||||
|
|
||||||
@ -192,7 +192,7 @@ end = struct
|
|||||||
(Bitlist.to_int64_list det_b) )
|
(Bitlist.to_int64_list det_b) )
|
||||||
in
|
in
|
||||||
Ezfio.ezfio_array_of_list ~rank:3 ~dim:[| N_int_number.to_int n_int ; 2 ; 1 |] ~data:data
|
Ezfio.ezfio_array_of_list ~rank:3 ~dim:[| N_int_number.to_int n_int ; 2 ; 1 |] ~data:data
|
||||||
|> Ezfio.set_determinants_psi_det
|
|> Ezfio.set_determinants_psi_det ;
|
||||||
end ;
|
end ;
|
||||||
(*
|
(*
|
||||||
let rec transform accu1 accu2 n_rest = function
|
let rec transform accu1 accu2 n_rest = function
|
||||||
@ -217,7 +217,7 @@ end = struct
|
|||||||
let n_int = N_int_number.to_int n_int in
|
let n_int = N_int_number.to_int n_int in
|
||||||
let psi_det_array = Ezfio.get_determinants_psi_det () in
|
let psi_det_array = Ezfio.get_determinants_psi_det () in
|
||||||
let dim = psi_det_array.Ezfio.dim
|
let dim = psi_det_array.Ezfio.dim
|
||||||
and data = Ezfio.flattened_ezfio_data psi_det_array.Ezfio.data
|
and data = Ezfio.flattened_ezfio psi_det_array
|
||||||
in
|
in
|
||||||
assert (n_int = dim.(0));
|
assert (n_int = dim.(0));
|
||||||
assert (dim.(1) = 2);
|
assert (dim.(1) = 2);
|
||||||
|
@ -51,14 +51,13 @@ end = struct
|
|||||||
~dim:[| mo_tot_num |] ~data:data
|
~dim:[| mo_tot_num |] ~data:data
|
||||||
|> Ezfio.set_mo_basis_mo_occ
|
|> Ezfio.set_mo_basis_mo_occ
|
||||||
end;
|
end;
|
||||||
(Ezfio.get_mo_basis_mo_occ () ).Ezfio.data
|
Ezfio.flattened_ezfio (Ezfio.get_mo_basis_mo_occ () )
|
||||||
|> Ezfio.flattened_ezfio_data
|
|
||||||
|> Array.map ~f:MO_occ.of_float
|
|> Array.map ~f:MO_occ.of_float
|
||||||
;;
|
;;
|
||||||
|
|
||||||
let read_mo_coef () =
|
let read_mo_coef () =
|
||||||
let a = (Ezfio.get_mo_basis_mo_coef () ).Ezfio.data
|
let a = Ezfio.get_mo_basis_mo_coef ()
|
||||||
|> Ezfio.flattened_ezfio_data
|
|> Ezfio.flattened_ezfio
|
||||||
|> Array.map ~f:MO_coef.of_float
|
|> Array.map ~f:MO_coef.of_float
|
||||||
in
|
in
|
||||||
let mo_tot_num = read_mo_tot_num () |> MO_number.to_int in
|
let mo_tot_num = read_mo_tot_num () |> MO_number.to_int in
|
||||||
|
@ -31,22 +31,22 @@ end = struct
|
|||||||
;;
|
;;
|
||||||
|
|
||||||
let read_nucl_label () =
|
let read_nucl_label () =
|
||||||
(Ezfio.get_nuclei_nucl_label ()).Ezfio.data
|
Ezfio.get_nuclei_nucl_label ()
|
||||||
|> Ezfio.flattened_ezfio_data
|
|> Ezfio.flattened_ezfio
|
||||||
|> Array.map ~f:Element.of_string
|
|> Array.map ~f:Element.of_string
|
||||||
;;
|
;;
|
||||||
|
|
||||||
let read_nucl_charge () =
|
let read_nucl_charge () =
|
||||||
(Ezfio.get_nuclei_nucl_charge () ).Ezfio.data
|
Ezfio.get_nuclei_nucl_charge ()
|
||||||
|> Ezfio.flattened_ezfio_data
|
|> Ezfio.flattened_ezfio
|
||||||
|> Array.map ~f:Charge.of_float
|
|> Array.map ~f:Charge.of_float
|
||||||
;;
|
;;
|
||||||
|
|
||||||
let read_nucl_coord () =
|
let read_nucl_coord () =
|
||||||
let nucl_num = Nucl_number.to_int (read_nucl_num ()) in
|
let nucl_num = Nucl_number.to_int (read_nucl_num ()) in
|
||||||
let raw_data =
|
let raw_data =
|
||||||
(Ezfio.get_nuclei_nucl_coord() ).Ezfio.data
|
Ezfio.get_nuclei_nucl_coord()
|
||||||
|> Ezfio.flattened_ezfio_data
|
|> Ezfio.flattened_ezfio
|
||||||
in
|
in
|
||||||
let zero = Point3d.of_string Units.Bohr "0. 0. 0." in
|
let zero = Point3d.of_string Units.Bohr "0. 0. 0." in
|
||||||
let result = Array.create nucl_num zero in
|
let result = Array.create nucl_num zero in
|
||||||
|
@ -52,8 +52,8 @@ let run_i ~action ezfio_filename =
|
|||||||
|
|
||||||
let compute_charge () =
|
let compute_charge () =
|
||||||
let input = Input.Electrons.read () in
|
let input = Input.Electrons.read () in
|
||||||
let nucl_charge = Ezfio.((get_nuclei_nucl_charge ()).data)
|
let nucl_charge = Ezfio.get_nuclei_nucl_charge ()
|
||||||
|> Ezfio.flattened_ezfio_data |> Array.map ~f:(Float.to_int)
|
|> Ezfio.flattened_ezfio |> Array.map ~f:(Float.to_int)
|
||||||
and n_alpha = input.Input.Electrons.elec_alpha_num
|
and n_alpha = input.Input.Electrons.elec_alpha_num
|
||||||
|> Elec_alpha_number.to_int
|
|> Elec_alpha_number.to_int
|
||||||
and n_beta = input.Input.Electrons.elec_beta_num
|
and n_beta = input.Input.Electrons.elec_beta_num
|
||||||
@ -71,14 +71,14 @@ let run_i ~action ezfio_filename =
|
|||||||
|
|
||||||
let create_molecule () =
|
let create_molecule () =
|
||||||
let nucl_num = Ezfio.get_nuclei_nucl_num ()
|
let nucl_num = Ezfio.get_nuclei_nucl_num ()
|
||||||
and nucl_charge = Ezfio.((get_nuclei_nucl_charge ()).data)
|
and nucl_charge = Ezfio.get_nuclei_nucl_charge ()
|
||||||
|> Ezfio.flattened_ezfio_data
|
|> Ezfio.flattened_ezfio
|
||||||
and nucl_coord = Ezfio.((get_nuclei_nucl_coord ()).data )
|
and nucl_coord = Ezfio.get_nuclei_nucl_coord ()
|
||||||
|> Ezfio.flattened_ezfio_data
|
|> Ezfio.flattened_ezfio
|
||||||
in
|
in
|
||||||
let nucl_label =
|
let nucl_label =
|
||||||
if (Ezfio.has_nuclei_nucl_label ()) then
|
if (Ezfio.has_nuclei_nucl_label ()) then
|
||||||
Ezfio.((get_nuclei_nucl_label ()).data) |> Ezfio.flattened_ezfio_data
|
Ezfio.get_nuclei_nucl_label () |> Ezfio.flattened_ezfio
|
||||||
else
|
else
|
||||||
Array.map ~f:(fun x-> x
|
Array.map ~f:(fun x-> x
|
||||||
|> Charge.of_float
|
|> Charge.of_float
|
||||||
|
Loading…
Reference in New Issue
Block a user