CFD Online Logo CFD Online URL
www.cfd-online.com
[Sponsors]
Home > Forums > Software User Forums > OpenFOAM > OpenFOAM Running, Solving & CFD

Cantera

Register Blogs Community New Posts Updated Threads Search

Like Tree1Likes

Reply
 
LinkBack Thread Tools Search this Thread Display Modes
Old   May 26, 2009, 12:48
Default Cantera
  #1
Senior Member
 
Rishi .
Join Date: Mar 2009
Posts: 149
Rep Power: 17
hellorishi is on a distinguished road
Hello Bernhard & others,

I came across a Cantera + OpenFOAM presentation.

http://powerlab.fsb.hr/ped/kturbo/Op...haiderRehm.pdf

I am interested in finding more information about the use of Cantera in OpenFOAM. I would like to simulate chemical reactions based on dieselFoam. Googling did not help much...
- Are there more documents/tutorials concerning Cantera in OF ?


Thank you,
Rishi
hellorishi is offline   Reply With Quote

Old   May 28, 2009, 04:03
Default
  #2
Senior Member
 
Markus Rehm
Join Date: Mar 2009
Location: Erlangen (Germany)
Posts: 184
Rep Power: 17
markusrehm is on a distinguished road
Hi Rishi,

the presentation is the only documentation up to now. We need to add something to the Wiki, too.

So there are 2 parts:
1.) alternateChemistryModel A Library that allows the inclusion of alternate chemistry engines in solvers (allowing still to use OF chemistryModel)
2.) canteraThermosChemistry A Library that makes it possible to use Cantera in OpenFOAM

The libraries can be used by the solvers alternateSteadyReactingFoam and alternateReactingFoam. There are also examples included.

We had some issues to get Cantera running properly. I used the 1.7-CVS version. If you encounter problems with the standard version we can put a tarball of a running Cantera version onto the SVN, too. But Cantera 2.0 was announced and so we try to avoid unnecessary work

The main reasons for using Cantera are:
-easy access to thermochemical data and functions
-cantera has an excellent lexer for Chemkin-input
-you can use all transport data (viscosity, diffsion, heat transfer) from transport data which is often available with reaction mechanisms (e.g GRI-3.0)
-ideal reactor networks can be constructed and solved efficiently and stable with the CVODE stiff ODE solver package

I hope that helps and you find the tools valuable.

Regards, Markus.


Related Links:
Cantera:
http://sourceforge.net/projects/cantera

alternateChemistryModel:
https://openfoam-extend.svn.sourcefo...emistryModels/

canteraThermosChemistry:
https://openfoam-extend.svn.sourcefo...ermosChemistry

Solvers and examples:
https://openfoam-extend.svn.sourcefo...nateChemistry/
forwardyang likes this.
markusrehm is offline   Reply With Quote

Old   August 9, 2009, 05:40
Default
  #3
Senior Member
 
Karl-Johan Nogenmyr
Join Date: Mar 2009
Location: Linköping
Posts: 279
Rep Power: 21
kalle is on a distinguished road
Hi Marcus,

I'm trying to put together the alternateChemistrySolver you provided. However, I'm still missing the CVODE solver you implemented which seems to be needed (or at least useful). Did you provide it anywhere, I could'nt find it in the OF-extend repository?

Regards,
Kalle
kalle is offline   Reply With Quote

Old   August 10, 2009, 03:23
Default
  #4
Senior Member
 
Markus Rehm
Join Date: Mar 2009
Location: Erlangen (Germany)
Posts: 184
Rep Power: 17
markusrehm is on a distinguished road
Hello,

some time ago I implemented the CVODE solver as a new library of OpenFOAM ODE solver using the OpenFOAM chemistry.

CANTERA accesses the CVODE solver directly. So the OpenFOAM-CVODE-Link is not necessary anymore. CANTERA comes with a stripped-down CVODE version but you can install the full SUNDIALS package as well which CANTERA can use then. But this is done during the installation procedure of CANTERA. This is configured in the preconfig - file in the section CVODE.

Did you compile CANTERA without problems and did you run the cases?


Regards, Markus.

SUNDIALS Homepage:
https://computation.llnl.gov/casc/sundials/main.html
markusrehm is offline   Reply With Quote

Old   August 11, 2009, 23:17
Default
  #5
Senior Member
 
Karl-Johan Nogenmyr
Join Date: Mar 2009
Location: Linköping
Posts: 279
Rep Power: 21
kalle is on a distinguished road
Hi!

Ok, thank you, I realize that now when I check the code. I have installed sundials 2.3.0 (as 2.6 is not compatible with the cantera 1.7-cvs) which cantera was aware of during it's installation.

I'll breif what I did (maybe useful for people, either how to do or how not to do

1. Install Sundials 2.3.0 as root using ./configure CFLAGS=-fPIC... else canteraThermosChemistry didn't link. Make sure Sundials knows where to find the openmpi-stuff (or maybe run configure and make as the user with all paths set correctly, then as root run 'make install')

2. Install cantera 1.7-cvs. Check $PYTHONPATH so it can find ctml_writer.py. Run test cases that comes with Cantera.

3a. Create directory ~/OpenFOAM/OpenFOAM-1.5.x/src/thermophysicalModels/chemistryModel/alternateChemistryModels by copying from the svn

3b. In ~/OpenFOAM/OpenFOAM-1.5.x/src/thermophysicalModels/chemistryModel/alternateChemistryModels/Make/options add '-IOpenFOAM'

3c. Enter ~/OpenFOAM/OpenFOAM-1.5.x/src/thermophysicalModels/chemistryModel and run 'wmake libso alternateChemistryModels'

4a Create ~/OpenFOAM/user-1.5.x/applications/canteraThermosChemistry/ by copying from the svn

4b In ~/OpenFOAM/user-1.5.x/applications/canteraThermosChemistry/Make/options make sure that the paths to cantera, sundials, and alternateChemistryModels is correct

4c Enter ~/OpenFOAM/user-1.5.x/applications and run 'wmake libo canteraThermosChemistry'

5a Copy the two solvers from the svn to ~/OpenFOAM/user-1.5.x/applications. Make sure the Make/option file contains a valid link to ~/OpenFOAM/OpenFOAM-1.5.x/src/thermophysicalModels/chemistryModel/alternateChemistryModels/lnInclude

5b wmake both solvers.



This gave me the two .so files in ~/OpenFOAM/user-1.5.x/lib/linux64GccDPOpt and two solvers, alternatReactingFoam and alternateSteadyReactingFoam. Then I went on to test the three testcases from the svn. The dual-inlet-trans and the adiabatic-flame-steady cases can run, but is rapidly consuming memory while executing. The dual-inlet-steady crashes when trying to solve h-eqn. I did not yet dig into why I get this behaviour.

I'm running 64bit OF 1.5.x from mid-May 2009 on CentOS 5.3 x86_64.

Regards,
Kalle
kalle is offline   Reply With Quote

Old   August 12, 2009, 03:35
Default
  #6
Senior Member
 
Markus Rehm
Join Date: Mar 2009
Location: Erlangen (Germany)
Posts: 184
Rep Power: 17
markusrehm is on a distinguished road
Hi Kalle,

thanks for your effort. So the first problem I can solve immediately.

The memory-leak is a CANTERA problem found by Bernhard and can be solved easily:

The destructor in the header file %installCantera%/include/cantera/kernel/ReactorNet.h:34 must be changed from

Code:
virtual ~ReactorNet() { }
to
Code:
virtual ~ReactorNet() { delete m_integ; }
The other problem - could you describe it in more detail?

Regards, Markus.
markusrehm is offline   Reply With Quote

Old   August 13, 2009, 05:39
Default
  #7
Senior Member
 
Karl-Johan Nogenmyr
Join Date: Mar 2009
Location: Linköping
Posts: 279
Rep Power: 21
kalle is on a distinguished road
Ok! Great, now it's steady on memory usage. Did anyone tell the people behind Cantera about this? I saw their 1.8-beta code, which does not include the change you pointed out.

I must have had something wrong in my case directory, when I copied the dual-inlet-steady-case again from the svn it can run. However, I dont have the compressible flux bc's you are using, so I use fixedValue for velocity inlets. The 'flame' is quite cold though ~450K - but maybe that's intended?

Now I will try to apply the code to my LES on premixed flames!

Regards,
Kalle
kalle is offline   Reply With Quote

Old   August 14, 2009, 06:51
Default
  #8
Senior Member
 
Karl-Johan Nogenmyr
Join Date: Mar 2009
Location: Linköping
Posts: 279
Rep Power: 21
kalle is on a distinguished road
Ok, writing the LES solver was easy - my solver is not much different from reactingFoam, just like yours.

However, now I tried it on some one-step methane combustion which seems to run stable with my LES-reactingFoam hybrid... but CVODES fails during the first 'Solving chemistry' for my already developed case, writing:

[CVODES ERROR] CVode
At t = 3.89908e-08 and h = 1.3536e-14, the error test failed repeatedly or with |h| = hmin.

I played around a bit with settings for the ODE solver without success.

Any clues?

Regards,
Kalle
kalle is offline   Reply With Quote

Old   August 14, 2009, 10:20
Default
  #9
Senior Member
 
Markus Rehm
Join Date: Mar 2009
Location: Erlangen (Germany)
Posts: 184
Rep Power: 17
markusrehm is on a distinguished road
Hi Kalle,

I have no solution for that Problem - although I tried! It occurs with some mechanisms. What kind of mech do you use? With GRI 3.0 I had no problems.

Sometimes it helps to use very coarse ODE tolerances (1e-5) - but only to get a few more iterations.

Maybe some stiffness has to be removed from the mech or there is a numerical problem inside CANTERA.

If you find a solution to that problem let me know.

Regards, Markus.
markusrehm is offline   Reply With Quote

Old   August 14, 2009, 10:45
Default
  #10
Senior Member
 
Karl-Johan Nogenmyr
Join Date: Mar 2009
Location: Linköping
Posts: 279
Rep Power: 21
kalle is on a distinguished road
Ok, thank you for you answer.... I used a one-step methane mechanism (westbrook&dryer 1980)... which I guess can be stiff even though its simple. I was guessing/hoping cantera could handle stiffness better.

REACTIONS
CH4 + 2O2 => CO2 + 2H2O 8.6E+11 0.0 30000.0
FORD / CH4 0.1 /
FORD / O2 1.65 /
END

But, I'll try with other mechanisms and see if I can get anywhere!

Regards,
Kalle
kalle is offline   Reply With Quote

Old   August 24, 2009, 04:40
Default
  #11
Senior Member
 
Karl-Johan Nogenmyr
Join Date: Mar 2009
Location: Linköping
Posts: 279
Rep Power: 21
kalle is on a distinguished road
Hi again.

Now I've been running some time with other larger mechanisms, and the code seems to work fine! Really nice, I'll try to run some cases and do some validation...

I couldn't get it to work with the one-step mech mentioned above though. I'll see if it can run with other one- and few-step mechs.

Regards, Kalle
kalle is offline   Reply With Quote

Old   September 15, 2009, 10:09
Default
  #12
Senior Member
 
Markus Rehm
Join Date: Mar 2009
Location: Erlangen (Germany)
Posts: 184
Rep Power: 17
markusrehm is on a distinguished road
Hello,

I wrote an install guide for the wiki. See here:

http://openfoamwiki.net/index.php/Co...teReactingFoam

In Cantera 1.8 quite some bugs are fixed and it works very well for me.

Please tell me if there are errors or how it worked out for you.

Regards, Markus.
markusrehm is offline   Reply With Quote

Old   October 16, 2009, 13:27
Default
  #13
Member
 
Michele Vascellari
Join Date: Mar 2009
Posts: 70
Rep Power: 17
mighelone is on a distinguished road
Hello Markus!

Do you remember me? We met in Dresden during CCT 2009.

I'm trying to install the alternateReactingFoam code, but I've a problem with cantera and sundial.

I've compiled sundial libraries (version 2.3 as described in the wiki) and cantera.
If I run the python test on adiabatic_flame test, I've obtain the following message:

Code:
unknown sundials verson
I guess that cantera is not able to verify the sundial version. In the preconfig cantera file I've put SUNDIALS_VERSION=${SUNDIALS_VERSION:='2.3'}.

Thank you in advance for your attention

Michele
mighelone is offline   Reply With Quote

Old   October 19, 2009, 11:48
Default
  #14
Member
 
Michele Vascellari
Join Date: Mar 2009
Posts: 70
Rep Power: 17
mighelone is on a distinguished road
Updating the sundial version to 2.4, now the code works.

I'm trying to understand the program:

in thermophysicalProperties file, foamChemistryFile and a foamChemistryThermoFile are defined. The first file defines the reactions and the second the thermodynamical properties.

Always in the thermophysicalProperties file a cti file (cantera) is defined, where the thermodynamical and kinetic properties are defined again.

Which file describes the reactions and the thermo properties used during the simulation?

Thank you for the attention

Michele
mighelone is offline   Reply With Quote

Old   October 19, 2009, 15:15
Default
  #15
Senior Member
 
Markus Rehm
Join Date: Mar 2009
Location: Erlangen (Germany)
Posts: 184
Rep Power: 17
markusrehm is on a distinguished road
Hi Michele,

nice to hear from you again. If you use the Cantera-Chemistry-Library basically only the Cantera-Files (*.cti) are needed. The other ones are for the OpenFoam (or "Proxy")-Chemistry.

I think the solver still asks for the files in Cantera-Mode because it is needed for Lagrangian-Particle-Chemistry, where Cantera can not be used up to now.

Both files can be created from the Chemkin-Data with the appropriate lexers. The cti-format is not split in different files and everything is included in one file.

It is possible to switch off the foam-File-Request if you use Cantera-Chemistry, but I don't remember right now. Tell me if you need it.

Regards, Markus.
markusrehm is offline   Reply With Quote

Old   October 20, 2009, 08:08
Default
  #16
Member
 
Michele Vascellari
Join Date: Mar 2009
Posts: 70
Rep Power: 17
mighelone is on a distinguished road
Hello Markus,

thank you for your answer and congratulation for the work.

If I run the adiabaticFlame with alternateSteadyReactingFoam solver, I obtain the following error:

[CODE] Reading from Cantera-File "/home/michele/OpenFOAM/michele-1.5/applications/AlternateChemistry/Steady/adiabatic_flame/constant/gri30.cti" the mixture gri30_mix
--> FOAM Warning :
From function canteraMixture::canteraMixture
in file canteraMixture.C at line 70
The thermophysical properties of CANTERA are currently not converted to OpenFOAM. Instead the properties from "/home/michele/OpenFOAM/michele-1.5/applications/AlternateChemistry/Steady/adiabatic_flame/constant/gasThermo" are used This can lead to errors if the data is inconsistent with the Cantera-data


H2 not found in table. Valid entries are
4
(
CO2
C
O2
N2
)
/CODE]

From the message seems that the cantera gri30 cti files has been read, but the thermophysical properties are not converted to OpenFOAM.
Reading the gasThermo file (OpenFOAM mechanism) the solver searches for H2 properties (H2 is defined in gri30.cti), but H2 is not defined in this file.

I guess that every species defined in CTI file need to be defined also in the FOAM thermo file. Is it correct?

Probably the problem is related to the standinThermoFile dictionary, defined in thermoPhysicalProperties.

Regards

Michele
mighelone is offline   Reply With Quote

Old   October 21, 2009, 04:46
Default
  #17
Senior Member
 
Markus Rehm
Join Date: Mar 2009
Location: Erlangen (Germany)
Posts: 184
Rep Power: 17
markusrehm is on a distinguished road
Hello,

you are right. But the foam-Chemistry is only needed for particle thermo calculations. It is possible to create it with the chemkineToFoam utility from the Chemkin data. If you do not need it you can skip the check for the foam data and you may insert the line

return ; // the lower part is only needed for particle thermo

in canteraMixture.C:66.

Then only cantera-data is needed.

Regards, Markus.
markusrehm is offline   Reply With Quote

Old   October 21, 2009, 04:57
Default
  #18
Senior Member
 
Markus Rehm
Join Date: Mar 2009
Location: Erlangen (Germany)
Posts: 184
Rep Power: 17
markusrehm is on a distinguished road
Hello again,

I cleaned-up the adiabaticFlame case in the Steady-Directory.

Markus
markusrehm is offline   Reply With Quote

Old   October 21, 2009, 05:04
Default
  #19
Member
 
Michele Vascellari
Join Date: Mar 2009
Posts: 70
Rep Power: 17
mighelone is on a distinguished road
Ok,

thank you!
Now I'm going to update the adiabaticFlame case.

Michele
mighelone is offline   Reply With Quote

Old   October 22, 2009, 07:37
Default
  #20
Member
 
Michele Vascellari
Join Date: Mar 2009
Posts: 70
Rep Power: 17
mighelone is on a distinguished road
Hi Markus,

I'm using the alternateSteady code to solve a piloted flame test-case with success, using a skeletal CH4 mechanism with 14 species. The results seems very good.

Congratulation again for the work.

Michele
mighelone is offline   Reply With Quote

Reply


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are Off
Pingbacks are On
Refbacks are On



All times are GMT -4. The time now is 14:55.