24 #ifndef COM_DAFER45_TBTK_FOCK_STATE_RULE
25 #define COM_DAFER45_TBTK_FOCK_STATE_RULE
27 #include "TBTK/FockState.h"
30 #include "TBTK/LadderOperator.h"
34 template<
typename BIT_REGISTER>
37 namespace FockStateRule{
49 enum class FockStateRuleID {
56 FockStateRule(FockStateRuleID fockStateRuleID);
59 virtual ~FockStateRule();
62 virtual FockStateRule* clone()
const = 0;
66 virtual WrapperRule createNewRule(
67 const LadderOperator<BitRegister> &ladderOperator
72 virtual WrapperRule createNewRule(
73 const LadderOperator<ExtensiveBitRegister> &ladderOperator
78 virtual bool isSatisfied(
79 const FockSpace<BitRegister> &fockSpace,
80 const FockState<BitRegister> &fockState
85 virtual bool isSatisfied(
86 const FockSpace<ExtensiveBitRegister> &fockSpace,
87 const FockState<ExtensiveBitRegister> &fockState
91 virtual bool operator==(
const FockStateRule &rhs)
const = 0;
100 const LadderOperator<BitRegister> &ladderOperator,
101 const FockStateRule &fockStateRule
111 const LadderOperator<ExtensiveBitRegister> &ladderOperator,
112 const FockStateRule &fockStateRule
116 FockStateRuleID getFockStateRuleID()
const;
119 virtual void print()
const = 0;
122 FockStateRuleID fockStateRuleID;
125 inline FockStateRule::FockStateRuleID FockStateRule::getFockStateRuleID()
const{
126 return fockStateRuleID;