chombo-discharge
CD_CdrPlasmaJSON.H
Go to the documentation of this file.
1 /* chombo-discharge
2  * Copyright © 2022 SINTEF Energy Research.
3  * Copyright © 2022 NTNU.
4  * Copyright © 2022 Fanny Skirbekk.
5  * Please refer to Copyright.txt and LICENSE in the chombo-discharge root directory.
6  */
7 
15 #ifndef CD_CdrPlasmaJSON_H
16 #define CD_CdrPlasmaJSON_H
17 
18 // Std includes
19 #include <map>
20 #include <memory>
21 #include <string>
22 
23 // Third-party includes
24 #include <nlohmann/json.hpp>
25 
26 // Our includes
27 #include <CD_CdrPlasmaPhysics.H>
28 #include <CD_NeutralSpeciesJSON.H>
29 #include <CD_CdrSpeciesJSON.H>
30 #include <CD_RteSpeciesJSON.H>
34 #include <CD_LookupTable.H>
35 #include <CD_NamespaceHeader.H>
36 
37 using json = nlohmann::json;
38 
39 namespace Physics {
40  namespace CdrPlasma {
41 
46  {
47  public:
53  using InitialDataFunction = std::function<Real(const RealVect a_position, const Real a_time)>;
54 
63  using FunctionEN = std::function<Real(const Real a_E, const Real a_N)>;
64 
70  using FunctionX = std::function<Real(const RealVect a_position)>;
71 
77  using FunctionEX = std::function<Real(const Real E, const RealVect x)>;
78 
83  using FunctionT = std::function<Real(const Real a_T)>;
84 
90  using FunctionTT = std::function<Real(const Real a_T1, const Real a_T2)>;
91 
95  CdrPlasmaJSON();
96 
100  virtual ~CdrPlasmaJSON();
101 
105  virtual void
106  parseRuntimeOptions() override;
107 
113  virtual int
114  getNumberOfPlotVariables() const override;
115 
119  virtual Vector<std::string>
120  getPlotVariableNames() const override;
121 
135  virtual Vector<Real>
136  getPlotVariables(const Vector<Real> a_cdrDensities,
137  const Vector<RealVect> a_cdrGradients,
138  const Vector<Real> a_rteDensities,
139  const RealVect a_E,
140  const RealVect a_position,
141  const Real a_dx,
142  const Real a_dt,
143  const Real a_time,
144  const Real a_kappa) const override;
145 
151  virtual Real
152  computeAlpha(const Real E, const RealVect a_position) const override;
153 
160  virtual Real
161  computeEta(const Real a_E, const RealVect a_position) const override;
162 
179  virtual void
180  advanceReactionNetwork(Vector<Real>& a_cdrSources,
181  Vector<Real>& a_rteSources,
182  const Vector<Real> a_cdrDensities,
183  const Vector<RealVect> a_cdrGradients,
184  const Vector<Real> a_rteDensities,
185  const RealVect a_E,
186  const RealVect a_pos,
187  const Real a_dx,
188  const Real a_dt,
189  const Real a_time,
190  const Real a_kappa) const override;
191 
200  virtual Vector<RealVect>
201  computeCdrDriftVelocities(const Real a_time,
202  const RealVect a_pos,
203  const RealVect a_E,
204  const Vector<Real> a_cdrDensities) const override;
205 
214  virtual Vector<Real>
215  computeCdrDiffusionCoefficients(const Real a_time,
216  const RealVect a_pos,
217  const RealVect a_E,
218  const Vector<Real> a_cdrDensities) const override;
219 
233  virtual Vector<Real>
234  computeCdrElectrodeFluxes(const Real a_time,
235  const RealVect a_pos,
236  const RealVect a_normal,
237  const RealVect a_E,
238  const Vector<Real> a_cdrDensities,
239  const Vector<Real> a_cdrVelocities,
240  const Vector<Real> a_cdrGradients,
241  const Vector<Real> a_rteFluxes,
242  const Vector<Real> a_extrapCdrFluxes) const override;
243 
257  virtual Vector<Real>
258  computeCdrDielectricFluxes(const Real a_time,
259  const RealVect a_pos,
260  const RealVect a_normal,
261  const RealVect a_E,
262  const Vector<Real> a_cdrDensities,
263  const Vector<Real> a_cdrVelocities,
264  const Vector<Real> a_cdrGradients,
265  const Vector<Real> a_rteFluxes,
266  const Vector<Real> a_extrapCdrFluxes) const override;
267 
281  virtual Vector<Real>
282  computeCdrDomainFluxes(const Real a_time,
283  const RealVect a_pos,
284  const int a_dir,
285  const Side::LoHiSide a_side,
286  const RealVect a_E,
287  const Vector<Real> a_cdrDensities,
288  const Vector<Real> a_cdrVelocities,
289  const Vector<Real> a_cdrGradients,
290  const Vector<Real> a_rteFluxes,
291  const Vector<Real> a_extrapCdrFluxes) const override;
292 
298  virtual Real
299  initialSigma(const Real a_time, const RealVect a_pos) const override;
300 
301  protected:
305  enum class LookupMethod
306  {
307  Constant,
308  FunctionX,
309  FunctionT,
310  FunctionTT,
311  FunctionEN,
312  FunctionEX,
313  TableEN,
314  TableEnergy,
315  AlphaV,
316  EtaV
317  };
318 
323  {
324  None,
325  ExplicitEuler,
326  ExplicitTrapezoidal,
327  ExplicitMidpoint,
328  ExplicitRK4
329  };
330 
337  {
338  AddMean,
339  SubtractMean,
340  AddDirect,
341  SubtractDirect,
342  External
343  };
344 
348  bool m_verbose;
349 
353  bool m_plotGas;
354 
359 
363  bool m_plotEta;
364 
369 
374 
378  json m_json;
379 
384 
388  std::string m_jsonFile;
389 
393  std::vector<json> m_cdrSpeciesJSON;
394 
398  std::vector<json> m_rteSpeciesJSON;
399 
403  std::function<Real(const RealVect a_position, const Real a_time)> m_initialSigma;
404 
409 
414 
419 
424 
428  std::vector<FunctionX> m_neutralSpeciesDensities;
429 
433  std::vector<std::shared_ptr<NeutralSpeciesJSON>> m_neutralSpecies;
434 
438  std::map<std::string, int> m_neutralSpeciesMap;
439 
443  std::map<int, std::string> m_neutralSpeciesInverseMap;
444 
449  std::map<std::string, int> m_cdrSpeciesMap;
450 
456  std::map<int, std::string> m_cdrSpeciesInverseMap;
457 
461  std::map<int, bool> m_cdrIsEnergySolver;
462 
466  std::map<int, bool> m_cdrHasEnergySolver;
467 
472  std::map<int, std::tuple<Real, Real, Real>> m_cdrEnergyComputation;
473 
479  std::map<int, int> m_cdrTransportEnergyMap;
480 
485  std::map<int, Real> m_cdrMasses;
486 
491  std::map<std::string, int> m_rteSpeciesMap;
492 
498  std::map<int, std::string> m_rteSpeciesInverseMap;
499 
500  // =====================================================
501  // TOWNSEND IONIZATION COEFFICIENT QUANTITIES BEGIN HERE
502  // =====================================================
503 
508 
513 
518 
523 
528 
533 
538 
543 
544  // ================================
545  // MOBILITY QUANTITIES BEGIN HERE
546  // ================================
547 
551  std::map<int, LookupMethod> m_mobilityLookup;
552 
556  std::map<int, Real> m_mobilityConstants;
557 
561  std::map<int, FunctionEN> m_mobilityFunctionsEN;
562 
566  std::map<int, FunctionEX> m_mobilityFunctionsEX;
567 
571  std::map<int, LookupTable1D<Real, 1>> m_mobilityTablesEN;
572 
577  std::map<int, LookupTable1D<Real, 1>> m_mobilityTablesEnergy;
578 
579  // ================================
580  // DIFFUSION QUANTITIES BEGIN HERE
581  // ================================
582 
586  std::map<int, LookupMethod> m_diffusionLookup;
587 
591  std::map<int, Real> m_diffusionConstants;
592 
596  std::map<int, FunctionEN> m_diffusionFunctionsEN;
597 
602  std::map<int, LookupTable1D<Real, 1>> m_diffusionTablesEN;
603 
608  std::map<int, LookupTable1D<Real, 1>> m_diffusionTablesEnergy;
609 
610  // ===========================================
611  // PLASMA SPECIES TEMPERATURE DATA BEGINS HERE
612  // ===========================================
613 
617  std::map<int, LookupMethod> m_temperatureLookup;
618 
622  std::map<int, FunctionX> m_temperatureConstants;
623 
627  std::map<int, LookupTable1D<Real, 1>> m_temperatureTablesEN;
628 
629  // ================================
630  // REACTION DATA BEGINS HERE
631  // ================================
632 
636  std::map<int, std::string> m_plasmaReactionDescriptions;
637 
641  std::map<int, LookupMethod> m_plasmaReactionLookup;
642 
646  std::map<int, Real> m_plasmaReactionConstants;
647 
651  std::map<int, int> m_plasmaReactionAlphaV;
652 
656  std::map<int, int> m_plasmaReactionEtaV;
662  std::map<int, std::pair<int, FunctionT>> m_plasmaReactionFunctionsT;
663 
673  std::map<int, std::tuple<int, int, FunctionTT>> m_plasmaReactionFunctionsTT;
674 
678  std::map<int, FunctionEN> m_plasmaReactionFunctionsEN;
679 
683  std::map<int, LookupTable1D<Real, 1>> m_plasmaReactionTablesEN;
684 
689  std::map<int, std::pair<int, LookupTable1D<Real, 1>>> m_plasmaReactionTablesEnergy;
690 
694  std::map<int, FunctionEX> m_plasmaReactionEfficiencies;
695 
699  std::vector<CdrPlasmaReactionJSON> m_plasmaReactions;
700 
704  std::map<int, bool> m_plasmaReactionPlot;
705 
710  std::map<int, std::pair<bool, int>> m_plasmaReactionSolovievCorrection;
711 
718  std::map<int, std::map<int, std::pair<ReactiveEnergyLoss, Real>>> m_plasmaReactionEnergyLosses;
719 
723  std::map<int, bool> m_plasmaReactionHasEnergyLoss;
724 
725  // ================================
726  // PHOTO-REACTIONS BEGIN HERE
727  // ================================
728 
732  std::map<int, FunctionEX> m_photoReactionEfficiencies;
733 
737  std::map<int, bool> m_photoReactionUseHelmholtz;
738 
742  std::vector<CdrPlasmaPhotoReactionJSON> m_photoReactions;
743 
749  std::map<int, std::list<std::pair<int, Real>>> m_photoReactionEnergyLosses;
750 
754  std::map<int, bool> m_photoReactionHasEnergyLoss;
755 
756  // ===========================================
757  // ELECTRODE SURFACE REACTIONS BEGIN HERE
758  // ===========================================
759 
763  std::map<int, LookupMethod> m_electrodeReactionLookup;
764 
768  std::map<int, Real> m_electrodeReactionConstants;
769 
773  std::map<int, FunctionEX> m_electrodeReactionEfficiencies;
774 
778  std::vector<CdrPlasmaSurfaceReactionJSON> m_electrodeReactions;
779 
785  std::map<int, std::list<std::pair<int, Real>>> m_electrodeReactionEnergyLosses;
786 
790  std::map<int, bool> m_electrodeReactionHasEnergyLoss;
791 
795  std::map<int, bool> m_electrodeExtrapBC;
796 
797  // ===========================================
798  // DIELECTRIC SURFACE REACTIONS BEGIN HERE
799  // ===========================================
800 
804  std::map<int, LookupMethod> m_dielectricReactionLookup;
805 
809  std::map<int, Real> m_dielectricReactionConstants;
810 
814  std::map<int, FunctionEX> m_dielectricReactionEfficiencies;
815 
819  std::vector<CdrPlasmaSurfaceReactionJSON> m_dielectricReactions;
820 
826  std::map<int, std::list<std::pair<int, Real>>> m_dielectricReactionEnergyLosses;
827 
832 
836  std::map<int, bool> m_dielectricExtrapBC;
837 
838  // ===========================================
839  // DOMAIN SURFACE REACTIONS BEGIN HERE
840  // ===========================================
841 
846  std::map<std::pair<int, Side::LoHiSide>, std::map<int, LookupMethod>> m_domainReactionLookup;
847 
852  std::map<std::pair<int, Side::LoHiSide>, std::map<int, Real>> m_domainReactionConstants;
853 
859  std::map<std::pair<int, Side::LoHiSide>, std::map<int, FunctionEX>> m_domainReactionEfficiencies;
860 
865  std::map<std::pair<int, Side::LoHiSide>, std::vector<CdrPlasmaSurfaceReactionJSON>> m_domainReactions;
866 
870  const std::map<char, int> m_dirCharToInt{{'x', 0}, {'y', 1}, {'z', 2}};
871 
875  const std::map<std::string, Side::LoHiSide> m_sideStringToSide{{"lo", Side::Lo}, {"hi", Side::Hi}};
876 
881  std::map<std::tuple<int, Side::LoHiSide, int>, bool> m_domainExtrapBC;
882 
883  // ===========================================
884  // VARIOUS MEMBER FUNCTIONS BEGIN HERE
885  // ===========================================
886 
890  virtual void
891  parseOptions();
892 
896  virtual void
897  parseIntegrator();
898 
902  virtual void
903  parseJSON();
904 
910  virtual void
911  initializeSigma();
912 
916  virtual void
918 
923  virtual void
925 
930  virtual void
932 
936  virtual void
937  parseMobilities();
938 
942  virtual void
943  parseDiffusion();
944 
948  virtual void
950 
954  virtual void
955  parseAlpha();
956 
960  virtual void
961  parseEta();
962 
966  virtual void
968 
973  virtual InitialDataFunction
974  parsePlasmaSpeciesInitialData(const json& a_json) const;
975 
980  virtual List<PointParticle>
981  parsePlasmaSpeciesInitialParticles(const json& a_json) const;
982 
990  virtual std::list<std::tuple<std::string, std::vector<std::string>, std::vector<std::string>>>
991  parseReactionWildcards(const std::vector<std::string>& a_reactants,
992  const std::vector<std::string>& a_products,
993  const json& a_reaction);
1000  virtual void
1001  parseReactionString(std::vector<std::string>& a_reactants,
1002  std::vector<std::string>& a_products,
1003  const std::string& a_reaction) const;
1004 
1012  virtual void
1013  sanctifyPlasmaReaction(const std::vector<std::string>& a_reactants,
1014  const std::vector<std::string>& a_products,
1015  const std::string a_reaction) const;
1016 
1028  virtual void
1029  getReactionSpecies(std::list<int>& a_plasmaReactants,
1030  std::list<int>& a_neutralReactants,
1031  std::list<int>& a_photonReactants,
1032  std::list<int>& a_plasmaProducts,
1033  std::list<int>& a_neutralProducts,
1034  std::list<int>& a_photonProducts,
1035  const std::vector<std::string>& a_reactants,
1036  const std::vector<std::string>& a_products) const;
1037 
1043  virtual void
1044  parsePlasmaReactionRate(const int a_reactionIndex, const json& a_reactionJSON);
1045 
1051  virtual void
1052  parsePlasmaReactionScaling(const int a_reactionIndex, const json& a_reactionJSON);
1053 
1059  virtual void
1060  parsePlasmaReactionPlot(const int a_reactionIndex, const json& a_reactionJSON);
1061 
1067  virtual void
1068  parsePlasmaReactionDescription(const int a_reactionIndex,
1069  const json& a_reactionJSON,
1070  const std::string a_wildcard);
1071 
1077  virtual void
1078  parsePlasmaReactionSoloviev(const int a_reactionIndex, const json& a_reactionJSON);
1079 
1085  virtual void
1086  parsePlasmaReactionEnergyLosses(const int a_reactionIndex, const json& a_reactionJSON);
1087 
1091  virtual void
1093 
1099  virtual void
1100  parsePhotoReactionScaling(const int a_reactionIndex, const json& a_reactionJSON);
1101 
1107  virtual void
1108  parsePhotoReactionEnergyLosses(const int a_reactionIndex, const json& a_reactionJSON);
1109 
1114  virtual void
1115  sanityCheckSpecies() const;
1116 
1124  virtual void
1125  sanctifyPhotoReaction(const std::vector<std::string>& a_reactants,
1126  const std::vector<std::string>& a_products,
1127  const std::string a_reaction) const;
1128 
1132  virtual void
1134 
1140  virtual void
1141  parseElectrodeReactionRate(const int a_reactionIndex, const json& a_reactionJSON);
1142 
1149  virtual void
1150  parseElectrodeReactionScaling(const int a_reactionIndex, const json& a_reactionJSON);
1151 
1157  virtual void
1158  parseElectrodeReactionEnergyLosses(const int a_reactionIndex, const json& a_reactionJSON);
1159 
1163  virtual void
1165 
1171  virtual void
1172  parseDielectricReactionRate(const int a_reactionIndex, const json& a_reactionJSON);
1173 
1180  virtual void
1181  parseDielectricReactionScaling(const int a_reactionIndex, const json& a_reactionJSON);
1182 
1188  virtual void
1189  parseDielectricReactionEnergyLosses(const int a_reactionIndex, const json& a_reactionJSON);
1190 
1194  virtual void
1196 
1203  virtual void
1204  parseDomainReactionRate(const int a_reactionIndex,
1205  const json& a_reactionJSON,
1206  const std::vector<std::string>& a_sides);
1207 
1215  virtual void
1216  parseDomainReactionScaling(const int a_reactionIndex,
1217  const json& a_reactionJSON,
1218  const std::vector<std::string>& a_sides);
1219 
1226  virtual void
1227  sanctifySurfaceReaction(const std::vector<std::string>& a_reactants,
1228  const std::vector<std::string>& a_products,
1229  const std::string a_reaction) const;
1230 
1237  virtual std::vector<Real>
1238  computePlasmaSpeciesTemperatures(const RealVect& a_position,
1239  const RealVect& a_E,
1240  const std::vector<Real>& a_cdrDensities) const;
1241 
1251  virtual std::vector<Real>
1252  computePlasmaSpeciesEnergies(const RealVect& a_position,
1253  const RealVect& a_E,
1254  const std::vector<Real>& a_cdrDensities) const;
1255 
1262  virtual std::vector<Real>
1263  computePlasmaSpeciesMobilities(const RealVect& a_position,
1264  const RealVect& a_E,
1265  const std::vector<Real>& a_cdrDensities) const;
1266 
1274  virtual std::vector<Real>
1275  computePlasmaSpeciesDiffusion(const RealVect a_position,
1276  const RealVect a_E,
1277  const std::vector<Real> a_cdrDensities) const;
1278 
1299  virtual Real
1300  computePlasmaReactionRate(const int& a_reactionIndex,
1301  const std::vector<Real>& a_cdrDensities,
1302  const std::vector<Real>& a_cdrMobilities,
1303  const std::vector<Real>& a_cdrDiffusionCoefficients,
1304  const std::vector<Real>& a_cdrTemperatures,
1305  const std::vector<Real>& a_cdrEnergies,
1306  const std::vector<RealVect>& a_cdrGradients,
1307  const RealVect& a_pos,
1308  const RealVect& a_vectorE,
1309  const Real& a_E,
1310  const Real& a_Etd,
1311  const Real& a_N,
1312  const Real& a_alpha,
1313  const Real& a_eta,
1314  const Real& a_time) const;
1315 
1320  void
1321  throwParserError(const std::string a_error) const;
1322 
1327  void
1328  throwParserWarning(const std::string a_warning) const;
1329 
1334  bool
1335  containsWildcard(const std::string a_str) const;
1336 
1341  bool
1342  containsBracket(const std::string a_str) const;
1343 
1349  bool
1350  isBracketed(const std::string a_str) const;
1351 
1355  std::string
1356  trim(const std::string& a_string) const;
1357 
1362  bool
1363  isNeutralSpecies(const std::string& a_name) const;
1364 
1369  bool
1370  isPlasmaSpecies(const std::string& a_name) const;
1371 
1376  bool
1377  isPhotonSpecies(const std::string& a_name) const;
1378 
1383  bool
1384  doesFileExist(const std::string a_filename) const;
1385 
1395  virtual void
1396  addPhotoIonization(std::vector<Real>& a_cdrSources,
1397  const std::vector<Real>& a_rteDensities,
1398  const RealVect a_position,
1399  const Real a_E,
1400  const Real a_dt,
1401  const Real a_dx) const;
1402 
1414  virtual void
1415  integrateReactions(std::vector<Real>& a_cdrDensities,
1416  std::vector<Real>& a_photonProduction,
1417  const std::vector<RealVect> a_cdrGradients,
1418  const RealVect a_E,
1419  const RealVect a_pos,
1420  const Real a_dx,
1421  const Real a_dt,
1422  const Real a_time,
1423  const Real a_kappa) const;
1424 
1437  void
1438  fillSourceTerms(std::vector<Real>& a_cdrSources,
1439  std::vector<Real>& a_rteSources,
1440  const std::vector<Real> a_cdrDensities,
1441  const std::vector<RealVect> a_cdrGradients,
1442  const RealVect a_E,
1443  const RealVect a_pos,
1444  const Real a_dx,
1445  const Real a_time,
1446  const Real a_kappa) const;
1447 
1460  void
1461  integrateReactionsExplicitEuler(std::vector<Real>& a_cdrDensities,
1462  std::vector<Real>& a_photonProduction,
1463  const std::vector<RealVect> a_cdrGradients,
1464  const RealVect a_E,
1465  const RealVect a_pos,
1466  const Real a_dx,
1467  const Real a_dt,
1468  const Real a_time,
1469  const Real a_kappa) const;
1470 
1483  void
1484  integrateReactionsImplicitEuler(std::vector<Real>& a_cdrDensities,
1485  std::vector<Real>& a_photonProduction,
1486  const std::vector<RealVect> a_cdrGradients,
1487  const RealVect a_E,
1488  const RealVect a_pos,
1489  const Real a_dx,
1490  const Real a_dt,
1491  const Real a_time,
1492  const Real a_kappa) const;
1493 
1508  void
1509  integrateReactionsExplicitRK2(std::vector<Real>& a_cdrDensities,
1510  std::vector<Real>& a_photonProduction,
1511  const std::vector<RealVect> a_cdrGradients,
1512  const RealVect a_E,
1513  const RealVect a_pos,
1514  const Real a_dx,
1515  const Real a_dt,
1516  const Real a_time,
1517  const Real a_kappa,
1518  const Real a_tableuAlpha) const;
1519 
1532  void
1533  integrateReactionsExplicitRK4(std::vector<Real>& a_cdrDensities,
1534  std::vector<Real>& a_photonProduction,
1535  const std::vector<RealVect> a_cdrGradients,
1536  const RealVect a_E,
1537  const RealVect a_pos,
1538  const Real a_dx,
1539  const Real a_dt,
1540  const Real a_time,
1541  const Real a_kappa) const;
1542  };
1543  } // namespace CdrPlasma
1544 } // namespace Physics
1545 
1546 #include <CD_NamespaceFooter.H>
1547 
1548 #endif
Declaration of a class that encapsulates reactions for usage with CdrPlasmaJSON.
Declaration of basic physics coupling functions for Physics/CdrPlasma.
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.
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 which implements CdrPlasmaPhysics and parses plasma chemistry from a JSON input file.
Definition: CD_CdrPlasmaJSON.H:46
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:5760
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:881
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:2471
std::map< int, FunctionEX > m_dielectricReactionEfficiencies
Dielectric reaction effiencies. Used for scaling reactions on dielectrics in a "generic" way.
Definition: CD_CdrPlasmaJSON.H:814
std::map< int, std::map< int, std::pair< ReactiveEnergyLoss, Real > > > m_plasmaReactionEnergyLosses
For mapping reactive energy losses for all reactions.
Definition: CD_CdrPlasmaJSON.H:718
std::map< int, LookupMethod > m_diffusionLookup
Diffusion lookup method.
Definition: CD_CdrPlasmaJSON.H:586
virtual void initializeSigma()
Initialize surface charge.
Definition: CD_CdrPlasmaJSON.cpp:1230
virtual void parseDielectricReactionEnergyLosses(const int a_reactionIndex, const json &a_reactionJSON)
Parse dielectric-reaction energy losses.
Definition: CD_CdrPlasmaJSON.cpp:4102
virtual void parseIntegrator()
Parse the reactive integrator.
Definition: CD_CdrPlasmaJSON.cpp:102
std::map< int, LookupTable1D< Real, 1 > > m_mobilityTablesEN
Map for table-based mobilities. Stored as tables (E/N, mu*N)
Definition: CD_CdrPlasmaJSON.H:571
virtual void parseElectrodeReactionRate(const int a_reactionIndex, const json &a_reactionJSON)
Parse reaction rate for electrode surface reactions.
Definition: CD_CdrPlasmaJSON.cpp:3550
virtual void parseJSON()
Parse the JSON file.
Definition: CD_CdrPlasmaJSON.cpp:138
virtual void parsePlasmaReactionRate(const int a_reactionIndex, const json &a_reactionJSON)
Parse reaction rate for plasma reaction.
Definition: CD_CdrPlasmaJSON.cpp:2582
std::map< int, Real > m_plasmaReactionConstants
Constant plasma reaction rates.
Definition: CD_CdrPlasmaJSON.H:646
ReactionIntegrator m_reactionIntegrator
Reaction integrator.
Definition: CD_CdrPlasmaJSON.H:383
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:4504
std::map< int, bool > m_electrodeReactionHasEnergyLoss
Associative container for determining if a reaction is associated with an energy loss/gain.
Definition: CD_CdrPlasmaJSON.H:790
std::map< int, FunctionEN > m_plasmaReactionFunctionsEN
Function-based plasma reaction rates.
Definition: CD_CdrPlasmaJSON.H:678
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:5401
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:77
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:846
std::map< int, LookupMethod > m_temperatureLookup
Temperature lookup method.
Definition: CD_CdrPlasmaJSON.H:617
std::map< int, std::string > m_plasmaReactionDescriptions
Description of plasma reactions. Only used for I/O.
Definition: CD_CdrPlasmaJSON.H:636
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:4426
std::function< Real(const RealVect a_position, const Real a_time)> InitialDataFunction
Function alias for initial data function.
Definition: CD_CdrPlasmaJSON.H:53
std::map< int, int > m_plasmaReactionAlphaV
Plasma reaction rates that are alpha*|v|.
Definition: CD_CdrPlasmaJSON.H:651
std::map< int, LookupMethod > m_mobilityLookup
Mobility lookup method for each species.
Definition: CD_CdrPlasmaJSON.H:551
std::vector< CdrPlasmaReactionJSON > m_plasmaReactions
Plasma reactions.
Definition: CD_CdrPlasmaJSON.H:699
std::map< std::string, int > m_cdrSpeciesMap
string-int encoding of the CDr species.
Definition: CD_CdrPlasmaJSON.H:449
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:438
std::map< int, LookupTable1D< Real, 1 > > m_diffusionTablesEN
Map for table-based diffusion coefficients D = D(E,N).
Definition: CD_CdrPlasmaJSON.H:602
virtual List< PointParticle > parsePlasmaSpeciesInitialParticles(const json &a_json) const
Generate initial particles for a given plasma species.
Definition: CD_CdrPlasmaJSON.cpp:964
json m_json
JSON definition. This is populated when calling parseJSON.
Definition: CD_CdrPlasmaJSON.H:378
FunctionX m_gasDensity
Gas number density (in m^(-3))
Definition: CD_CdrPlasmaJSON.H:418
std::map< int, Real > m_electrodeReactionConstants
Constant electrode reaction rate.
Definition: CD_CdrPlasmaJSON.H:768
void throwParserError(const std::string a_error) const
Throw a parser error.
Definition: CD_CdrPlasmaJSON.cpp:154
std::vector< std::shared_ptr< NeutralSpeciesJSON > > m_neutralSpecies
These are the neutral species.
Definition: CD_CdrPlasmaJSON.H:433
bool isPlasmaSpecies(const std::string &a_name) const
Return true if species exists in map and false otherwise.
Definition: CD_CdrPlasmaJSON.cpp:4304
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:70
std::map< int, int > m_cdrTransportEnergyMap
int-int encoding for associating a transport solver with an energy solver.
Definition: CD_CdrPlasmaJSON.H:479
std::map< int, std::string > m_cdrSpeciesInverseMap
int-string encoding of the CDR species.
Definition: CD_CdrPlasmaJSON.H:456
virtual void parseElectrodeReactionScaling(const int a_reactionIndex, const json &a_reactionJSON)
Parse electrode reaction scaling for a specific reaction.
Definition: CD_CdrPlasmaJSON.cpp:3590
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:865
virtual void parsePlasmaReactionPlot(const int a_reactionIndex, const json &a_reactionJSON)
Parse reaction plotting.
Definition: CD_CdrPlasmaJSON.cpp:3043
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:2361
std::vector< json > m_cdrSpeciesJSON
JSON entries for species in the defined field 'plasma species'.
Definition: CD_CdrPlasmaJSON.H:393
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:2535
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:3996
std::map< int, std::list< std::pair< int, Real > > > m_electrodeReactionEnergyLosses
Associated energy losses for a surface reaction on electrodes.
Definition: CD_CdrPlasmaJSON.H:785
std::map< int, std::string > m_rteSpeciesInverseMap
int-string encoding of the RTE species.
Definition: CD_CdrPlasmaJSON.H:498
virtual void parseDielectricReactionScaling(const int a_reactionIndex, const json &a_reactionJSON)
Parse dielectric electrode reaction scaling for a specific reaction.
Definition: CD_CdrPlasmaJSON.cpp:3822
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:5534
std::map< int, std::list< std::pair< int, Real > > > m_photoReactionEnergyLosses
Associated energy losses for a photo-reaction.
Definition: CD_CdrPlasmaJSON.H:749
void throwParserWarning(const std::string a_warning) const
Throw a parser wearning.
Definition: CD_CdrPlasmaJSON.cpp:162
bool m_plotEta
Plot Townsend attachment coefficient.
Definition: CD_CdrPlasmaJSON.H:363
virtual void sanityCheckSpecies() const
Do a species sanity check.
Definition: CD_CdrPlasmaJSON.cpp:200
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:5137
FunctionX m_gasPressure
Gas pressure (in Pascal).
Definition: CD_CdrPlasmaJSON.H:408
std::vector< json > m_rteSpeciesJSON
JSON entries for species in photon_species.
Definition: CD_CdrPlasmaJSON.H:398
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:795
FunctionX m_gasTemperature
Gas temperature (in Kelvin)
Definition: CD_CdrPlasmaJSON.H:413
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:252
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:673
virtual void parseDomainReactions()
Parse secondary emission on domain.
Definition: CD_CdrPlasmaJSON.cpp:3845
virtual void parsePhotoReactionEnergyLosses(const int a_reactionIndex, const json &a_reactionJSON)
Parse photo-reaction energy losses.
Definition: CD_CdrPlasmaJSON.cpp:3381
virtual void parseTemperatures()
Initialize species temperatures.
Definition: CD_CdrPlasmaJSON.cpp:2144
FunctionEN m_alphaFunctionEN
For when we can put alpha = alpha(E,N) as an analytic function.
Definition: CD_CdrPlasmaJSON.H:527
bool isBracketed(const std::string a_str) const
Return true if string starts and ends with a paranthesis.
Definition: CD_CdrPlasmaJSON.cpp:194
std::map< int, Real > m_diffusionConstants
Map for constant diffusion coefficients.
Definition: CD_CdrPlasmaJSON.H:591
LookupMethod
Enum class for distinguishing types of computation methods when computing transport data stuff.
Definition: CD_CdrPlasmaJSON.H:306
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:5685
std::map< int, int > m_plasmaReactionEtaV
Plasma reaction rates that are eta*|v|.
Definition: CD_CdrPlasmaJSON.H:656
std::string trim(const std::string &a_string) const
Remove whitespace from string.
Definition: CD_CdrPlasmaJSON.cpp:234
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:485
std::vector< CdrPlasmaSurfaceReactionJSON > m_dielectricReactions
List of dielectric reactions.
Definition: CD_CdrPlasmaJSON.H:819
bool isPhotonSpecies(const std::string &a_name) const
Return true if species exists in map and false otherwise.
Definition: CD_CdrPlasmaJSON.cpp:4319
std::map< int, std::string > m_neutralSpeciesInverseMap
Inverse of m_neutralSpeciesMap.
Definition: CD_CdrPlasmaJSON.H:443
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:3297
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:836
bool m_skipReactions
A flag for skipping reactions completely.
Definition: CD_CdrPlasmaJSON.H:373
std::map< int, bool > m_photoReactionHasEnergyLoss
Associative container for determining if a reaction is associated with an energy loss/gain.
Definition: CD_CdrPlasmaJSON.H:754
virtual void parseDielectricReactions()
Parse secondary emission on dielectrics.
Definition: CD_CdrPlasmaJSON.cpp:3672
std::map< int, FunctionEX > m_mobilityFunctionsEX
Map for function-based mobilities mu = mu(E,x)
Definition: CD_CdrPlasmaJSON.H:566
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:4200
std::map< int, bool > m_plasmaReactionHasEnergyLoss
Associative container for determining if a reaction is associated with an energy loss/gain.
Definition: CD_CdrPlasmaJSON.H:723
virtual void parsePlasmaReactionEnergyLosses(const int a_reactionIndex, const json &a_reactionJSON)
Parse plasma reaction energy losses.
Definition: CD_CdrPlasmaJSON.cpp:3137
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:4994
virtual void parseEta()
Parse the Townsend attachment coefficient.
Definition: CD_CdrPlasmaJSON.cpp:1387
virtual void parseOptions()
Parse class options.
Definition: CD_CdrPlasmaJSON.cpp:79
Real m_chemistryDt
Chemistry time step.
Definition: CD_CdrPlasmaJSON.H:423
std::function< Real(const RealVect a_position, const Real a_time)> m_initialSigma
Initial surface charge.
Definition: CD_CdrPlasmaJSON.H:403
FunctionEN m_etaFunctionEN
For when we can put eta = eta(E,N) as an analytic function.
Definition: CD_CdrPlasmaJSON.H:532
virtual Real computeAlpha(const Real E, const RealVect a_position) const override
Compute alpha. Should return Townsend ionization coefficient.
Definition: CD_CdrPlasmaJSON.cpp:4776
LookupTable1D< Real, 1 > m_alphaTableEN
For when we can put alpha = table(E,N)
Definition: CD_CdrPlasmaJSON.H:537
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:4975
virtual void initializeNeutralSpecies()
Initialize neutral species.
Definition: CD_CdrPlasmaJSON.cpp:359
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:852
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:4928
std::map< int, FunctionEN > m_mobilityFunctionsEN
Map for function-based mobilities mu = mu(E,N)
Definition: CD_CdrPlasmaJSON.H:561
Real m_alphaConstant
For when we can use alpha = constant.
Definition: CD_CdrPlasmaJSON.H:517
LookupTable1D< Real, 1 > m_etaTableEN
For when we can put eta = table(E,N)
Definition: CD_CdrPlasmaJSON.H:542
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:63
bool m_discretePhotons
Using discrete photons or not.
Definition: CD_CdrPlasmaJSON.H:368
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:4841
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:689
std::vector< FunctionX > m_neutralSpeciesDensities
Neutral species densities.
Definition: CD_CdrPlasmaJSON.H:428
virtual int getNumberOfPlotVariables() const override
Get number of plot variables for this physics class.
Definition: CD_CdrPlasmaJSON.cpp:4077
virtual void parsePhotoReactions()
Parse photo-reactions.
Definition: CD_CdrPlasmaJSON.cpp:3236
std::vector< CdrPlasmaPhotoReactionJSON > m_photoReactions
Photo-reactions.
Definition: CD_CdrPlasmaJSON.H:742
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:4044
bool isNeutralSpecies(const std::string &a_name) const
Return true if species exists in map and false otherwise.
Definition: CD_CdrPlasmaJSON.cpp:4289
std::map< std::string, int > m_rteSpeciesMap
string-int encoding of the RTE species.
Definition: CD_CdrPlasmaJSON.H:491
virtual void initializePlasmaSpecies()
Initialize species.
Definition: CD_CdrPlasmaJSON.cpp:585
std::map< int, LookupTable1D< Real, 1 > > m_diffusionTablesEnergy
Map for table-based diffusion coefficients as function of energy.
Definition: CD_CdrPlasmaJSON.H:608
std::map< int, LookupTable1D< Real, 1 > > m_mobilityTablesEnergy
Map for table-based mobilities as function of energy.
Definition: CD_CdrPlasmaJSON.H:577
std::map< int, FunctionEX > m_photoReactionEfficiencies
Flag for photo-reaction efficiencies. Includes Helmholtz corrections, if present.
Definition: CD_CdrPlasmaJSON.H:732
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:5715
std::map< int, bool > m_plasmaReactionPlot
Plot plasma reaction or not.
Definition: CD_CdrPlasmaJSON.H:704
virtual void initializePhotonSpecies()
Initialize photon species.
Definition: CD_CdrPlasmaJSON.cpp:1078
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:5277
virtual InitialDataFunction parsePlasmaSpeciesInitialData(const json &a_json) const
Generate an initial data function for a given plasma species.
Definition: CD_CdrPlasmaJSON.cpp:745
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:83
virtual void parseMobilities()
Initialize species mobilities.
Definition: CD_CdrPlasmaJSON.cpp:1548
virtual ~CdrPlasmaJSON()
Destructor.
Definition: CD_CdrPlasmaJSON.cpp:73
ReactionIntegrator
Enum for distinguishing integration methods. Note that 'None' just fills directly with source terms.
Definition: CD_CdrPlasmaJSON.H:323
bool m_plotGas
Plot gas pressure, density, and temperature.
Definition: CD_CdrPlasmaJSON.H:353
Real m_etaConstant
For when we can use eta = constant.
Definition: CD_CdrPlasmaJSON.H:522
bool containsBracket(const std::string a_str) const
Protect all kinds of brackets in a string.
Definition: CD_CdrPlasmaJSON.cpp:176
LookupMethod m_alphaLookup
Lookup method for Townsend ionization coefficient.
Definition: CD_CdrPlasmaJSON.H:507
std::map< int, Real > m_mobilityConstants
Map for constant mobilities.
Definition: CD_CdrPlasmaJSON.H:556
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.
LookupMethod m_etaLookup
Lookup method for Townsend attachment coefficient.
Definition: CD_CdrPlasmaJSON.H:512
std::map< int, FunctionEN > m_diffusionFunctionsEN
Map for function-based diffusion coefficients. .
Definition: CD_CdrPlasmaJSON.H:596
virtual void parsePlasmaReactionScaling(const int a_reactionIndex, const json &a_reactionJSON)
Parse scaling factors for reactions.
Definition: CD_CdrPlasmaJSON.cpp:2929
std::map< int, bool > m_cdrIsEnergySolver
int-bool encoding for determining if a solver is an energy solver.
Definition: CD_CdrPlasmaJSON.H:461
const std::map< std::string, Side::LoHiSide > m_sideStringToSide
map to translate side from std::string to Side::LoHiSide
Definition: CD_CdrPlasmaJSON.H:875
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:5454
std::map< int, Real > m_dielectricReactionConstants
Constant dielectric reaction rate.
Definition: CD_CdrPlasmaJSON.H:809
std::map< int, FunctionEX > m_electrodeReactionEfficiencies
Electrode reaction effiencies. Used for scaling reactions on electrodes in a "generic" way.
Definition: CD_CdrPlasmaJSON.H:773
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:4161
std::map< int, LookupTable1D< Real, 1 > > m_plasmaReactionTablesEN
Map for table-based reaction coefficients, where k = k(E,N).
Definition: CD_CdrPlasmaJSON.H:683
std::map< int, LookupMethod > m_electrodeReactionLookup
Lookup method for the electrode surface reaction rates.
Definition: CD_CdrPlasmaJSON.H:763
virtual void parseAlpha()
Parse the Townsend ionization coefficient.
Definition: CD_CdrPlasmaJSON.cpp:1253
virtual void parseElectrodeReactionEnergyLosses(const int a_reactionIndex, const json &a_reactionJSON)
Parse electrode-reaction energy losses.
Definition: CD_CdrPlasmaJSON.cpp:3613
std::map< int, LookupMethod > m_dielectricReactionLookup
Lookup method for the dielectric surface reaction rates.
Definition: CD_CdrPlasmaJSON.H:804
std::map< int, std::pair< bool, int > > m_plasmaReactionSolovievCorrection
Flag for whether or not reaction includes Soloviev energy correction.
Definition: CD_CdrPlasmaJSON.H:710
std::map< int, FunctionEX > m_plasmaReactionEfficiencies
Scaled plasma reactions. These account for e.g. reaction efficiencies, collisional quenching,...
Definition: CD_CdrPlasmaJSON.H:694
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:641
bool m_plotAlpha
Plot Townsend ionization coefficient.
Definition: CD_CdrPlasmaJSON.H:358
bool containsWildcard(const std::string a_str) const
Protect the @ character in a string.
Definition: CD_CdrPlasmaJSON.cpp:170
std::map< int, bool > m_dielectricReactionHasEnergyLoss
Associative container for determining if a reaction is associated with an energy loss/gain.
Definition: CD_CdrPlasmaJSON.H:831
virtual void parseDielectricReactionRate(const int a_reactionIndex, const json &a_reactionJSON)
Parse reaction rate for dielectric surface reactions.
Definition: CD_CdrPlasmaJSON.cpp:3782
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:4611
std::map< int, bool > m_cdrHasEnergySolver
int-bool encoding for determining if a CDR solver HAS an associated energy solver.
Definition: CD_CdrPlasmaJSON.H:466
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:859
std::map< int, std::list< std::pair< int, Real > > > m_dielectricReactionEnergyLosses
Associated energy losses for a surface reaction on dielectrics.
Definition: CD_CdrPlasmaJSON.H:826
virtual void parseDiffusion()
Initialize species diffusion coefficients.
Definition: CD_CdrPlasmaJSON.cpp:1861
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:662
std::string m_jsonFile
Input JSON file name.
Definition: CD_CdrPlasmaJSON.H:388
bool doesFileExist(const std::string a_filename) const
Check if file exists.
Definition: CD_CdrPlasmaJSON.cpp:4334
std::map< int, bool > m_photoReactionUseHelmholtz
Map over the Helmholtz reconstructions.
Definition: CD_CdrPlasmaJSON.H:737
std::map< int, LookupTable1D< Real, 1 > > m_temperatureTablesEN
Temperatures as functions of E/N.
Definition: CD_CdrPlasmaJSON.H:627
virtual void parsePlasmaReactionSoloviev(const int a_reactionIndex, const json &a_reactionJSON)
Parse plasma reaction energy correction.
Definition: CD_CdrPlasmaJSON.cpp:3088
const std::map< char, int > m_dirCharToInt
map to translate dir from char to int
Definition: CD_CdrPlasmaJSON.H:870
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:472
CdrPlasmaJSON()
Default constructor.
Definition: CD_CdrPlasmaJSON.cpp:34
virtual void parsePlasmaReactions()
Parse plasma reactions.
Definition: CD_CdrPlasmaJSON.cpp:2278
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:2425
std::vector< CdrPlasmaSurfaceReactionJSON > m_electrodeReactions
List of electrode reactions.
Definition: CD_CdrPlasmaJSON.H:778
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:289
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:90
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:4347
virtual Real initialSigma(const Real a_time, const RealVect a_pos) const override
Set the initial surface charge.
Definition: CD_CdrPlasmaJSON.cpp:5395
virtual void parseRuntimeOptions() override
Parse run-time class options.
Definition: CD_CdrPlasmaJSON.cpp:94
virtual void parsePlasmaReactionDescription(const int a_reactionIndex, const json &a_reactionJSON, const std::string a_wildcard)
Parse plasma reaction descriptions.
Definition: CD_CdrPlasmaJSON.cpp:3060
ReactiveEnergyLoss
Enum class for distinguishing how we add/lose energy when running LEA-based models....
Definition: CD_CdrPlasmaJSON.H:337
std::map< int, FunctionX > m_temperatureConstants
Constant temperatures.
Definition: CD_CdrPlasmaJSON.H:622
virtual Real computeEta(const Real a_E, const RealVect a_position) const override
Compute eta. Should return Townsend attachment coefficient.
Definition: CD_CdrPlasmaJSON.cpp:4806
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:4526
virtual void parseElectrodeReactions()
Parse secondary emission on electrodes.
Definition: CD_CdrPlasmaJSON.cpp:3440
bool m_verbose
Verbose or not.
Definition: CD_CdrPlasmaJSON.H:348
Abstract base class for specifying plasma kinetics. This is the base class used by CdrPlasmaStepper w...
Definition: CD_CdrPlasmaPhysics.H:32
Name containing various physics models for running chombo-discharge code.
Definition: CD_AdvectionDiffusion.H:15