10
1
mirror of https://gitlab.com/scemama/qmcchem.git synced 2024-11-15 02:23:38 +01:00
qmcchem/ocaml/Qptypes.ml

831 lines
33 KiB
OCaml

open Core.Std
let warning = print_string
module Positive_float : sig
type t with sexp
val to_float : t -> float
val of_float : float -> t
val to_string : t -> string
end = struct
type t = float with sexp
let to_float x = x
let of_float x = ( assert (x >= 0.) ; x )
let to_string x = Float.to_string x
end
module Strictly_positive_float : sig
type t with sexp
val to_float : t -> float
val of_float : float -> t
val to_string : t -> string
end = struct
type t = float with sexp
let to_float x = x
let of_float x = ( assert (x > 0.) ; x )
let to_string x = Float.to_string x
end
module Negative_float : sig
type t with sexp
val to_float : t -> float
val of_float : float -> t
val to_string : t -> string
end = struct
type t = float with sexp
let to_float x = x
let of_float x = ( assert (x <= 0.) ; x )
let to_string x = Float.to_string x
end
module Strictly_negative_float : sig
type t with sexp
val to_float : t -> float
val of_float : float -> t
val to_string : t -> string
end = struct
type t = float with sexp
let to_float x = x
let of_float x = ( assert (x < 0.) ; x )
let to_string x = Float.to_string x
end
module Positive_int : sig
type t with sexp
val to_int : t -> int
val of_int : int -> t
val to_string : t -> string
end = struct
type t = int with sexp
let to_int x = x
let of_int x = ( assert (x >= 0) ; x )
let to_string x = Int.to_string x
end
module Strictly_positive_int : sig
type t with sexp
val to_int : t -> int
val of_int : int -> t
val to_string : t -> string
end = struct
type t = int with sexp
let to_int x = x
let of_int x = ( assert (x > 0) ; x )
let to_string x = Int.to_string x
end
module Negative_int : sig
type t with sexp
val to_int : t -> int
val of_int : int -> t
val to_string : t -> string
end = struct
type t = int with sexp
let to_int x = x
let of_int x = ( assert (x <= 0) ; x )
let to_string x = Int.to_string x
end
module Det_coef : sig
type t with sexp
val to_float : t -> float
val of_float : float -> t
val to_string : t -> string
end = struct
type t = float with sexp
let to_float x = x
let of_float x = ( assert (x >= -1.) ;
assert (x <= 1.) ; x )
let to_string x = Float.to_string x
end
module Normalized_float : sig
type t with sexp
val to_float : t -> float
val of_float : float -> t
val to_string : t -> string
end = struct
type t = float with sexp
let to_float x = x
let of_float x = ( assert (x <= 1.) ;
assert (x >= 0.) ; x )
let to_string x = Float.to_string x
end
module Strictly_negative_int : sig
type t with sexp
val to_int : t -> int
val of_int : int -> t
val to_string : t -> string
end = struct
type t = int with sexp
let to_int x = x
let of_int x = ( assert (x < 0) ; x )
let to_string x = Int.to_string x
end
module Non_empty_string : sig
type t with sexp
val to_string : t -> string
val of_string : string -> t
val to_string : t -> string
end = struct
type t = string with sexp
let to_string x = x
let of_string x = ( assert (x <> "") ; x )
let to_string x = String.to_string x
end
module Det_number_max : sig
type t with sexp
val to_int : t -> int
val of_int : int -> t
val to_string : t -> string
end = struct
type t = int with sexp
let to_int x = x
let of_int x = ( assert (x > 0) ;
if (x > 100000000) then
warning "More than 100 million determinants"; x )
let to_string x = Int.to_string x
end
module MO_coef : sig
type t with sexp
val to_float : t -> float
val of_float : float -> t
val to_string : t -> string
end = struct
type t = float with sexp
let to_float x = x
let of_float x = ( x )
let to_string x = Float.to_string x
end
module MO_occ : sig
type t with sexp
val to_float : t -> float
val of_float : float -> t
val to_string : t -> string
end = struct
type t = float with sexp
let to_float x = x
let of_float x = ( assert (x >= 0.); x )
let to_string x = Float.to_string x
end
module AO_coef : sig
type t with sexp
val to_float : t -> float
val of_float : float -> t
val to_string : t -> string
end = struct
type t = float with sexp
let to_float x = x
let of_float x = ( x )
let to_string x = Float.to_string x
end
module AO_expo : sig
type t with sexp
val to_float : t -> float
val of_float : float -> t
val to_string : t -> string
end = struct
type t = float with sexp
let to_float x = x
let of_float x = ( assert (x >= 0.) ; x )
let to_string x = Float.to_string x
end
module AO_prim_number : sig
type t with sexp
val to_int : t -> int
val of_int : int -> t
val to_string : t -> string
end = struct
type t = int with sexp
let to_int x = x
let of_int x = ( assert (x > 0) ; x )
let to_string x = Int.to_string x
end
module Threshold : sig
type t with sexp
val to_float : t -> float
val of_float : float -> t
val to_string : t -> string
end = struct
type t = float with sexp
let to_float x = x
let of_float x = ( assert (x >= 0.) ;
assert (x <= 1.) ; x )
let to_string x = Float.to_string x
end
module PT2_energy : sig
type t with sexp
val to_float : t -> float
val of_float : float -> t
val to_string : t -> string
end = struct
type t = float with sexp
let to_float x = x
let of_float x = ( assert (x >=0.) ; x )
let to_string x = Float.to_string x
end
module Elec_alpha_number : sig
type t with sexp
val to_int : t -> int
val of_int : int -> t
val to_string : t -> string
end = struct
type t = int with sexp
let to_int x = x
let of_int x = ( assert (x > 0) ; x )
let to_string x = Int.to_string x
end
module Elec_beta_number : sig
type t with sexp
val to_int : t -> int
val of_int : int -> t
val to_string : t -> string
end = struct
type t = int with sexp
let to_int x = x
let of_int x = ( assert (x >= 0) ; x )
let to_string x = Int.to_string x
end
module Elec_number : sig
type t with sexp
val to_int : t -> int
val of_int : int -> t
val to_string : t -> string
end = struct
type t = int with sexp
let to_int x = x
let of_int x = ( assert (x > 0) ; x )
let to_string x = Int.to_string x
end
module MD5 : sig
type t with sexp
val to_string : t -> string
val of_string : string -> t
val to_string : t -> string
end = struct
type t = string with sexp
let to_string x = x
let of_string x = ( assert ((String.length x) = 32); x )
let to_string x = String.to_string x
end
module Rst_string : sig
type t with sexp
val to_string : t -> string
val of_string : string -> t
val to_string : t -> string
end = struct
type t = string with sexp
let to_string x = x
let of_string x = ( x )
let to_string x = String.to_string x
end
module Weight : sig
type t with sexp
val to_float : t -> float
val of_float : float -> t
val to_string : t -> string
end = struct
type t = float with sexp
let to_float x = x
let of_float x = ( assert (x >= 0.) ; x )
let to_string x = Float.to_string x
end
module Block_id : sig
type t with sexp
val to_int : t -> int
val of_int : int -> t
val to_string : t -> string
end = struct
type t = int with sexp
let to_int x = x
let of_int x = ( assert (x > 0) ; x )
let to_string x = Int.to_string x
end
module Compute_node : sig
type t with sexp
val to_string : t -> string
val of_string : string -> t
val to_string : t -> string
end = struct
type t = string with sexp
let to_string x = x
let of_string x = ( assert (x <> "") ; x )
let to_string x = String.to_string x
end
module MO_number : sig
type t with sexp
val to_int : t -> int
val get_max : unit -> int
val of_int : ?min:int -> ?max:int -> int -> t
val to_string : t -> string
end = struct
type t = int with sexp
let to_string x = Int.to_string x
let get_max () =
if (Ezfio.has_mo_basis_mo_tot_num ()) then
Ezfio.get_mo_basis_mo_tot_num ()
else
10000
let get_min () =
1
let to_int x = x
let of_int ?(min=get_min ()) ?(max=get_max ()) x =
begin
assert (x >= min) ;
if (x > 10000) then
warning "More than 10000 MOs";
begin
match max with
| 1 -> ()
| i -> assert ( x <= i )
end ;
x
end
end
module AO_number : sig
type t with sexp
val to_int : t -> int
val get_max : unit -> int
val of_int : ?min:int -> ?max:int -> int -> t
val to_string : t -> string
end = struct
type t = int with sexp
let to_string x = Int.to_string x
let get_max () =
if (Ezfio.has_ao_basis_ao_num ()) then
Ezfio.get_ao_basis_ao_num ()
else
10000
let get_min () =
1
let to_int x = x
let of_int ?(min=get_min ()) ?(max=get_max ()) x =
begin
assert (x >= min) ;
if (x > 10000) then
warning "More than 10000 AOs";
begin
match max with
| 1 -> ()
| i -> assert ( x <= i )
end ;
x
end
end
module Nucl_number : sig
type t with sexp
val to_int : t -> int
val get_max : unit -> int
val of_int : ?min:int -> ?max:int -> int -> t
val to_string : t -> string
end = struct
type t = int with sexp
let to_string x = Int.to_string x
let get_max () =
if (Ezfio.has_nuclei_nucl_num ()) then
Ezfio.get_nuclei_nucl_num ()
else
10000
let get_min () =
1
let to_int x = x
let of_int ?(min=get_min ()) ?(max=get_max ()) x =
begin
assert (x >= min) ;
if (x > 10000) then
warning "More than 10000 nuclei";
begin
match max with
| 1 -> ()
| i -> assert ( x <= i )
end ;
x
end
end
let decode_ezfio_message msg =
match msg with
| "get_blocks_empty" -> Ezfio.read_string "blocks" "empty"
| "get_mo_basis_mo_tot_num" -> Ezfio.read_string "mo_basis" "mo_tot_num"
| "get_mo_basis_mo_coef" ->
Ezfio.read_string_array "mo_basis" "mo_coef"
|> Ezfio.flattened_ezfio
|> Array.to_list
|> String.concat ~sep:" "
| "get_mo_basis_mo_classif" ->
Ezfio.read_string_array "mo_basis" "mo_classif"
|> Ezfio.flattened_ezfio
|> Array.to_list
|> String.concat ~sep:" "
| "get_mo_basis_mo_energy" ->
Ezfio.read_string_array "mo_basis" "mo_energy"
|> Ezfio.flattened_ezfio
|> Array.to_list
|> String.concat ~sep:" "
| "get_mo_basis_mo_occ" ->
Ezfio.read_string_array "mo_basis" "mo_occ"
|> Ezfio.flattened_ezfio
|> Array.to_list
|> String.concat ~sep:" "
| "get_mo_basis_mo_symmetry" ->
Ezfio.read_string_array "mo_basis" "mo_symmetry"
|> Ezfio.flattened_ezfio
|> Array.to_list
|> String.concat ~sep:" "
| "get_pseudo_ao_pseudo_grid" ->
Ezfio.read_string_array "pseudo" "ao_pseudo_grid"
|> Ezfio.flattened_ezfio
|> Array.to_list
|> String.concat ~sep:" "
| "get_pseudo_do_pseudo" -> Ezfio.read_string "pseudo" "do_pseudo"
| "get_pseudo_mo_pseudo_grid" ->
Ezfio.read_string_array "pseudo" "mo_pseudo_grid"
|> Ezfio.flattened_ezfio
|> Array.to_list
|> String.concat ~sep:" "
| "get_pseudo_pseudo_dz_k" ->
Ezfio.read_string_array "pseudo" "pseudo_dz_k"
|> Ezfio.flattened_ezfio
|> Array.to_list
|> String.concat ~sep:" "
| "get_pseudo_pseudo_dz_kl" ->
Ezfio.read_string_array "pseudo" "pseudo_dz_kl"
|> Ezfio.flattened_ezfio
|> Array.to_list
|> String.concat ~sep:" "
| "get_pseudo_pseudo_grid_rmax" -> Ezfio.read_string "pseudo" "pseudo_grid_rmax"
| "get_pseudo_pseudo_grid_size" -> Ezfio.read_string "pseudo" "pseudo_grid_size"
| "get_pseudo_pseudo_klocmax" -> Ezfio.read_string "pseudo" "pseudo_klocmax"
| "get_pseudo_pseudo_kmax" -> Ezfio.read_string "pseudo" "pseudo_kmax"
| "get_pseudo_pseudo_lmax" -> Ezfio.read_string "pseudo" "pseudo_lmax"
| "get_pseudo_pseudo_n_k" ->
Ezfio.read_string_array "pseudo" "pseudo_n_k"
|> Ezfio.flattened_ezfio
|> Array.to_list
|> String.concat ~sep:" "
| "get_pseudo_pseudo_n_kl" ->
Ezfio.read_string_array "pseudo" "pseudo_n_kl"
|> Ezfio.flattened_ezfio
|> Array.to_list
|> String.concat ~sep:" "
| "get_pseudo_pseudo_v_k" ->
Ezfio.read_string_array "pseudo" "pseudo_v_k"
|> Ezfio.flattened_ezfio
|> Array.to_list
|> String.concat ~sep:" "
| "get_pseudo_pseudo_v_kl" ->
Ezfio.read_string_array "pseudo" "pseudo_v_kl"
|> Ezfio.flattened_ezfio
|> Array.to_list
|> String.concat ~sep:" "
| "get_ezfio_creation" -> Ezfio.read_string "ezfio" "creation"
| "get_ezfio_user" -> Ezfio.read_string "ezfio" "user"
| "get_ezfio_library" -> Ezfio.read_string "ezfio" "library"
| "get_ezfio_last_library" -> Ezfio.read_string "ezfio" "last_library"
| "get_simulation_do_run" -> Ezfio.read_string "simulation" "do_run"
| "get_simulation_stop_time" -> Ezfio.read_string "simulation" "stop_time"
| "get_simulation_equilibration" -> Ezfio.read_string "simulation" "equilibration"
| "get_simulation_title" -> Ezfio.read_string "simulation" "title"
| "get_simulation_http_server" -> Ezfio.read_string "simulation" "http_server"
| "get_simulation_do_jast" -> Ezfio.read_string "simulation" "do_jast"
| "get_simulation_do_nucl_fitcusp" -> Ezfio.read_string "simulation" "do_nucl_fitcusp"
| "get_simulation_method" -> Ezfio.read_string "simulation" "method"
| "get_simulation_block_time" -> Ezfio.read_string "simulation" "block_time"
| "get_simulation_sampling" -> Ezfio.read_string "simulation" "sampling"
| "get_simulation_save_data" -> Ezfio.read_string "simulation" "save_data"
| "get_simulation_time_step" -> Ezfio.read_string "simulation" "time_step"
| "get_simulation_print_level" -> Ezfio.read_string "simulation" "print_level"
| "get_simulation_ci_threshold" -> Ezfio.read_string "simulation" "ci_threshold"
| "get_simulation_md5_key" -> Ezfio.read_string "simulation" "md5_key"
| "get_simulation_orig_time" -> Ezfio.read_string "simulation" "orig_time"
| "get_simulation_e_ref" -> Ezfio.read_string "simulation" "e_ref"
| "get_spindeterminants_n_det_alpha" -> Ezfio.read_string "spindeterminants" "n_det_alpha"
| "get_spindeterminants_n_det_beta" -> Ezfio.read_string "spindeterminants" "n_det_beta"
| "get_spindeterminants_n_det" -> Ezfio.read_string "spindeterminants" "n_det"
| "get_spindeterminants_n_int" -> Ezfio.read_string "spindeterminants" "n_int"
| "get_spindeterminants_bit_kind" -> Ezfio.read_string "spindeterminants" "bit_kind"
| "get_spindeterminants_n_states" -> Ezfio.read_string "spindeterminants" "n_states"
| "get_spindeterminants_psi_det_alpha" ->
Ezfio.read_string_array "spindeterminants" "psi_det_alpha"
|> Ezfio.flattened_ezfio
|> Array.to_list
|> String.concat ~sep:" "
| "get_spindeterminants_psi_det_beta" ->
Ezfio.read_string_array "spindeterminants" "psi_det_beta"
|> Ezfio.flattened_ezfio
|> Array.to_list
|> String.concat ~sep:" "
| "get_spindeterminants_psi_coef_matrix_rows" ->
Ezfio.read_string_array "spindeterminants" "psi_coef_matrix_rows"
|> Ezfio.flattened_ezfio
|> Array.to_list
|> String.concat ~sep:" "
| "get_spindeterminants_psi_coef_matrix_columns" ->
Ezfio.read_string_array "spindeterminants" "psi_coef_matrix_columns"
|> Ezfio.flattened_ezfio
|> Array.to_list
|> String.concat ~sep:" "
| "get_spindeterminants_psi_coef_matrix_values" ->
Ezfio.read_string_array "spindeterminants" "psi_coef_matrix_values"
|> Ezfio.flattened_ezfio
|> Array.to_list
|> String.concat ~sep:" "
| "get_ao_basis_ao_num" -> Ezfio.read_string "ao_basis" "ao_num"
| "get_ao_basis_ao_prim_num" ->
Ezfio.read_string_array "ao_basis" "ao_prim_num"
|> Ezfio.flattened_ezfio
|> Array.to_list
|> String.concat ~sep:" "
| "get_ao_basis_ao_nucl" ->
Ezfio.read_string_array "ao_basis" "ao_nucl"
|> Ezfio.flattened_ezfio
|> Array.to_list
|> String.concat ~sep:" "
| "get_ao_basis_ao_power" ->
Ezfio.read_string_array "ao_basis" "ao_power"
|> Ezfio.flattened_ezfio
|> Array.to_list
|> String.concat ~sep:" "
| "get_ao_basis_ao_coef" ->
Ezfio.read_string_array "ao_basis" "ao_coef"
|> Ezfio.flattened_ezfio
|> Array.to_list
|> String.concat ~sep:" "
| "get_ao_basis_ao_expo" ->
Ezfio.read_string_array "ao_basis" "ao_expo"
|> Ezfio.flattened_ezfio
|> Array.to_list
|> String.concat ~sep:" "
| "get_electrons_elec_alpha_num" -> Ezfio.read_string "electrons" "elec_alpha_num"
| "get_electrons_elec_beta_num" -> Ezfio.read_string "electrons" "elec_beta_num"
| "get_electrons_elec_walk_num_tot" -> Ezfio.read_string "electrons" "elec_walk_num_tot"
| "get_electrons_elec_walk_num" -> Ezfio.read_string "electrons" "elec_walk_num"
| "get_electrons_elec_coord_pool" ->
Ezfio.read_string_array "electrons" "elec_coord_pool"
|> Ezfio.flattened_ezfio
|> Array.to_list
|> String.concat ~sep:" "
| "get_electrons_elec_coord_pool_size" -> Ezfio.read_string "electrons" "elec_coord_pool_size"
| "get_electrons_elec_fitcusp_radius" -> Ezfio.read_string "electrons" "elec_fitcusp_radius"
| "get_jastrow_jast_type" -> Ezfio.read_string "jastrow" "jast_type"
| "get_jastrow_jast_a_up_up" -> Ezfio.read_string "jastrow" "jast_a_up_up"
| "get_jastrow_jast_a_up_dn" -> Ezfio.read_string "jastrow" "jast_a_up_dn"
| "get_jastrow_jast_b_up_up" -> Ezfio.read_string "jastrow" "jast_b_up_up"
| "get_jastrow_jast_b_up_dn" -> Ezfio.read_string "jastrow" "jast_b_up_dn"
| "get_jastrow_jast_pen" ->
Ezfio.read_string_array "jastrow" "jast_pen"
|> Ezfio.flattened_ezfio
|> Array.to_list
|> String.concat ~sep:" "
| "get_jastrow_jast_een_e_a" ->
Ezfio.read_string_array "jastrow" "jast_een_e_a"
|> Ezfio.flattened_ezfio
|> Array.to_list
|> String.concat ~sep:" "
| "get_jastrow_jast_een_e_b" ->
Ezfio.read_string_array "jastrow" "jast_een_e_b"
|> Ezfio.flattened_ezfio
|> Array.to_list
|> String.concat ~sep:" "
| "get_jastrow_jast_een_n" ->
Ezfio.read_string_array "jastrow" "jast_een_n"
|> Ezfio.flattened_ezfio
|> Array.to_list
|> String.concat ~sep:" "
| "get_jastrow_jast_core_a1" ->
Ezfio.read_string_array "jastrow" "jast_core_a1"
|> Ezfio.flattened_ezfio
|> Array.to_list
|> String.concat ~sep:" "
| "get_jastrow_jast_core_a2" ->
Ezfio.read_string_array "jastrow" "jast_core_a2"
|> Ezfio.flattened_ezfio
|> Array.to_list
|> String.concat ~sep:" "
| "get_jastrow_jast_core_b1" ->
Ezfio.read_string_array "jastrow" "jast_core_b1"
|> Ezfio.flattened_ezfio
|> Array.to_list
|> String.concat ~sep:" "
| "get_jastrow_jast_core_b2" ->
Ezfio.read_string_array "jastrow" "jast_core_b2"
|> Ezfio.flattened_ezfio
|> Array.to_list
|> String.concat ~sep:" "
| "get_nuclei_nucl_num" -> Ezfio.read_string "nuclei" "nucl_num"
| "get_nuclei_nucl_label" ->
Ezfio.read_string_array "nuclei" "nucl_label"
|> Ezfio.flattened_ezfio
|> Array.to_list
|> String.concat ~sep:" "
| "get_nuclei_nucl_charge" ->
Ezfio.read_string_array "nuclei" "nucl_charge"
|> Ezfio.flattened_ezfio
|> Array.to_list
|> String.concat ~sep:" "
| "get_nuclei_nucl_coord" ->
Ezfio.read_string_array "nuclei" "nucl_coord"
|> Ezfio.flattened_ezfio
|> Array.to_list
|> String.concat ~sep:" "
| "get_nuclei_nucl_fitcusp_radius" ->
Ezfio.read_string_array "nuclei" "nucl_fitcusp_radius"
|> Ezfio.flattened_ezfio
|> Array.to_list
|> String.concat ~sep:" "
| "get_properties_d_var_jast_a_up_dn" -> Ezfio.read_string "properties" "d_var_jast_a_up_dn"
| "get_properties_d_var_jast_a_up_up" -> Ezfio.read_string "properties" "d_var_jast_a_up_up"
| "get_properties_d_var_jast_b_up_dn" -> Ezfio.read_string "properties" "d_var_jast_b_up_dn"
| "get_properties_d_var_jast_b_up_up" -> Ezfio.read_string "properties" "d_var_jast_b_up_up"
| "get_properties_d_var_jast_core_a1" -> Ezfio.read_string "properties" "d_var_jast_core_a1"
| "get_properties_d_var_jast_core_b1" -> Ezfio.read_string "properties" "d_var_jast_core_b1"
| "get_properties_d_var_jast_een_e_a" -> Ezfio.read_string "properties" "d_var_jast_een_e_a"
| "get_properties_d_var_jast_een_e_b" -> Ezfio.read_string "properties" "d_var_jast_een_e_b"
| "get_properties_d_var_jast_een_n" -> Ezfio.read_string "properties" "d_var_jast_een_n"
| "get_properties_d_var_jast_pen" -> Ezfio.read_string "properties" "d_var_jast_pen"
| "get_properties_density1d" -> Ezfio.read_string "properties" "density1d"
| "get_properties_dipole" -> Ezfio.read_string "properties" "dipole"
| "get_properties_drift_mod" -> Ezfio.read_string "properties" "drift_mod"
| "get_properties_e_kin" -> Ezfio.read_string "properties" "e_kin"
| "get_properties_e_loc" -> Ezfio.read_string "properties" "e_loc"
| "get_properties_e_loc_one" -> Ezfio.read_string "properties" "e_loc_one"
| "get_properties_e_loc_per_electron" -> Ezfio.read_string "properties" "e_loc_per_electron"
| "get_properties_e_loc_split_core" -> Ezfio.read_string "properties" "e_loc_split_core"
| "get_properties_e_loc_two" -> Ezfio.read_string "properties" "e_loc_two"
| "get_properties_e_nucl" -> Ezfio.read_string "properties" "e_nucl"
| "get_properties_e_pot" -> Ezfio.read_string "properties" "e_pot"
| "get_properties_e_pot_one" -> Ezfio.read_string "properties" "e_pot_one"
| "get_properties_n_s_inverted" -> Ezfio.read_string "properties" "n_s_inverted"
| "get_properties_n_s_updated" -> Ezfio.read_string "properties" "n_s_updated"
| "get_properties_n_s_updates" -> Ezfio.read_string "properties" "n_s_updates"
| "get_properties_voronoi_charges" -> Ezfio.read_string "properties" "voronoi_charges"
| "get_properties_voronoi_charges_covariance" -> Ezfio.read_string "properties" "voronoi_charges_covariance"
| "get_properties_voronoi_dipoles" -> Ezfio.read_string "properties" "voronoi_dipoles"
| "get_properties_wf_extension" -> Ezfio.read_string "properties" "wf_extension"
| "has_blocks_empty" -> if (Ezfio.has_blocks_empty ()) then "T" else "F"
| "has_mo_basis_mo_tot_num" -> if (Ezfio.has_mo_basis_mo_tot_num ()) then "T" else "F"
| "has_mo_basis_mo_coef" -> if (Ezfio.has_mo_basis_mo_coef ()) then "T" else "F"
| "has_mo_basis_mo_classif" -> if (Ezfio.has_mo_basis_mo_classif ()) then "T" else "F"
| "has_mo_basis_mo_energy" -> if (Ezfio.has_mo_basis_mo_energy ()) then "T" else "F"
| "has_mo_basis_mo_occ" -> if (Ezfio.has_mo_basis_mo_occ ()) then "T" else "F"
| "has_mo_basis_mo_symmetry" -> if (Ezfio.has_mo_basis_mo_symmetry ()) then "T" else "F"
| "has_pseudo_ao_pseudo_grid" -> if (Ezfio.has_pseudo_ao_pseudo_grid ()) then "T" else "F"
| "has_pseudo_do_pseudo" -> if (Ezfio.has_pseudo_do_pseudo ()) then "T" else "F"
| "has_pseudo_mo_pseudo_grid" -> if (Ezfio.has_pseudo_mo_pseudo_grid ()) then "T" else "F"
| "has_pseudo_pseudo_dz_k" -> if (Ezfio.has_pseudo_pseudo_dz_k ()) then "T" else "F"
| "has_pseudo_pseudo_dz_kl" -> if (Ezfio.has_pseudo_pseudo_dz_kl ()) then "T" else "F"
| "has_pseudo_pseudo_grid_rmax" -> if (Ezfio.has_pseudo_pseudo_grid_rmax ()) then "T" else "F"
| "has_pseudo_pseudo_grid_size" -> if (Ezfio.has_pseudo_pseudo_grid_size ()) then "T" else "F"
| "has_pseudo_pseudo_klocmax" -> if (Ezfio.has_pseudo_pseudo_klocmax ()) then "T" else "F"
| "has_pseudo_pseudo_kmax" -> if (Ezfio.has_pseudo_pseudo_kmax ()) then "T" else "F"
| "has_pseudo_pseudo_lmax" -> if (Ezfio.has_pseudo_pseudo_lmax ()) then "T" else "F"
| "has_pseudo_pseudo_n_k" -> if (Ezfio.has_pseudo_pseudo_n_k ()) then "T" else "F"
| "has_pseudo_pseudo_n_kl" -> if (Ezfio.has_pseudo_pseudo_n_kl ()) then "T" else "F"
| "has_pseudo_pseudo_v_k" -> if (Ezfio.has_pseudo_pseudo_v_k ()) then "T" else "F"
| "has_pseudo_pseudo_v_kl" -> if (Ezfio.has_pseudo_pseudo_v_kl ()) then "T" else "F"
| "has_ezfio_creation" -> if (Ezfio.has_ezfio_creation ()) then "T" else "F"
| "has_ezfio_user" -> if (Ezfio.has_ezfio_user ()) then "T" else "F"
| "has_ezfio_library" -> if (Ezfio.has_ezfio_library ()) then "T" else "F"
| "has_ezfio_last_library" -> if (Ezfio.has_ezfio_last_library ()) then "T" else "F"
| "has_simulation_do_run" -> if (Ezfio.has_simulation_do_run ()) then "T" else "F"
| "has_simulation_stop_time" -> if (Ezfio.has_simulation_stop_time ()) then "T" else "F"
| "has_simulation_equilibration" -> if (Ezfio.has_simulation_equilibration ()) then "T" else "F"
| "has_simulation_title" -> if (Ezfio.has_simulation_title ()) then "T" else "F"
| "has_simulation_http_server" -> if (Ezfio.has_simulation_http_server ()) then "T" else "F"
| "has_simulation_do_jast" -> if (Ezfio.has_simulation_do_jast ()) then "T" else "F"
| "has_simulation_do_nucl_fitcusp" -> if (Ezfio.has_simulation_do_nucl_fitcusp ()) then "T" else "F"
| "has_simulation_method" -> if (Ezfio.has_simulation_method ()) then "T" else "F"
| "has_simulation_block_time" -> if (Ezfio.has_simulation_block_time ()) then "T" else "F"
| "has_simulation_sampling" -> if (Ezfio.has_simulation_sampling ()) then "T" else "F"
| "has_simulation_save_data" -> if (Ezfio.has_simulation_save_data ()) then "T" else "F"
| "has_simulation_time_step" -> if (Ezfio.has_simulation_time_step ()) then "T" else "F"
| "has_simulation_print_level" -> if (Ezfio.has_simulation_print_level ()) then "T" else "F"
| "has_simulation_ci_threshold" -> if (Ezfio.has_simulation_ci_threshold ()) then "T" else "F"
| "has_simulation_md5_key" -> if (Ezfio.has_simulation_md5_key ()) then "T" else "F"
| "has_simulation_orig_time" -> if (Ezfio.has_simulation_orig_time ()) then "T" else "F"
| "has_simulation_e_ref" -> if (Ezfio.has_simulation_e_ref ()) then "T" else "F"
| "has_spindeterminants_n_det_alpha" -> if (Ezfio.has_spindeterminants_n_det_alpha ()) then "T" else "F"
| "has_spindeterminants_n_det_beta" -> if (Ezfio.has_spindeterminants_n_det_beta ()) then "T" else "F"
| "has_spindeterminants_n_det" -> if (Ezfio.has_spindeterminants_n_det ()) then "T" else "F"
| "has_spindeterminants_n_int" -> if (Ezfio.has_spindeterminants_n_int ()) then "T" else "F"
| "has_spindeterminants_bit_kind" -> if (Ezfio.has_spindeterminants_bit_kind ()) then "T" else "F"
| "has_spindeterminants_n_states" -> if (Ezfio.has_spindeterminants_n_states ()) then "T" else "F"
| "has_spindeterminants_psi_det_alpha" -> if (Ezfio.has_spindeterminants_psi_det_alpha ()) then "T" else "F"
| "has_spindeterminants_psi_det_beta" -> if (Ezfio.has_spindeterminants_psi_det_beta ()) then "T" else "F"
| "has_spindeterminants_psi_coef_matrix_rows" -> if (Ezfio.has_spindeterminants_psi_coef_matrix_rows ()) then "T" else "F"
| "has_spindeterminants_psi_coef_matrix_columns" -> if (Ezfio.has_spindeterminants_psi_coef_matrix_columns ()) then "T" else "F"
| "has_spindeterminants_psi_coef_matrix_values" -> if (Ezfio.has_spindeterminants_psi_coef_matrix_values ()) then "T" else "F"
| "has_ao_basis_ao_num" -> if (Ezfio.has_ao_basis_ao_num ()) then "T" else "F"
| "has_ao_basis_ao_prim_num" -> if (Ezfio.has_ao_basis_ao_prim_num ()) then "T" else "F"
| "has_ao_basis_ao_nucl" -> if (Ezfio.has_ao_basis_ao_nucl ()) then "T" else "F"
| "has_ao_basis_ao_power" -> if (Ezfio.has_ao_basis_ao_power ()) then "T" else "F"
| "has_ao_basis_ao_coef" -> if (Ezfio.has_ao_basis_ao_coef ()) then "T" else "F"
| "has_ao_basis_ao_expo" -> if (Ezfio.has_ao_basis_ao_expo ()) then "T" else "F"
| "has_electrons_elec_alpha_num" -> if (Ezfio.has_electrons_elec_alpha_num ()) then "T" else "F"
| "has_electrons_elec_beta_num" -> if (Ezfio.has_electrons_elec_beta_num ()) then "T" else "F"
| "has_electrons_elec_walk_num_tot" -> if (Ezfio.has_electrons_elec_walk_num_tot ()) then "T" else "F"
| "has_electrons_elec_walk_num" -> if (Ezfio.has_electrons_elec_walk_num ()) then "T" else "F"
| "has_electrons_elec_coord_pool" -> if (Ezfio.has_electrons_elec_coord_pool ()) then "T" else "F"
| "has_electrons_elec_coord_pool_size" -> if (Ezfio.has_electrons_elec_coord_pool_size ()) then "T" else "F"
| "has_electrons_elec_fitcusp_radius" -> if (Ezfio.has_electrons_elec_fitcusp_radius ()) then "T" else "F"
| "has_jastrow_jast_type" -> if (Ezfio.has_jastrow_jast_type ()) then "T" else "F"
| "has_jastrow_jast_a_up_up" -> if (Ezfio.has_jastrow_jast_a_up_up ()) then "T" else "F"
| "has_jastrow_jast_a_up_dn" -> if (Ezfio.has_jastrow_jast_a_up_dn ()) then "T" else "F"
| "has_jastrow_jast_b_up_up" -> if (Ezfio.has_jastrow_jast_b_up_up ()) then "T" else "F"
| "has_jastrow_jast_b_up_dn" -> if (Ezfio.has_jastrow_jast_b_up_dn ()) then "T" else "F"
| "has_jastrow_jast_pen" -> if (Ezfio.has_jastrow_jast_pen ()) then "T" else "F"
| "has_jastrow_jast_een_e_a" -> if (Ezfio.has_jastrow_jast_een_e_a ()) then "T" else "F"
| "has_jastrow_jast_een_e_b" -> if (Ezfio.has_jastrow_jast_een_e_b ()) then "T" else "F"
| "has_jastrow_jast_een_n" -> if (Ezfio.has_jastrow_jast_een_n ()) then "T" else "F"
| "has_jastrow_jast_core_a1" -> if (Ezfio.has_jastrow_jast_core_a1 ()) then "T" else "F"
| "has_jastrow_jast_core_a2" -> if (Ezfio.has_jastrow_jast_core_a2 ()) then "T" else "F"
| "has_jastrow_jast_core_b1" -> if (Ezfio.has_jastrow_jast_core_b1 ()) then "T" else "F"
| "has_jastrow_jast_core_b2" -> if (Ezfio.has_jastrow_jast_core_b2 ()) then "T" else "F"
| "has_nuclei_nucl_num" -> if (Ezfio.has_nuclei_nucl_num ()) then "T" else "F"
| "has_nuclei_nucl_label" -> if (Ezfio.has_nuclei_nucl_label ()) then "T" else "F"
| "has_nuclei_nucl_charge" -> if (Ezfio.has_nuclei_nucl_charge ()) then "T" else "F"
| "has_nuclei_nucl_coord" -> if (Ezfio.has_nuclei_nucl_coord ()) then "T" else "F"
| "has_nuclei_nucl_fitcusp_radius" -> if (Ezfio.has_nuclei_nucl_fitcusp_radius ()) then "T" else "F"
| "has_properties_d_var_jast_a_up_dn" -> if (Ezfio.has_properties_d_var_jast_a_up_dn ()) then "T" else "F"
| "has_properties_d_var_jast_a_up_up" -> if (Ezfio.has_properties_d_var_jast_a_up_up ()) then "T" else "F"
| "has_properties_d_var_jast_b_up_dn" -> if (Ezfio.has_properties_d_var_jast_b_up_dn ()) then "T" else "F"
| "has_properties_d_var_jast_b_up_up" -> if (Ezfio.has_properties_d_var_jast_b_up_up ()) then "T" else "F"
| "has_properties_d_var_jast_core_a1" -> if (Ezfio.has_properties_d_var_jast_core_a1 ()) then "T" else "F"
| "has_properties_d_var_jast_core_b1" -> if (Ezfio.has_properties_d_var_jast_core_b1 ()) then "T" else "F"
| "has_properties_d_var_jast_een_e_a" -> if (Ezfio.has_properties_d_var_jast_een_e_a ()) then "T" else "F"
| "has_properties_d_var_jast_een_e_b" -> if (Ezfio.has_properties_d_var_jast_een_e_b ()) then "T" else "F"
| "has_properties_d_var_jast_een_n" -> if (Ezfio.has_properties_d_var_jast_een_n ()) then "T" else "F"
| "has_properties_d_var_jast_pen" -> if (Ezfio.has_properties_d_var_jast_pen ()) then "T" else "F"
| "has_properties_density1d" -> if (Ezfio.has_properties_density1d ()) then "T" else "F"
| "has_properties_dipole" -> if (Ezfio.has_properties_dipole ()) then "T" else "F"
| "has_properties_drift_mod" -> if (Ezfio.has_properties_drift_mod ()) then "T" else "F"
| "has_properties_e_kin" -> if (Ezfio.has_properties_e_kin ()) then "T" else "F"
| "has_properties_e_loc" -> if (Ezfio.has_properties_e_loc ()) then "T" else "F"
| "has_properties_e_loc_one" -> if (Ezfio.has_properties_e_loc_one ()) then "T" else "F"
| "has_properties_e_loc_per_electron" -> if (Ezfio.has_properties_e_loc_per_electron ()) then "T" else "F"
| "has_properties_e_loc_split_core" -> if (Ezfio.has_properties_e_loc_split_core ()) then "T" else "F"
| "has_properties_e_loc_two" -> if (Ezfio.has_properties_e_loc_two ()) then "T" else "F"
| "has_properties_e_nucl" -> if (Ezfio.has_properties_e_nucl ()) then "T" else "F"
| "has_properties_e_pot" -> if (Ezfio.has_properties_e_pot ()) then "T" else "F"
| "has_properties_e_pot_one" -> if (Ezfio.has_properties_e_pot_one ()) then "T" else "F"
| "has_properties_n_s_inverted" -> if (Ezfio.has_properties_n_s_inverted ()) then "T" else "F"
| "has_properties_n_s_updated" -> if (Ezfio.has_properties_n_s_updated ()) then "T" else "F"
| "has_properties_n_s_updates" -> if (Ezfio.has_properties_n_s_updates ()) then "T" else "F"
| "has_properties_voronoi_charges" -> if (Ezfio.has_properties_voronoi_charges ()) then "T" else "F"
| "has_properties_voronoi_charges_covariance" -> if (Ezfio.has_properties_voronoi_charges_covariance ()) then "T" else "F"
| "has_properties_voronoi_dipoles" -> if (Ezfio.has_properties_voronoi_dipoles ()) then "T" else "F"
| "has_properties_wf_extension" -> if (Ezfio.has_properties_wf_extension ()) then "T" else "F"
| x -> failwith (x^" : Unknown EZFIO function")
;;