mirror of
https://github.com/LCPQ/quantum_package
synced 2024-10-31 19:23:50 +01:00
Write electrons with qp_edit
This commit is contained in:
parent
fb2b7966e1
commit
bab7aac3a8
@ -24,12 +24,35 @@ let to_bitlist_couple x =
|
||||
in (xa,xb)
|
||||
;;
|
||||
|
||||
let bitlist_to_string ~mo_tot_num x =
|
||||
List.map x ~f:(fun i -> match i with
|
||||
| Bit.Zero -> "-"
|
||||
| Bit.One -> "+" )
|
||||
|> String.concat
|
||||
|> String.sub ~pos:0 ~len:(MO_number.to_int mo_tot_num)
|
||||
;;
|
||||
|
||||
|
||||
let of_int64_array ~n_int ~alpha ~beta x =
|
||||
assert ((Array.length x) = (N_int_number.to_int n_int)*2) ;
|
||||
let (a,b) = to_bitlist_couple x in
|
||||
assert (Bitlist.popcnt a = Elec_alpha_number.to_int alpha);
|
||||
assert (Bitlist.popcnt b = Elec_beta_number.to_int beta );
|
||||
let (a,b) = to_bitlist_couple x
|
||||
and alpha = Elec_alpha_number.to_int alpha
|
||||
and beta = Elec_beta_number.to_int beta
|
||||
in
|
||||
if ( (Bitlist.popcnt a) <> alpha) then
|
||||
begin
|
||||
let mo_tot_num = MO_number.get_max () in
|
||||
let mo_tot_num = MO_number.of_int mo_tot_num ~max:mo_tot_num in
|
||||
failwith (Printf.sprintf "Expected %d electrons in alpha determinant
|
||||
%s" alpha (bitlist_to_string ~mo_tot_num:mo_tot_num a) )
|
||||
end;
|
||||
if ( (Bitlist.popcnt b) <> beta ) then
|
||||
begin
|
||||
let mo_tot_num = MO_number.get_max () in
|
||||
let mo_tot_num = MO_number.of_int mo_tot_num ~max:mo_tot_num in
|
||||
failwith (Printf.sprintf "Expected %d electrons in beta determinant
|
||||
%s" beta (bitlist_to_string ~mo_tot_num:mo_tot_num b) )
|
||||
end;
|
||||
x
|
||||
;;
|
||||
|
||||
@ -40,14 +63,6 @@ let of_bitlist_couple ~alpha ~beta (xa,xb) =
|
||||
of_int64_array ~n_int:n_int ~alpha:alpha ~beta:beta (Array.of_list (ba@bb))
|
||||
;;
|
||||
|
||||
let bitlist_to_string ~mo_tot_num x =
|
||||
List.map x ~f:(fun i -> match i with
|
||||
| Bit.Zero -> "-"
|
||||
| Bit.One -> "+" )
|
||||
|> String.concat
|
||||
|> String.sub ~pos:0 ~len:(MO_number.to_int mo_tot_num)
|
||||
;;
|
||||
|
||||
let to_string ~mo_tot_num x =
|
||||
let (xa,xb) = to_bitlist_couple x in
|
||||
[ bitlist_to_string ~mo_tot_num:mo_tot_num xa ;
|
||||
|
@ -8,7 +8,8 @@ module Electrons : sig
|
||||
elec_beta_num : Elec_beta_number.t;
|
||||
} with sexp
|
||||
;;
|
||||
val read : unit -> t
|
||||
val read : unit -> t
|
||||
val write : t -> unit
|
||||
val read_elec_num : unit -> Elec_number.t
|
||||
val to_string : t -> string
|
||||
val to_rst : t -> Rst_string.t
|
||||
@ -27,11 +28,22 @@ end = struct
|
||||
|> Elec_alpha_number.of_int
|
||||
;;
|
||||
|
||||
let write_elec_alpha_num n =
|
||||
Elec_alpha_number.to_int n
|
||||
|> Ezfio.set_electrons_elec_alpha_num
|
||||
;;
|
||||
|
||||
|
||||
let read_elec_beta_num() =
|
||||
Ezfio.get_electrons_elec_beta_num ()
|
||||
|> Elec_beta_number.of_int
|
||||
;;
|
||||
|
||||
let write_elec_beta_num n =
|
||||
Elec_beta_number.to_int n
|
||||
|> Ezfio.set_electrons_elec_beta_num
|
||||
;;
|
||||
|
||||
let read_elec_num () =
|
||||
let na = Ezfio.get_electrons_elec_alpha_num ()
|
||||
and nb = Ezfio.get_electrons_elec_beta_num ()
|
||||
@ -46,6 +58,12 @@ end = struct
|
||||
}
|
||||
;;
|
||||
|
||||
let write { elec_alpha_num ; elec_beta_num } =
|
||||
write_elec_alpha_num elec_alpha_num;
|
||||
write_elec_beta_num elec_beta_num;
|
||||
;;
|
||||
|
||||
|
||||
let to_rst b =
|
||||
Printf.sprintf "
|
||||
Spin multiplicity is %s.
|
||||
|
@ -86,8 +86,10 @@ let set str s =
|
||||
| Full_ci ->
|
||||
| Hartree_fock ->
|
||||
| Mo_basis ->
|
||||
| Electrons ->
|
||||
*)
|
||||
| Electrons ->
|
||||
Input.Electrons.of_rst str
|
||||
|> Input.Electrons.write
|
||||
| Determinants ->
|
||||
Input.Determinants.of_rst str
|
||||
|> Input.Determinants.write
|
||||
@ -128,12 +130,8 @@ let run ezfio_filename =
|
||||
(*
|
||||
let output = (file_header ezfio_filename) :: (
|
||||
List.map ~f:get [
|
||||
Nuclei ;
|
||||
Electrons ;
|
||||
Ao_basis ;
|
||||
Mo_basis ;
|
||||
Bielec_integrals ;
|
||||
Determinants ;
|
||||
Full_ci ;
|
||||
Hartree_fock ;
|
||||
])
|
||||
@ -144,6 +142,7 @@ let run ezfio_filename =
|
||||
|
||||
let tasks = [
|
||||
Nuclei ;
|
||||
Electrons ;
|
||||
Bielec_integrals ;
|
||||
Cisd_sc2 ;
|
||||
Determinants ;
|
||||
|
Loading…
Reference in New Issue
Block a user