27#ifndef DUMUX_THERMOCHEM_REACTION_HH
28#define DUMUX_THERMOCHEM_REACTION_HH
44 template<
class VolumeVariables>
45 typename VolumeVariables::PrimaryVariables::value_type
48 using FluidSystem =
typename VolumeVariables::FluidSystem;
49 using SolidSystem =
typename VolumeVariables::SolidSystem;
51 static constexpr auto H2OIdx = FluidSystem::compIdx(FluidSystem::MultiPhaseFluidSystem::H2OIdx);
52 static constexpr int cPhaseIdx = SolidSystem::comp0Idx;
53 static constexpr int hPhaseIdx = SolidSystem::comp1Idx;
55 using Scalar =
typename VolumeVariables::PrimaryVariables::value_type;
58 Scalar T= volVars.temperature();
61 Scalar moleFractionVapor = 1e-3;
63 if(volVars.moleFraction(0, H2OIdx) > 1e-3)
64 moleFractionVapor = volVars.moleFraction(0, H2OIdx);
66 if(volVars.moleFraction(0, H2OIdx) >= 1.0) moleFractionVapor = 1;
68 Scalar pV = volVars.pressure(0) *moleFractionVapor;
69 Scalar vaporPressure = pV*1.0e-5;
70 Scalar pFactor = log(vaporPressure);
73 Teq /= (pFactor - 16.508);
75 Scalar realSolidDensityAverage = (volVars.solidVolumeFraction(hPhaseIdx)*volVars.solidComponentDensity(hPhaseIdx)
76 + volVars.solidVolumeFraction(cPhaseIdx)*volVars.solidComponentDensity(cPhaseIdx))
77 / (volVars.solidVolumeFraction(hPhaseIdx)
78 + volVars.solidVolumeFraction(cPhaseIdx));
80 if(realSolidDensityAverage <= volVars.solidComponentDensity(cPhaseIdx))
82 realSolidDensityAverage = volVars.solidComponentDensity(cPhaseIdx);
85 if(realSolidDensityAverage >= volVars.solidComponentDensity(hPhaseIdx))
87 realSolidDensityAverage = volVars.solidComponentDensity(hPhaseIdx);
97 Scalar xH = (realSolidDensityAverage-volVars.solidComponentDensity(cPhaseIdx))/(volVars.solidComponentDensity(hPhaseIdx)- volVars.solidComponentDensity(cPhaseIdx));
99 if(xH < 1.0e-5) {xH = 1.0e-5; }
100 if(xH >=1 ) {xH = 1 - 1e-5; }
103 Scalar peq = 1e5*exp( (-12845)/T + 16.508);
105 if(peq >= pV) {peq=899954;}
112 Scalar A =exp(-8.9486e4/(R*T));
113 Scalar B = pow(((pV/peq)-1),0.83);
115 Scalar C = pow((-log(D)),0.666);
117 dXH_dt = 1.3945e4*A *B*3*D*C;
124 Scalar E = exp(5.3332e4/T);
125 Scalar F = pow((pV*1e-5),6);
128 dXH_dt = 1.004e-34 *E * F * G;
133 if(Teq-T <=50.25 && Teq-T >=49.75){
135 Scalar op = ((Teq-T)- 49.75)*2;
136 Scalar A =exp(-8.9486e4/(R*T));
137 Scalar B = pow(((pV/peq)-1),0.83);
139 Scalar C = pow((-log(D)),0.666);
140 dXH_dt1 = 1.3945e4*A *B*3*D*C;
142 Scalar E = exp(5.3332e4/T);
143 Scalar F = pow((pV*1e-5),6);
145 dXH_dt2 = 1.004e-34 *E * F * G;
147 dXH_dt = dXH_dt1*op + dXH_dt2*(1-op);
153 Scalar deltaRhoS = volVars.solidComponentDensity(hPhaseIdx) - volVars.solidComponentDensity(cPhaseIdx);
154 qMass = dXH_dt*deltaRhoS;
164 template<
class VolumeVariables>
165 typename VolumeVariables::PrimaryVariables::value_type
168 using FluidSystem =
typename VolumeVariables::FluidSystem;
169 using SolidSystem =
typename VolumeVariables::SolidSystem;
171 static constexpr auto H2OIdx = FluidSystem::compIdx(FluidSystem::MultiPhaseFluidSystem::H2OIdx);
172 static constexpr int cPhaseIdx = SolidSystem::comp0Idx;
173 static constexpr int hPhaseIdx = SolidSystem::comp1Idx;
175 using Scalar =
typename VolumeVariables::PrimaryVariables::value_type;
178 Scalar T= volVars.temperature();
181 Scalar moleFractionVapor = 1e-3;
183 if(volVars.moleFraction(0, H2OIdx) > 1e-3)
184 moleFractionVapor = volVars.moleFraction(0, H2OIdx);
186 if(volVars.moleFraction(0, H2OIdx) >= 1.0) moleFractionVapor = 1;
188 Scalar pV = volVars.pressure(0) *moleFractionVapor;
189 Scalar vaporPressure = pV*1.0e-5;
190 Scalar pFactor = log(vaporPressure);
193 Teq /= (pFactor - 16.508);
196 Scalar realSolidDensityAverage = (volVars.solidVolumeFraction(hPhaseIdx)*volVars.solidComponentDensity(hPhaseIdx)
197 + volVars.solidVolumeFraction(cPhaseIdx)*volVars.solidComponentDensity(cPhaseIdx))
198 / (volVars.solidVolumeFraction(hPhaseIdx)
199 + volVars.solidVolumeFraction(cPhaseIdx));
201 if(realSolidDensityAverage <= volVars.solidComponentDensity(cPhaseIdx))
203 realSolidDensityAverage = volVars.solidComponentDensity(cPhaseIdx);
206 if(realSolidDensityAverage >= volVars.solidComponentDensity(hPhaseIdx))
208 realSolidDensityAverage = volVars.solidComponentDensity(hPhaseIdx);
215 Scalar massFracH2O_fPhase = volVars.massFraction(0, H2OIdx);
218 Scalar rHydration = - massFracH2O_fPhase* (volVars.solidComponentDensity(hPhaseIdx)- realSolidDensityAverage)
219 * krh * (T-Teq)/ Teq;
229 Scalar rDehydration = -(volVars.solidComponentDensity(cPhaseIdx)- realSolidDensityAverage)
230 * krd * (Teq-T)/ Teq;
232 qMass = rDehydration;
235 if(Teq -T == 0) qMass = 0;
make the local view function available whenever we use the grid geometry
Definition: adapt.hh:29
Class for the evaluation of the reaction rate of Calciumoxide to Halciumhydroxide.
Definition: reaction.hh:38
VolumeVariables::PrimaryVariables::value_type thermoChemReactionSimple(const VolumeVariables &volVars) const
Evaluates the simple chemical reaction kinetics (see Nagel et al. 2014)
Definition: reaction.hh:166
VolumeVariables::PrimaryVariables::value_type thermoChemReaction(const VolumeVariables &volVars) const
Evaluates the reaction kinetics (see Nagel et al. 2014 ).
Definition: reaction.hh:46