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 {
43namespace CdrPlasma {
44
58{
59public:
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
142 virtual Vector<std::string>
143 getPlotVariableNames() const override;
144
159 virtual Vector<Real>
160 getPlotVariables(const Vector<Real>& a_cdrDensities,
161 const Vector<RealVect>& a_cdrGradients,
162 const Vector<Real>& a_rteDensities,
163 const RealVect& a_E,
164 const RealVect& a_position,
165 const Real a_dx,
166 const Real a_dt,
167 const Real a_time,
168 const Real a_kappa) const override;
169
177 virtual Real
178 computeAlpha(const Real E, const RealVect& a_position) const override;
179
187 virtual Real
188 computeEta(const Real a_E, const RealVect& a_position) const override;
189
207 virtual void
208 advanceReactionNetwork(Vector<Real>& a_cdrSources,
209 Vector<Real>& a_rteSources,
210 const Vector<Real>& a_cdrDensities,
211 const Vector<RealVect>& a_cdrGradients,
212 const Vector<Real>& a_rteDensities,
213 const RealVect& a_E,
214 const RealVect& a_pos,
215 const Real a_dx,
216 const Real a_dt,
217 const Real a_time,
218 const Real a_kappa) const override;
219
228 virtual Vector<RealVect>
229 computeCdrDriftVelocities(const Real a_time,
230 const RealVect& a_pos,
231 const RealVect& a_E,
232 const Vector<Real>& a_cdrDensities) const override;
233
242 virtual Vector<Real>
243 computeCdrDiffusionCoefficients(const Real a_time,
244 const RealVect& a_pos,
245 const RealVect& a_E,
246 const Vector<Real>& a_cdrDensities) const override;
247
261 virtual Vector<Real>
262 computeCdrElectrodeFluxes(const Real a_time,
263 const RealVect& a_pos,
264 const RealVect& a_normal,
265 const RealVect& a_E,
266 const Vector<Real>& a_cdrDensities,
267 const Vector<Real>& a_cdrVelocities,
268 const Vector<Real>& a_cdrGradients,
269 const Vector<Real>& a_rteFluxes,
270 const Vector<Real>& a_extrapCdrFluxes) const override;
271
285 virtual Vector<Real>
286 computeCdrDielectricFluxes(const Real a_time,
287 const RealVect& a_pos,
288 const RealVect& a_normal,
289 const RealVect& a_E,
290 const Vector<Real>& a_cdrDensities,
291 const Vector<Real>& a_cdrVelocities,
292 const Vector<Real>& a_cdrGradients,
293 const Vector<Real>& a_rteFluxes,
294 const Vector<Real>& a_extrapCdrFluxes) const override;
295
310 virtual Vector<Real>
311 computeCdrDomainFluxes(const Real a_time,
312 const RealVect& a_pos,
313 const int a_dir,
314 const Side::LoHiSide a_side,
315 const RealVect& a_E,
316 const Vector<Real>& a_cdrDensities,
317 const Vector<Real>& a_cdrVelocities,
318 const Vector<Real>& a_cdrGradients,
319 const Vector<Real>& a_rteFluxes,
320 const Vector<Real>& a_extrapCdrFluxes) const override;
321
328 virtual Real
329 initialSigma(const Real a_time, const RealVect& a_pos) const override;
330
331protected:
335 enum class LookupMethod
336 {
337 Constant,
338 FunctionX,
339 FunctionT,
343 TableEN,
344 TableEnergy,
345 AlphaV,
346 EtaV
347 };
348
353 {
354 None,
356 ExplicitTrapezoidal,
357 ExplicitMidpoint,
358 ExplicitRK4
359 };
360
368 {
369 AddMean,
370 SubtractMean,
371 AddDirect,
372 SubtractDirect,
373 External
374 };
375
380
385
390
395
400
405
409 json m_json;
410
415
419 std::string m_jsonFile;
420
424 std::vector<json> m_cdrSpeciesJSON;
425
429 std::vector<json> m_rteSpeciesJSON;
430
434 std::function<Real(const RealVect a_position, const Real a_time)> m_initialSigma;
435
440
445
450
455
459 std::vector<FunctionX> m_neutralSpeciesDensities;
460
464 std::vector<std::shared_ptr<NeutralSpeciesJSON>> m_neutralSpecies;
465
469 std::map<std::string, int> m_neutralSpeciesMap;
470
474 std::map<int, std::string> m_neutralSpeciesInverseMap;
475
480 std::map<std::string, int> m_cdrSpeciesMap;
481
487 std::map<int, std::string> m_cdrSpeciesInverseMap;
488
492 std::map<int, bool> m_cdrIsEnergySolver;
493
497 std::map<int, bool> m_cdrHasEnergySolver;
498
503 std::map<int, std::tuple<Real, Real, Real>> m_cdrEnergyComputation;
504
510 std::map<int, int> m_cdrTransportEnergyMap;
511
516 std::map<int, Real> m_cdrMasses;
517
522 std::map<std::string, int> m_rteSpeciesMap;
523
529 std::map<int, std::string> m_rteSpeciesInverseMap;
530
531 // =====================================================
532 // TOWNSEND IONIZATION COEFFICIENT QUANTITIES BEGIN HERE
533 // =====================================================
534
539
544
549
554
559
564
569
574
575 // ================================
576 // MOBILITY QUANTITIES BEGIN HERE
577 // ================================
578
582 std::map<int, LookupMethod> m_mobilityLookup;
583
587 std::map<int, Real> m_mobilityConstants;
588
592 std::map<int, FunctionEN> m_mobilityFunctionsEN;
593
597 std::map<int, FunctionEX> m_mobilityFunctionsEX;
598
602 std::map<int, LookupTable1D<Real, 1>> m_mobilityTablesEN;
603
608 std::map<int, LookupTable1D<Real, 1>> m_mobilityTablesEnergy;
609
610 // ================================
611 // DIFFUSION QUANTITIES BEGIN HERE
612 // ================================
613
617 std::map<int, LookupMethod> m_diffusionLookup;
618
622 std::map<int, Real> m_diffusionConstants;
623
627 std::map<int, FunctionEN> m_diffusionFunctionsEN;
628
633 std::map<int, LookupTable1D<Real, 1>> m_diffusionTablesEN;
634
639 std::map<int, LookupTable1D<Real, 1>> m_diffusionTablesEnergy;
640
641 // ===========================================
642 // PLASMA SPECIES TEMPERATURE DATA BEGINS HERE
643 // ===========================================
644
648 std::map<int, LookupMethod> m_temperatureLookup;
649
653 std::map<int, FunctionX> m_temperatureConstants;
654
658 std::map<int, LookupTable1D<Real, 1>> m_temperatureTablesEN;
659
660 // ================================
661 // REACTION DATA BEGINS HERE
662 // ================================
663
667 std::map<int, std::string> m_plasmaReactionDescriptions;
668
672 std::map<int, LookupMethod> m_plasmaReactionLookup;
673
677 std::map<int, Real> m_plasmaReactionConstants;
678
682 std::map<int, int> m_plasmaReactionAlphaV;
683
687 std::map<int, int> m_plasmaReactionEtaV;
693 std::map<int, std::pair<int, FunctionT>> m_plasmaReactionFunctionsT;
694
704 std::map<int, std::tuple<int, int, FunctionTT>> m_plasmaReactionFunctionsTT;
705
709 std::map<int, FunctionEN> m_plasmaReactionFunctionsEN;
710
714 std::map<int, LookupTable1D<Real, 1>> m_plasmaReactionTablesEN;
715
721 std::map<int, std::pair<int, LookupTable1D<Real, 1>>> m_plasmaReactionTablesEnergy;
722
726 std::map<int, FunctionEX> m_plasmaReactionEfficiencies;
727
731 std::vector<CdrPlasmaReactionJSON> m_plasmaReactions;
732
736 std::map<int, bool> m_plasmaReactionPlot;
737
743 std::map<int, std::pair<bool, int>> m_plasmaReactionSolovievCorrection;
744
751 std::map<int, std::map<int, std::pair<ReactiveEnergyLoss, Real>>> m_plasmaReactionEnergyLosses;
752
756 std::map<int, bool> m_plasmaReactionHasEnergyLoss;
757
758 // ================================
759 // PHOTO-REACTIONS BEGIN HERE
760 // ================================
761
765 std::map<int, FunctionEX> m_photoReactionEfficiencies;
766
770 std::map<int, bool> m_photoReactionUseHelmholtz;
771
775 std::vector<CdrPlasmaPhotoReactionJSON> m_photoReactions;
776
782 std::map<int, std::list<std::pair<int, Real>>> m_photoReactionEnergyLosses;
783
787 std::map<int, bool> m_photoReactionHasEnergyLoss;
788
789 // ===========================================
790 // ELECTRODE SURFACE REACTIONS BEGIN HERE
791 // ===========================================
792
796 std::map<int, LookupMethod> m_electrodeReactionLookup;
797
801 std::map<int, Real> m_electrodeReactionConstants;
802
806 std::map<int, FunctionEX> m_electrodeReactionEfficiencies;
807
811 std::vector<CdrPlasmaSurfaceReactionJSON> m_electrodeReactions;
812
818 std::map<int, std::list<std::pair<int, Real>>> m_electrodeReactionEnergyLosses;
819
824
828 std::map<int, bool> m_electrodeExtrapBC;
829
830 // ===========================================
831 // DIELECTRIC SURFACE REACTIONS BEGIN HERE
832 // ===========================================
833
837 std::map<int, LookupMethod> m_dielectricReactionLookup;
838
842 std::map<int, Real> m_dielectricReactionConstants;
843
847 std::map<int, FunctionEX> m_dielectricReactionEfficiencies;
848
852 std::vector<CdrPlasmaSurfaceReactionJSON> m_dielectricReactions;
853
859 std::map<int, std::list<std::pair<int, Real>>> m_dielectricReactionEnergyLosses;
860
865
869 std::map<int, bool> m_dielectricExtrapBC;
870
871 // ===========================================
872 // DOMAIN SURFACE REACTIONS BEGIN HERE
873 // ===========================================
874
879 std::map<std::pair<int, Side::LoHiSide>, std::map<int, LookupMethod>> m_domainReactionLookup;
880
885 std::map<std::pair<int, Side::LoHiSide>, std::map<int, Real>> m_domainReactionConstants;
886
892 std::map<std::pair<int, Side::LoHiSide>, std::map<int, FunctionEX>> m_domainReactionEfficiencies;
893
898 std::map<std::pair<int, Side::LoHiSide>, std::vector<CdrPlasmaSurfaceReactionJSON>> m_domainReactions;
899
903 const std::map<char, int> m_dirCharToInt{{'x', 0}, {'y', 1}, {'z', 2}};
904
908 const std::map<std::string, Side::LoHiSide> m_sideStringToSide{{"lo", Side::Lo}, {"hi", Side::Hi}};
909
915 std::map<std::tuple<int, Side::LoHiSide, int>, bool> m_domainExtrapBC;
916
917 // ===========================================
918 // VARIOUS MEMBER FUNCTIONS BEGIN HERE
919 // ===========================================
920
924 virtual void
925 parseOptions();
926
930 virtual void
932
936 virtual void
937 parseJSON();
938
944 virtual void
946
950 virtual void
952
957 virtual void
959
964 virtual void
966
970 virtual void
972
976 virtual void
978
982 virtual void
984
988 virtual void
989 parseAlpha();
990
994 virtual void
995 parseEta();
996
1000 virtual void
1002
1008 virtual InitialDataFunction
1009 parsePlasmaSpeciesInitialData(const json& a_json) const;
1010
1017 parsePlasmaSpeciesInitialParticles(const json& a_json) const;
1018
1027 virtual std::list<std::tuple<std::string, std::vector<std::string>, std::vector<std::string>>>
1028 parseReactionWildcards(const std::vector<std::string>& a_reactants,
1029 const std::vector<std::string>& a_products,
1030 const json& a_reaction);
1037 virtual void
1038 parseReactionString(std::vector<std::string>& a_reactants,
1039 std::vector<std::string>& a_products,
1040 const std::string& a_reaction) const;
1041
1049 virtual void
1050 sanctifyPlasmaReaction(const std::vector<std::string>& a_reactants,
1051 const std::vector<std::string>& a_products,
1052 const std::string& a_reaction) const;
1053
1065 virtual void
1066 getReactionSpecies(std::list<int>& a_plasmaReactants,
1067 std::list<int>& a_neutralReactants,
1068 std::list<int>& a_photonReactants,
1069 std::list<int>& a_plasmaProducts,
1070 std::list<int>& a_neutralProducts,
1071 std::list<int>& a_photonProducts,
1072 const std::vector<std::string>& a_reactants,
1073 const std::vector<std::string>& a_products) const;
1074
1080 virtual void
1081 parsePlasmaReactionRate(const int a_reactionIndex, const json& a_reactionJSON);
1082
1088 virtual void
1089 parsePlasmaReactionScaling(const int a_index, const json& a_reactionJSON);
1090
1096 virtual void
1097 parsePlasmaReactionPlot(const int a_reactionIndex, const json& a_reactionJSON);
1098
1105 virtual void
1106 parsePlasmaReactionDescription(const int a_reactionIndex, const json& a_reactionJSON, const std::string& a_wildcard);
1107
1113 virtual void
1114 parsePlasmaReactionSoloviev(const int a_reactionIndex, const json& a_reactionJSON);
1115
1121 virtual void
1122 parsePlasmaReactionEnergyLosses(const int a_reactionIndex, const json& a_reactionJSON);
1123
1127 virtual void
1129
1136 virtual void
1137 parsePhotoReactionScaling(const int a_reactionIndex, const json& a_reactionJSON);
1138
1144 virtual void
1145 parsePhotoReactionEnergyLosses(const int a_reactionIndex, const json& a_reactionJSON);
1146
1151 virtual void
1152 sanityCheckSpecies() const;
1153
1161 virtual void
1162 sanctifyPhotoReaction(const std::vector<std::string>& a_reactants,
1163 const std::vector<std::string>& a_products,
1164 const std::string& a_reaction) const;
1165
1169 virtual void
1171
1177 virtual void
1178 parseElectrodeReactionRate(const int a_reactionIndex, const json& a_reactionJSON);
1179
1186 virtual void
1187 parseElectrodeReactionScaling(const int a_reactionIndex, const json& a_reactionJSON);
1188
1194 virtual void
1195 parseElectrodeReactionEnergyLosses(const int a_reactionIndex, const json& a_reactionJSON);
1196
1200 virtual void
1202
1208 virtual void
1209 parseDielectricReactionRate(const int a_reactionIndex, const json& a_reactionJSON);
1210
1218 virtual void
1219 parseDielectricReactionScaling(const int a_reactionIndex, const json& a_reactionJSON);
1220
1226 virtual void
1227 parseDielectricReactionEnergyLosses(const int a_reactionIndex, const json& a_reactionJSON);
1228
1232 virtual void
1234
1241 virtual void
1242 parseDomainReactionRate(const int a_reactionIndex,
1243 const json& a_reactionJSON,
1244 const std::vector<std::string>& a_sides);
1245
1254 virtual void
1255 parseDomainReactionScaling(const int a_reactionIndex,
1256 const json& a_reactionJSON,
1257 const std::vector<std::string>& a_sides);
1258
1265 virtual void
1266 sanctifySurfaceReaction(const std::vector<std::string>& a_reactants,
1267 const std::vector<std::string>& a_products,
1268 const std::string& a_reaction) const;
1269
1277 virtual std::vector<Real>
1278 computePlasmaSpeciesTemperatures(const RealVect& a_position,
1279 const RealVect& a_E,
1280 const std::vector<Real>& a_cdrDensities) const;
1281
1292 virtual std::vector<Real>
1293 computePlasmaSpeciesEnergies(const RealVect& a_position,
1294 const RealVect& a_E,
1295 const std::vector<Real>& a_cdrDensities) const;
1296
1304 virtual std::vector<Real>
1305 computePlasmaSpeciesMobilities(const RealVect& a_position,
1306 const RealVect& a_E,
1307 const std::vector<Real>& a_cdrDensities) const;
1308
1316 virtual std::vector<Real>
1317 computePlasmaSpeciesDiffusion(const RealVect& a_position,
1318 const RealVect& a_E,
1319 const std::vector<Real>& a_cdrDensities) const;
1320
1342 virtual Real
1343 computePlasmaReactionRate(const int& a_reactionIndex,
1344 const std::vector<Real>& a_cdrDensities,
1345 const std::vector<Real>& a_cdrMobilities,
1346 const std::vector<Real>& a_cdrDiffusionCoefficients,
1347 const std::vector<Real>& a_cdrTemperatures,
1348 const std::vector<Real>& a_cdrEnergies,
1349 const std::vector<RealVect>& a_cdrGradients,
1350 const RealVect& a_pos,
1351 const RealVect& a_vectorE,
1352 const Real& a_E,
1353 const Real& a_Etd,
1354 const Real& a_N,
1355 const Real& a_alpha,
1356 const Real& a_eta,
1357 const Real& a_time) const;
1358
1363 static void
1364 throwParserError(const std::string& a_error);
1365
1370 static void
1371 throwParserWarning(const std::string& a_warning);
1372
1378 static bool
1379 containsWildcard(const std::string& a_str);
1380
1386 static bool
1387 containsBracket(const std::string& a_str);
1388
1394 static bool
1395 isBracketed(const std::string& a_str);
1396
1402 static std::string
1403 trim(const std::string& a_string);
1404
1410 bool
1411 isNeutralSpecies(const std::string& a_name) const;
1412
1418 bool
1419 isPlasmaSpecies(const std::string& a_name) const;
1420
1426 bool
1427 isPhotonSpecies(const std::string& a_name) const;
1428
1434 static bool
1435 doesFileExist(const std::string& a_filename);
1436
1446 virtual void
1447 addPhotoIonization(std::vector<Real>& a_cdrSources,
1448 const std::vector<Real>& a_rteDensities,
1449 const RealVect& a_position,
1450 const Real a_E,
1451 const Real a_dt,
1452 const Real a_dx) const;
1453
1467 virtual void
1468 integrateReactions(std::vector<Real>& a_cdrDensities,
1469 std::vector<Real>& a_photonProduction,
1470 const std::vector<RealVect>& a_cdrGradients,
1471 const RealVect& a_E,
1472 const RealVect& a_pos,
1473 const Real a_dx,
1474 const Real a_dt,
1475 const Real a_time,
1476 const Real a_kappa) const;
1477
1490 void
1491 fillSourceTerms(std::vector<Real>& a_cdrSources,
1492 std::vector<Real>& a_rteSources,
1493 const std::vector<Real>& a_cdrDensities,
1494 const std::vector<RealVect>& a_cdrGradients,
1495 const RealVect& a_E,
1496 const RealVect& a_pos,
1497 const Real a_dx,
1498 const Real a_time,
1499 const Real a_kappa) const;
1500
1514 void
1515 integrateReactionsExplicitEuler(std::vector<Real>& a_cdrDensities,
1516 std::vector<Real>& a_photonProduction,
1517 const std::vector<RealVect>& a_cdrGradients,
1518 const RealVect& a_E,
1519 const RealVect& a_pos,
1520 const Real a_dx,
1521 const Real a_dt,
1522 const Real a_time,
1523 const Real a_kappa) const;
1524
1538 void
1539 integrateReactionsImplicitEuler(std::vector<Real>& a_cdrDensities,
1540 std::vector<Real>& a_photonProduction,
1541 const std::vector<RealVect>& a_cdrGradients,
1542 const RealVect& a_E,
1543 const RealVect& a_pos,
1544 const Real a_dx,
1545 const Real a_dt,
1546 const Real a_time,
1547 const Real a_kappa) const;
1548
1564 void
1565 integrateReactionsExplicitRK2(std::vector<Real>& a_cdrDensities,
1566 std::vector<Real>& a_photonProduction,
1567 const std::vector<RealVect>& a_cdrGradients,
1568 const RealVect& a_E,
1569 const RealVect& a_pos,
1570 const Real a_dx,
1571 const Real a_dt,
1572 const Real a_time,
1573 const Real a_kappa,
1574 const Real a_tableuAlpha) const;
1575
1589 void
1590 integrateReactionsExplicitRK4(std::vector<Real>& a_cdrDensities,
1591 std::vector<Real>& a_photonProduction,
1592 const std::vector<RealVect>& a_cdrGradients,
1593 const RealVect& a_E,
1594 const RealVect& a_pos,
1595 const Real a_dx,
1596 const Real a_dt,
1597 const Real a_time,
1598 const Real a_kappa) const;
1599};
1600} // namespace CdrPlasma
1601} // namespace Physics
1602
1603#include <CD_NamespaceFooter.H>
1604
1605#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
Arena-backed Struct-of-Arrays particle container for a single grid patch.
Definition CD_ParticleSoA.H:655
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:915
std::map< int, FunctionEX > m_dielectricReactionEfficiencies
Dielectric reaction effiencies. Used for scaling reactions on dielectrics in a "generic" way.
Definition CD_CdrPlasmaJSON.H:847
std::map< int, std::map< int, std::pair< ReactiveEnergyLoss, Real > > > m_plasmaReactionEnergyLosses
For mapping reactive energy losses for all reactions.
Definition CD_CdrPlasmaJSON.H:751
std::map< int, LookupMethod > m_diffusionLookup
Diffusion lookup method.
Definition CD_CdrPlasmaJSON.H:617
virtual void initializeSigma()
Initialize surface charge.
Definition CD_CdrPlasmaJSON.cpp:1377
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:5904
virtual void parseDielectricReactionEnergyLosses(const int a_reactionIndex, const json &a_reactionJSON)
Parse dielectric-reaction energy losses.
Definition CD_CdrPlasmaJSON.cpp:4444
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:602
virtual void parseElectrodeReactionRate(const int a_reactionIndex, const json &a_reactionJSON)
Parse reaction rate for electrode surface reactions.
Definition CD_CdrPlasmaJSON.cpp:3847
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:2791
std::map< int, Real > m_plasmaReactionConstants
Constant plasma reaction rates.
Definition CD_CdrPlasmaJSON.H:677
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:414
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:6086
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:2742
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:4857
std::map< int, bool > m_electrodeReactionHasEnergyLoss
Associative container for determining if a reaction is associated with an energy loss/gain.
Definition CD_CdrPlasmaJSON.H:823
std::map< int, FunctionEN > m_plasmaReactionFunctionsEN
Function-based plasma reaction rates.
Definition CD_CdrPlasmaJSON.H:709
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:879
std::map< int, LookupMethod > m_temperatureLookup
Temperature lookup method.
Definition CD_CdrPlasmaJSON.H:648
std::map< int, std::string > m_plasmaReactionDescriptions
Description of plasma reactions. Only used for I/O.
Definition CD_CdrPlasmaJSON.H:667
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:682
std::map< int, LookupMethod > m_mobilityLookup
Mobility lookup method for each species.
Definition CD_CdrPlasmaJSON.H:582
std::vector< CdrPlasmaReactionJSON > m_plasmaReactions
Plasma reactions.
Definition CD_CdrPlasmaJSON.H:731
std::map< std::string, int > m_cdrSpeciesMap
string-int encoding of the CDr species.
Definition CD_CdrPlasmaJSON.H:480
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:469
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:4779
std::map< int, LookupTable1D< Real, 1 > > m_diffusionTablesEN
Map for table-based diffusion coefficients D = D(E,N).
Definition CD_CdrPlasmaJSON.H:633
virtual void parsePlasmaReactionDescription(const int a_reactionIndex, const json &a_reactionJSON, const std::string &a_wildcard)
Parse plasma reaction descriptions.
Definition CD_CdrPlasmaJSON.cpp:3299
json m_json
JSON definition. This is populated when calling parseJSON.
Definition CD_CdrPlasmaJSON.H:409
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:2672
FunctionX m_gasDensity
Gas number density (in m^(-3))
Definition CD_CdrPlasmaJSON.H:449
std::map< int, Real > m_electrodeReactionConstants
Constant electrode reaction rate.
Definition CD_CdrPlasmaJSON.H:801
std::vector< std::shared_ptr< NeutralSpeciesJSON > > m_neutralSpecies
These are the neutral species.
Definition CD_CdrPlasmaJSON.H:464
bool isPlasmaSpecies(const std::string &a_name) const
Return true if species exists in map and false otherwise.
Definition CD_CdrPlasmaJSON.cpp:4657
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:510
std::map< int, std::string > m_cdrSpeciesInverseMap
int-string encoding of the CDR species.
Definition CD_CdrPlasmaJSON.H:487
virtual void parseElectrodeReactionScaling(const int a_reactionIndex, const json &a_reactionJSON)
Parse electrode reaction scaling for a specific reaction.
Definition CD_CdrPlasmaJSON.cpp:3893
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:898
virtual void parsePlasmaReactionPlot(const int a_reactionIndex, const json &a_reactionJSON)
Parse reaction plotting.
Definition CD_CdrPlasmaJSON.cpp:3282
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:2564
std::vector< json > m_cdrSpeciesJSON
JSON entries for species in the defined field 'plasma species'.
Definition CD_CdrPlasmaJSON.H:424
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:4329
std::map< int, std::list< std::pair< int, Real > > > m_electrodeReactionEnergyLosses
Associated energy losses for a surface reaction on electrodes.
Definition CD_CdrPlasmaJSON.H:818
std::map< int, std::string > m_rteSpeciesInverseMap
int-string encoding of the RTE species.
Definition CD_CdrPlasmaJSON.H:529
virtual void parseDielectricReactionScaling(const int a_reactionIndex, const json &a_reactionJSON)
Parse dielectric electrode reaction scaling for a specific reaction.
Definition CD_CdrPlasmaJSON.cpp:4147
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:5280
std::map< int, std::list< std::pair< int, Real > > > m_photoReactionEnergyLosses
Associated energy losses for a photo-reaction.
Definition CD_CdrPlasmaJSON.H:782
bool m_plotEta
Plot Townsend attachment coefficient.
Definition CD_CdrPlasmaJSON.H:394
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:439
std::vector< json > m_rteSpeciesJSON
JSON entries for species in photon_species.
Definition CD_CdrPlasmaJSON.H:429
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:828
FunctionX m_gasTemperature
Gas temperature (in Kelvin)
Definition CD_CdrPlasmaJSON.H:444
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:704
virtual void parseDomainReactions()
Parse secondary emission on domain.
Definition CD_CdrPlasmaJSON.cpp:4170
virtual Real computeAlpha(const Real E, const RealVect &a_position) const override
Compute alpha. Should return Townsend ionization coefficient.
Definition CD_CdrPlasmaJSON.cpp:5130
virtual void parsePhotoReactionEnergyLosses(const int a_reactionIndex, const json &a_reactionJSON)
Parse photo-reaction energy losses.
Definition CD_CdrPlasmaJSON.cpp:3662
virtual void parseTemperatures()
Initialize species temperatures.
Definition CD_CdrPlasmaJSON.cpp:2337
FunctionEN m_alphaFunctionEN
For when we can put alpha = alpha(E,N) as an analytic function.
Definition CD_CdrPlasmaJSON.H:558
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:5769
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:5327
std::map< int, Real > m_diffusionConstants
Map for constant diffusion coefficients.
Definition CD_CdrPlasmaJSON.H:622
LookupMethod
Enum class for distinguishing types of computation methods when computing transport data stuff.
Definition CD_CdrPlasmaJSON.H:336
virtual void parsePlasmaReactionScaling(const int a_index, const json &a_reactionJSON)
Parse scaling factors for reactions.
Definition CD_CdrPlasmaJSON.cpp:3154
std::map< int, int > m_plasmaReactionEtaV
Plasma reaction rates that are eta*|v|.
Definition CD_CdrPlasmaJSON.H:687
virtual Real computeEta(const Real a_E, const RealVect &a_position) const override
Compute eta. Should return Townsend attachment coefficient.
Definition CD_CdrPlasmaJSON.cpp:5160
virtual ParticleSoA< NoPayload > parsePlasmaSpeciesInitialParticles(const json &a_json) const
Generate initial particles for a given plasma species.
Definition CD_CdrPlasmaJSON.cpp:1061
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:516
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:852
bool isPhotonSpecies(const std::string &a_name) const
Return true if species exists in map and false otherwise.
Definition CD_CdrPlasmaJSON.cpp:4672
std::map< int, std::string > m_neutralSpeciesInverseMap
Inverse of m_neutralSpeciesMap.
Definition CD_CdrPlasmaJSON.H:474
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:3567
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:869
bool m_skipReactions
A flag for skipping reactions completely.
Definition CD_CdrPlasmaJSON.H:404
std::map< int, bool > m_photoReactionHasEnergyLoss
Associative container for determining if a reaction is associated with an energy loss/gain.
Definition CD_CdrPlasmaJSON.H:787
virtual void parseDielectricReactions()
Parse secondary emission on dielectrics.
Definition CD_CdrPlasmaJSON.cpp:3986
std::map< int, FunctionEX > m_mobilityFunctionsEX
Map for function-based mobilities mu = mu(E,x)
Definition CD_CdrPlasmaJSON.H:597
std::map< int, bool > m_plasmaReactionHasEnergyLoss
Associative container for determining if a reaction is associated with an energy loss/gain.
Definition CD_CdrPlasmaJSON.H:756
virtual void parsePlasmaReactionEnergyLosses(const int a_reactionIndex, const json &a_reactionJSON)
Parse plasma reaction energy losses.
Definition CD_CdrPlasmaJSON.cpp:3387
virtual void parseEta()
Parse the Townsend attachment coefficient.
Definition CD_CdrPlasmaJSON.cpp:1543
virtual void parseOptions()
Parse class options.
Definition CD_CdrPlasmaJSON.cpp:86
Real m_chemistryDt
Chemistry time step.
Definition CD_CdrPlasmaJSON.H:454
static bool doesFileExist(const std::string &a_filename)
Check if file exists.
Definition CD_CdrPlasmaJSON.cpp:4687
std::function< Real(const RealVect a_position, const Real a_time)> m_initialSigma
Initial surface charge.
Definition CD_CdrPlasmaJSON.H:434
FunctionEN m_etaFunctionEN
For when we can put eta = eta(E,N) as an analytic function.
Definition CD_CdrPlasmaJSON.H:563
LookupTable1D< Real, 1 > m_alphaTableEN
For when we can put alpha = table(E,N)
Definition CD_CdrPlasmaJSON.H:568
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:885
std::map< int, FunctionEN > m_mobilityFunctionsEN
Map for function-based mobilities mu = mu(E,N)
Definition CD_CdrPlasmaJSON.H:592
Real m_alphaConstant
For when we can use alpha = constant.
Definition CD_CdrPlasmaJSON.H:548
LookupTable1D< Real, 1 > m_etaTableEN
For when we can put eta = table(E,N)
Definition CD_CdrPlasmaJSON.H:573
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:399
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:721
std::vector< FunctionX > m_neutralSpeciesDensities
Neutral species densities.
Definition CD_CdrPlasmaJSON.H:459
virtual int getNumberOfPlotVariables() const override
Get number of plot variables for this physics class.
Definition CD_CdrPlasmaJSON.cpp:4418
virtual void parsePhotoReactions()
Parse photo-reactions.
Definition CD_CdrPlasmaJSON.cpp:3505
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:5823
std::vector< CdrPlasmaPhotoReactionJSON > m_photoReactions
Photo-reactions.
Definition CD_CdrPlasmaJSON.H:775
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:4385
bool isNeutralSpecies(const std::string &a_name) const
Return true if species exists in map and false otherwise.
Definition CD_CdrPlasmaJSON.cpp:4642
std::map< std::string, int > m_rteSpeciesMap
string-int encoding of the RTE species.
Definition CD_CdrPlasmaJSON.H:522
virtual void initializePlasmaSpecies()
Initialize species.
Definition CD_CdrPlasmaJSON.cpp:656
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:639
std::map< int, LookupTable1D< Real, 1 > > m_mobilityTablesEnergy
Map for table-based mobilities as function of energy.
Definition CD_CdrPlasmaJSON.H:608
std::map< int, FunctionEX > m_photoReactionEfficiencies
Flag for photo-reaction efficiencies. Includes Helmholtz corrections, if present.
Definition CD_CdrPlasmaJSON.H:765
std::map< int, bool > m_plasmaReactionPlot
Plot plasma reaction or not.
Definition CD_CdrPlasmaJSON.H:736
virtual void initializePhotonSpecies()
Initialize photon species.
Definition CD_CdrPlasmaJSON.cpp:1213
virtual InitialDataFunction parsePlasmaSpeciesInitialData(const json &a_json) const
Generate an initial data function for a given plasma species.
Definition CD_CdrPlasmaJSON.cpp:835
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:1705
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:353
bool m_plotGas
Plot gas pressure, density, and temperature.
Definition CD_CdrPlasmaJSON.H:384
Real m_etaConstant
For when we can use eta = constant.
Definition CD_CdrPlasmaJSON.H:553
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:5495
LookupMethod m_alphaLookup
Lookup method for Townsend ionization coefficient.
Definition CD_CdrPlasmaJSON.H:538
std::map< int, Real > m_mobilityConstants
Map for constant mobilities.
Definition CD_CdrPlasmaJSON.H:587
LookupMethod m_etaLookup
Lookup method for Townsend attachment coefficient.
Definition CD_CdrPlasmaJSON.H:543
std::map< int, FunctionEN > m_diffusionFunctionsEN
Map for function-based diffusion coefficients. .
Definition CD_CdrPlasmaJSON.H:627
std::map< int, bool > m_cdrIsEnergySolver
int-bool encoding for determining if a solver is an energy solver.
Definition CD_CdrPlasmaJSON.H:492
const std::map< std::string, Side::LoHiSide > m_sideStringToSide
map to translate side from std::string to Side::LoHiSide
Definition CD_CdrPlasmaJSON.H:908
std::map< int, Real > m_dielectricReactionConstants
Constant dielectric reaction rate.
Definition CD_CdrPlasmaJSON.H:842
std::map< int, FunctionEX > m_electrodeReactionEfficiencies
Electrode reaction effiencies. Used for scaling reactions on electrodes in a "generic" way.
Definition CD_CdrPlasmaJSON.H:806
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:4514
std::map< int, LookupTable1D< Real, 1 > > m_plasmaReactionTablesEN
Map for table-based reaction coefficients, where k = k(E,N).
Definition CD_CdrPlasmaJSON.H:714
std::map< int, LookupMethod > m_electrodeReactionLookup
Lookup method for the electrode surface reaction rates.
Definition CD_CdrPlasmaJSON.H:796
virtual void parseAlpha()
Parse the Townsend ionization coefficient.
Definition CD_CdrPlasmaJSON.cpp:1400
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:5195
virtual void parseElectrodeReactionEnergyLosses(const int a_reactionIndex, const json &a_reactionJSON)
Parse electrode-reaction energy losses.
Definition CD_CdrPlasmaJSON.cpp:3916
std::map< int, LookupMethod > m_dielectricReactionLookup
Lookup method for the dielectric surface reaction rates.
Definition CD_CdrPlasmaJSON.H:837
std::map< int, std::pair< bool, int > > m_plasmaReactionSolovievCorrection
Flag for whether or not reaction includes Soloviev energy correction.
Definition CD_CdrPlasmaJSON.H:743
std::map< int, FunctionEX > m_plasmaReactionEfficiencies
Scaled plasma reactions. These account for e.g. reaction efficiencies, collisional quenching,...
Definition CD_CdrPlasmaJSON.H:726
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:672
bool m_plotAlpha
Plot Townsend ionization coefficient.
Definition CD_CdrPlasmaJSON.H:389
std::map< int, bool > m_dielectricReactionHasEnergyLoss
Associative container for determining if a reaction is associated with an energy loss/gain.
Definition CD_CdrPlasmaJSON.H:864
virtual void parseDielectricReactionRate(const int a_reactionIndex, const json &a_reactionJSON)
Parse reaction rate for dielectric surface reactions.
Definition CD_CdrPlasmaJSON.cpp:4101
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:4965
std::map< int, bool > m_cdrHasEnergySolver
int-bool encoding for determining if a CDR solver HAS an associated energy solver.
Definition CD_CdrPlasmaJSON.H:497
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:892
std::map< int, std::list< std::pair< int, Real > > > m_dielectricReactionEnergyLosses
Associated energy losses for a surface reaction on dielectrics.
Definition CD_CdrPlasmaJSON.H:859
virtual void parseDiffusion()
Initialize species diffusion coefficients.
Definition CD_CdrPlasmaJSON.cpp:2036
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:693
std::string m_jsonFile
Input JSON file name.
Definition CD_CdrPlasmaJSON.H:419
virtual Real initialSigma(const Real a_time, const RealVect &a_pos) const override
Set the initial surface charge.
Definition CD_CdrPlasmaJSON.cpp:5763
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:2628
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:5346
std::map< int, bool > m_photoReactionUseHelmholtz
Map over the Helmholtz reconstructions.
Definition CD_CdrPlasmaJSON.H:770
std::map< int, LookupTable1D< Real, 1 > > m_temperatureTablesEN
Temperatures as functions of E/N.
Definition CD_CdrPlasmaJSON.H:658
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:4553
virtual void parsePlasmaReactionSoloviev(const int a_reactionIndex, const json &a_reactionJSON)
Parse plasma reaction energy correction.
Definition CD_CdrPlasmaJSON.cpp:3327
const std::map< char, int > m_dirCharToInt
map to translate dir from char to int
Definition CD_CdrPlasmaJSON.H:903
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:503
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:5641
CdrPlasmaJSON()
Default constructor. Puts object in usable state.
Definition CD_CdrPlasmaJSON.cpp:36
virtual void parsePlasmaReactions()
Parse plasma reactions.
Definition CD_CdrPlasmaJSON.cpp:2480
std::vector< CdrPlasmaSurfaceReactionJSON > m_electrodeReactions
List of electrode reactions.
Definition CD_CdrPlasmaJSON.H:811
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:4700
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:6056
ReactiveEnergyLoss
Enum class for distinguishing how we add/lose energy when running LEA-based models....
Definition CD_CdrPlasmaJSON.H:368
std::map< int, FunctionX > m_temperatureConstants
Constant temperatures.
Definition CD_CdrPlasmaJSON.H:653
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:6131
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:4879
virtual void parseElectrodeReactions()
Parse secondary emission on electrodes.
Definition CD_CdrPlasmaJSON.cpp:3732
bool m_verbose
Verbose or not.
Definition CD_CdrPlasmaJSON.H:379
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