12 #ifndef CD_KMCDualState_H
13 #define CD_KMCDualState_H
19 #include <CD_NamespaceHeader.H>
27 template <
typename T =
long long>
31 using State = std::vector<T>;
53 inline KMCDualState(
const size_t a_numReactiveSpecies,
const size_t a_numNonReactiveSpecies) noexcept;
78 define(
const size_t a_numReactiveSpecies,
const size_t a_numNonReactiveSpecies) noexcept;
131 template <typename T>
133 operator<<(std::ostream& ostr, const
KMCDualState<T>& a_state);
135 #include <CD_NamespaceFooter.H>
Implementation of CD_KMCDualState.H.
Declaration of a "dual state" for advancing with the Kinetic Monte Carlo module.
Definition: CD_KMCDualState.H:29
State & getNonReactiveState() noexcept
Get modifiable non-reactive state.
Definition: CD_KMCDualStateImplem.H:80
KMCDualState()=default
Default constructor.
State m_nonReactiveState
Non-reactive state.
Definition: CD_KMCDualState.H:123
bool isValidState() const noexcept
Check if state is a valid state. An invalid state will have a negative number of reactants/non-reacta...
Definition: CD_KMCDualStateImplem.H:41
void define(const size_t a_numReactiveSpecies, const size_t a_numNonReactiveSpecies) noexcept
Define function constructor.
Definition: CD_KMCDualStateImplem.H:33
virtual ~KMCDualState()
Destructor.
Definition: CD_KMCDualStateImplem.H:28
KMCDualState(KMCDualState &)=default
Copy constructor.
KMCDualState & operator=(const KMCDualState &&)=delete
Disallowed move assignement.
State m_reactiveState
Reactive state.
Definition: CD_KMCDualState.H:118
KMCDualState & operator=(const KMCDualState &)=default
Copy assignment constructor.
KMCDualState(KMCDualState &&)=delete
Disallowed move constructor.
State & getReactiveState() noexcept
Get modifiable reactive state.
Definition: CD_KMCDualStateImplem.H:66