chombo-discharge
Loading...
Searching...
No Matches
CD_ItoKMCJSON.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_ITOKMCJSON_H
14#define CD_ITOKMCJSON_H
15
16// Std includes
17#include <map>
18#include <memory>
19#include <string>
20
21// Third-party includes
22#include <nlohmann/json.hpp>
23
24// Our includes
26#include <CD_ItoKMCPhysics.H>
27#include <CD_LookupTable.H>
28#include <CD_NamespaceHeader.H>
29
30namespace Physics {
31namespace ItoKMC {
32
37{
38public:
44 using FunctionXt = std::function<Real(const RealVect& a_position, const Real a_time)>;
45
54 using FunctionEN = std::function<Real(const Real a_E, const Real a_N)>;
55
61 using FunctionX = std::function<Real(const RealVect& a_position)>;
62
68 using FunctionEX = std::function<Real(const Real E, const RealVect& x)>;
69
80 using FunctionEVXTP = std::function<
81 Real(const Real E, const Real V, const Real dx, const Real dt, const RealVect& x, const Vector<Real>& phi)>;
82
88 using FunctionDXP = std::function<Real(const Real dx, const Vector<Real>& phi)>;
89
94 using FunctionT = std::function<Real(const Real a_T)>;
95
101 using FunctionTT = std::function<Real(const Real a_T1, const Real a_T2)>;
102
106 ItoKMCJSON();
107
111 virtual ~ItoKMCJSON() noexcept;
112
116 virtual void
117 parseRuntimeOptions() noexcept override;
118
124 virtual Real
125 getNeutralDensity(const RealVect& a_pos) const noexcept override;
126
133 virtual Real
134 computeAlpha(const Real a_E, const RealVect& a_pos) const noexcept override;
135
142 virtual Real
143 computeEta(const Real a_E, const RealVect& a_pos) const noexcept override;
144
149 virtual Vector<std::string>
150 getPlotVariableNames() const noexcept override;
151
162 virtual Vector<Real>
163 getPlotVariables(const RealVect& a_E,
164 const RealVect& a_pos,
165 const Vector<Real>& a_phi,
166 const Vector<RealVect>& a_gradPhi,
167 const Real a_dx,
168 const Real a_kappa) const noexcept override;
169
174 virtual int
175 getNumberOfPlotVariables() const noexcept override;
176
181 virtual bool
182 needGradients() const noexcept override;
183
191 virtual Vector<Real>
192 computeMobilities(const Real a_time, const RealVect& a_pos, const RealVect& a_E) const noexcept override;
193
201 virtual Vector<Real>
202 computeDiffusionCoefficients(const Real a_time, const RealVect& a_pos, const RealVect& a_E) const noexcept override;
203
224 virtual void
225 secondaryEmissionEB(Vector<ParticleSoA<ItoParticle>>& a_secondaryParticles,
226 Vector<Real>& a_secondaryCDRFluxes,
227 Vector<ParticleSoA<Photon>>& a_secondaryPhotons,
228 const Vector<ParticleSoA<ItoParticle>>& a_primaryParticles,
229 const Vector<Real>& a_primaryCDRFluxes,
230 const Vector<ParticleSoA<Photon>>& a_primaryPhotons,
231 const RealVect& a_E,
232 const RealVect& a_cellCenter,
233 const RealVect& a_cellCentroid,
234 const RealVect& a_bndryCentroid,
235 const RealVect& a_bndryNormal,
236 const Real a_bndryArea,
237 const Real a_dx,
238 const Real a_dt,
239 const bool a_isDielectric,
240 const int a_matIndex) const noexcept override;
241
242protected:
247
252
257
262
267
272
277
282
286 nlohmann::json m_json;
287
291 std::string m_jsonFile;
292
297 std::set<std::string> m_allSpecies;
298
302 std::map<std::string, int> m_backgroundSpeciesMap;
303
307 std::map<int, std::string> m_backgroundSpeciesMapInverse;
308
314
319 std::vector<bool> m_backgroundSpeciesPlot;
320
324 std::map<std::string, SpeciesType> m_plasmaSpeciesTypes;
325
329 std::map<std::string, int> m_itoSpeciesMap;
330
334 std::map<std::string, int> m_cdrSpeciesMap;
335
339 std::map<std::string, int> m_plasmaIndexMap;
340
344 std::map<std::string, int> m_photonIndexMap;
345
350
355
360
365
372
376 std::vector<std::list<size_t>> m_plasmaReactionBackgroundReactants;
377
381 std::vector<std::list<size_t>> m_plasmaReactionPlasmaReactants;
382
386 std::vector<std::list<size_t>> m_plasmaReactionPlasmaProducts;
387
391 std::vector<std::list<size_t>> m_plasmaReactionPhotonProducts;
392
396 std::vector<std::pair<bool, std::string>> m_kmcReactionGradientCorrections;
397
401 std::vector<std::pair<bool, std::string>> m_kmcReactionRatePlots;
402
406 std::map<int, std::pair<bool, int>> m_plasmaReactionSolovievCorrection;
407
411 std::pair<bool, std::string> m_autoAlpha;
412
416 std::pair<bool, std::string> m_autoEta;
417
421 std::vector<std::pair<int, FunctionEN>> m_dielectricFieldEmission;
422
426 std::vector<std::pair<int, FunctionEN>> m_electrodeFieldEmission;
427
432
437
442
447
452
458 virtual std::string
459 trim(const std::string& a_string) const noexcept;
460
464 virtual void
465 parseJSON();
466
470 virtual void
471 parseVerbose() noexcept;
472
477 virtual void
478 throwParserError(const std::string& a_error) const noexcept;
479
484 virtual void
485 throwParserWarning(const std::string& a_warning) const noexcept;
486
492 virtual bool
493 doesFileExist(const std::string& a_filename) const noexcept;
494
500 virtual bool
501 isBackgroundSpecies(const std::string& a_name) const noexcept;
502
508 virtual bool
509 isPlasmaSpecies(const std::string& a_name) const noexcept;
510
516 virtual bool
517 isPhotonSpecies(const std::string& a_name) const noexcept;
518
524 virtual bool
525 containsWildcard(const std::string& a_str) const noexcept;
526
532 virtual bool
533 containsBracket(const std::string& a_str) const noexcept;
534
540 virtual bool
541 isBracketed(const std::string& a_str) const noexcept;
542
547 virtual void
548 checkMolarFraction(const RealVect& a_position) const noexcept;
549
557 virtual void
558 sanctifyPlasmaReaction(const std::vector<std::string>& a_reactants,
559 const std::vector<std::string>& a_products,
560 const std::string& a_reaction) const noexcept;
561
569 virtual void
570 sanctifyPhotoReaction(const std::vector<std::string>& a_reactants,
571 const std::vector<std::string>& a_products,
572 const std::string& a_reaction) const noexcept;
573
577 virtual void
579
583 virtual void
585
590 virtual void
591 initializeTownsendCoefficient(const std::string& a_coeff);
592
597 virtual void
598 initializeAutomaticTownsend(const std::string& a_coeff);
599
605 virtual void
606 previewFunctionEX(const nlohmann::json& a_json, const FunctionEX& a_function) const;
607
611 virtual void
612 printFluidRates() const noexcept;
613
617 virtual void
619
623 virtual void
625
629 virtual void
631
635 virtual void
637
641 virtual void
643
647 virtual void
649
653 virtual void
655
659 virtual void
661
665 virtual void
667
672 virtual void
673 initializeSurfaceEmission(const std::string& a_surface);
674
678 virtual void
680
684 virtual void
686
693 virtual void
694 parseReactionString(std::vector<std::string>& a_reactants,
695 std::vector<std::string>& a_products,
696 const std::string& a_reaction) const noexcept;
697
709 virtual void
710 getReactionSpecies(std::list<size_t>& a_backgroundReactants,
711 std::list<size_t>& a_plasmaReactants,
712 std::list<size_t>& a_photonReactants,
713 std::list<size_t>& a_backgroundProducts,
714 std::list<size_t>& a_plasmaProducts,
715 std::list<size_t>& a_photonProducts,
716 const std::vector<std::string>& a_reactants,
717 const std::vector<std::string>& a_products) const noexcept;
718
727 virtual std::pair<FunctionEVXTP, FunctionEX>
728 parsePlasmaReactionRate(const nlohmann::json& a_reactionJSON,
729 const std::list<size_t>& a_backgroundReactants,
730 const std::list<size_t>& a_plasmaReactants) const;
731
737 virtual std::pair<bool, std::string>
738 parsePlasmaReactionPlot(const nlohmann::json& a_reactionJSON) const;
739
745 virtual std::pair<bool, std::string>
746 parsePlasmaReactionGradientCorrection(const nlohmann::json& a_reactionJSON) const;
747
754 virtual Real
755 parsePlasmaReactionDt(const nlohmann::json& a_reactionJSON) const;
756
763 virtual LookupTable1D<Real, 1>
764 parseTableEByN(const nlohmann::json& a_tableEntry, const std::string& a_dataID) const;
765
774 virtual std::vector<std::tuple<std::string, std::vector<std::string>, std::vector<std::string>>>
775 parseReactionWildcards(const std::vector<std::string>& a_reactants,
776 const std::vector<std::string>& a_products,
777 const nlohmann::json& a_reactionJSON) const noexcept;
778
790 virtual void
791 updateReactionRates(std::vector<std::shared_ptr<const KMCReaction>>& a_kmcReactions,
792 const RealVect a_E,
793 const RealVect a_pos,
794 const Vector<Real>& a_phi,
795 const Vector<RealVect>& a_gradPhi,
796 const Real a_dt,
797 const Real a_dx,
798 const Real a_kappa) const noexcept override;
799
806 std::vector<size_t>
807 multinomial(const size_t N, const std::discrete_distribution<int>& a_distribution) const noexcept;
808};
809} // namespace ItoKMC
810} // namespace Physics
811
812#include <CD_NamespaceFooter.H>
813
814#endif
Declaration of a background species class for usage with ItoKMCJSON.
Declaration of the Physics::ItoKMC::ItoKMCPhysics abstract base class.
SpeciesType
Tag for distinguishing species solved with an Ito diffusion or CDR fluid formalism.
Definition CD_ItoKMCPhysics.H:71
Declaration of a table for looking up coefficients etc.
Reaction type for advancing a KMCDualState for Kinetic Monte Carlo.
Definition CD_KMCDualStateReaction.H:34
Class for interpolation of f = f(x) data in one independent variable x.
Definition CD_LookupTable1D.H:32
Arena-backed Struct-of-Arrays particle container for a single grid patch.
Definition CD_ParticleSoA.H:655
Encapsulation of a background species for usage with ItoKMCJSON.
Definition CD_ItoKMCBackgroundSpecies.H:32
Implementation of ItoKMCPhysics which parses input data from a JSON file.
Definition CD_ItoKMCJSON.H:37
virtual Real computeEta(const Real a_E, const RealVect &a_pos) const noexcept override
Compute Townsend attachment coefficient.
Definition CD_ItoKMCJSON.cpp:3436
virtual std::pair< bool, std::string > parsePlasmaReactionPlot(const nlohmann::json &a_reactionJSON) const
Parse whether or not a reaction rate should be plotted.
Definition CD_ItoKMCJSON.cpp:3140
virtual void initializeDiffusionCoefficients()
Initialize diffusion coefficients.
Definition CD_ItoKMCJSON.cpp:1523
std::vector< std::list< size_t > > m_plasmaReactionPhotonProducts
List of photon species on the right-hand side of a reaction.
Definition CD_ItoKMCJSON.H:391
FunctionEX m_alpha
Townsend ionization coefficient. Defined during parseAlpha.
Definition CD_ItoKMCJSON.H:431
virtual void secondaryEmissionEB(Vector< ParticleSoA< ItoParticle > > &a_secondaryParticles, Vector< Real > &a_secondaryCDRFluxes, Vector< ParticleSoA< Photon > > &a_secondaryPhotons, const Vector< ParticleSoA< ItoParticle > > &a_primaryParticles, const Vector< Real > &a_primaryCDRFluxes, const Vector< ParticleSoA< Photon > > &a_primaryPhotons, const RealVect &a_E, const RealVect &a_cellCenter, const RealVect &a_cellCentroid, const RealVect &a_bndryCentroid, const RealVect &a_bndryNormal, const Real a_bndryArea, const Real a_dx, const Real a_dt, const bool a_isDielectric, const int a_matIndex) const noexcept override
Resolve secondary emission at the EB.
Definition CD_ItoKMCJSON.cpp:3530
virtual void initializeAutomaticTownsend(const std::string &a_coeff)
Initialize automatic Townsend coefficient (ionizatino or attachment) from the reaction rates.
Definition CD_ItoKMCJSON.cpp:876
std::vector< std::list< size_t > > m_plasmaReactionPlasmaProducts
List of plasma species on the right-hand side of a reaction.
Definition CD_ItoKMCJSON.H:386
virtual Vector< Real > getPlotVariables(const RealVect &a_E, const RealVect &a_pos, const Vector< Real > &a_phi, const Vector< RealVect > &a_gradPhi, const Real a_dx, const Real a_kappa) const noexcept override
Get plot variables.
Definition CD_ItoKMCJSON.cpp:3777
virtual void initializeTownsendCoefficient(const std::string &a_coeff)
Parse one of the Townsend coefficients.
Definition CD_ItoKMCJSON.cpp:712
FunctionEX m_eta
Townsend attachment coefficient. Defined during parseEta.
Definition CD_ItoKMCJSON.H:436
std::function< Real(const Real a_E, const Real a_N)> FunctionEN
Function for encapsulating operations f = f(E,N). field in Townsend units.
Definition CD_ItoKMCJSON.H:54
virtual bool isPlasmaSpecies(const std::string &a_name) const noexcept
Return true if species is a plasma species.
Definition CD_ItoKMCJSON.cpp:190
bool m_plotEta
Plot Townsend attachment coefficient.
Definition CD_ItoKMCJSON.H:261
virtual bool isBracketed(const std::string &a_str) const noexcept
Check if a string contains starts with '(' and ends with ')'.
Definition CD_ItoKMCJSON.cpp:235
virtual void initializeSurfaceEmission(const std::string &a_surface)
Initialize surface reactions.
Definition CD_ItoKMCJSON.cpp:2053
bool m_plotGas
Plot gas pressure, density, and temperature.
Definition CD_ItoKMCJSON.H:251
virtual void initializeGasLaw()
Initialize gas law.
Definition CD_ItoKMCJSON.cpp:307
virtual void sanctifyPhotoReaction(const std::vector< std::string > &a_reactants, const std::vector< std::string > &a_products, const std::string &a_reaction) const noexcept
Check that a photo-reaction makes sense. I.e. that all species are properly defined and that it conse...
Definition CD_ItoKMCJSON.cpp:2472
virtual void initializePhotonSpecies()
Initialize the photon species.
Definition CD_ItoKMCJSON.cpp:1708
FunctionX m_gasPressure
Background gas pressure.
Definition CD_ItoKMCJSON.H:441
std::vector< FunctionEVXTP > m_kmcReactionRates
Function-based plasma reaction rates. Same index as the actual reactions.
Definition CD_ItoKMCJSON.H:364
virtual LookupTable1D< Real, 1 > parseTableEByN(const nlohmann::json &a_tableEntry, const std::string &a_dataID) const
Parse a table which is stored in E/N format.
Definition CD_ItoKMCJSON.cpp:3249
virtual void updateReactionRates(std::vector< std::shared_ptr< const KMCReaction > > &a_kmcReactions, const RealVect a_E, const RealVect a_pos, const Vector< Real > &a_phi, const Vector< RealVect > &a_gradPhi, const Real a_dt, const Real a_dx, const Real a_kappa) const noexcept override
Update reaction rates.
Definition CD_ItoKMCJSON.cpp:3482
virtual void initializeDensities()
Parse initial densities for CDR and Ito species.
Definition CD_ItoKMCJSON.cpp:1382
std::function< Real(const Real a_T)> FunctionT
Function for encapsulating a function f = f(T) where T is the temperature of some species.
Definition CD_ItoKMCJSON.H:94
std::pair< bool, std::string > m_autoAlpha
Flag if the user wants to compute the alpha coefficient from the reactions.
Definition CD_ItoKMCJSON.H:411
std::set< std::string > m_allSpecies
All species that have been defined.
Definition CD_ItoKMCJSON.H:297
virtual void previewFunctionEX(const nlohmann::json &a_json, const FunctionEX &a_function) const
Simple function for previewing a rate/coefficient defined as a function f = f(E,x)
Definition CD_ItoKMCJSON.cpp:1041
virtual Vector< std::string > getPlotVariableNames() const noexcept override
Get plot variable names.
Definition CD_ItoKMCJSON.cpp:3739
std::function< Real(const RealVect &a_position)> FunctionX
Function for encapsulating a function f = f(x) where x is the physical coordinates.
Definition CD_ItoKMCJSON.H:61
std::map< std::string, int > m_cdrSpeciesMap
Map for indexing from an ID to an Ito solver index.
Definition CD_ItoKMCJSON.H:334
virtual void initializePlasmaReactions()
Initialize plasma reactions.
Definition CD_ItoKMCJSON.cpp:1878
virtual bool containsBracket(const std::string &a_str) const noexcept
Check if a string contains standard brackets.
Definition CD_ItoKMCJSON.cpp:212
std::vector< std::pair< int, FunctionEN > > m_dielectricFieldEmission
List of dielectric field emission reactions.
Definition CD_ItoKMCJSON.H:421
virtual std::vector< std::tuple< std::string, std::vector< std::string >, std::vector< std::string > > > parseReactionWildcards(const std::vector< std::string > &a_reactants, const std::vector< std::string > &a_products, const nlohmann::json &a_reactionJSON) const noexcept
Make a reaction set into a superset. This parses wildcards '@' in reaction string.
Definition CD_ItoKMCJSON.cpp:3352
FunctionX m_gasNumberDensity
Background gas number density.
Definition CD_ItoKMCJSON.H:451
virtual Real getNeutralDensity(const RealVect &a_pos) const noexcept override
Get the neutral density at a position in space.
Definition CD_ItoKMCJSON.cpp:3416
virtual void sanctifyPlasmaReaction(const std::vector< std::string > &a_reactants, const std::vector< std::string > &a_products, const std::string &a_reaction) const noexcept
Check that a plasma reaction makes sense. I.e. that all species are properly defined and that it cons...
Definition CD_ItoKMCJSON.cpp:2354
virtual void throwParserWarning(const std::string &a_warning) const noexcept
Throw a parser warning.
Definition CD_ItoKMCJSON.cpp:142
ItoKMCJSON()
Default constructor.
Definition CD_ItoKMCJSON.cpp:29
bool m_previewRates
Preview rates or not.
Definition CD_ItoKMCJSON.H:271
bool m_skipReactions
A flag for skipping reactions completely.
Definition CD_ItoKMCJSON.H:266
virtual void initializePlasmaSpecies()
Initialize the plasma species.
Definition CD_ItoKMCJSON.cpp:578
std::function< Real(const Real E, const Real V, const Real dx, const Real dt, const RealVect &x, const Vector< Real > &phi)> FunctionEVXTP
Function for encapsulating a function f = f(E, V, x) where E is the electric field at physical coordi...
Definition CD_ItoKMCJSON.H:81
virtual void throwParserError(const std::string &a_error) const noexcept
Throw a parser error.
Definition CD_ItoKMCJSON.cpp:129
std::map< std::string, int > m_backgroundSpeciesMap
Map of string-int identifiers for background species.
Definition CD_ItoKMCJSON.H:302
virtual void initializeMobilities()
Initialize mobility functions.
Definition CD_ItoKMCJSON.cpp:1425
virtual void checkMolarFraction(const RealVect &a_position) const noexcept
Check that molar fraction is one. Throws a warning if it isn't.
Definition CD_ItoKMCJSON.cpp:241
virtual void initializeParticlePlacement()
Initialize the particle placement algorithm.
Definition CD_ItoKMCJSON.cpp:815
virtual void getReactionSpecies(std::list< size_t > &a_backgroundReactants, std::list< size_t > &a_plasmaReactants, std::list< size_t > &a_photonReactants, std::list< size_t > &a_backgroundProducts, std::list< size_t > &a_plasmaProducts, std::list< size_t > &a_photonProducts, const std::vector< std::string > &a_reactants, const std::vector< std::string > &a_products) const noexcept
Turn reactants and products strings into indices.
Definition CD_ItoKMCJSON.cpp:2617
virtual ~ItoKMCJSON() noexcept
Destructor.
Definition CD_ItoKMCJSON.cpp:89
std::map< std::string, int > m_photonIndexMap
Map for indexing a photon species name to a global index in the solver vectors.
Definition CD_ItoKMCJSON.H:344
std::vector< size_t > multinomial(const size_t N, const std::discrete_distribution< int > &a_distribution) const noexcept
Sample a multinomial distribution with N samples.
Definition CD_ItoKMCJSON.cpp:3823
std::map< int, std::string > m_backgroundSpeciesMapInverse
Map of int-string identifiers for background species.
Definition CD_ItoKMCJSON.H:307
std::vector< FunctionEX > m_fluidRates
Function-based plasma reaction rates as if they appeared in the reaction rate equation....
Definition CD_ItoKMCJSON.H:371
nlohmann::json m_json
Nohmanns implementation of JSON files.
Definition CD_ItoKMCJSON.H:286
virtual bool isBackgroundSpecies(const std::string &a_name) const noexcept
Return true if species is a background species.
Definition CD_ItoKMCJSON.cpp:179
FunctionX m_gasTemperature
Background gas temperature.
Definition CD_ItoKMCJSON.H:446
int m_numPlasmaSpecies
Total number of plasma species.
Definition CD_ItoKMCJSON.H:276
virtual void initializePhotoReactions()
Initialize photo-reactions.
Definition CD_ItoKMCJSON.cpp:1974
std::function< Real(const Real a_T1, const Real a_T2)> FunctionTT
Function for encapsulating a function f = f(T1, T2) where T1/T2 are temperatures of two species.
Definition CD_ItoKMCJSON.H:101
int m_numPhotonSpecies
Total number of photon species.
Definition CD_ItoKMCJSON.H:281
std::vector< bool > m_backgroundSpeciesPlot
Plot background species or not.
Definition CD_ItoKMCJSON.H:319
virtual Vector< Real > computeDiffusionCoefficients(const Real a_time, const RealVect &a_pos, const RealVect &a_E) const noexcept override
Compute the Ito solver diffusion coefficients.
Definition CD_ItoKMCJSON.cpp:3463
std::function< Real(const Real E, const RealVect &x)> FunctionEX
Function for encapsulating a function f = f(E, x) where E is the electric field at physical coordinat...
Definition CD_ItoKMCJSON.H:68
virtual void initializeBackgroundSpecies()
Initialize the background species.
Definition CD_ItoKMCJSON.cpp:370
std::vector< std::list< size_t > > m_plasmaReactionBackgroundReactants
List of background species involved in a reaction.
Definition CD_ItoKMCJSON.H:376
virtual Real parsePlasmaReactionDt(const nlohmann::json &a_reactionJSON) const
Parse whether or not a reaction should be a part of the time step calculation. Returns 1 if the react...
Definition CD_ItoKMCJSON.cpp:3225
virtual std::pair< bool, std::string > parsePlasmaReactionGradientCorrection(const nlohmann::json &a_reactionJSON) const
Parse whether or not a reaction uses a gradient correction for the rate.
Definition CD_ItoKMCJSON.cpp:3162
virtual bool needGradients() const noexcept override
Return true if the physics model requires species density gradients.
Definition CD_ItoKMCJSON.cpp:3683
std::vector< std::pair< int, FunctionEN > > m_electrodeFieldEmission
List of electrode field emission reactions.
Definition CD_ItoKMCJSON.H:426
virtual Real computeAlpha(const Real a_E, const RealVect &a_pos) const noexcept override
Compute Townsend ionization coefficient.
Definition CD_ItoKMCJSON.cpp:3426
std::string m_jsonFile
Input JSON file name.
Definition CD_ItoKMCJSON.H:291
virtual bool isPhotonSpecies(const std::string &a_name) const noexcept
Return true if species is a photon species.
Definition CD_ItoKMCJSON.cpp:201
virtual void initializeTemperatures()
Initialize the plasma species temperatures.
Definition CD_ItoKMCJSON.cpp:1620
std::vector< std::pair< bool, std::string > > m_kmcReactionGradientCorrections
Whether or not a reaction uses a gradient correction for the rate (Soloviev et. al....
Definition CD_ItoKMCJSON.H:396
virtual bool containsWildcard(const std::string &a_str) const noexcept
Check if a string contains the wildcard @ and return true if it does.
Definition CD_ItoKMCJSON.cpp:168
virtual void initializeFieldEmission()
Initialize field emission reactions.
Definition CD_ItoKMCJSON.cpp:2210
std::function< Real(const RealVect &a_position, const Real a_time)> FunctionXt
Function alias for e.g. initial data.
Definition CD_ItoKMCJSON.H:44
std::vector< FunctionEX > m_diffusionCoefficients
Diffusion coefficients for the various species.
Definition CD_ItoKMCJSON.H:354
std::map< std::string, SpeciesType > m_plasmaSpeciesTypes
Map for identifying a species name with a solver type.
Definition CD_ItoKMCJSON.H:324
virtual bool doesFileExist(const std::string &a_filename) const noexcept
Check if a file exists.
Definition CD_ItoKMCJSON.cpp:155
virtual std::pair< FunctionEVXTP, FunctionEX > parsePlasmaReactionRate(const nlohmann::json &a_reactionJSON, const std::list< size_t > &a_backgroundReactants, const std::list< size_t > &a_plasmaReactants) const
Parse a plasma reaction rate and turn it into a function.
Definition CD_ItoKMCJSON.cpp:2682
std::map< int, std::pair< bool, int > > m_plasmaReactionSolovievCorrection
Map of reactions that will be plotted.
Definition CD_ItoKMCJSON.H:406
std::vector< std::pair< bool, std::string > > m_kmcReactionRatePlots
Map of reactions that will be plotted.
Definition CD_ItoKMCJSON.H:401
std::vector< FunctionEX > m_mobilityFunctions
Mobilities for the various species.
Definition CD_ItoKMCJSON.H:349
std::vector< FunctionEX > m_plasmaTemperatures
Plasma species temperatures.
Definition CD_ItoKMCJSON.H:359
virtual Vector< Real > computeMobilities(const Real a_time, const RealVect &a_pos, const RealVect &a_E) const noexcept override
Compute the Ito solver mobilities.
Definition CD_ItoKMCJSON.cpp:3446
std::vector< std::list< size_t > > m_plasmaReactionPlasmaReactants
List of plasma species on the left-hand side of a reaction.
Definition CD_ItoKMCJSON.H:381
std::vector< ItoKMCBackgroundSpecies > m_backgroundSpecies
Map of background species.
Definition CD_ItoKMCJSON.H:313
std::map< std::string, int > m_itoSpeciesMap
Map for indexing from an ID to an Ito solver index.
Definition CD_ItoKMCJSON.H:329
std::pair< bool, std::string > m_autoEta
Flag if the user wants to compute the alpha coefficient from the reactions.
Definition CD_ItoKMCJSON.H:416
virtual void parseJSON()
Parse the JSON file.
Definition CD_ItoKMCJSON.cpp:272
bool m_verbose
Verbose or not.
Definition CD_ItoKMCJSON.H:246
virtual int getNumberOfPlotVariables() const noexcept override
Get number of extra diagnostic plot variables.
Definition CD_ItoKMCJSON.cpp:3702
virtual std::string trim(const std::string &a_string) const noexcept
Trim a string. This removes whitespace before/after.
Definition CD_ItoKMCJSON.cpp:106
virtual void printFluidRates() const noexcept
Print the fluid-representation of the reaction rates.
Definition CD_ItoKMCJSON.cpp:965
virtual void parseRuntimeOptions() noexcept override
Parse run-time options.
Definition CD_ItoKMCJSON.cpp:95
virtual void parseVerbose() noexcept
Parse chattiness.
Definition CD_ItoKMCJSON.cpp:259
virtual void initializeParticles()
Parse initial particles.
Definition CD_ItoKMCJSON.cpp:1120
bool m_plotAlpha
Plot Townsend ionization coefficient.
Definition CD_ItoKMCJSON.H:256
std::map< std::string, int > m_plasmaIndexMap
Map for indexing a plasma species name to a global index in the solver vectors.
Definition CD_ItoKMCJSON.H:339
virtual void parseReactionString(std::vector< std::string > &a_reactants, std::vector< std::string > &a_products, const std::string &a_reaction) const noexcept
Parses a reaction string into reactangs and products.
Definition CD_ItoKMCJSON.cpp:2578
std::function< Real(const Real dx, const Vector< Real > &phi)> FunctionDXP
Function alias for f = f(dx, phi) where dx is the grid resolution and phi is the plasma species densi...
Definition CD_ItoKMCJSON.H:88
Abstract base class coupling Kinetic Monte Carlo chemistry to Ito/CDR plasma solvers.
Definition CD_ItoKMCPhysics.H:84
Namespace containing physics models for use with chombo-discharge.
Definition CD_AdvectionDiffusion.H:16
SoA payload for ItoSolver particles, i.e. drifting Brownian walkers.
Definition CD_ItoParticle.H:31
SoA payload for Monte Carlo radiative-transfer photons.
Definition CD_Photon.H:29