QCaml/Utils/Spin.ml

48 lines
693 B
OCaml

(** Electron spin *)
type t = (* m_s *)
| Alfa (* {% $m_s = +1/2$ %} *)
| Beta (* {% $m_s = -1/2$ %} *)
let other = function
| Alfa -> Beta
| Beta -> Alfa
(*
let half = 1. /. 2.
(** {% $\alpha(m_s)$ %} *)
let alfa = function
| n, Alfa -> n
| _, Beta -> 0.
(** {% $\beta(m_s)$ %} *)
let beta = function
| _, Alfa -> 0.
| n, Beta -> n
(** {% $S_z(m_s)$ %} *)
let s_z = function
| n, Alfa -> half *. n, Alfa
| n, Beta -> -. half *. n, Beta
let s_plus = function
| n, Beta -> n , Alfa
| _, Alfa -> 0., Alfa
let s_minus = function
| n, Alfa -> n , Beta
| _, Beta -> 0., Beta
let ( ++ ) (n, t) (m,t) =
(m. +n.)
let s2 s =
s_minus @@ s_plus s +.
s_z s +.
s_z @@ s_z s
*)