chombo-discharge
Loading...
Searching...
No Matches
CD_CdrPlasmaJSON.H
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2022-2026 SINTEF Energy Research
3 * SPDX-FileCopyrightText: 2022-2026 NTNU
4 * SPDX-FileCopyrightText: 2022-2026 Fanny Skirbekk
5 *
6 * SPDX-License-Identifier: GPL-3.0-or-later
7 */
8
16#ifndef CD_CDRPLASMAJSON_H
17#define CD_CDRPLASMAJSON_H
18
19// Std includes
20#include <map>
21#include <memory>
22#include <string>
23
24// Third-party includes
25#include <nlohmann/json.hpp>
26
27// Our includes
28#include <CD_CdrPlasmaPhysics.H>
30#include <CD_CdrSpeciesJSON.H>
31#include <CD_RteSpeciesJSON.H>
35#include <CD_LookupTable.H>
36#include <CD_NamespaceHeader.H>
37
39using json = nlohmann::json;
41
42namespace Physics {
43 namespace CdrPlasma {
44
58 {
59 public:
65 using InitialDataFunction = std::function<Real(const RealVect a_position, const Real a_time)>;
66
75 using FunctionEN = std::function<Real(const Real a_E, const Real a_N)>;
76
82 using FunctionX = std::function<Real(const RealVect a_position)>;
83
89 using FunctionEX = std::function<Real(const Real E, const RealVect x)>;
90
95 using FunctionT = std::function<Real(const Real a_T)>;
96
102 using FunctionTT = std::function<Real(const Real a_T1, const Real a_T2)>;
103
108
115 CdrPlasmaJSON(const int a_dummy);
116
120 virtual ~CdrPlasmaJSON();
121
125 virtual void
126 parseRuntimeOptions() override;
127
134 virtual int
135 getNumberOfPlotVariables() const override;
136
141 virtual Vector<std::string>
142 getPlotVariableNames() const override;
143
158 virtual Vector<Real>
159 getPlotVariables(const Vector<Real>& a_cdrDensities,
160 const Vector<RealVect>& a_cdrGradients,
161 const Vector<Real>& a_rteDensities,
162 const RealVect& a_E,
163 const RealVect& a_position,
164 const Real a_dx,
165 const Real a_dt,
166 const Real a_time,
167 const Real a_kappa) const override;
168
176 virtual Real
177 computeAlpha(const Real E, const RealVect& a_position) const override;
178
186 virtual Real
187 computeEta(const Real a_E, const RealVect& a_position) const override;
188
205 virtual void
206 advanceReactionNetwork(Vector<Real>& a_cdrSources,
207 Vector<Real>& a_rteSources,
208 const Vector<Real>& a_cdrDensities,
209 const Vector<RealVect>& a_cdrGradients,
210 const Vector<Real>& a_rteDensities,
211 const RealVect& a_E,
212 const RealVect& a_pos,
213 const Real a_dx,
214 const Real a_dt,
215 const Real a_time,
216 const Real a_kappa) const override;
217
226 virtual Vector<RealVect>
227 computeCdrDriftVelocities(const Real a_time,
228 const RealVect& a_pos,
229 const RealVect& a_E,
230 const Vector<Real>& a_cdrDensities) const override;
231
240 virtual Vector<Real>
241 computeCdrDiffusionCoefficients(const Real a_time,
242 const RealVect& a_pos,
243 const RealVect& a_E,
244 const Vector<Real>& a_cdrDensities) const override;
245
259 virtual Vector<Real>
260 computeCdrElectrodeFluxes(const Real a_time,
261 const RealVect& a_pos,
262 const RealVect& a_normal,
263 const RealVect& a_E,
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;
269
283 virtual Vector<Real>
284 computeCdrDielectricFluxes(const Real a_time,
285 const RealVect& a_pos,
286 const RealVect& a_normal,
287 const RealVect& a_E,
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;
293
308 virtual Vector<Real>
309 computeCdrDomainFluxes(const Real a_time,
310 const RealVect& a_pos,
311 const int a_dir,
312 const Side::LoHiSide a_side,
313 const RealVect& a_E,
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;
319
326 virtual Real
327 initialSigma(const Real a_time, const RealVect& a_pos) const override;
328
329 protected:
333 enum class LookupMethod
334 {
335 Constant,
336 FunctionX,
337 FunctionT,
341 TableEN,
342 TableEnergy,
343 AlphaV,
344 EtaV
345 };
346
351 {
352 None,
354 ExplicitTrapezoidal,
355 ExplicitMidpoint,
356 ExplicitRK4
357 };
358
365 {
366 AddMean,
367 SubtractMean,
368 AddDirect,
369 SubtractDirect,
370 External
371 };
372
377
382
387
392
397
402
406 json m_json;
407
412
416 std::string m_jsonFile;
417
421 std::vector<json> m_cdrSpeciesJSON;
422
426 std::vector<json> m_rteSpeciesJSON;
427
431 std::function<Real(const RealVect a_position, const Real a_time)> m_initialSigma;
432
437
442
447
452
456 std::vector<FunctionX> m_neutralSpeciesDensities;
457
461 std::vector<std::shared_ptr<NeutralSpeciesJSON>> m_neutralSpecies;
462
466 std::map<std::string, int> m_neutralSpeciesMap;
467
471 std::map<int, std::string> m_neutralSpeciesInverseMap;
472
477 std::map<std::string, int> m_cdrSpeciesMap;
478
484 std::map<int, std::string> m_cdrSpeciesInverseMap;
485
489 std::map<int, bool> m_cdrIsEnergySolver;
490
494 std::map<int, bool> m_cdrHasEnergySolver;
495
500 std::map<int, std::tuple<Real, Real, Real>> m_cdrEnergyComputation;
501
507 std::map<int, int> m_cdrTransportEnergyMap;
508
513 std::map<int, Real> m_cdrMasses;
514
519 std::map<std::string, int> m_rteSpeciesMap;
520
526 std::map<int, std::string> m_rteSpeciesInverseMap;
527
528 // =====================================================
529 // TOWNSEND IONIZATION COEFFICIENT QUANTITIES BEGIN HERE
530 // =====================================================
531
536
541
546
551
556
561
566
571
572 // ================================
573 // MOBILITY QUANTITIES BEGIN HERE
574 // ================================
575
579 std::map<int, LookupMethod> m_mobilityLookup;
580
584 std::map<int, Real> m_mobilityConstants;
585
589 std::map<int, FunctionEN> m_mobilityFunctionsEN;
590
594 std::map<int, FunctionEX> m_mobilityFunctionsEX;
595
599 std::map<int, LookupTable1D<Real, 1>> m_mobilityTablesEN;
600
605 std::map<int, LookupTable1D<Real, 1>> m_mobilityTablesEnergy;
606
607 // ================================
608 // DIFFUSION QUANTITIES BEGIN HERE
609 // ================================
610
614 std::map<int, LookupMethod> m_diffusionLookup;
615
619 std::map<int, Real> m_diffusionConstants;
620
624 std::map<int, FunctionEN> m_diffusionFunctionsEN;
625
630 std::map<int, LookupTable1D<Real, 1>> m_diffusionTablesEN;
631
636 std::map<int, LookupTable1D<Real, 1>> m_diffusionTablesEnergy;
637
638 // ===========================================
639 // PLASMA SPECIES TEMPERATURE DATA BEGINS HERE
640 // ===========================================
641
645 std::map<int, LookupMethod> m_temperatureLookup;
646
650 std::map<int, FunctionX> m_temperatureConstants;
651
655 std::map<int, LookupTable1D<Real, 1>> m_temperatureTablesEN;
656
657 // ================================
658 // REACTION DATA BEGINS HERE
659 // ================================
660
664 std::map<int, std::string> m_plasmaReactionDescriptions;
665
669 std::map<int, LookupMethod> m_plasmaReactionLookup;
670
674 std::map<int, Real> m_plasmaReactionConstants;
675
679 std::map<int, int> m_plasmaReactionAlphaV;
680
684 std::map<int, int> m_plasmaReactionEtaV;
690 std::map<int, std::pair<int, FunctionT>> m_plasmaReactionFunctionsT;
691
701 std::map<int, std::tuple<int, int, FunctionTT>> m_plasmaReactionFunctionsTT;
702
706 std::map<int, FunctionEN> m_plasmaReactionFunctionsEN;
707
711 std::map<int, LookupTable1D<Real, 1>> m_plasmaReactionTablesEN;
712
717 std::map<int, std::pair<int, LookupTable1D<Real, 1>>> m_plasmaReactionTablesEnergy;
718
722 std::map<int, FunctionEX> m_plasmaReactionEfficiencies;
723
727 std::vector<CdrPlasmaReactionJSON> m_plasmaReactions;
728
732 std::map<int, bool> m_plasmaReactionPlot;
733
738 std::map<int, std::pair<bool, int>> m_plasmaReactionSolovievCorrection;
739
746 std::map<int, std::map<int, std::pair<ReactiveEnergyLoss, Real>>> m_plasmaReactionEnergyLosses;
747
751 std::map<int, bool> m_plasmaReactionHasEnergyLoss;
752
753 // ================================
754 // PHOTO-REACTIONS BEGIN HERE
755 // ================================
756
760 std::map<int, FunctionEX> m_photoReactionEfficiencies;
761
765 std::map<int, bool> m_photoReactionUseHelmholtz;
766
770 std::vector<CdrPlasmaPhotoReactionJSON> m_photoReactions;
771
777 std::map<int, std::list<std::pair<int, Real>>> m_photoReactionEnergyLosses;
778
782 std::map<int, bool> m_photoReactionHasEnergyLoss;
783
784 // ===========================================
785 // ELECTRODE SURFACE REACTIONS BEGIN HERE
786 // ===========================================
787
791 std::map<int, LookupMethod> m_electrodeReactionLookup;
792
796 std::map<int, Real> m_electrodeReactionConstants;
797
801 std::map<int, FunctionEX> m_electrodeReactionEfficiencies;
802
806 std::vector<CdrPlasmaSurfaceReactionJSON> m_electrodeReactions;
807
813 std::map<int, std::list<std::pair<int, Real>>> m_electrodeReactionEnergyLosses;
814
819
823 std::map<int, bool> m_electrodeExtrapBC;
824
825 // ===========================================
826 // DIELECTRIC SURFACE REACTIONS BEGIN HERE
827 // ===========================================
828
832 std::map<int, LookupMethod> m_dielectricReactionLookup;
833
837 std::map<int, Real> m_dielectricReactionConstants;
838
842 std::map<int, FunctionEX> m_dielectricReactionEfficiencies;
843
847 std::vector<CdrPlasmaSurfaceReactionJSON> m_dielectricReactions;
848
854 std::map<int, std::list<std::pair<int, Real>>> m_dielectricReactionEnergyLosses;
855
860
864 std::map<int, bool> m_dielectricExtrapBC;
865
866 // ===========================================
867 // DOMAIN SURFACE REACTIONS BEGIN HERE
868 // ===========================================
869
874 std::map<std::pair<int, Side::LoHiSide>, std::map<int, LookupMethod>> m_domainReactionLookup;
875
880 std::map<std::pair<int, Side::LoHiSide>, std::map<int, Real>> m_domainReactionConstants;
881
887 std::map<std::pair<int, Side::LoHiSide>, std::map<int, FunctionEX>> m_domainReactionEfficiencies;
888
893 std::map<std::pair<int, Side::LoHiSide>, std::vector<CdrPlasmaSurfaceReactionJSON>> m_domainReactions;
894
898 const std::map<char, int> m_dirCharToInt{{'x', 0}, {'y', 1}, {'z', 2}};
899
903 const std::map<std::string, Side::LoHiSide> m_sideStringToSide{{"lo", Side::Lo}, {"hi", Side::Hi}};
904
909 std::map<std::tuple<int, Side::LoHiSide, int>, bool> m_domainExtrapBC;
910
911 // ===========================================
912 // VARIOUS MEMBER FUNCTIONS BEGIN HERE
913 // ===========================================
914
918 virtual void
919 parseOptions();
920
924 virtual void
926
930 virtual void
931 parseJSON();
932
938 virtual void
940
944 virtual void
946
951 virtual void
953
958 virtual void
960
964 virtual void
966
970 virtual void
972
976 virtual void
978
982 virtual void
983 parseAlpha();
984
988 virtual void
989 parseEta();
990
994 virtual void
996
1002 virtual InitialDataFunction
1003 parsePlasmaSpeciesInitialData(const json& a_json) const;
1004
1010 virtual List<PointParticle>
1011 parsePlasmaSpeciesInitialParticles(const json& a_json) const;
1012
1020 virtual std::list<std::tuple<std::string, std::vector<std::string>, std::vector<std::string>>>
1021 parseReactionWildcards(const std::vector<std::string>& a_reactants,
1022 const std::vector<std::string>& a_products,
1023 const json& a_reaction);
1030 virtual void
1031 parseReactionString(std::vector<std::string>& a_reactants,
1032 std::vector<std::string>& a_products,
1033 const std::string& a_reaction) const;
1034
1042 virtual void
1043 sanctifyPlasmaReaction(const std::vector<std::string>& a_reactants,
1044 const std::vector<std::string>& a_products,
1045 const std::string& a_reaction) const;
1046
1058 virtual void
1059 getReactionSpecies(std::list<int>& a_plasmaReactants,
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;
1067
1073 virtual void
1074 parsePlasmaReactionRate(const int a_reactionIndex, const json& a_reactionJSON);
1075
1081 virtual void
1082 parsePlasmaReactionScaling(const int a_index, const json& a_reactionJSON);
1083
1089 virtual void
1090 parsePlasmaReactionPlot(const int a_reactionIndex, const json& a_reactionJSON);
1091
1098 virtual void
1099 parsePlasmaReactionDescription(const int a_reactionIndex,
1100 const json& a_reactionJSON,
1101 const std::string& a_wildcard);
1102
1108 virtual void
1109 parsePlasmaReactionSoloviev(const int a_reactionIndex, const json& a_reactionJSON);
1110
1116 virtual void
1117 parsePlasmaReactionEnergyLosses(const int a_reactionIndex, const json& a_reactionJSON);
1118
1122 virtual void
1124
1130 virtual void
1131 parsePhotoReactionScaling(const int a_reactionIndex, const json& a_reactionJSON);
1132
1138 virtual void
1139 parsePhotoReactionEnergyLosses(const int a_reactionIndex, const json& a_reactionJSON);
1140
1145 virtual void
1146 sanityCheckSpecies() const;
1147
1155 virtual void
1156 sanctifyPhotoReaction(const std::vector<std::string>& a_reactants,
1157 const std::vector<std::string>& a_products,
1158 const std::string& a_reaction) const;
1159
1163 virtual void
1165
1171 virtual void
1172 parseElectrodeReactionRate(const int a_reactionIndex, const json& a_reactionJSON);
1173
1180 virtual void
1181 parseElectrodeReactionScaling(const int a_reactionIndex, const json& a_reactionJSON);
1182
1188 virtual void
1189 parseElectrodeReactionEnergyLosses(const int a_reactionIndex, const json& a_reactionJSON);
1190
1194 virtual void
1196
1202 virtual void
1203 parseDielectricReactionRate(const int a_reactionIndex, const json& a_reactionJSON);
1204
1211 virtual void
1212 parseDielectricReactionScaling(const int a_reactionIndex, const json& a_reactionJSON);
1213
1219 virtual void
1220 parseDielectricReactionEnergyLosses(const int a_reactionIndex, const json& a_reactionJSON);
1221
1225 virtual void
1227
1234 virtual void
1235 parseDomainReactionRate(const int a_reactionIndex,
1236 const json& a_reactionJSON,
1237 const std::vector<std::string>& a_sides);
1238
1246 virtual void
1247 parseDomainReactionScaling(const int a_reactionIndex,
1248 const json& a_reactionJSON,
1249 const std::vector<std::string>& a_sides);
1250
1257 virtual void
1258 sanctifySurfaceReaction(const std::vector<std::string>& a_reactants,
1259 const std::vector<std::string>& a_products,
1260 const std::string& a_reaction) const;
1261
1269 virtual std::vector<Real>
1270 computePlasmaSpeciesTemperatures(const RealVect& a_position,
1271 const RealVect& a_E,
1272 const std::vector<Real>& a_cdrDensities) const;
1273
1284 virtual std::vector<Real>
1285 computePlasmaSpeciesEnergies(const RealVect& a_position,
1286 const RealVect& a_E,
1287 const std::vector<Real>& a_cdrDensities) const;
1288
1296 virtual std::vector<Real>
1297 computePlasmaSpeciesMobilities(const RealVect& a_position,
1298 const RealVect& a_E,
1299 const std::vector<Real>& a_cdrDensities) const;
1300
1308 virtual std::vector<Real>
1309 computePlasmaSpeciesDiffusion(const RealVect& a_position,
1310 const RealVect& a_E,
1311 const std::vector<Real>& a_cdrDensities) const;
1312
1334 virtual Real
1335 computePlasmaReactionRate(const int& a_reactionIndex,
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,
1344 const Real& a_E,
1345 const Real& a_Etd,
1346 const Real& a_N,
1347 const Real& a_alpha,
1348 const Real& a_eta,
1349 const Real& a_time) const;
1350
1355 static void
1356 throwParserError(const std::string& a_error);
1357
1362 static void
1363 throwParserWarning(const std::string& a_warning);
1364
1370 static bool
1371 containsWildcard(const std::string& a_str);
1372
1378 static bool
1379 containsBracket(const std::string& a_str);
1380
1386 static bool
1387 isBracketed(const std::string& a_str);
1388
1394 static std::string
1395 trim(const std::string& a_string);
1396
1402 bool
1403 isNeutralSpecies(const std::string& a_name) const;
1404
1410 bool
1411 isPlasmaSpecies(const std::string& a_name) const;
1412
1418 bool
1419 isPhotonSpecies(const std::string& a_name) const;
1420
1426 static bool
1427 doesFileExist(const std::string& a_filename);
1428
1438 virtual void
1439 addPhotoIonization(std::vector<Real>& a_cdrSources,
1440 const std::vector<Real>& a_rteDensities,
1441 const RealVect& a_position,
1442 const Real a_E,
1443 const Real a_dt,
1444 const Real a_dx) const;
1445
1458 virtual void
1459 integrateReactions(std::vector<Real>& a_cdrDensities,
1460 std::vector<Real>& a_photonProduction,
1461 const std::vector<RealVect>& a_cdrGradients,
1462 const RealVect& a_E,
1463 const RealVect& a_pos,
1464 const Real a_dx,
1465 const Real a_dt,
1466 const Real a_time,
1467 const Real a_kappa) const;
1468
1481 void
1482 fillSourceTerms(std::vector<Real>& a_cdrSources,
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,
1488 const Real a_dx,
1489 const Real a_time,
1490 const Real a_kappa) const;
1491
1504 void
1505 integrateReactionsExplicitEuler(std::vector<Real>& a_cdrDensities,
1506 std::vector<Real>& a_photonProduction,
1507 const std::vector<RealVect>& a_cdrGradients,
1508 const RealVect& a_E,
1509 const RealVect& a_pos,
1510 const Real a_dx,
1511 const Real a_dt,
1512 const Real a_time,
1513 const Real a_kappa) const;
1514
1527 void
1528 integrateReactionsImplicitEuler(std::vector<Real>& a_cdrDensities,
1529 std::vector<Real>& a_photonProduction,
1530 const std::vector<RealVect>& a_cdrGradients,
1531 const RealVect& a_E,
1532 const RealVect& a_pos,
1533 const Real a_dx,
1534 const Real a_dt,
1535 const Real a_time,
1536 const Real a_kappa) const;
1537
1552 void
1553 integrateReactionsExplicitRK2(std::vector<Real>& a_cdrDensities,
1554 std::vector<Real>& a_photonProduction,
1555 const std::vector<RealVect>& a_cdrGradients,
1556 const RealVect& a_E,
1557 const RealVect& a_pos,
1558 const Real a_dx,
1559 const Real a_dt,
1560 const Real a_time,
1561 const Real a_kappa,
1562 const Real a_tableuAlpha) const;
1563
1576 void
1577 integrateReactionsExplicitRK4(std::vector<Real>& a_cdrDensities,
1578 std::vector<Real>& a_photonProduction,
1579 const std::vector<RealVect>& a_cdrGradients,
1580 const RealVect& a_E,
1581 const RealVect& a_pos,
1582 const Real a_dx,
1583 const Real a_dt,
1584 const Real a_time,
1585 const Real a_kappa) const;
1586 };
1587 } // namespace CdrPlasma
1588} // namespace Physics
1589
1590#include <CD_NamespaceFooter.H>
1591
1592#endif
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