29 #include <util/misc/scexception.h>
31 #ifndef _chemistry_qc_mbptr12_spin_h
32 #define _chemistry_qc_mbptr12_spin_h
36 typedef enum { NSpinCases1 = 2, NSpinCases2 = 3} NSpinCases;
37 typedef enum { NPureSpinCases2 = 2 } NPureSpinCases;
44 enum { ToLowerCase =
true,
45 ToUpperCase =
false };
50 typedef enum { AnySpinCase1 = -1, Alpha = 0, Beta = 1, InvalidSpinCase1 = 2} SpinCase1;
51 typedef enum { AnySpinCase2 = -1, AlphaBeta = 0, AlphaAlpha = 1, BetaBeta = 2, InvalidSpinCase2 = 3} SpinCase2;
52 typedef enum { AnyPureSpinCase2 = -1, Singlet = 0, Triplet = 1, InvalidPureSpinCase2 = 2} PureSpinCase2;
54 SpinCase1
case1(SpinCase2 S);
56 SpinCase1
case2(SpinCase2 S);
58 SpinCase2
case12(SpinCase1 S1, SpinCase1 S2);
60 SpinCase1
other(SpinCase1 S);
62 std::string to_string(SpinCase1 S);
63 std::string to_string(SpinCase2 S);
64 std::string to_string(PureSpinCase2 S);
65 SpinCase1 to_spincase1(
const std::string& key);
66 SpinCase2 to_spincase2(
const std::string& key);
67 PureSpinCase2 to_purespincase2(
const std::string& key);
70 std::string
prepend_spincase(SpinCase1 S,
const std::string& R,
bool lowercase =
false);
72 std::string
prepend_spincase(SpinCase2 S,
const std::string& R,
bool lowercase =
false);
74 std::string
prepend_spincase(PureSpinCase2 S,
const std::string& R,
bool lowercase =
false);