Activity Coefficient for RK and PR EoS (Non-Ideal Reactors)

416 views
Skip to first unread message

Syed Mohammad Ovais

unread,
Jun 21, 2021, 11:15:41 PM6/21/21
to canter...@googlegroups.com
Hi Everybody,

I had a question relevant to the real gas implementation in Cantera. I came across this very interesting publication by Gandhali Kogekar and Dr.Steven DeCaluwe (see attached as well)

(Kogekar, Gandhali, Canan Karakaya, Gary J. Liskovich, Matthew A. Oehlschlaeger, Steven C. DeCaluwe, and Robert J. Kee. "Impact of non-ideal behavior on ignition delay and chemical kinetics in high-pressure shock tube reactors." Combustion and Flame 189 (2018): 1-11)

I had a few questions regarding its Cantera implementation

1) The expression of activity coefficient given in Eq-31 is slightly different in the code (please see line-185 in cantera/src/thermo/RedlichKwongMFTP.cpp ). There is an extra term which is -RT* log(pressure*molar_volume/RT). Where is this extra term coming from? I also noticed this in the implementation of PengRobinson. I derived the expression for Peng Robinson EoS (thanks to the very detailed appendix of the research paper !!) , and the expression matches the activity coefficient of peng-robinson , except this extra term again appearing there as well).

My understanding is to calculate the activity concentration of a species, we need to multiply the activity coefficient (calculated using Eq-31) with molar concentration [X_k] of that particular species. And then we can use it to calculate the rate of progress of the reaction (as in Eq-19).

2) How is Cantera dealing with the critical properties of the radicals like H,OH etc. I have seen some research papers which use Lennard jones potential to estimate the critical properties of the radical, see for eg :

Banuti, Daniel T., et al. "Thermodynamic structure of supercritical LOX–GH2 diffusion flames." Combustion and Flame 196 (2018): 364-376.  (also attached !!, see paragraph after Equation 3c, in Section 2.1)

3) The cti file (see attached) for the non-ideal shock tube example contains a_coeff and b_coeff. Are these the parameters used in the Equation of state ?? I am just curious why they are not being calculated in Cantera. Is this also because of critical properties ??

Thank you so much for the very interesting publication, and all the hard work you guys put into it !!

Regards
Ovais




WangMechanismRK.cti
Impact of non-ideal behavior on ignition delay and chemical kinetics in high-pressure shock tube reactors.pdf
banuti2018.pdf

Steven DeCaluwe

unread,
Jun 22, 2021, 1:34:42 PM6/22/21
to <cantera-users@googlegroups.com>
Dear Ovais,

Many thanks for the query, and very astute observations on your part.  I will apologize, up front, for the long email.


1. You are correct that the code in Cantera and the derived version in the paper diverge by that term.  This mainly reflects a difference in how the paper authors and the author of that particular bit of code choose to define the activity coefficient, and _might_ relate back to a larger issue in Cantera with how the ideal gas reference state is defined (see here: https://github.com/Cantera/cantera/issues/841.)  I am not 100% certain that the two are linked, but they are at least related. 

Importantly, the difference in approach does not impact the activity concentrations, as a similar term then “corrects” for the difference, in getActivityConcentrations:
void RedlichKwongMFTP::getActivityConcentrations(doublereal* c) const
{
getActivityCoefficients(c);
for (size_t k = 0; k < m_kk; k++) {
c[k] *= moleFraction(k)*pressure()/RT();
}
}

My preference is to undo both of these (as written, I think Cantera’s activityCoerficients are actually fugacityCoefficients), to avoid confusions such as this, but I want to first make sure a) that this is 100% correct, and b) that I can do that without first solving the linked issue above, which would be a larger effort (but needs to happen, eventually).  I will be looking into it shortly.


2 and 3. On your other questions, I feel like there is a bit of a misunderstanding on what Cantera does for the user. Cantera implements defined sets of routines or calculations to manage and calculate phase properties, *based on user inputs* for how the phases, species, and reactions should be modeled.  It automates and generalizes those calculations while maintaining and enforcing consistency, which would be a significant burden for users to do from scratch.  It is not, however, a database that provides the species and phase property data.  That is largely left to the user.

So for the non-ideal phases, the user is expected to provide the a_coeff and b_coeff parameters for the equation of state.  Because these can be calculated from species critical parameters, where they are known, we have provided a database of verified* critical parameters for user convenience.  If a user does not provide a_coeff and b_coeff for a species, Cantera scans the database to see if the critical properties can be located there.  This is largely a back-up option, though, and moreover the species interaction parameters for a_coeff cannot be calculated from this information.

*I think a critical look at these values and some citations to document where they come from are still needed; but the intent is for them to be verified.

I’d be interested: do you think there would be a value for adding a routine for estimating critical properties from L-J parameters, for species where critical properties are not readily known?  Sub-question: are the L-J parameters well known for these species?


Thanks again for your questions and email; I’m very glad you’ve found the paper interesting.

Best,
Steven 


--
You received this message because you are subscribed to the Google Groups "Cantera Users' Group" group.
To unsubscribe from this group and stop receiving emails from it, send an email to cantera-user...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/cantera-users/CADYeyf2CeNDtYS1cfEOWM9hw-gnL-wBHQo2jGSzYOLWff-pNbQ%40mail.gmail.com.
<WangMechanismRK.cti><Impact of non-ideal behavior on ignition delay and chemical kinetics in high-pressure shock tube reactors.pdf><banuti2018.pdf>

Syed Mohammad Ovais

unread,
Jun 23, 2021, 12:09:28 AM6/23/21
to canter...@googlegroups.com
Hi Dr.Steven,

Thank you for your kind and very informative reply. I really appreciate it !!

I see with the correction term, we actually get the correct activity concentration.


I’d be interested: do you think there would be a value for adding a routine for estimating critical properties from L-J parameters, for species where critical properties are not readily known?  Sub-question: are the L-J parameters well known for these species?

I am a Phd student, so my observations are definitely not upto the mark. But I am sure a lot of users who are relative beginners to high pressure physics would really benefit if such a routine is added. This issue comes up relatively often where the critical properties of species are not available.

For my research, there are few species in the chemical mechanism whose critical properties were not available in NIST or other databases, so I have used the Chemkin transport manual to find the LJ parameters (which I am attaching in this email, please see transport database from page-44 onwards). They have LJ parameters for quite a few species and have provided a reference as well.  I am not sure how Cantera calculates transport properties like Diffusion coefficient, viscosity etc, but usually LJ parameters are involved in those calculations as well.

I have also seen some other approaches in different papers. in some cases they have just used the critical property of the diluent for radicals or intermediates (for e.g in case of air N2). 

----

Again I really appreciate you taking the time to reply. I may come up with some questions in future as well.

Thank you.
Ovais




--
--------------------------
Syed Ovais
PhD Student (Thermal-Fluids)
Department of Mechanical Engineering
Clemson University

234
 Fluor Daniel Building
Tel: 864-207-2946
Email: sov...@g.clemson.edu
chemkin_transport.pdf

Steven DeCaluwe

unread,
Jun 23, 2021, 9:43:59 AM6/23/21
to <cantera-users@googlegroups.com>
Hi Ovais,

You are correct, about L-J parameters - the most common approach for calculating species transport parameters in Cantera is via the L-J parameters, which the user can provide as part of the species definition.

So I took at look at your reference, which actually points to another reference (V. Giovangigli, L. Matuszewski, F. Dupoirieux, Detailed modeling of planar tran- scritical H2 –O2 –N2 flames, Combust. Sci. Technol. 15 (2) (2011) 141–182.). In that paper, the critical property estimation routines are fairly straightforward. For Redlich-Kwong, it results in:

a_i = (5.55 \pm 0.12) * N^2 * eps_i * sigma_i^3 / m_i^2

And

b_i = (0.855 \pm 0.018) * N * sigma_i^3 / m_i

Where N is Avogadro’s number, sigma_i is the LJ molecular diameter, eps_i the LJ well depth, and m_i the molar mass of species i.

More generally, the critical temp and critical molar volume can be similarly estimated, which can be used in Cantera to estimate the necessary interaction parameters for a range of non-ideal EoS (for now, this is just RK and the nascent PR capabilities).

Anyway, thanks again for brining this to my attention.  The Giovangigli paper in particular looks to be really valuable, with a thorough documentation of the theory.  Implementing this in Cantera seems like it would be straightforward, and a nice, convenient way for users to estimate these properties when the actual parameters or the critical properties are not available. The Giovangigli paper points out that it is indeed a rather crude approximation, since most molecules don’t actually behave as LJ gases.  But it still would likely be quite beneficial.

Best,
Steven


——————————————————
Steven C. DeCaluwe, Ph.D | Associate Professor of Mechanical Engineering
COLORADOSCHOOLOFMINES
Brown Building W410B
Golden, CO 80401

Twitter: @CORESresearch
He / Him / His





S. DeCaluwe

unread,
Jun 23, 2021, 11:21:55 AM6/23/21
to Cantera Users' Group
FYI, I just created a new feature request in the Cantera enhancements repo, so we can continue the discussion there.

If you'd be interested in implementing this feature, I'd be more than happy to help you on your way.

Best,
Steven
Reply all
Reply to author
Forward
0 new messages