SootLib
Loading...
Searching...
No Matches
sootModel_MOMIC.h
Go to the documentation of this file.
1#pragma once
2
3#include "sootModel.h"
4#include "sootDefs.h"
5#include "state.h"
6
7namespace soot {
8
14
15class sootModel_MOMIC : public sootModel {
16
18
19private:
20 size_t Nmom;
21
22 std::vector<double> Mp6;
23 std::vector<double> Mq6;
24 std::vector<size_t> np;
25 std::vector<size_t> nq;
26
27 std::vector<std::vector<double> > diffTable;
28
29 double mDn46,
31 double mDn36,
34
36
37public:
38
39 virtual void setSourceTerms(state &state);
40
41 virtual double pahSootCollisionRatePerDimer(const state &state, const double mDimer);
42
43private:
44
45 void downselectIfNeeded(std::vector<double> &M);
46 double f_grid(int x, int y);
47 double g_grid(int y);
48 std::vector<double> MOMICCoagulationRates(const state& state, std::vector<double>& M);
49 double Mr(const double r); // fractional moments using polynomial interp among log M
50 void set_diffTable(const std::vector<double> &M); // needed by Mr
52 void set_mDimerPowers();
53
55
56public:
57
58 sootModel_MOMIC(size_t nsoot_,
59 nucleationModel *nucl_,
60 growthModel *grow_,
61 oxidationModel *oxid_,
62 coagulationModel *coag_);
63
64 sootModel_MOMIC(size_t nsoot_,
65 nucleationMech Nmech,
66 growthMech Gmech,
67 oxidationMech Omech,
68 coagulationMech Cmech);
69
70 virtual ~sootModel_MOMIC() {};
71
72};
73} // namspace soot
size_t Nmom
number of soot moments (may decrese from downselectIfNeeded)
std::vector< double > Mq6
arrays holding fractional moments M_{q/6} where q is negative (FM)
double Mr(const double r)
double mDn36
mDimer^{-3/6}, etc.; for free molecular
std::vector< double > MOMICCoagulationRates(const state &state, std::vector< double > &M)
void set_diffTable(const std::vector< double > &M)
virtual double pahSootCollisionRatePerDimer(const state &state, const double mDimer)
std::vector< double > Mp6
arrays holding fractional moments M_{p/6} where p is posiitive (Continuum)
std::vector< size_t > np
# of Mp6 entries needed based on Nmom; if Nmom=3, then np[3] is # Mp6 entries to fill
double g_grid(int y)
std::vector< std::vector< double > > diffTable
set in set_diffTable, used in Mr
void downselectIfNeeded(std::vector< double > &M)
virtual void setSourceTerms(state &state)
double f_grid(int x, int y)
double mDn46
mDimer^{-4/6}, etc.; for continuum
std::vector< size_t > nq
# of Mq6 entries needed based on Nmom; if Nmom=3, then nq[3] is # Mq6 entries to fill
Definition: sootDefs.h:11
oxidationMech
Definition: sootDefs.h:33
coagulationMech
Definition: sootDefs.h:34
growthMech
Definition: sootDefs.h:32
nucleationMech
Definition: sootDefs.h:31