chombo-discharge
Loading...
Searching...
No Matches
CD_ItoKMCSurfaceReactionsImplem.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_ITOKMCSURFACEREACTIONSIMPLEM_H
14#define CD_ITOKMCSURFACEREACTIONSIMPLEM_H
15
16// Chombo includes
17#include <MayDay.H>
18
19// Our includes
21#include <CD_NamespaceHeader.H>
22
23using namespace Physics::ItoKMC;
24
29
34
35inline void
37{
38 if (m_isDefined) {
39
40 if (m_reactant != a_surfaceReaction.getReactant()) {
41 MayDay::Warning("ItoKMCSurfaceReaction::addReaction - reactant indices do not match!");
42 }
43 }
44 else {
45 this->reset();
46
47 m_reactant = a_surfaceReaction.getReactant();
48 }
49
50 m_products.emplace_back(a_surfaceReaction.getProducts());
51 m_efficiencies.emplace_back(a_surfaceReaction.getEfficiency());
52
53 m_distribution = std::discrete_distribution<size_t>(std::begin(m_efficiencies), std::end(m_efficiencies));
54
55 m_isDefined = true;
56}
57
58inline void
60{
61 m_reactant = 0;
62 m_products.clear();
63 m_efficiencies.clear();
64
65 m_isDefined = false;
66}
67
68inline const size_t&
73
79
80inline const std::vector<Real>&
85
91
92#include <CD_NamespaceFooter.H>
93
94#endif
Declaration of the Physics::ItoKMC::ItoKMCSurfaceReactions class.
Reaction class for describing secondary emissions due to a single outgoing particle in ItoKMCPhysics.
Definition CD_ItoKMCSurfaceReaction.H:33
size_t m_reactant
Reactant index.
Definition CD_ItoKMCSurfaceReactions.H:98
void add(const ItoKMCSurfaceReaction &a_surfaceReaction) noexcept
Add a reaction to this collection.
Definition CD_ItoKMCSurfaceReactionsImplem.H:36
const size_t & getReactant() const noexcept
Get the reactant species index.
Definition CD_ItoKMCSurfaceReactionsImplem.H:69
std::discrete_distribution< size_t > & getDistribution() const noexcept
Get the discrete distribution used to randomly select a reaction pathway.
Definition CD_ItoKMCSurfaceReactionsImplem.H:87
virtual ~ItoKMCSurfaceReactions() noexcept
Destructor.
Definition CD_ItoKMCSurfaceReactionsImplem.H:30
const std::vector< Real > & getEfficiencies() const noexcept
Get the efficiency (probability) for each competing reaction pathway.
Definition CD_ItoKMCSurfaceReactionsImplem.H:81
std::vector< Products > m_products
Plasma product indices.
Definition CD_ItoKMCSurfaceReactions.H:103
bool m_isDefined
Is defined or not.
Definition CD_ItoKMCSurfaceReactions.H:93
const std::vector< Products > & getProducts() const noexcept
Get the plasma product index lists for each competing reaction pathway.
Definition CD_ItoKMCSurfaceReactionsImplem.H:75
ItoKMCSurfaceReactions() noexcept
Allowed, but you need to call the define function afterwards.
Definition CD_ItoKMCSurfaceReactionsImplem.H:25
std::discrete_distribution< size_t > m_distribution
Discrete distribution – useful when drawing a reaction.
Definition CD_ItoKMCSurfaceReactions.H:113
std::vector< Real > m_efficiencies
Reaction efficiencies.
Definition CD_ItoKMCSurfaceReactions.H:108
void reset() noexcept
Reset method for clearing class.
Definition CD_ItoKMCSurfaceReactionsImplem.H:59
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