Skip to content

Commit 5274fda

Browse files
committed
some fixes
1 parent eaae504 commit 5274fda

File tree

3 files changed

+33
-13
lines changed

3 files changed

+33
-13
lines changed

src/common/constants.hpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ namespace constants
77

88
constexpr double R = 8.31446261815324; // J/(mol K)
99
constexpr double F = 96485.3321233100184; // C/mol
10+
constexpr double NA = 6.02214076e23; // 1/mol
1011

1112
} // namespace constants
1213
} // namespace hpcReact

src/reactions/liquidElectrolyteBatteryChemistry/KineticReactions_impl.hpp

Lines changed: 31 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -25,25 +25,44 @@ KineticReactions< REAL_TYPE,
2525
RealConstDataArrayView1d & secondarySpeciesConcentration,
2626
RealDataArrayView1d & reactionRates )
2727
{
28-
for( int iRxn = 0; iRxn < PARAMS_DATA::numKineticReactions; iRxn++ )
28+
for( IntType i = 0; i < PARAMS_DATA::numPrimarySpecies; ++i )
2929
{
30-
RealType const forwardRateConstant = params.m_reactionRateConstant[iRxn] * exp( -params.m_activationEnergy[iRxn] / ( constants::R * temperature ) );
31-
RealType const reverseRateConstant = params.equilibriumConstant[iRxn] / forwardRateConstant;
32-
33-
for( int iPri = 0; iPri < PARAMS_DATA::numPrimarySpecies; ++iPri )
30+
reactionRates[i] = 0.0;
31+
for( IntType r=0; r<PARAMS_DATA::numKineticReactions; ++r )
3432
{
35-
RealType const stoichiometricCoefficient = params.m_stoichiometricMatrix[iRxn][iPri];
36-
RealType const primarySpeciesConcentration = primarySpeciesConcentration[iPri];
37-
RealType const secondarySpeciesConcentration = secondarySpeciesConcentration[iPri];
33+
RealType const forwardRateConstant = params.m_reactionRateConstant[r] * exp( -params.m_activationEnergy[r] / ( constants::R * temperature ) );
34+
RealType const reverseRateConstant = params.equilibriumConstant[r] / forwardRateConstant;
35+
RealType const s_ir = params.m_stoichiometricMatrix[r][i];
36+
37+
RealType productConcPlus = 1.0;
38+
RealType productConcMinus = 1.0;
39+
bool productConcPlusFlag = false;
40+
bool productConcMinusFlag = false;
41+
for( IntType j = 0; j < PARAMS_DATA::numPrimarySpecies; ++j )
42+
{
43+
RealType const s_jr = params.m_stoichiometricMatrix[r][j];
44+
if( s_jr < 0.0 )
45+
{
46+
productConcPlus *= pow( primarySpeciesConcentration[j], -s_jr );
47+
productConcPlusFlag = true;
48+
}
49+
else if( s_jr > 0.0 )
50+
{
51+
productConcMinus *= pow( primarySpeciesConcentration[j], s_jr );
52+
productConcMinusFlag = true;
53+
}
54+
}
3855

39-
if( stoichiometricCoefficient < 0.0 )
56+
RealType reactionRate_n = 0.0;
57+
if( productConcPlusFlag )
4058
{
41-
reactionRates[iPri] = reactionRates[iRxn] + stoichiometricCoefficient * forwardRateConstant * primarySpeciesConcentration;
59+
reactionRate_n += forwardRateConstant * productConcPlus;
4260
}
43-
else if( stoichiometricCoefficient > 0.0 )
61+
if( productConcMinusFlag )
4462
{
45-
reactionRates[iPri] = reactionRates[iRxn] - stoichiometricCoefficient * reverseRateConstant * primarySpeciesConcentration;
63+
reactionRate_n -= reverseRateConstant * productConcMinus;
4664
}
65+
reactionRates[i] += s_ir * reactionRate_n;
4766
}
4867
}
4968
}

src/reactions/liquidElectrolyteBatteryChemistry/Parameters.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ struct KineticParameters
2929
RealType m_equilibriumConstant[numKineticReactions];
3030
CArrayWrapper< RealType, numKineticReactions, numPrimarySpecies> m_stoichiometricMatrix[numKineticReactions][numPrimarySpecies];
3131

32-
RealType m_reactionRateConstant[numKineticReactions];
32+
RealType m_rateConstant[numKineticReactions];
3333
};
3434

3535

0 commit comments

Comments
 (0)