Skip to content

Numerical modelling of water injection processes in intake manifolds of Internal Combustion Engines

License

Notifications You must be signed in to change notification settings

WHJ226/Py-ICE-WaterInjection

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

38 Commits
 
 
 
 
 
 

Repository files navigation

Py-ICE-WaterInjection

Numerical modelling of water injection processes in Internal Combustion Engines (ICE) intake manifolds.

Introduction

The "port" injection of water into the intakes of Internal Combustion Engines (ICE), sometimes called fumigation, is an old and well known strategy to improve their performances and decrease some of their tail pipe pollutions, as shortly explained in this video from the Society of Automotive Engineers (SAE) youtube channel:

SAE Eye on Engineering: Water Injection Returns

In a nutshell, the water latent heat of vaporization creates a cooling effect of the fresh mixture and increases the engine volumetric efficiency, and so the amount of fuel aspirated. Furthermore, the required compression work and the maximum flame temperature decrease as well.

Hovewer, previous studies of the effects of water injection on a given ICE were so far only based on experimental results, and then inadequate to untangle its actual effects on different engine parameters, but also to predict its potential improvement when set up on an existing engine. The goal of this project is to develop a numerical tool usable to theoretically assess the influence of water injection on the performances of a given ICE.

How does it work

Firstly, the water_injection_package must be loaded as any other python package, for example by:

In [1]: import water_injection_package as wi

The two main objects in this package are the classes Fuel and FreshMixture.

The Fuel class

Introduction :

The first practical thing to do in such study is to choose the fuel eventually burnt within the engine. The class Fuel has been designed for so. The chemical composition and the specific heat heat at constant pressure (when the fuel is considered as an ideal gas) are the only fuel properties required so far.

Attributes

Fuel composition :

The fuel chemical composition is given to the class as a python dictionary of the type:

In [2]: octane_composition = {'C':8, 'H':18, 'O':0, 'N':0, 'S':0}

With each value corresponding to the number of atoms of carbon 'C', hydrogen 'H', oxygen 'O', nitrogen 'N' and sulfur 'S', respectively involved in the fuel composition. In the previous example, the fuel considered is then the usual iso-octane. If I want for example to consider pure ethanol as fuel, I just have to type:

In [3]: ethanol_composition = {'C':2, 'H':6, 'O':1, 'N':0, 'S':0}
Specific heat :

As previously mentioned, the only other required physical property of the fuel is its gaseous specific heat at constant pressure, expressed in J/(kg.K). Once the latter is known, the octane fuel can be created by:

In [4]: octane = wi.Fuel(composition=octane_composition, specif_heat=1.644e+3)

Methods

The methods included into the Fuel class allow to compute some useful properties, as for example its molar mass, in g/mol:

In [5]: octane.fuel_molar_mass()
Out[5]: 114.232

Its specific heat at constant volume:

In [6]: octane.fuel_specif_heat_at_cste_v()
Out[6]: 1571.2143655017858

Or its heat capacity ratio:

In [7]: octane.fuel_heat_capacity_ratio()
Out[7]: 1.0463244456621101

Another interesting parameter, more related to the combustion process itself, is the stoichiometric Air-Fuel Ratio (AFR), so the amount of air (in mass) required to burn each amount of fuel consumed. We have for octane:

In [8]: octane.stoichiometric_air_fuel_ratio()
Out[8]: 15.033440717137056

Sometimes, it is the Fuel-Air Ratio (FAR) which is used instead of the AFR:

In [9]: octane.stoichiometric_fuel_air_ratio()
Out[9]: 0.06651837186280789

The FreshMixture class

The goal of the class FreshMixture is to do calculations on wet fresh mixtures, so on gaseous blends of fuel, air and water, the latter being present in the fresh mixture because of both the water injection process and the ambient humidity in the surroundings. This is why the attributes of the FreshMixture class are related to the blend itself and to its surroundings.

Attributes

  1. Regarding to the specific type of engine considered, the fuel is not always involved in the fresh mixture in the intake system, as for "usual" compression ignition (CI) engines for instance, in whom the fuel is directly injected into the cylinder at the end of the compression stroke. In order to consider such situation, we can choose to mix the fuel with the rest of the fresh mixture during the intake process, using the boolean parameter fuel_is_present = True or False.
  2. The second attribute needed is related to the combustion process, it is the Air-Fuel Equivalence Ratio air_fuel_equivalent_ratio, usually called "lambda". This parameter is: a. = 1 for a stoichiometric combustion. b. < 1 for a rich combustion, so with more fuel than it is needed. c. > 1 for a lean combustion, so with less fuel than it is needed.
  3. The water fuel ratio (WFR) is the fundamental parameter of engines water injection systems. Its value is usually such as 0.2 < WFR < 1.5.
  4. The other attributes are the ones related to the engine surroundings, so the latter: a. Temperature ambient_temperature. b. Pressure ambient_pressure. c. And relative humidity ambient_relative_humidity.

Our fresh mixture can now be created, for example with a stoichiometric combustion (air_fuel_equivalent_ratio=1.0) with no water injected (water_fuel_ratio=0.0) and within an ambience at a temperature of 25°C, a pressure of 1 bar and a relative humidity of 50%:

mixture = wi.FreshMixture(fuel_is_present=True, air_fuel_equivalent_ratio=1.0,\
                 water_fuel_ratio=0.0, ambient_temperature=298.,\
                 ambient_relative_humidity=0.5, ambient_pressure=1.0)

About

Numerical modelling of water injection processes in intake manifolds of Internal Combustion Engines

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 100.0%