chombo-discharge
Loading...
Searching...
No Matches
CD_KMCSingleStateImplem.H
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2021-2026 SINTEF Energy Research
3 *
4 * SPDX-License-Identifier: GPL-3.0-or-later
5 */
6
13#ifndef CD_KMCSINGLESTATEIMPLEM_H
14#define CD_KMCSINGLESTATEIMPLEM_H
15
16// Chombo includes
17#include <CH_assert.H>
18
19// Our includes
20#include <CD_KMCSingleState.H>
21#include <CD_NamespaceHeader.H>
22
23template <typename T>
24KMCSingleState<T>::KMCSingleState(const size_t a_numSpecies) noexcept
25{
26 m_state.resize(a_numSpecies);
27}
28
29template <typename T>
32
33template <typename T>
34inline bool
36{
37 bool isValid = true;
38
39 for (const auto& p : m_state) {
40 if (p < 0) {
41 isValid = false;
42
43 break;
44 }
45 }
46
47 return isValid;
48}
49
50template <typename T>
51inline T&
52KMCSingleState<T>::operator[](const size_t a_idx) noexcept
53{
54 CH_assert(a_idx < m_state.size());
55
56 return m_state[a_idx];
57}
58
59template <typename T>
60inline const T&
61KMCSingleState<T>::operator[](const size_t a_idx) const noexcept
62{
63 CH_assert(a_idx < m_state.size());
64
65 return m_state[a_idx];
66}
67
68template <typename T>
69inline std::vector<T>
71{
72 return m_state;
73}
74
75template <typename T>
76inline void
77KMCSingleState<T>::linearIn(const std::vector<T>& a_linearizedState) noexcept
78{
79 m_state = a_linearizedState;
80}
81
82template <typename T>
83inline typename KMCSingleState<T>::State&
85{
86 return m_state;
87}
88
89template <typename T>
90inline const typename KMCSingleState<T>::State&
92{
93 return m_state;
94}
95
96#include <CD_NamespaceFooter.H>
97
98#endif
Declaration of a simple state vector for running Kinetic Monte Carlo for plasma problems.
T & operator[](const size_t a_idx) noexcept
Get the population of the input index.
Definition CD_KMCSingleStateImplem.H:52
virtual ~KMCSingleState()
Destructor.
Definition CD_KMCSingleStateImplem.H:30
KMCSingleState()=delete
Disallowed weak construction.
void linearIn(const std::vector< T > &a_linearizedState) noexcept
Linearize the input buffer onto the current state.
Definition CD_KMCSingleStateImplem.H:77
State & getState() noexcept
Get modifiable state.
Definition CD_KMCSingleStateImplem.H:84
std::vector< T > linearOut() const noexcept
Linearize the state onto an output vector.
Definition CD_KMCSingleStateImplem.H:70
bool isValidState() const noexcept
Check if state is a valid state.
Definition CD_KMCSingleStateImplem.H:35
std::vector< T > State
Alias for the state type.
Definition CD_KMCSingleState.H:36