12#ifndef CD_ItoKMCJSON_H
13#define CD_ItoKMCJSON_H
21#include <nlohmann/json.hpp>
27#include <CD_NamespaceHeader.H>
740#include <CD_NamespaceFooter.H>
Declaration of a background species class for usage with ItoKMCJSON.
Main file for describing Ito-based plasma physics.
SpeciesType
Map to species type.
Definition CD_ItoKMCPhysics.H:66
Declaration of a table for looking up coefficients etc.
A particle class for use with ItoSolvers, i.e. drifting Brownian walkers.
Definition CD_ItoParticle.H:40
Reaction type for advancing a KMCDualState for Kinetic Monte Carlo.
Definition CD_KMCDualStateReaction.H:33
Class for interpolation of f = f(x) data in one independent variable x.
Definition CD_LookupTable1D.H:30
Particle class for usage with Monte Carlo radiative transfer.
Definition CD_Photon.H:29
Encapsulation of a background species for usage with ItoKMCJSON.
Definition CD_ItoKMCBackgroundSpecies.H:31
Implementation of ItoKMCPhysics which parses input data from a JSON file.
Definition CD_ItoKMCJSON.H:36
virtual void initializeSurfaceEmission(const std::string a_surface)
Initialize surface reactions.
Definition CD_ItoKMCJSON.cpp:1854
virtual bool containsBracket(const std::string a_str) const noexcept
Check if a string contains standard brackets.
Definition CD_ItoKMCJSON.cpp:208
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:2963
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:2665
virtual void initializeDiffusionCoefficients()
Initialize diffusion coefficients.
Definition CD_ItoKMCJSON.cpp:1341
std::vector< std::list< size_t > > m_plasmaReactionPhotonProducts
List of photon species on the right-hand side of a reaction.
Definition CD_ItoKMCJSON.H:373
FunctionEX m_alpha
Townsend ionization coefficient. Defined during parseAlpha.
Definition CD_ItoKMCJSON.H:403
std::vector< std::list< size_t > > m_plasmaReactionPlasmaProducts
List of plasma species on the right-hand side of a reaction.
Definition CD_ItoKMCJSON.H:368
FunctionEX m_eta
Townsend attachment coefficient. Defined during parseEta.
Definition CD_ItoKMCJSON.H:408
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:53
virtual bool isPlasmaSpecies(const std::string &a_name) const noexcept
Return true if species is a plasma species.
Definition CD_ItoKMCJSON.cpp:186
bool m_plotEta
Plot Townsend attachment coefficient.
Definition CD_ItoKMCJSON.H:244
bool m_plotGas
Plot gas pressure, density, and temperature.
Definition CD_ItoKMCJSON.H:234
virtual void initializeGasLaw()
Initialize gas law.
Definition CD_ItoKMCJSON.cpp:303
std::vector< FunctionEVX > m_kmcReactionRates
Function-based plasma reaction rates. Same index as the actual reactions.
Definition CD_ItoKMCJSON.H:347
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:2120
virtual void initializePhotonSpecies()
Initialize the photon species.
Definition CD_ItoKMCJSON.cpp:1520
virtual void secondaryEmissionEB(Vector< List< ItoParticle > > &a_secondaryParticles, Vector< Real > &a_secondaryCDRFluxes, Vector< List< Photon > > &a_secondaryPhotons, const Vector< List< ItoParticle > > &a_primaryParticles, const Vector< Real > &a_primaryCDRFluxes, const Vector< List< 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:3029
FunctionX m_gasPressure
Background gas pressure.
Definition CD_ItoKMCJSON.H:413
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:2748
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_dx, const Real a_kappa) const noexcept override
Update reaction rates.
Definition CD_ItoKMCJSON.cpp:2981
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:82
virtual Real computeEta(const Real a_E, const RealVect a_pos) const noexcept override
Compute Townsend attachment coefficient.
Definition CD_ItoKMCJSON.cpp:2934
std::pair< bool, std::string > m_autoAlpha
Flag if the user wants to compute the alpha coefficient from the reactions.
Definition CD_ItoKMCJSON.H:393
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:3239
std::set< std::string > m_allSpecies
All species that have been defined.
Definition CD_ItoKMCJSON.H:280
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:910
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:60
virtual Vector< std::string > getPlotVariableNames() const noexcept override
Get number of plot variables.
Definition CD_ItoKMCJSON.cpp:3201
std::map< std::string, int > m_cdrSpeciesMap
Map for indexing from an ID to an Ito solver index.
Definition CD_ItoKMCJSON.H:317
virtual void initializePlasmaReactions()
Initialize plasma reactions.
Definition CD_ItoKMCJSON.cpp:1678
std::function< Real(const RealVect a_position, const Real a_time)> FunctionXt
Function alias for e.g. initial data.
Definition CD_ItoKMCJSON.H:43
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:2945
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:2848
virtual std::pair< FunctionEVX, 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:2309
virtual void initializeTownsendCoefficient(const std::string a_coeff)
Parse one of the Townsend coefficients.
Definition CD_ItoKMCJSON.cpp:644
virtual void initializeAutomaticTownsend(const std::string a_coeff)
Initialize automatic Townsend coefficient (ionizatino or attachment) from the reaction rates.
Definition CD_ItoKMCJSON.cpp:743
FunctionX m_gasNumberDensity
Background gas number density.
Definition CD_ItoKMCJSON.H:423
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:2012
ItoKMCJSON()
Default constructor.
Definition CD_ItoKMCJSON.cpp:28
virtual bool doesFileExist(const std::string a_filename) const noexcept
Check if a file exists.
Definition CD_ItoKMCJSON.cpp:151
bool m_previewRates
Preview rates or not.
Definition CD_ItoKMCJSON.H:254
bool m_skipReactions
A flag for skipping reactions completely.
Definition CD_ItoKMCJSON.H:249
virtual void initializePlasmaSpecies()
Initialize the plasma species.
Definition CD_ItoKMCJSON.cpp:549
virtual void throwParserError(const std::string a_error) const noexcept
Throw a parser error.
Definition CD_ItoKMCJSON.cpp:125
std::map< std::string, int > m_backgroundSpeciesMap
Map of string-int identifiers for background species.
Definition CD_ItoKMCJSON.H:285
virtual void initializeMobilities()
Initialize mobility functions.
Definition CD_ItoKMCJSON.cpp:1245
virtual void throwParserWarning(const std::string a_warning) const noexcept
Throw a parser wearning.
Definition CD_ItoKMCJSON.cpp:138
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:237
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:2245
virtual ~ItoKMCJSON() noexcept
Destructor.
Definition CD_ItoKMCJSON.cpp:85
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:327
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:67
std::map< int, std::string > m_backgroundSpeciesMapInverse
Map of int-string identifiers for background species.
Definition CD_ItoKMCJSON.H:290
std::vector< FunctionEX > m_fluidRates
Function-based plasma reaction rates as if they appeared in the reaction rate equation....
Definition CD_ItoKMCJSON.H:353
nlohmann::json m_json
Nohmanns implementation of JSON files.
Definition CD_ItoKMCJSON.H:269
virtual bool isBackgroundSpecies(const std::string &a_name) const noexcept
Return true if species is a background species.
Definition CD_ItoKMCJSON.cpp:175
FunctionX m_gasTemperature
Background gas temperature.
Definition CD_ItoKMCJSON.H:418
std::vector< size_t > multinomial(const size_t N, const std::discrete_distribution< size_t > &a_distribution) const noexcept
Sample a multinomial distribution with N samples.
Definition CD_ItoKMCJSON.cpp:3286
int m_numPlasmaSpecies
Total number of plasma species.
Definition CD_ItoKMCJSON.H:259
virtual void initializePhotoReactions()
Initialize photo-reactions.
Definition CD_ItoKMCJSON.cpp:1773
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:89
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:164
int m_numPhotonSpecies
Total number of photon species.
Definition CD_ItoKMCJSON.H:264
std::vector< bool > m_backgroundSpeciesPlot
Plot background species or not.
Definition CD_ItoKMCJSON.H:302
virtual void initializeBackgroundSpecies()
Initialize the background species.
Definition CD_ItoKMCJSON.cpp:357
std::vector< std::list< size_t > > m_plasmaReactionBackgroundReactants
List of background species involved in a reaction.
Definition CD_ItoKMCJSON.H:358
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:2687
virtual Real computeDt(const RealVect a_E, const RealVect a_pos, const Vector< Real > a_densities) const noexcept override
Compute a physics-based time step.
Definition CD_ItoKMCJSON.cpp:2912
virtual bool needGradients() const noexcept override
Return true/false if physics model needs species gradients.
Definition CD_ItoKMCJSON.cpp:3145
std::string m_jsonFile
Input JSON file name.
Definition CD_ItoKMCJSON.H:274
virtual bool isPhotonSpecies(const std::string &a_name) const noexcept
Return true if species is a photon species.
Definition CD_ItoKMCJSON.cpp:197
virtual Real computeAlpha(const Real a_E, const RealVect a_pos) const noexcept override
Compute Townsend ionization coefficient.
Definition CD_ItoKMCJSON.cpp:2923
virtual void initializeTemperatures()
Initialize the plasma species temperatures.
Definition CD_ItoKMCJSON.cpp:1436
std::function< Real(const Real E, const Real V, const RealVect x)> FunctionEVX
Function for encapsulating a function f = f(E, V, x) where E is the electric field at physical coordi...
Definition CD_ItoKMCJSON.H:76
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:378
std::vector< FunctionEX > m_diffusionCoefficients
Diffusion coefficients for the various species.
Definition CD_ItoKMCJSON.H:337
std::map< std::string, SpeciesType > m_plasmaSpeciesTypes
Map for identifying a species name with a solver type.
Definition CD_ItoKMCJSON.H:307
std::map< int, std::pair< bool, int > > m_plasmaReactionSolovievCorrection
Map of reactions that will be plotted.
Definition CD_ItoKMCJSON.H:388
std::vector< std::pair< bool, std::string > > m_kmcReactionRatePlots
Map of reactions that will be plotted.
Definition CD_ItoKMCJSON.H:383
std::vector< FunctionEX > m_mobilityFunctions
Mobilities for the various species.
Definition CD_ItoKMCJSON.H:332
std::vector< FunctionEX > m_plasmaTemperatures
Plasma species temperatures.
Definition CD_ItoKMCJSON.H:342
std::vector< std::list< size_t > > m_plasmaReactionPlasmaReactants
List of plasma species on the left-hand side of a reaction.
Definition CD_ItoKMCJSON.H:363
virtual bool isBracketed(const std::string a_str) const noexcept
Check if a string contains starts with '(' and ends with ')'.
Definition CD_ItoKMCJSON.cpp:231
std::vector< ItoKMCBackgroundSpecies > m_backgroundSpecies
Map of background species.
Definition CD_ItoKMCJSON.H:296
std::map< std::string, int > m_itoSpeciesMap
Map for indexing from an ID to an Ito solver index.
Definition CD_ItoKMCJSON.H:312
std::pair< bool, std::string > m_autoEta
Flag if the user wants to compute the alpha coefficient from the reactions.
Definition CD_ItoKMCJSON.H:398
virtual void parseJSON()
Parse the JSON file.
Definition CD_ItoKMCJSON.cpp:268
bool m_verbose
Verbose or not.
Definition CD_ItoKMCJSON.H:229
virtual int getNumberOfPlotVariables() const noexcept override
Get number of plot variables.
Definition CD_ItoKMCJSON.cpp:3164
virtual std::string trim(const std::string &a_string) const noexcept
Trim a string. This removes whitespace before/after.
Definition CD_ItoKMCJSON.cpp:102
virtual void printFluidRates() const noexcept
Print the fluid-representation of the reaction rates.
Definition CD_ItoKMCJSON.cpp:831
virtual void parseRuntimeOptions() noexcept override
Parse run-time options.
Definition CD_ItoKMCJSON.cpp:91
virtual void parseVerbose() noexcept
Parse chattiness.
Definition CD_ItoKMCJSON.cpp:255
virtual void initializeParticles()
Parse initial particles.
Definition CD_ItoKMCJSON.cpp:989
bool m_plotAlpha
Plot Townsend ionization coefficient.
Definition CD_ItoKMCJSON.H:239
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:322
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:2208
Base class for interaction between Kinetic Monte Carlo and Ito-based plasma solvers.
Definition CD_ItoKMCPhysics.H:77
Base class for a tracer particle solver. This solver can advance particles in a pre-defined velocity ...
Definition CD_TracerParticleSolver.H:37
TracerParticleSolver()
Default constructor.
Definition CD_TracerParticleSolverImplem.H:25
Name containing various physics models for running chombo-discharge code.
Definition CD_AdvectionDiffusion.H:15