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 bool
192 needGradient(const int a_plasmaIndex) const noexcept override;
193
203 virtual void
204 computeMobilities(Vector<Real>& a_mobilities,
205 const Real a_time,
206 const RealVect& a_pos,
207 const RealVect& a_E) const noexcept override;
208
219 virtual void
220 computeDiffusionCoefficients(Vector<Real>& a_diffusionCoefficients,
221 const Real a_time,
222 const RealVect& a_pos,
223 const RealVect& a_E) const noexcept override;
224
245 virtual void
246 secondaryEmissionEB(Vector<ParticleSoA<ItoParticle>>& a_secondaryParticles,
247 Vector<Real>& a_secondaryCDRFluxes,
248 Vector<ParticleSoA<Photon>>& a_secondaryPhotons,
249 const Vector<ParticleSoA<ItoParticle>>& a_primaryParticles,
250 const Vector<Real>& a_primaryCDRFluxes,
251 const Vector<ParticleSoA<Photon>>& a_primaryPhotons,
252 const RealVect& a_E,
253 const RealVect& a_cellCenter,
254 const RealVect& a_cellCentroid,
255 const RealVect& a_bndryCentroid,
256 const RealVect& a_bndryNormal,
257 const Real a_bndryArea,
258 const Real a_dx,
259 const Real a_dt,
260 const bool a_isDielectric,
261 const int a_matIndex) const noexcept override;
262
263protected:
268
273
278
283
288
293
298
303
307 nlohmann::json m_json;
308
312 std::string m_jsonFile;
313
318 std::set<std::string> m_allSpecies;
319
323 std::map<std::string, int> m_backgroundSpeciesMap;
324
328 std::map<int, std::string> m_backgroundSpeciesMapInverse;
329
335
340 std::vector<bool> m_backgroundSpeciesPlot;
341
345 std::map<std::string, SpeciesType> m_plasmaSpeciesTypes;
346
350 std::map<std::string, int> m_itoSpeciesMap;
351
355 std::map<std::string, int> m_cdrSpeciesMap;
356
360 std::map<std::string, int> m_plasmaIndexMap;
361
365 std::map<std::string, int> m_photonIndexMap;
366
371
376
381
386
393
397 std::vector<std::list<size_t>> m_plasmaReactionBackgroundReactants;
398
402 std::vector<std::list<size_t>> m_plasmaReactionPlasmaReactants;
403
407 std::vector<std::list<size_t>> m_plasmaReactionPlasmaProducts;
408
412 std::vector<std::list<size_t>> m_plasmaReactionPhotonProducts;
413
417 std::vector<std::pair<bool, std::string>> m_kmcReactionGradientCorrections;
418
422 std::vector<std::pair<bool, std::string>> m_kmcReactionRatePlots;
423
427 std::map<int, std::pair<bool, int>> m_plasmaReactionSolovievCorrection;
428
432 std::pair<bool, std::string> m_autoAlpha;
433
437 std::pair<bool, std::string> m_autoEta;
438
442 std::vector<std::pair<int, FunctionEN>> m_dielectricFieldEmission;
443
447 std::vector<std::pair<int, FunctionEN>> m_electrodeFieldEmission;
448
453
458
463
468
473
479 virtual std::string
480 trim(const std::string& a_string) const noexcept;
481
485 virtual void
486 parseJSON();
487
491 virtual void
492 parseVerbose() noexcept;
493
498 virtual void
499 throwParserError(const std::string& a_error) const noexcept;
500
505 virtual void
506 throwParserWarning(const std::string& a_warning) const noexcept;
507
513 virtual bool
514 doesFileExist(const std::string& a_filename) const noexcept;
515
521 virtual bool
522 isBackgroundSpecies(const std::string& a_name) const noexcept;
523
529 virtual bool
530 isPlasmaSpecies(const std::string& a_name) const noexcept;
531
537 virtual bool
538 isPhotonSpecies(const std::string& a_name) const noexcept;
539
545 virtual bool
546 containsWildcard(const std::string& a_str) const noexcept;
547
553 virtual bool
554 containsBracket(const std::string& a_str) const noexcept;
555
561 virtual bool
562 isBracketed(const std::string& a_str) const noexcept;
563
568 virtual void
569 checkMolarFraction(const RealVect& a_position) const noexcept;
570
578 virtual void
579 sanctifyPlasmaReaction(const std::vector<std::string>& a_reactants,
580 const std::vector<std::string>& a_products,
581 const std::string& a_reaction) const noexcept;
582
590 virtual void
591 sanctifyPhotoReaction(const std::vector<std::string>& a_reactants,
592 const std::vector<std::string>& a_products,
593 const std::string& a_reaction) const noexcept;
594
598 virtual void
600
604 virtual void
606
611 virtual void
612 initializeTownsendCoefficient(const std::string& a_coeff);
613
618 virtual void
619 initializeAutomaticTownsend(const std::string& a_coeff);
620
626 virtual void
627 previewFunctionEX(const nlohmann::json& a_json, const FunctionEX& a_function) const;
628
632 virtual void
633 printFluidRates() const noexcept;
634
638 virtual void
640
644 virtual void
646
650 virtual void
652
656 virtual void
658
662 virtual void
664
668 virtual void
670
674 virtual void
676
680 virtual void
682
686 virtual void
688
693 virtual void
694 initializeSurfaceEmission(const std::string& a_surface);
695
699 virtual void
701
705 virtual void
707
714 virtual void
715 parseReactionString(std::vector<std::string>& a_reactants,
716 std::vector<std::string>& a_products,
717 const std::string& a_reaction) const noexcept;
718
730 virtual void
731 getReactionSpecies(std::list<size_t>& a_backgroundReactants,
732 std::list<size_t>& a_plasmaReactants,
733 std::list<size_t>& a_photonReactants,
734 std::list<size_t>& a_backgroundProducts,
735 std::list<size_t>& a_plasmaProducts,
736 std::list<size_t>& a_photonProducts,
737 const std::vector<std::string>& a_reactants,
738 const std::vector<std::string>& a_products) const noexcept;
739
748 virtual std::pair<FunctionEVXTP, FunctionEX>
749 parsePlasmaReactionRate(const nlohmann::json& a_reactionJSON,
750 const std::list<size_t>& a_backgroundReactants,
751 const std::list<size_t>& a_plasmaReactants) const;
752
758 virtual std::pair<bool, std::string>
759 parsePlasmaReactionPlot(const nlohmann::json& a_reactionJSON) const;
760
766 virtual std::pair<bool, std::string>
767 parsePlasmaReactionGradientCorrection(const nlohmann::json& a_reactionJSON) const;
768
775 virtual Real
776 parsePlasmaReactionDt(const nlohmann::json& a_reactionJSON) const;
777
784 virtual LookupTable1D<Real, 1>
785 parseTableEByN(const nlohmann::json& a_tableEntry, const std::string& a_dataID) const;
786
795 virtual std::vector<std::tuple<std::string, std::vector<std::string>, std::vector<std::string>>>
796 parseReactionWildcards(const std::vector<std::string>& a_reactants,
797 const std::vector<std::string>& a_products,
798 const nlohmann::json& a_reactionJSON) const noexcept;
799
811 virtual void
812 updateReactionRates(std::vector<std::shared_ptr<const KMCReaction>>& a_kmcReactions,
813 const RealVect a_E,
814 const RealVect a_pos,
815 const Vector<Real>& a_phi,
816 const Vector<RealVect>& a_gradPhi,
817 const Real a_dt,
818 const Real a_dx,
819 const Real a_kappa) const noexcept override;
820
827 std::vector<size_t>
828 multinomial(const size_t N, const std::discrete_distribution<int>& a_distribution) const noexcept;
829};
830} // namespace ItoKMC
831} // namespace Physics
832
833#include <CD_NamespaceFooter.H>
834
835#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:76
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:412
FunctionEX m_alpha
Townsend ionization coefficient. Defined during parseAlpha.
Definition CD_ItoKMCJSON.H:452
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:3536
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:407
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:3807
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:457
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:282
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:272
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:462
std::vector< FunctionEVXTP > m_kmcReactionRates
Function-based plasma reaction rates. Same index as the actual reactions.
Definition CD_ItoKMCJSON.H:385
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:3488
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:432
std::set< std::string > m_allSpecies
All species that have been defined.
Definition CD_ItoKMCJSON.H:318
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:3769
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:355
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:442
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:472
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:292
bool m_skipReactions
A flag for skipping reactions completely.
Definition CD_ItoKMCJSON.H:287
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:323
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:365
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:3853
std::map< int, std::string > m_backgroundSpeciesMapInverse
Map of int-string identifiers for background species.
Definition CD_ItoKMCJSON.H:328
std::vector< FunctionEX > m_fluidRates
Function-based plasma reaction rates as if they appeared in the reaction rate equation....
Definition CD_ItoKMCJSON.H:392
nlohmann::json m_json
Nohmanns implementation of JSON files.
Definition CD_ItoKMCJSON.H:307
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:467
int m_numPlasmaSpecies
Total number of plasma species.
Definition CD_ItoKMCJSON.H:297
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:302
std::vector< bool > m_backgroundSpeciesPlot
Plot background species or not.
Definition CD_ItoKMCJSON.H:340
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:397
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:3689
std::vector< std::pair< int, FunctionEN > > m_electrodeFieldEmission
List of electrode field emission reactions.
Definition CD_ItoKMCJSON.H:447
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:312
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:417
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:375
virtual bool needGradient(const int a_plasmaIndex) const noexcept override
Return true if any reaction's gradient correction names this plasma species.
Definition CD_ItoKMCJSON.cpp:3708
std::map< std::string, SpeciesType > m_plasmaSpeciesTypes
Map for identifying a species name with a solver type.
Definition CD_ItoKMCJSON.H:345
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:427
std::vector< std::pair< bool, std::string > > m_kmcReactionRatePlots
Map of reactions that will be plotted.
Definition CD_ItoKMCJSON.H:422
std::vector< FunctionEX > m_mobilityFunctions
Mobilities for the various species.
Definition CD_ItoKMCJSON.H:370
std::vector< FunctionEX > m_plasmaTemperatures
Plasma species temperatures.
Definition CD_ItoKMCJSON.H:380
std::vector< std::list< size_t > > m_plasmaReactionPlasmaReactants
List of plasma species on the left-hand side of a reaction.
Definition CD_ItoKMCJSON.H:402
std::vector< ItoKMCBackgroundSpecies > m_backgroundSpecies
Map of background species.
Definition CD_ItoKMCJSON.H:334
virtual void computeDiffusionCoefficients(Vector< Real > &a_diffusionCoefficients, 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:3468
std::map< std::string, int > m_itoSpeciesMap
Map for indexing from an ID to an Ito solver index.
Definition CD_ItoKMCJSON.H:350
std::pair< bool, std::string > m_autoEta
Flag if the user wants to compute the alpha coefficient from the reactions.
Definition CD_ItoKMCJSON.H:437
virtual void parseJSON()
Parse the JSON file.
Definition CD_ItoKMCJSON.cpp:272
bool m_verbose
Verbose or not.
Definition CD_ItoKMCJSON.H:267
virtual int getNumberOfPlotVariables() const noexcept override
Get number of extra diagnostic plot variables.
Definition CD_ItoKMCJSON.cpp:3732
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:277
virtual void computeMobilities(Vector< Real > &a_mobilities, 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::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:360
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:89
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