-
-
Notifications
You must be signed in to change notification settings - Fork 346
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
IdealGasPhase getStandardChemPotentials #841
Comments
A few additional thoughts:
|
I don't have enough knowledge to say if what you've got here is thermodynamically correct. We should get @cfgoldsmith and @rwest to weigh in, and maybe the SAB as well if you want. That said, it would be interesting to see if you made these changes whether there would be any changes in the |
There wouldn’t be any changes AFAIK— the bulk properties are all correct, it’s just how those are split between the “standard” and “non-standard” portions that causes problems for a heterogeneous reaction. Curious to see if it is a problem Generally, or if there is something specific about electrochemistry. For the Kc calculations, the changes to delta G^0 and logStandardConc would offset each other.
Okay, this has clarified that I’m pretty sure I’m right 😁, and I’ll at least work up an implementation to test it out.
…Sent from my iPhone
On Apr 4, 2020, at 7:58 AM, Bryan W. Weber ***@***.***> wrote:
I don't have enough knowledge to say if what you've got here is thermodynamically correct. We should get @cfgoldsmith and @rwest to weigh in, and maybe the SAB as well if you want.
That said, it would be interesting to see if you made these changes whether there would be any changes in the IdealGasPhase calculations. We expect not, but you never know... So I'd be interested in seeing an implementation 😁
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub, or unsubscribe.
|
I think it might be worth discussing the more general issue here, as we seem to keep bumping into this confusion about the differences between the standard / reference and unqualified thermodynamic properties. See, for instance #522, where @decaluwe posed the question:
I would go a step further, and question whether either "standard state" or "reference state" thermodynamic properties should be part of the public interface to the |
This actually breaks the issue into two separate issues:
|
So... I think this discussion on standard states is valuable, but is unrelated to the error in the charge transfer rate coefficients. I went and re-derived the conversion, yesterday. The error observed by @wbessler turns out to be either a typo or simply an error in the derivation of I have a fix implemented and will submit a PR shortly. What to do with this discussion, though? I think it is worth figuring out what to do with the standard/reference/etc. states, even though it might not be at the very top of anyone's list. |
I think the enhancements repo is the place to start this discussion, and the fix for the issue you noted with |
Fixes issue Cantera#841 - Fixes an error in InterfaceKnetics::convertExchangeCurrentDensityFormulation, where the derivation was missing a `m_beta` in the exponent of the product of the standard concentrations. As a result, users were observing an erroneous pressure-dependence in kinetic rate constants.
-Fixes issue Cantera#841, wherein InterfaceKinetics::convertExchangeCurrentDensityFormulation incorrectly returned pressure-dependent rate constants, due to a mising `m_beta` exponent in the standard concentration product. -Also adds a test to the python test suite to ensure that a particular rate constant remains appropriatley pressure-independent. -Also caught an error in the conversion from rate constant back to exchange current, wherein dG^0 was multiplied rather than divided by RT.
-Fixes issue Cantera#841, wherein InterfaceKinetics::convertExchangeCurrentDensityFormulation incorrectly returned pressure-dependent rate constants, due to a mising `m_beta` exponent in the standard concentration product. -Also adds a test to the python test suite to ensure that a particular rate constant remains appropriatley pressure-independent. -Also caught an error in the conversion from rate constant back to exchange current, wherein dG^0 was multiplied rather than divided by RT.
System information
Expected behavior
The standard state definition for an ideal gas, typically, is pressure-independent. All pressure dependence in thermodynamic definitions is generally handled in the activity term, where the activity of a species k is equal to
pressure*molefraction[k]/standardPressure
.More directly, this should always result in reverse reaction rate coefficients, calculated via k_rev = k_fwd*exp(-deltaG^o/RT)*prod(standardConcentrations^nu_k` being pressure independent (so long as f_fwd is pressure-independent).
Actual behavior (EDITED FROM ORIGINAL POST)
IdealGasPhase
, the standard state is defined as pressure-dependent (cfIdealGasPhase::getStandardChemPotentials
, which includesmuStar + log(pressure() / refPressure()) * RT();
)k_fwd
is supplied and the thermo is used to calculatek_ref
(i.e. standard kinetics), this causes no problems. When it comes to calculating the reverse rate, theGasKinetics::updateKc
routine includes the termm_rkcn[irxn]*rrt - m_dn[irxn]*m_logStandConc)
. In short, the logStandardConc term compensates for any pressure dependence in delta G^0.rate_coeff_type = exchangecurrentdensity
is used to supply the composition- and pressure-independent part of the exchange current density (let's call it i_o^*), which Cantera converts into ak_fwd
andk_rev
, we end up with reverse rate coefficients which are pressure dependent. @wbessler first noticed this when comparing charge-transfer reactions using forward and reverse rate constants (k_fwd and k_rev), versus usingrate_coeff_type = exchangecurrentdensity
. The former gives the expected behavior, whereas the latter does not.Additional context
See discussions below.
The text was updated successfully, but these errors were encountered: