chombo-discharge
Loading...
Searching...
No Matches
CD_ItoSpecies.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_ITOSPECIES_H
14#define CD_ITOSPECIES_H
15
16// Chombo includes
17#include <List.H>
18
19// Our includes
20#include <CD_ItoParticle.H>
21#include <CD_NamespaceHeader.H>
22
30{
31public:
35 ItoSpecies();
36
44 ItoSpecies(const std::string& a_name, const int a_chargeNumber, const bool a_mobile, const bool a_diffusive);
45
49 virtual ~ItoSpecies();
50
55 std::string
56 getName() const;
57
62 int
63 getChargeNumber() const;
64
69 const std::function<Real(const RealVect& x, const Real& t)>&
70 getInitialDensity() const;
71
76 bool
77 isDiffusive() const;
78
83 bool
84 isMobile() const;
85
94 virtual Real
95 mobility(const Real a_energy) const;
96
105 virtual Real
106 diffusion(const Real a_energy) const;
107
112 virtual void
113 setInitialDensity(const std::function<Real(const RealVect& x, const Real& t)>& a_initialDensity);
114
121
127 getInitialParticles() const;
128
129protected:
133 std::string m_name;
134
139
144
149
154
159
163 std::function<Real(const RealVect& x, const Real& t)> m_initialDensity;
164};
165
166#include <CD_NamespaceFooter.H>
167
168#endif
SoA payload for Ito diffusion particles (drifting Brownian walkers)
Class that acts as user interface for parsing initial data and mobility/diffusion kernels into ItoSol...
Definition CD_ItoSpecies.H:30
ItoSpecies()
Default constructor, but user should set the name, charge/mobility/diffusivity etc.
Definition CD_ItoSpecies.cpp:17
bool isDiffusive() const
Return diffusive or not.
Definition CD_ItoSpecies.cpp:55
int m_chargeNumber
Charge.
Definition CD_ItoSpecies.H:138
std::string getName() const
Return name.
Definition CD_ItoSpecies.cpp:37
bool m_isDiffusive
Diffusive ItoSpecies or not.
Definition CD_ItoSpecies.H:148
std::function< Real(const RealVect &x, const Real &t)> m_initialDensity
Initial density, in case the user wants to generate particles from a density distribution.
Definition CD_ItoSpecies.H:163
bool isMobile() const
Mobile ItoSpecies or not.
Definition CD_ItoSpecies.cpp:61
const std::function< Real(const RealVect &x, const Real &t)> & getInitialDensity() const
Return the initial density.
Definition CD_ItoSpecies.cpp:49
virtual Real mobility(const Real a_energy) const
Compute the mobility as a function of energy.
Definition CD_ItoSpecies.cpp:85
std::string m_name
Ito_Species name.
Definition CD_ItoSpecies.H:133
ParticleSoA< ItoParticle > m_initialParticles
Initial particles.
Definition CD_ItoSpecies.H:158
bool m_isMobile
Mobile ItoSpecies or not.
Definition CD_ItoSpecies.H:153
int m_maxInitialParticlesPerCell
Maximum number of initial numerical particles per cell.
Definition CD_ItoSpecies.H:143
virtual ~ItoSpecies()
Destructor (does nothing):
int getChargeNumber() const
Return charge.
Definition CD_ItoSpecies.cpp:43
virtual void setInitialDensity(const std::function< Real(const RealVect &x, const Real &t)> &a_initialDensity)
Set the initial species density.
Definition CD_ItoSpecies.cpp:67
ParticleSoA< ItoParticle > & getInitialParticles()
Get initial particles – this is called by ItoSolver when filling the solver with initial particles.
Definition CD_ItoSpecies.cpp:73
virtual Real diffusion(const Real a_energy) const
Compute the diffusion coefficient.
Definition CD_ItoSpecies.cpp:91
Arena-backed Struct-of-Arrays particle container for a single grid patch.
Definition CD_ParticleSoA.H:655