Hydrogen pipeline
-----------------

<img src="../../_static/pipeline_hydrogen.png" alt="Alt text" width="50" style="float: left; margin-right: 10px;">

**Technology ID: HYDROGEN_PIPELINE**



**Input energy interface, with default energy:**

 - CONSUMPTION: hydrogen

**Output energy interface, with default energy:**

 - PRODUCTION: hydrogen

**Technology behaviors:**

 - OPTIM_PATHWAY
 - OPTIM_PMAX
 - GRADIENTS

**Technology parameters:**

| ID | Label | Unit | Behaviors | Description  |
| --- | --- | --- | --- | --- |
| CAPEX_OVERNIGHT | CAPEX Overnight | Euro/MW |  | -Overall capital expenditure (only used for pathway optimization) |
| DEINVEST_COST | Deinvest cost | Euro/MW |  | Deinvest cost (only used for pathway optimization) |
| LIFETIME | Lifetime |  |  | Lifetime of the asset (only used for pathway optimization) |
| YIELD_INVEST | Yield of investment | % |  | Yield associated with investment |
| INSTALL_MAX | Max installation | MW | OPTIM_PATHWAY | Max installation (only used for pathway optimization) |
| DECOMM_MAX | Max decommissioning | MW | OPTIM_PATHWAY | Max decommissioning (only used for pathway optimization) |
| CAPEX | CAPEX | Euro/MW/Year |  | Capital expenditure (only used for capacity optimization) |
| FOC | Fixed Operating Costs | Euro/MW/Year |  | Fixed Operating Costs (only used for capacity optimization) |
| PMAX | Pmax | MW | (not OPTIM_PMAX) and (not OPTIM_PATHWAY) | Installed power capacity |
| PMAXMIN | Min Pmax | MW | OPTIM_PMAX or OPTIM_PATHWAY | Installed capacity lower bound for capacity optimization |
| PMAXMAX | Max Pmax | MW | OPTIM_PMAX or OPTIM_PATHWAY | Installed capacity upper bound for capacity optimization |
| AVAILABILITY | Availability | % |  | Available capacity, expressed as a percentage of the installed capacity |
| PRODUCTION_COST | Production cost | Euro/MW.h |  | Production cost (emission cost excluded) |
| ENTRY_FEE | Fee for gas injection on the internal network | Euro/MW.h |  | Entry fee |
| CONSUMPTION_COST | Consumption cost | Euro/MW.h |  | Consumption cost |
| EXIT_FEE | Fee for gas withdrawal from the internal network | Euro/MW.h |  | Exit fee |
| LOSSES | Losses | % |  | Transmission losses |
| MIN_FLOW | Minimal flow | % |  | Minimal flow on a pipeline, expressed as a percentage of the installed capacity. |
| GRADIENT_UP | Gradient up | %/min | GRADIENTS | Maximal upward variation, expressed as a percentage of the available capacity per minute |
| GRADIENT_DOWN | Gradient down | %/min | GRADIENTS | Maximal downward variation, expressed as a percentage of the available capacity per minute |
|  |

**Model code:**

``` python
stateON = AssetState('ON')
addGradients(asset, stateON, isInput=True)
# Computing overall cost to set on incoming flows (consumption cost + network exit fee)
overallConsumptionCost  = getAssetData(asset, CONSUMPTION_COST, dataName=LABELS[CONSUMPTION_COST], mustExist=False)
exitFee = getAssetData(asset, "EXIT_FEE", mustExist=False)
if exitFee is not None:
	overallConsumptionCost += exitFee
   
# Computing overall cost to set on outcoming flows (production cost + network entry fee)
overallProductionCost  = getAssetData(asset, PRODUCTION_COST, dataName=LABELS[PRODUCTION_COST], mustExist=False)
entryFee = getAssetData(asset, "ENTRY_FEE", mustExist=False)
if entryFee is not None:
	overallProductionCost += entryFee
   
addEnergyTransmission(asset, stateON, consumptionCost = overallConsumptionCost, productionCost = overallProductionCost)
# Add minimum flows constraints
minimumFlow = getAssetData(asset, MIN_FLOW, mustExist=False, resizePercentage=True)
if minimumFlow is not None and minimumFlow > 0:
	addMinimumFlow(asset, stateON)
finalize(stateON)

```