10
1
mirror of https://gitlab.com/scemama/QCaml.git synced 2024-11-09 15:43:41 +01:00
QCaml/MOBasis/MOClass.mli

59 lines
1.8 KiB
OCaml
Raw Normal View History

2019-02-20 18:15:15 +01:00
(** CI Classes of MOs : active, inactive, etc *)
type mo_class =
| Core of int (* Always doubly occupied *)
| Inactive of int (* With 0,1 or 2 holes *)
| Active of int (* With 0,1 or 2 holes or particles *)
| Virtual of int (* With 0,1 or 2 particles *)
| Deleted of int (* Always unoccupied *)
| Auxiliary of int (* Function of the auxiliary basis set *)
2019-02-20 18:15:15 +01:00
type t
(** Creation *)
val of_list : mo_class list -> t
2019-03-18 12:41:32 +01:00
val to_list : t -> mo_class list
2020-01-13 11:39:40 +01:00
val fci : frozen_core:bool -> MOBasis.t -> t
2019-02-20 19:43:16 +01:00
(** Creates the MO classes for FCI calculations : all [Active]. The
[n] lowest MOs are [Core] if [frozen_core = true].
*)
2019-03-23 15:54:46 +01:00
val cas_sd: MOBasis.t -> frozen_core:bool -> int -> int -> t
2019-03-18 12:41:32 +01:00
(** [cas_sd mo_basis n m ] creates the MO classes for CAS(n,m) + SD
calculations. lowest MOs are [Core], then all the next MOs are [Inactive],
then [Active], then [Virtual].
*)
2019-02-20 18:15:15 +01:00
val core_mos : t -> int list
(** Returns a list containing the indices of the core MOs. *)
val active_mos : t -> int list
(** Returns a list containing the indices of the active MOs. *)
val virtual_mos : t -> int list
(** Returns a list containing the indices of the virtual MOs. *)
val inactive_mos : t -> int list
(** Returns a list containing the indices of the inactive MOs. *)
val deleted_mos : t -> int list
(** Returns a list containing the indices of the deleted MOs. *)
2019-03-20 23:10:53 +01:00
val auxiliary_mos : t -> int list
(** Returns a list containing the indices of the auxiliary MOs. *)
2019-03-18 12:41:32 +01:00
val mo_class_array : t -> mo_class array
(** Returns an array [a] such that [a.(i)] returns the class of MO [i].
As the MO indices start from [1], the array has an extra zero entry
that should be ignored. *)
2019-02-20 18:15:15 +01:00
(** {2 Printers} *)
2019-12-03 12:25:31 +01:00
val pp_mo_class : Format.formatter -> mo_class -> unit
val pp : Format.formatter -> t -> unit
2019-02-20 18:15:15 +01:00