# Spark Ignition Engine

**Libraries:**

Simscape /
Driveline /
Engines & Motors

## Description

The Spark Ignition Engine block represents a naturally aspirated, spark-ignited internal combustion engine. The engine can be an arbitrary configuration of one to four cylinders. This block is a composite block that uses a subcomponent implementation of these blocks:

The SI Combustion Cylinder block represents an individual spark ignited combustion cylinder. The Spark Ignition Engine block controls how many SI Combustion Cylinder blocks it uses in the subcomponent implementation based on the value of the

**Number of cylinders**parameter.The Ignition Trigger block controls the igniter timing for the SI Combustion Cylinder blocks.

The Air Intake block provides the intake manifold pressure to the SI Combustion Cylinder block. To enable the air intake implementation, set

**Compute air intake dynamics**to`On`

.The Crank Shaft block connects to each SI Combustion Cylinder block to report the crank-angle-resolved instantaneous torque.

The Exhaust Manifold Thermal block abstracts the thermodynamics of the exhaust manifold and reports the temperature of the exhaust manifold. To compute the exhaust manifold thermal effects, set

**Compute exhaust manifold temperature**to`On`

.

Many of the Spark Ignition Engine parameters are identical to the parameters in the subcomponent blocks, and when the block implements subcomponent blocks, it uses the equations from those blocks. You can learn more about how the Spark Ignition Engine block uses each parameter by visiting the reference pages for the subcomponent blocks. You can use this block to learn how to create your own implementations of the subcomponent blocks by viewing the source code.

### Equations

The block derives performance information about the engine components using their
respective relationship with the crank position, *θ*, where 0 degrees ≤ *θ* < 720 degrees. The block defines the crank starting position as the intake
stroke at top dead center. For a four-stroke engine, each cylinder is uniquely
affiliated with a crank position, where the crank position for a given cylinder
*i* is *θ _{i}*. The block
derives the angular velocity from

*θ*as

$$\omega =\frac{d}{dx}\theta .$$

The block sets the first cylinder *θ _{1}* =

*θ*regardless of how many cylinders you simulate. When you set

**Number of cylinders**to

```
Two
cylinders
```

, the block calculates
*θ*as

_{2}$${\theta}_{2}={\theta}_{1}+\Delta ,$$

where *Δ* is the **Spark angle
difference** parameter.

When you set **Number of cylinders** to ```
Three
cylinders
```

, the block assumes that the cylinders are evenly phased
such that

$$\begin{array}{l}{\theta}_{2}={\theta}_{1}+\left(1\cdot \frac{720\xb0}{3}\right)\\ {\theta}_{3}={\theta}_{1}+\left(2\cdot \frac{720\xb0}{3}\right)\end{array}$$

When you set **Number of cylinders** to ```
Four
cylinders
```

, the block assumes that the spark angle difference is
180 degrees. You can select the firing order using the **Firing
order** parameter.

### Assumptions and Limitations

The block ignores knocking and other combustion instabilities.

The block ignores internal and external exhaust gas recirculation.

## Ports

### Inputs

### Outputs

### Conserving

## Parameters

## Version History

**Introduced in R2022a**