materialsproject / pymatgen

Python Materials Genomics (pymatgen) is a robust materials analysis code that defines classes for structures and molecules with support for many electronic structure codes. It powers the Materials Project.
https://pymatgen.org
Other
1.48k stars 852 forks source link

[Feature Request]: Temperature effects in Pourbaix analysis? #3526

Open CifLord opened 9 months ago

CifLord commented 9 months ago

Problem

At the moment, all analysis in pourbaix_diagram.py assumes that we are operating under room temperature. As a result, we assume all free energies will have a prefactor of 0.0591 for the pH variable i.e. pH k_B T ln(10) (in eV) where T= 298K (RT) and k_B T * ln(10) = 0.0591.

Is there a (chemical or implementation) reason why we do not make this more generalized by adding a temperature variable in the Pourbaix diagrams? e.g. maybe Pourbaix diagrams are for room temperature analysis only and doesn't make sense beyond that temperature?

Maybe we can set it to a default of T = 298K so the behavior doesn't change, but still allow users to modify if they want to analyze aqueous electrochemical systems under different temperature conditions? If this is reasonable, I can submit a small pull request later to implement

Proposed Solution

Add a temperature variable that changes the pH prefactor to any method or function that uses "PREFAC". Default all temperature variables to 298K so that the PREFAC value stays at 0.0591 unless the user manually changes temperature.

Alternatives

No response

montoyjh commented 9 months ago

This is a great idea that I'd love to see implemented. On Mon, Dec 18, 2023, 6:34 PM Richard Tran @.***> wrote:

Problem

At the moment, all analysis in pourbaix_diagram.py assumes that we are operating under room temperature. As a result, we assume all free energies will have a prefactor of 0.0591 for the pH variable i.e. pH k_B T ln(10) (in eV) where T= 298K (RT) and k_B T * ln(10) = 0.0591.

Is there a (chemical or implementation) reason why we do not make this more generalized by adding a temperature variable in the Pourbaix diagrams?

Maybe we can set it to a default of T = 298K so the behavior doesn't change, but still allow users to modify if they want to analyze aqueous electrochemical systems under different temperature conditions? If this is reasonable, I can submit a small pull request later to implement Proposed Solution

Add a temperature variable that changes the pH prefactor to any method or function that uses "PREFAC". Default all temperature variables to 298K so that the PREFAC value stays at 0.0591 unless the user manually changes temperature. Alternatives

No response

— Reply to this email directly, view it on GitHub https://github.com/materialsproject/pymatgen/issues/3526, or unsubscribe https://github.com/notifications/unsubscribe-auth/ABRRSNHQAZAZZTRFR6OKK4DYKD4KRAVCNFSM6AAAAABA2OSIPWVHI2DSMVQWIX3LMV43ASLTON2WKOZSGA2DOOBQGYYDKOI . You are receiving this because you are subscribed to this thread.Message ID: @.***>

CifLord commented 9 months ago

This is a great idea that I'd love to see implemented. On Mon, Dec 18, 2023, 6:34 PM Richard Tran @.> wrote: Problem At the moment, all analysis in pourbaix_diagram.py assumes that we are operating under room temperature. As a result, we assume all free energies will have a prefactor of 0.0591 for the pH variable i.e. pH k_B T ln(10) (in eV) where T= 298K (RT) and k_B T ln(10) = 0.0591. Is there a (chemical or implementation) reason why we do not make this more generalized by adding a temperature variable in the Pourbaix diagrams? Maybe we can set it to a default of T = 298K so the behavior doesn't change, but still allow users to modify if they want to analyze aqueous electrochemical systems under different temperature conditions? If this is reasonable, I can submit a small pull request later to implement Proposed Solution Add a temperature variable that changes the pH prefactor to any method or function that uses "PREFAC". Default all temperature variables to 298K so that the PREFAC value stays at 0.0591 unless the user manually changes temperature. Alternatives No response — Reply to this email directly, view it on GitHub <#3526>, or unsubscribe https://github.com/notifications/unsubscribe-auth/ABRRSNHQAZAZZTRFR6OKK4DYKD4KRAVCNFSM6AAAAABA2OSIPWVHI2DSMVQWIX3LMV43ASLTON2WKOZSGA2DOOBQGYYDKOI . You are receiving this because you are subscribed to this thread.Message ID: **@.***>

Sounds good, I was curious what your thoughts on this was going to be. I'll try to make some time this week to push it through. It shouldn't be too much trouble I think