# Regulation
A `Regulation` node defines a regulatory measure that works on yearly emissions of a vessel. Examples of
regulations are goal-base fuel standards (such as the IMO Net-Zero Framework and FuelEU Maritime) and
transport based regulation such as the IMO CII regulation.
Example:
```python
Regulation "cii" {
Measure = TRANSPORT_NOMINAL
Scheme = INDIVIDUAL
Scope = TTW
IncludeSlip = FALSE
Emissions = Emission("carbon_dioxide")
Fuels = Fuel("*")
Jurisdiction = [Port("africa"), Port("americas"), Port("asia"), Port("europe"), Port("middle_east")]
RemedialCost = 0
}
```
## Attributes
### Active
This attribute sets whether the regulation is active in the current time-step. This attribute can be changed during the `EVENTS` simulation to either introduce a regulation assuming there was no foresight to its implementation or to discontinue an already existing regulation.
* **Data type**: `Boolean`
* **Default**: TRUE
### Scheme
This attribute sets the scheme of the regulation. Specifically whether it allows trading of emission certificates or not.
* **Data type**: `ID`
* **Legal values**: [RegulationSchemeID](appendix_ids.md#regulationschemeid)
* **Default**: None. Must be provided by the user.
### Jurisdiction
This attribute defines a list of ports that are under the jurisdiction of the regulation.
* **Data type**: List of `Port` nodes
* **Example values**:
+ `[Port("name1"), Port("name2")]`
+ `[Port("*")]`
* **Default**: None. Must be provided by the user.
### Emissions
This attribute specifies the emission(s) being targeted by the regulation. Use the wildcard `Emission("*")` to target every emission defined in the simulation.
* **Data type**: List of `Emission` nodes
* **Example values**:
+ `Emission("name")`
+ `[Emission("name_1"), Emission("name_2")]`
+ `Emission("*")`
* **Default**: None. Must be provided by the user.
### Fuels
This attribute specifies the fuel(s) being targeted by the regulation. Use the wildcard `Fuel("*")` to target every fuel defined in the simulation.
* **Data type**: List of `Fuel` nodes
* **Example values**:
+ `Fuel("name")`
+ `[Fuel("name_1"), Fuel("name_2")]`
+ `Fuel("*")`
* **Default**: None. Must be provided by the user.
### Scope
This attribute defines the scope of emission targeted by the regulation.
* **Data type**: `ID`
* **Legal values**: [PolicyScopeID](appendix_ids.md#policyscopeid)
* **Default**: WTW
### EmissionsLifetime
This attribute determines the emissions lifetime used in the GWP (Global Warming Potential) calculation of emissions.
* **Data type**: `Float`, `Variable`
* **Example values**: `20`
* **Unit**: Years
* **Minimum value**: 0
* **Default**: 100
### IncludeSlip
This attribute defines whether emissions slip is included in the calculation of the emissions in the regulation.
* **Data type**: `Boolean`
* **Default**: TRUE
### Measure
This attribute sets the emission measure of the regulation.
If 'ABSOLUTE' the absolute emissions in tons/year are targeted.
If 'INTENSITY' the emission intensity in kg/GJ are targeted.
If 'TRANSPORT\_NOMINAL' the carbon intensity index in CO2-eq/nominal cargo-miles is targeted.
If 'TRANSPORT' the carbon intensity index in CO2-eq/actual cargo-miles is targeted.
* **Data type**: `ID`
* **Legal values**: [RegulationMeasureID](appendix_ids.md#regulationmeasureid)
* **Unit**: Different units depending on the value of ‘Measure’
+ ABSOLUTE: ton emissions
+ INTENSITY: kg emissions / GJ
+ TRANSPORT\_NOMINAL: g emissions / nominal cargo miles
+ TRANSPORT: g emissions / actual cargo miles
* **Default**: None. Must be provided by the user
### IntraFraction
This attribute sets the fraction for how much of the emissions between two ports inside (intra) the jurisdiction should be counted in the calculation.
* **Data type**: `Float`, `Forecast`, `Variable`
* **Example values**:
+ `0.5`
+ `Forecast("name")`
* **Minimum value**: 0
* Maxiumum value: 1
* **Unit**: Fraction of emissions counted during intra jurisdiction travel
* **Default**: 1
### InterFraction
This attribute sets the fraction for how much of the emissions between two ports where one is in the jurisdiction and the other outside the
jurisdiction (inter) should be counted in the calculation.
* **Data type**: `Float`, `Forecast`, `Variable`
* **Example values**:
+ `0.5`
+ `Forecast("name")`
* **Unit**: Fraction
* **Minimum value**: 0
* **Maximum value**: 1
* **Default**: 1
### ExtraFraction
This attribute sets the fraction for how much of the emissions between two ports outside the jurisdiction (extra) should be counted in the calculation.
* **Data type**: `Float`, `Forecast`, `Variable`
* **Example values**:
+ `0.5`
+ `Forecast("name")`
* **Unit**: Fraction
* **Minimum value**: 0
* **Maximum value**: 1
* **Default**: 0
### RemedialCost
This attribute sets the level of the regulation being paid or received dependent on the scheme in USD/ton emission.
* **Data type**: `Float`, `Forecast`, `Variable`
* **Example values**:
+ `500`
+ `Forecast("name")`
* **Unit**: USD/ton emission
* **Minimum value**: 0
* **Default**: 0
### SharedThreshold
This attribute determines the global threshold of emissions, i.e., the cap set on global emissions. This can be used instead of defining individual vessel thresholds.
* **Data type**: `Float`, `Forecast`, `Variable`
* **Example values**:
+ `90`
+ `Forecast("name")`
* **Unit**: Different units depending on the value of ‘Measure’
+ ABSOLUTE: ton emissions
+ INTENSITY: kg emissions / GJ
+ TRANSPORT\_NOMINAL: g emissions / nominal cargo miles
+ TRANSPORT: g emissions / actual cargo miles
* **Minimum value**: 0
* **Default**: None
## Commands
### set\_global\_warming\_potential
This command allows the user to set the global warming potential (GWP) for a specific emission. If the GWP is assigned on the regulation then it overwrites the physical GWP defined on the emission during the calculation of emission factors.
* **Primary key type**: String (Emission name)
* **Data type**: `Float`, `Curve`, `Variable`
* **Example values**:
+ `"emission_name", 25`
+ `"emission_name", Curve("name")`
* **Unit**: ton CO2eq/ton emission
* **Default**: The physical global warming potential assigned to the specific emissions
### set\_include\_vessel
This command allows the user to include or exclude certain vessels from the regulation.
* **Primary key type**: String (Vessel name)
* **Data type**: `Boolean`
* **Default**: TRUE
### set\_fuel\_wtt
This command allows the user to set the WTT (Well-to-Tank) emission factor for a given fuel and emission as it is defined under a certain policy. If these emission factor values are assigned under a regulation, they override the emission factor values that are otherwise used in Navigate
* **Primary key type**: String (Fuel name)
* **Secondary key type**: String (Emission name)
* **Data type**: `Float`, `Forecast`, `Variable`
* **Example values**:
+ `"fuel_name", "emission_name", 3.2`
+ `"fuel_name", "emission_name", Forecast("name")`
* **Unit**: ton emission/ton fuel
* **Default**: Determined through internal calculations (a supply-weighted average of the production-based bunker WTT across the jurisdiction ports on the vessel's route; ports without supply of the fuel carry no weight)
### set\_fuel\_ttw
This command allows the user to set the TTW (Tank-to-Wake) emission factor for a given fuel and emission as it is defined under a certain policy. If these emission factor values are assigned under a regulation, they override the emission factor values that are otherwise used in Navigate
* **Primary key type**: String (Fuel name)
* **Secondary key type**: String (Emission name)
* **Data type**: `Float`, `Forecast`, `Variable`
* **Example values**:
+ `"fuel_name", "emission_name", 3.2`
+ `"fuel_name", "emission_name", Forecast("name")`
* **Unit**: ton emission/ton fuel
* **Default**: Determined through internal calculations
### set\_vessel\_threshold
This command sets the threshold that a specific vessel must satisfy in the measure unit.
* **Primary key type**: String (Vessel name)
* **Data type**: `Float`, `Forecast`, `Variable`
* **Example values**:
+ `"vessel_name", 90`
+ `"vessel_name", Forecast("name")`
* **Unit**: Different units depending on the value of ‘Measure’
+ ABSOLUTE: ton emissions
+ INTENSITY: kg emissions / GJ
+ TRANSPORT\_NOMINAL: g emissions / nominal cargo miles
+ TRANSPORT: g emissions / actual cargo miles
* **Minimum value**: 0
* **Default**: None
### set\_vessel\_capacity
This command sets the capacity of a specific vessel for use in transport calculations.
This is only relevant if 'Measure' is set to 'TRANSPORT\_NOMINAL' or 'TRANSPORT'.
* **Primary key type**: String (Vessel name)
* **Data type**: `Float`, `Forecast`, `Variable`
* **Example values**:
+ `"vessel_name", 75000`
+ `"vessel_name", Forecast("name")`
* **Minimum value**: 0
* **Default**: None