TRI-AMDD / mpet

MPET lithium-ion battery simulator
Other
22 stars 6 forks source link

CIET current expression #107

Open Yanisiqi opened 1 year ago

Yanisiqi commented 1 year ago

May I ask some questions about the CIET current rate expression? The equation is as follows: Rate[i] = ecd_extras[i](krdc_lyte - kox*c_sld[i])

  1. I have read the CIET paper, namely, Theory of coupled ion-electron transfer kinetics, and find that Equation 41, does not use krd*c_lyte, it is simply krd. I think it may be a typo but I am not sure.
  2. c_lyte and c_sld is the normalized concentration. May I ask how is it normalized, i.e., what is the reference concentration of c_lyte and c_sld? I would appreciate it if you could clarify. Thanks.
lightningclaw001 commented 1 year ago

Hi @Yanisiqi, the CIET paper does the main derivation with respect to Li concentration in the solid, but assumes that electrolyte effects do not play a role. When accounting for electrolyte concentration, the form including the electrolyte concentration needs to be assumed because Li ions in electrolyte are a reactant in the reduction reaction. We have a follow-up paper on CIET coming out fairly soon wtih regards to this work and I can share it when it is on arxiv or published.

The reference concentration for the electrolyte concentration (which is 1M) is defined mpet/mpet/config/constants.py:

#: Reference concentration, mol/m^3 = 1M
c_ref = 1000.

The reference concentration for the solid is from the site density of the active material (max lithium concentration in the active material) in mpet/mpet/config/derived_values.py:

    def cs_ref(self, trode):
        """Reference concentration
        """
        if self.config[trode, 'type'] in constants.one_var_types:
            prefac = 1
        elif self.config[trode, 'type'] in constants.two_var_types:
            prefac = .5
        return prefac * self.config[trode, 'csmax']
Yanisiqi commented 1 year ago

Thank you for your explanation. It is very useful to me. May I ask a few follow-up questions?

  1. You mention that c_lyte is normalized with 1M. If I want to simulate a battery that has initial electrolyte concentration 1.5 M, should I change the reference electrolyte concentration to 1.5 M?

  2. In the CIET equation, reduction/oxidation reaction rates are multiplied with normalized electrolyte concentration/normalized lithium-ion concentration in the solid respectively. However, the reference concentration for the electrolyte and solid is distinctly different: it is 1M for electrolyte but it can be 30 M for the solid. In this case, is it reasonable to use normalized concentration in the following expression, krdc_lyte - koxc_sld[i]? My point is that c_lyte=1 corresponds to 1M but c_sld=1 corresponds to 30 M.

  3. I have installed the mpet package from github and attempted to run some test programs. But I encountered one error: daetools not found. I searched daetools online and did not find it on pypi website. I installed the daetools from the following website: https://sourceforge.net/projects/daetools/. But I am not sure is this the one used in mpet? I tried to run the test program again but it has some other errors: it cannot find the necessary modules to run init.py in daetools. The module names are pyCore, pyActivity, pyDataReporting, pyIDAS, pyUnits. Many of the modules are not available online.

These questions may take some time to explain and I would greatly appreciate it if you could give me some hints.

lightningclaw001 commented 1 year ago
  1. You can change the c0 concentration under the [Electrolyte] subsection in params_system.cfg to 1500.
  2. In the derivation for the exchange current density prefactor, actually the "concentration" prefactors are activity values. The solid and electrolyte concentrations with respect to their reference values are both used for dilute models. The exchange current density value is found based on the activity values given. More can be seen in chapter 3 of Bard and Faulkner's Electrochemical Methods from the derivation of transition state theory.
  3. The DAEtools package from sourceforge is the correct package to use for MPET. Those modules are from DAEtools--are you sure the DAEtools package is installed correctly? If you paste the specific error message and steps that you've taken, I can help you take a look.
Yanisiqi commented 1 year ago

Thanks for your explanations, I will read more relevant books and papers to understand the CIET equation. I try to install daetools from the following github website: https://github.com/v1kko/daetools

  1. I try to install daetools use the following command, as mentioned in the website: conda create -n daetools -c https://conda.lipsum.eu -c conda-forge daetools python=3.9 Then it returns with the following error: PackagesNotFoundError: The following packages are not available from current channels:

    • daetools
  2. I also try to download the code directly from github. But I do not know how to set up, i.e., how to install the package into the anaconda virtual environment folder.

lightningclaw001 commented 1 year ago

@Yanisiqi , what environment are you working in? These instructions are helpful to me: https://caiofcm.github.io/daetools-copy/getting_daetools.html.

loostrum commented 1 year ago

Hi @Yanisiqi, what operating system are you using? Installing daetools with conda only works on Linux, unfortunately not on Windows or Mac. For windows, there is a download here that should work with Python 3.10 (I haven't tried it though): https://sourceforge.net/projects/daetools/files/daetools/2.0.0/