An unofficial open source implementation of the International Maritime Organisation (IMO)'s Carbon Intensity Indicator (CII).
The CII indicator aims to make the carbon intensity of any given ship easy to understand, transparent, and standardised. It does so by ranking all ships globally on an A to E rating (A being the best, E being the worst). Ship emission intensity calculations consider a mixture of weight, distance travelled in the calendar year, and the fuel used in their main engines (for a comprehensive explanation, see the methodology section).
Grades are re-calculated annually. The boundaries of what is considered "good" is a moving target, described in table 4. This moving target is intended to encourage shipping firms to constantly improve the carbon intensity of their ships to 2030. The graph below demonstrates the gradual tightening of the IMO's Carbon Intensity requirements over time. The nearer to 2030, the lower a ship's Attained CII must be to achieve an A grade.
The specification for this software can be found in IMO's resolution MEPC.354(78), adopted in June 2022. Additional references, summaries, & resolutions can be found in the References & datasets section.
Note
The repository code & software is provided as-is. While best-efforts are made to ensure its results are acurate inline with the IMO's CII specifications, the results it produces are estimates and guidance. Results should not be considered proof of regulatory compliance.
- Open IMO Carbon Intensity Indicator (CII) Calculator 🚢
- Table of Contents
- Software
- Methodology
- Reference Tables
- Shipping Terminology & Glossary
- References & datasets
The following features are on the roadmap for the application:
- Support for Dependency Injection (DI). Currently the application does not
- Support for IMO Resolution MEPC.355(78). Currently the application considers fuel consumption only. Support for MEPC355(78) will bring additional CII properties, for example the lighting in crew quarters.
The library can be installed via Nuget. There is a C# dotnet console app at EtiveMor.OpenImoCiiCalculator.DemoConsoleApp
, which demonstrates how to create a new instance of the calculator, submit data, and receive results in the format EtiveMor.OpenImoCiiCalculator.Core.ModelsCalculationResult
.
When submitting data to the CalculateAttainedCiiRating
method, the following parameters are required:
ShipType shipType,
double grossTonnage,
double deadweightTonnage,
double distanceTravelled,
TypeOfFuel fuelType,
double fuelConsumption,
int targetYear
- The ship's type must be one of
EtiveMor.OpenImoCiiCalculator.Core.Models.Enums.ShipType
. - Gross Tonnage is measured in long-tons (1.016047 metric tonnes, or 1,016.047 kilograms)
- Deadweight Tonnage is measured in long-tons (1.016047 metric tonnes, or 1,016.047 kilograms)
- Distance travelled is measured in nautical miles (1,852 metres)
- Fuel type must be one of
EtiveMor.OpenImoCiiCalculator.Core.Models.Enums.TypeOfFuel
- Fuel consumption is measured in grams, and accepts scientific notation like
1.9e+10
- Year must refer to the measured year. For example, if a ship's fuel consumption is known in 2022, all other results will be based from that point
Multiple Fuel Type calculations
There are two CalculateAttainedCiiRating
methods. One for a ship which consumes a single fuel type, and another which consumes multiple fuel types. Both methods are available at CalculateAttainedCiiRating
.
{
"results": [
{
"isMeasuredYear": true,
"isEstimatedYear": false,
"year": 2019,
"rating": 2,
"requiredCii": 19.184190519387734,
"attainedCii": 16.243733333333335,
"attainedRequiredRatio": 0.8467249799733408,
"calculatedCo2eEmissions": 60914000000.0,
"calculatedShipCapacity": 25000.0,
"calculatedTransportWork": 3750000000.0,
"vectorBoundariesForYear": {
"year": 2019,
"shipType": 110,
"weightClassification": {
"upperLimit": 0,
"lowerLimit": 2147483647
},
"capacityUnit": 3,
"boundaryDdVectors": {
"Superior": 14.579984794734678,
"Lower": 17.649455277836715,
"Upper": 21.869977192102013,
"Inferior": 24.939447675204054
}
}
},
...
]
}
Property | Description |
---|---|
isMeasuredYear |
describes if the result array was generated based on this year |
isEstimatedYear |
describes if the result array was NOT generated based on this year (is always equal to !isMeasuredYear) |
year |
describes the year in question |
rating |
describes the rating for the ship in the given year. A=1, B=2, C=3, D=4, E=5. 0 indicates an error. See EtiveMor.OpenImoCiiCalculator.Core.Models.Enums.ImoCiiRating |
requiredCii |
The actual intensity required for the ship to be considered in-range of the IMO's regulations (note that from 2027 onwards, this is a projection) |
attainedCii |
The estimated or actual intensity attained for the ship in the given year |
attainedRequiredRatio |
The ratio between requiredCii and attainedCii |
calculatedCo2eEmissions |
The calculated CO2e emissions this result was based on |
calculatedShipCapacity |
The calculated ship capacity this result was based on |
calculatedTransportWork |
The calculated transport work this result was based on |
vectorBoundariesForYear.year |
the year in question (repeats .year ) |
vectorBoundariesForYear.shipType |
the type of ship EtiveMor.OpenImoCiiCalculator.Core.Models.Enums.ShipType |
vectorBoundariesForYear.weightClassification |
the weight classification the ship has been considered for (see MEPC.354(78)) |
vectorBoundariesForYear.capacityUnit |
describes if this ship was measured against its Deadweight or Gross Tonnage EtiveMor.OpenImoCiiCalculator.Core.Models.Enums.CapacityUnit |
vectorBoundariesForYear.boundaryDdVectors.Superior |
Describes the highest value a ship't attainedCii can acheive, while still being considered Superior |
vectorBoundariesForYear.boundaryDdVectors.Lower |
Describes the highest value a ship't attainedCii can acheive, while still being considered Lower |
vectorBoundariesForYear.boundaryDdVectors.Upper |
Describes the highest value a ship't attainedCii can acheive, while still being considered Upper |
vectorBoundariesForYear.boundaryDdVectors.Inferior |
Describes the highest value a ship't attainedCii can acheive, while still being considered Inferior |
A ship's Carbon Intensity Indicator (CII) is measured by calculating its transport workload in a given calendar year, then calculating the mass of
$AttainedCII = massOfCo2Emissions \times transportWork$
Ships are split into 12 categories, for example "Bulk Carrier", "Tanker", "Cruise Passenger Ship" among others (see Table 1 for a comprehensive list). A ship is compared internally among its category peers but never across categories, for example, a Bulk Carrier is not directly comparable to a LNG Carrier in this system.
Inputs
- The type of ship
- The type of fuel used by the ship's main engine
- The capacity of the ship, measured in either Deadweight Tonnage (DWT) or Gross Tonnage (GT)
- The distance travelled by the ship in one calendar year, measured in nautical miles
The ship's Attained CII is then compared to its Required CII to produce an easy to understand grade for the ship. The grading scheme is in the range A to E, where A is the most efficient bracket, C represents a ship at-or-near its CII, and E is the least efficient.
Grade | Description |
---|---|
A | CII below the Superior Boundary |
B | CII above the Superior Boundary and below the Lower Boundary |
C | CII between the Lower Boundary and the Upper Boundary |
D | CII above the Upper Boundary and below the Inferior Boundary |
E | CII above the Inferior Boundary |
Fig1. IMO Boundaries, after IMO MEPC.354(78)
A ship's grade is calculated by comparing its Attained CII to its Required CII to give its performance
$shipTypeRequiredCII \times exp(d_i)$ .
The worked example below considers a Bulk Carrier, with a Deadweight Tonnage below 279,000. Assuming the Bulk Carrier's
$10g CO_2 / DWT.NM$
Important
For some ship types,
Then the boundaries are calculated with:
$10 \times exp(d1)$ $10 \times exp(d2)$ $10 \times exp(d3)$ -
$10 \times exp(d4)$ .
The
Boundary Type | Required CII | Boundary's Lower Threshold |
---|---|---|
Superior |
|
|
Lower |
|
|
Upper |
|
|
Inferior |
|
Grades are then derived from these boundaries, by comparing the ship's Attained CII to the thresholds across a given calendar year:
Grade | Higher than | Lower than | Description |
---|---|---|---|
A | 8.6 | Below Superior Boundary | |
B | 8.6 | 9.4 | Above Superior Boundary, Below Lower Boundary |
C | 9.4 | 10.6 | Above Lower Boundary, Below Upper Boundary |
D | 10.6 | 11.8 | Above Upper Boundary, Below Inferior Boundary |
E | 11.8 | Above Inferior Boundary |
Example Results:
- If the ship's Attained CII was
$9gCO_2/ DWT \times NM$ , the ship receives a gradeB
, as its Attained CII was above the threshold for Superior Boundary, but below the threshold for Lower Boundary. - If the ship's Attained CII was
$11gCO_2/ DWT \times NM$ , the ship receives a gradeD
, as its Attained CII was above the threshold for Upper Boundary, but below the threshold for Inferior Boundary.
A ship's Attained carbon intensity is calculated by taking the mass of its aggregate CO2 emissions in a calendar year, and multiplying it by its transport work done in the calendar year.
$massOfCo2Emissions \times transportWork$
Method accepts:
-
massOfCo2Emissions
, the mass of$CO_2$ emissions in the calendar year- See co2 emissions methodology to calculate
-
transportWork
, the work carried out by the ship in the calendar year- See transport work methodology to calculate
Method Returns:
- A
double
representing the ship's Attained Carbon Intensity
Implementation:
Returns the product of a ship's mass of
A ship's transport work is calculated by taking its capacity and multiplying it by the distance sailed in nautical miles in the calendar year.
$capacity \times distanceSailed$
Method accepts:
capacity
the ship's capacity for cargo or passengers- See ship capacity methodology to calculate
distanceSailed
the distance sailed in Nautical Miles in the calendar year
Implementation:
Returns the product of a ship's capacity and its distance sailed
The sum of a ship's
Method Accepts:
fuelType
, an enum derrived from Table 2's Fuel Type columnfuelConsumptionMass
, adouble
representing the mass of fuel consumed in grams (g) over the given year
Method Returns:
- A
double
representing the$M$ mass of$CO_2$ emitted by the ship across one calendar year
Implementation:
The sum of
$M = FC_j \times C_{f_j}$
Where:
-
$j$ is the fuel type -
$FC_j$ is the mass in grams of the consumed fuel typej
in one calendar year -
$C_{f_j}$ is the fuel oil mass to CO2 mass conversion factor, given in Table 2's$C_F$ column
A ship's capacity is measured by either its Deadweight Tonnage (DWT) or Gross Tonnage (GT). The only exception is Bulk Carriers
, which have a capacity capped at 279,000.
To calculate a ship's Capacity in accordance with the IMO's MEPC353(78) guidelines:
Method accepts:
shipType
, an enum, derrived from Table 1's Ship Type columndeadweightTonnage
, the deadweight tonnage of the ship, provided in long tonsgrossTonnage
, the gross tonnage of the ship, provided in long tons
Method returns:
- a
double
representing the ship's capacity in imperial long tons
Implementation:
- If the ship is a
Bulk Carrier
, and its DWT is 279,000 or above, its capacity is capped at 279,000 - If the ship is a
Bulk Carrier
, and its DWT is below 279,000, its capacity is equal to its DWT - If the ship is a
Ro-ro cargo ship (vehicle carrier)
, aRo-ro passenger ship
or aCruise passenger ship
, its capacity is equal to its Gross Tonnage - Otherwise, the ships capacity is equal to its DWT
The full implementation detail can be found in Table 1's Ship Type, Ship weight, and Capacity columns.
Exceptions:
ArgumentOutOfRangeException
is thrown if the DWT is set to 0, when ship type is set to anything other thanRo-ro cargo ship (vehicle carrier)
,Ro-ro passenger ship
orCruise passenger ship
ArgumentOutOfRangeException
is thrown if the GT is set to 0, when ship type is set toRo-ro cargo ship (vehicle carrier)
,Ro-ro passenger ship
orCruise passenger ship
The following table describes how to determine a given ship type's Capacity.
Table Source: IMO: MEPC.353(78)
Ship Type | Conditional Specification | Capacity | ||
---|---|---|---|---|
Bulk carrier | 279,000 DWT and above | 279,000 | 4,745 | 0.622 |
Bulk carrier | Less than 279,000 DWT | DWT | 4,745 | 0.622 |
Gas carrier | 65,000 and above | DWT | 14405E7 | 2.071 |
Gas carrier | Less than 65,000 DWT | DWT | 8,104 | 0.639 |
Tanker | DWT | 5,247 | 0.610 | |
Container Ship | DWT | 1,984 | 0.489 | |
General cargo ship | 20,000 DWT and above | DWT | 31,948 | 0.792 |
General cargo ship | Less than 20,000 DWT | DWT | 588 | 0.3885 |
Refrigerated cargo carrier | DWT | 4,600 | 0.557 | |
Combination carrier | DWT | 5,119 | 0.622 | |
LNG Carrier | 100,000 DWT and above | DWT | 9.827 | 0.000 |
LNG Carrier | 65,000 and above, less than 100,000 | DWT | 14479E10 | 2.673 |
LNG Carrier | less than 65,000 DWT | DWT | 14779E10 | 2.673 |
Ro-ro cargo ship (vehicle carrier) | 57,700 and above | 57,000 | 3,627 | 0.590 |
Ro-ro cargo ship (vehicle carrier) | 30,000 and above, less than 57,700 | 3627 | 5,739 | 0.590 |
Ro-ro cargo ship (vehicle carrier) | less than 30,000 | GT | 330 | 0.329 |
Ro-ro cargo ship | GT | 1,967 | 0.485 | |
Ro-ro passenger ship | Ro-ro passenger ship | GT | 2,023 | 0.460 |
Ro-ro passenger ship | High-speed craft designed to SOLAS chapter X | GT | 4,196 | 0.460 |
Cruise passenger ship | GT | 930 | 0.383 |
The following table describes how to convert from the fuel used by a ship's main engine
Table source: IMO: MEPC.364(79)
ID | Fuel Type | Source/Reference | Carbon Content | Lower calorific value (kJ/kg) | |
---|---|---|---|---|---|
1 | Diesel / Gas Oil | ISO 8217 Grade DMX to DMB | 0.8744 | 3.206 | 42,700 |
2 | Light Fuel Oil (LFO) | ISO 8217 Grade RMA to RMD | 0.8594 | 3.151 | 41,200 |
3 | Heavy Fuel Oil (HFO) | ISO 8217 Grade RME to RMK | 0.8493 | 3.114 | 40,200 |
4a | Liquified Petroleum (Propane) | Propane | 0.8182 | 3.000 | 46,300 |
4b | Liquified Petroleum (Butane) | Butane | 0.8264 | 3.030 | 45,700 |
5 | Ethane | - | 0.7989 | 2.927 | 46,400 |
6 | Liquified Natural Gas (LNG) | n/a | 0.7500 | 2.750 | 48,000 |
7 | Methanol | n/a | 0.3750 | 1.375 | 19,900 |
8 | Ethanol | n/a | 0.5217 | 1.913 | 26,800 |
The following table describes the
Table source (2022): IMO: MEPC.354(78) Previous source (2021): IMO: MEPC.339(76)
Id | Ship Type | Weight Classification | Capacity in CII Calculation | dd vector exp(d1) | dd vector exp(d2) | dd vector exp(d3) | dd vector exp(d4) |
---|---|---|---|---|---|---|---|
1 | Bulk Carrier | DWT | 0.86 | 0.94 | 1.06 | 1.18 | |
2.a | Gas Carrier | 65,000 DWT and above | DWT | 0.81 | 0.91 | 1.12 | 1.44 |
2.b | Gas Carrier | Less than 65,000 DWT | DWT | 0.85 | 0.95 | 1.06 | 1.25 |
3 | Tanker | DWT | 0.82 | 0.93 | 1.08 | 1.28 | |
4 | Container Ship | DWT | 0.83 | 0.94 | 1.07 | 1.19 | |
5 | General Cargo Ship | DWT | 0.83 | 0.94 | 1.06 | 1.19 | |
6 | Refrigerated Cargo Carrier | DWT | 0.78 | 0.91 | 1.07 | 1.20 | |
7 | Combination Carrier | DWT | 0.87 | 0.96 | 1.06 | 1.14 | |
8.a | LNG Carrier | 100,000 DWT and above | DWT | 0.89 | 0.98 | 1.06 | 1.13 |
8.b | LNG Carrier | Less than 100,000 DWT | DWT | 0.78 | 0.92 | 1.10 | 1.37 |
9 | Ro-ro Cargo Ship (Vehicle Carrier) | GT | 0.86 | 0.94 | 1.06 | 1.16 | |
10 | Ro-ro Cargo Ship | GT | 0.76 | 0.89 | 1.08 | 1.27 | |
11 | Ro-ro Passenger Ship | GT | 0.76 | 0.92 | 1.14 | 1.30 | |
12 | Cruise Passenger Ship | GT | 0.87 | 0.95 | 1.06 | 1.16 |
The following table describes the reduction factor to be applied to a ship's
Table Source: IMO: MEPC.338(76)
Year | Reduction factor Relative to 2019 |
Estimated Reduction Factor |
---|---|---|
2019 | 0% | -- % |
2020 | 1% | -- % |
2021 | 2% | -- % |
2022 | 3% | -- % |
2023 | 5% | -- % |
2024 | 7% | -- % |
2025 | 9% | -- % |
2026 | 11% | -- % |
2027 | -- % | 13% |
2028 | -- % | 15% |
2029 | -- % | 17% |
2030 | -- % | 19% |
Often in shipping, non-metric measurements are used. Conversions are detailed below
Measure | Metric Measure | Notes |
---|---|---|
Deadweight Tonne (DWT) | DWT is a ship's total weight excluding boiler water, measured in Imperial long tons | |
Gross Tonne (GT) | GT is a ship's area, measured in Imperial long tons | |
Nautical Mile (NM) |
|
NM is equal to 1 minute of latitude at the equator. |
Term | Description | Notes |
---|---|---|
Carbon Dioxide Equivalent (CO2eq, CO2, CO2e, |
A ship's carbon dioxide emissions | Expressed in this implementation in grams (metric) |
Carbon Intensity Index (CII) | The relative measure of a ship's carbon dioxide emissions, taking distance travelled and fuel type used into account | |
Deadweight Tonnage (DWT) | The measure of a the total contents of a ship, including cargo, fuel, crew, passengers, and water (Excludes water in a ship's boiler) | Expressed in long tons (British Imperial) |
Final Draft International Standard (FDIS) | A draft status for an ISO Standard, indicating the standard is in its final stage of approval | |
Gross Tonnage (GT) | A ship's internal volume | Expressed in long tons (British Imperial) |
International Maritime Organisation (IMO) | A UN Agency responsible for regulating maritime transport rules & regulations | |
International Organization for Standardization (ISO) | Independent, non-governmental, international standard development organization | |
Liquefied natural gas (LNG) | Gas, compressed into liquid form for easier transport | |
Nautical Miles (NM, nmile) | Distance travelled over water, different to land measured miles (statute miles) | Expressed in minutes of latitude at the equator |
Resolution MEPC.353(78) | Internationally standardised reference guide to shipping carbon intensity | |
Roll-on-roll-off (Ro-ro, Roro, Ro ro) | A ship designed to take cargo which can be wheeled (or rolled) in and out of a cargo hold |
- IMO: MEPC.337(76) - Carbon Intensity Index (CII) spec: https://wwwcdn.imo.org/localresources/en/KnowledgeCentre/IndexofIMOResolutions/MEPCDocuments/MEPC.337(76).pdf
- IMO: MEPC.364(79) - Energy Efficiency Design Index (EEDI) spec: https://wwwcdn.imo.org/localresources/en/KnowledgeCentre/IndexofIMOResolutions/MEPCDocuments/MEPC.364(79).pdf
- IMO: MEPC.339(76) - 2021 Guidelines on the operational carbon intensity rating of ships (CII Rating Guidelines, G4): https://wwwcdn.imo.org/localresources/en/OurWork/Environment/Documents/Air%20pollution/MEPC.339(76).pdf
- IMO: MEPC.339(76) - 2022 Guidelines on the operational carbon intensity rating of ships (CII Rating Guidelines, G4): https://wwwcdn.imo.org/localresources/en/KnowledgeCentre/IndexofIMOResolutions/MEPCDocuments/MEPC.354(78).pdf
- ISO 8217:2017 (Current standard) - Petroleum products, Fuels (class F), Specifications of marine fuels: https://www.iso.org/standard/64247.html
- ISO/FDIS 8217 (Standard under development) - Products from petroleum, synthetic and renewable sources, Fuels (class F), Specifications of marine fuel: https://www.iso.org/standard/80579.html
- IMO's press briefing, including links to the comprehensive guidelines: https://www.imo.org/en/MediaCentre/PressBriefings/pages/CII-and-EEXI-entry-into-force.aspx
- Society of Naval Architecture Students summary of CII Calculations: https://github.com/snascusat/CII-Calculator
- DNV's summary of EEXI and CII requirements: https://www.dnv.com/news/eexi-and-cii-requirements-taking-effect-from-1-january-2023-237817/
- UNStats (public, non-commercial dataset): https://unstats.un.org/bigdata/task-teams/ttt-dashboards/
- Dataliastic (private commercial dataset): https://datalastic.com/pricing/
- Marine Traffic (private commercial dataset): https://servicedocs.marinetraffic.com/
- Windward.AI (private commercial datasets): https://windward.ai/