Cantera / enhancements

Repository for proposed and ongoing enhancements to Cantera
11 stars 5 forks source link

Enable electron "non-species" #105

Open decaluwe opened 3 years ago

decaluwe commented 3 years ago

Abstract

Enable users to specify an electron as part of a phase, which may be produced/consumed by reactions, but which is not considered on par with other chemical species.

Motivation

Currently, electrochemical reactions which produce or consume electrons have two means of specifying the electron's phase;

Possible Solutions

It seems reasonable that the user should be able to specify that a phase (solid or liquid, most likely) has an electron "species" that can exist "in parallel" to the other chemical species. I.e. its presence does not impact the species properties in any way. The electron potential energy, much like with the current electron-cloud phase, would be equal to the electron charge (-1) times Faraday's constant, times the phase electric potential. This would be both more convenient and more intuitive, for the electrochemistry field.

My thinking is to enable an optional electron-species field in the phase declaration, where the user provides a unique name for the electron species, which may participate in electrochemical reactions. Something like:

phases:
- name: graphite_anode
  thermo: binary-solution-tabulated
  elements: [Li, C]
  species: ['Li[anode]', 'V[anode]']
  electron-species: ['e[anode]']
  ...

which would then enable a reaction such as the following:

- equation: Li+[elyt] + V[anode] + e[anode] <=> Li[anode] 
...

What I don't know is how much complication this adds to how reactions parse the species energy. But I wanted to open up a discussion to see if there were any broader concerns, before attempting an implementation.

ischoegl commented 3 years ago

Without going into details, I believe that Cantera/cantera#700 also dealt with electrons, albeit in a very different context. Imho it would be nice to not introduce too many alternate definitions. I am not sure about the status of that PR though. Regarding custom species names, there also is the option to build on the alias naming framework.

PS: your point about non-species properties is interesting.

decaluwe commented 3 years ago

Yes, that is correct, I did raise this idea, w/r/t that PR, for that very reason, and was told by those involved that the two really aren't related (can't remember if I did so digitally, or in conversation). 🤷🏻‍♂️ But I agree that we need to be sensitive to whether we are muddying the waters, on this.

One other point is that we would need to implement a check that, if multiple phases had an electron species specified, the names would have to be unique, or else an error is thrown. If not, then there would be no way to disambiguate in the reaction string which electron was intended.

speth commented 3 years ago

The rationale for this makes sense to me, but I think I'd like to hear more about the expected implementation.

The way that the current electron-cloud phase is implemented, it doesn't really add anything thermodynamically, and the only property that seems to have any meaning is its electric potential. So would this just be an additional thing that has to be checked when looking for species when parsing electrochemical reactions and calculating their rates, but would have no further interaction with any particular phase model?

decaluwe commented 2 years ago

Hi @speth, yes, that is my vision, here. I don't see any real immediate impact except for its effect on reaction kinetics.

  1. Yes, the reaction rate calculation would parse the species electric potentials. This might be a little clunkier on the back-end, but make for a more intuitive on the user-side. I will try to find a way to do it in a generalized manner, such that all phases are parsed and a phase's electric potential is multiplied by zero if no electron-species is defined (this at least seems preferable to an if statement).

  2. One question on my mind is whether we will eventually want to change the electron-cloud phase so that it only has the electron-species, which we as a rule differential from the typical chemical species. Obviously this question should wait until we see what the implementation looks like, but I wanted to pose the question before I forgot.

  3. There may be one other thermodynamic implication, in that the electric potentials can show up in rate of heat released by an electrochemical reaction, which is equal to its rate of progress times (delta h_rxn + nF deltaPhi) (where n is the electrical charge transferred, F Faraday's constant, and deltaPhi the electric potential difference at the phase boundary). I'm not sure that this is a term currently calculated by Cantera, though. But if it is, then obviously my proposal here would impact how that calculation is carried out.

Building on my machine just magically started working again (🤔 / 🎉). I'll try and get something mocked up so I can provide a little more detail on how the implementation will look. I'll check in before I go too far down any particular rabbit hole.