Alamo
Homogenize.H
Go to the documentation of this file.
1//
2//
3//
4//
5//
6
7
8#ifndef MODEL_PROPELLANT_HOMOGENIZE_H
9#define MODEL_PROPELLANT_HOMOGENIZE_H
10
11#include "Propellant.H"
12
13namespace Model
14{
15namespace Propellant
16{
18{
19public:
20 static constexpr const char* name = "homogenize";
21
22 Homogenize() = default;
23 Homogenize(IO::ParmParse &pp, std::string name)
24 {
25 pp_queryclass(name,*this);
26 }
27
30 {
31 k4 = h1 * P + h2;
32 }
33
34 virtual Set::Scalar get_qdot(const Set::Scalar mdot, const Set::Scalar phi)
35 {
36 Set::Scalar qflux = k4 * phi;
38 Set::Scalar mdota = fabs(mdot);
39 Set::Scalar mbase = tanh(4.0 * mdota / (mlocal));
40 return mbase * qflux;
41 }
42
44 {
45 return (k_ap * massfraction + k_htpb * (1.0 - massfraction)) * phi + dispersion1 * (1. - phi);
46 }
47
49 {
50
51 return (rho_ap * massfraction + rho_htpb * (1.0 - massfraction)) * phi + dispersion2 * (1. - phi);
52 }
53
55 {
56 return (cp_ap * massfraction + cp_htpb * (1.0 - massfraction)) * phi + dispersion3 * (1. - phi);
57 }
58
60 {
61 Set::Scalar L = NAN;
62 if (mob_ap == 1) L = m_ap * P * exp(-E_ap / T) * phi;
63 else L = m_ap * exp(-E_ap / T) * phi;
64 L += m_htpb * exp(-E_htpb / T) * (1.0 - phi);
65 if (T <= bound) L = 0.0;
66 return L;
67 }
68
69
70 static void Parse(Homogenize& value, IO::ParmParse& pp)
71 {
72
73 // K; dispersion variables are use to create an inert region for the void grain case.
74 // An inert region is one that dissipates energy fast enough to remove regression and
75 // thermal strain effects.
76 pp_query("dispersion1", value.dispersion1);
77 // rho; dispersion variables are use to create an inert region for the void grain case.
78 // An inert region is one that dissipates energy fast enough to remove regression and
79 // thermal strain effects.
80 pp_query("dispersion2", value.dispersion2);
81 // cp; dispersion variables are use to create an inert region for the void grain case.
82 // An inert region is one that dissipates energy fast enough to remove regression and
83 // thermal strain effects.
84 pp_query("dispersion3", value.dispersion3);
85
86
87 // AP Density
88 pp_query_required("rho_ap", value.rho_ap);
89 // HTPB Density
90 pp_query_required("rho_htpb", value.rho_htpb);
91 // AP Thermal Conductivity
92 pp_query_required("k_ap", value.k_ap);
93 // HTPB Thermal Conductivity
94 pp_query_required("k_htpb", value.k_htpb);
95 // AP Specific Heat
96 pp_query_required("cp_ap", value.cp_ap);
97 //HTPB Specific Heat
98 pp_query_required("cp_htpb", value.cp_htpb);
99
100
101 // Surgate heat flux model paramater - Homogenized
102 pp_query_default("h1", value.h1, 1.81);
103 // Surgate heat flux model paramater - Homogenized
104 pp_query_default("h2", value.h2, 1.34);
105
106 // AP/HTPB ratio for homogenized domain
107 pp_query_default("massfraction", value.massfraction, 0.8);
108
109 // AP mass flux reference value
110 pp_query_default("mlocal_ap", value.mlocal_ap, 0.0);
111 value.mlocal_htpb = 685000.0 - 850e3 * value.massfraction;
112
113 // AP Pre-exponential factor for Arrhenius Law
114 pp_query_required("m_ap", value.m_ap);
115 // HTPB Pre-exponential factor for Arrhenius Law
116 pp_query_required("m_htpb", value.m_htpb);
117 // AP Activation Energy for Arrhenius Law
118 pp_query_required("E_ap", value.E_ap);
119 // HTPB Activation Energy for Arrhenius Law
120 pp_query_required("E_htpb", value.E_htpb);
121 // Whether to include pressure to the arrhenius law [??]
122 pp_query_default("mob_ap", value.mob_ap,0);
123 // HTPB Activation Energy for Arrhenius Law
124 pp_query_default("bound", value.bound,0.0);
125 }
126
127 // IO variables
130 Set::Scalar k_ap = NAN, k_htpb = NAN;
133 Set::Scalar h1 = NAN, h2=NAN;
135 // Regression variables
136 int mob_ap = -1;
137 Set::Scalar m_ap = NAN, m_htpb = NAN, m_comb = NAN;
138 Set::Scalar E_ap = NAN, E_htpb = NAN;
140
141 // Calculated variables
144};
145
146}
147}
148
149
150
151#endif
152
153
#define pp_query_required(...)
Definition ParmParse.H:99
#define pp_query(...)
Definition ParmParse.H:106
#define pp_query_default(...)
Definition ParmParse.H:100
#define pp_queryclass(...)
Definition ParmParse.H:107
virtual Set::Scalar get_qdot(const Set::Scalar mdot, const Set::Scalar phi)
Definition Homogenize.H:34
Set::Scalar get_L(Set::Scalar phi, Set::Scalar T)
Definition Homogenize.H:59
static void Parse(Homogenize &value, IO::ParmParse &pp)
Definition Homogenize.H:70
Set::Scalar get_rho(const Set::Scalar phi)
Definition Homogenize.H:48
Set::Scalar get_cp(const Set::Scalar phi)
Definition Homogenize.H:54
static constexpr const char * name
Definition Homogenize.H:20
void set_pressure(const Set::Scalar P)
Definition Homogenize.H:29
Homogenize(IO::ParmParse &pp, std::string name)
Definition Homogenize.H:23
Set::Scalar get_K(const Set::Scalar phi)
Definition Homogenize.H:43
amrex::Real Scalar
Definition Base.H:19