16#ifndef CD_CDRPLASMAJSON_H
17#define CD_CDRPLASMAJSON_H
25#include <nlohmann/json.hpp>
36#include <CD_NamespaceHeader.H>
39using json = nlohmann::json;
75 using FunctionEN = std::function<Real(
const Real a_E,
const Real a_N)>;
82 using FunctionX = std::function<Real(
const RealVect a_position)>;
89 using FunctionEX = std::function<Real(
const Real E,
const RealVect x)>;
95 using FunctionT = std::function<Real(
const Real a_T)>;
102 using FunctionTT = std::function<Real(
const Real a_T1,
const Real a_T2)>;
141 virtual Vector<std::string>
160 const Vector<RealVect>& a_cdrGradients,
161 const Vector<Real>& a_rteDensities,
163 const RealVect& a_position,
167 const Real a_kappa)
const override;
177 computeAlpha(
const Real E,
const RealVect& a_position)
const override;
187 computeEta(
const Real a_E,
const RealVect& a_position)
const override;
207 Vector<Real>& a_rteSources,
208 const Vector<Real>& a_cdrDensities,
209 const Vector<RealVect>& a_cdrGradients,
210 const Vector<Real>& a_rteDensities,
212 const RealVect& a_pos,
216 const Real a_kappa)
const override;
226 virtual Vector<RealVect>
228 const RealVect& a_pos,
230 const Vector<Real>& a_cdrDensities)
const override;
242 const RealVect& a_pos,
244 const Vector<Real>& a_cdrDensities)
const override;
261 const RealVect& a_pos,
262 const RealVect& a_normal,
264 const Vector<Real>& a_cdrDensities,
265 const Vector<Real>& a_cdrVelocities,
266 const Vector<Real>& a_cdrGradients,
267 const Vector<Real>& a_rteFluxes,
268 const Vector<Real>& a_extrapCdrFluxes)
const override;
285 const RealVect& a_pos,
286 const RealVect& a_normal,
288 const Vector<Real>& a_cdrDensities,
289 const Vector<Real>& a_cdrVelocities,
290 const Vector<Real>& a_cdrGradients,
291 const Vector<Real>& a_rteFluxes,
292 const Vector<Real>& a_extrapCdrFluxes)
const override;
310 const RealVect& a_pos,
312 const Side::LoHiSide a_side,
314 const Vector<Real>& a_cdrDensities,
315 const Vector<Real>& a_cdrVelocities,
316 const Vector<Real>& a_cdrGradients,
317 const Vector<Real>& a_rteFluxes,
318 const Vector<Real>& a_extrapCdrFluxes)
const override;
327 initialSigma(
const Real a_time,
const RealVect& a_pos)
const override;
431 std::function<Real(
const RealVect a_position,
const Real a_time)>
m_initialSigma;
893 std::map<std::pair<int, Side::LoHiSide>, std::vector<CdrPlasmaSurfaceReactionJSON>>
m_domainReactions;
1010 virtual List<PointParticle>
1020 virtual std::list<std::tuple<std::string, std::vector<std::string>, std::vector<std::string>>>
1022 const std::vector<std::string>& a_products,
1023 const json& a_reaction);
1032 std::vector<std::string>& a_products,
1033 const std::string& a_reaction)
const;
1044 const std::vector<std::string>& a_products,
1045 const std::string& a_reaction)
const;
1060 std::list<int>& a_neutralReactants,
1061 std::list<int>& a_photonReactants,
1062 std::list<int>& a_plasmaProducts,
1063 std::list<int>& a_neutralProducts,
1064 std::list<int>& a_photonProducts,
1065 const std::vector<std::string>& a_reactants,
1066 const std::vector<std::string>& a_products)
const;
1100 const json& a_reactionJSON,
1101 const std::string& a_wildcard);
1157 const std::vector<std::string>& a_products,
1158 const std::string& a_reaction)
const;
1236 const json& a_reactionJSON,
1237 const std::vector<std::string>& a_sides);
1248 const json& a_reactionJSON,
1249 const std::vector<std::string>& a_sides);
1259 const std::vector<std::string>& a_products,
1260 const std::string& a_reaction)
const;
1269 virtual std::vector<Real>
1271 const RealVect& a_E,
1272 const std::vector<Real>& a_cdrDensities)
const;
1284 virtual std::vector<Real>
1286 const RealVect& a_E,
1287 const std::vector<Real>& a_cdrDensities)
const;
1296 virtual std::vector<Real>
1298 const RealVect& a_E,
1299 const std::vector<Real>& a_cdrDensities)
const;
1308 virtual std::vector<Real>
1310 const RealVect& a_E,
1311 const std::vector<Real>& a_cdrDensities)
const;
1336 const std::vector<Real>& a_cdrDensities,
1337 const std::vector<Real>& a_cdrMobilities,
1338 const std::vector<Real>& a_cdrDiffusionCoefficients,
1339 const std::vector<Real>& a_cdrTemperatures,
1340 const std::vector<Real>& a_cdrEnergies,
1341 const std::vector<RealVect>& a_cdrGradients,
1342 const RealVect& a_pos,
1343 const RealVect& a_vectorE,
1347 const Real& a_alpha,
1349 const Real& a_time)
const;
1395 trim(
const std::string& a_string);
1440 const std::vector<Real>& a_rteDensities,
1441 const RealVect& a_position,
1444 const Real a_dx)
const;
1460 std::vector<Real>& a_photonProduction,
1461 const std::vector<RealVect>& a_cdrGradients,
1462 const RealVect& a_E,
1463 const RealVect& a_pos,
1467 const Real a_kappa)
const;
1483 std::vector<Real>& a_rteSources,
1484 const std::vector<Real>& a_cdrDensities,
1485 const std::vector<RealVect>& a_cdrGradients,
1486 const RealVect& a_E,
1487 const RealVect& a_pos,
1490 const Real a_kappa)
const;
1506 std::vector<Real>& a_photonProduction,
1507 const std::vector<RealVect>& a_cdrGradients,
1508 const RealVect& a_E,
1509 const RealVect& a_pos,
1513 const Real a_kappa)
const;
1529 std::vector<Real>& a_photonProduction,
1530 const std::vector<RealVect>& a_cdrGradients,
1531 const RealVect& a_E,
1532 const RealVect& a_pos,
1536 const Real a_kappa)
const;
1554 std::vector<Real>& a_photonProduction,
1555 const std::vector<RealVect>& a_cdrGradients,
1556 const RealVect& a_E,
1557 const RealVect& a_pos,
1562 const Real a_tableuAlpha)
const;
1578 std::vector<Real>& a_photonProduction,
1579 const std::vector<RealVect>& a_cdrGradients,
1580 const RealVect& a_E,
1581 const RealVect& a_pos,
1585 const Real a_kappa)
const;
1590#include <CD_NamespaceFooter.H>
Declaration of a class that encapsulates reactions for usage with CdrPlasmaJSON.
Declaration of the Physics::CdrPlasma::CdrPlasmaPhysics interface class.
Declaration of a class that encapsulates reactions for usage with CdrPlasmaJSON.
Declaration of a class that encapsulates reactions for usage with CdrPlasmaJSON.
Declaration of a class that encapsulates a CDR species for use with CdrPlasmaJSON.
@ ExplicitEuler
Regular tau leaping.
Declaration of a table for looking up coefficients etc.
Declaration of a class that encapsulates a neutral species for use with CdrPlasmaJSON.
Declaration of a class that encapsulates a RTE species for use with CdrPlasmaJSON.
Class for interpolation of f = f(x) data in one independent variable x.
Definition CD_LookupTable1D.H:32
CdrPlasmaPhysics implementation that reads plasma chemistry from a JSON input file.
Definition CD_CdrPlasmaJSON.H:58
std::map< std::tuple< int, Side::LoHiSide, int >, bool > m_domainExtrapBC
A container which determines if we should add the extrapolated flux as an inflow condition.
Definition CD_CdrPlasmaJSON.H:909
std::map< int, FunctionEX > m_dielectricReactionEfficiencies
Dielectric reaction effiencies. Used for scaling reactions on dielectrics in a "generic" way.
Definition CD_CdrPlasmaJSON.H:842
std::map< int, std::map< int, std::pair< ReactiveEnergyLoss, Real > > > m_plasmaReactionEnergyLosses
For mapping reactive energy losses for all reactions.
Definition CD_CdrPlasmaJSON.H:746
std::map< int, LookupMethod > m_diffusionLookup
Diffusion lookup method.
Definition CD_CdrPlasmaJSON.H:614
virtual void initializeSigma()
Initialize surface charge.
Definition CD_CdrPlasmaJSON.cpp:1338
void fillSourceTerms(std::vector< Real > &a_cdrSources, std::vector< Real > &a_rteSources, const std::vector< Real > &a_cdrDensities, const std::vector< RealVect > &a_cdrGradients, const RealVect &a_E, const RealVect &a_pos, const Real a_dx, const Real a_time, const Real a_kappa) const
Routine for filling the source terms in the reactive problem.
Definition CD_CdrPlasmaJSON.cpp:5768
virtual void parseDielectricReactionEnergyLosses(const int a_reactionIndex, const json &a_reactionJSON)
Parse dielectric-reaction energy losses.
Definition CD_CdrPlasmaJSON.cpp:4326
virtual void parseIntegrator()
Parse the reactive integrator.
Definition CD_CdrPlasmaJSON.cpp:109
std::map< int, LookupTable1D< Real, 1 > > m_mobilityTablesEN
Map for table-based mobilities. Stored as tables (E/N, mu*N)
Definition CD_CdrPlasmaJSON.H:599
virtual void parseElectrodeReactionRate(const int a_reactionIndex, const json &a_reactionJSON)
Parse reaction rate for electrode surface reactions.
Definition CD_CdrPlasmaJSON.cpp:3759
virtual void parseJSON()
Parse the JSON file.
Definition CD_CdrPlasmaJSON.cpp:147
virtual void parsePlasmaReactionRate(const int a_reactionIndex, const json &a_reactionJSON)
Parse reaction rate for plasma reaction.
Definition CD_CdrPlasmaJSON.cpp:2752
std::map< int, Real > m_plasmaReactionConstants
Constant plasma reaction rates.
Definition CD_CdrPlasmaJSON.H:674
static bool isBracketed(const std::string &a_str)
Return true if string starts and ends with a parenthesis.
Definition CD_CdrPlasmaJSON.cpp:205
ReactionIntegrator m_reactionIntegrator
Reaction integrator.
Definition CD_CdrPlasmaJSON.H:411
void integrateReactionsExplicitRK2(std::vector< Real > &a_cdrDensities, std::vector< Real > &a_photonProduction, const std::vector< RealVect > &a_cdrGradients, const RealVect &a_E, const RealVect &a_pos, const Real a_dx, const Real a_dt, const Real a_time, const Real a_kappa, const Real a_tableuAlpha) const
Routine for integrating the reactive-only problem using a second order Runge-Kutta method.
Definition CD_CdrPlasmaJSON.cpp:5949
virtual void sanctifySurfaceReaction(const std::vector< std::string > &a_reactants, const std::vector< std::string > &a_products, const std::string &a_reaction) const
Check if a surface-reaction makes sense in terms of the species that have been defined.
Definition CD_CdrPlasmaJSON.cpp:2703
virtual std::vector< Real > computePlasmaSpeciesTemperatures(const RealVect &a_position, const RealVect &a_E, const std::vector< Real > &a_cdrDensities) const
Compute the various plasma species temperatures.
Definition CD_CdrPlasmaJSON.cpp:4733
std::map< int, bool > m_electrodeReactionHasEnergyLoss
Associative container for determining if a reaction is associated with an energy loss/gain.
Definition CD_CdrPlasmaJSON.H:818
std::map< int, FunctionEN > m_plasmaReactionFunctionsEN
Function-based plasma reaction rates.
Definition CD_CdrPlasmaJSON.H:706
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_CdrPlasmaJSON.H:89
std::map< std::pair< int, Side::LoHiSide >, std::map< int, LookupMethod > > m_domainReactionLookup
Lookup method for the domain reaction rates. The pair is made up of an int representing direction (0=...
Definition CD_CdrPlasmaJSON.H:874
std::map< int, LookupMethod > m_temperatureLookup
Temperature lookup method.
Definition CD_CdrPlasmaJSON.H:645
std::map< int, std::string > m_plasmaReactionDescriptions
Description of plasma reactions. Only used for I/O.
Definition CD_CdrPlasmaJSON.H:664
std::function< Real(const RealVect a_position, const Real a_time)> InitialDataFunction
Function alias for initial data function.
Definition CD_CdrPlasmaJSON.H:65
std::map< int, int > m_plasmaReactionAlphaV
Plasma reaction rates that are alpha*|v|.
Definition CD_CdrPlasmaJSON.H:679
std::map< int, LookupMethod > m_mobilityLookup
Mobility lookup method for each species.
Definition CD_CdrPlasmaJSON.H:579
std::vector< CdrPlasmaReactionJSON > m_plasmaReactions
Plasma reactions.
Definition CD_CdrPlasmaJSON.H:727
std::map< std::string, int > m_cdrSpeciesMap
string-int encoding of the CDr species.
Definition CD_CdrPlasmaJSON.H:477
std::map< std::string, int > m_neutralSpeciesMap
Map for figuring out which where in m_neutralSpecies a neutral species is found.
Definition CD_CdrPlasmaJSON.H:466
virtual std::vector< Real > computePlasmaSpeciesDiffusion(const RealVect &a_position, const RealVect &a_E, const std::vector< Real > &a_cdrDensities) const
Compute the various plasma species diffusion coefficients.
Definition CD_CdrPlasmaJSON.cpp:4655
std::map< int, LookupTable1D< Real, 1 > > m_diffusionTablesEN
Map for table-based diffusion coefficients D = D(E,N).
Definition CD_CdrPlasmaJSON.H:630
virtual void parsePlasmaReactionDescription(const int a_reactionIndex, const json &a_reactionJSON, const std::string &a_wildcard)
Parse plasma reaction descriptions.
Definition CD_CdrPlasmaJSON.cpp:3251
virtual List< PointParticle > parsePlasmaSpeciesInitialParticles(const json &a_json) const
Generate initial particles for a given plasma species.
Definition CD_CdrPlasmaJSON.cpp:1060
json m_json
JSON definition. This is populated when calling parseJSON.
Definition CD_CdrPlasmaJSON.H:406
virtual void sanctifyPhotoReaction(const std::vector< std::string > &a_reactants, const std::vector< std::string > &a_products, const std::string &a_reaction) const
Check if a photo-reaction makes sense in terms of the species that have been defined.
Definition CD_CdrPlasmaJSON.cpp:2633
FunctionX m_gasDensity
Gas number density (in m^(-3))
Definition CD_CdrPlasmaJSON.H:446
std::map< int, Real > m_electrodeReactionConstants
Constant electrode reaction rate.
Definition CD_CdrPlasmaJSON.H:796
std::vector< std::shared_ptr< NeutralSpeciesJSON > > m_neutralSpecies
These are the neutral species.
Definition CD_CdrPlasmaJSON.H:461
bool isPlasmaSpecies(const std::string &a_name) const
Return true if species exists in map and false otherwise.
Definition CD_CdrPlasmaJSON.cpp:4533
std::function< Real(const RealVect a_position)> FunctionX
Function for encapsulating a function f = f(x) where x is the physical coordinates.
Definition CD_CdrPlasmaJSON.H:82
std::map< int, int > m_cdrTransportEnergyMap
int-int encoding for associating a transport solver with an energy solver.
Definition CD_CdrPlasmaJSON.H:507
std::map< int, std::string > m_cdrSpeciesInverseMap
int-string encoding of the CDR species.
Definition CD_CdrPlasmaJSON.H:484
virtual void parseElectrodeReactionScaling(const int a_reactionIndex, const json &a_reactionJSON)
Parse electrode reaction scaling for a specific reaction.
Definition CD_CdrPlasmaJSON.cpp:3801
std::map< std::pair< int, Side::LoHiSide >, std::vector< CdrPlasmaSurfaceReactionJSON > > m_domainReactions
List of domain reactions. The pair is made up of an int representing direction (0=x,...
Definition CD_CdrPlasmaJSON.H:893
virtual void parsePlasmaReactionPlot(const int a_reactionIndex, const json &a_reactionJSON)
Parse reaction plotting.
Definition CD_CdrPlasmaJSON.cpp:3234
virtual std::list< 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 json &a_reaction)
Make a reaction set into a superset. This parses wildcards '@' in reaction string.
Definition CD_CdrPlasmaJSON.cpp:2525
std::vector< json > m_cdrSpeciesJSON
JSON entries for species in the defined field 'plasma species'.
Definition CD_CdrPlasmaJSON.H:421
virtual void parseDomainReactionRate(const int a_reactionIndex, const json &a_reactionJSON, const std::vector< std::string > &a_sides)
Parse reaction rate for domain reactions.
Definition CD_CdrPlasmaJSON.cpp:4217
std::map< int, std::list< std::pair< int, Real > > > m_electrodeReactionEnergyLosses
Associated energy losses for a surface reaction on electrodes.
Definition CD_CdrPlasmaJSON.H:813
std::map< int, std::string > m_rteSpeciesInverseMap
int-string encoding of the RTE species.
Definition CD_CdrPlasmaJSON.H:526
virtual void parseDielectricReactionScaling(const int a_reactionIndex, const json &a_reactionJSON)
Parse dielectric electrode reaction scaling for a specific reaction.
Definition CD_CdrPlasmaJSON.cpp:4041
virtual Vector< RealVect > computeCdrDriftVelocities(const Real a_time, const RealVect &a_pos, const RealVect &a_E, const Vector< Real > &a_cdrDensities) const override
Compute velocities for the CDR equations.
Definition CD_CdrPlasmaJSON.cpp:5156
std::map< int, std::list< std::pair< int, Real > > > m_photoReactionEnergyLosses
Associated energy losses for a photo-reaction.
Definition CD_CdrPlasmaJSON.H:777
bool m_plotEta
Plot Townsend attachment coefficient.
Definition CD_CdrPlasmaJSON.H:391
virtual void sanityCheckSpecies() const
Do a species sanity check.
Definition CD_CdrPlasmaJSON.cpp:211
FunctionX m_gasPressure
Gas pressure (in Pascal).
Definition CD_CdrPlasmaJSON.H:436
std::vector< json > m_rteSpeciesJSON
JSON entries for species in photon_species.
Definition CD_CdrPlasmaJSON.H:426
std::map< int, bool > m_electrodeExtrapBC
A container which determines if we should add the extrapolated flux as an inflow condition.
Definition CD_CdrPlasmaJSON.H:823
FunctionX m_gasTemperature
Gas temperature (in Kelvin)
Definition CD_CdrPlasmaJSON.H:441
virtual void parseReactionString(std::vector< std::string > &a_reactants, std::vector< std::string > &a_products, const std::string &a_reaction) const
Parses a reaction string into reactangs and products.
Definition CD_CdrPlasmaJSON.cpp:267
std::map< int, std::tuple< int, int, FunctionTT > > m_plasmaReactionFunctionsTT
Maps for functions of the type k = f(T1,T2) where T1 and T2 are the temperatures of some species.
Definition CD_CdrPlasmaJSON.H:701
virtual void parseDomainReactions()
Parse secondary emission on domain.
Definition CD_CdrPlasmaJSON.cpp:4064
virtual Real computeAlpha(const Real E, const RealVect &a_position) const override
Compute alpha. Should return Townsend ionization coefficient.
Definition CD_CdrPlasmaJSON.cpp:5005
virtual void parsePhotoReactionEnergyLosses(const int a_reactionIndex, const json &a_reactionJSON)
Parse photo-reaction energy losses.
Definition CD_CdrPlasmaJSON.cpp:3584
virtual void parseTemperatures()
Initialize species temperatures.
Definition CD_CdrPlasmaJSON.cpp:2298
FunctionEN m_alphaFunctionEN
For when we can put alpha = alpha(E,N) as an analytic function.
Definition CD_CdrPlasmaJSON.H:555
virtual void addPhotoIonization(std::vector< Real > &a_cdrSources, const std::vector< Real > &a_rteDensities, const RealVect &a_position, const Real a_E, const Real a_dt, const Real a_dx) const
Add photoionization products to transport equations source terms.
Definition CD_CdrPlasmaJSON.cpp:5635
virtual Vector< Real > computeCdrDiffusionCoefficients(const Real a_time, const RealVect &a_pos, const RealVect &a_E, const Vector< Real > &a_cdrDensities) const override
Compute diffusion coefficients for the CDR equations.
Definition CD_CdrPlasmaJSON.cpp:5203
std::map< int, Real > m_diffusionConstants
Map for constant diffusion coefficients.
Definition CD_CdrPlasmaJSON.H:619
LookupMethod
Enum class for distinguishing types of computation methods when computing transport data stuff.
Definition CD_CdrPlasmaJSON.H:334
virtual void parsePlasmaReactionScaling(const int a_index, const json &a_reactionJSON)
Parse scaling factors for reactions.
Definition CD_CdrPlasmaJSON.cpp:3115
std::map< int, int > m_plasmaReactionEtaV
Plasma reaction rates that are eta*|v|.
Definition CD_CdrPlasmaJSON.H:684
virtual Real computeEta(const Real a_E, const RealVect &a_position) const override
Compute eta. Should return Townsend attachment coefficient.
Definition CD_CdrPlasmaJSON.cpp:5035
std::map< int, Real > m_cdrMasses
Map of the species masses. This is needed for imposing BCs on the energy equations.
Definition CD_CdrPlasmaJSON.H:513
static bool containsBracket(const std::string &a_str)
Protect all kinds of brackets in a string.
Definition CD_CdrPlasmaJSON.cpp:187
std::vector< CdrPlasmaSurfaceReactionJSON > m_dielectricReactions
List of dielectric reactions.
Definition CD_CdrPlasmaJSON.H:847
bool isPhotonSpecies(const std::string &a_name) const
Return true if species exists in map and false otherwise.
Definition CD_CdrPlasmaJSON.cpp:4548
std::map< int, std::string > m_neutralSpeciesInverseMap
Inverse of m_neutralSpeciesMap.
Definition CD_CdrPlasmaJSON.H:471
virtual void parsePhotoReactionScaling(const int a_reactionIndex, const json &a_reactionJSON)
Parse scaling for photo-reactions. Includes Helmholtz corrections if doing Helmholtz reconstruction o...
Definition CD_CdrPlasmaJSON.cpp:3498
std::map< int, bool > m_dielectricExtrapBC
A container which determines if we should add the extrapolated flux as an inflow condition.
Definition CD_CdrPlasmaJSON.H:864
bool m_skipReactions
A flag for skipping reactions completely.
Definition CD_CdrPlasmaJSON.H:401
std::map< int, bool > m_photoReactionHasEnergyLoss
Associative container for determining if a reaction is associated with an energy loss/gain.
Definition CD_CdrPlasmaJSON.H:782
virtual void parseDielectricReactions()
Parse secondary emission on dielectrics.
Definition CD_CdrPlasmaJSON.cpp:3888
std::map< int, FunctionEX > m_mobilityFunctionsEX
Map for function-based mobilities mu = mu(E,x)
Definition CD_CdrPlasmaJSON.H:594
std::map< int, bool > m_plasmaReactionHasEnergyLoss
Associative container for determining if a reaction is associated with an energy loss/gain.
Definition CD_CdrPlasmaJSON.H:751
virtual void parsePlasmaReactionEnergyLosses(const int a_reactionIndex, const json &a_reactionJSON)
Parse plasma reaction energy losses.
Definition CD_CdrPlasmaJSON.cpp:3333
virtual void parseEta()
Parse the Townsend attachment coefficient.
Definition CD_CdrPlasmaJSON.cpp:1504
virtual void parseOptions()
Parse class options.
Definition CD_CdrPlasmaJSON.cpp:86
Real m_chemistryDt
Chemistry time step.
Definition CD_CdrPlasmaJSON.H:451
static bool doesFileExist(const std::string &a_filename)
Check if file exists.
Definition CD_CdrPlasmaJSON.cpp:4563
std::function< Real(const RealVect a_position, const Real a_time)> m_initialSigma
Initial surface charge.
Definition CD_CdrPlasmaJSON.H:431
FunctionEN m_etaFunctionEN
For when we can put eta = eta(E,N) as an analytic function.
Definition CD_CdrPlasmaJSON.H:560
LookupTable1D< Real, 1 > m_alphaTableEN
For when we can put alpha = table(E,N)
Definition CD_CdrPlasmaJSON.H:565
virtual void initializeNeutralSpecies()
Initialize neutral species.
Definition CD_CdrPlasmaJSON.cpp:376
void integrateReactionsImplicitEuler(std::vector< Real > &a_cdrDensities, std::vector< Real > &a_photonProduction, const std::vector< RealVect > &a_cdrGradients, const RealVect &a_E, const RealVect &a_pos, const Real a_dx, const Real a_dt, const Real a_time, const Real a_kappa) const
Routine for integrating the reactive-only problem using the implicit Euler rule.
std::map< std::pair< int, Side::LoHiSide >, std::map< int, Real > > m_domainReactionConstants
Constant domain reaction rate. The pair is made up of an int representing direction (0=x,...
Definition CD_CdrPlasmaJSON.H:880
std::map< int, FunctionEN > m_mobilityFunctionsEN
Map for function-based mobilities mu = mu(E,N)
Definition CD_CdrPlasmaJSON.H:589
Real m_alphaConstant
For when we can use alpha = constant.
Definition CD_CdrPlasmaJSON.H:545
LookupTable1D< Real, 1 > m_etaTableEN
For when we can put eta = table(E,N)
Definition CD_CdrPlasmaJSON.H:570
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_CdrPlasmaJSON.H:75
static bool containsWildcard(const std::string &a_str)
Protect the @ character in a string.
Definition CD_CdrPlasmaJSON.cpp:181
static void throwParserError(const std::string &a_error)
Throw a parser error.
Definition CD_CdrPlasmaJSON.cpp:165
bool m_discretePhotons
Using discrete photons or not.
Definition CD_CdrPlasmaJSON.H:396
std::map< int, std::pair< int, LookupTable1D< Real, 1 > > > m_plasmaReactionTablesEnergy
Map for table-based reaction coefficients where k = k(energy).
Definition CD_CdrPlasmaJSON.H:717
std::vector< FunctionX > m_neutralSpeciesDensities
Neutral species densities.
Definition CD_CdrPlasmaJSON.H:456
virtual int getNumberOfPlotVariables() const override
Get number of plot variables for this physics class.
Definition CD_CdrPlasmaJSON.cpp:4300
virtual void parsePhotoReactions()
Parse photo-reactions.
Definition CD_CdrPlasmaJSON.cpp:3436
virtual void integrateReactions(std::vector< Real > &a_cdrDensities, std::vector< Real > &a_photonProduction, const std::vector< RealVect > &a_cdrGradients, const RealVect &a_E, const RealVect &a_pos, const Real a_dx, const Real a_dt, const Real a_time, const Real a_kappa) const
Routine for integrating the reactive-only problem using various algorithms.
Definition CD_CdrPlasmaJSON.cpp:5688
std::vector< CdrPlasmaPhotoReactionJSON > m_photoReactions
Photo-reactions.
Definition CD_CdrPlasmaJSON.H:770
virtual void parseDomainReactionScaling(const int a_reactionIndex, const json &a_reactionJSON, const std::vector< std::string > &a_sides)
Parse domain reaction scaling for a specific reaction.
Definition CD_CdrPlasmaJSON.cpp:4267
bool isNeutralSpecies(const std::string &a_name) const
Return true if species exists in map and false otherwise.
Definition CD_CdrPlasmaJSON.cpp:4518
std::map< std::string, int > m_rteSpeciesMap
string-int encoding of the RTE species.
Definition CD_CdrPlasmaJSON.H:519
virtual void initializePlasmaSpecies()
Initialize species.
Definition CD_CdrPlasmaJSON.cpp:655
static std::string trim(const std::string &a_string)
Remove whitespace from string.
Definition CD_CdrPlasmaJSON.cpp:249
std::map< int, LookupTable1D< Real, 1 > > m_diffusionTablesEnergy
Map for table-based diffusion coefficients as function of energy.
Definition CD_CdrPlasmaJSON.H:636
std::map< int, LookupTable1D< Real, 1 > > m_mobilityTablesEnergy
Map for table-based mobilities as function of energy.
Definition CD_CdrPlasmaJSON.H:605
std::map< int, FunctionEX > m_photoReactionEfficiencies
Flag for photo-reaction efficiencies. Includes Helmholtz corrections, if present.
Definition CD_CdrPlasmaJSON.H:760
std::map< int, bool > m_plasmaReactionPlot
Plot plasma reaction or not.
Definition CD_CdrPlasmaJSON.H:732
virtual void initializePhotonSpecies()
Initialize photon species.
Definition CD_CdrPlasmaJSON.cpp:1174
virtual InitialDataFunction parsePlasmaSpeciesInitialData(const json &a_json) const
Generate an initial data function for a given plasma species.
Definition CD_CdrPlasmaJSON.cpp:834
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_CdrPlasmaJSON.H:95
virtual void parseMobilities()
Initialize species mobilities.
Definition CD_CdrPlasmaJSON.cpp:1666
virtual ~CdrPlasmaJSON()
Destructor.
Definition CD_CdrPlasmaJSON.cpp:80
ReactionIntegrator
Enum for distinguishing integration methods. Note that 'None' just fills directly with source terms.
Definition CD_CdrPlasmaJSON.H:351
bool m_plotGas
Plot gas pressure, density, and temperature.
Definition CD_CdrPlasmaJSON.H:381
Real m_etaConstant
For when we can use eta = constant.
Definition CD_CdrPlasmaJSON.H:550
virtual Vector< Real > computeCdrDielectricFluxes(const Real a_time, const RealVect &a_pos, const RealVect &a_normal, const RealVect &a_E, const Vector< Real > &a_cdrDensities, const Vector< Real > &a_cdrVelocities, const Vector< Real > &a_cdrGradients, const Vector< Real > &a_rteFluxes, const Vector< Real > &a_extrapCdrFluxes) const override
Compute CDR fluxes on dielectric-gas interfaces. This is used as a boundary condition in the CDR equa...
Definition CD_CdrPlasmaJSON.cpp:5367
LookupMethod m_alphaLookup
Lookup method for Townsend ionization coefficient.
Definition CD_CdrPlasmaJSON.H:535
std::map< int, Real > m_mobilityConstants
Map for constant mobilities.
Definition CD_CdrPlasmaJSON.H:584
LookupMethod m_etaLookup
Lookup method for Townsend attachment coefficient.
Definition CD_CdrPlasmaJSON.H:540
std::map< int, FunctionEN > m_diffusionFunctionsEN
Map for function-based diffusion coefficients. .
Definition CD_CdrPlasmaJSON.H:624
std::map< int, bool > m_cdrIsEnergySolver
int-bool encoding for determining if a solver is an energy solver.
Definition CD_CdrPlasmaJSON.H:489
const std::map< std::string, Side::LoHiSide > m_sideStringToSide
map to translate side from std::string to Side::LoHiSide
Definition CD_CdrPlasmaJSON.H:903
std::map< int, Real > m_dielectricReactionConstants
Constant dielectric reaction rate.
Definition CD_CdrPlasmaJSON.H:837
std::map< int, FunctionEX > m_electrodeReactionEfficiencies
Electrode reaction effiencies. Used for scaling reactions on electrodes in a "generic" way.
Definition CD_CdrPlasmaJSON.H:801
virtual Vector< std::string > getPlotVariableNames() const override
Get plot variable names. The names and positions between this routine and getPlotVariables must be co...
Definition CD_CdrPlasmaJSON.cpp:4390
std::map< int, LookupTable1D< Real, 1 > > m_plasmaReactionTablesEN
Map for table-based reaction coefficients, where k = k(E,N).
Definition CD_CdrPlasmaJSON.H:711
std::map< int, LookupMethod > m_electrodeReactionLookup
Lookup method for the electrode surface reaction rates.
Definition CD_CdrPlasmaJSON.H:791
virtual void parseAlpha()
Parse the Townsend ionization coefficient.
Definition CD_CdrPlasmaJSON.cpp:1361
virtual void advanceReactionNetwork(Vector< Real > &a_cdrSources, Vector< Real > &a_rteSources, const Vector< Real > &a_cdrDensities, const Vector< RealVect > &a_cdrGradients, const Vector< Real > &a_rteDensities, const RealVect &a_E, const RealVect &a_pos, const Real a_dx, const Real a_dt, const Real a_time, const Real a_kappa) const override
Routine intended for advancing a reaction network over a time a_dt.
Definition CD_CdrPlasmaJSON.cpp:5070
virtual void parseElectrodeReactionEnergyLosses(const int a_reactionIndex, const json &a_reactionJSON)
Parse electrode-reaction energy losses.
Definition CD_CdrPlasmaJSON.cpp:3824
std::map< int, LookupMethod > m_dielectricReactionLookup
Lookup method for the dielectric surface reaction rates.
Definition CD_CdrPlasmaJSON.H:832
std::map< int, std::pair< bool, int > > m_plasmaReactionSolovievCorrection
Flag for whether or not reaction includes Soloviev energy correction.
Definition CD_CdrPlasmaJSON.H:738
std::map< int, FunctionEX > m_plasmaReactionEfficiencies
Scaled plasma reactions. These account for e.g. reaction efficiencies, collisional quenching,...
Definition CD_CdrPlasmaJSON.H:722
std::map< int, LookupMethod > m_plasmaReactionLookup
Map for figuring out how to look up the rate for a certain plasma reaction.
Definition CD_CdrPlasmaJSON.H:669
bool m_plotAlpha
Plot Townsend ionization coefficient.
Definition CD_CdrPlasmaJSON.H:386
std::map< int, bool > m_dielectricReactionHasEnergyLoss
Associative container for determining if a reaction is associated with an energy loss/gain.
Definition CD_CdrPlasmaJSON.H:859
virtual void parseDielectricReactionRate(const int a_reactionIndex, const json &a_reactionJSON)
Parse reaction rate for dielectric surface reactions.
Definition CD_CdrPlasmaJSON.cpp:3999
virtual Real computePlasmaReactionRate(const int &a_reactionIndex, const std::vector< Real > &a_cdrDensities, const std::vector< Real > &a_cdrMobilities, const std::vector< Real > &a_cdrDiffusionCoefficients, const std::vector< Real > &a_cdrTemperatures, const std::vector< Real > &a_cdrEnergies, const std::vector< RealVect > &a_cdrGradients, const RealVect &a_pos, const RealVect &a_vectorE, const Real &a_E, const Real &a_Etd, const Real &a_N, const Real &a_alpha, const Real &a_eta, const Real &a_time) const
Compute the reaction rate for a plasma reaction.
Definition CD_CdrPlasmaJSON.cpp:4840
std::map< int, bool > m_cdrHasEnergySolver
int-bool encoding for determining if a CDR solver HAS an associated energy solver.
Definition CD_CdrPlasmaJSON.H:494
std::map< std::pair< int, Side::LoHiSide >, std::map< int, FunctionEX > > m_domainReactionEfficiencies
Domain reaction effiencies. Used for scaling reactions on domains in a "generic" way....
Definition CD_CdrPlasmaJSON.H:887
std::map< int, std::list< std::pair< int, Real > > > m_dielectricReactionEnergyLosses
Associated energy losses for a surface reaction on dielectrics.
Definition CD_CdrPlasmaJSON.H:854
virtual void parseDiffusion()
Initialize species diffusion coefficients.
Definition CD_CdrPlasmaJSON.cpp:1997
std::map< int, std::pair< int, FunctionT > > m_plasmaReactionFunctionsT
Maps for functions of the type k = f(T) where T is the temperature of some species.
Definition CD_CdrPlasmaJSON.H:690
std::string m_jsonFile
Input JSON file name.
Definition CD_CdrPlasmaJSON.H:416
virtual Real initialSigma(const Real a_time, const RealVect &a_pos) const override
Set the initial surface charge.
Definition CD_CdrPlasmaJSON.cpp:5629
virtual void sanctifyPlasmaReaction(const std::vector< std::string > &a_reactants, const std::vector< std::string > &a_products, const std::string &a_reaction) const
Check if a plasma-reaction makes sense in terms of the species that have been defined.
Definition CD_CdrPlasmaJSON.cpp:2589
static void throwParserWarning(const std::string &a_warning)
Throw a parser warning.
Definition CD_CdrPlasmaJSON.cpp:173
virtual Vector< Real > computeCdrElectrodeFluxes(const Real a_time, const RealVect &a_pos, const RealVect &a_normal, const RealVect &a_E, const Vector< Real > &a_cdrDensities, const Vector< Real > &a_cdrVelocities, const Vector< Real > &a_cdrGradients, const Vector< Real > &a_rteFluxes, const Vector< Real > &a_extrapCdrFluxes) const override
Compute CDR fluxes on electrode-gas interfaces. This is used as a boundary condition in the CDR equat...
Definition CD_CdrPlasmaJSON.cpp:5222
std::map< int, bool > m_photoReactionUseHelmholtz
Map over the Helmholtz reconstructions.
Definition CD_CdrPlasmaJSON.H:765
std::map< int, LookupTable1D< Real, 1 > > m_temperatureTablesEN
Temperatures as functions of E/N.
Definition CD_CdrPlasmaJSON.H:655
virtual Vector< Real > getPlotVariables(const Vector< Real > &a_cdrDensities, const Vector< RealVect > &a_cdrGradients, const Vector< Real > &a_rteDensities, const RealVect &a_E, const RealVect &a_position, const Real a_dx, const Real a_dt, const Real a_time, const Real a_kappa) const override
Provide plot variables. This is used by CdrPlasmaStepper when writing plot files.
Definition CD_CdrPlasmaJSON.cpp:4429
virtual void parsePlasmaReactionSoloviev(const int a_reactionIndex, const json &a_reactionJSON)
Parse plasma reaction energy correction.
Definition CD_CdrPlasmaJSON.cpp:3279
const std::map< char, int > m_dirCharToInt
map to translate dir from char to int
Definition CD_CdrPlasmaJSON.H:898
std::map< int, std::tuple< Real, Real, Real > > m_cdrEnergyComputation
Parameters for computing the mean energy from energy density and density.
Definition CD_CdrPlasmaJSON.H:500
virtual Vector< Real > computeCdrDomainFluxes(const Real a_time, const RealVect &a_pos, const int a_dir, const Side::LoHiSide a_side, const RealVect &a_E, const Vector< Real > &a_cdrDensities, const Vector< Real > &a_cdrVelocities, const Vector< Real > &a_cdrGradients, const Vector< Real > &a_rteFluxes, const Vector< Real > &a_extrapCdrFluxes) const override
Compute CDR fluxes through domain sides. This is used as a boundary condition in the CDR equations.
Definition CD_CdrPlasmaJSON.cpp:5509
CdrPlasmaJSON()
Default constructor. Puts object in usable state.
Definition CD_CdrPlasmaJSON.cpp:36
virtual void parsePlasmaReactions()
Parse plasma reactions.
Definition CD_CdrPlasmaJSON.cpp:2441
std::vector< CdrPlasmaSurfaceReactionJSON > m_electrodeReactions
List of electrode reactions.
Definition CD_CdrPlasmaJSON.H:806
virtual void getReactionSpecies(std::list< int > &a_plasmaReactants, std::list< int > &a_neutralReactants, std::list< int > &a_photonReactants, std::list< int > &a_plasmaProducts, std::list< int > &a_neutralProducts, std::list< int > &a_photonProducts, const std::vector< std::string > &a_reactants, const std::vector< std::string > &a_products) const
Get the int-encoding corresponding to species involved in some reaction.
Definition CD_CdrPlasmaJSON.cpp:306
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_CdrPlasmaJSON.H:102
virtual std::vector< Real > computePlasmaSpeciesMobilities(const RealVect &a_position, const RealVect &a_E, const std::vector< Real > &a_cdrDensities) const
Compute the various plasma species mobilities.
Definition CD_CdrPlasmaJSON.cpp:4576
virtual void parseRuntimeOptions() override
Parse run-time class options.
Definition CD_CdrPlasmaJSON.cpp:101
void integrateReactionsExplicitEuler(std::vector< Real > &a_cdrDensities, std::vector< Real > &a_photonProduction, const std::vector< RealVect > &a_cdrGradients, const RealVect &a_E, const RealVect &a_pos, const Real a_dx, const Real a_dt, const Real a_time, const Real a_kappa) const
Routine for integrating the reactive-only problem using the explicit Euler rule.
Definition CD_CdrPlasmaJSON.cpp:5919
ReactiveEnergyLoss
Enum class for distinguishing how we add/lose energy when running LEA-based models....
Definition CD_CdrPlasmaJSON.H:365
std::map< int, FunctionX > m_temperatureConstants
Constant temperatures.
Definition CD_CdrPlasmaJSON.H:650
void integrateReactionsExplicitRK4(std::vector< Real > &a_cdrDensities, std::vector< Real > &a_photonProduction, const std::vector< RealVect > &a_cdrGradients, const RealVect &a_E, const RealVect &a_pos, const Real a_dx, const Real a_dt, const Real a_time, const Real a_kappa) const
Routine for integrating the reactive-only problem using the foruth order Runge-Kutta method.
Definition CD_CdrPlasmaJSON.cpp:5994
virtual std::vector< Real > computePlasmaSpeciesEnergies(const RealVect &a_position, const RealVect &a_E, const std::vector< Real > &a_cdrDensities) const
Compute the various plasma species energies. Returns a list of energies in electron-volts....
Definition CD_CdrPlasmaJSON.cpp:4755
virtual void parseElectrodeReactions()
Parse secondary emission on electrodes.
Definition CD_CdrPlasmaJSON.cpp:3648
bool m_verbose
Verbose or not.
Definition CD_CdrPlasmaJSON.H:376
Abstract interface for specifying plasma kinetics in the CdrPlasma physics module.
Definition CD_CdrPlasmaPhysics.H:52
Namespace containing physics models for use with chombo-discharge.
Definition CD_AdvectionDiffusion.H:16