Skip to content
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

Adsorption/Desorption Rate constants #95

Open
xenhua opened this issue Sep 21, 2019 · 4 comments
Open

Adsorption/Desorption Rate constants #95

xenhua opened this issue Sep 21, 2019 · 4 comments
Labels
enhancement New feature or request

Comments

@xenhua
Copy link

xenhua commented Sep 21, 2019

I am using a in-house built micro kinetics code for my Catalytic reaction mechanism.
I am using pMutt to calculate the rate constants for various surface elementary reactions with the help of a code snippet like the one below:

reactions_data = read_excel(io=excel_path, sheet_name='reactions')
reactions_list = []
for reaction_data in reactions_data:
    reaction = ChemkinReaction.from_string(species=species_dict, **reaction_data)
    print('-------------------------------------------------------------------')
    print(reaction_data)

    # Calculate forward reaction preexponential factor
    A_rxn_fwd = reaction.get_A(use_q=True, T=923.15)
    print('forward reaction preexponential factor A1_fwd(T = 923.15 K) = {:.3e}'.format(A_rxn_fwd))

    # Calculate reverse reaction preexponential factor
    A_rxn_rev = reaction.get_A(use_q=True, T=923.15, rev=True)
    print('reverse reaction preexponential factor A1_rev(T = 923.15 K) = {:.3e}'.format(A_rxn_rev))

    # Calculate forward Arrhenius energy of activation
    E_rxn_fwd = reaction.get_E_act(units='J/mol', T=923.15, del_m=0)
    print('forward Arrhenius energy of activation E1_fwd(T = 923.15 K) = {:.3f} J/mol'.format(E_rxn_fwd))

    # Calculate reverse Arrhenius energy of activation
    E_rxn_rev = reaction.get_E_act(units='J/mol', T=923.15, rev=True, del_m=0)
    print('reverse Arrhenius energy of activation E1_rev(T = 923.15 K) = {:.3f} J/mol'.format(E_rxn_rev))


    reactions_list.append(reaction)

reactions = Reactions(reactions=reactions_list)

I am wondering on how to use pMutt to calculate the rate constants for adsorption and desorption processes.
In general, Collision Theory (Hertz-Knudsen Equation) is used to describe the adsorption process.
How can i use pMutt to calculate the rate constants for adsorption and desorption.

@jonlym
Copy link
Member

jonlym commented Sep 24, 2019

Thank you for your patience.

Currently, pMuTT cannot calculate the rate constants for adsorption/desorption. Until an appropriate class is developed (it's unclear how long this will take), you can create a child class of ChemkinReaction. A template of how to do so is shown below.

from pmutt.reaction import ChemkinReaction

class AdsReaction(ChemkinReaction):
    """Model adsorption and desorption using Hertz-Knudsen kinetics

    Attributes
    ----------
        <<Insert relevant attributes for documentation>>

    """

    def __init__(self, **kwargs):
        super().__init__(**kwargs)
        """<<Insert relevant data to initialize variables>>"""
        pass

    def get_A(self, T, P):
        """<<Insert relevant equations to calculate pre-exponential factors>>"""
        pass

@xenhua
Copy link
Author

xenhua commented Sep 25, 2019

Thank you Jon for the clarification and suggestion!

@jonlym jonlym added the enhancement New feature or request label Sep 25, 2019
@jonlym
Copy link
Member

jonlym commented Sep 25, 2019

Thank you for bringing it up. I have been thinking about creating a new object for this so hopefully, I can find some time to implement it.

@xenhua
Copy link
Author

xenhua commented Sep 25, 2019

Thank you!

That would be a great addition to pMuTT. The rate constant for adsorption calculated by Hertz-Knudsen equation and its corresponding reverse rate (rate constant for desorption) calculated from the Gas-phase reaction Equilibrium constant, K_ads = k_ads/k_des, to maintain the thermodynamic consistency.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

2 participants