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_Timer.H>
18
19// Our includes
20#include <CD_KMCSingleState.H>
21#include <CD_NamespaceHeader.H>
22
23template <typename T>
25{
26 CH_TIME("KMCSingleState::KMCSingleState");
27
28 m_state.resize(a_numSpecies);
29}
30
31template <typename T>
33{
34 CH_TIME("KMCSingleState::~KMCSingleState");
35}
36
37template <typename T>
38inline bool
40{
41 CH_TIME("KMCSingleState::isValidState");
42
43 bool isValid = true;
44
45 for (const auto& p : m_state) {
46 if (p < 0) {
47 isValid = false;
48
49 break;
50 }
51 }
52
53 return isValid;
54}
55
56template <typename T>
57inline T&
59{
60 CH_assert(a_idx < m_state.size());
61
62 return m_state[a_idx];
63}
64
65template <typename T>
66inline const T&
67KMCSingleState<T>::operator[](const size_t a_idx) const noexcept
68{
69 CH_assert(a_idx < m_state.size());
70
71 return m_state[a_idx];
72}
73
74template <typename T>
75inline std::vector<T>
77{
78 return m_state;
79}
80
81template <typename T>
82inline void
87
88template <typename T>
89inline typename KMCSingleState<T>::State&
91{
92 return m_state;
93}
94
95template <typename T>
96inline const typename KMCSingleState<T>::State&
98{
99 return m_state;
100}
101
102#include <CD_NamespaceFooter.H>
103
104#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:58
virtual ~KMCSingleState()
Destructor.
Definition CD_KMCSingleStateImplem.H:32
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:83
State & getState() noexcept
Get modifiable state.
Definition CD_KMCSingleStateImplem.H:90
std::vector< T > linearOut() const noexcept
Linearize the state onto an output vector.
Definition CD_KMCSingleStateImplem.H:76
bool isValidState() const noexcept
Check if state is a valid state.
Definition CD_KMCSingleStateImplem.H:39
std::vector< T > State
Alias for the state type.
Definition CD_KMCSingleState.H:36
Base class for a tracer particle solver. This solver can advance particles in a pre-defined velocity ...
Definition CD_TracerParticleSolver.H:38
TracerParticleSolver()
Default constructor.
Definition CD_TracerParticleSolverImplem.H:26