IdealGasPhase getStandardChemPotentials
Nobody has claimed this yet.
- #843 by @decaluwe — closed without merging
Assessment
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Newbie friendliness
- 35/100
Research direction
Start with IdealGasPhase::getStandardChemPotentials and trace how its pressure-dependent value reaches GasKinetics::updateKc, including m_logStandConc. Compare standard kinetics with exchangecurrentdensity handling for interface reactions. Done means resolving the pressure dependence of reverse rate coefficients for exchange-current-density reactions without breaking the existing standard-kinetics behavior.
Written by the indexing model from the issue text.
Description
System information
- Cantera version: 2.4
- OS: all (C++ source code)
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)
- For the
IdealGasPhase, the standard state is defined as pressure-dependent (cfIdealGasPhase::getStandardChemPotentials, which includesmuStar + log(pressure() / refPressure()) * RT();) - For reactions where the forward rate
k_fwdis 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::updateKcroutine 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. - However, for interface reactions where
rate_coeff_type = exchangecurrentdensityis 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_fwdandk_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.
- Dominant language
- C++
- Stars
- 883
- Forks
- 436
- Avg merge
- 3h 41m
- Merged PRs (30d)
- 1
Getting set up
- No Dockerfile or Docker Compose file
- Has a pull request template
- Read the contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from Cantera/cantera
-
Names for cantera library in LibCantera.jl don't match built library names, preventing Julia cantera interface from loadingPossibly taken @redwing509 claimed this 1 day ago. Open
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
-
Incorrect reference state in some of the YAML files.Possibly taken @hazalkoom claimed this 57 days ago. OpenInput
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
-
Reactor cloning loses stoichiometric precision, eliminating small net species source termsPossibly taken @redwing509 claimed this 1 day ago. Open
Difficulty 3/5 1-2 days Newbie friendliness 62/100
-
[Bug]`ReactorNet.advance()` is not reproducible when an advance limit is set (root-finding arrays left uninitialized when `CVodeRootInit` is toggled per call)Possibly taken @kimurap claimed this 43 days ago. Open
Difficulty 4/5 3-5 days Newbie friendliness 55/100
-
CI
Difficulty 4/5 3-5 days Newbie friendliness 48/100
Similar issues
-
area:qmc bug
Difficulty 2/5 1-3 hours Newbie friendliness 69/100
Maintainers usually reply within 3 days
-
bug good first issue
Difficulty 2/5 1-3 hours Newbie friendliness 74/100
ASGC-Game-Jam/asgc-gamejam-2026#563 ·
Maintainers usually reply within 1 day
-
area/ysql kind/bug priority/medium status/awaiting-triage
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
yugabyte/yugabyte-db#37523 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 62/100
Cockatrice/Cockatrice#7896 ·
Maintainers usually reply within 1 day
-
mlir
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
llvm/llvm-project#241070 · 1 comment ·
Maintainers usually reply within 1 day