From 4b959463f52269f944e0af688a8187857ae57852 Mon Sep 17 00:00:00 2001 From: BeneharoRB Date: Wed, 19 Jun 2024 16:02:43 +0200 Subject: [PATCH 01/15] Restructure documentation for external communication --- .idea/.gitignore | 8 + docs/data_preface.md | 428 ------------------ docs/data_requirements/nomenclature.md | 3 - .../data_requirements/input_data.md | 0 .../data_requirements/licensing.md | 284 ++++++------ .../data_requirements/metadata.md | 0 .../data_requirements/ontology.md | 0 .../data_requirements/overview.md | 2 +- docs/{ => developer}/faq.md | 2 +- .../{ => developer}/how_to_contribute_data.md | 0 docs/index.md | 4 +- docs/results.md | 1 - docs/visitor/lastenheft.md | 1 + docs/visitor/nomenclature.md | 1 + docs/visitor/results.md | 3 + docs/{ => visitor}/scenarios.md | 1 - mkdocs.yml | 30 +- 17 files changed, 176 insertions(+), 592 deletions(-) create mode 100644 .idea/.gitignore delete mode 100644 docs/data_preface.md delete mode 100644 docs/data_requirements/nomenclature.md rename docs/{ => developer}/data_requirements/input_data.md (100%) rename docs/{ => developer}/data_requirements/licensing.md (98%) rename docs/{ => developer}/data_requirements/metadata.md (100%) rename docs/{ => developer}/data_requirements/ontology.md (100%) rename docs/{ => developer}/data_requirements/overview.md (97%) rename docs/{ => developer}/faq.md (99%) rename docs/{ => developer}/how_to_contribute_data.md (100%) delete mode 100644 docs/results.md create mode 100644 docs/visitor/lastenheft.md create mode 100644 docs/visitor/nomenclature.md create mode 100644 docs/visitor/results.md rename docs/{ => visitor}/scenarios.md (99%) diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..13566b8 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,8 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Editor-based HTTP Client requests +/httpRequests/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml diff --git a/docs/data_preface.md b/docs/data_preface.md deleted file mode 100644 index d99b946..0000000 --- a/docs/data_preface.md +++ /dev/null @@ -1,428 +0,0 @@ -# Data preface for SEDOS developer - -The SEDOS Reference Dataset (SRD) entails technology data across five sectors (power, heat, PtX, industry, mobility) -and various aggregation levels. - -This *data preface* provides additional information about the syntax of parameters and units in SRD. -## Nomenclature - -**SEDOS sectors** - -| Sector abbreviation | Sector | SEDOS workpackage | -|---------------------|------------|-------------------| -| pow | Power | AP4 | -| hea | Heat | AP6 | -| x2x | Power to X | AP5 | -| ind | Industry | AP7 | -| tra | Transport | AP8 | - - -??? note "Existing and investment processes" - - - === "Existing processes" - Processes that were existing before the base year 2021 can be identified on their name. They end with `_0` -
- Example: `pow_combustion_gt_hydrogen_0` - - === "Investment processes" - Processes that were not existing before the base year 2021 and that the model can invest in can be - identified on their name. They end with `_1` -
- Example: `pow_combustion_cc_chp_ccs_biomass_1` - -## Data - -??? note "Information on special parameters" - - === "`conversion_factor_`" - Having many Multiple-Input-Multiple-Output (MIMO) processes in the model structure, efficiencies are considered with the parameter `conversion_factor`. - We use the same naming convention for all parameters that describe the ratios of inputs and outputs in relation to the primary commodity.
- The primary commodity (conversion_factor = 1) is per default the first output of the process.
- - For consistency please check that the calorific values (heating values) that your conversion factors are based on, are consistent with the - values defined in "calorific_values_SEDOS" in the supplementary files at the sharepoint.
- - The TIMES adapter needs to convert the conversion factors into their parameter conventions and an automatic identification and naming of the commodity groups. - as required by the framework. - - === "`flow_share_min/max/fix`" - This parameter can be defined to bound flow shares within the commodity groups of MIMO processes that by default have flexible ratios.
- e.g. for a hydrogen-ready gas turbine (that can either burn methane or h2 in the MIMO-process) the hydrogen flow for every - timestep could be restricted to a ratio of 0.3 with `flow_share_max=0.3`. - - === "`capacity_p_abs_new_max`" - - Growth rates of processes should be considered with `capacity_p_abs_new_max` or `capacity_e_abs_new_max` parameter. - It describes absolute upper bounds for the expansion of capacities per milestone year. Please consider the deviating - period lengths for different milestone years when you determine the upper bounds. - This parameter should be given for a process only if it is based on reasonable assumptions or data. - Please include its background in your AP specific documentation. The transport sector considers growth rates with the market shares. - - === "`wacc`" - - The weighted average cost of capital (wacc) gives the interest rate (%) of costs for capital after taxes. - As we follow a macro-economic approach in SEDOS it is globally defined for all technologies with a value of 2 percent. - Please link it to the `global_scalars` table as explained in the note `Linking data with foreign keys`. - -??? note "Parameter_Input-Output" - - The Parameter_Input-Output relations are important to link relevant flow-specific parameters to input or output commodities - of a MIMO process. Due to the high number of MIMO processes in our model structure we defined defaults for these relations:

- **Cost parameters are directly related to the throughput power capacity based on the given primary commodity** - (first output of a process with conversion_factor = 1).

- Moreover, the following parameters are per default directly derived from the parameter names in your uploaded data.
- - `conversion_factor_`
- - `flow_share_max_`
- - `emission_factor__`
- Please make sure that the names accurately fit to this schema. Otherwise, the data adapter will not recognize the - uploaded data and the relation of the parameters can not be defined.
- - For exceptions to these defaults please use the "Parameter_Input-Output" sheet to clearly indicate that the parameter relations do not follow these defaults. - e.g. the investment costs of an electrolyzer that are defined in relation to the input power capacity. - -??? note "Monetary value" - - If not further specified the base year for the monatary value is 2021. - - If monatary conversion were performed, the following logic was applied:
- _currency_A(year_x) -> currency_B(year_x) -> currency_B(year_z)_
- e.g. USD2010 -> EUR2010 -> EUR2021
- - For the conversion please use the provided table "monetary_conversion" in the supplementary files at the sharepoint. - The conversion is based on data from the ECB for the exchange rates and from the StBA for the harmonised index of consumer prices.
- The original years of the sources can be documented in the method column - e.g. {`Investment costs`:`Conversion from USD2019`} - -??? note "Leap years" - - Leap years are considered in timeseries data by setting the timeindex_stop for **2024, 2040, 2060** to - the **30.12.**
The timesseries has only 8760 instead of 8784 timesteps (-> the 31.12 is missing). - - ```python - | id | region | type | timeindex_start | timeindex_stop | timeindex_resolution | exo_pkm_road_mcar | version | method | source | comment | - |------|----------|--------|-----------------------|-----------------------|------------------------|---------------------|-----------|----------|----------|-----------| - | 1 | DE | | 2021-01-01 00:00:00 | 2021-12-31 23:00:00 | 1h | [1,2,3,…,8760] | v1 | | | | - | 2 | DE | | 2024-01-01 00:00:00 | 2024-12-30 23:00:00 | 1h | [1,2,3,…,8760] | v1 | | | | - | 3 | DE | | 2027-01-01 00:00:00 | 2027-12-31 23:00:00 | 1h | [1,2,3,…,8760] | v1 | | | | - | 4 | DE | | 2030-01-01 00:00:00 | 2030-12-31 23:00:00 | 1h | [1,2,3,…,8760] | v1 | | | | - | 5 | DE | | 2035-01-01 00:00:00 | 2035-12-31 23:00:00 | 1h | [1,2,3,…,8760] | v1 | | | | - | 6 | DE | | 2040-01-01 00:00:00 | 2040-12-30 23:00:00 | 1h | [1,2,3,…,8760] | v1 | | | | - | 7 | DE | | 2045-01-01 00:00:00 | 2045-12-31 23:00:00 | 1h | [1,2,3,…,8760] | v1 | | | | - | 8 | DE | | 2050-01-01 00:00:00 | 2050-12-31 23:00:00 | 1h | [1,2,3,…,8760] | v1 | | | | - | 9 | DE | | 2060-01-01 00:00:00 | 2060-12-30 23:00:00 | 1h | [1,2,3,…,8760] | v1 | | | | - | 10 | DE | | 2070-01-01 00:00:00 | 2070-12-31 23:00:00 | 1h | [1,2,3,…,8760] | v1 | | | | - ``` - -??? note "Emission factors" - - The following emission types are considered: **co2, ch4 & n2o**.
- The 100-year time horizon global warming potentials (GWP) relative to CO2 according to the fourth IPCC assessment report (AR4) are taken as suggested - by the UWB at the time of the definition in 2023: `gwp_ch4 : 25`, `gwp_n2o : 298`
- - Whenever possible the assumed co2 emission factors should be consistent for same commodities across sectors.
- **Therefore, we defined a global table `global_emission_factors`**.

- These are defined based on the values from the National Inventory Report for the German Greenhouse Gas Inventory from 1990-2021 (NRI).
- Please, link the emission factor column of the processes to this table and the correct column via a foreign key - as explained in the note below `Linking data with foreign keys`.
- - Emission factors for ch4 and n2o are to be defined sector- or process-specific as they are more related to attributes such as firing temperature and humidity. - Therefore you can directly enter numbers in the respective emission column. If you still want to define ch4 values globally e.g. for similar processes, you can - add an extra column to the `global_emission_factors` adding <_ch4> or <_n2o> to the column names.
- - If you need to aggregate emission factors from multiple fuels, please add a new column to the table and give it an appropriate name (e.g. waste_wood_wood_scraps_all). - Please indicate the different fuel emission factors as well as their share in the aggregation based on the assumed potentials in the metadata description of the column in the following format: `agg____`.
- e.g. "description": "agg_30_waste_wood_wood_scraps_industry_70_waste_wood_wood_scraps_commercial_institutional" - - -??? note "Linking data with foreign keys" - - The general mapping structure is:
- `.`
- - The note below `Structure of energy demands` exemplifies how data in the SRD is linked via foreign keys.
- The `tra_demand` table uses a foreign key mapping to the tables`tra_scalars` and `tra_timeseries`.

- - -??? note "Structure of energy demands" - - Demands per sector are provided via three tables:
- 1. `_scalars`
- 2. `_timeseries`
- 3. `_demand`
- - The structure is exemplified on the transport sector below. - - === "`tra_scalars`" - The table collects all sector process-unspecific scalars.
- Also the annual demands. Demand columns are named as the commodity (unit must be declared via metadata) - - ```python - | id | region | year | type | exo_pkm_road_mcar | exo_tkm_rail | exo_tkm_rail_short | exo_pkm_road_lcar | bandwidth_type | version | method | source | comment | - |----|--------|------|------|-------------------|--------------|--------------------|-------------------|----------------|---------|--------|--------|---------| - | 1 | DE | 2021 | | 34.4 | 100 | 1000 | 66 | | | | | | - | 2 | DE | 2024 | | 34.4 | 101 | 1001 | 67 | | | | | | - | 3 | DE | 2027 | | 34.4 | 102 | 1002 | 68 | | | | | | - | 4 | DE | 2030 | | 34.4 | 103 | 1003 | 69 | | | | | | - | 5 | DE | 2035 | | 34.4 | 104 | 1004 | 70 | | | | | | - | 6 | DE | 2040 | | 34.4 | 105 | 1005 | 71 | | | | | | - | 7 | DE | 2045 | | 34.4 | 106 | 1006 | 72 | | | | | | - | 8 | DE | 2050 | | 34.4 | 107 | 1007 | 73 | | | | | | - | 9 | DE | 2060 | | 34.4 | 108 | 1008 | 74 | | | | | | - | 10 | DE | 2070 | | 34.4 | 109 | 1009 | 75 | | | | | | - ``` - - - === "`tra_timeseries`" - The table collects all sector timeseries - also the demand timeseries.
- Note that leap years are considered in time series data by setting the timeindex_stop for 2024, 2040, 2060 to the 30.12. - - ```python - | id | region | type | timeindex_start | timeindex_stop | timeindex_resolution | exo_pkm_road_mcar | exo_tkm_rail | exo_tkm_rail_short | exo_pkm_road_lcar | exo_pkm_road_xcar | version | method | source | comment | - |----|--------|------|---------------------|---------------------|----------------------|-------------------|----------------|--------------------|-------------------|-------------------|---------|--------|--------|---------| - | 1 | DE | | 2021-01-01 00:00:00 | 2021-12-31 23:00:00 | 1h | [1,2,3,…,8760] | [1,2,3,…,8760] | [1,2,3,…,8760] | [1,2,3,…,8760] | [1,2,3,…,8760] | v1 | | | | - | 2 | DE | | 2024-01-01 00:00:00 | 2024-12-30 23:00:00 | 1h | [1,2,3,…,8760] | [1,2,3,…,8760] | [1,2,3,…,8760] | [1,2,3,…,8760] | [1,2,3,…,8760] | v1 | | | | - | 3 | DE | | 2027-01-01 00:00:00 | 2027-12-31 23:00:00 | 1h | [1,2,3,…,8760] | [1,2,3,…,8760] | [1,2,3,…,8760] | [1,2,3,…,8760] | [1,2,3,…,8760] | v1 | | | | - | 4 | DE | | 2030-01-01 00:00:00 | 2030-12-31 23:00:00 | 1h | [1,2,3,…,8760] | [1,2,3,…,8760] | [1,2,3,…,8760] | [1,2,3,…,8760] | [1,2,3,…,8760] | v1 | | | | - | 5 | DE | | 2035-01-01 00:00:00 | 2035-12-31 23:00:00 | 1h | [1,2,3,…,8760] | [1,2,3,…,8760] | [1,2,3,…,8760] | [1,2,3,…,8760] | [1,2,3,…,8760] | v1 | | | | - | 6 | DE | | 2040-01-01 00:00:00 | 2040-12-30 23:00:00 | 1h | [1,2,3,…,8760] | [1,2,3,…,8760] | [1,2,3,…,8760] | [1,2,3,…,8760] | [1,2,3,…,8760] | v1 | | | | - | 7 | DE | | 2045-01-01 00:00:00 | 2045-12-31 23:00:00 | 1h | [1,2,3,…,8760] | [1,2,3,…,8760] | [1,2,3,…,8760] | [1,2,3,…,8760] | [1,2,3,…,8760] | v1 | | | | - | 8 | DE | | 2050-01-01 00:00:00 | 2050-12-31 23:00:00 | 1h | [1,2,3,…,8760] | [1,2,3,…,8760] | [1,2,3,…,8760] | [1,2,3,…,8760] | [1,2,3,…,8760] | v1 | | | | - | 9 | DE | | 2060-01-01 00:00:00 | 2060-12-30 23:00:00 | 1h | [1,2,3,…,8760] | [1,2,3,…,8760] | [1,2,3,…,8760] | [1,2,3,…,8760] | [1,2,3,…,8760] | v1 | | | | - | 10 | DE | | 2070-01-01 00:00:00 | 2070-12-31 23:00:00 | 1h | [1,2,3,…,8760] | [1,2,3,…,8760] | [1,2,3,…,8760] | [1,2,3,…,8760] | [1,2,3,…,8760] | v1 | | | | - ``` - - === "`tra_demand`" - In column "demand_annual" the scalar demand is mapped via foreign-key & also the units via the metadata from - the `tra_scalars` table. - The normalised timeseries are mapped in the "demand_timeseries_fixed" column via Foreign-key. - - ```python - | id | region | year | type | demand_annual | demand_timeseries_fixed | bandwidth_type | version | method | source | comment | - |----|--------|------|--------------------------------|-------------------------------|-----------------------------------|----------------|---------|--------|--------|---------| - | 1 | DE | 2021 | helper_sink_exo_tkm_rail | tra_scalars.exo_tkm_rail | tra_timeseries.exo_tkm_rail | | | | | | - | 2 | DE | 2024 | helper_sink_exo_tkm_rail | tra_scalars.exo_tkm_rail | tra_timeseries.exo_tkm_rail | | | | | | - | 3 | DE | 2027 | helper_sink_exo_tkm_rail | tra_scalars.exo_tkm_rail | tra_timeseries.exo_tkm_rail | | | | | | - | 4 | DE | 2030 | helper_sink_exo_tkm_rail | tra_scalars.exo_tkm_rail | tra_timeseries.exo_tkm_rail | | | | | | - | 5 | DE | 2035 | helper_sink_exo_tkm_rail | tra_scalars.exo_tkm_rail | tra_timeseries.exo_tkm_rail | | | | | | - | 6 | DE | 2040 | helper_sink_exo_tkm_rail | tra_scalars.exo_tkm_rail | tra_timeseries.exo_tkm_rail | | | | | | - | 7 | DE | 2045 | helper_sink_exo_tkm_rail | tra_scalars.exo_tkm_rail | tra_timeseries.exo_tkm_rail | | | | | | - | 8 | DE | 2050 | helper_sink_exo_tkm_rail | tra_scalars.exo_tkm_rail | tra_timeseries.exo_tkm_rail | | | | | | - | 9 | DE | 2060 | helper_sink_exo_tkm_rail | tra_scalars.exo_tkm_rail | tra_timeseries.exo_tkm_rail | | | | | | - | 10 | DE | 2070 | helper_sink_exo_tkm_rail | tra_scalars.exo_tkm_rail | tra_timeseries.exo_tkm_rail | | | | | | - | 11 | DE | 2021 | helper_sink_exo_tkm_rail_short | tra_scalars.exo_tkm_rail_short | tra_timeseries.exo_tkm_rail_short | | | | | | - | 12 | DE | 2024 | helper_sink_exo_tkm_rail_short | tra_scalars.exo_tkm_rail_short | tra_timeseries.exo_tkm_rail_short | | | | | | - | 13 | DE | 2027 | helper_sink_exo_tkm_rail_short | tra_scalars.exo_tkm_rail_short | tra_timeseries.exo_tkm_rail_short | | | | | | - | 14 | DE | 2030 | helper_sink_exo_tkm_rail_short | tra_scalars.exo_tkm_rail_short | tra_timeseries.exo_tkm_rail_short | | | | | | - | 15 | DE | 2035 | helper_sink_exo_tkm_rail_short | tra_scalars.exo_tkm_rail_short | tra_timeseries.exo_tkm_rail_short | | | | | | - | 16 | DE | 2040 | helper_sink_exo_tkm_rail_short | tra_scalars.exo_tkm_rail_short | tra_timeseries.exo_tkm_rail_short | | | | | | - | 17 | DE | 2045 | helper_sink_exo_tkm_rail_short | tra_scalars.exo_tkm_rail_short | tra_timeseries.exo_tkm_rail_short | | | | | | - | 18 | DE | 2050 | helper_sink_exo_tkm_rail_short | tra_scalars.exo_tkm_rail_short | tra_timeseries.exo_tkm_rail_short | | | | | | - | 19 | DE | 2060 | helper_sink_exo_tkm_rail_short | tra_scalars.exo_tkm_rail_short | tra_timeseries.exo_tkm_rail_short | | | | | | - | 20 | DE | 2070 | helper_sink_exo_tkm_rail_short | tra_scalars.exo_tkm_rail_short | tra_timeseries.exo_tkm_rail_short | | | | | | - | 21 | DE | 2021 | helper_sink_exo_pkm_road_mcar | tra_scalars.exo_pkm_road_mcar | tra_timeseries.exo_pkm_road_mcar | | | | | | - | 22 | DE | 2024 | helper_sink_exo_pkm_road_mcar | tra_scalars.exo_pkm_road_mcar | tra_timeseries.exo_pkm_road_mcar | | | | | | - | 23 | DE | 2027 | helper_sink_exo_pkm_road_mcar | tra_scalars.exo_pkm_road_mcar | tra_timeseries.exo_pkm_road_mcar | | | | | | - | 24 | DE | 2030 | helper_sink_exo_pkm_road_mcar | tra_scalars.exo_pkm_road_mcar | tra_timeseries.exo_pkm_road_mcar | | | | | | - | 25 | DE | 2035 | helper_sink_exo_pkm_road_mcar | tra_scalars.exo_pkm_road_mcar | tra_timeseries.exo_pkm_road_mcar | | | | | | - | 26 | DE | 2040 | helper_sink_exo_pkm_road_mcar | tra_scalars.exo_pkm_road_mcar | tra_timeseries.exo_pkm_road_mcar | | | | | | - | 27 | DE | 2045 | helper_sink_exo_pkm_road_mcar | tra_scalars.exo_pkm_road_mcar | tra_timeseries.exo_pkm_road_mcar | | | | | | - | 28 | DE | 2050 | helper_sink_exo_pkm_road_mcar | tra_scalars.exo_pkm_road_mcar | tra_timeseries.exo_pkm_road_mcar | | | | | | - | 29 | DE | 2060 | helper_sink_exo_pkm_road_mcar | tra_scalars.exo_pkm_road_mcar | tra_timeseries.exo_pkm_road_mcar | | | | | | - | 30 | DE | 2070 | helper_sink_exo_pkm_road_mcar | tra_scalars.exo_pkm_road_mcar | tra_timeseries.exo_pkm_road_mcar | | | | | | - | 31 | DE | 2021 | helper_sink_exo_pkm_road_lcar | tra_scalars.exo_pkm_road_lcar | tra_timeseries.exo_pkm_road_lcar | | | | | | - | 32 | DE | 2024 | helper_sink_exo_pkm_road_lcar | tra_scalars.exo_pkm_road_lcar | tra_timeseries.exo_pkm_road_lcar | | | | | | - | 33 | DE | 2027 | helper_sink_exo_pkm_road_lcar | tra_scalars.exo_pkm_road_lcar | tra_timeseries.exo_pkm_road_lcar | | | | | | - | 34 | DE | 2030 | helper_sink_exo_pkm_road_lcar | tra_scalars.exo_pkm_road_lcar | tra_timeseries.exo_pkm_road_lcar | | | | | | - | 35 | DE | 2035 | helper_sink_exo_pkm_road_lcar | tra_scalars.exo_pkm_road_lcar | tra_timeseries.exo_pkm_road_lcar | | | | | | - | 36 | DE | 2040 | helper_sink_exo_pkm_road_lcar | tra_scalars.exo_pkm_road_lcar | tra_timeseries.exo_pkm_road_lcar | | | | | | - | 37 | DE | 2045 | helper_sink_exo_pkm_road_lcar | tra_scalars.exo_pkm_road_lcar | tra_timeseries.exo_pkm_road_lcar | | | | | | - | 38 | DE | 2050 | helper_sink_exo_pkm_road_lcar | tra_scalars.exo_pkm_road_lcar | tra_timeseries.exo_pkm_road_lcar | | | | | | - | 39 | DE | 2060 | helper_sink_exo_pkm_road_lcar | tra_scalars.exo_pkm_road_lcar | tra_timeseries.exo_pkm_road_lcar | | | | | | - | 40 | DE | 2070 | helper_sink_exo_pkm_road_lcar | tra_scalars.exo_pkm_road_lcar | tra_timeseries.exo_pkm_road_lcar | | | | | | - ``` - - - -??? note "Empty cells and value 0" - - **Example table**:
- ```python - | id | region | year | type | capacity_p_inst | capacity_p_abs_new_max | conversion_factor_sec_elec | lifetime | cost_inv_capacity_p | cb_coefficient | cv_coefficient | bandwidth_type | version | method | source | comment | - |----|--------|------|------|-------------------------------------|------------------------|----------------------------|----------|---------------------|----------------|----------------|----------------|---------|--------|--------|---------| - | 1 | DE | 2021 | pow_combustion_cc_chp_ccs_biomass_1 | | 0 | | | | | | | | | | | - | 2 | DE | 2024 | pow_combustion_cc_chp_ccs_biomass_1 | | 0 | | | | | | | | | | | - | 3 | DE | 2027 | pow_combustion_cc_chp_ccs_biomass_1 | | 0 | | | | | | | | | | | - | 4 | DE | 2030 | pow_combustion_cc_chp_ccs_biomass_1 | | 0 | | | | | | | | | | | - | 5 | DE | 2035 | pow_combustion_cc_chp_ccs_biomass_1 | | | 0.8 | 25 | 1000 | 0.4 | 0.6 | | | | | | - | 6 | DE | 2040 | pow_combustion_cc_chp_ccs_biomass_1 | | | 0.8 | 25 | 1000 | 0.4 | 0.6 | | | | | | - | 7 | DE | 2045 | pow_combustion_cc_chp_ccs_biomass_1 | | | 0.8 | 25 | 800 | 0.4 | 0.6 | | | | | | - | 8 | DE | 2050 | pow_combustion_cc_chp_ccs_biomass_1 | | | 0.8 | 30 | 800 | 0.4 | 0.6 | | | | | | - | 9 | DE | 2060 | pow_combustion_cc_chp_ccs_biomass_1 | | | 0.8 | 30 | 800 | 0.4 | 0.6 | | | | | | - | 10 | DE | 2070 | pow_combustion_cc_chp_ccs_biomass_1 | | | 0.8 | 30 | 600 | 0.4 | 0.6 | | | | | | - | 11 | DE | 2021 | pow_geothermal_st_1 | | 0 | | | | | | | | | | | - | 12 | DE | 2024 | pow_geothermal_st_1 | | 0 | | | | | | | | | | | - | 13 | DE | 2027 | pow_geothermal_st_1 | | 0 | | | | | | | | | | | - | 14 | DE | 2030 | pow_geothermal_st_1 | | 0 | | | | | | | | | | | - | 15 | DE | 2035 | pow_geothermal_st_1 | | 0 | | | | | | | | | | | - | 16 | DE | 2040 | pow_geothermal_st_1 | | 0 | | | | | | | | | | | - | 17 | DE | 2045 | pow_geothermal_st_1 | | | 0.4 | 25 | 800 | | | | | | | | - | 18 | DE | 2050 | pow_geothermal_st_1 | | | 0.4 | 30 | 800 | | | | | | | | - | 19 | DE | 2060 | pow_geothermal_st_1 | | | 0.4 | 30 | 800 | | | | | | | | - | 20 | DE | 2070 | pow_geothermal_st_1 | | | 0.4 | 30 | 600 | | | | | | | | - | 21 | DE | 2021 | pow_combustion_gt_hydrogen_0 | 3500 | | 0.6 | 20 | 500 | | | | | | | | - | 22 | DE | 2024 | pow_combustion_gt_hydrogen_0 | 3500 | | 0.6 | 20 | 500 | | | | | | | | - | 23 | DE | 2027 | pow_combustion_gt_hydrogen_0 | 3500 | | 0.6 | 20 | 500 | | | | | | | | - | 24 | DE | 2030 | pow_combustion_gt_hydrogen_0 | 3300 | | 0.6 | 20 | 500 | | | | | | | | - | 25 | DE | 2035 | pow_combustion_gt_hydrogen_0 | 3000 | | 0.6 | 20 | 500 | | | | | | | | - | 26 | DE | 2040 | pow_combustion_gt_hydrogen_0 | 2700 | | 0.6 | 20 | 500 | | | | | | | | - | 27 | DE | 2045 | pow_combustion_gt_hydrogen_0 | 1500 | | 0.6 | 20 | 500 | | | | | | | | - | 28 | DE | 2050 | pow_combustion_gt_hydrogen_0 | 200 | | 0.6 | 20 | 500 | | | | | | | | - | 29 | DE | 2060 | pow_combustion_gt_hydrogen_0 | 0 | | | | | | | | | | | | - | 30 | DE | 2070 | pow_combustion_gt_hydrogen_0 | 0 | | | | | | | | | | | | - ``` - - - === "Empty cells" - **Parameter values that do not exist for a given year, process and parameter combination have no relevance for a process.**

- Example: - ```python - | id | region | year | type | capacity_p_inst | - |----|--------|------|-------------------------------------|--------------------| - | 1 | DE | 2021 | pow_combustion_cc_chp_ccs_biomass_1 | | - | 2 | DE | 2024 | pow_combustion_cc_chp_ccs_biomass_1 | | - ``` - - **Exception**: Unrestricted bound parameters - - **Upper and lower bound paramters have empty cells if unrestricted**.
This convention was made to avoid - high or low dummy values for upper or lower bounds.

- In the example above, new capacity investments (`capacity_p_abs_new_max`) for the processes are not restricted:
- ```python - | id | region | year | type | capacity_p_abs_new_max | - |----|--------|------|--------------------------------------|------------------------| - | 5 | DE | 2035 | pow_combustion_cc_chp_ccs_biomassl_1 | | - | 6 | DE | 2040 | pow_combustion_cc_chp_ccs_biomassl_1 | | - | 7 | DE | 2045 | pow_combustion_cc_chp_ccs_biomassl_1 | | - | 8 | DE | 2050 | pow_combustion_cc_chp_ccs_biomassl_1 | | - | 9 | DE | 2060 | pow_combustion_cc_chp_ccs_biomassl_1 | | - | 10 | DE | 2070 | pow_combustion_cc_chp_ccs_biomassl_1 | | - | 17 | DE | 2045 | pow_geothermal_st_1 | | - | 18 | DE | 2050 | pow_geothermal_st_1 | | - | 19 | DE | 2060 | pow_geothermal_st_1 | | - | 20 | DE | 2070 | pow_geothermal_st_1 | | - ``` -
- **Other bounds parameters** - ```python - | SEDOS parameter name | Recommended unit | Description | - |--------------------------|--------------------|--------------------------------------------------------------------------------------------| - | capacity_p_abs_new_max | MW | Absolute upper bound on level of investment in new power output capacity for a period. | - | capacity_e_abs_new_max | MWh | Absolute upper bound on level of investment in new storage energy capacity for a period. | - | capacity_w_abs_new_max | Mt | Absolute upper bound on level of investment in new weight capacity for a period. | - | activity_bound_min | Mt/year | Lower bound on the activity level of a process. | - | activity_bound_fix | Mt/year | Fix bound on the activity level of a process. | - | activity_bound_max | Mt/year | Upper bound on the activity level of a process. | - | demand_timeseries_lower | MWh, pkm, tkm | Lower bound for demand timeseries. | - | demand_timeseries_upper | MWh, pkm, tkm | Upper bound for demand timeseries. | - ``` - - === "Value 0" - **The value is actually zero for a given year, process and parameter.**

- Example: Existing capacity for `pow_combustion_gt_hydrogen_0` in 2060 is zero.
- ```python - | id | region | year | type | capacity_p_inst | - |----|--------|------|--------------------------------------|--------------------| - | 29 | DE | 2060 | pow_combustion_gt_hydrogen_0 | 0 | - ``` - -??? note "Over specification of processes" - - **Example table**:
- ```python - | id | region | year | type | capacity_p_inst | capacity_p_abs_new_max | conversion_factor_sec_elec | lifetime | cost_inv_capacity_p | cb_coefficient | cv_coefficient | bandwidth_type | version | method | source | comment | | - |----|--------|----------|--------|----------------------------------------|------------------------|----------------------------|------------------------------|---------------------|-----------------------|------------------|------------------|------------------|-----------|----------|----------|-----------| - | | 1 | DE | 2021 | pow_combustion_cc_chp_ccs_biomass_1 | | 0 | | | | | | | | | | | - | | 2 | DE | 2024 | pow_combustion_cc_chp_ccs_biomass_1 | | 0 | | | | | | | | | | | - | | 3 | DE | 2027 | pow_combustion_cc_chp_ccs_biomass_1 | | 0 | | | | | | | | | | | - | | 4 | DE | 2030 | pow_combustion_cc_chp_ccs_biomass_1 | | 0 | | | | | | | | | | | - | | 5 | DE | 2035 | pow_combustion_cc_chp_ccs_biomass_1 | | | 0.8 | 25 | 1000 | 0.4 | 0.6 | | | | | | - | | 6 | DE | 2040 | pow_combustion_cc_chp_ccs_biomass_1 | | | 0.8 | 25 | 1000 | 0.4 | 0.6 | | | | | | - | | 7 | DE | 2045 | pow_combustion_cc_chp_ccs_biomass_1 | | | 0.8 | 25 | 800 | 0.4 | 0.6 | | | | | | - | | 8 | DE | 2050 | pow_combustion_cc_chp_ccs_biomass_1 | | | 0.8 | 30 | 800 | 0.4 | 0.6 | | | | | | - | | 9 | DE | 2060 | pow_combustion_cc_chp_ccs_biomass_1 | | | 0.8 | 30 | 800 | 0.4 | 0.6 | | | | | | - | | 10 | DE | 2070 | pow_combustion_cc_chp_ccs_biomass_1 | | | 0.8 | 30 | 600 | 0.4 | 0.6 | | | | | | - | | 11 | DE | 2021 | pow_geothermal_st_1 | | 0 | | | | | | | | | | | - | | 12 | DE | 2024 | pow_geothermal_st_1 | | 0 | | | | | | | | | | | - | | 13 | DE | 2027 | pow_geothermal_st_1 | | 0 | | | | | | | | | | | - | | 14 | DE | 2030 | pow_geothermal_st_1 | | 0 | | | | | | | | | | | - | | 15 | DE | 2035 | pow_geothermal_st_1 | | 0 | | | | | | | | | | | - | | 16 | DE | 2040 | pow_geothermal_st_1 | | 0 | | | | | | | | | | | - | | 17 | DE | 2045 | pow_geothermal_st_1 | | | 0.4 | 25 | 800 | | | | | | | | - | | 18 | DE | 2050 | pow_geothermal_st_1 | | | 0.4 | 30 | 800 | | | | | | | | - | | 19 | DE | 2060 | pow_geothermal_st_1 | | | 0.4 | 30 | 800 | | | | | | | | - | | 20 | DE | 2070 | pow_geothermal_st_1 | | | 0.4 | 30 | 600 | | | | | | | | - | | 21 | DE | 2021 | pow_combustion_gt_hydrogen_0 | 3500 | | 0.6 | 20 | 500 | | | | | | | | - | | 22 | DE | 2024 | pow_combustion_gt_hydrogen_0 | 3500 | | 0.6 | 20 | 500 | | | | | | | | - | | 23 | DE | 2027 | pow_combustion_gt_hydrogen_0 | 3500 | | 0.6 | 20 | 500 | | | | | | | | - | | 24 | DE | 2030 | pow_combustion_gt_hydrogen_0 | 3300 | | 0.6 | 20 | 500 | | | | | | | | - | | 25 | DE | 2035 | pow_combustion_gt_hydrogen_0 | 3000 | | 0.6 | 20 | 500 | | | | | | | | - | | 26 | DE | 2040 | pow_combustion_gt_hydrogen_0 | 2700 | | 0.6 | 20 | 500 | | | | | | | | - | | 27 | DE | 2045 | pow_combustion_gt_hydrogen_0 | 1500 | | 0.6 | 20 | 500 | | | | | | | | - | | 28 | DE | 2050 | pow_combustion_gt_hydrogen_0 | 200 | | 0.6 | 20 | 500 | | | | | | | | - | | 29 | DE | 2060 | pow_combustion_gt_hydrogen_0 | 0 | | | | | | | | | | | | - | | 30 | DE | 2070 | pow_combustion_gt_hydrogen_0 | 0 | | | | | | | | | | | | - ``` - - To avoid ambiguities in the data, the processes are specified as precisely as possible.
This means, for - example, for investment processes all years are specified in the data, even if an investment process is only - available from later years, e.g 2035, as opposed to missing rows for 2021, 2024, 2027 and 2030.
- To avoid data misinterpretation, the techno-economic parameter values for 2021, 2024, 2027 and 2030 are empty, - since the process does not exist yet in such years. -
- ```python - | id | region | year | type | capacity_p_inst | capacity_p_abs_new_max | conversion_factor_sec_elec | lifetime | cost_inv_capacity_p | cb_coefficient | cv_coefficient | bandwidth_type | version | method | source | comment | | - |----|--------|----------|--------|----------------------------------------|------------------------|----------------------------|------------------------------|---------------------|-----------------------|------------------|------------------|------------------|-----------|----------|----------|-----------| - | | 1 | DE | 2021 | pow_combustion_cc_chp_ccs_biomass_1 | | 0 | | | | | | | | | | | - | | 2 | DE | 2024 | pow_combustion_cc_chp_ccs_biomass_1 | | 0 | | | | | | | | | | | - | | 3 | DE | 2027 | pow_combustion_cc_chp_ccs_biomass_1 | | 0 | | | | | | | | | | | - | | 4 | DE | 2030 | pow_combustion_cc_chp_ccs_biomass_1 | | 0 | | | | | | | | | | | - | | 5 | DE | 2035 | pow_combustion_cc_chp_ccs_biomass_1 | | | 0.8 | 25 | 1000 | 0.4 | 0.6 | | | | | | - | | 6 | DE | 2040 | pow_combustion_cc_chp_ccs_biomass_1 | | | 0.8 | 25 | 1000 | 0.4 | 0.6 | | | | | | - | | 7 | DE | 2045 | pow_combustion_cc_chp_ccs_biomass_1 | | | 0.8 | 25 | 800 | 0.4 | 0.6 | | | | | | - | | 8 | DE | 2050 | pow_combustion_cc_chp_ccs_biomass_1 | | | 0.8 | 30 | 800 | 0.4 | 0.6 | | | | | | - | | 9 | DE | 2060 | pow_combustion_cc_chp_ccs_biomass_1 | | | 0.8 | 30 | 800 | 0.4 | 0.6 | | | | | | - | | 10 | DE | 2070 | pow_combustion_cc_chp_ccs_biomass_1 | | | 0.8 | 30 | 600 | 0.4 | 0.6 | | | | | | - ``` - - Conversely, existing capacities are explicitly declared as 0 as soon as they are no longer in the system, as - opposed to missing rows for 2060 and 2070.
- To avoid data misinterpretation, the techno-economic parameter values for 2060 and 2070 are empty, - since the process does not exist anymore in such years. -
- ```python - | id | region | year | type | capacity_p_inst | capacity_p_abs_new_max | conversion_factor_sec_elec | lifetime | cost_inv_capacity_p | cb_coefficient | cv_coefficient | bandwidth_type | version | method | source | comment | | - |----|--------|----------|--------|----------------------------------------|------------------------|----------------------------|------------------------------|---------------------|-----------------------|------------------|------------------|------------------|-----------|----------|----------|-----------| - | | 21 | DE | 2021 | pow_combustion_gt_hydrogen_0 | 3500 | | 0.6 | 20 | 500 | | | | | | | | - | | 22 | DE | 2024 | pow_combustion_gt_hydrogen_0 | 3500 | | 0.6 | 20 | 500 | | | | | | | | - | | 23 | DE | 2027 | pow_combustion_gt_hydrogen_0 | 3500 | | 0.6 | 20 | 500 | | | | | | | | - | | 24 | DE | 2030 | pow_combustion_gt_hydrogen_0 | 3300 | | 0.6 | 20 | 500 | | | | | | | | - | | 25 | DE | 2035 | pow_combustion_gt_hydrogen_0 | 3000 | | 0.6 | 20 | 500 | | | | | | | | - | | 26 | DE | 2040 | pow_combustion_gt_hydrogen_0 | 2700 | | 0.6 | 20 | 500 | | | | | | | | - | | 27 | DE | 2045 | pow_combustion_gt_hydrogen_0 | 1500 | | 0.6 | 20 | 500 | | | | | | | | - | | 28 | DE | 2050 | pow_combustion_gt_hydrogen_0 | 200 | | 0.6 | 20 | 500 | | | | | | | | - | | 29 | DE | 2060 | pow_combustion_gt_hydrogen_0 | 0 | | | | | | | | | | | | - | | 30 | DE | 2070 | pow_combustion_gt_hydrogen_0 | 0 | | | | | | | | | | | | - ``` -
- - - -## Units - -| Symbol | Name | Range | Description | -|-----|----------|---------|---------------------------------------------------| -| `%` | `Percent` | [0,100] | A number or ratio expressed as a fraction of 100. | - - diff --git a/docs/data_requirements/nomenclature.md b/docs/data_requirements/nomenclature.md deleted file mode 100644 index d8e8b11..0000000 --- a/docs/data_requirements/nomenclature.md +++ /dev/null @@ -1,3 +0,0 @@ -# Process - -# Inputs and outputs \ No newline at end of file diff --git a/docs/data_requirements/input_data.md b/docs/developer/data_requirements/input_data.md similarity index 100% rename from docs/data_requirements/input_data.md rename to docs/developer/data_requirements/input_data.md diff --git a/docs/data_requirements/licensing.md b/docs/developer/data_requirements/licensing.md similarity index 98% rename from docs/data_requirements/licensing.md rename to docs/developer/data_requirements/licensing.md index 486e636..4df532c 100644 --- a/docs/data_requirements/licensing.md +++ b/docs/developer/data_requirements/licensing.md @@ -1,142 +1,142 @@ -# Data Licencing - -In the SEDOS project, Open Data is one of the main criteria for developing the Reference Energy System (RES) database. -Open Data implies adequate licencing as a legal requirement, hence why this section aims to bring you up to speed regarding the nitty-gritty of licencing. -By the end of this section, you'll be able to licence your input data adequately. - -## Suitable data licences in SEDOS - -??? note "How to document licences in OEMetadata?" - - - If your data set has a licence, follow this example.
-
- For example: - - ``` - { - "sources": [ - { - "title": "OEDatamodel-parameter", - "description": "Parameter data model for secondary input scalars and timeseries", - "path": "https://github.com/sedos-project/oedatamodel/tree/main/oedatamodel-parameter", - "licenses": [ - { - "name": "CC0-1.0", - "title": "Creative Commons Zero v1.0 Universal", - "path": "https://creativecommons.org/publicdomain/zero/1.0/legalcode", - "instruction": "You are free: To Share, To Create, To Adapt", - "attribution": null - } - ] - }, - { - "title": "Code exposed: Review of five open-source frameworks for modeling renewable energy systems", - "description": "Energy system modeling is a commonly used method to provide policy recommendations and insight to transformation pathways of energy systems. However, the low open-source availability of the frameworks in practice often leads to low interpretability and transparency of energy modeling system configurations. The configuration of an energy model entails how its system components, such as power plants, storage systems and grids operate, and which parameters are used to define them. In order to understand the impact of different model configurations and working principles on the model output, a thorough comparison between various modeling frameworks is necessary. This work thereby consists of a comparison of five open-source energy system modeling frameworks (OS-ESMFs) oemof, GENeSYS-MOD, Balmorel, urbs and GENESYS-2 on the mathematical level and spotlights selected methodological differences in renewable energy system modeling. The comparison shows diversity in the complexity of selected system components and helps to define the best use-cases and scales of application for each framework. Impacts of modeled features on the results were demonstrated by implementing two harmonized scenarios depicting the German electricity system using each framework. While similar model results were obtained for both scenarios, some differences were present, especially in the long-term expansion planning model. Some of those differences could be traced back to the identified modeling differences.", - "path": "https://doi.org/10.1016/j.rser.2022.112272", - "licenses": [ - { - "name": "CC-BY-4.0", - "title": "Creative Commons Attribution 4.0 International", - "path": "https://creativecommons.org/licenses/by/4.0/", - "instruction": "You are free: To Share, To Create, To Adapt", - "attribution": null - } - ] - } - - ] - } - ``` - -1. For the data collection in WP3-8, you should choose data published under one of the listed licences below. -2. Add the licence spdx-id and/or correct attribution for respective source in the metadata ([oem-key 12.4.1-5](https://github.com/OpenEnergyPlatform/oemetadata/blob/develop/metadata/latest/metadata_key_description.md#source-keys)). -3. If your data is published under an open licence not listed below, please get in touch with *datenzentrum@rl-institut.de.* -> _Please note:_ non-conformant clauses such as
NC (non commercial) and ND (no derivates)
are **NOT** Open Data licences and must not be used. - -**Public Domain:** All rights granted. - -- [CC0-1.0](https://creativecommons.org/licenses/by/4.0/legalcode) | recommended -- [PDDL-1.0](https://opendatacommons.org/licenses/pddl/1-0/) | recommended -- [dl-de/zero-2-0](https://www.govdata.de/dl-de/zero-2-0) | granted by German government -- [CC-PDDC](https://creativecommons.org/licenses/publicdomain/) | not recommended - -**Attribution/Permissive:** Use rights and relicensing granted. Proprietisation is possible. Correct attribution is required (see licence link). - -- [CC-BY-4.0](https://creativecommons.org/licenses/by/4.0/legalcode) | recommended -- [ODC-By-1.0](https://opendatacommons.org/licenses/by/1-0/) | recommended -- [CDLA-Permissive-1.0](https://cdla.io/permissive-1-0/) -- [DL-DE-BY-2.0](https://www.govdata.de/dl-de/by-2-0) | granted only by the German government -- [GeoZG ](https://www.gesetze-im-internet.de/geozg/index.html) (no official spdx-id) | granted by German government | - -- [GeoNutzV](https://www.gesetze-im-internet.de/geonutzv/index.html) | granted by German government - -**Share-alike (Copyleft):** Use rights granted, propitiation impossible. - -- [ODbL-1.0](https://opendatacommons.org/licenses/odbl/1-0/) | recommended -- [CC-BY-SA-4.0](https://creativecommons.org/licenses/by-sa/4.0/legalcode) | not recommended - -For further information on licences, see
-* [OEP Tutorial on Open-Data Licences](https://openenergy-platform.org/tutorials/jupyter/tutorial_open-data-licenses/)
-* [ifrOSS GitHub](https://github.com/ifrOSS/ifrOSS/blob/master/OpenDataLicenses.md)
-* [Open Definition](https://opendefinition.org/licenses/) - -## Missing licence? - Using data without an open licence - -??? note "How to indicate missing licences in OEMetadata?" - - - If your data set has no licence, please **indicate this in the attribution**, using this pattern:
- `"attribution": "copyright. AuthorSurname1, AuthorSurname2, AuthorSurname3 OR Institut1,Institut2,Institut3. Year"`
-
- For example: - - ``` - { - "sources": [ - { - "title": "Impact of electric vehicles on a future renewable energy-based power system in Europe with a focus on Germany", - "description": "Paper on novel modelling approach comprising a detailed representation of electric vehicles based on real driving patterns and interactions between the power systems of Germany and other European regions.", - "path": "https://doi.org/10.1002/er.4056", - "licenses": [ - { - "name": null, - "title": null, - "path": null, - "instruction": null, - "attribution": "copyright. Miller, Heinz, Rutrecht. 2021" - } - ] - }, - { - "title": "Mobilität in Deutschland: Tabellarische Grundauswertung", - "description": "Mobilität in Deutschland (MiD) ist eine bundesweite Befragung von Haushalten zu ihrem alltäglichen Verkehrsverhalten im Auftrag des Bundesministeriums für Digitales und Verkehr (BMDV).", - "path": "https://bmdv.bund.de/SharedDocs/DE/Anlage/G/mid-2017-tabellenband.pdf?__blob=publicationFile", - "licenses": [ - { - "name": null, - "title": null, - "path": null, - "instruction": null, - "attribution": "copyright. Reiner Lemoine Institut, RKI. 1991" - } - ] - } - ] - } - ``` - -If you want to use a data set without a licence or an open data licence, try the following steps: - -1. **Contact the authors of the data set** and ask for either the licence or send a request for user-and relicensing - rights. Templates in DE and EN can be found **[here](https://bwsyncandshare.kit.edu/f/2369369032>)**. Please **add - *datenzentrum@rl-institut.de* to the CC of the Email** and **store positive response [here](https://bwsyncandshare.kit.edu/f/2369341357)**.

-2. **You can use the unlicensed data if you only extract a considerable small subset of a larger data set.**
- - - In Germany, the [Act on Copyright and Related Rights / Gesetz über Urheberrecht und verwandte Schutzrechte - (Urheberrechtsgesetz)](https://www.gesetze-im-internet.de/englisch_urhg/englisch_urhg.html) contains the paragraph [60c Scientific research (Copyright Act, § 60c Scientific Research)](https://www.gesetze-im-internet.de/englisch_urhg/englisch_urhg.html#p0479) that provides provisions specifically for non-commercial scientific research. According to this law:

- * Up to **15 percent of a work** may be reproduced, distributed, and made publicly accessible **for** the purpose of - **non-commercial scientific research**. This can be done for a specific group of individuals conducting their own scientific research, as well as for individual third parties for the purpose of assessing the quality of scientific research. - * Up to 75 percent of a work may be reproduced for one's own scientific research. - - +# Data Licencing + +In the SEDOS project, Open Data is one of the main criteria for developing the Reference Energy System (RES) database. +Open Data implies adequate licencing as a legal requirement, hence why this section aims to bring you up to speed regarding the nitty-gritty of licencing. +By the end of this section, you'll be able to licence your input data adequately. + +## Suitable data licences in SEDOS + +??? note "How to document licences in OEMetadata?" + + + If your data set has a licence, follow this example.
+
+ For example: + + ``` + { + "sources": [ + { + "title": "OEDatamodel-parameter", + "description": "Parameter data model for secondary input scalars and timeseries", + "path": "https://github.com/sedos-project/oedatamodel/tree/main/oedatamodel-parameter", + "licenses": [ + { + "name": "CC0-1.0", + "title": "Creative Commons Zero v1.0 Universal", + "path": "https://creativecommons.org/publicdomain/zero/1.0/legalcode", + "instruction": "You are free: To Share, To Create, To Adapt", + "attribution": null + } + ] + }, + { + "title": "Code exposed: Review of five open-source frameworks for modeling renewable energy systems", + "description": "Energy system modeling is a commonly used method to provide policy recommendations and insight to transformation pathways of energy systems. However, the low open-source availability of the frameworks in practice often leads to low interpretability and transparency of energy modeling system configurations. The configuration of an energy model entails how its system components, such as power plants, storage systems and grids operate, and which parameters are used to define them. In order to understand the impact of different model configurations and working principles on the model output, a thorough comparison between various modeling frameworks is necessary. This work thereby consists of a comparison of five open-source energy system modeling frameworks (OS-ESMFs) oemof, GENeSYS-MOD, Balmorel, urbs and GENESYS-2 on the mathematical level and spotlights selected methodological differences in renewable energy system modeling. The comparison shows diversity in the complexity of selected system components and helps to define the best use-cases and scales of application for each framework. Impacts of modeled features on the results were demonstrated by implementing two harmonized scenarios depicting the German electricity system using each framework. While similar model results were obtained for both scenarios, some differences were present, especially in the long-term expansion planning model. Some of those differences could be traced back to the identified modeling differences.", + "path": "https://doi.org/10.1016/j.rser.2022.112272", + "licenses": [ + { + "name": "CC-BY-4.0", + "title": "Creative Commons Attribution 4.0 International", + "path": "https://creativecommons.org/licenses/by/4.0/", + "instruction": "You are free: To Share, To Create, To Adapt", + "attribution": null + } + ] + } + + ] + } + ``` + +1. For the data collection in WP3-8, you should choose data published under one of the listed licences below. +2. Add the licence spdx-id and/or correct attribution for respective source in the metadata ([oem-key 12.4.1-5](https://github.com/OpenEnergyPlatform/oemetadata/blob/develop/metadata/latest/metadata_key_description.md#source-keys)). +3. If your data is published under an open licence not listed below, please get in touch with *datenzentrum@rl-institut.de.* +> _Please note:_ non-conformant clauses such as
NC (non commercial) and ND (no derivates)
are **NOT** Open Data licences and must not be used. + +**Public Domain:** All rights granted. + +- [CC0-1.0](https://creativecommons.org/licenses/by/4.0/legalcode) | recommended +- [PDDL-1.0](https://opendatacommons.org/licenses/pddl/1-0/) | recommended +- [dl-de/zero-2-0](https://www.govdata.de/dl-de/zero-2-0) | granted by German government +- [CC-PDDC](https://creativecommons.org/licenses/publicdomain/) | not recommended + +**Attribution/Permissive:** Use rights and relicensing granted. Proprietisation is possible. Correct attribution is required (see licence link). + +- [CC-BY-4.0](https://creativecommons.org/licenses/by/4.0/legalcode) | recommended +- [ODC-By-1.0](https://opendatacommons.org/licenses/by/1-0/) | recommended +- [CDLA-Permissive-1.0](https://cdla.io/permissive-1-0/) +- [DL-DE-BY-2.0](https://www.govdata.de/dl-de/by-2-0) | granted only by the German government +- [GeoZG ](https://www.gesetze-im-internet.de/geozg/index.html) (no official spdx-id) | granted by German government | + +- [GeoNutzV](https://www.gesetze-im-internet.de/geonutzv/index.html) | granted by German government + +**Share-alike (Copyleft):** Use rights granted, propitiation impossible. + +- [ODbL-1.0](https://opendatacommons.org/licenses/odbl/1-0/) | recommended +- [CC-BY-SA-4.0](https://creativecommons.org/licenses/by-sa/4.0/legalcode) | not recommended + +For further information on licences, see
+* [OEP Tutorial on Open-Data Licences](https://openenergy-platform.org/tutorials/jupyter/tutorial_open-data-licenses/)
+* [ifrOSS GitHub](https://github.com/ifrOSS/ifrOSS/blob/master/OpenDataLicenses.md)
+* [Open Definition](https://opendefinition.org/licenses/) + +## Missing licence? - Using data without an open licence + +??? note "How to indicate missing licences in OEMetadata?" + + + If your data set has no licence, please **indicate this in the attribution**, using this pattern:
+ `"attribution": "copyright. AuthorSurname1, AuthorSurname2, AuthorSurname3 OR Institut1,Institut2,Institut3. Year"`
+
+ For example: + + ``` + { + "sources": [ + { + "title": "Impact of electric vehicles on a future renewable energy-based power system in Europe with a focus on Germany", + "description": "Paper on novel modelling approach comprising a detailed representation of electric vehicles based on real driving patterns and interactions between the power systems of Germany and other European regions.", + "path": "https://doi.org/10.1002/er.4056", + "licenses": [ + { + "name": null, + "title": null, + "path": null, + "instruction": null, + "attribution": "copyright. Miller, Heinz, Rutrecht. 2021" + } + ] + }, + { + "title": "Mobilität in Deutschland: Tabellarische Grundauswertung", + "description": "Mobilität in Deutschland (MiD) ist eine bundesweite Befragung von Haushalten zu ihrem alltäglichen Verkehrsverhalten im Auftrag des Bundesministeriums für Digitales und Verkehr (BMDV).", + "path": "https://bmdv.bund.de/SharedDocs/DE/Anlage/G/mid-2017-tabellenband.pdf?__blob=publicationFile", + "licenses": [ + { + "name": null, + "title": null, + "path": null, + "instruction": null, + "attribution": "copyright. Reiner Lemoine Institut, RKI. 1991" + } + ] + } + ] + } + ``` + +If you want to use a data set without a licence or an open data licence, try the following steps: + +1. **Contact the authors of the data set** and ask for either the licence or send a request for user-and relicensing + rights. Templates in DE and EN can be found **[here](https://bwsyncandshare.kit.edu/f/2369369032>)**. Please **add + *datenzentrum@rl-institut.de* to the CC of the Email** and **store positive response [here](https://bwsyncandshare.kit.edu/f/2369341357)**.

+2. **You can use the unlicensed data if you only extract a considerable small subset of a larger data set.**
+ + - In Germany, the [Act on Copyright and Related Rights / Gesetz über Urheberrecht und verwandte Schutzrechte + (Urheberrechtsgesetz)](https://www.gesetze-im-internet.de/englisch_urhg/englisch_urhg.html) contains the paragraph [60c Scientific research (Copyright Act, § 60c Scientific Research)](https://www.gesetze-im-internet.de/englisch_urhg/englisch_urhg.html#p0479) that provides provisions specifically for non-commercial scientific research. According to this law:

+ * Up to **15 percent of a work** may be reproduced, distributed, and made publicly accessible **for** the purpose of + **non-commercial scientific research**. This can be done for a specific group of individuals conducting their own scientific research, as well as for individual third parties for the purpose of assessing the quality of scientific research. + * Up to 75 percent of a work may be reproduced for one's own scientific research. + + diff --git a/docs/data_requirements/metadata.md b/docs/developer/data_requirements/metadata.md similarity index 100% rename from docs/data_requirements/metadata.md rename to docs/developer/data_requirements/metadata.md diff --git a/docs/data_requirements/ontology.md b/docs/developer/data_requirements/ontology.md similarity index 100% rename from docs/data_requirements/ontology.md rename to docs/developer/data_requirements/ontology.md diff --git a/docs/data_requirements/overview.md b/docs/developer/data_requirements/overview.md similarity index 97% rename from docs/data_requirements/overview.md rename to docs/developer/data_requirements/overview.md index 4c99ac6..c386405 100644 --- a/docs/data_requirements/overview.md +++ b/docs/developer/data_requirements/overview.md @@ -26,6 +26,6 @@ A generalized representation of a datapackage is shown in the figure below. A da * **metadata** - describing the structure of the datamodel, and providing context to the data. -![datapackage](../graphics/datapackage.jpg) +![datapackage](../../graphics/datapackage.jpg) diff --git a/docs/faq.md b/docs/developer/faq.md similarity index 99% rename from docs/faq.md rename to docs/developer/faq.md index 3a5174a..04ca81b 100644 --- a/docs/faq.md +++ b/docs/developer/faq.md @@ -91,7 +91,7 @@ This section centers around the data model usage. 1. ??? question "In which form should the sources be entered in the CSV tables?" **Answer:** Please set your bibtexkey as the following pattern:

- **[AP-number][author][year]**

+ **(AP-number)(author)(year)**

``` {'capacity_e_inst': '8Kraft2021b, 8ADAC2023', 'capacity_tra_connection_flex_max': '8Kraft2021b, 8ADAC2023', 'capacity_tra_vehicles_inst': '8S&PG2023', 'cost_fix_tra': '8Kraft2023, 8ADAC2023, 8ADAC2023b', 'cost_inv_tra': '8Kraft2021b, 8ADAC2023', 'cost_var': '8Kraft2023, 8ADAC2023, 8ADAC2023b', 'efficiency_sto_in': '8Keil2017', 'efficiency_sto_out': '8Keil2017', 'efficiency_tra_electrical': '8Kraft2021b, 8ADAC2023', 'efficiency_tra_g2v': '8RuckeSchoe2022', 'efficiency_tra_v2g': '8RuckeSchoe2022', 'lifetime': '8Kraft2011', 'mileage': '8BaumeHautz2014, 8Progn2021', 'occupancy_rate': '8infas2018, 8AdolfBalze2014', 'sto_init': 'ownAssumption', 'sto_self_discharge': '8XuBehre2023'} ``` diff --git a/docs/how_to_contribute_data.md b/docs/developer/how_to_contribute_data.md similarity index 100% rename from docs/how_to_contribute_data.md rename to docs/developer/how_to_contribute_data.md diff --git a/docs/index.md b/docs/index.md index 77e1bc9..6e7ca6a 100644 --- a/docs/index.md +++ b/docs/index.md @@ -7,8 +7,8 @@ In the project, we aim to establish a streamlined data management process with a The documentation is structured in two main parts -1. [SEDOS-specific data requirements](./data_requirements/input_data.md) -2. [Instructions on how to contribute data](./how_to_contribute_data.md) +1. [SEDOS-specific data requirements](./developer/data_requirements/input_data.md) +2. [Instructions on how to contribute data](./developer/how_to_contribute_data.md) !!! question "Just here for the data?" diff --git a/docs/results.md b/docs/results.md deleted file mode 100644 index edd99fe..0000000 --- a/docs/results.md +++ /dev/null @@ -1 +0,0 @@ -The results and reference energy system can be explored using the [dashboard](https://sedos.apps.rl-institut.de/). \ No newline at end of file diff --git a/docs/visitor/lastenheft.md b/docs/visitor/lastenheft.md new file mode 100644 index 0000000..c32a970 --- /dev/null +++ b/docs/visitor/lastenheft.md @@ -0,0 +1 @@ +# Preface \ No newline at end of file diff --git a/docs/visitor/nomenclature.md b/docs/visitor/nomenclature.md new file mode 100644 index 0000000..24c5ee9 --- /dev/null +++ b/docs/visitor/nomenclature.md @@ -0,0 +1 @@ +# Nomenclature \ No newline at end of file diff --git a/docs/visitor/results.md b/docs/visitor/results.md new file mode 100644 index 0000000..c9befc9 --- /dev/null +++ b/docs/visitor/results.md @@ -0,0 +1,3 @@ +The results and reference energy system can be explored using the [dashboard](https://sedos.apps.rl-institut.de/). + + \ No newline at end of file diff --git a/docs/scenarios.md b/docs/visitor/scenarios.md similarity index 99% rename from docs/scenarios.md rename to docs/visitor/scenarios.md index ee59950..5403d16 100644 --- a/docs/scenarios.md +++ b/docs/visitor/scenarios.md @@ -8,7 +8,6 @@ More information will follow. ## Basisszenario ToKo – Technologieoffen & Kostenoptimal - ## Scenario variation 1. Reduzierte Importabhängigkeit bei fossilem Gas (RIGa) ## Scenario variation 2. Sektorintegration (SIN) \ No newline at end of file diff --git a/mkdocs.yml b/mkdocs.yml index 6794c3c..ea09f96 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -1,21 +1,25 @@ site_name: SEDOS Project + nav: - - '(Meta)data requirements': - - 'Overview': 'data_requirements/overview.md' - - 'Data': 'data_requirements/input_data.md' - # - 'Nomenclature': 'data_requirements/nomenclature.md' - - 'Metadata': 'data_requirements/metadata.md' - - 'Ontology': 'data_requirements/ontology.md' - - 'Licensing': 'data_requirements/licensing.md' - - 'How to contribute data?': 'how_to_contribute_data.md' - - 'FAQ': 'faq.md' - - 'Data preface': 'data_preface.md' - - 'Scenarios': 'scenarios.md' - - 'Results': 'results.md' + - Home: index.md + - Developer: + - '(Meta)data requirements': + - 'Overview': 'developer/data_requirements/overview.md' + - 'Data': 'developer/data_requirements/input_data.md' + - 'Metadata': 'developer/data_requirements/metadata.md' + - 'Ontology': 'developer/data_requirements/ontology.md' + - 'Licensing': 'developer/data_requirements/licensing.md' + - 'How to contribute data?': 'developer/how_to_contribute_data.md' + - 'Data preface': 'developer/data_preface.md' + - 'FAQ': 'developer/faq.md' + - Visitor: + - 'Preface': 'visitor/lastenheft.md' + - 'Scenarios': 'visitor/scenarios.md' + - 'Results': 'visitor/results.md' + - 'Nomenclature': 'visitor/nomenclature.md' - 'Glossary': 'glossary.md' - markdown_extensions: - toc: permalink: True From c557d16ac0bc2af9c4c412d1db2797ea5fb7d0f2 Mon Sep 17 00:00:00 2001 From: BeneharoRB Date: Wed, 19 Jun 2024 16:06:21 +0200 Subject: [PATCH 02/15] Add data preface --- docs/developer/data_preface.md | 428 +++++++++++++++++++++++++++++++++ 1 file changed, 428 insertions(+) create mode 100644 docs/developer/data_preface.md diff --git a/docs/developer/data_preface.md b/docs/developer/data_preface.md new file mode 100644 index 0000000..d99b946 --- /dev/null +++ b/docs/developer/data_preface.md @@ -0,0 +1,428 @@ +# Data preface for SEDOS developer + +The SEDOS Reference Dataset (SRD) entails technology data across five sectors (power, heat, PtX, industry, mobility) +and various aggregation levels. + +This *data preface* provides additional information about the syntax of parameters and units in SRD. +## Nomenclature + +**SEDOS sectors** + +| Sector abbreviation | Sector | SEDOS workpackage | +|---------------------|------------|-------------------| +| pow | Power | AP4 | +| hea | Heat | AP6 | +| x2x | Power to X | AP5 | +| ind | Industry | AP7 | +| tra | Transport | AP8 | + + +??? note "Existing and investment processes" + + + === "Existing processes" + Processes that were existing before the base year 2021 can be identified on their name. They end with `_0` +
+ Example: `pow_combustion_gt_hydrogen_0` + + === "Investment processes" + Processes that were not existing before the base year 2021 and that the model can invest in can be + identified on their name. They end with `_1` +
+ Example: `pow_combustion_cc_chp_ccs_biomass_1` + +## Data + +??? note "Information on special parameters" + + === "`conversion_factor_`" + Having many Multiple-Input-Multiple-Output (MIMO) processes in the model structure, efficiencies are considered with the parameter `conversion_factor`. + We use the same naming convention for all parameters that describe the ratios of inputs and outputs in relation to the primary commodity.
+ The primary commodity (conversion_factor = 1) is per default the first output of the process.
+ + For consistency please check that the calorific values (heating values) that your conversion factors are based on, are consistent with the + values defined in "calorific_values_SEDOS" in the supplementary files at the sharepoint.
+ + The TIMES adapter needs to convert the conversion factors into their parameter conventions and an automatic identification and naming of the commodity groups. + as required by the framework. + + === "`flow_share_min/max/fix`" + This parameter can be defined to bound flow shares within the commodity groups of MIMO processes that by default have flexible ratios.
+ e.g. for a hydrogen-ready gas turbine (that can either burn methane or h2 in the MIMO-process) the hydrogen flow for every + timestep could be restricted to a ratio of 0.3 with `flow_share_max=0.3`. + + === "`capacity_p_abs_new_max`" + + Growth rates of processes should be considered with `capacity_p_abs_new_max` or `capacity_e_abs_new_max` parameter. + It describes absolute upper bounds for the expansion of capacities per milestone year. Please consider the deviating + period lengths for different milestone years when you determine the upper bounds. + This parameter should be given for a process only if it is based on reasonable assumptions or data. + Please include its background in your AP specific documentation. The transport sector considers growth rates with the market shares. + + === "`wacc`" + + The weighted average cost of capital (wacc) gives the interest rate (%) of costs for capital after taxes. + As we follow a macro-economic approach in SEDOS it is globally defined for all technologies with a value of 2 percent. + Please link it to the `global_scalars` table as explained in the note `Linking data with foreign keys`. + +??? note "Parameter_Input-Output" + + The Parameter_Input-Output relations are important to link relevant flow-specific parameters to input or output commodities + of a MIMO process. Due to the high number of MIMO processes in our model structure we defined defaults for these relations:

+ **Cost parameters are directly related to the throughput power capacity based on the given primary commodity** + (first output of a process with conversion_factor = 1).

+ Moreover, the following parameters are per default directly derived from the parameter names in your uploaded data.
+ - `conversion_factor_`
+ - `flow_share_max_`
+ - `emission_factor__`
+ Please make sure that the names accurately fit to this schema. Otherwise, the data adapter will not recognize the + uploaded data and the relation of the parameters can not be defined.
+ + For exceptions to these defaults please use the "Parameter_Input-Output" sheet to clearly indicate that the parameter relations do not follow these defaults. + e.g. the investment costs of an electrolyzer that are defined in relation to the input power capacity. + +??? note "Monetary value" + + If not further specified the base year for the monatary value is 2021. + + If monatary conversion were performed, the following logic was applied:
+ _currency_A(year_x) -> currency_B(year_x) -> currency_B(year_z)_
+ e.g. USD2010 -> EUR2010 -> EUR2021
+ + For the conversion please use the provided table "monetary_conversion" in the supplementary files at the sharepoint. + The conversion is based on data from the ECB for the exchange rates and from the StBA for the harmonised index of consumer prices.
+ The original years of the sources can be documented in the method column - e.g. {`Investment costs`:`Conversion from USD2019`} + +??? note "Leap years" + + Leap years are considered in timeseries data by setting the timeindex_stop for **2024, 2040, 2060** to + the **30.12.**
The timesseries has only 8760 instead of 8784 timesteps (-> the 31.12 is missing). + + ```python + | id | region | type | timeindex_start | timeindex_stop | timeindex_resolution | exo_pkm_road_mcar | version | method | source | comment | + |------|----------|--------|-----------------------|-----------------------|------------------------|---------------------|-----------|----------|----------|-----------| + | 1 | DE | | 2021-01-01 00:00:00 | 2021-12-31 23:00:00 | 1h | [1,2,3,…,8760] | v1 | | | | + | 2 | DE | | 2024-01-01 00:00:00 | 2024-12-30 23:00:00 | 1h | [1,2,3,…,8760] | v1 | | | | + | 3 | DE | | 2027-01-01 00:00:00 | 2027-12-31 23:00:00 | 1h | [1,2,3,…,8760] | v1 | | | | + | 4 | DE | | 2030-01-01 00:00:00 | 2030-12-31 23:00:00 | 1h | [1,2,3,…,8760] | v1 | | | | + | 5 | DE | | 2035-01-01 00:00:00 | 2035-12-31 23:00:00 | 1h | [1,2,3,…,8760] | v1 | | | | + | 6 | DE | | 2040-01-01 00:00:00 | 2040-12-30 23:00:00 | 1h | [1,2,3,…,8760] | v1 | | | | + | 7 | DE | | 2045-01-01 00:00:00 | 2045-12-31 23:00:00 | 1h | [1,2,3,…,8760] | v1 | | | | + | 8 | DE | | 2050-01-01 00:00:00 | 2050-12-31 23:00:00 | 1h | [1,2,3,…,8760] | v1 | | | | + | 9 | DE | | 2060-01-01 00:00:00 | 2060-12-30 23:00:00 | 1h | [1,2,3,…,8760] | v1 | | | | + | 10 | DE | | 2070-01-01 00:00:00 | 2070-12-31 23:00:00 | 1h | [1,2,3,…,8760] | v1 | | | | + ``` + +??? note "Emission factors" + + The following emission types are considered: **co2, ch4 & n2o**.
+ The 100-year time horizon global warming potentials (GWP) relative to CO2 according to the fourth IPCC assessment report (AR4) are taken as suggested + by the UWB at the time of the definition in 2023: `gwp_ch4 : 25`, `gwp_n2o : 298`
+ + Whenever possible the assumed co2 emission factors should be consistent for same commodities across sectors.
+ **Therefore, we defined a global table `global_emission_factors`**.

+ These are defined based on the values from the National Inventory Report for the German Greenhouse Gas Inventory from 1990-2021 (NRI).
+ Please, link the emission factor column of the processes to this table and the correct column via a foreign key + as explained in the note below `Linking data with foreign keys`.
+ + Emission factors for ch4 and n2o are to be defined sector- or process-specific as they are more related to attributes such as firing temperature and humidity. + Therefore you can directly enter numbers in the respective emission column. If you still want to define ch4 values globally e.g. for similar processes, you can + add an extra column to the `global_emission_factors` adding <_ch4> or <_n2o> to the column names.
+ + If you need to aggregate emission factors from multiple fuels, please add a new column to the table and give it an appropriate name (e.g. waste_wood_wood_scraps_all). + Please indicate the different fuel emission factors as well as their share in the aggregation based on the assumed potentials in the metadata description of the column in the following format: `agg____`.
+ e.g. "description": "agg_30_waste_wood_wood_scraps_industry_70_waste_wood_wood_scraps_commercial_institutional" + + +??? note "Linking data with foreign keys" + + The general mapping structure is:
+ `.`
+ + The note below `Structure of energy demands` exemplifies how data in the SRD is linked via foreign keys.
+ The `tra_demand` table uses a foreign key mapping to the tables`tra_scalars` and `tra_timeseries`.

+ + +??? note "Structure of energy demands" + + Demands per sector are provided via three tables:
+ 1. `_scalars`
+ 2. `_timeseries`
+ 3. `_demand`
+ + The structure is exemplified on the transport sector below. + + === "`tra_scalars`" + The table collects all sector process-unspecific scalars.
+ Also the annual demands. Demand columns are named as the commodity (unit must be declared via metadata) + + ```python + | id | region | year | type | exo_pkm_road_mcar | exo_tkm_rail | exo_tkm_rail_short | exo_pkm_road_lcar | bandwidth_type | version | method | source | comment | + |----|--------|------|------|-------------------|--------------|--------------------|-------------------|----------------|---------|--------|--------|---------| + | 1 | DE | 2021 | | 34.4 | 100 | 1000 | 66 | | | | | | + | 2 | DE | 2024 | | 34.4 | 101 | 1001 | 67 | | | | | | + | 3 | DE | 2027 | | 34.4 | 102 | 1002 | 68 | | | | | | + | 4 | DE | 2030 | | 34.4 | 103 | 1003 | 69 | | | | | | + | 5 | DE | 2035 | | 34.4 | 104 | 1004 | 70 | | | | | | + | 6 | DE | 2040 | | 34.4 | 105 | 1005 | 71 | | | | | | + | 7 | DE | 2045 | | 34.4 | 106 | 1006 | 72 | | | | | | + | 8 | DE | 2050 | | 34.4 | 107 | 1007 | 73 | | | | | | + | 9 | DE | 2060 | | 34.4 | 108 | 1008 | 74 | | | | | | + | 10 | DE | 2070 | | 34.4 | 109 | 1009 | 75 | | | | | | + ``` + + + === "`tra_timeseries`" + The table collects all sector timeseries - also the demand timeseries.
+ Note that leap years are considered in time series data by setting the timeindex_stop for 2024, 2040, 2060 to the 30.12. + + ```python + | id | region | type | timeindex_start | timeindex_stop | timeindex_resolution | exo_pkm_road_mcar | exo_tkm_rail | exo_tkm_rail_short | exo_pkm_road_lcar | exo_pkm_road_xcar | version | method | source | comment | + |----|--------|------|---------------------|---------------------|----------------------|-------------------|----------------|--------------------|-------------------|-------------------|---------|--------|--------|---------| + | 1 | DE | | 2021-01-01 00:00:00 | 2021-12-31 23:00:00 | 1h | [1,2,3,…,8760] | [1,2,3,…,8760] | [1,2,3,…,8760] | [1,2,3,…,8760] | [1,2,3,…,8760] | v1 | | | | + | 2 | DE | | 2024-01-01 00:00:00 | 2024-12-30 23:00:00 | 1h | [1,2,3,…,8760] | [1,2,3,…,8760] | [1,2,3,…,8760] | [1,2,3,…,8760] | [1,2,3,…,8760] | v1 | | | | + | 3 | DE | | 2027-01-01 00:00:00 | 2027-12-31 23:00:00 | 1h | [1,2,3,…,8760] | [1,2,3,…,8760] | [1,2,3,…,8760] | [1,2,3,…,8760] | [1,2,3,…,8760] | v1 | | | | + | 4 | DE | | 2030-01-01 00:00:00 | 2030-12-31 23:00:00 | 1h | [1,2,3,…,8760] | [1,2,3,…,8760] | [1,2,3,…,8760] | [1,2,3,…,8760] | [1,2,3,…,8760] | v1 | | | | + | 5 | DE | | 2035-01-01 00:00:00 | 2035-12-31 23:00:00 | 1h | [1,2,3,…,8760] | [1,2,3,…,8760] | [1,2,3,…,8760] | [1,2,3,…,8760] | [1,2,3,…,8760] | v1 | | | | + | 6 | DE | | 2040-01-01 00:00:00 | 2040-12-30 23:00:00 | 1h | [1,2,3,…,8760] | [1,2,3,…,8760] | [1,2,3,…,8760] | [1,2,3,…,8760] | [1,2,3,…,8760] | v1 | | | | + | 7 | DE | | 2045-01-01 00:00:00 | 2045-12-31 23:00:00 | 1h | [1,2,3,…,8760] | [1,2,3,…,8760] | [1,2,3,…,8760] | [1,2,3,…,8760] | [1,2,3,…,8760] | v1 | | | | + | 8 | DE | | 2050-01-01 00:00:00 | 2050-12-31 23:00:00 | 1h | [1,2,3,…,8760] | [1,2,3,…,8760] | [1,2,3,…,8760] | [1,2,3,…,8760] | [1,2,3,…,8760] | v1 | | | | + | 9 | DE | | 2060-01-01 00:00:00 | 2060-12-30 23:00:00 | 1h | [1,2,3,…,8760] | [1,2,3,…,8760] | [1,2,3,…,8760] | [1,2,3,…,8760] | [1,2,3,…,8760] | v1 | | | | + | 10 | DE | | 2070-01-01 00:00:00 | 2070-12-31 23:00:00 | 1h | [1,2,3,…,8760] | [1,2,3,…,8760] | [1,2,3,…,8760] | [1,2,3,…,8760] | [1,2,3,…,8760] | v1 | | | | + ``` + + === "`tra_demand`" + In column "demand_annual" the scalar demand is mapped via foreign-key & also the units via the metadata from + the `tra_scalars` table. + The normalised timeseries are mapped in the "demand_timeseries_fixed" column via Foreign-key. + + ```python + | id | region | year | type | demand_annual | demand_timeseries_fixed | bandwidth_type | version | method | source | comment | + |----|--------|------|--------------------------------|-------------------------------|-----------------------------------|----------------|---------|--------|--------|---------| + | 1 | DE | 2021 | helper_sink_exo_tkm_rail | tra_scalars.exo_tkm_rail | tra_timeseries.exo_tkm_rail | | | | | | + | 2 | DE | 2024 | helper_sink_exo_tkm_rail | tra_scalars.exo_tkm_rail | tra_timeseries.exo_tkm_rail | | | | | | + | 3 | DE | 2027 | helper_sink_exo_tkm_rail | tra_scalars.exo_tkm_rail | tra_timeseries.exo_tkm_rail | | | | | | + | 4 | DE | 2030 | helper_sink_exo_tkm_rail | tra_scalars.exo_tkm_rail | tra_timeseries.exo_tkm_rail | | | | | | + | 5 | DE | 2035 | helper_sink_exo_tkm_rail | tra_scalars.exo_tkm_rail | tra_timeseries.exo_tkm_rail | | | | | | + | 6 | DE | 2040 | helper_sink_exo_tkm_rail | tra_scalars.exo_tkm_rail | tra_timeseries.exo_tkm_rail | | | | | | + | 7 | DE | 2045 | helper_sink_exo_tkm_rail | tra_scalars.exo_tkm_rail | tra_timeseries.exo_tkm_rail | | | | | | + | 8 | DE | 2050 | helper_sink_exo_tkm_rail | tra_scalars.exo_tkm_rail | tra_timeseries.exo_tkm_rail | | | | | | + | 9 | DE | 2060 | helper_sink_exo_tkm_rail | tra_scalars.exo_tkm_rail | tra_timeseries.exo_tkm_rail | | | | | | + | 10 | DE | 2070 | helper_sink_exo_tkm_rail | tra_scalars.exo_tkm_rail | tra_timeseries.exo_tkm_rail | | | | | | + | 11 | DE | 2021 | helper_sink_exo_tkm_rail_short | tra_scalars.exo_tkm_rail_short | tra_timeseries.exo_tkm_rail_short | | | | | | + | 12 | DE | 2024 | helper_sink_exo_tkm_rail_short | tra_scalars.exo_tkm_rail_short | tra_timeseries.exo_tkm_rail_short | | | | | | + | 13 | DE | 2027 | helper_sink_exo_tkm_rail_short | tra_scalars.exo_tkm_rail_short | tra_timeseries.exo_tkm_rail_short | | | | | | + | 14 | DE | 2030 | helper_sink_exo_tkm_rail_short | tra_scalars.exo_tkm_rail_short | tra_timeseries.exo_tkm_rail_short | | | | | | + | 15 | DE | 2035 | helper_sink_exo_tkm_rail_short | tra_scalars.exo_tkm_rail_short | tra_timeseries.exo_tkm_rail_short | | | | | | + | 16 | DE | 2040 | helper_sink_exo_tkm_rail_short | tra_scalars.exo_tkm_rail_short | tra_timeseries.exo_tkm_rail_short | | | | | | + | 17 | DE | 2045 | helper_sink_exo_tkm_rail_short | tra_scalars.exo_tkm_rail_short | tra_timeseries.exo_tkm_rail_short | | | | | | + | 18 | DE | 2050 | helper_sink_exo_tkm_rail_short | tra_scalars.exo_tkm_rail_short | tra_timeseries.exo_tkm_rail_short | | | | | | + | 19 | DE | 2060 | helper_sink_exo_tkm_rail_short | tra_scalars.exo_tkm_rail_short | tra_timeseries.exo_tkm_rail_short | | | | | | + | 20 | DE | 2070 | helper_sink_exo_tkm_rail_short | tra_scalars.exo_tkm_rail_short | tra_timeseries.exo_tkm_rail_short | | | | | | + | 21 | DE | 2021 | helper_sink_exo_pkm_road_mcar | tra_scalars.exo_pkm_road_mcar | tra_timeseries.exo_pkm_road_mcar | | | | | | + | 22 | DE | 2024 | helper_sink_exo_pkm_road_mcar | tra_scalars.exo_pkm_road_mcar | tra_timeseries.exo_pkm_road_mcar | | | | | | + | 23 | DE | 2027 | helper_sink_exo_pkm_road_mcar | tra_scalars.exo_pkm_road_mcar | tra_timeseries.exo_pkm_road_mcar | | | | | | + | 24 | DE | 2030 | helper_sink_exo_pkm_road_mcar | tra_scalars.exo_pkm_road_mcar | tra_timeseries.exo_pkm_road_mcar | | | | | | + | 25 | DE | 2035 | helper_sink_exo_pkm_road_mcar | tra_scalars.exo_pkm_road_mcar | tra_timeseries.exo_pkm_road_mcar | | | | | | + | 26 | DE | 2040 | helper_sink_exo_pkm_road_mcar | tra_scalars.exo_pkm_road_mcar | tra_timeseries.exo_pkm_road_mcar | | | | | | + | 27 | DE | 2045 | helper_sink_exo_pkm_road_mcar | tra_scalars.exo_pkm_road_mcar | tra_timeseries.exo_pkm_road_mcar | | | | | | + | 28 | DE | 2050 | helper_sink_exo_pkm_road_mcar | tra_scalars.exo_pkm_road_mcar | tra_timeseries.exo_pkm_road_mcar | | | | | | + | 29 | DE | 2060 | helper_sink_exo_pkm_road_mcar | tra_scalars.exo_pkm_road_mcar | tra_timeseries.exo_pkm_road_mcar | | | | | | + | 30 | DE | 2070 | helper_sink_exo_pkm_road_mcar | tra_scalars.exo_pkm_road_mcar | tra_timeseries.exo_pkm_road_mcar | | | | | | + | 31 | DE | 2021 | helper_sink_exo_pkm_road_lcar | tra_scalars.exo_pkm_road_lcar | tra_timeseries.exo_pkm_road_lcar | | | | | | + | 32 | DE | 2024 | helper_sink_exo_pkm_road_lcar | tra_scalars.exo_pkm_road_lcar | tra_timeseries.exo_pkm_road_lcar | | | | | | + | 33 | DE | 2027 | helper_sink_exo_pkm_road_lcar | tra_scalars.exo_pkm_road_lcar | tra_timeseries.exo_pkm_road_lcar | | | | | | + | 34 | DE | 2030 | helper_sink_exo_pkm_road_lcar | tra_scalars.exo_pkm_road_lcar | tra_timeseries.exo_pkm_road_lcar | | | | | | + | 35 | DE | 2035 | helper_sink_exo_pkm_road_lcar | tra_scalars.exo_pkm_road_lcar | tra_timeseries.exo_pkm_road_lcar | | | | | | + | 36 | DE | 2040 | helper_sink_exo_pkm_road_lcar | tra_scalars.exo_pkm_road_lcar | tra_timeseries.exo_pkm_road_lcar | | | | | | + | 37 | DE | 2045 | helper_sink_exo_pkm_road_lcar | tra_scalars.exo_pkm_road_lcar | tra_timeseries.exo_pkm_road_lcar | | | | | | + | 38 | DE | 2050 | helper_sink_exo_pkm_road_lcar | tra_scalars.exo_pkm_road_lcar | tra_timeseries.exo_pkm_road_lcar | | | | | | + | 39 | DE | 2060 | helper_sink_exo_pkm_road_lcar | tra_scalars.exo_pkm_road_lcar | tra_timeseries.exo_pkm_road_lcar | | | | | | + | 40 | DE | 2070 | helper_sink_exo_pkm_road_lcar | tra_scalars.exo_pkm_road_lcar | tra_timeseries.exo_pkm_road_lcar | | | | | | + ``` + + + +??? note "Empty cells and value 0" + + **Example table**:
+ ```python + | id | region | year | type | capacity_p_inst | capacity_p_abs_new_max | conversion_factor_sec_elec | lifetime | cost_inv_capacity_p | cb_coefficient | cv_coefficient | bandwidth_type | version | method | source | comment | + |----|--------|------|------|-------------------------------------|------------------------|----------------------------|----------|---------------------|----------------|----------------|----------------|---------|--------|--------|---------| + | 1 | DE | 2021 | pow_combustion_cc_chp_ccs_biomass_1 | | 0 | | | | | | | | | | | + | 2 | DE | 2024 | pow_combustion_cc_chp_ccs_biomass_1 | | 0 | | | | | | | | | | | + | 3 | DE | 2027 | pow_combustion_cc_chp_ccs_biomass_1 | | 0 | | | | | | | | | | | + | 4 | DE | 2030 | pow_combustion_cc_chp_ccs_biomass_1 | | 0 | | | | | | | | | | | + | 5 | DE | 2035 | pow_combustion_cc_chp_ccs_biomass_1 | | | 0.8 | 25 | 1000 | 0.4 | 0.6 | | | | | | + | 6 | DE | 2040 | pow_combustion_cc_chp_ccs_biomass_1 | | | 0.8 | 25 | 1000 | 0.4 | 0.6 | | | | | | + | 7 | DE | 2045 | pow_combustion_cc_chp_ccs_biomass_1 | | | 0.8 | 25 | 800 | 0.4 | 0.6 | | | | | | + | 8 | DE | 2050 | pow_combustion_cc_chp_ccs_biomass_1 | | | 0.8 | 30 | 800 | 0.4 | 0.6 | | | | | | + | 9 | DE | 2060 | pow_combustion_cc_chp_ccs_biomass_1 | | | 0.8 | 30 | 800 | 0.4 | 0.6 | | | | | | + | 10 | DE | 2070 | pow_combustion_cc_chp_ccs_biomass_1 | | | 0.8 | 30 | 600 | 0.4 | 0.6 | | | | | | + | 11 | DE | 2021 | pow_geothermal_st_1 | | 0 | | | | | | | | | | | + | 12 | DE | 2024 | pow_geothermal_st_1 | | 0 | | | | | | | | | | | + | 13 | DE | 2027 | pow_geothermal_st_1 | | 0 | | | | | | | | | | | + | 14 | DE | 2030 | pow_geothermal_st_1 | | 0 | | | | | | | | | | | + | 15 | DE | 2035 | pow_geothermal_st_1 | | 0 | | | | | | | | | | | + | 16 | DE | 2040 | pow_geothermal_st_1 | | 0 | | | | | | | | | | | + | 17 | DE | 2045 | pow_geothermal_st_1 | | | 0.4 | 25 | 800 | | | | | | | | + | 18 | DE | 2050 | pow_geothermal_st_1 | | | 0.4 | 30 | 800 | | | | | | | | + | 19 | DE | 2060 | pow_geothermal_st_1 | | | 0.4 | 30 | 800 | | | | | | | | + | 20 | DE | 2070 | pow_geothermal_st_1 | | | 0.4 | 30 | 600 | | | | | | | | + | 21 | DE | 2021 | pow_combustion_gt_hydrogen_0 | 3500 | | 0.6 | 20 | 500 | | | | | | | | + | 22 | DE | 2024 | pow_combustion_gt_hydrogen_0 | 3500 | | 0.6 | 20 | 500 | | | | | | | | + | 23 | DE | 2027 | pow_combustion_gt_hydrogen_0 | 3500 | | 0.6 | 20 | 500 | | | | | | | | + | 24 | DE | 2030 | pow_combustion_gt_hydrogen_0 | 3300 | | 0.6 | 20 | 500 | | | | | | | | + | 25 | DE | 2035 | pow_combustion_gt_hydrogen_0 | 3000 | | 0.6 | 20 | 500 | | | | | | | | + | 26 | DE | 2040 | pow_combustion_gt_hydrogen_0 | 2700 | | 0.6 | 20 | 500 | | | | | | | | + | 27 | DE | 2045 | pow_combustion_gt_hydrogen_0 | 1500 | | 0.6 | 20 | 500 | | | | | | | | + | 28 | DE | 2050 | pow_combustion_gt_hydrogen_0 | 200 | | 0.6 | 20 | 500 | | | | | | | | + | 29 | DE | 2060 | pow_combustion_gt_hydrogen_0 | 0 | | | | | | | | | | | | + | 30 | DE | 2070 | pow_combustion_gt_hydrogen_0 | 0 | | | | | | | | | | | | + ``` + + + === "Empty cells" + **Parameter values that do not exist for a given year, process and parameter combination have no relevance for a process.**

+ Example: + ```python + | id | region | year | type | capacity_p_inst | + |----|--------|------|-------------------------------------|--------------------| + | 1 | DE | 2021 | pow_combustion_cc_chp_ccs_biomass_1 | | + | 2 | DE | 2024 | pow_combustion_cc_chp_ccs_biomass_1 | | + ``` + + **Exception**: Unrestricted bound parameters + + **Upper and lower bound paramters have empty cells if unrestricted**.
This convention was made to avoid + high or low dummy values for upper or lower bounds.

+ In the example above, new capacity investments (`capacity_p_abs_new_max`) for the processes are not restricted:
+ ```python + | id | region | year | type | capacity_p_abs_new_max | + |----|--------|------|--------------------------------------|------------------------| + | 5 | DE | 2035 | pow_combustion_cc_chp_ccs_biomassl_1 | | + | 6 | DE | 2040 | pow_combustion_cc_chp_ccs_biomassl_1 | | + | 7 | DE | 2045 | pow_combustion_cc_chp_ccs_biomassl_1 | | + | 8 | DE | 2050 | pow_combustion_cc_chp_ccs_biomassl_1 | | + | 9 | DE | 2060 | pow_combustion_cc_chp_ccs_biomassl_1 | | + | 10 | DE | 2070 | pow_combustion_cc_chp_ccs_biomassl_1 | | + | 17 | DE | 2045 | pow_geothermal_st_1 | | + | 18 | DE | 2050 | pow_geothermal_st_1 | | + | 19 | DE | 2060 | pow_geothermal_st_1 | | + | 20 | DE | 2070 | pow_geothermal_st_1 | | + ``` +
+ **Other bounds parameters** + ```python + | SEDOS parameter name | Recommended unit | Description | + |--------------------------|--------------------|--------------------------------------------------------------------------------------------| + | capacity_p_abs_new_max | MW | Absolute upper bound on level of investment in new power output capacity for a period. | + | capacity_e_abs_new_max | MWh | Absolute upper bound on level of investment in new storage energy capacity for a period. | + | capacity_w_abs_new_max | Mt | Absolute upper bound on level of investment in new weight capacity for a period. | + | activity_bound_min | Mt/year | Lower bound on the activity level of a process. | + | activity_bound_fix | Mt/year | Fix bound on the activity level of a process. | + | activity_bound_max | Mt/year | Upper bound on the activity level of a process. | + | demand_timeseries_lower | MWh, pkm, tkm | Lower bound for demand timeseries. | + | demand_timeseries_upper | MWh, pkm, tkm | Upper bound for demand timeseries. | + ``` + + === "Value 0" + **The value is actually zero for a given year, process and parameter.**

+ Example: Existing capacity for `pow_combustion_gt_hydrogen_0` in 2060 is zero.
+ ```python + | id | region | year | type | capacity_p_inst | + |----|--------|------|--------------------------------------|--------------------| + | 29 | DE | 2060 | pow_combustion_gt_hydrogen_0 | 0 | + ``` + +??? note "Over specification of processes" + + **Example table**:
+ ```python + | id | region | year | type | capacity_p_inst | capacity_p_abs_new_max | conversion_factor_sec_elec | lifetime | cost_inv_capacity_p | cb_coefficient | cv_coefficient | bandwidth_type | version | method | source | comment | | + |----|--------|----------|--------|----------------------------------------|------------------------|----------------------------|------------------------------|---------------------|-----------------------|------------------|------------------|------------------|-----------|----------|----------|-----------| + | | 1 | DE | 2021 | pow_combustion_cc_chp_ccs_biomass_1 | | 0 | | | | | | | | | | | + | | 2 | DE | 2024 | pow_combustion_cc_chp_ccs_biomass_1 | | 0 | | | | | | | | | | | + | | 3 | DE | 2027 | pow_combustion_cc_chp_ccs_biomass_1 | | 0 | | | | | | | | | | | + | | 4 | DE | 2030 | pow_combustion_cc_chp_ccs_biomass_1 | | 0 | | | | | | | | | | | + | | 5 | DE | 2035 | pow_combustion_cc_chp_ccs_biomass_1 | | | 0.8 | 25 | 1000 | 0.4 | 0.6 | | | | | | + | | 6 | DE | 2040 | pow_combustion_cc_chp_ccs_biomass_1 | | | 0.8 | 25 | 1000 | 0.4 | 0.6 | | | | | | + | | 7 | DE | 2045 | pow_combustion_cc_chp_ccs_biomass_1 | | | 0.8 | 25 | 800 | 0.4 | 0.6 | | | | | | + | | 8 | DE | 2050 | pow_combustion_cc_chp_ccs_biomass_1 | | | 0.8 | 30 | 800 | 0.4 | 0.6 | | | | | | + | | 9 | DE | 2060 | pow_combustion_cc_chp_ccs_biomass_1 | | | 0.8 | 30 | 800 | 0.4 | 0.6 | | | | | | + | | 10 | DE | 2070 | pow_combustion_cc_chp_ccs_biomass_1 | | | 0.8 | 30 | 600 | 0.4 | 0.6 | | | | | | + | | 11 | DE | 2021 | pow_geothermal_st_1 | | 0 | | | | | | | | | | | + | | 12 | DE | 2024 | pow_geothermal_st_1 | | 0 | | | | | | | | | | | + | | 13 | DE | 2027 | pow_geothermal_st_1 | | 0 | | | | | | | | | | | + | | 14 | DE | 2030 | pow_geothermal_st_1 | | 0 | | | | | | | | | | | + | | 15 | DE | 2035 | pow_geothermal_st_1 | | 0 | | | | | | | | | | | + | | 16 | DE | 2040 | pow_geothermal_st_1 | | 0 | | | | | | | | | | | + | | 17 | DE | 2045 | pow_geothermal_st_1 | | | 0.4 | 25 | 800 | | | | | | | | + | | 18 | DE | 2050 | pow_geothermal_st_1 | | | 0.4 | 30 | 800 | | | | | | | | + | | 19 | DE | 2060 | pow_geothermal_st_1 | | | 0.4 | 30 | 800 | | | | | | | | + | | 20 | DE | 2070 | pow_geothermal_st_1 | | | 0.4 | 30 | 600 | | | | | | | | + | | 21 | DE | 2021 | pow_combustion_gt_hydrogen_0 | 3500 | | 0.6 | 20 | 500 | | | | | | | | + | | 22 | DE | 2024 | pow_combustion_gt_hydrogen_0 | 3500 | | 0.6 | 20 | 500 | | | | | | | | + | | 23 | DE | 2027 | pow_combustion_gt_hydrogen_0 | 3500 | | 0.6 | 20 | 500 | | | | | | | | + | | 24 | DE | 2030 | pow_combustion_gt_hydrogen_0 | 3300 | | 0.6 | 20 | 500 | | | | | | | | + | | 25 | DE | 2035 | pow_combustion_gt_hydrogen_0 | 3000 | | 0.6 | 20 | 500 | | | | | | | | + | | 26 | DE | 2040 | pow_combustion_gt_hydrogen_0 | 2700 | | 0.6 | 20 | 500 | | | | | | | | + | | 27 | DE | 2045 | pow_combustion_gt_hydrogen_0 | 1500 | | 0.6 | 20 | 500 | | | | | | | | + | | 28 | DE | 2050 | pow_combustion_gt_hydrogen_0 | 200 | | 0.6 | 20 | 500 | | | | | | | | + | | 29 | DE | 2060 | pow_combustion_gt_hydrogen_0 | 0 | | | | | | | | | | | | + | | 30 | DE | 2070 | pow_combustion_gt_hydrogen_0 | 0 | | | | | | | | | | | | + ``` + + To avoid ambiguities in the data, the processes are specified as precisely as possible.
This means, for + example, for investment processes all years are specified in the data, even if an investment process is only + available from later years, e.g 2035, as opposed to missing rows for 2021, 2024, 2027 and 2030.
+ To avoid data misinterpretation, the techno-economic parameter values for 2021, 2024, 2027 and 2030 are empty, + since the process does not exist yet in such years. +
+ ```python + | id | region | year | type | capacity_p_inst | capacity_p_abs_new_max | conversion_factor_sec_elec | lifetime | cost_inv_capacity_p | cb_coefficient | cv_coefficient | bandwidth_type | version | method | source | comment | | + |----|--------|----------|--------|----------------------------------------|------------------------|----------------------------|------------------------------|---------------------|-----------------------|------------------|------------------|------------------|-----------|----------|----------|-----------| + | | 1 | DE | 2021 | pow_combustion_cc_chp_ccs_biomass_1 | | 0 | | | | | | | | | | | + | | 2 | DE | 2024 | pow_combustion_cc_chp_ccs_biomass_1 | | 0 | | | | | | | | | | | + | | 3 | DE | 2027 | pow_combustion_cc_chp_ccs_biomass_1 | | 0 | | | | | | | | | | | + | | 4 | DE | 2030 | pow_combustion_cc_chp_ccs_biomass_1 | | 0 | | | | | | | | | | | + | | 5 | DE | 2035 | pow_combustion_cc_chp_ccs_biomass_1 | | | 0.8 | 25 | 1000 | 0.4 | 0.6 | | | | | | + | | 6 | DE | 2040 | pow_combustion_cc_chp_ccs_biomass_1 | | | 0.8 | 25 | 1000 | 0.4 | 0.6 | | | | | | + | | 7 | DE | 2045 | pow_combustion_cc_chp_ccs_biomass_1 | | | 0.8 | 25 | 800 | 0.4 | 0.6 | | | | | | + | | 8 | DE | 2050 | pow_combustion_cc_chp_ccs_biomass_1 | | | 0.8 | 30 | 800 | 0.4 | 0.6 | | | | | | + | | 9 | DE | 2060 | pow_combustion_cc_chp_ccs_biomass_1 | | | 0.8 | 30 | 800 | 0.4 | 0.6 | | | | | | + | | 10 | DE | 2070 | pow_combustion_cc_chp_ccs_biomass_1 | | | 0.8 | 30 | 600 | 0.4 | 0.6 | | | | | | + ``` + + Conversely, existing capacities are explicitly declared as 0 as soon as they are no longer in the system, as + opposed to missing rows for 2060 and 2070.
+ To avoid data misinterpretation, the techno-economic parameter values for 2060 and 2070 are empty, + since the process does not exist anymore in such years. +
+ ```python + | id | region | year | type | capacity_p_inst | capacity_p_abs_new_max | conversion_factor_sec_elec | lifetime | cost_inv_capacity_p | cb_coefficient | cv_coefficient | bandwidth_type | version | method | source | comment | | + |----|--------|----------|--------|----------------------------------------|------------------------|----------------------------|------------------------------|---------------------|-----------------------|------------------|------------------|------------------|-----------|----------|----------|-----------| + | | 21 | DE | 2021 | pow_combustion_gt_hydrogen_0 | 3500 | | 0.6 | 20 | 500 | | | | | | | | + | | 22 | DE | 2024 | pow_combustion_gt_hydrogen_0 | 3500 | | 0.6 | 20 | 500 | | | | | | | | + | | 23 | DE | 2027 | pow_combustion_gt_hydrogen_0 | 3500 | | 0.6 | 20 | 500 | | | | | | | | + | | 24 | DE | 2030 | pow_combustion_gt_hydrogen_0 | 3300 | | 0.6 | 20 | 500 | | | | | | | | + | | 25 | DE | 2035 | pow_combustion_gt_hydrogen_0 | 3000 | | 0.6 | 20 | 500 | | | | | | | | + | | 26 | DE | 2040 | pow_combustion_gt_hydrogen_0 | 2700 | | 0.6 | 20 | 500 | | | | | | | | + | | 27 | DE | 2045 | pow_combustion_gt_hydrogen_0 | 1500 | | 0.6 | 20 | 500 | | | | | | | | + | | 28 | DE | 2050 | pow_combustion_gt_hydrogen_0 | 200 | | 0.6 | 20 | 500 | | | | | | | | + | | 29 | DE | 2060 | pow_combustion_gt_hydrogen_0 | 0 | | | | | | | | | | | | + | | 30 | DE | 2070 | pow_combustion_gt_hydrogen_0 | 0 | | | | | | | | | | | | + ``` +
+ + + +## Units + +| Symbol | Name | Range | Description | +|-----|----------|---------|---------------------------------------------------| +| `%` | `Percent` | [0,100] | A number or ratio expressed as a fraction of 100. | + + From 660adca1bcb00c29ffb82fed17c2915f38ffe5fa Mon Sep 17 00:00:00 2001 From: BeneharoRB Date: Fri, 19 Jul 2024 17:25:54 +0200 Subject: [PATCH 03/15] Add first information from lastenheft --- docs/index.md | 15 +- docs/visitor/data/data_conventions.md | 17 + docs/visitor/data/input_data.md | 281 ++++++++++++++ docs/visitor/data/licensing.md | 142 +++++++ docs/visitor/data/metadata.md | 416 +++++++++++++++++++++ docs/visitor/data/ontology.md | 359 ++++++++++++++++++ docs/visitor/data/overview.md | 28 ++ docs/visitor/data/parameters.md | 3 + docs/visitor/lastenheft.md | 1 - docs/visitor/model/results.md | 9 + docs/visitor/{ => model}/scenarios.md | 0 docs/visitor/results.md | 3 - docs/visitor/structure/exogenous_values.md | 54 +++ docs/visitor/structure/model_frame.md | 132 +++++++ docs/visitor/structure/overview.md | 1 + mkdocs.yml | 28 +- 16 files changed, 1471 insertions(+), 18 deletions(-) create mode 100644 docs/visitor/data/data_conventions.md create mode 100644 docs/visitor/data/input_data.md create mode 100644 docs/visitor/data/licensing.md create mode 100644 docs/visitor/data/metadata.md create mode 100644 docs/visitor/data/ontology.md create mode 100644 docs/visitor/data/overview.md create mode 100644 docs/visitor/data/parameters.md delete mode 100644 docs/visitor/lastenheft.md create mode 100644 docs/visitor/model/results.md rename docs/visitor/{ => model}/scenarios.md (100%) delete mode 100644 docs/visitor/results.md create mode 100644 docs/visitor/structure/exogenous_values.md create mode 100644 docs/visitor/structure/model_frame.md create mode 100644 docs/visitor/structure/overview.md diff --git a/docs/index.md b/docs/index.md index 6e7ca6a..45a19a9 100644 --- a/docs/index.md +++ b/docs/index.md @@ -1,14 +1,17 @@ # SEDOS Documentation Welcome to the documentation of the SEDOS project! +We developed an open-source model structure taking into account the relevant future technologies +for electricity, heat, other conversions, transport and industry in a sector-coupled energy world. +We set a strong focus on a streamlined data management process that fosters the transparency and reproducibility of the +open source structure. -The documentation gives an overview of the tools in SEDOS, as well as important conventions for their usage. -In the project, we aim to establish a streamlined data management process with as much automation as practical. +The documentation is structured in the following four main parts -The documentation is structured in two main parts - -1. [SEDOS-specific data requirements](./developer/data_requirements/input_data.md) -2. [Instructions on how to contribute data](./developer/how_to_contribute_data.md) +1. [Reference Energy System](visitor/structure/model_frame.md) +2. [Reference Dataset](./visitor/data_requirements/input_data.md) +3. [Model Application](./visitor/data_requirements/input_data.md) +4. [SEDOS developer](./developer/how_to_contribute_data.md) !!! question "Just here for the data?" diff --git a/docs/visitor/data/data_conventions.md b/docs/visitor/data/data_conventions.md new file mode 100644 index 0000000..c5606a1 --- /dev/null +++ b/docs/visitor/data/data_conventions.md @@ -0,0 +1,17 @@ +# Data conventions + +## 2.7 Standards + +### Standard units + +Standard units should be harmonized as far as possible to improve transparency and comparability. The data adapters also convert the units to ensure compatibility with the frameworks. There may also be exceptions to the input data; the information should, therefore, be regarded as a suggestion. + +| Size | Unit | +|-------|-----------------------------| +| Performance | MW | +| Energy | GWh | +| Weight (products) | Million tonnes | +| Weight (CO2-equivalent emissions) | kg | +| Costs | Euro | +| Length | km | +| Surface area | m² | \ No newline at end of file diff --git a/docs/visitor/data/input_data.md b/docs/visitor/data/input_data.md new file mode 100644 index 0000000..f465be6 --- /dev/null +++ b/docs/visitor/data/input_data.md @@ -0,0 +1,281 @@ +# Input data + +## Datamodel + +The **oedatamodel-parameter** ([docs](https://github.com/sedos-project/oedatamodel#oedatamodel-parameter)) has to +be used to provide input data in SEDOS. This choice was made to allow ontological annotation of data. The data +model consists of two table types: "[scalar](https://github.com/sedos-project/oedatamodel/blob/main/oedatamodel-parameter/oedatamodel-parameter-datapackage_scalar.csv)" and "[timeseries](https://github.com/sedos-project/oedatamodel/blob/main/oedatamodel-parameter/oedatamodel-parameter-datapackage_timeseries.csv)". Please choose the table type accordingly, depending on the data you want to upload: + +- Use scalar tables to provide parameters with no relation to a timeindex.
To properly fill the table, read the + [scalar model column description](https://github.com/sedos-project/oedatamodel#scalar-description).
Use the + [example scalar package metadata](https://github.com/sedos-project/oedatamodel/blob/main/oedatamodel-parameter/datamodel_scalars.json) to write your own metadata + (see section [How to contribute data - 2. Create metadata](../how_to_contribute_data.md#create-metadata) +- Use a timeseries table to provide parameters with relation to a timeindex.
Use the [timeseries model column description](https://github.com/sedos-project/oedatamodel#timeseries-description) to make yourself familiar with the + fields and add metadata to your tables using the [example timeseries package metadata](https://github.com/sedos-project/oedatamodel/blob/main/oedatamodel-parameter/datamodel_timeseries.json) as a reference. + +**Datamodel features** + +- [type]() - use to specify multiple processes in one csv table (see [example](https://github.com/sedos-project/oedatamodel#example-table)) +- [bandwidth_type](https://github.com/sedos-project/oedatamodel#bandwidth-types-and-cell-methods) - specify how the + data bandwidths are interpreted + +### Input and output energy vectors + + +The input and output energy vectors of processes in SEDOS' reference energy system are defined in an external +table on the BW Sync&Share, in the sheet [Parameter_Input-Output](https://bwsyncandshare.kit.edu/f/2458081675). + +For processes with multiple input and/or output energy vectors it might not clear to which energy vector a +parameter column refers. Thus, the information has to be specified if needed. + +By `default`, **all** parameters of a process as assigned to all inputs and outputs of a process from the BW +Sync&Share table - sheet: [Process_Set](https://bwsyncandshare.kit.edu/f/2458081675) +(the `default` does not appear in the input_output sheet, but is used in the backend of the data pipeline).
+
+If needed, the `default` can be overwritten, simply by assigning other input(s) and output(s) to a specific +parameter of the process in the [Parameter_Input-Output](https://bwsyncandshare.kit.edu/f/2458081675) sheet. + +!!! Note "input_output insertion conventions" + + * Enclose substituting inputs or outputs in squared brackets `[ ]`. E.g. + * separate inputs or outputs with `,` (comma) + + +**Example** + +_Parameter_Input-Output_ sheet + +| parameter | process | input | output | | +|----------------------------------------|--------------------------------|------------------------------------|--------------------------------------------------|---| +| energy_conversion_efficiency_diesel | mob_road_mcar_ice_pass_diesel | | [pkm_road_mcar_short_exo, pkm_road_mcar_long_ex] | | +| energy_conversion_efficiency_syndiesel | mob_road_mcar_ice_pass_diesel | | [pkm_road_mcar_short_exo, pkm_road_mcar_long_ex] | | +| emission_factor_diesel | mob_road_mcar_ice_pass_diesel | diesel | CO2 | | +| emission_factor_syndiesel | mob_road_mcar_ice_pass_diesel | syndiesel | CO2 | | +| parameter1 | process 1 | [cane, honeymelon], heat, power | [sugar, cinnamon], waste | | + +In the [Process_Set](https://bwsyncandshare.kit.edu/f/2458081675) sheet, the process is assigned to: + +| Input | Process | Output | +|--------------------------------|-------------------------------|--------------------------------------------------------| +| [diesel, syndiesel, biodiesel] | mob_road_mcar_ice_pass_diesel | [pkm_road_mcar_short_exo, pkm_road_mcar_long_exo], CO2 | + +In the example it is assumed that the _mob_road_mcar_ice_pass_diesel_ emits the same amount of CO2 when using diesel or biodiesel as fuel. +However, the process has different efficiencies depending on the fuel.
+ +All other process parameters of _mob_road_mcar_ice_pass_diesel_, such as: _investment_cost, operational_life_time, +mileage, occupancy_rate, market_share_ are assigned to the `default` inputs (diesel, syndiesel_ren, syndiesel_conv, +biodiesel) and outputs (pkm_road_mcar_short_exo, pkm_road_mcar_long_exo, CO2) in the backend from the table sheet +[Process_Set](https://bwsyncandshare.kit.edu/f/2458081675).
+ +It is for the data providers (WP4-8) to assess whether this is correct for each process with respect to the +modelling.
+If the `default` is incorrect, the [Parameter_Input-Output](https://bwsyncandshare.kit.edu/f/2458081675) sheet +should be used to specify process parameters' inputs and outputs accordingly. + + +## Data tables + + +### Naming conventions for data tables and parameters +!!! warning "Note" + + * Parameter name and table name conventions are in place due to technical reasons of the underlying relational postgre-sql database on the OEP. + +The following conventions will be automatically checked when uploading a table on the OEP, and error messages will be raised in case of violation. +Users need to correct them and their compliance is mandatory. + +#### Do's +* use ASCII characters only +* use lower case only +* use the singular instead of the plural. +* use underscores + +#### Don'ts + +* table name must not exceed maximal character limit = 50 +* no points +* no commas +* no spaces +* no special characters +* avoid dates +* no hyphens. If dates are used, then without `-`! E.g.: 2022-10-21 will through an error. Use underscore instead! +* don't start parameter name with a number + +### Delimiter + +Use semicolon `;` as the column delimiter. + +### Decimal separator + +Use point `.` as decimal separator. + +### Versioning convention +??? Note "Versioning pattern" + +
**For SEDOS Reference Dataset** (SRD)

+ `v` + `number`
+ Version your data with **lowercase** letter `v` and arabic number, e.g.: v1, v2, v3, v4, ..., v12, v13 +

+ **For SEDOS Scenarios**

+ When the data for the SRD is final, specific scenarios will be uploaded to showcase the application of the SRD in practice. + It's done by selecting specific values from SRD's bandwidths and appending them with a `scenario version` to + respective tables.

+ `s` + `number`
+ Version your data with **lowercase** letter `s` and arabic number, e.g.: s1, s2, s3, s4, ..., s12, s13 + +**Increase the version when** you want to **add or update data** to a table that has been already uploaded to the OEP. +The oedatamodel-API will append new data versions to an existing OEP table. +
+ +**Reasoning:** By following the versioning convention the end-user only needs to know the latest data version of a +given process. Thus, querying the latest process data version will return a full set of coherent input data. +
+Conversely, users only need to know one version number when querying older data versions to work with a full +set of coherent input data for a process. + +** v1 **: **Initial data** + +| id | region | year | type | capital_costs | lifetime | bandwidth_type | version | method | source | comment | +|----|--------|------|------|-------------------------------------------|------------------------------------------|----------------|--------------------------------------------|-------|--------|---------| +| 1 | DE | 2020 | | ** 1 ** | ** 5 ** | | ** v1 ** | | | | +| 2 | DE | 2025 | | ** 1.5 ** | ** 6 ** | | ** v1 ** | | | | + +** v2 **: **Adding data** to your csv table requires a new version `v2` for new +datapoints (capital_cost and lifetime in 2030, row=5), including a copy the existing data from `v1` as version `v2` +(reasoning see above) + +| id | region | year | type | capital_costs | lifetime | bandwidth_type | version | method | source | comment | +|----|--------|------|------|------------------------------------------|------------------------------------------|----------------|--------------------------------------------|-------|--------|---------| +| 1 | DE | 2020 | | 1 | 5 | | ** v2 ** | | | | +| 2 | DE | 2025 | | 1.5 | 6 | | ** v2 ** | | | | +| 3 | DE | 2030 | | ** 2 ** | ** 8 ** | | ** v2 ** | | | | + +** v3 **: **Updating a datapoint** (lifetime, row=8) requires a new version +`v3`, including a copy the existing data from `v2` as version `v3` + +| id | region | year | type | capital_costs | lifetime| bandwidth_type | version | method | source | comment | +|----|--------|------|------|---------------|------------------------------------------|----------------|--------------------------------------------|-------|--------|---------| +| 1 | DE | 2020 | | 1 | 5 | | ** v3 ** | | | | +| 2 | DE | 2025 | | 1.5 | 6 | | ** v3 ** | | | | +| 3 | DE | 2030 | | 2 | ** 15 ** | | ** v3 ** | | | | + +** v4 **: **Updating a datapoint** (capital_costs, row=11) requires a new +version `v4`, including a copy the existing data from `v3` as version `v4` + +| id | region | year | type | capital_costs | lifetime| bandwidth_type | version | method | source | comment | +|----|--------|------|------|------------------------------------------|------------------------------------------|----------------|--------------------------------------------|-------|--------|---------| +| 1 | DE | 2020 | | 1 | 5 | | ** v4 ** | | | | +| 2 | DE | 2025 | | 1.5 | 6 | | ** v4 ** | | | | +| 3 | DE | 2030 | | ** 4 ** | 15 | | ** v4 ** | | | | + + +!!! Note "`id` column numbering" + + If you check `Automatically increase IDs, if IDs are already present in table` in the OEDatamodel-api when + uploading the data, the id's will be updated automatically - as shown in the _Example result on OEP_ below. + +Example result on OEP: + +| id | region | year | type | capital_costs | lifetime| bandwidth_type | version | method | source | comment | +|----|--------|------|------|--------------------------------------------|------------------------------------------|----------------|--------------------------------------------|-------|--------|---------| +| 1 | DE | 2020 | | ** 1 ** | ** 5 ** | | ** v1 ** | | | | +| 2 | DE | 2025 | | ** 1.5 ** | ** 6 ** | | ** v1 ** | | | | +| 3 | DE | 2020 | | 1 | 5 | | ** v2 ** | | | | +| 4 | DE | 2025 | | 1.5 | 6 | | ** v2 ** | | | | +| 5 | DE | 2030 | | ** 2 ** | ** 8 ** | | ** v2 ** | | | | +| 6 | DE | 2020 | | 1 | 5 | | ** v3 ** | | | | +| 7 | DE | 2025 | | 1.5 | 6 | | ** v3 ** | | | | +| 8 | DE | 2030 | | 2 | ** 15 ** | | ** v3 ** | | | | +| 9 | DE | 2020 | | 1 | 5 | | ** v4 ** | | | | +| 10 | DE | 2025 | | 1.5 | 6 | | ** v4 ** | | | | +| 11 | DE | 2030 | | ** 4 ** | 15 | | ** v4 ** | | | | + + +!!! Note "Versioning note" + + * Uploading a row which exists already in: "region, type, year, version" results in an error. + * Otherwise single or multiple rows can be added to already existing versions + + +#### SEDOS Reference Dataset (SRD) versioning + +For the SRD, the following version tags apply: + +* **srd_range_sedos**: Final SRD with ranges to include parametric uncertainty from different sources. +* **srd_range_v1**: Updated SRD, after project end. +* **srd_point_sedos**: SEDOS-specific values from srd_range_sedos that serve as a basis for all scnearios. + +### Datatypes + +Available datatypes and corresponding formatting examples: + +| dtype | example | comment | +|:-----------:|:------------------------------------------:|:------------------------------------------------------------------------------------------------------------------------------------------------------------:| +| json | "{""key1"": ""text"", ""key2"": ""text""}" | {"key1": "text", ...} might work as well. If you're using an table edititor make sure to use ASCII characters only | | +| float array | [0.02, 279.5] | arrays with strings should be formatted as strings ("['string1', 'string2']" | +| text | "text" | String data should have text as datatype (text serves as "string") | +| integer | 27 | | +| text array | "[""TH"", ""BW""]" | ["TH","BW"] might work as well. If you're using an table edititor make sure to use ASCII characters only | + +### Table naming + +Follow the [nomenclature](https://bwsyncandshare.kit.edu/f/2458081675) for table and process naming in sheet: +**Nomenclature_Processes**. + +!!! warning "Note" + + * Create a new data package for each process, e.g. wind_onshore, chp, ...
+ * Or use the `type` column to put multiple processes in one data package + * You can use a single datapackage for both demand data and other constraint data (tech-independent parameters),e.g.:
+ * emission limit,
+ * natural domestic limit,
+ * WACC + + + +## Parameter naming + +Follow the [nomenclature](https://bwsyncandshare.kit.edu/f/2458081675) for parameter naming in sheet: +**Parameter_Set**. + +!!! warning "Note" + + * Parameter names must be linked to a concept in an ontology + +It is importance that every parameter name is linked to a suitable ontological concept via the metadata to enable +its clear interpretation. +
In case you cannot find a suitable ontology concept (e.g. because it's not in the ontology yet), please make sure +your chosen parameter name is clear and common in the domain. In this case avoid acronyms.
+ +!!! note "Ontological annotations" + + * In the [nomenclature](https://bwsyncandshare.kit.edu/f/2458081675) for parameter naming in sheet: + **Parameter_Set**, we made suggestions for suitable ontology concepts for usage across the SEDOS APs. +

Please use them or make suggestions of better suitable concepts. + +For more background information regarding for linking parameter names and ontology concepts, using OEM, see [**here**](ontology.md#Ontological-annotation-of-data). + +For a practical manual linking parameter names to a suitable ontology concepts, using oemetadata builder, see [**here**](ontology.md#Link-a-parameter-name-to-a-suitable-ontology-concept). + +### Parameter naming in case of missing suitable ontology concept + +It is likely that not every parameter concept is already covered by an ontology. In this case, linking your parameter name to a suitable ontology concept is not directly possible. + +It might, however, be indirectly possible by linking it to a distinct selection of related ontology concepts. +In this case you would link your parameter name to multiple related concepts. + +For a practical manual linking parameter names to multiple related ontology concepts, using oemetadata builder, see [**here**](ontology.md#Link-a-parameter-name-to-multiple-related-ontology-concepts). + + \ No newline at end of file diff --git a/docs/visitor/data/licensing.md b/docs/visitor/data/licensing.md new file mode 100644 index 0000000..4df532c --- /dev/null +++ b/docs/visitor/data/licensing.md @@ -0,0 +1,142 @@ +# Data Licencing + +In the SEDOS project, Open Data is one of the main criteria for developing the Reference Energy System (RES) database. +Open Data implies adequate licencing as a legal requirement, hence why this section aims to bring you up to speed regarding the nitty-gritty of licencing. +By the end of this section, you'll be able to licence your input data adequately. + +## Suitable data licences in SEDOS + +??? note "How to document licences in OEMetadata?" + + + If your data set has a licence, follow this example.
+
+ For example: + + ``` + { + "sources": [ + { + "title": "OEDatamodel-parameter", + "description": "Parameter data model for secondary input scalars and timeseries", + "path": "https://github.com/sedos-project/oedatamodel/tree/main/oedatamodel-parameter", + "licenses": [ + { + "name": "CC0-1.0", + "title": "Creative Commons Zero v1.0 Universal", + "path": "https://creativecommons.org/publicdomain/zero/1.0/legalcode", + "instruction": "You are free: To Share, To Create, To Adapt", + "attribution": null + } + ] + }, + { + "title": "Code exposed: Review of five open-source frameworks for modeling renewable energy systems", + "description": "Energy system modeling is a commonly used method to provide policy recommendations and insight to transformation pathways of energy systems. However, the low open-source availability of the frameworks in practice often leads to low interpretability and transparency of energy modeling system configurations. The configuration of an energy model entails how its system components, such as power plants, storage systems and grids operate, and which parameters are used to define them. In order to understand the impact of different model configurations and working principles on the model output, a thorough comparison between various modeling frameworks is necessary. This work thereby consists of a comparison of five open-source energy system modeling frameworks (OS-ESMFs) oemof, GENeSYS-MOD, Balmorel, urbs and GENESYS-2 on the mathematical level and spotlights selected methodological differences in renewable energy system modeling. The comparison shows diversity in the complexity of selected system components and helps to define the best use-cases and scales of application for each framework. Impacts of modeled features on the results were demonstrated by implementing two harmonized scenarios depicting the German electricity system using each framework. While similar model results were obtained for both scenarios, some differences were present, especially in the long-term expansion planning model. Some of those differences could be traced back to the identified modeling differences.", + "path": "https://doi.org/10.1016/j.rser.2022.112272", + "licenses": [ + { + "name": "CC-BY-4.0", + "title": "Creative Commons Attribution 4.0 International", + "path": "https://creativecommons.org/licenses/by/4.0/", + "instruction": "You are free: To Share, To Create, To Adapt", + "attribution": null + } + ] + } + + ] + } + ``` + +1. For the data collection in WP3-8, you should choose data published under one of the listed licences below. +2. Add the licence spdx-id and/or correct attribution for respective source in the metadata ([oem-key 12.4.1-5](https://github.com/OpenEnergyPlatform/oemetadata/blob/develop/metadata/latest/metadata_key_description.md#source-keys)). +3. If your data is published under an open licence not listed below, please get in touch with *datenzentrum@rl-institut.de.* +> _Please note:_ non-conformant clauses such as
NC (non commercial) and ND (no derivates)
are **NOT** Open Data licences and must not be used. + +**Public Domain:** All rights granted. + +- [CC0-1.0](https://creativecommons.org/licenses/by/4.0/legalcode) | recommended +- [PDDL-1.0](https://opendatacommons.org/licenses/pddl/1-0/) | recommended +- [dl-de/zero-2-0](https://www.govdata.de/dl-de/zero-2-0) | granted by German government +- [CC-PDDC](https://creativecommons.org/licenses/publicdomain/) | not recommended + +**Attribution/Permissive:** Use rights and relicensing granted. Proprietisation is possible. Correct attribution is required (see licence link). + +- [CC-BY-4.0](https://creativecommons.org/licenses/by/4.0/legalcode) | recommended +- [ODC-By-1.0](https://opendatacommons.org/licenses/by/1-0/) | recommended +- [CDLA-Permissive-1.0](https://cdla.io/permissive-1-0/) +- [DL-DE-BY-2.0](https://www.govdata.de/dl-de/by-2-0) | granted only by the German government +- [GeoZG ](https://www.gesetze-im-internet.de/geozg/index.html) (no official spdx-id) | granted by German government | + +- [GeoNutzV](https://www.gesetze-im-internet.de/geonutzv/index.html) | granted by German government + +**Share-alike (Copyleft):** Use rights granted, propitiation impossible. + +- [ODbL-1.0](https://opendatacommons.org/licenses/odbl/1-0/) | recommended +- [CC-BY-SA-4.0](https://creativecommons.org/licenses/by-sa/4.0/legalcode) | not recommended + +For further information on licences, see
+* [OEP Tutorial on Open-Data Licences](https://openenergy-platform.org/tutorials/jupyter/tutorial_open-data-licenses/)
+* [ifrOSS GitHub](https://github.com/ifrOSS/ifrOSS/blob/master/OpenDataLicenses.md)
+* [Open Definition](https://opendefinition.org/licenses/) + +## Missing licence? - Using data without an open licence + +??? note "How to indicate missing licences in OEMetadata?" + + + If your data set has no licence, please **indicate this in the attribution**, using this pattern:
+ `"attribution": "copyright. AuthorSurname1, AuthorSurname2, AuthorSurname3 OR Institut1,Institut2,Institut3. Year"`
+
+ For example: + + ``` + { + "sources": [ + { + "title": "Impact of electric vehicles on a future renewable energy-based power system in Europe with a focus on Germany", + "description": "Paper on novel modelling approach comprising a detailed representation of electric vehicles based on real driving patterns and interactions between the power systems of Germany and other European regions.", + "path": "https://doi.org/10.1002/er.4056", + "licenses": [ + { + "name": null, + "title": null, + "path": null, + "instruction": null, + "attribution": "copyright. Miller, Heinz, Rutrecht. 2021" + } + ] + }, + { + "title": "Mobilität in Deutschland: Tabellarische Grundauswertung", + "description": "Mobilität in Deutschland (MiD) ist eine bundesweite Befragung von Haushalten zu ihrem alltäglichen Verkehrsverhalten im Auftrag des Bundesministeriums für Digitales und Verkehr (BMDV).", + "path": "https://bmdv.bund.de/SharedDocs/DE/Anlage/G/mid-2017-tabellenband.pdf?__blob=publicationFile", + "licenses": [ + { + "name": null, + "title": null, + "path": null, + "instruction": null, + "attribution": "copyright. Reiner Lemoine Institut, RKI. 1991" + } + ] + } + ] + } + ``` + +If you want to use a data set without a licence or an open data licence, try the following steps: + +1. **Contact the authors of the data set** and ask for either the licence or send a request for user-and relicensing + rights. Templates in DE and EN can be found **[here](https://bwsyncandshare.kit.edu/f/2369369032>)**. Please **add + *datenzentrum@rl-institut.de* to the CC of the Email** and **store positive response [here](https://bwsyncandshare.kit.edu/f/2369341357)**.

+2. **You can use the unlicensed data if you only extract a considerable small subset of a larger data set.**
+ + - In Germany, the [Act on Copyright and Related Rights / Gesetz über Urheberrecht und verwandte Schutzrechte + (Urheberrechtsgesetz)](https://www.gesetze-im-internet.de/englisch_urhg/englisch_urhg.html) contains the paragraph [60c Scientific research (Copyright Act, § 60c Scientific Research)](https://www.gesetze-im-internet.de/englisch_urhg/englisch_urhg.html#p0479) that provides provisions specifically for non-commercial scientific research. According to this law:

+ * Up to **15 percent of a work** may be reproduced, distributed, and made publicly accessible **for** the purpose of + **non-commercial scientific research**. This can be done for a specific group of individuals conducting their own scientific research, as well as for individual third parties for the purpose of assessing the quality of scientific research. + * Up to 75 percent of a work may be reproduced for one's own scientific research. + + diff --git a/docs/visitor/data/metadata.md b/docs/visitor/data/metadata.md new file mode 100644 index 0000000..f5301d6 --- /dev/null +++ b/docs/visitor/data/metadata.md @@ -0,0 +1,416 @@ +# Metadata + +In SEDOS the metadata standard [OEMetadata v.1.5.1](https://github.com/OpenEnergyPlatform/oemetadata#open-energy-family---open-energy-metadata-oemetadata) is used. + +## Required metadata information + +In SEDOS a minimal mandatory set of metadata information is required to: + +1. automatically process the input data in the data pipeline, +2. to provide useful context for data interpretation, and +3. to fulfil legal requirements. + +## Mandatory set of metadata information + +!!! Note "OEMetadata templates exist" + + **Many metadata fields are already prefilled, if** you can build upon metadata templates ([scalar template](https://raw.githubusercontent.com/sedos-project/oedatamodel/main/oedatamodel-parameter/datamodel_scalars.json) and [timeseries template](https://raw.githubusercontent.com/sedos-project/oedatamodel/main/oedatamodel-parameter/datamodel_timeseries.json)). + +!!! Danger "Technical upload requirement" + + OEM-key 15.2 is technically required for upload with oedatamodel-API + +Providing the following oem-keys when submitting your metadata is mandatory. + +### General Keys + +| # | Key | Description | Example | SEDOS convention | +|:--:|:---------------:|:------------------------------------------------------------------------------------------------------------------------------------------------:|:--------------------------------------------------------------------:|:--------------------------------------------------------------------------------------------------------:| +| 1 | name | A file name or database table name.

| oep_metadata_table_example_v15 | sector_process_name

e.g. tra_road_mcar_bev_pass_0
| +| 2 | title | A human readable full title including author. | RLI - OEMetadata - Metadata example table | sedos_sector_process_name

e.g. sedos_tra_road_mcar_bev_pass_0
| +| 4 | description | A description or abstract of the package. It should be usable as summary information for the entire package that is described by the metadata. | Example table used to illustrate the metadata structure and meaning. | | +| 6 | subject | An array of objects with topics of the data in OEO terms. | | | +| 6.1 | name | The class label of the OEO terms. | energy | | +| 6.2 | path | The URI of the class. | https://openenergy-platform.org/ontology/oeo/OEO_00000150 | | +| 8 | publicationDate | A date of publishing of the data or metadata. Date format is ISO 8601 (YYYY-MM-DD). | 2019-02-06 | | + +### Source Keys + +Information about the individual sources the data stems from. + +| # | Key | Description | Example | SEDOS convention | +|:------:|:-----------:|:----------------------------------------------------------------------------------------------------:|:---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:|:---------------------------------------------------------------------------------------------------------------------------------:| +| 12 | sources | An array of objects with the used and underlying sources of the data and metadata. | | | +| 12.1 | title | A human readable title of the source, a document title or organisation name. | IPCC Fifth Assessment Report | | +| 12.2 | description | A free text description of the data set. | Scientific climate change report by the UN | | +| 12.3 | path | A URL to the original source. | https://www.ipcc.ch/site/assets/uploads/2018/02/ipcc_wg3_ar5_full.pdf | | +| 12.4 | licenses | An array of objects under which the source is provided. | | | +| 12.4.1 | name | The SPDX identifier.
| ODbL-1.0 | In case of [missing licence](licensing.md#missing#licence#-#using#data#without#an#open#licence) | +| 12.4.2 | title | The official (human readable) title of the license. | Open Data Commons Open Database License 1.0 | | +| 12.4.3 | path | A link to the license text. | https://opendatacommons.org/licenses/odbl/1-0/index.html | | +| 12.4.4 | instruction | A short description of rights and restrictions. The use of tl;drLegal is recommended. | You are free to share and change, but you must attribute, and share derivations under the same license. See https://tldrlegal.com/license/odc-open-database-license-(odbl) for further information. | | +| 12.4.5 | attribution | The copyright owner of the source. If attribution licenses are used, that name must be acknowledged. | © Intergovernmental Panel on Climate Change 2014 | | + + + +### Provenience Keys + +Information about changes on the metadata. + +| # | Key | Description | Example | SEDOS convention | +|:----:|:------------:|:-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:|:--------------------------:|:----------------:| +| 14 | contributors | An array of objects of the people or organizations who contributed to the data or metadata. Each object refers to one contributor. Every contributor must have a title and property. The path, email, role and organization properties are optional. | | | +| 14.1 | title | A name of the contributor. | Ludwig Hülk | | +| 14.2 | email | A email address of the contributor or GitHub handle. | @Ludee | | +| 14.3 | date | The date of the contribution. If the contribution took more than a day, use the date of the final contribiution. Date Format is ISO 8601. | 2016-06-16 | | +| 14.4 | object | The target of the contribution. Which part of the package was supplied or changed. Can be the data, metadata or both (data and metadata). | data and metadata | | +| 14.5 | comment | A free text commentary on what has been done. | Fixed a typo in the title. | | + + +### Resource Keys + +Needed to process the csv-table for the OEP. + +| # | Key | Description | Example | SEDOS convention | +|:----------------------------------------:|:----------------------------------------------:|:--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:|:------------------------------------------------------------------------:|:----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:| +| 15 | resources | An array of objects of the data. It describes the data resource as an individual file or (database) table. | | | +| 15.1 | profile | The profile of this descriptor according to the profiles specification. This information is retained in order to comply with the "Tabular Data Package" standard. Use "tabular-data-resource" for all tables. | tabular-data-resource | | +| ** 15.2 ** | ** name ** | A name for the entire
data package. The name must consist of only lowercase alphanumeric characters or underscore. It must not start with a number or underscore. In a database, this will be the name of the table within the schema containing it. The name can correspond to the file name (minus the file-extension) of the data file describing the resource, if it complies with the naming convention above. Name also contains information about the [shema](https://openenergy-platform.org/dataedit/schemas) on the OEP, use "." to seperate shema from table name. | | ** Requiered for oedatamodel upload **

** model_draft.sector_process_name

e.g. model_draft.tra_road_mcar_bev_pass_0
** | +| 15.3 | path | A URL that should be a permanent http(s) address or other path directly linking to the resource. | https://openenergy-platform.org/dataedit/view/openstreetmap/osm_deu_line | | +| 15.4 | format | The file extension. 'csv', 'xls', 'json' etc. would be expected to be the standard file extension for this type of resource. When you upload your data to the OEDB, in the shown metadata string, the format will be changed accordingly to 'PostgreSQL', since the data there are stored in a database. | PostgreSQL | | +| 15.5 | encoding | Specifies the character encoding of the resource's data file. The values should be one of the "Preferred MIME Names" for a character encoding registered with IANA. If no value for this key is specified then the default is UTF-8. | UTF-8 | | + +### Resource Keys - Schema + +Information about each column in the csv. + +| # | Key | Description | Example | SEDOS convention | +|:----------:|:--------------:|:----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:|:---------------------------------------------------------:|:------------------------------------------------------------------------------------------------------------------------------------------------------:| +| 15.6 | schema | An object that describes the structure of the present data. It contains all fields (columns of the table), the primary key and optional foreign keys. | | | +| 15.6.1 | fields | An array of objects describing a column and providing name, description, type and unit. | | | +| 15.6.1.1 | name | The name of the field. The name must consist of only lowercase alphanumeric characters or underscore. It must not start with a number or underscore. | year | | +| 15.6.1.2 | description | A text describing the field. | Reference year for which the data were collected. | | +| 15.6.1.3 | type | The [data type](#datatypes) of the field.
In
case of a geom column in a database, also indicate the shape and CRS. | float array | | +| 15.6.1.4 | unit | The unit, preferably SI-unit, that values in this field are mapped to. If 'unit' doesn't apply to a field, use 'null'. If the unit is given in a seperate field, reference this field. | MW | | +| 15.6.1.5 | isAbout | An array of objects with describe the field in OEO terms. | | In case of [multiple concepts](ontology.md#annotation#conventions#for#automatic#data#processing) use
**C)Case2**
| +| 15.6.1.5.1 | name | The class label of the OEO terms. | wind energy converting unit | | +| 15.6.1.5.2 | path | The URI of the class. | https://openenergy-platform.org/ontology/oeo/OEO_00000044 | | +| 15.6.1.6 | valueReference | An array of objects for an extended description of the values in the column in OEO terms. | | | +| 15.6.1.6.1 | value | The name of the value in the column. | onshore | | +| 15.6.1.6.2 | name | The class label of the OEO terms. | onshore wind farm | | +| 15.6.1.6.3 | path | The URI of the class. | https://openenergy-platform.org/ontology/oeo/OEO_00000311 | +| + + +## Optional set of metadata information + + +### Spatial and Temporal Keys + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#KeyDescriptionExampleSEDOS convention
10spatialAn object that describes the spatial context of the data it contains.
10.1locationA location of the data. In case of data where the location can be described as a point. May be specified as coordinates, URI, or addresses with street, house number, and zip code.52.433509, 13.535855
10.2extentA covered area. May be the name of a region, or the geometry of a bounding box.EuropeGermany +
10.3resolutionPixel size in case of a regular raster image. Reference to administrative level or other spatial division that is present as the smallest spatially distinguished unit size.1 haNUTS-0
11temporalAn object with the time period covered in the data. Temporal information should either contain a "referenceDate" or the keys describing a time series; in rare cases both. For scalars:
+ ``` + "temporal": { + "referenceDate": "2021", + "timeseries": [ + { + "start": "2021-01-01", + "end": "2070-12-31", + "resolution": "yearly" + } + ] + ``` + For timeseries: + ``` + "temporal": { + "referenceDate": "2021", + "timeseries": [ + { + "start": "2021-01-01", + "end": "2021-12-31", + "resolution": "hourly", + "alignment": "left" + }, + { + "start": "2024-01-01", + "end": "2024-12-31", + "resolution": "hourly", + "alignment": "left" + }, + { + "start": "2027-01-01", + "end": "2027-12-31", + "resolution": "hourly", + "alignment": "left" + }, + { + "start": "2030-01-01", + "end": "2030-12-31", + "resolution": "hourly", + "alignment": "left" + }, + { + "start": "2035-01-01", + "end": "2035-12-31", + "resolution": "hourly", + "alignment": "left" + }, + { + "start": "2040-01-01", + "end": "2040-12-31", + "resolution": "hourly", + "alignment": "left" + }, + { + "start": "2045-01-01", + "end": "2045-12-31", + "resolution": "hourly", + "alignment": "left" + }, + { + "start": "2050-01-01", + "end": "2050-12-31", + "resolution": "hourly", + "alignment": "left" + }, + { + "start": "2060-01-01", + "end": "2060-12-31", + "resolution": "hourly", + "alignment": "left" + }, + { + "start": "2070-01-01", + "end": "2070-12-31", + "resolution": "hourly", + "alignment": "left" + } + ] + ``` + +
11.1referenceDateThe base year, month, or day. Point in time for which the data is meant to be accurate. The census data or a satellite image will have a reference date. Date Format is ISO 8601.2016-01-01
11.2timeseriesAn array that describes the time series.
11.2.1startThe beginning point in time of a time series.2019-02-06T10:12:04+00:00
11.2.2endThe end point in time of a time series.2019-02-07T10:12:04+00:00
11.2.3resolutionThe time span between individual points of information in a time series.30 s
11.2.4alignmentAn indicator of whether stamps in a time series are left, right, or middle.left
11.2.5aggregationTypeIndicates whether the values are a sum, average, or current.sum
+ +### Context Keys + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
# Context Keys
#KeyDescriptionExampleSEDOS convention
9contextAn object that describes the general setting, environment, or project leading to the creation or maintenance of this dataset. In science, this can be the research project. + For example: +``` +"context": { + "homepage": "https://sedos-project.github.io/.github/", + "documentation": "https://sedos-project.github.io/.github/", + "sourceCode": "https://github.com/sedos-project", + "contact": "Hans-Christian.Gils@dlr.de", + "grantNo": "03EI1040D", + "fundingAgency": "Bundesministerium für Wirtschaft und Klimaschutz (BMWK)", + "fundingAgencyLogo": "https://en.wikipedia.org/wiki/Federal_Ministry_for_Economic_Affairs_and_Climate_Action#/media/File:BMWi_Logo_2021.svg", + "publisherLogo": "https://www.dlr.de/static/media/Logo-de.697a8e1f.svg" + }, +``` + + + +
9.1homepageA URL of the project.https://openenergy-platform.org/
9.2documentationA URL of the project documentation.https://openenergy-platform.org/about/
9.3sourceCodeA URL of the project's source code.https://github.com/OpenEnergyPlatform
9.4contactA reference to the creator or maintainer of the data set. It can be an email address or a GitHub handle.contact@example.com
9.5grantNoAn identifying grant number. In case of a publicly funded project, this number is assigned by the funding agency.01AB2345
9.6fundingAgencyA name of the entity providing the funding. This can be a government agency or a company.Bundesministerium für Wirtschaft und Klimaschutz
9.7fundingAgencyLogoA URL to the logo or image of the funding agency.https://commons.wikimedia.org/wiki/File:BMWi_Logo_2021.svg#/media/File:BMWi_Logo_2021.svg
9.8publisherLogoA URL to the logo of the publishing agency of data.https://reiner-lemoine-institut.de//wp-content/uploads/2015/09/rlilogo.png
+ + + +### Review Keys + +When using the provided templates above, the review keys are prefilled already. + +| # | Key | Description | Example | +|:--:|:---------------:|:------------------------------------------------------------------------------------------------------------------------------------------------:|:--------------------------------------------------------------------:| +| 17 | @context | Necessary for registering Data on the Databus and to be SPARQL-able | https://raw.githubusercontent.com/OpenEnergyPlatform/oemetadata/master/metadata/latest/context.json | + + diff --git a/docs/visitor/data/ontology.md b/docs/visitor/data/ontology.md new file mode 100644 index 0000000..2507ba1 --- /dev/null +++ b/docs/visitor/data/ontology.md @@ -0,0 +1,359 @@ +# Ontological annotation of data + +## Basic annotation knowledge with OEM + +Ontological annotation of data means that data is linked to ontological concepts in the metadata. + +In SEDOS we use the [oemetadata v.1.5.1](metadata.md) (OEM) as metadata standard. For more context about the OEM-keys in oemetadata v.1.5.1, see [here](https://github.com/OpenEnergyPlatform/oemetadata/blob/develop/metadata/latest/metadata_key_description.md#metadata-keys-with-a-description-and-example). + +In energy systems modelling, data is fed into a model via parameters and their associated values. In the following, when we speak about ontological annotation, we, therefore, speak of parameter names, which are linked to an ontological concept for definition. + + +The linkage of parameter name and ontological concept in OEM has three elements: + +1. _user-defined parameter name_ +2. _human-readable ontological concept name_ +3. _Internationalized Resource Identifier (IRI)_ + +Below the general section of the oemetadata v1.5.1 is shown, [relevant for the ontological annotation of the table content itself](https://github.com/OpenEnergyPlatform/oemetadata/blob/develop/metadata/latest/metadata_key_description.md#general-keys). + +* The general content of the table is annotated in the `subject` key + +```json +{ + "name": null, + "title": null, + "id": null, + "description": null, + "language": [ + null + ], + "subject": [ + { + "name": null, + "path": null + } + ], + "keywords": [ + null + ], + "publicationDate": null +} +``` +Below the resource section of the oemetadata v1.5.1 is shown, [relevant for ontological annotation of parameter names](https://github.com/OpenEnergyPlatform/oemetadata/blob/develop/metadata/latest/metadata_key_description.md#resource-keys---schema). + +## Link a parameter name to a suitable ontology concept + +### Background know-how + +Parameters can occur in the column header or as column value when dealing with tabular data. + +* A) Parameters in the column headers are annotated in the `isAbout` key. +* B) Parameters occurring within a column are annotated in the `valueReference` key. + +```json +{ + "resources": [ + { + "profile": null, + "name": null, + "path": null, + "format": null, + "encoding": null, + "schema": { + "fields": [ + { + "name": null, + "description": null, + "type": null, + "unit": null, + "isAbout": [ + { + "name": null, + "path": null + } + ], + "valueReference": [ + { + "value": null, + "name": null, + "path": null + } + ] + } + ] + } + } + ] +} +``` + + + +**A) Parameters in the column headers** - using `isAbout`: + +1. _user-defined parameter name_ is put in _name_ (OEM-key 15.6.1.1), +2. a suitable _human-readable ontological concept name_ is put in _name_ (OEM-key 15.6.1.5.1), +3. _Internationalized Resource Identifier (IRI)_ is put in _path_ (OEM-key 15.6.1.5.2) + +**For example: A column with values for the rotor diameter of a wind turbine:** + +| id | wind_turbine | ro_diam | +|----|--------------|---------| +| 1 | type A | 50 | +| 2 | type A | 60 | +| 3 | type A | 70 | +| 4 | type B | 80 | +| 5 | type B | 110 | + +```json +{ + "resources": [ + { + "profile": null, + "name": null, + "path": null, + "format": null, + "encoding": null, + "schema": { + "fields": [ + { + "name": "wind_turbine", + "description": null, + "type": null, + "unit": null, + "isAbout": [ + { + "name": "wind energy converting unit", + "path": "http://openenergy-platform.org/ontology/oeo/OEO_00000044" + } + ], + "valueReference": [ + { + "value": null, + "name": null, + "path": null + } + ] + }, + { + "name": "ro_diam", + "description": null, + "type": null, + "unit": "meter", + "isAbout": [ + { + "name": "rotor diameter", + "path": "http://openenergy-platform.org/ontology/oeo/OEO_00020144" + } + ], + "valueReference": [ + { + "value": null, + "name": null, + "path": null + } + ] + } + ] + } + } + ] +} +``` + + +**B) Parameters within a column** - using `valueReference` and `isAbout`: + +_`valueReference`_
+ +1. _user-defined parameter name_ is put in _value_ (OEM-key 15.6.1.6.1), +2. a suitable _human-readable ontological concept name_ is put in _name_ (OEM-key 15.6.1.6.2), +3. _Internationalized Resource Identifier (IRI)_ is put in _path_ (OEM-key 15.6.1.6.3) + +_`isAbout`_
+ +When annotating using `valueReference`, don't forget to annotate the column itself in `isAbout`, as described in A). + +**For example: A column containing various types of fuels:** + +| id | various_types_of_energy_carriers | +|----|----------------------------------| +| 1 | coal_HCV | +| 2 | green_diesel | +| 3 | coal_LCV | + +```json +{ + "resources": [ + { + "profile": null, + "name": null, + "path": null, + "format": null, + "encoding": null, + "schema": { + "fields": [ + { + "name": "various_types_of_energy_carriers", + "description": null, + "type": null, + "unit": null, + "isAbout": [ + { + "name": "portion of matter", + "path": "http://openenergy-platform.org/ontology/oeo/OEO_00000331" + } + ], + "valueReference": [ + { + "value": "coal_HCV", + "name": "anthracite", + "path": "http://openenergy-platform.org/ontology/oeo/OEO_00000058" + }, + { + "value": "green_diesel", + "name": "biodiesel", + "path": "http://openenergy-platform.org/ontology/oeo/OEO_00000071" + }, + { + "value": "coal_LCV", + "name": "lignite", + "path": "http://openenergy-platform.org/ontology/oeo/OEO_00000251" + } + ] + } + ] + } + } + ] +} +``` + +### With oemetadata builder + +![wf](https://user-images.githubusercontent.com/7637364/191807277-712057b8-153c-4178-94a2-341ad8f010fd.gif) + +## Annotation conventions for automatic data processing + +In SEDOS, automatic data reasoning and processing are based mainly on ontological annotations in the metadata. +Thus, thorough annotation and following the conventions are important for frictionless data processing. + +* A) technology and technology_type (oem-key 6.1-2) +* B) for MiMo technologies the input and output energy vectors (oem-key 15.6.1.5.1-2) +* C) parameter names (oem-key 15.6.1.6.1-3) + +### A) technology and technology_type + +The technology and technology_type columns from the oedatamodel-concrete are filled with the information from the `subject` key. + +### B) input and output energy vectors for MiMo technologies + +Moved to [Input and output energy vectors](input_data.md#Input-and-output-energy-vectors). + +### C) parameter names + +#### Case1 +**_In cases where there is a single suitable ontology concept in the OEO_** we'll use the keys `isAbout`, `valueReference` as explained above. + +#### Case2 +**_In cases where there are multiple ontology concepts in the OEO that are suitable by using them in composition_** we'll use them as list in the `name` key. + +For example: _thermal efficiency_ of a heat power plant (as column in a tabular data set) + +The concept _thermal efficiency_ is not (yet, as of 23.09.22) available in the OEO, but the concepts: + +- 'heat generation process' +- 'energy conversion efficiency' + + + +```json +{ + "resources": [ + { + "profile": null, + "name": null, + "path": null, + "format": null, + "encoding": null, + "schema": { + "fields": [ + { + "name": "thermal efficiency", + "description": "The column holds the values of the thermal efficiency of a heat power plant", + "type": null, + "unit": null, + "isAbout": [ + { + "name": "heat generation process", + "path": "http://openenergy-platform.org/ontology/oeo/oeo-physical/OEO_00010248" + }, + { + "name": "energy conversion efficiency", + "path": "http://openenergy-platform.org/ontology/oeo/OEO_00140049" + } + ], + "valueReference": [ + { + "value": null, + "name": null, + "path": null + } + ] + } + ] + } + } + ] +} + +``` + +#### Case3 +**_In cases where there is NO suitable ontology concept in the OEO_** we'll copy the term used in the data directly to the `name`key for further data processing in SEDOS. + +!!! Note + + This is SEDOS-specific and needed for data processing. Normally one would leave the annotation in `isAbout` empty. + +For example: _fantasy power plant parameter_ + +```json +{ + "resources": [ + { + "profile": null, + "name": null, + "path": null, + "format": null, + "encoding": null, + "schema": { + "fields": [ + { + "name": "fantasy power plant paramter", + "description": "The column holds values of a parameter, whose concept is not yet available in the OEO, of a fantasy power plant ", + "type": null, + "unit": null, + "isAbout": [ + { + "name": "fantasy power plant parameter", + "path": null + } + ], + "valueReference": [ + { + "value": null, + "name": null, + "path": null + } + ] + } + ] + } + } + ] +} +``` + + diff --git a/docs/visitor/data/overview.md b/docs/visitor/data/overview.md new file mode 100644 index 0000000..888ea3f --- /dev/null +++ b/docs/visitor/data/overview.md @@ -0,0 +1,28 @@ +# Overview of the SEDOS data architecture + +The SEDOS Reference Dataset (SRD) entails technology data across five sectors (power, heat, x2x, industry, mobility) +and various aggregation levels. + +**SEDOS sectors** + +| Sector abbreviation | Sector | SEDOS workpackage | +|---------------------|------------|-------------------| +| pow | Power | AP4 | +| hea | Heat | AP6 | +| x2x | Power to X | AP5 | +| ind | Industry | AP7 | +| tra | Transport | AP8 | + +Multiple input data packages are created and uploaded onthe [OEP](https://openenergy-platform. +org/dataedit/view/model_draft?query=sedos&tags=246) via the [OEDatamodel-API](https://modex.rl-institut.de/create_table/). + +The project's data architecture follows the [frictionless data](https://specs.frictionlessdata.io/data-package/) +conventions. A generalized representation of a datapackage is shown in the figure below. A datapackage consists of: + +* **data** - containing parameters and values for modelling, and +* **metadata** - describing the structure of the datamodel, and providing context to the data. + + +![datapackage](../../graphics/datapackage.jpg) + + diff --git a/docs/visitor/data/parameters.md b/docs/visitor/data/parameters.md new file mode 100644 index 0000000..4eef7df --- /dev/null +++ b/docs/visitor/data/parameters.md @@ -0,0 +1,3 @@ +# Parameters + + diff --git a/docs/visitor/lastenheft.md b/docs/visitor/lastenheft.md deleted file mode 100644 index c32a970..0000000 --- a/docs/visitor/lastenheft.md +++ /dev/null @@ -1 +0,0 @@ -# Preface \ No newline at end of file diff --git a/docs/visitor/model/results.md b/docs/visitor/model/results.md new file mode 100644 index 0000000..eb1cbb8 --- /dev/null +++ b/docs/visitor/model/results.md @@ -0,0 +1,9 @@ +The results and reference energy system can be explored using the [dashboard](https://sedos.apps.rl-institut.de/). + +[//]: # (()) + + + + + +[//]: # () \ No newline at end of file diff --git a/docs/visitor/scenarios.md b/docs/visitor/model/scenarios.md similarity index 100% rename from docs/visitor/scenarios.md rename to docs/visitor/model/scenarios.md diff --git a/docs/visitor/results.md b/docs/visitor/results.md deleted file mode 100644 index c9befc9..0000000 --- a/docs/visitor/results.md +++ /dev/null @@ -1,3 +0,0 @@ -The results and reference energy system can be explored using the [dashboard](https://sedos.apps.rl-institut.de/). - - \ No newline at end of file diff --git a/docs/visitor/structure/exogenous_values.md b/docs/visitor/structure/exogenous_values.md new file mode 100644 index 0000000..c85f9d0 --- /dev/null +++ b/docs/visitor/structure/exogenous_values.md @@ -0,0 +1,54 @@ +# Collection of Exogenous Variables + +## 4.1 Framework data + +- Macroeconomic development +- Demographic development +- Development of living and usable space +- Development of passenger & freight transport performance +- Development of primary energy prices +- Discount factor + +## 4.2 Exogenous demand + +- Households & tertiary sector: space heating, hot water, electricity +- Industry: production volumes, gross value added +- Transport: passenger-kilometers, tonne-kilometers + +## 4.3 Political framework + +- Renewable energy target +- Emission targets +- Supply reliability Imports +- Business management aspects (see section 1.1) + +## 4.4 Technological key figures of the energy system components + +- Installed capacities Start year +- Extrapolation of installed capacities by service life (repowering path) +- Expansion limits +- Useful life +- Possible expansion rates +- E2P ratio +- Efficiency +- Emission output +- Area potentials: Assumptions for allocation to technologies with conflicting objectives + +## 4.5 Economic key figures of the energy system components + +- Investment costs +- Fixed costs +- Variable costs +- WACC (global) + +## 4.6 Key Resources + +- Annual potential +- Hourly potential +- Subsidy costs + +## 4.7 Import/Export + +- Electricity and commodity prices Neighbouring countries +- Restrictions on all imports from neighboring countries +- Further cost-potential ratios for imports of PtG and PtL products diff --git a/docs/visitor/structure/model_frame.md b/docs/visitor/structure/model_frame.md new file mode 100644 index 0000000..08a9520 --- /dev/null +++ b/docs/visitor/structure/model_frame.md @@ -0,0 +1,132 @@ +# Model Base + +The specifications, a result of thorough discussions and definitions in the 3rd working package of the SEDOS project, provide a clear and accessible series of assumptions and requirements. This clarity sets the basic framework for the modeling in the project. The transparency also ensures that the model can be solved with different model generators. + +## Alignment + +The SEDOS focus is on understanding... + +- The overall system, +- The technical foundation in the sectors, +- The possible relations and interactions due to sector coupling. + +The model structure is used in three frameworks oemof, FINE and TIMES. + +## Key Facts + +- Deterministic model formulation with Linear Programming Optimization +- Intertemporal Time-Span modeling with perfect foresight. +- Central planner solving perspective for macro-economic optimization. Business/regulatory aspects are neglected as far as possible, +- Brownfield approach: Differentiation between existing technology stock (0X) vs new technology expansion (1X) + if necessary, taxes are deducted from the prices and a global WACC of 2% has been defined for all technologies. +- Long-Term time horizon until 2070 +- To enable the internal and external calculability of SEDOS-based models, additional aggregation levels are introduced + due to the high level of detail in the sectors. This allows the user to focus their model on individual sectors while + other sectors are modeled simplified. +- Hourly time resolution with time series aggregation using the tsam tool [TODO: Link] +- A distinction is made between three energy categories: primary energy, secondary energy, and model exogenous energy demand. +- The exogenous demand in the model is defined in such a way that the model has maximum degrees of freedom to choose between +the technologies to meet the demand. The final energy in the system is thus determined as far as possible endogenously in the model. +- For the processes, a distinction is made between complementary inputs/outputs with a fixed ratio to each other and +substitutive inputs/outputs with a flexible ratio to each other. This should also allow processes to be modeled that +can choose their energy sources endogenously. +- Capacity expansion limits have been defined per milestone years. +- The SEDOS data are provided for a 1-region Germany model. Cost parameters for the electricity grid are to be estimated +for the overall system, considering demand and renewable energy supply. +- The European electricity market is considered but modeled in a simplified manner. + +## 2.6 Emissions + +General information: +- Emission types: CO2, methane & N2O +- The emission values should be standardised from the NRI Inventory table "global_emission_factors.xlsx". +- CO2 equivalents: The following factors are used for a consistent conversion into CO2 equivalents: + - CH4: 25 + - N2O: 298 +- Realisation of negative emissions in the model structure via additional commodities per sector (see "Commodity_Set" spreadsheet) +- Add emission concept graphic [CHECK] + +Emission balancing: + +- balancing during combustion & offsetting if necessary + - Biogen: CO2 emissions from combustion & negative emissions from production/source processes of biogenic energy sources + - Synthetic: CO2 emissions during combustion & model-endogenous negative emissions for production with carbon capture + - Fossil: CO2 emissions during combustion + +Differentiation of emissions: + +- Global (CO2): Foreign key mapping to the global table with emission factors per energy source. Specification with a foreign key on the global table +- Process-specific (methane & N2O): Sector/process-specific emission factors due to higher dependence on process conditions +- (e.g., firing temperature N2O, material moisture CH4 ...) Direct specification with a numerical value + + + +[//]: # () +[//]: # (### 2.3.3 Temporal aggregation method) + +[//]: # () +[//]: # (Temporal aggregation aims to improve the feasibility of energy system models by defining shorter but representative input time series. For this purpose, selected clustering methods form a number of N type periods with M time steps, where N and M are user-definable variables. A sequence of these N type periods should represent the original data as accurately as possible.) + +[//]: # () +[//]: # (#### Notes:) + +[//]: # () +[//]: # (- The definition of N and M should be chosen so that a good compromise between computability and representativeness can be found.) + +[//]: # (- If the sequence of type periods is not considered, the storage behavior cannot be considered beyond the interval with M time steps. To take seasonal storage behavior into account, either) + +[//]: # ( - Additional boundary conditions in the frameworks (see FINE)) + +[//]: # ( - Separate aggregation for predefined periods (e.g., Standard type weeks aggregation for seasons of a year)) + +[//]: # () +[//]: # (- The criterion of security of supply is closely linked to the temporal resolution and the choice of time series and the type periods derived from them. In TSAM, extreme periods can also be considered for selected time series in the clustering process. Particularly, extreme weather events such as “dunkelflaute” should not be mapped in the SEDOS time series for operation. Still, they can be defined via capacity surcharges by defining availability parameters (availability_constant) for the processes. These...) + +[//]: # () +[//]: # (## 2.4 Spatial framework) + +[//]: # () +[//]: # (## 2.5 Technological framework with aggregations) + +[//]: # () +[//]: # (### 2.5.1 Description of the) + +[//]: # () +[//]: # (In SEDOS, the first focus is on detailed model structures in the electricity, heating, mobility, industry and X2X (other conversion) sectors. This means that researchers can use the reference data set to build models that are as detailed as possible and focus on a specific sector. When modeling energy systems, components from reality must always be abstracted into components in the model. This requires spatial aggregations on the one hand and technological aggregations on the other to ensure the computab...) + +[//]: # () +[//]: # (### 2.5.2 Treatment of parameters and auxiliary processes) + +[//]: # () +[//]: # (- For aggregated processes with different parameters, such as costs or emissions, a certain amount of error can be accepted. The choice of aggregation methodology is the responsibility of the APs and should ensure the lowest possible error.) + +[//]: # (- Users can carry out further aggregations independently based on the most detailed level and with the help of the documentation.) + +[//]: # () +[//]: # (### 2.5.3 Selection and visualization of aggregations) + +[//]: # () +[//]: # (- The aggregation mapping list clearly defines the composition of the aggregation levels.) + +[//]: # (- A tree structure can be used to display the aggregations graphically. [LINK]) + +[//]: # (- Modellers can take the relevant aggregations from the sectors from the reference data set.) + +[//]: # (- Modellers can carry out possible further aggregations themselves based on the level of detail and assistance (documentation).) + +[//]: # () +[//]: # (### 2.5.4 FAQs Aggregation) + +[//]: # () +[//]: # (#### What applies if aggregated processes have different (non-fuel-related) variable costs?) + +[//]: # () +[//]: # (- Aggregations must take place so you accept an error.) + +[//]: # (- Sector APs decide which aggregation methodology makes the slightest error.) + +[//]: # () +[//]: # (#### Which input is used for the aggregated process? Can aggregation only take place within a fuel?) + +[//]: # () +[//]: # (- No - multiple inputs are enabled via "multiple input/outputs functionality" (see chapter 2.7).) \ No newline at end of file diff --git a/docs/visitor/structure/overview.md b/docs/visitor/structure/overview.md new file mode 100644 index 0000000..07dd0c5 --- /dev/null +++ b/docs/visitor/structure/overview.md @@ -0,0 +1 @@ +# Overview diff --git a/mkdocs.yml b/mkdocs.yml index ea09f96..3d37aa9 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -1,9 +1,26 @@ site_name: SEDOS Project - nav: - - Home: index.md - - Developer: + - Welcome: index.md + - 'Reference Energy System': + - 'Overview': 'visitor/structure/overview.md' + - 'Model Base': 'visitor/structure/model_frame.md' + - 'Exogenous Values': 'visitor/structure/exogenous_values.md' + - 'Model Structure': '' + - 'Aggregations': '' + - 'Reference Dataset': + - 'Overview': 'visitor/data/overview.md' + - 'Data': 'visitor/data/input_data.md' + - 'Metadata': 'visitor/data/metadata.md' + - 'Ontology': 'visitor/data/ontology.md' + - 'Licensing': 'visitor/data/licensing.md' + - 'Data Preface': 'developer/data_preface.md' + - 'Nomenclature': 'visitor/nomenclature.md' + - 'Model Application': + - 'Scenarios': 'visitor/model/scenarios.md' + - 'Results': 'visitor/model/results.md' + - 'GUI': '' + - SEDOS Developer: - '(Meta)data requirements': - 'Overview': 'developer/data_requirements/overview.md' - 'Data': 'developer/data_requirements/input_data.md' @@ -13,11 +30,6 @@ nav: - 'How to contribute data?': 'developer/how_to_contribute_data.md' - 'Data preface': 'developer/data_preface.md' - 'FAQ': 'developer/faq.md' - - Visitor: - - 'Preface': 'visitor/lastenheft.md' - - 'Scenarios': 'visitor/scenarios.md' - - 'Results': 'visitor/results.md' - - 'Nomenclature': 'visitor/nomenclature.md' - 'Glossary': 'glossary.md' markdown_extensions: From ba72a97b69b3e2f2859d86120a61b71cb9de850b Mon Sep 17 00:00:00 2001 From: BeneharoRB Date: Wed, 9 Oct 2024 15:21:43 +0200 Subject: [PATCH 04/15] Add emission concept description --- docs/graphics/emission_concept.jpg | Bin 0 -> 102861 bytes docs/visitor/structure/emissions.md | 24 ++++++++++++++++++++++++ 2 files changed, 24 insertions(+) create mode 100644 docs/graphics/emission_concept.jpg create mode 100644 docs/visitor/structure/emissions.md diff --git a/docs/graphics/emission_concept.jpg b/docs/graphics/emission_concept.jpg new file mode 100644 index 0000000000000000000000000000000000000000..af91413b89ed14e19180f88a35296a3cad28b5e8 GIT binary patch literal 102861 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

FvhxP6Z0isAkquPeyr7MLJ@D+j#nkg8Ww z`Icl2vM1`Z+(!h%?zWL*(f8G(P#yKTp0D5EOH%}YLpi^L&kFy0afVU)@VRF-rl|O{ z>*+}CF97OCD10gCQ*`33Yw;4no=qCHe5<-Th7CRM_0o%~VnM$zkqOu1_erkX%O5R1 zSHrZLM=t&Vo$@yo{*?y&TY>3a&danzpkB`dfcf@cfs!2MR{w&jc709w%|+?@yV{7+ z=h&$E>5q>~X~7wIgPfmZl_JS?4dg8FY!K;*R;Xl$BG8S}%|tM`@$L-x5#Ts( z91KIL6Ed?XvYBWd@&cT6P$?6^?heSA;Oosgv~nd|6imn6ndNBat$D{*^4&JNX6y)Z z_9E`0G#FeB8QYSlCD%u*P+6oqFHO*8xQ$+wr{erls2hUP6F}%XLlw#$UdA0S0N<5t z#h^^LWrceq&tVY8zfx}M@1Q!xyh~PnS2s3=2beDrDa-er4l4P&-jt#BodwumSU}j&9*Q#SgESoz zzQ{|tfFiBOSLknX!0&HB^W;aS0Dez4IGy!*NHLFyWL1~wBWyS1Mp8yaQb@`#SOuK zF+!P+JS`Bm)%NVHl+euQFGQUPP2{$FPEi~{HtTlB%^VAWnJc2abu&KPgzG|kwI-B6 z39oeI=_zmIglC<+c@C6WTGem3~rIEdYq_`i}JG)r9r1EdclaBvE#~xa@aXyK6#~L8O_Dz1q1<^&6DwNC%V^ehuY1Ij(eU zi6lXJ6`gh`A=*36bpohR@*nE*)!o;s%cciFTt1oSQFsT@MLy+j%J;tS5#Wt^U%H7nzq#ZJ9bX#%r}TQv|W) z4lZi1-Nb|iZM2m~!`%jQdv3J@R9z!c7s;|A!SWpq`F-d;Q0F)7#$M3bRMQxq(17P+ z1#bo|S;ggrl7z{5r7KbDXg_1g7Byt5IDhCuh)f;j80kzS{! z?6`*|d`vWQ1r!s+Hxu6KzkE$96efvzDrM+M+?9_7+hrhatNZ2r=1_)bBG{(B z1w+s`g*sOdoj?7}Y0xDd6ku(-w@l4fy;T#wHqbLyU4StH21c?vTBDcS&?Xu(tYxat z$_au~25(&Zf}?LzmAzYy5t?dYKt)3x36RNYeuT+-wq-)QbbwBH_i(w9IXKOPuaIK8 zjk-F^ud zJ-=*bFJ?%4>-p}$W~yNgEnq*Hn=D~ekF1U$mq=4ECHEIL6YARLEHaiq3}v>8%SWwA zWpS`a#`#P6s~*h8{qH@~}nUhFKF$k#D;CH&e{ zM>m+D@}tYr*EOdAkktB|+!hfL$_xCF4wX5C(>6N3N@0NYpxmxaov0Qy% zI!ynVkKIb7X`MX#g&ZM5{@R$J|Ej9gH5xcztr(VzkbV5(iQWhi;~$~zAQi_qmD-d1mU8`m*IiVzH9EQGxd#RJg}L)W=7Jv zM~F!80@o#~A;K$pj1d3)J4?$O&i_GdJ+aw*I)0g>Z+9BUyaQ=Wv6dWNXP^xD7co%= zY8x8{-%23boyLjFCwO&C-jfrlZG)lJ9B%2~^@O}^4p11RIJrmc>K?9KR%z^wML6zZ z7;HzkBlGOoQt?D~G_H8tFDa&N@$DfY^WvviV~)4ob_RBAi;sj!wb(;MPfq@)xkZuh zx<(v#WfJ~d;RL+8e|2(yYjnqXzy+_;b}|O0TLn#`jwyN1gK;1nir;hon3nOX>iH~s z|IImjW(=(E#p-;=yTPR0lhVPGVji)K8$j}T0RlEoQmp?fN1W&@vcvm}DU_Bp6^qgK zG)pG0?V^BSQQZVFP>7TG>BMjqna3t=EgnRg%DXl0=ssf9A-0&}7AC0?F(-*>UzNn$rqo&2CQa zE+>D3z=;t4CZLD@Hnf#B_f?4Wzi|0~TzFP^k)jaf>;RB({{lp`^Vo4oqNc^)nb#)W zb$=^rN)sv)@gC}+TYrRA4> zWq#W>7_N$612fjcq>(_~IQy^WO6;th1o);T?L^DsxDMt25xTvITS%eO7>l9LtlLLUIO>9S6r= z6gOy?>eZfAMdsQ`1a$5fea^5dI2gs1^_%@+-$=cx^rQ|qzJ)K2_2P(a2`G&gq;uI83fzmx@Gz{2pe+=JDzdN+b zIc(yX{Qe51N6=HG*!waMmZ^DJ$1_Y<{~xHR|Dx71y=qGfHTIEuADLx+4Uib~E13|9 z=IKj9-J36I3zZt|h!!PtN>0qlIsQ|((Wv)2pt;jf_Od^qP3lMK8dRDU{I)uXm%(*g z7nVQ1=*Uxc)K!5xZtxP-hwOB#<}3@!910$x{?p*Ez)jYd_cW;+`DEro70N!tF#$E% z)e!5fFq6PD;?#w(qQ_qh&=kR9TSZDW^;th*R)}SVm9wr870td!bX>-dw^5ul_5g|a z&Y>Dd7e%D(1z+>O4dh1j3z_m12|nTXJG&j0egMpeuMlN=5RO8Rm%OI}hODoDdh{mD zANqdLtKjw|DxGMLnDFGRyEPX-5DIqOH87}f5>+poJRl_i^nQKf!i9?t$llQBFd5B@ zQwh4CZeck8+VrNm2_AS8m&b=YpI+=RoMo(*G(JRzO zwRj30V{B=@*#mhzW^x0|9xuFKHvk;~oZJvEj2vHR-zql`kXV0f(c@gpd!L?O*Lrw& zV0(IIKazhu4a5d*mm*N=G#2UxZi0J0RXg7uC8A~}<{Vc}0OFyVYc{`Z;`G?EhsAV3 zfoqs--#QvC*;Y$iiv=1Ow~n$*%1k1!$$bS;3MR^s)UM>6FA(5ca2Iea+K^U};By&q zJkwZdX3Xqrn~wIO(kFZ7^l6i+A+(x_H zHnO7r7c>Jd!e0DhPlaW93vp;tZ#PWD$nC zQ(m0RVLuk_R4YYRsRPKvN3HgMUfc0!zzP}hZmIrzJEztti-F?xf~!GOfwks}=U#6OCW z!<+g%`DV3_rYX|OmG==A$v3ej>_2k-W~Y&V1fPw7j#5<8fOltFx9i&2-Ah13`ms+Z zh)l){j=J*SjyIiYRM$v(LzGWnM>e11FsJi6s|3$Pe!yEXOm!Viug&*15W)rTWZ*LA zWv`nKu62n_8!6j4MR&7$O?wcvv5?y9`4T|{K63pJR9pc@2eBg53K3eXRS9ca2|;Aj zbz_)47?)CS$W&aay;IWFT&M?^UMG1t0~i;h7?TC(5iDz4UHRCE$$>ofw6zC7lqlUY zg{8vVu4*d%&o0q=V91R6s;Pq$4e$(xpnT3eu&wAc2512^|Ckq$nUFB_dT?=)G5|fgoKVp#})? zTl?H|&OLYU`#twOzxGESl9jbsS#ypt=P2)Z$KrDl$23VMT6C9ym$FTkeQcIw#hUM8 z^A7i!(L(lLMzjTf9p&J5X$H^PI;4po%fm;Tj^(ErH(X!HbP#_tEV0EUSVr}oXS}mG z>B%#WHlJ6LA#g`z=nVXIrBr--DJRL1>Rd;$v!jO(-SgTmfv}ZnwYzG>?N@%=7FY{; zF&N9lL8dY7mhYppM^9{ZXmXe#H-3Wx{e;Hj)$vA0e3kgfWvl2JtxUHveCk;1k?Yu| z^1{X>ZDP!cX6^RLyN@X(Qm&*PtA?HGvCxs9D2e{F7-Zy~)pU!O9oG6BZ2L-OsdbL% zvOdj`!!CljO3TnG9}%b_Xn7A`R!3E-v<$Qn@4>_CeuIX!AUNd5?c3kRZ|-kfF05Yb zZ+gLF;m3C~Ld9K?bQqEOcd_OllfU^XD;;B1UUk@1jMdUOdyur+yWhTW<9khQ%*ySk zL+4K_Pv=ckZyaA~Y)t^=fk1Mgf?P$b+XFbi7BJ;+kb_XnQMMq?GI^;!b3jEsdqGfZ z*{ZKjhIaM$5SJ``p%Gt<{fNIEXoUz>Jm|6^@?X2g@Xg}x*Pry+nxxbQJ zNkjKscSEWEI1R`<4H;oxaw(9}56i!3NOP*`R4a26iwQxr4u7~bO$5&%rw86j(kTUa z*|C3{(eUKH(G{PNqGYH0+MjzH=7dkgqA-3D-f|QV@oS5_SARIxBwA>^?794lNsX5C z2@PEeX=(|H%g<}Yi6KLC@_)Hun>_n@o~$T#MSQ@mJ%|0k4KZb;;c~ewC0{T#>qsX; za|dyJfw}r{PJ<+jdBDR80K+(2T_RZHZ6rels+6!}TXmmu3g@iQmOuIvOvPIp+w&DY zZePr|m#L0_=Vg@_^p`t!z7py{h4C%V!dak^%iu7dQqRtg%6V~@9j@xC^6=ht6E2Yl zBC5J1!mbEIQE-omSBS|;M12-?`T5~nN6MV(rtEWF|e@xZ^|12!Y0HSl)nnTF*oA#nI5OxV51 zZP7X9-P_I{q$g!a`S|5?G=^B!f#^^n)6TXS`m{tqplGcZ7(=T*&IU51<^+5ryaFrz zN%O_`vaXb?X^_z>vF#i7ZWNL2L5mfK+Pou zgBB@iocPlJ*YiMsGP1#@cXBC?(ip!2>=gWP|L>(&cev7aq-&Oq>2*j|l&o9e0#ZE- zO|hoK{S}=YuUJ7z|FoF@VLAW%f61p9>CCVFm|6H(q*kDc@=1wYF&)>ra^0jq%f_uO zBkCX2J9( zs|IA+GG5k26vJIU89#~_S=})}i1#%233uK8KCgk{Nja=RyoB-i6yno5UU3wq960PW z-_k3wiTy!R=lLqX|!ENL&^56w&+aj%EnB!i22*`j|DYy`DGcQj#aKrfm-!l5EejD+~O>0uy#3% z&W% zEpS}K4mb^beOo=4A8-~L@gYC}d$tpf7aT#IkjLYVP_&TsdMFUhzFa5y8+6m?;}kE> z2E&1Dg-0}T;R1ir_+5#&JH9m|&+4}Xc#9qHzpO0;3!|1S2@1fDy1fh`Fs`Es;VJ}v z^c(PjMFWs5em&3j8v@BUktBR{WVv6ou2(9 zGQmAUGg$GjPg5aQdc8w>HLuv%5nTyE?7DfUr!Ek$z7(@_HZdXj0y$-()DMk+WI`mt zX~)KIlVBhe&ZjG%3iD_1o>KQc$ewypW(Ub?kR#a7Mgx)2C*$TXAE@-#b!Sk6FkU_ zl^@+h11v>F7JX!@zn)#wta+hDeo`T?rNXBVvCmHQ*F!2PKPuG`W>dU_~OkLxDp&|ooZZ=E#n->re2%19Ob9JMej?wqC;y^9+J4p zZ~p}A7bhMoF-ja;9*X6ztPkf6A569BM=ehpqT41=3p}Z7MJZGD)bX_{`yS>Na8JLp8 zX=mc)2E#g?giZshBy#w8&1IpBkWlTmoYz5Du?KB0j#xG8 z%o*kEUeNH#uS}z)clk`@`eM~OOz-s(s?Xw+WlgYK?ci@#Z7xp@v3~7BY#Iz5n_{Vq zjFTb{zuTNmQ%;V)m4OP>QqDpdwwlwp@C_y7wEzKw$cg6Y7LhLAPZMii~GBgqib4KfL4)Eu)WLvN>)c z^(9sRslW2DH>ttfaC?64l+60`>if|yjnv}Rz_Wo!0@p%?Fw^n!+ zG~O`HV#39z(dLPZGSnKOwp=~V`}(#|lmW@hSg$Gt-l|uPu#q!5f_gblB4inWeNJ1c zc;!Lk4H^Q9p7B#A&ZCE<@9?I$gD+nlVmS>IvY_8oF7eOZi3c-mt!?_mUE~a= z7F(N~C+-2h`cMq|y4Wl@s%|&TJD$d3<0#daRVgm#7TvuZ%ANkPS=E*3ZgfYC4dPU< zDFEw7NOOyWA2E)?4@R6#*~8#}QnNfF!)`mx>AeL}z|(V$1vqI8)~otpPw^r4*y5$3 zHv}s<#oWyLq@G14bdc4KWChq5-u|MSiek2QKDe-|I!p3U@DHllY~vo6QV zLPbTwm(fpo%=u0d@=NmwLzimhIdo&r*EQeK2$T!mLz-laE%e(7B%(xDl8@*Ku~ zgI+vBSv>b)s0~Tm>EJx_rbIp1RGr-i1p?V(@?#9?Ig=X;z#mkj{2TQ1ZvW_kHvQJC zPo;%GOr=rTJU`Lzj8jWaGP(isFhbe>2GKbYCGa*vQB~1ZsAR*5-Ia>E zGw%DcscP;xv$Va$N9C$5bN{hFp#L=1Wh!T$TW8i&8bCNB2X~>VuI`MX!Fo)YU%b=f zXWn_Fv)cRE;5DuS^YhXM-7gMsGR&x$Mv;IxoYCn>p7r(K^~f5tqK6u{viomcdv?Ul zIkA3ZMcp7?xNgZg{Crd}O&v=}=qs50b>i|Oj3G`5ya37$94ZC*{|3D&Av{`o;DVWi zI1DiuYrB^WH=hQ@jdm9wr|Z7dVBqLx=GaK1+cL~%if^wVjxOAYY#Y7faHw`;xTF5H zJ22HYE!?<}L1>BFv^5T9;6$lEC5;{bZZH8(A^fzv7 z6vLAkV;65Zk;Rs^o|RVHy@R8@P!y=?!djJ&{nA=HNEO1-V4rh#9AIFBT!3c^bqJd{9(`wcRi zJgk?qgIpat;$U6nr?0W9VKbi2HMq2EknJ$ycdhGvvI1w(e9%$+O)qK zNPRoy*~WS)=FRh1^5Q<>XDn&fmu0Uhl&N4oeOPv}I&yBn?nbAoiVv~iQ-!EDio`rR zyuG(FJFeOr6P40__1%1y`^*OfWS*a@V$)&|2k!PgEyo`&tG(R4q4ADe+A<+L&xf)! zqWsbeT6bmVRb&jhqH!ur)?+C^Q$EnELwM_0lZ&alVBNEtr*33qcXIkWw}U04xr+K)T=Ia<9i=dUqghiDBi0* zp~$|lVGjLV^mM{^Bd9U{W4H5oUX1!RHF5qzNlh80nLSOHIt$AzbxV5ubqoZwzLgL4 zT4q92y4-uf`na-k^uRVo6#Opa=$@#VE_6QGO=KxS9$Mjr}Z*Q*;jRL!f7W80FP7L&J~6E0W&%w_k-_2WOF5Pd6>d>!bKHAEDb>H@f5zKJ`W$! z#{(FMa3F_)W7q%|$+G10Wx_^i_8pP|$e+HahqtBxvAd5&I3Tx04j|Mp{Cz^QJ~*~z z9#lI^1Iu}NL1SF8MEFvX3+$bMo`xTp`1Tw!`Nlp;JfD8-7b%`^lCmoP%bBPdGgWMA z=5lm#p!8Oo5o=sIyW!V2CAY3C(TgassO@L9qeYWI+}kG#xzuPPed*LWgLc$!5dJ9& zSUQdCYC=l9A++nJ9J@et9zo|+xBR3ounv!~-;YsSRZBH~qfQ-jw#daYkg0@|44d2oM0=9*}j7Gw+_bv@It?P96HIUYb zguy#0(r=n+cV;(X$$-pjRo zK4Rv%l?doXVEeu6e%#cD0RY))$a1N(&d5Q044NL`m+ee8->9iu8OZAQK+PxjWzbtk zo;A~D9~NWn+SI7uyvmH-HdLuuO+IpbB)x0V7wwgxk#)1Oww9yoDYi1H9%_KgXXHL8at+7`&~>FgZ4(P-f3_@js~C_ED&A)FG+KA; zIj-!xoAZYayQM?^PZ7@1s?TcJKGdB5(6>rn5hzh!9$yBrSz!xYQR`n|+Q4-{O&uQb zXYFHHJr#;0*t?@EBEyhX(<+F=Osnmo>uSu3+>;42j4u){1aq2j=_!lomK(Uid~ny7 z>EX2KmYi8>vyIdI8JdWd%DrdbOiF)nPt|xfJ&9g*yU6o&ukfMS4U*3|qsW&8Fa}AE zhwI>Ta2`mQrWenr93Ipg6U@GzC>N=WXRVUm;ML}`;y>%7`M_Qu201g-I>~fRuoW-V z>a}S^9ZGT3H*GjiEd##C^5)3t=#Kcd$d+EFR-|4nbZ#5rAp<;$HqFZ%Sgy6AF}>r3RfhdQZ06 z(R&_Nm*88~0D|n(D)NKF|9`KBw|uU_Ik`oQlXe?yLHZXM7#zK)XYmiuHP!1h;Pk

4w9LB z#V&yz0vjc%tFFC&{$c^?Ci*3UvHGUEK4vEFo3AgTvFwa1A0L9_ZL=aL$e&Ijs-R+l z4~%d12=nB7jp!vsr~qy*uO24HVWvWwzV=`~=~Vlao&YBG4!0wcN!9S{{Lpl@ob) z#O-~GQ6HM|yox z@AshY%J)bT_S|~wY_5(OBFZrsVe#^(2K)m()BH7o*S=ZZx_j5KIz{=(OVZJg#SdQp z5hHD~#!W?k#Cx1Q!FN5KIIy~A?l^;t6f<_YcL1lc+!U5g=nJxaIEj-o)D?h9(Dd_f z{2fTXio!dfDB;6QT~_!<&R{~cF{eDfU{NS4h;o7;ROY}bm#IE+}3_=IJAkX7W6g!jbpsCtQ#kTkt3WbS>SNI}shjY&e zlDJ;|b>Fy5YrFnCKuvs=@OY%@3iL|fL##@q{7q={?7Qtz2rV9NRK4etsQOshLhkKl zX10eHJvD^Ik9q&g16?V?Icwlix$>FIsEg2{HX&Pox6h7gujE5YEQYB1pP1Y>lzw%| z_J;eTE0l`NrCB5xaQFe75e?1Wb3?E$)OcBot**?W^;X!SaJL4gC2$0=<60E#cKEvx6g~XByov@EV;^lt@r>N|j1joF67}+0ehhBd z28oB`yjpT78ZLjtyG{;aF3q?`zDP}&M?<;vRcJeF^?p?&8t$xom3}cbN&MUFghyW_ zo1?kJshI0DHD$ACf^veq_JuR<%HKl9!<6n7OC*T7{i+_h7t}e-pUwcSx<~WQ&vh>7 z9i|3${mjk++T=`8fcG!%Svo10zE@l@?KIUw&n|3Wai5gytUhwGA^9l#959{1%PHYG zA>I{U`Ot4B++V|0jkoPU4Z{_j3<`aGkX8?Z_+fl2n)A__SkT}Cc@4f~GMk}pA71gX zs^U$#f(fEBM8ozgg^UnbvIu!A;$Cr)lu`WMc+1H3bR_l40oE9%_0(b_%gmJ3%XIKm z&?3We!-eL?c}@_YF<#{nPOAW;O%2720nu8(2P%&CSS&StMCrODxGYfJe(h$QeAr?V zAMtkP5-M8OqZFUCH-&lYT(*JTsH;wPTcWZM*v$)*debf6h2me8Bwx}Bdgi=6%kfZ9 zy?0@6(!;~qgLQzu+p{d@f+1%+trPrj0(m$zIO8~-bLr71m~2@8?V74>uV%|Tc&jofm!TD6CZ)P6qG7_d zfv33V)!r3lBfXbLw<#UN^vObw{l$-l{zX)-63+1D%P#W2L2a)r%0iX^2RP`~I82Ux zYPbU!*se@*$kyWS-d~g|nPSVZ*=$Koh$ZeLT;O5^TYy1}S z{OaG1O^s&%O~m|T&zDbzN&6vWK^)H6V&^FYjeJKY$%RXk1f{aAv~o*JV>K7g5sjib zS!LrnfvDAoIxm7-RJ#hibqUW#QFe`NOG6>DfyhmHZk&7(bI2j{k|?cLrRX!)7juto zUjL-bI4()SRFiWP=-s7%E$_|+scFNDPuwQTZd6z~SUavh!R zo%$6ZW$w+T`Mlg?wZM;`pU=y4I$+YZPg7!e7?~>6;N^xLT1ItLPXZy82I8oIv`VifJkS^x_{#{i`kjf+o?Kq6^Ld zBgJvG00EuDAsYN%Ag@7+Ql!L`H7XhJV*+@?AKQ*iE0`}|xbQNmUo)`pzuZdk3(R~B0CV{U@^)ok#HB?{ zPVOxH25Hre98g*BK+CKHH$=+EhPk*djNgBz%EjSJki#*xoULyzMZ^O-a#6yk zhZeynih@(08L;4A$WK7iCpcU7+M|&jp9kJiu{m!9ZL;t8QG8buF=@7D(V)EEYjhd* zG|!NJ+|6stvm}lsm6R?z#g`^I>p)X++Nt=a%^xx;DW*nl_f ziSD+GJdchUKKhw;)AYXxTm4Xy{C)g&oM;=s2}})zwAM&NVi(Rd$MWK~$C^)DXx!Ui z{WR15{V{|omNMwmCHpr51T$M-6eFsl;n5fQ>X$~XrpRO)*iPIrE#J4Zj)Z4wjmoMZ zJCs7hf0-1Y%%Mx0tex?t#!g^nZ-CqCNY8O}i;?r%1SjTnK@B#g)?aHjNnEqINq|c@CUp^F8WLtuMYnKwq{B0{eXH$)OHbqmoF8-H? z3WmrN{Fdd|%yCCiUrh0$U93%su16U>JL$m6ZICK#%OVnerUpZb@ac9Nb_?EXzS>L$ zzz-RlB%qnbIKQwmSz1}!LI>adoyn!l7U^%5xRW>TxziFs3d^shr{LtO&vV z&BU`(tBf&zpEy+d9~O@{r|?hsH_Md3k3j=DG$lU#{8*uoP z*H>!dgF0e>knqj^7&Q(p8mH4i1PK3SzpaV032PNf5D20mn1`xkGxIaFr@eoJZaW}4 zN8Wd*U3e!V6S0=ni8Q;HnUBXDcbdAjSRr(__RW+ocFsI!4EPZBF}(lQvg?X6U;U+U zUiPUU2Rfvk5zyG4H|q^+!VI5*9+&(&83NHx(CgB1T0ncSu`DR3VD7< zPTGn%7T%ZNzHr{TLX}xw0+2XsRpWc4=*7I;W6QA4=eDy2dba)B-seGyaP9-`F&fp_- zc~1Mh$oXU0d$78%-~OW#OL%|yAU5o6Pq*n7%m$Z(;kKS4(g}qI-AmgI%scZ^hT_It zhweVzeSc;&@wJVkfsbCbT!}SIbr|rvnnAvxr(2Uo)rD)xE1s_8eFbMh;6!X>JV5Rv zgo#LAoENgf%Pms`IBV0JZqC#kStgiDR#f+wcYaiRBwE=jdvHP7d91-~xotUza&rMZ z*+fauY8ds=a1^|^NNiKu=kmE3q135D`WgAz;gceEJ12x7WDn0p=Y(1@?^IE7O1$Rp zEA~rreixs1RvaPuAXRupCCu%u%SO+@mIdj<3Y^?d1x?FtjBdg9zEc{j^i1s-cLTSm zmW$F*s`*z+&->a^1A#?=+z0yky+G61<4$2rc%)=h#-x-4hZIj`CoNG!*2>|B1+42r zx73`LsQFZD{q8j=Q>STcKk5qcW>biGg@rLi)|Cb4bLqWRyVRq3dy_|MuBx#iuxe%L z3szpb3g8Do)aK{-Z_s)o3}`adLJ21X#pBI0a?Y;_MWOLG~9dQV~;a=R7t9fQJ%Q`bLQOlFtM1diJrFx=hP zuff`EdMGfg7jNW$KN~DQSS{)L)CT5ef^6$taj7acR|PR!ZX2P#Jw4ktN_iLzYCfQ^ zyr6P+TWA-up~Y$r*#>u(=_)W>Ne2aD9rRBWF?8He;Cg6@eYCS zK~$ba$({C5=k|MoEhL1*I%>`{E+7bi(F$HE`Y$C6Cf*abX3rrPligEWJjHo;hP z8fr82T!%9jsaIE}W@4RH^){wEIHAO-N5=EMM{>+C=|&^N2>?Z*=^O?|ILQf&mjwni zM)xmAbVxVO|8Jb>4rY^=fch;80WBw+c+Q@h`WL&=OSrRery5=g2e&qm^wCNkVo)*! z0B3T!a!fpsRHwWG?^x_8>BqQBFFAQSr^!>Fa`T1GcaEn&Om8m&n`Rm7A+Fe>fHH)u+NEq1rl&=;_3voAL`RiwM~DzmI8^kFWlg| z_iC!x0YxP%xP)eO=Hwmo=I7U@b^6IRuPharB>`d<{NXNgMa2Js_(>NHfr+H;2*<4p zyU~Q;W;3{M7IT>-m!um5WD5Q~39RaZJ(~-tPgzmOclyOwM?ZbHpz7MfgD1dXvJEOSIx=Rn~ zPw!l;aKuVtZPuL_M{OWJKZ2@)5Fnrd4Jtw*=wqJCz2{?&r>s9d1`D&c0vv^@FV3%i z60a1r=&o{6atO^_=J%wmSSKL86m zTjNA8FoNb}^$rO&V)pDZz>NS-&nFJm0AIn2aw#9?E+&w%$4MJKSVl$=nepib9fi=m z$CZ<%Hxo3k&3$^}dQ~PRl7EbpG_j?-?CeaMW+&)V{I7M$_tT7YB{fs^^~o&Lw{~Cj zl4DW_WW@Jn!5x;D@oAr7Fl;sIBmNte%+h&jIZ(^09P2(5Q-1mC-Pyrm_Gh{50ke3k zGbN}qrYm07Y)Ot2tz(9!?jITO5V&O4|Dl@Eka)e`o%{zkWz2rO%Rhc^nO8f&163kk zO4IIJ=V(RalrdjyrdeYA@byoQ0)rl|)w|5ga-yC5H1>Do9pvU`PF~h?Hh8=hrk@bd zXIN%n?lCc2sDGPelv&}7>aS3O?fcv=J)Ed3IO?n-$5S@6B4<>wQ+2ctXMEsYih>h^EZ@+5`Z*GpZu*T$z2g_9{QPB8 z`yw4HV{KitdTDaJe99uGUY|)|oiN(_T%t;#;1zWq^IW!1`@u)nQwl31PsrsJ>Cl zs6-l0)dG3-eG?MIdc3iM{;;*UxDwvpmwKc-l`(mYO566W(HzqMn6-jBHrvbVgYVR= zSdb=2AmDF*gXY|N<8N!9tfCWhujuLpW?KPok9!Kv1iFYOk}C>yMqxq2a7q~2GV+ZT z^&x}-KMA39n$a9eFZj_gauWrYzCA;-7i6n+0&lb=2oys028vtY4lcY)VrV*f4)B{P zBi|-2GbFxnxkh9=$x8Yjn|0zb0o9;ly3)bDA+|jh$hd||?9CS*Ns$!W77F3hSPBGd zou^Fi#Hd-TwhZu?69=;1C07QCt&G0d+2sF>B^NV9Y;b-fKFqhceRJa7@D&4w$~tcf z0?TPeiVG%wr!xXQ&G>#y-vy72%bgPg#?D`u6u3=BpHB5Q&MCUp8|t6P{wU z%@#KoU(xt3CZh-qAZt}&msMKhBw!$({tH;LSS#n`WEE>fmiIlbdc>E%V zzsAMq!8~uX^zBgp&-0EMfmPvydBWctG8QhY)FvGIJrn8LGPRoKBEHJ$t-Mo~pY#J; z@IZ54Z9W}64L+Cx*bwuHU6B1h-T@Y_O1504Xw1|O6_I>c`6lXY}L0qYZs>G&0+&$;9_8o_|8Dt0)wXtg*r zo>8F$dRU!+R889}VidPTs(Nx|G)YoU7I2>oE;?s4x}G8VrVHl(Pw3=NvO~A z#C|neTlpm9V4wZcu|a|nW+jjg*qni$meI1hXXdbnaAvcrtn)0~x2h_^@3$%xiSb{L zsaTALJbxY|v(|we-1&99%o!&X+*OlJJ7Tt26H6K?UhH6#i2=V6$5%!XHmPAjuR&)3qG`W`T1;79LOrjn^4Iun-w~D(%u>c%*lA z?R%1vq4lpdr%(6qs|~z5FZ@-El{CQTE#YhnoB^tbP$w`M&|P!5?{iK~;0N}veIb?i z6^uYG-1hVru$ss)pZX!n1w4Z4?w-q)PUyC46?b@SgGe{oW4}(4`-aVO?#{QHDo27i z@sE}zTfj`4O;?A-X)ZT*#mGW(e>jRdCoh=s&qXEvOm^4#`Bjh1{Bt*HMg>l^6;k0B zOz>G23Ok-LdUN3Nv<+)+qJ+ERqPQbJ^5tP+WVtG$gyzN_iLB;l$>YH^3B}gvmYHpI z_)deymBav{$Zc1>-ayS8Hg4=Y1xdGojv}B0>Gwu;FlD^Z5>S+;b)Iuz#-_GBMtHsi zgbZHQiMNSr$jy~hd`mvQ0D4B9RlEQo*0m`KJa|Q1VcX>CFg~ zksleBfsU}PNs^P^@9;exmmVnj=I>JDh-M#2DuK>4XUl=)xeHrlQ!7-&M8xzuTSgyC z**^2UDi`MnxM&BOXB0sry2Md*1<+nt$wRsa!_PqMpG*M1vv>@;r}F$(N;2_^iqk1M ziUoiRMhD%&Srm2&(K|?c(|9fM5AbeFm)qSGT!{^Stw}ib zLRQ3>kuyy=BHX+ZxhN+g1kswb^<-6A zQk)}Gp{klYxO1QCm1HoH3u=$?jXp13vTz+TA3J_GFe7!}ssg_1S#A5m^aCn}Wj}P~ zl|*c+5D4#v@hx|ATeb+AX0-ZhRvu!1qS$>YMQ^*3Gc0u2`$&C(flDU;(Cma$i;K*R zGVgBUv2BpisG5u<(}X#YPaj?;zwPxU?;OM67Kth1BfdO5ibN=b}c6gwodJ8cz(U|{oowP6SM8&ox0Eej)%j> zou;=>V6&nIF(0Wnyy1n_q)*4 z1WDvph78n9e`4`k?A=WrbN1_d2iy#7&0IG)Rj$;VZp6GzO4@|_d>*3F)BobeIJQ-t zSqlDxfi900$&44mxJ747wF|M&KmkyAGxUdF2f9k$ocI617;H3@Q)wU9#E3V-sI&!uIq-UcaLe&~ zM-FL;590)W?tf&965#{OC__niriOi%z?Gz(cjVb&5AlI{eb^J2<>~y?+qy&@cm+K0 znj4@tK=;1+iJ-NWz9`41F7+;TD9f(K#8w00@|ascw*|TGsbEo6D-%AZK5`3)J7sw- zf0LIxNFi{gN@!V=s5bTs)kEV3^XdV~U6qrFR=wplm*p|+u~N&6LIwKz=T@45?T*th0HSkVzomLOoL z-*UlZCPt3Sq~5zCVlLb#GNt<}C{}CSn?<0I`~B26s8EYExD7=$z0S!#_I%VkTH&$8 zSIRp*J-o6>YTU^^yy63Ay;~>NQ|FBV=Up|#juidLiA`n8$^s_v+p^4q;idfZ_b{$N zT-_|D{peT+|3$_ivJbIX!ujlBgfd0!z}H_tx0~7RGY(Dfl)W2^5$Y`s)V@xKKq7t~ zjd`x9-#x!JEyNAPhD>_@?En$brtkmsxj|O&7Tez-JM=aOlM=o!&vX^jWtURs?|l5h zh8QmjuWRqrK6Bi#N@h5J1bd9Vos4_b3?SjFeq0_*ESc`H^#TV1?#`?GQa6rnuo67S zA&W5(Hk!chyd1Ejb60MO&8=nu0*2(Dn#+O9wxZ z3$qy~GCG~cxARL>IxeNP+n?R$MTkcg)P(lV#g==1G5=CcM#{boZ%YpXpqImDEmnBZ zS^#+N1X=1w0oLTY;3AU1G6&xi2Weu<+KD6RD~Fl*V}xF!l()FQZ5CYfQ0;w z;iln7b^R5}Hc2zOHEX&F>s<&G?l4^TSzfeEoHga>KMsPoGW48K94GVw&^T$)T- z65O6P5XQL#d$d^3#+Pi;gyT%dP{^6^TyV+mSF5DwN-}97m32XC;h46quw527iFzDE z6U_<0FmhOIqPKKNrFO6K&Mr^^V1e&(k6C%deuPv4qCO%7zu%zTn%5|-J>W`q zkNLAAN9FiHFB@!^DbB4;X4|g|MdN*@DWus@Gubp$IRD6*FTk!gv{%4Hl9QqN zrB@e2B2MP0@*8d~jL7H6xWG~SEwfYpL3{^RQ*gAl>ahuFQuCd;Ab7)lsSQg2TS{$< z-~A0zbh`{+90WrDiJ$+Q-*uteIj8zK><}5pc^mh$iDZ0bjNr30?M=hH{%vzBs;%pq zf3@e;kT>yss?=;KB=bITQvL$=xD7>y=W4N{snP_i48z=PF-NuI;y!hCjl#F5uPM{r zEvBWvHxf?K&7E-o|2O7>;oEs>{s_v+iiKcMf&Jx|0gk@i6seD$I9PKT2w!+yy?rYr zG={d>U7wvZB_2nD@oU+|D^$smF739?&I{>J@W!cC?Ou1<`fP5Z99!R8MMm!wQYR{b zQ2{6ph5n5n5c(O}0ROY3`sG}NFUCV?DNG)tKuGse&v_zw@~ZY9L>*ubkq4x zr#p%Ix59N86q-qL3;u=M<$tbFr4DEZ(=>=<8f{c3s$!|TbjJ^(!aKr$Vk1)LyB?N~ zzgqs}{tB@#$g~8Muuu|$a8_|XIqX&Fwyo%k*!BB)bk}bM(|0O%PEgJ!?0EWf6wiJx zu~ipwJOrZr*z+Of2>Gh3>e;xr{x3&;HRtyh2xaHGKT#EH+bnrO!%b`xRe_=!<6_Xt z+3L#7GewZHY=S{c%ZaT8M!Var z3bBRKN_vuUZ1n`)fmw~itr$DX!ra`-sEJL3lfzneaW=BVx0RT<@-*R`@(_Y0L_IL!in z)2+trFKZ)*n4C*NH26$F9JM*NUQNZX;Vg4X=PIjTnSbl;E9A>ixk@5)A-E+-M}FH2 z{^vOW%t`e2g);#HGq3@~5{wE7&XGEGIDJXwKU-ZQrTW9XHca%R-!6_e zHXQv1i4M0+#me5homtfTGtag!$XWep^-N;n+*f|@-<;8PS)27!{xupr6!i;OIF+7i z{021#Umfc*YJpgW31UeFlE zhW9FgHtn?T8ds0Gb61Zw+s~=$)~>DSsP@QR807B>x<;J5PaK9bh{sbwofW^2%Yy?W zltMdM1A0~(8bz!qR$fcq0mDRy7LmV>&mOd4CEMh0jO-AU0x;`7nN#%{a+(Go&2h1X zJn3n!duns~?)=F!y`SDTOq_|YjGrQbA2zGZB{r6L!MbbWWr3VAWx*E_+L z$Kgaq{8+Q4a3l71*4ph4@WMH+i$89}d?x9?yWSUZlf}$$YTgEG7!F2&+fmbuyzP1l z)k9zWDc0UiNm-mL{KRF<7?6L^2Z5SNsstU$|40JOqp15nbiL`nYZ&G*X8v}$KgqB$ zf7elsdu1%BMTy>U?d|^&OHW@inJqwVh2*xFJ?M;b3NTP8uIz)(lW1w`bx8e`05tj6 zGJx@E65Kxmd_}%X417))0QtQ&BK^;g;D4SoOzQuymjF~xt<4P&I`VmOPN1FjG8!Ty z1DbH!c9H>EdTs&GRh2-}bE)?bK;q}0pY#5C4ruqz|H2g-k8ml2MPC%1c^Xuc>;>}I zg0&CIs)PT-7Xkd&KYZB#7cT-({qwpfXw(WD2NhMtL-H)P$HfQg;wn~Z_#9%-K4+ev zF!{>e;;cI5S=MIS04Qp>O7LlB-_7K>)GCvXHhqcABN~$9i|#TR#FtGFg7t*FJmDD* z5_f3bCy(?URU%=JhLZNtKbqFLLm=A)x+nf4kZHPb9UE7(jG{Ghu;ds;iZ|Nf2=xJM z%%&#)AA9c^)>OB(jRrvxl&bU+6%-W_5fBkbtP~NkQiZ61GyzdcfRIoGq$>yrC_#~4 zB3)WSM@2w-F9{+Y66%5!&wSo}zU#c(XP>>_bI$kk{1C1zLo(N#bImcvJ??Q2Yv=0Y z5!BOq3v8;fs7tISmQ1$_Nf2|f^Q3CBA0f#PBaO?K>? zv1(L~eO{1AFT_;gb9sr?I(%+TEK+6cC8TC!-_C2olnkdYC!8lcBnnW%*a&&m* z!uc$jdI#XAT9hdbu(g3L+Y71l`|k;A!XVmUYEe6OF-~3Ui3IEiXWcfT z7WKj#9$Jdzos;J4&0Eh`Gl(^*Doz^7ZLtww@`*w#1x-KsGSO!gM-FpUuC#wRj>9yYChx3n(m zE}_Au`g-@P(PYnqM(4SOd4dGlKl49fTP+X9S>ZxAK}k1e-vo&tGQUFwf^ey2PsT^h zog??3T74^3XVRSbG}*s42fT@7D={9FBwevFtc9aHH#D`8XW|z2E!@6%|8!&h-KUsM z36snF8ToIg!?vSulu?oX>m7kZzcL*&Fp7PPSXui`5R!CO+g0{Ot9~d-Tt^<&J5YKc zC+l#hsFOJY0NSm`2Ky;44N`)`CNz})dj6hkpI<%D&uuljBY5gt8h+y8Ir;lZBnoN}MOhB4*2~CoEG3at@U?sY1rS0^;(7dr+EGI!LA0q~q|8OC4qZKEafT4o1fA3gksZt~?u9|@_ zsLMu_dT$mQ2tg*JiNdnRPAfZ+h;snzd_g>5UrAV`(U#^`8{<8_d6om+BhQJAF~$Fa zjf#47xX&!+sYUIF*K{Yr7;7J@K$RYHm%GdJ4S+qTPofEh3lM%>!?AWx(e-fkGBnP+kY1j}<1U6y@~GT*mw1hzs1&8& zFbf$}`@wlsp(>*cZP+B95P&iK2nA|aIBJ>eS4OS$kg}Vh#J<|)D@+)luzhUkTe6E3Gep*NVKZxM$_~UQ6D>E5^CqZ5)97OX+ zi02?=j-@3A11&nbdbw)lr*FiRQT63jp6vQ$bU*C+{(WDYPkRvx-3_;P0Xx$#0zd%+ zjFnmvlcgx&!{`%ug>#WHzrf&Fle;xtG8|I&y9is( zo|^TZ%E8MhR*+LCKX z?#$}$7f*_UcqCs8?iBUB^j7sgLjgkOVeU~$VGMm&!sVe>h*qsbW@4wW9_m`qagwTV zDXOv_KD%lqrhYu9b~<(jD+lpR!lglJZ*UL+9nxUr>D^=WW2i252LGtISm0Wba{;u z(`gzLZ{hnjeKQ<}BD)I0MMBn{cC9qs34LTfF6*o_Q*~K~@Kipwi^a*f6l(!FF-en= z@Y_E$`Ml-I!^ZVvBx)`Qk4|X6`yO;TtN=j?(u^JQ(+a8YH(MV~pGSun7IhaGZP+cQ z6;>$c#lI&#lM&q2Z!?vUs@3+mPc6u)ly0ukOA}&7y?@$YtW`W z*+vzPHzCdbhicpCRD)BLXphYs{CW9XBxMlL7NJTK7&0t@P8OeCzq!l$yUO@d;Mq7t z(%(cOiE}2=x-I!I-b^{=J#=ib2NlDUYG|#jrkRzRQd>nwC+Gsj<9hB z3ZYr)N8c?hEbnql)P7jqYprymp?Cj|?^?8IZ#*Sr;TcVY>>PVC_nECzzWtNP?t8PR z6EW$m)q^)`eJ0s!VAug%Lp{kBwS9a@k-4h&8zzy)k`|($0~sEpPTX=L2^z&|00!(D zV3qyHF)@}q&%--88JhANfX(zF{{w)&m2tF6B$qsCMRlHYWf7?jaT;sW%Bj$~w?AU2gsr zLz?D+r#Q(O_T+Vh_0_#KjcArLM2n`q(C2<8Y!ievdBg(HF4!LhoT)aTi(>X>u7v ztk!S4M656KqCqdzW2Mxwym;|~$oKa;RQuv>6Vv=ns;?GB)@qx{VbnM}39M%9p&yH- z^P&uMvV~zY3*J3^r7#!Vo;e*QE43wOdesGjSjE zq;OtDTHO14 z$;tVyS#M{|nV3r_sX{_~_NAO9oQHhq;xqhqIKcvj#iR@GJu@>jLJQXbv}8A*4t|TV z(BZ0lAbFS?f-%^a^<*jY0qiB)YBVUcowt;yHid*_M%A}y7gqoZP4{D<1)(1tDPx~_ z17`Bk;cV@EvtGePVlqu_fshR)HzFj;x)rL`CTgVNJM39U`c%J`$|n>Cb3G+Fe75JW zY?E=4zIL_Y?4A@yjZ4fI7*mkBf(&)3ak!QJ?PN>4kN9J5fT{5y%1Qf4p za|0%SNO6oaLl@K?gspdkqKea}{fN?o(D*ePE|}p;&Q?9rS>U3nrLwr8Q70Dr?bV~O z)0d7Owzy!#9%!lak32ZG5?3c^O$$VeP`E9gP243uA4pWLS{z1V_mz#NTwnGju5W3P zaXb!))3hTAsk6duUO97~HwTA?Q@_TTiXJEYx`NXK%!)cKjSVkIo{ZaJUk9h3>G91W zYa=?Jj;nOxH{ZVX-pkv=Hv9UI9Mc&+;iH420f!=rm1<$0s;fW8sW%J<$Hwdr;lhRv zxIN4-xvG7k<;EM;T3p=?oIM=6i7c)ei%uW)LL8$7Gf#F{J)rmzwl6ny@4m=Be_)MJ zR|#Xi`17Fc{PWNzz1u#@zJ1`&a~42ke;nB?&zV%dnZQ47!QYPT`K|E}e#j31b^F6W zx&3))6Q%+6^?y7>N63ISSqqmsQM!l3hR$ed?AykK3w4{ue?L(hw^x+?3n%Bmwy_V& z4@ET~4QaAEa3vn`m683g$S(Vwx>OC?o<~2!{<32Id~UsAz%E~K5EFX=6cP|f)OD8t z{OUZVgCTqg5Xt^B%(rrrx8YOikTP#}~v) z96+~?-FpX?ZY;VkrL5Bl95jndl0S5dFC7nwx~y(|>$Ir!M3f!-vpUc@O34gYOIq7! znQUqEPY&R}&DijoQxY1TWXK?K%@4I&B!BHHF;`bSqCQm?9Vf!fczjekPoBnS1m@@y zt1}@feX0o`{?&8HcJ0!WolM#`X6;d;>v_4_;diMx5)wBY zhL+<;E9jb>>o242+OW5OaQ4Hg>(N8TtdMX+hQI(=S%B;Tu|EQnPZ$r$6oLg)UD4Xl z2K1}7tTy6)!`@Q>EXLu1WIO^3+p;MC8+NHFleK#R2eo0MQ5PWjjbk+92&@F!vt=LD zT8j|s#GIEq=M4_uV-Hlut_7=~DySxhJoJt>gDv9z_$C!xLm$!}wJoiHr0Q4!FU+wC zaR%E?RE9X+({c6sF1F9o=LN*pYFu=x_1h3kHnxb{2OI9cdig|KNAys>{dh4v%H41f z6w*R1JJSoP?s4OTvfl?P&bn#GS+yu}zPeF{mXpe2ANbE-Jl*k}w2NU%t7`0c59u3- z^q;Ej_cY#j?WMWtFkw8&>+SPMkt(Ha>wdsw8{})27NuHdQ)=W*sf1`1ivxs>JR)CT zS`Xat))Q&F+P(WUU0?*sB-k4M&pG?s?607L@kO912TK;M#jxB=;(M-na5~wfbXnNp z)$B&OGGC3PMp4(NX^s8vrAkV5ycvep)Ro=|cKd5JuC0R8N2goTUsN>OYp0sPn-O0n+XvdDt$}nx+|UBB}*c zmh`7#JCM}7%i*pJYic!0uv*_S2Rbsh=;VI1U%$++NfLkbjizfZ&+}jzO}{G`cHmLp zDf|+v9i!bU>&z~H?8||*1KsnJF3{nYMQ{Y{Y2END{ZXn<&}c&N4rW+*MJ6N-!)Lna zjMVpt!q_q5*S|d>dvT&rt|3+N`8r-;u1nOd?MS=heD;3pyqoVm4tSp3MZ!laHYOm; zw(SJnLi$XS zM%6Jz*{H+ehFyz+huRJvyckoRleM6fvJ(Y`l3OiyZ8z^PapZE&>vPOMW4wxOZ+ulO zmvz9FQ_J;UM?FaYgUUUT5Y(OW-txh*`XUnt5Bj@dx6 z_gbXQc{=AOS^veb6^CW421XAsS4;mAlRYPM#nJtgxyg7=eVBmq(!~JZuLazGQhQI| zyZY*Kq-;UmU4H9AO&I4h%VE%L={+z%&<&72z!j-3FB(F6q)#|9oYj=vwt{V)X6Aa1 z4Ojha{%#9Z8HWvy8D@^wxjV@ZkJQeexYgWbDt7%6`#=C20XVZ{65kY|JV^RD5+w2S@)Ckv{J3dkl40>PHg@Q>kQ=y|eQ6CtQFq7XXNPwr^iv!}|v z`ylnpXI~8y|AD;FomXnwoO zkkA5FhfQ|V)3n7?S`C=O)?a+5l&QlnI_^Cq9sB~$W0Xs(e=M%c?@TtLF4lQH>>@n9 z)Wp%TswY5B(2SVW3L!E)sMo{k)=*J5r6myKJFzHnw=d60h9(lixLa@~ePjT2h5O=C zitC;eCuH`DacMnOwv?e?Mx)3Cf9Gl?GJ$O#Nqs%H?SYRLgo67X`65=fk~I`A!LGRy zT1jas=OHLm%Wd3b}LAWMhA@p?+{KSkPr=#<>9MPRFrB1l<7EYSWoEPl~yD5XC4F zwjvsZ^GLoOSjQ1n!p2~AqJH2Q8mNuOAa=K~0i2sX<18(mzg;;G4;e2;HVq&+7*DDA zsFMpHdmg)0#nbPW$Z|<@$=H1yFqEj*5J;IYF2N|%3ttJnc*uja0IbR7%2q%F5+O0XqyKir4+$rV zGu)`t0SrYN+49$=9CXa8LDdhkon(50`CPzM;H%ADwda`f!-%8U0W)}50pkH>QD)LO zOy$dZ)v=!?RISY5{I0p7IqQS@KWl7`_RX0V)h1X^iv47T0UxOp5VtzE5BH&qKDtlD5uG2f7|AytJ9FmK? z`st^&(b z{<`5ZZ1Fr?n)L%-Y8aq-SEQ+x#BGVQvz#A0*U8ZPI6RkxO5FSDf|cykthi==8gX7;Jq1iTc_&*bvb0Q1jF|iT@D+FkNtthw~oE-<55*TJlv^XJ=ZXXQj|%c}%8EQYepvqYwBVCe{`2Ea*hElK&(Y0H zJ`$|k(jcK5e(c66yO7j67{%+G^8{q;Nb$1Gn`E_bXq>3Wn8;0JI*u=-~3hJVd zQwDc`cNX(sDPlWNaK2zq9YPa=Pmmx3j6mAFcVzG@0$Os$6RT4BDd`Ha7cnT*k)*&b z62@QnB3OOPQ=kp|g4IqcPV90{%FOMd$I{Tzds?^*k2aop7gX-)6- zz1%-I3^|Msjoup_8q+zoY8@J(Cj9-@9Ud{UgQEQ3j3e+P@Az0;^K=AcWm4Q*5*_l& zKIz@t07suz1EX#A2ddjTts{E(R|Yn#*&$k;Qdx<3nMd{4-qc__uk{uiRXC zKQ1};o*$g6=~r+U072}ZClvn2YZyid>?n6;GKqW|iq2-3_9=MIT8g!0B>YlrJ-kZz zKH1+INmAdxK^T~uLWnZtshM^7-R5ZXI`0$Wy8<6C%X)Y$d}r4XesrR-SkUm6;jD$l zKapvLS{PR$(gZ26(grBB8Vb&`Buc8@IXR7O-w(DI^%FAAZr0WnWsmi5^UCjEl*<6l zZgk_K;)L-FH@pDm618OKp@3Pj{Go|}JBr6;Z{7WIO5>7$Y*aM~oIJL^`WtaTokA#s z)jb9;?!i1rACuS+_GFV>@yLthXVX8(JriO-!29e6`-&Qidk_7J9MTlS9LQ=WED(OfTcO+fWoWTZ>g)7KRt;f|8lq_Pm{a*PO`33wt zlLTfE^U=04rI-ijclziwL=U1Y!M^Zc(6sQS5OzZn7kd?DKXol>n&zm!?|Bq$_wr({ zL`;t9g-1iFDW#P4O}T{@N^Tj%^>Jp%IE*L;<+N*EotOt@Da9L(CXd;RURM;RXd4}$ z<6Vr5d$4KvgpaEe3BoeCgQXgc5TdG_2AL`Dj1y;76pZJIJ4LO&C_WuLV*O=+U&-Za zh1!DEWH6}ZM)H_ASW5ThRlCYxdXG-lC)uwhC+3)K9S^gMgBC4cuE2Oi!8A6b5m>Qen|>>QWakjz205Z7A_RVaFbG?;?) zlit~1ZU1q8J2-kWlySRYe8%(Pc7txPiSXFj%U`%FKmlxI@j;$HG~i(LQzKKW(DpwSu`NoO3rJmedL&GA}x7REr@Z9eg}lOXQEggjpAy-7zJ{C z53V>Re&qaVPS@vrx+PRc2@3pI}t>{(x za>rk$Rl4@0&MT5t+1T15=Y|xGSZe>_0`dh$>H|9WUWxvweBDr4$${QwEB8_1fifYZ zm%dG}dZW`l@chI*kmn^Du5tWDKS~^PW=yyzhDFy#@i@%7<~R!8Q%5@;F5%D-u!E{UxAVJac@Dy5!Z)`o;7deGBmjMJ|1fr=%3WW zX%F>9+EBEl>3ThjeaqL0{)+`pKgCRC+>d|5rY14?nI90mV+>BHj-t40Y!^B&Q_=QG z1JgH`(WwVzi*0gvr1G6Dh$a*9PPvTB)Y8bG`daV$aveE3k)v+*ai)fa9AVS)=Jnz; zR8qK#flaEKd?xAw`Toqx~@t0Oc?<{AuJ6J4Ol zZ9gQh^XzbbX>zNZ!D3fvx&FaZAFnpWX&Z7-s`)12i|Ui4@RYMXrJ)Rig1V2tVb1p) z&91*fWXg8VMy#s5+P%%w8O$xp7U3Ed_Z4!P6p6w}Q6lvl0n^((QV!LVIJ9}QxF$xu zK)-DB^eJ^r`S)kzNwDo!if#Qk2SbwT@&bEc7S6lI^fakNNCGtU{)nM1d3SC>vL)vAp>=vmjAjmLu<9Dt+^cMYTaEd%Rg zWG)YBdOy#7d^75oL2_Y9%GEXXRNnvMjgUNXR`1jrw+$CssjU8{c5`D3^{csoM2)9< zKSDOHMy^9JD)8wR^p|_FyNA+q5xj(!cb5Qc*3~QrGV++ht%9+w;WduGApF*HdoqZr2}#K*u($G;G=GV zpmoJ&yl9*W65Xu$7LaHoKMpx4efT1=bYhwI|Cn0gj=xQ zspcEI%%xytophL|I3muM!Ur9hicj#|TW-9G-#1xGZ4}&Ld2z%4k%^A`Nv{@(&}Gzv zSs*vw5rmLO8KppzR74ZlWn7mz;`r=r<7F)(UqYiKi8+8I|ZJ_N~Dy#nP=V|4@fhF}+z5*F7 zcIL;Wib?#jk78>FR+})>RLd5McBU`I2N%4U&D9?0G1N7?`XbQYA$5dH?|>*RB8u^_ zN`HA+pQ75|>~x9p*x;k-{C4ScZ|6csAwM4;%bi!W&2zo>oJj69_PnmG&2x#;F|^tw zJ{_Qn8cr-n4tNSM{nwN8x6EZmyg&3pOjm-fY}X=s1YPtdaiw)7k3l;8pZ$h`QL zeT6h|GJ|{{J6$$i!4CgI4jX1B{&E@}&v0yV*We4~qsm<&lFq$?%#yzUu>W8mGI(Vx z+Kp(o@9pATtyNb0GjmWDgL5$4k7lnWQG+aJ#w2JR&t*P4R#}KN4cXNMw?CqHuk_C^M;*3w`4vtX-LrB|evsq1B>hKlAhwQkn{5#+PM znbA`~0_}eFVM>QM#A}<-P#ItNp&E}{aFKQR4O?cbW7xA!(h{OHeGjRF4PQd$^%AQ31jK1UM?YLA<>#~2fS=ylI^N9De`CeY*Rf;q|6m|<9ERc((*|a@g9)cc97K%z<|WIY?&KEN zW(uzB57mWSWj&zWnkODInh5dF;uF-JMIObY-gS0H< zKWV-@-;ECEo82thefh|JNstzBX0HIS9xU2Y!uw3{Z>e`LT@0NLICO&>RFK~K5Y3E4A5kExe zhwAW&@t_lGiXw{E6KojkqCneKO`OrV9V6>{YztXn{bUd{X7v8CR z_CSO?Va_4O5Bcv87M2NM9xIZjLAxiW8g!HS$`_>Mjp3WKq-*9m3UL z0zUA`D)8e?G)vH>NRRpM*TV4h8A=qBN>?^UPX7koKB|vrSFDudmba_l6_j8K*mDcSRJIbgXJuq zWq>rosZ035P1f@>fI(3M>J+34qFGWM6uxbBmoO5f3@Fs#Y2clvaWW;#n@|ifAgD9L z{`UX>6xe*PmLmWyDN>3$q#D%FZAw~cwcxe=bG95gu~Ebxwh;`RiLYj-3U}Wsqbi1U zUpBbXrJu1n^=|6;?i-fcR{pWIpi97eV?S&iQL&HVPM3!?%xJ>7?)eU@S`>X>-(&Ii zJ1nk-S47Kkr&@0tlYZ>#2n0py4@*m-1Zh z>nCeuC2^5o+E_>W8{N_f;1b%Z$i>wOR3G%p8M|kSx!Rj|Vk&V=0=4kv=gN)3U%Wgx*QBjH0Q>lqks?_brWni zEoui-$O5>(I|XpGZ%j4dqsd}baCK67KyX5%$DO&Sd3!pvRKqjqA?S5!W1D~p%X<=K z?x+7m!zi->P)T^BC;4{Fc#mb$_Lz0L@0q`o;)`&S5?UOIx)J`4PS zc`VHx*lWX(JG85shlcu|q>Eh(lWqTXv)))e@xs;=o@ifY%Q%BrEjh*U_JhJ+kf7$ zF;Li?emDI~hjDhZ0aWk0yD;_xx^v6Xzs)o@8Ssn~|2E&C;%-8bA*fb2zLR(Y?bFWnJpCHl_+p=?s@8a;e6lsjft%d?LAaS{#(iKW zO#jNB_(opA0DHlAhDu-x08R-U(pLmW8(@7okx|>g4;DpI<54WF^Kh%1C`pj{Y^w&` zqRY5RPL?1@zqaJIBQ$Vz*BE!z0vh4FiTuzK-#-1*xfT$<;pqwfD?LRYo#`Vlck#kF zQe4Aebd)jFHc=x-IfJKe;P%ayvCj77f2=6({26h$UJvclX0?Yx>g6D|$o z;p6+NHE75NcnL9?%)~XEi_hwu^@yKP#g`J(vBzw9VF#SF%Z%LJ@j{;Z)Tj`f zG`l3)I_C~|W7x$!o#o+Q{pRuui}%3haaAb&Yq{PXFPQ`(vZI#=gd0yD(J)a3@gJ+oM) zo_-3~Mi#<~w?DTqjw}RRHV=f zG7LG9Zpi@-geXlzvJaAtafPPZAL1@nk~?3+c~L*vRrA{29<{f8H@y8*N_GCH+v%^I zS~A+01tOhhKE~k$z+k+=nTxpx3acO;(570QwPR*mBp4xs4rdrx<_UzE% z;VSzFB^uW2M?O&bnu8(p2~u#1I5baT?zs-7Q;uQ?hfW_d{Uy10R^!tBocOJqZ(r7& zCxEi2Kfld55d$Q>5S$DPT6qx0oI)C$r%}R4g0ru3$6NESkHKfLB z!1?>B>=nVM&-G7=Eb`F0DTa$`^z)8zeoYM{DTgw#4QRa%_Za`HX^ML#0uO zD-Q84W5~oX>$p}Kkk71|1C?)?|l!MokawIwr9asx0K*@`j?Zu~h zKfW?WiCC{3mf_yIp}cHPY*Q$#&*`n1@_pMb<%;tw zT7tkBoL$@TPsZS1-`HR8`R7u<>ZqD$fJySwW}NAY10_$dez2$ghMADez%vaUK{31- zI1sEP=irXcj{rOHul{3(eNHhHDOBPTw6Trah%nxcO3S?`VW6hhp`Yh?&ac9iJkKL;+>_roc0mY`u&i3S4syj{A8L;d z=JQ1$`KomaptM?+5;feucz#UibES+y?-bgJaG)aOTbyQ(j@`%uF>@=v*8%EZC=Vce z8tw`$J)u!|SyPdsC}Lq>E`B{dZOl;hU0h9-h1jCem|M_j^}Fv8mZz*o-xk19d1~}G zYN!gN4c)H%_2vEgId;nh!%piA)2G7N5{TNYIb9rmy&pt*NF>cQ5yYDS=SU&^O?6|=M6!eS|?yEh0w|kvU zE(kc48zz^U&2QH9d?d!DUF1E;BY(8jxmMChyMnF&5pF>~)ai@Cn|kIXUWP_rwVX$r ziof{M(zm|d@Awj8MeQUD5Ag4QE!`=5D zt>-gInELuKbNU+lXIm>HW)46TTrv#PoAS{)8l#8!_|>T!2?~QH-5DHB&rZP}8*xLH z_ZA)>tIJwL1y=UqC!N?$;wfK-P0&2mN{4dGR^4p;%N1K$1OYYmj_dO6pb&-)N~bDb z=<2R7LK_?P5Ht^ev=cA!&L3^OX=X9dB&+v~UG~JIh|uc~ABY`h+p8uHTV%;%`z(d2 zLq8F(%A@sMAY$%jIxK{0Qg1yGeA$lBMhsY;!r zH*A+izrZNkytf=hhnc3vbp0CZT_kpk>qvy&?DSs=HAu(OIKooqH}2EY^P~?|e5&Y_ zBPAhs>pyUDeRlkcY~_W~bGnp6H}6sNgrc8*@Y4!F4(+SYCl534Cfo?k!(2=eNj8ib z7QqeiopAklLHUb|s-)!PgHem}aMI7)eWdwsIHqv#s!=5QEXI{?=O9vP!%(x7>Qr!A z$MX*iKhkw#Xutew&nP2ex($KQ3b3E@^4tI z233dY-h*5#bJ#W`f*e@Dli#qf?;sggLfFzIi6(g_D`8WK-$>7I>kWTyvu}_U!?xXF<0K8Ney4O-b+V;WO@ zzY;EdL*BkwNmA|_+Zb;fZY5^!h#;0t**f3NXO7Z6R~O%R-@F1M0`mV-X!sAmIm6Jc zl-`UGpf_$+7d@ereQ!>9_7IfJ&g6${OaUQ2LkT`wG--=&;RO$49l%`fVrf7Cmo$DJ zL$57=DKkEw!6lYIvQ=S04v27y&cWAMR#--zJbo(OE*-rVx18Ji8>aZaE-3bO&X~cF zMZS}8I4SF|5la2{5pp(@s8`3g)bRUo1G725VP|s}a-e<|7YO2xtWsR)QmUwFA>TL< zq#8E^{+Dq6BuWfBFwTczV}|D;1N!wVd%oGRjyuUOrdyX8S0sEJn!3L#cKI;TcTf^E zU>w|U{CyK%X4Bgok_&ZTf*ueY$GKHPe}&CA^=*30bzRx>I_1|`XY%(Xj^kU811>6Y zyPA(3VP+qxpp_tmAeV`+ESWj0D`hmE#+P&P8~lggH7_4%?w0(vwEtbssa>ZVRM?j9 z82dYpm!eBMiBdXg&_44TkW?_5Em__(*CCvsMH+l9fiKZh8cKee>a-X2yB`xk={MlQ5H5fBzT*pLLiJP*J*J$WXIg zh|%!c-ekozp{)Cx$4hk>c$bA(P=>$0%sd?Cr=`Eq4S1IL7kG9T6;znzaojHGy8gVE zY_Ck>A^GElN(IwKl6Z$TWWcs`5E=g*%hQEX%sx|0ZdEuk#G`S;me<*-PgUUSOPEFi z=K^f4>4PM$2DwZaeLjf;EiCxm~hS-yrBhfIPOlpK;uU6IU-@ zr1+dvstwmOpU}*Fb;a@4w6B$S^U$33tJtM`vA~`-BIl{%LE{`AN zDtNsp?*%mF+o`laE$^`ea|tIS-oj z5h-yucwoNvSJ2wwbmQ4dM|67w1sOs>NTNgPlMFYQOL$LLsh`hg2jw@C?LScNj-_)? zoO-xRU8vQ9HE4O@#}VoY;$cXY!pA#{IMerd?VU7h`UYsjHw5SIKl;3c@6)ot+n>86 z{6$mwvW^ni`f&~lmXnsWyCgrB=)5$t6C>xgajuVG>+9qY@Jp3PMY!G(z-!#cp$^3BFv>MH@;b-gT@wMX7Z;BqX9I60&6L6Rt{_5?5IMF-V<>uJRWmT2jZZf5-dob}SpG->gC!{S1@z9QB zV&Vt%p2j`-Gq1jC)Sc+xy{dj%8FBvZOe2U?uC7K8w@i#PP8bH+HW~@D9+i{x`(+%a zK9-(cjithn436!7V5m6ep))EqoHwEHtYOOh%~6|-WlN)-$m*B4>IRoizI)j^R4}~uCXM%JvdrdLV9-oRW1EL_$TyF zq7`0J-oLW{sh)2?EXU&$VtobPfQPYqki~!XQasp1U4n;*jKM(jKqsXg!%Jv%e8!voasA|aFUvSlVa zf)~`w8d=3&-ApQ)Bq&ownuRO8LTn8`zg2w*5BtLWYDEl<&&rkTp!8X`f+3~DSyOB+`VWy>6g{>$fvvXwqGK}tA@3**ry9=A{!%O%?VUD+t}5=i0Iz} zZ_qjxOSA1a&pe$aaW)zYs9e8GcoxhdiCrbAu3c%Q4Gp(yw#x*ooLm|eI{#H}=D3vn zosxc)Rtp`&&-$$rS@GzTht&0C9>m@E-3|D4$RfjfE!zoHEu06f*tpNEBX@T3>1t_s zLilF6;ME<4u(zD-nP%(TW>;Z@|6RbLKM{>&Y0DczBCG(%Zo7ZA`C%Wb4L9nU?-h}c zkO69}v)yYZmAZ>jQ72{8Bw(J>wPXtbs$S*d=bDs+M}s}cy9rkMYPDP_XHuM z^t_|m@HU+&aj^W`%ul$P;SxAQKL5XfULxr+eEZBIaKyOhU0CX-zK=py2{k+MRtq`u zlPCya;cGDH^`;Ycyee?wn48+Rn%B28W$d3m?u8lV7*ItA2Um>|FLp zzXf>SnN(7!0#U4$BIRS!Q}9^P)hTVZTh>ldocfMh4m0Klt?HAv#55(fqHL zmgT{v_`%Ez3DpZZ$fwDJD+y7BE_PrlWj+T2m%1_#)8X=bpSK9AgWCa_{o53F{W z*KwmOhj)jivayPP75|pM?rS}L*lLrx%ULw5-5$O;JMS6*VfPxSar3yiMP3Tp6Q+fbFN+6*| zNaDNwz3-Xt%=7%_ob!D%?|gqa4ttWl*IHToUU#|f>#|&-O%CNIX%pf0OHh^or|zi} z-On|0%?wpfi^Llsjr{@k6OoXI)0%Gge`;v464;Y49*D#%FmGbal2r8Kg=!4DMS$|! z!pz#yu9d!yuvuO4%&Cr`;u5lH*y8Pw?8=~mgO&YFv{`8tZbl3{OmsueR8f)^|7^b! zCW<8D?-v@-4bcEVBjt1yGwB7|$C1CDCdU)KDO`m|pMmN51Jf%3_J2bDKd)@Pf&Tgh zYN7rA?R)w4iGwsLaa`9opXee3UnnEIAOOY46Urp=!1Dxnp&r5sK7aq4@_(i~67m>G zq^mE^4NCyhb&JD)H$vr4b`qTE1NSxk);;C?^d&qq5dwUlY?I%uTjXQzt8J$fBWvktvcYtz2u)Kpps?q`t0f3 zV_sJLI!VqDXAT(2-9JXs7_fWnI{)U<^sUAHJ#Y}y|E+J@6rS>ij#Grl9|Vb!1;nOy zHZ;>T2~^xu0I1N~kc&CLo24{y^xn{+iOibH2{N`W9t3MUE6d$19g+yjj{;n9pybxq zOw6YA7?}R*f;gJ4gMeP8qmM*GJbYnRtd8#o+Bq8X;ub4>t+3t{IZx- zx&h?Ppos5Vl=$Ho`0gp3AlDGLTZ3JYz@Kj@4V})VBisw}sSI!%Zs#h`_Ae4EGF#6I zc1l)t_Pd||E<9NjNmA(9J_Le)=MKy<8AAj*zR_T3)QQ+1a190r0M|!oQ;CKh7`j^}PspJ7#F3#bt8@Iu|arSc7dU8pGx9S2kJQ`%5ayS5)_LJ*(1SF#G>tFiDFr zR$_t|UI9CVAn3H-CfR?fY(%G-j0;a(hA?lWG^N=c9T%8Q>0LKWeZ;}m%b!yd?uDmc z{l=O?OF;o z!3nt>HSQ_*sagJ#Wv{eF!Qgl5@}8d4f-v=XaxGd21|~knYg>CSn?}YY!(_<$&@*Fy z-PV6=>DM!Rjec*5;=8eUp(Y8`385o_N{Da+O7{q~I>9oVQN<1Qy=+0qWu+Z2UrbG% zEEY~isY`BwXecZomY=z2;jzb<8D>jfHpPXzH62cWU03?$mps2UO5qBKfU=U5@U?Yb zpLj2=JQ~A61;@TIdvNKde^umXsmN&#AAkRzDHF4VT-%!&a*&vA^$E_Fcu zvcmRC`Oi>>vENicJxGX>>E-HVZDiF^WZB=9zt*~{vA>g$g3Dv zYjBUc>=;QVB#;0ys;`TnXqE}ue)ngf?$!WBg$MwYHH1?&_^3I4m;9RwN)ZlIn#GCr z05_oRmWno=S?@UAjiK=2g-A1lhf~ENP?<%WZ2xFQiF=Z>AI@vr3*dUGJo->#L|eSb zGNeO_7IvLbhIuJ8LDE{vfp+FU#1}V3i)H74jT&CXJ@tc1eSP>v(Zsg?Hs|@4*}wmW zAp9bzYMRW7{Nq|5{ia%Wq3%IT!Gs849K+%jlGh5OI{0NS2q^M$88W(FT-NVZ-Muwe zHaP&OA_z9y+tc4dO6!@OW*XjPieej+X+4QseVXdoD7Mk zXnA5BUlm^Xbh&q0uBip8IbEIP>haiP0D3C1tk!8`n(-s%O-XApkArCeQD6xg+blpx zTVh@1V;(1g^N8NNNYj{i#1aHI?nJY3v^8K(t^w+~Ll(ABZkMek1N;wMnb$7!WdbhUjfIeI` zjo!r6fm$Uv-+G3M6Rj!_nIYnfC+FR#NCL})Vm&sTLzu(0!!r193-lqrySP z9ZO(C(;fj8{15wBDUz@);AhIh+o?|-fe!})vY%IO{ox!r$!+E~C6~))Un|?pf<};x zmq9c?O{Hfxb0xN-?d|Rg8DEgY~0{sZ=b~$m;Vp8@(vrge} zDqC@3?gVo|2imWx_nuHm;=bNddCia(zjozlbwpBCAaFSwem0;Ve(C3a4JsBz>7tX2 zlUDDuPq%nDR_%PQ`PI_dOTosX#0-nh<=k$_e?OE0VsLk(XYuL%fJn{SiNjyJ*YPbG z@1Omszxz>K+JIm0I)b}%FtP!0PIJ2Ki9V}^N|lnmdyhX6B>vBJ17pvSD*-;uW}-d- z6LPGz5Kh(8y1m-A|K>6+sUKYppGK579q za4gsrdg=RyI%9T6qi5-ghiNw(d`4L^=|elxC2Qh(mEpDYlmX^RkTD#9PRmo zrSdj|p-oNZC(0zgu9N9JQ2|2qU*5go&L^JrWE@_Dt=r3zjr-{AoNPjO=OKgh`ngO2 zp7E0*;UR?)$<^iP*Xk?=M ziDm#o7Lt}w=F!WHMsXuS6Fl@Am)?4+Vw?D-tGDeFm#dORt8>zX73c2dq^V~9eWw9d z;{p>7c(t|G+abii06)6h-M$N1Z5jh}25_|}KcO5%J2R5EBerQ?x$8p>x^{x5&0=Ot zDE+-kW`L%@7z5Xqs=}%6-4#$g5bsCI8lDSCcnD|OT>P$FTb^+C`}Z#o2d+82mMQN0 zWu(vG5T25K(tUke?quqwSg!v+AMWzc_fPIn4fY92nC(QflS|ca5j`2HyKKO9wN;}# z;<6t6-L@5pvtM!z#&u((zLj6)9nxr3l)K$Im9u>$%<=W!uJad#|9+Dj6vG1XbqHai z+~*AoWE_s4KpQJu5i!&?_AR79(ed)E+imbyV>)@Gz`2qaS_XjInq`phK9iijgkmLT zwl$vnTHA<Op<(A8ZBzg9B zO!R^4WhFS5P=+XS6BI$%Ibz^) zi|b07=~Oj6uO^Y08>7W+KOP4kWGNqU9UFf9chu#g zo5($err%WMQh(}dc&XUT$7TT0s_|eog7K@e)@q6#H>-nhcz=b!D-Ehho6{0_ukeCQ>78SOmy*)zPlLbZ8z!`|_Z9&6fs?d^v z-OiJqh}}a*yZ(J64=oe3XEZ5uzXXv&V=K>WuS$|TnLC|o4-KzKMbGLav;sWO(3%Ur zmSHJ`No7o(JHY*~vFcfU0JNxD00?@dyMqgiT`YMDVTYa+aVYtFWA)34#m8Z_*<|Kd;UZE{zjNlaHsbmmVajL&3@Tj4!h3O5^TYK|g{zQw|l zv`=n6%>dtgl9Q%;k(a1acFkKqK9gZ`PGF|KhsR{9ctuUW1H&ye0fia)mb(rv z&xXif%Ol2qJkl5LWMk*L_g*lT-eHi>Dta+j>}OMsej8UtxNx19H+HM+N0q%+UI9VYe1(J<%@AA7raNGI+5!(==z(15-nj3 z+3FG7_uj=^RW)B)d>P6;NwV?5QEjoymx=0A9md zM#(XH1IfiFU+9kvKxS1@4z>IY^stELr}hI%EAKzg2N@x&UK}TH20l*MvAVUW33L&OHx9#!LMK(W*HUk5G3DzGXF;W zu(gdAxhQuSmn)ZIg8g8`bzAazGxMc|_tUf$1*!1y(aN1+!1az^Cfc2NkUMocGug8& zdmC%hXk(y2xA~JcS4k|(+SRsRr%jo}rIioR_!*lfLNK2B9;oix)H=4)$G3<=Nm_o zI`6B`;ptg!AHSoRr7#yC@JxU=^|G3KaSIXRNa!C}{zy494V0*-Es?Et7L0}Qs@6Yd zU8m2R(_n04<(j2cQs1HJZoEodop$dS*M}oL^qSPe>&OjgHY+Qa5>MaRU=KeEBUlUF zI8vThGwG0_!BtaT9`0aOA-KM?--~)LwqyvTk@#RL1ZwPX8v_Xx$~#Mc+Y-tOx@!n-v`(Pp|@wLbIr+d6XLjdzZR1 z2?lv0K7Jbr4hgV-I2QQ4^Hc0Y4e{sabyTO{5j&1@@Thq83nY!{11VNF^hGqjHJSHO z@Zgz6qtR7A&8Tf>qoxC_*^~i;7#IuFAHUY`(a}U8>Si6wuKDcwkcY zjptNL4c2ak4kb5b`*qY80URlC=8ep0BqIRg>Z+|H6cqA(DsYi;t;?0Dd$pax8lB70% z!Sl?lN}!u&_br7h?HSZ9!Hlp$JXF6S@~Dr93YK^`+9ndEs&dtoiRD74_-VRX;$_8N zzR82Z7bb~zV+aS?z+s?DjR?I;G%R%uQZJdw_=MW@YCdX|j4CuJvT43?Cos|IrWjZ1 z8T;_u^9F(7Hq1WCKdVfT(tphN)K`^H3%N`t^#i-4 zkBBeb3t6DzF_p7$yC{ne=|*HxF8rqI*T=YkPuZ&>WERGdOn{n&B)WrCM#H+|VAaGyq{0fTC1;W^@;8jjcCi~#z+001opLYcl{XV+H)2n<@q0UDwa7^nc{1kfq5O68%7(>4wp`NpT2Atw4#10)l34!y`6U@E5nKwE*Rqq3 z9sdATC|P-w%T16#mliW!3Y&T9*RI4;5KdR&pIGnFq}Qs*+8&_u06>t30w8dgtm94; z@0`m5?}U->Ftc{W#?b=I(x8@WMkH0c)uZ%PlZG7O_0PxYl75HNKL8ZSW{CCuLjlti z39!uAXRrrTRNa)a$wyy_N8@)V(3T-Dc6IBMTL-G^UO9iS8(d0ypR2(eP&NoY3d3U( zpQ&2g7cOir@J;!62wUGbJGADr41QB~BtKh^P1nf^OIFhbcyF<{TofR9pq+O6Qno_Q zr6%lp?({aUfvWl3fTXl?s@~yR6FgxiWWEP?Zu!?rO|BUd%a?z)KSf4N*R$`!1rBj| z(^Rd`jrpQQ|LH0l>%Y?7rkd&=w#jMJOo$~;eqqV2%0i-ae&-Hs zDk>nc*1P(-OgtnGez}_IWhhev0UWoJJD^pY!BJ4JJFqR?`=yxQZ*E1TVy$8Ld&Yu0 z`1>^Wen)FMNZzL1^bzx}FZxP+iS$pwSu+!JWf0@epgljOOaa_N8-{HS@16(CKQg zFyUT}mVW7XQnWQz-tjC~9s=}p*q!VWYs-OE9?skN$_Xq>*aN8w<>(H`l6 z#hdsFSYr?=ZFijratzpCsf$wQ+p5hH+S;@zuk-eVYG>!Uj=Npyd3H(l*zEN-LiN0w zSGW6JEVOHw0p>IUl|x=!=qqx~sH-$n-KD?B^@PsS<>^HZ+aa-zW`!aP${@g93IpWk zven$An23=Yqh-}e=Fe6!E(=3!aoay!SiVT=+P0bsE(67MyAUm3BrWOQM4ACoH-5jz zqWX`JZl*YYwX-`4U$LXY6W{;of_7RK#vn*#_n2!OrS!xoG{|@47;?pZlnCiKKB=Cn z%N+gQ>F6G!K3|yom!Ix*hI%{t1^F%9MGWAO4KUOo&?fuN+pRn#L>DxAW*6$`34Ka$ zUNyL0)*PSr2{C{;ujAAqsW=!S7l`~acV>D3y6V2X$n<^FhMW8rUrtu47dXf@lfT;V}o3I7Vw^!dWEUhJ~+A6h^h}bUm%l-hRg095!ENBeL9-fSRFRp6+zOr)T7|<`(18Ap-i7QlEcR z$M5(xzz?0Y9@mMp3oeNwDT{ml0{OW0pToZyK5Wy9s()wos74_c>; z^>ZH&IcZaD`a-DZ&F0#!=Khs>uQwI`{M8+Bcsbq1&F_AYRFxw6jrm^`=hp+L#xRu_ zi(r8wxAW~P*aAIN`CFy2M?Y(a1?O>l9iG3ua~f9Uyt@~x0okUD%ZxhOEtyXyq-5)- zJdCSDM1#Lo_kQzad_gE?Az|d16xUgoLG+YsK$eI|{ShWKtx8=?MD%1ilk|n~i8Bt- zix1(|Z0sPH+tuoNH1{1u5M>@jg&sCY)ovVG{3k_zOwOrk8eoNKk=XWW*tMI)twqb3 z2?UIW`-0_l-^MVlx-c`F7=5KmZ^>*AqL?^^c(82xYD?q*z2O!(IQF z9VI{cm?Q5_Uh9oNHNb1m4!z}2u@+#EzR1IOc-%cn`AI7JKacef9R=e}ko4b3YL`ho z?m0T$pl7ihzJr&2>rU0Vzbf^UzRxCyxYy#LB-WUv)di-JRf5o34Q*^z_xXtrH6!b{ zK8+^9e%u}I2l*+f+M#Fvbzg4N)BL^nOkuvr*~lXq0$;Ir@#ezCs!2JqLTSUmz$J$) zSF1y3zt{}*)k!JhGw8PjO59XB@WatSNNyO-qdzm${?{<6_s1#R+(*EId;l2Wv1ix; z6AaYk|8@m6(o#wu{bls8^#LT-fcUnX9EnANr5omj929wlxOu;mH4+JJ#8sf=NIFCaJ4__@?w`dD>)wkU++B$kW|DXt{c3Jqv<612k=!5gSTiw`vFyrNk|RB**&E zUR&XDjxu|ZLo^vIpseS+|FGI6x~ z`gXSdwN(YxtJ_%wXcU-^A|5&bWq@I|;SI4+kRua*d5fV;VVhOq=$8jYt8cRU=v zqH}wJM=5))mw)|$bujkh*4=cTHzm?2!&LFpo6$c63be)c7dtT2IvrrTtx!4wdpk0A zL7E_F>Yq?(9T42fK6N6Dq8V%I98>idV=bCFbuiHwc_;5ai@_$tU63aL#Wql`Q-S~C zw7xxz18kO#V-XxH0{zqI9M56#svN-TI zZr!>^uFu6rZnJIrm5!0M=|7$gd_G!<`~m)RyM~D*hy!p&ho+MyHpkXL0P`g{`0QVr4 zcG_Gbm^6IaP^V4k$XY;PO9v7pAO_j1DMEYL3?(6}Xq`kJ#OtNymKWe}(?_w)Ud9=wj5EG>7uOkUt5oloP)?y8!R_upi@(DCvPAVAz zit|CnW-WGzjAFTrksVvb*R;_K3jxiy`gkJ6s$88eocA_^0NfCv* zqeqSdyQs0XtEj+drp;10_M@Bd%T|4TB5wujoz#MJm3=fkW!hAz6V?*W4wg?+=x$iLs64ZfcKg+=b4xXlPZD}rDm(5DdAxc5m)&9~0Fco+ zHH1B#UME7Akt{@e>$)+v;YTCSqB>OZv#htb#V0kQpt1}y)!FIzl>;{$5Q=pk~W0$;#@#93NoA1KO>wyEej|H=a6qUM93cYXq*iSlq zKq{J98d)HMXSJ?M`b)Z*tb^h@l4dBEl+Gyjd*Jv`vIz z;I)a&a z(TOQKu3LVFuW=+;64Ve&(6F6QHWD}9@THWqe(B&9-P$j?E|eABl(4Rls&~PrQm3}? zzET*#GW5ms7^rn~VgKF`JvZZYPbMDnJ@h^%UH?Kc^ zu9NpU<5D45#-&@4u6ff__k{ZhFjr}YL||#{a^C_;jM3?eX(2oUOM=s>vk`ULo-fGf zv&S5idPsQApOtOr$WZ&Cp*RG@!kp!`Es^v8eR*|H`Ec+tMI#e_*!7zVQ0Ea@X0!ue zA_hO1EJ!LyFs#lZtY}h8cSrSdt_Vs{xtK~2WU%E)1n2e_M1LE0+6NhCYtYJmfso!8 zN^L9na@srO!h_P;5b0A0eyt443o;(@RMjbT<4WkbK4;O!rKkQ#!6_+S(Bw?aS0=u6 zwwzOw0ADt9nAWF-0E_R{2}v)8^b@k()4bj3N_FYl1m66h+k_RiDQ&&d`s+i%JBRYO zHC&Uo4h1X{8ywkvrZ%!Evg90+z{>Dh06=B&9!Rjs(%h@ulho9UO4L@6A4k3pqQk79 zBGfsFam!K+TS4{B3Jbix!Jw)k7U}YGg``6N8){1Rn%#Rge`Sc zzoflbhd6X!oT}dfBVM?Minmlw`{3@+8&%W0XFJIcUV1D1Uc~rSZ;bTKR9TZgAf>dR zU=kAxcEJf~O-daMgk0Z$G+{r5)ToS;gZlB{^w!^!?Qno1b?r7(E! z5Hs8WnlT%)F?7QX^kKfW{0fm8nFo0G07Vp%(lpGl^yl({O+eh+UG%7;Z=auig$H+_ z-y!Y^jQdoDsMCt3Ca^~ye1Ve@D6z8joacO2vZ3ZPv)bwqd&@FUZw{VpgeZ z-&5C?*y$MPuVu-4bHDU|c(KQzJvC3yV$=dcSlpE~FIV<_VEpk{gXMInVGN)Ez47gP z!jV5d5qx2d`253fDhf-3)Bdc2!0`OqMRm$T_G`Zlop`V_`~tBFi;i0IxZ?);W+C=D z18v-E{-R`4L4F~?54T~30`BFOL6E~l6@DRlE$bw7*}#IhWsf3p-kS9HlitF8@{GUf z5^1jW7`=wi1nWSz%U%T3ged%F0J1_)_*6j|P*)p$`WSwGy=b?28nLayaanIefAgTs z)3^q09dC}d<@7EY!^q?U{z|D*P|ZXGK#o3~0b*4LSz69$_lDv|Kk|S!J0yG_0EH~AaCoWaN>b(lSRp~rSnr0vY5L%t77QjZjx~r+QaTUhZ zAn4tK9CM1Qp~nsi{JZg#tk_aFB{{w*O2&^>^Jdjepa&O#3o)21z9cyyHvic}oB# zqKUFenFOwERe>wxHa`H`C+lA zuh)G33V;X&;K{V)tI#MoQL+JWo30}9D1gbC>Ey;D9YFtY?G1!tV%z;<;F3|wJ)W<` z;eX!IWKx}zGM5$ga%zPqL}#mXn*c{rG^UO>DUodt_K;{FM0o$$%d5~}O)nW&JFguYW;*lwaX^sN zwp6{+TS6fT2%TpmDe(&J7!tb`5Z}jtB`CBF&))6kDday#ekvJ{C^e#J9iRJ72U!tpIKdH5NpoGNjx=VTuYW4ots6 zo_otITeD-KxPgxw8y*T>@aV>m@p=jhjWD#k!#b^FB?@$ZB~;oCSr^mp0eUd;tenKV zQq$O^uTY1ddc8O3Ii#82*c-RUrYJ7WUi#De@c?no;zpZDFVA{mT z=kQU&S%aU~T(2>{^Q6DH!{PAU@0~H`A6tlZ!X0_0Sp|rLpAlnD|JtNT5!7(VBNerw zC~noC;W}T>77uh&S*N^WlQypklRrUj&!66LfmaW==P2}8oJ&8-arN0{$fzR#Y4N); z4;OvAgQQnMb{A+TfmrAIC8q$9e=g-eH!|yyrcP;TE3rKNnw^$}z6^~e*#pBIkxSdMkzkVlGi3h^2}{Hn8$ zX(l=Yw6i#5DjaJ|k{l)n%)trqhC~3WTMH*&1xGDl2w1N_ujNkAjgw?{N(ic6y&;z3 ze~ipMsoU;3eYTmoH`hZbZQ}}3zYTSDy5}CAtYH3S9VOCYkVhGW*LElPjO!E9T7ya| zJ(w5Gl{AKpDn}o{`3_IcX_-#or|PO8FW9F_e^aTPe#iHaZUB1#Tu2fJN7V!Als~fo zGAeX;k4Cz|SUZ?xPvJMuKXzqM%W&d3W*-;Qak3`xYjGhIx&{A|i3=$qc5ijD!P!Wx z@7<0w;v9X2(~jQc*C$=PVI$)?(BRL^LFKiOk00JPKeZu>boga~V$>x9*tM#n^$OFM z>N4~^*U|_2WXJSfws*ejiKuNIq{dHgR!ewlK{eICSRAjz1Ana-QU)-!lS$h$nC{(k zHi91YvvcNY+^6!h{9Xsw8=?PNywGhR%;+FmBOw)5z=|F*MIg^ot_RQ_MG#X~q%Ons z>j^q94}Xbxh;+P|n^ShR-JywP<&Bq|=!d-zH9nAY!kf854MKW9C3H&FQueWFc<|A% zCx)5A4m$M$mS*KDy!{oq`Zmxki=_Xuam02E4RejTB)WGD-1n|Q^B{0=xV zt=$w&KnZZBYJ_;IMSK4ph+1|?>2tL&Qg1t5v@sw0T{z zit62%dpAnVRHaRh+;=ojCgJPwV0BKQmFwE6^9l%GL1DKa-&O#V?85(y%mxXJjOoTLvifqz1^`!$ad# zLzXSwX@EKcN$n~}Wv!oM(#OCbN&2^S+HZ>c<%)tYQ6_TP2=ZU>Q)4q7W&nWTKq0BX z24WG*#+_i)XlXv09i$&dC|ZG?7YBl_6XQf6MLYqNrs3pj?B2Cz%pu`{YdHprHeWcGLzZ3K1wh>4UuXkvVD(tTqUfn)#LWS%0-MW3}Ov*Je8JgGU zt$J>1DljZJvv)x*kRF$Wb{(1O=Phgk5-x~@>P1d>HosTZUjV(n}5!FIkkP4sp1!xLC|T&_EcDzNNj0LqQ1GnBCtc!K&h zaKz#8#elR{<%2Artd>M|!3d7AlTl6+J%NBvDH@Lk8hA>n0$KNR5FIGayLehXJavFb zXF_>^|MGl!@$}9iV*>Z=y zmz{yR&%+w1hi*SxSL%@)m?6Ok9_u)Ff?-?Tj85z|yi*!Bz&T=h6vrx#){k*-g$=F` zeJchrXc#p-ahQ$_FkE^Tq|9fFSkrT!6(-(?asI_)9YYEJomK-kT4IQGMPtTs)I{)%O&y~=NZNlU)yoY zXHt7TRUV<$T3VcecTjkVTKEDr$?IqSWkgrP|__R6p?c1iZaOsCd`Rr1ctWGi3A5rZkwLQj8kLW5ZE5De~@=x~x znHr`Q!|)0~Y9tB1gk*L%kq0wzw{z_z6qvvDl@NWb3MgwGJ-S;jM0d-o693$N6CME^ z(O?97XVyZ)QXSqTT@7!|wfHbmt9ah>vm3*)Q3R}3DyQVZ(tA&;5n8Wh_%F6Y=*dC$ zZ>l?TctEZV1GGTu;Soo2c$>5prdZ`mk);~)@Ao#273^^rxQ?8xx}`frHF#cJK(#a* z0!R1)VB>7k;6Kk}u7z@kw)%mqhe<#_wN3pNKB-wAe8p#__?+r>H-f}AG5Ya{E>*kI zZz>-`#CuQy{2UO}prRqw@>QQ*F-*;x3j&$C@k&sq`2K*rSQX|-SnT_>ntIM9uEP=% zVD2K^Lji}7Tb*Sql#5Wa8w=ElxbP;`nU}Y6ucVtx&adnX)S27+wD$cvKFe`QWqJyE z4(6f~ccxS%z?;}G}$RbrH*FRzXgC+p7xDkH6{|MBlkC&`K^wKSZ( za2d`Ru%#IZ8T}gJ8{y<|yZ>rY3a75)Q_g6O9rxZ)b;?(?JmDCCCF|k$mjwYa3Zsy+@p)d)CQJi=5H&DlFt`e5{4h2(t7 zm5cXM?p2CAu8Pjy*M0wHWj5WTGgm8!JuDPV0uysqq^F4{!$kUX4&9LGJrsP*dG_2&7dI$Veq^rL!r zCA=32ZWBy^T+sl8#^5}o-diCAs|?VR<0&MkqK%UGNBu-5Ln=2}f| z@-pA!-ulx>YxmVB6X$^}TD{wU#{KUpQxU8oM;-~C7ND>L4?|O?LL$8Vn8MY}+-|&+ zu{K5TE$$4y1`({i6pBA6x7j*!%IIkeBA3@^v3;^bgBr#k&9nbKt3H)cB)8DK; zy=u$+LFV>Q0QH9G3Po(wMq&)cE!PtvORQ0Y8E_;oI5HGShk8d0j08_ryEaY=7|536 z{6GAv60Kpqp`4`PIfF@6_Z=fit-ujBx6$mB>n*ik5N&lqH>R-oA5(}U_qS`|Vc%7D zGagkSWo$2;Kl?6g;}0r|Z^KhnL$whZec)9}e6Zeee!3%wr8-(bFr~MS*5~usts5^m z4)__obN734uM>+M@qjaR9Lha{Lp48EzBXCrsCAQ?W3Nr))tQ);2%vz}sRmsZMlK^R zwqdRL7J%mOdS9-uV;?fYVVw-7lDGE&+Q_jc`|#Hd@Ic-`^w_D|DP;RtNhm2Xu%*v+ z;0Q8<+nD|m1vr|QPc0&QaLbHNL%|p}mqx#=;li0_Jy*34e_i%r*bXJdE;;k}OlJ+E z$!{p5OAwlGIfj2tkPNT`r8%0xgWmTo2Y4T?{Zwjl#SNULuF7~+)<9Q&v3%Hk3eA6) zkZ^zefGm6wMlHy{;Kq=!CV+c!N2P7^3enI)R?U4Gh)_9dJiw2}p2oBqb#@Otd}1Vs zc-blvsP-4KUHM7K1FPma0x=LRv@iuUwWmNV5eia*Xh~}f2>&Y!OxJuys$-XN&dhq? z)3CR%uh7ImzN?YzRLV{(OV4HRnkQ!(zP~$G11gR{uBM71_so=!OBqU4`s5NK;MnAt z9{c8ejdW_aqEnNdHgnxcr`D^NkT>4BgMiw8vTS1Ha!Jw1@vrBu zSO?#@+so??Ze8Ff7KY&0JCAb(N6J1oo1euT8NBl<(u+liy%OXnkzQz7RY)hK9;J+D z;-qS3ThP;X_DPAaA%Zn)r&8O;hZ}Rw;i2c|0>Ju2Bd3$EraEos@%>w#rnp>~w6=Uw zkCW=x{ddb1)rQ|uk4JXjH&qktEUYy^u~TBPpN(e}CU(#D-!i{wviGIB^ejlN^nFYx z`0DIZ^GRYBYXvbvWR@@I2P(sU|A{l7llt1qag)*VFf-|KHPIBig=5mJZ6tgiihTSf zVB+I_qXA}yun<5(G-y&B{lE%62D*aiZ1e^2WN)Q-S@}HmV4@KEt#Oi#jz~Ub@B|qR zSoxci_S3N2SlnHc>e}jHYf#75C4^L_!kay7ivcn5q#Np%tT&@ndG__OnD531!3ipF zebq#VZZGS~Z5$-A8wPvGE3VXJ%ymJp=yuDe4K577yG+ZffYU1tSXjiqWO2=MklDyI zVFD_GG@nZh>R4Fn);WG9959YGdmnibj=MG_^D6M^nYf|`Tt~C{}^3rha};o{1oGrr^e~g8ni{%(a*{60T{fSbuiWg z**a*cfk(WQEz^M4${y94jcCeDo~LeSf4-OI?&+wsB6g5;^-Le2Z_yJ;f-WOi0-%}% zK4i((0&j}#<`^&ER=^2D85wwDH2lU3^^nloXE;q96WUbhtj-5+xAOino zMMQL6s#xp?{3RbZk@h3yJBS6^EU?Tyi%Il<{@2V=`pq{T3{JWhnoS=r z9ygaKhaQIf*92CeOO$zaxe*EvWpc3+6Q`@ zw?j^Z7U+RvC1@PL-Hgzl#Q=5O?d=jOBIuQZd6=FLoQybIc+Q^Y1;a~3lXV^G${^)3WeiePo&ql-DdMer;ty0^m50b@ zN19VVASAs{(Xh^$PCyz&5qF0V=ob9jBmZws$A9sEw8(F_7VCz$kA3spZfOxLH3J=L zQ&{in^@-jAy=XuZg$zk=cEiD2E02Ctjs4o1!(g*1KvV9hBpyP!0;DuOo2+R&P9Ra$ z*&$L|;xClbC8CM()PPC^&kdpQQu_{(RqRLf|HM(eSJ z16`XBH3aw$?c%BMyDXGGb!Nm8Bq@|L;H(_cqmY=FtDl`CeEo-DNO-S_C$+e(d<511 zV(vZTn)=#w;UG-}L_m58N)-fDn$iL)T|jy#HoEj)gPD_l>dOXo8^S4J@rA1c8Gr#$Ea;`vLdvT=Q)T z`Dx%%U7F%5H>V67P#p8MR09#7aXi|;dhD9&GWQk)g9DA%ZDpTm-%`5RU3I;Mm_*?4 zKYwf);+wv0oYC)xt9U7HpKbd+Y~!1mu~?eu$0llyXP%j$6Hc*TosnnMgYIM@diX}P zWK51g!+aZP1i15}eL`=9O$s~@hNL$q*irJU>1IVa2>9gTf{C@R9XAM!SdG41ZoKU_ zDlrw+S|aZL(IB~iL(OoftQs1z)#|t5*);|Nwgpe{;K3YTdGx>DnehDU%q&!Qe#_%mj=s)gW;orytmY@PDUSCj2WkJgio-i zYcbw(aWrmMv;djKltS(GDw3?;EHV=s)mbM8SA2S|hu=rdRbj>tRWV_4WX;nABmZCb zC6cv;RO}Y{{3VRb=tK{sY!8X`MF5ILtRj-2*y254JA1Hf6}Y!67-cMitt)+SgPrei z`YPEV;TryY1q^2m%AR-?qUBOm_yMv|Wq4&6qihZu?&9W2i2AKEB-BpT5!?aTgmC~X zUnJy;A~PnI)Qd{nh$C;^GEI?Qepp`mCW(Vwvp@!jy4$tM-l>< z4>w5jB)~ux|D6&cnt_`G*pd)j=gBE-0REr|{kh#?Rd2d+D(ykO=Wtt*3;qA8 zA>zDmf{p^E!8iN67fKP^@}Wmj3NG6&G1SJfcF!On#|!;^VxAPqviFAy^yF9K%>c&a zMJixfQF4RqSCd$#4OF-%2z;FWgkt~_?HK$EdHtXEd$(##o+_5=gJ+TR?UBIe9<4%+ zX|F8U_*UY5(1o>lhdif-YDYiMPF)I~uusc1R8OlATudv? zJWw+*TA*dhK@ma5&HLKElPe5pc6KYd`@rxbz8jG;I&#ez$v1*f#){ElZ5s==B_|H0 zk-HarJJTc!!bbn$VwidmjCl-Q&{qY-q1i@*IAyXnd>oduhs#P_PDefg@$jkKB>~#2 zhM!Qj8UjyJ?s&&;0p2DP3vsHpj1aDO_43{(~>Z+cFMCfty=~I5eJ9WY|mIl+4L-3;AwFv?b*oS9C^T@WV)y z{+m^Nw18B=!pkJ*1J&B+)-Xmckag%?Aaw9QiV0}0dYgMWL=OAB`waf3&7wf9{5NN~ zNpsEnn(~k4cd|+-t_ajHB*^-$BgaV&*OBPe&3x{o0NLQA?%;Kvk&6F8TpG1=(er)V&vv+BB|){A)U zy@ckACV?Ca+SN~_GS5t7LD+ggTY3Rm=hI1{)_)kVB%Z!@)30DR@tM@sJ2w<8o|7f6 zP>+HHu(tKjOBbB=J<|QtPjp?cMfpaUcwdbym1P+2{eEb^ibB507>Gl!WA@TJZd{RR z#0?|(T5roP4cU=6~B z>gITV?7B%H%U0MWVrd&oC4mtG>)U6x5$+{2_l;It6ulMJoOs`lyWydYdi}C1McJA; z@f}&hxo6mGzIZkJa*4;NG|>gpveI*;j#XpC8f|Gyh5^+d-`<(dpTYxa-LM5$2bv8=D7>?A!BG;fmw2 zXVkb#V#;yuLMDWK%-g;An_Z=&X`{bcM)DT{%eZK#ipMt~Tk}uWvevQ=UmXJG;@hyA z+`%~HLg#8@l%o4foAOzSSYNU59Y*-Wk%8O_bNTx9-UXb7FBb|^(#Z)?^NaZ z;Aa}nG~VpD_&?Wb|2v)W|2X!)enXK%DSpS1@WVzbVOTw^j_d&5&k(~IohY-g`ziC` z)bpf%cNY#mt;hsmA1ZKkRBq$l-BJ`OO%yX|b+7(uD;;(Baq>+C*@HeGVSl~6c6%2~ zn~7-OvR1C}No&ODx=qHUUyt@XI9D71UwcWW!kY%}M^fmzIC$jToJ7!m8>??6HYjR|h+euJ zv_4HbhZ>mrGQ@;2O;sq*2BU3+<`$V4Z_X!|=1SPTIu*v-+r^(LP;PnJs{XaPL_>GZ zed79)5zuZ0V(gh*d*D%-pN@~?le9frU5;C9x2*%;T4aP@x$uklq249IwtoZ5lj;=Y zx;8JHR1q0iUbAg__K}8bw3~nEc05S=$x^in??<+QiReR%pG$+Qx|F*W>9Uyy#cK8B z9ev-HmPiJqd7gmMO>A%XJg-3XgSt8KDtDp!`u2p+IglIZrtDAgWwoHepyWEc77z`e zSvnxt_Q&#Mg>koIc8S@zyuz&m>r;Q(A8{|wep*IqBHK6^OIi4MMg!RuO-3db{0<*G zJtSR!WA+$mBVILf z=-ek*5nbLbm1AC74f4IDxoK7&b`1|To)h=^2mv(RmT9vsOR6sPQ;I2lBkeXSiV>Z+ z2Hk?p-Us;O0%u-^sG)2ejOJhN31cwT^$}t^%uG72POgEMSSiN^p9h#HAB4Xr&zi)X z;6i6ZC@b)`zmU+zSfox}V+67MOOEhtNSXaBQ^(OUnt}DFe5!mGOIojz&GllpyA!Gc zQgvEpcaM5MEe{r1FF_}+-d5^;D0sUN>M8n~RZwL+!o#yU6f4!sDjRmaS$;Na8@27% zJj=9fAcpwz*}L6%jVJG};?Z%HGM2h4)O5ceNX3(G_Z#P0(hL52t+U1n6-)b3LBXHv zL43TLlnqZcd%Kj^&saT zAs!gs&-wku3|BWjdcIrzyrb(AC!ixQ*2m+0P%CzU+SYrjE)QR@vRUsaJw!0d`&O*a zG{I7{JYcixI9l4}@Hw81x+OvbG@m|rF28Ny_zZa-HnxW}X`FFTiwb!9;rY~;=~279 zG&}N>Fo(-`E)P&JXDTxi-|Z<%p|TaUGoZC?E*3{6JV-rd>k^@4CT) zo$w4Jo$g^%6?bIhs`v|WBW#IxK8aFLb;9~iZr+VOG0sC2^Hw^H*=I3Z$3A;i#8m0K z`op>W9|d_?sZs1P<{t7%-q!mu%CrGh{knp)%k7`LLw&z2;oVku&a5M@Ie1)0UMIgz z{C(RqH-nCh+D()CDcU^|2oA_Hs|ZGm38xQlEsy_NUbagy&(HLIMJ{rWJUCqcCHK7Q zmw?4ylEBBuaoTg`z8uoHMZfe$+H2wK(PNQ=qP?UGq4a?i$l9DLp5xQ$wg>Kon-z+3 zNlud*9^Z96d3M{U#zYlIi#K-G&3l*w)0SS{Wtk2jM=6)A1Wzz_;~~r zgBJptxU;*`$g98Q?K2$cb8>_mUl}5n(Xv{$9K9KU<|^Y?LQg~_D8hRSOdUoK?3ju_ z8a*x62x&}Dm+dxW)s3R?eV*&2X|^J<&#u?)w(Im2HXc<34m$Z*e?HCwM`K@+7vHJG|nB3bu#EM6}Vvz zrcoUP5E6i@NP!G;;r`q5BX0 zGz$mlWL6le1Z>X6bzh5`~(>WrK|TQtaLF5-UZ1o;fZ^Al8$f zm;`g&)xl-qpF(1NA(YO%mvXpH%lp_qIPS5qhhuM(B`R;*sq>iA%{QA3fiZ@TzC2v0 z%h6~nhS)=bWX*S9$9>_5(PuUWuYOkdHquSspiE;JS`frgX-q)BLI_vM`*XQFU0mHC zV$;8T%MXA*I;gX``;`$f;+pXo1Y%2(5>o)l-2#Cwgp-{qVCB%P$(UT!$y>#zm7{!9 zK34Z6gW)dqd^P_CJu7;r5 z!E_xR7#QK;L1hsqN87dgN`?0?__huYKtcB<0VsI?W7S`>Eaho*F7aXq(3R%<>> zA?r?d%syKNm_7cBl3}IW@-_aajnkzatj-k<`?!0eUEYm%`2m+tZwCyr&mYO)3+C=E z)Ldry+7b7tX(moYtvOkzT!lHsFG7!+oMTIbd=F4pg%A zKy@_?jCct2qz20lD`P=K;HhXth!H>?Wb6I|IvJY>u(Ui9*a@podJUxp++^jTgrH7& z;47Zg{|67r0L6=&_06^fCj+h5?g-T6bEnt-R>KjRh9NsEtk0;Mk4s?xjSmBOC~oxb zUkSO5Wp=a`p3a~0^=*vU+!eHws2*b);ZV@(7TNNgaiFGZ-U1O-|MIS+%)#2WW5s$i z9TF6UQSFjFCymvMP^5Y2CtX*r?2aeMYwU)q_jt&v=FHbD^32pP$IFS`7~(s+-kFw3 z1WLUKThbI5)86S2tjlHGa!4>*A!geA!i|i$!;hTcm5;9q&q)D}sm~_=Mx1zx|2W9Y zi+Pc09fYfYo+n%4jT4h>)cYD2GhF-jdo`%q|No) zw6r;IXfZx_CcT&Q;-yLWleYNCu}~K%H>~^ib5lGN`zQ@)^Y(n33xeZZe_znY2c7H? z|A16ogMoYkGcZ9Hj5*$4I44CQPDmFkA^6O5@^AWklIt2Nxj&)9;mQ!;tF8*0KpwHq zcVg5$fu_VHFgR_Axt+hot6(d!z?sHWeN}u%LX%7;@aKJOVGNkWymF@wu6C@+acP-a z-e#D2Q?uZ#<^z7wwF_1$ca2oQKwqSH9>8GFXkC!_>j0951^|UW zgvOMdAJMEI3uA7R!nk+)=ZIj{CKjYe{4{5uz8;Z2Xr)YK&ogLV^W&rB(IPmK|C;zO zPjcTK;&L0sT(rfjjJH8gL@zUUHpL<&8Mj891lwDOx}TpLK9Fi}vgdR2?Ghl5-BG>~ z5<1zzjsK{F$;th^l_P`gC?dC64DeTplKbE~vn$7}7+>AXx}OpJ_1g-$3NO%~`8U@H zh?Q+WhrqsD*#g6xWf0)j*>iH3Z58 z2h+y)#q}=oIRKzV)h_T+D0%TV*as_n^{5H55EU##M4OQh4iG>JB?NMW3;aHypR7bR zvt+>cP3OCF@i%h2_sI!jn1NU5PL6=cz8wDPofKN4MV(cVoFTmJ)b6ME{#a-yN}th* zR~9pnisoSr*sn`4oKsj-cxNjZt40^E{3&+!!00^g^f5JXrvGMuK~USs+7lvW{XT&a zV5-XCsQ)(9;DV5*&NNU6>>s#v&?kX6i2a1(|J(OyVu(SqNl&~X@nKj~gA0G!>Y$0P zJ_=6aIM;{=S5w?Wk`K^#?tWW)Og(}8FFy4#7_O-6v?56kIL*zQR(QL9*_`K$|9YP- zB!JE zt3eTYI1R)nSie@W5BO+&Ib8W0kaF}d!(Yfa9^9aK!Fy3=9mWf>heiWPLi8JHKrx74 z)K1^ln=U+8%Ut-`Ui}K&D0(G4%sT!SKgE3MqzZUKco%yv*SIrz{$SfuJgrp?m0&~? z$`s2=V?AJgU%Sl}rEg8Cw7nrpL;>^Om$0!;OgqdWuEJfX{;YIDf%_ZstB8?IvM9ikD2NNI2=x2n7R`UqolX>hfFGFQ*8`%a&-Bymga zfInpaVfU#?jTbewjGmGqPF&tbNm7ET$BETK+|-m&q4=74rH3ZPO3nvqva>)85Ts^` zufPcDUf+V^wf2-Lpn?fMQ&9aAXU}^27Yn)UX*OTkYG7J>fn6cwT!!!%n%H7mk^j48 z@a>V{)DiMZS^kMxvMpO%=GD|+e5y?f;SVlQ>1&@>t+)@CO}thX>73nnbqjfz8sPmH zbKKt6SRSz;@id_Kn&=N>39Ba{-awAAz~y?h>+`+@a_6%OT=CrIdXKvs?{iL=uRrsv z9TD=QbO>39H57kCAoofE+!$a+I}r;J$yn8QfHV=9;TNWFZNS2OydH@vXPKv95;J}9Iqf;~xw`>rU>sK4 zF)zGuwn4P@JKiWT`e@$SJndSySygE_y=##}YnB#oAm!EnIO~QI=H4fUl1}$*h|vt& zN=8h|@NwI{K+NjH#>SZ(p>xI5axb=c$kH+yhxOVE`wqPd+A2opd4z6dhIh%bwNrYz zArRo*9dy;!t)#+M!-)*a?LH=CDLt`*WpT2`-!8^7ZPxMB?5AUku~M z`*&wvwbe`evM}htz}+zk9I9?CU3fOZ*Z4muZLi(sP`m_MZ37&GA7H0q_R}id`K@V( zE}9PJIYcPecLU2+EwEzkNz4jjr8Bc`XA#q>)Ra%V?-FiXYrxw)%LsZ{$0_MeYo~q4 z!mg`9LwWSwWm5C@gsQn&&gBfP+P0axcDMP*p|WaLxz!wuD*`LG1n7JHIj)i&cckW9 z{FV=qm1W&@b-CE19{GwSyj*FPPN2spc(3xvZs^bCAJ%hSDH>O@1Gc#*)RD(5i#GV} z-psHjgv?xf;iB^h$Co@au2-M z(3k}6Z?I5(Y@oMiB@qeUl`JlkLozCg6(ESEhkcp46%7K)KJ(RI2&osLDac;2n+}uj zC4oBRcX6e>WPHbk%<*4a5Kc!1*O%38(-H+Vn!OEuH~l@EI}El0woOu39U}J>wJt|H zl_Qpsx-Krk;8ahxbj(k^@9M)lU9vWsi2R)Q6iFiFEnk{t@%1Zd)9ane5|fng%)oZR z@ZF0IH~V!i9=3ADmR*rg%Ey&8gehaj^UAH9WOMkY_IwrIvu@Gebz2Rzdz0ZcRC-xE z?erB-^QH>dky-8{-~;|5^CU*PHNk#fSDt<+$ai-3c=T4!yyTUP;YS^4lZygr7T1s6W2K^RJm$JsMl6=JO`!8YSlc-u)SSVE}W*>)G>A2 zA7n%%C7xu`z6*Hh_nB@zi(6vydQR|*BbEZTelWEz{p(45kw!q(XvE~3qkybIQmw<- z_|JqNo5`7=Es;uf{kUc7=!d$`^w}LfH}7bFuQ=RdyeXv8I=n9)|K{}V&b>`bKV?}A zuAovj!Ku>e#ImMGf<9hObNb?tA^6F?0iMgD9QvLrTs~$Bfq>IPi(5f3;F6K5-OyS6 zrc$D!usz{L#4R$3Ej?qgMk4&X8DTy&S*fcCIk`43fTm9Ao-|iQHPotSrQ6mP#R{Q=!XHezxgSm~}#&{xHP zdk3M@>TQwYg`t&@I>~RH?+=?oa^>{0jy};N#L}bDxsh%+S6brwEu|ag+3pW>7@l3P z(Nlk@{lIIDdzX7PC#}R6UBNoAWd(qW1GI1RV>zy+pjf7~$ZnTVtg(W2d9eK;=Sgd- zDlD?A#q7-<;bD&8vC?q}aR4hGApvCdZx+ITxhVcu|0gFO$N^y{`doSHs#pSGx>(lCL5SU~xFPzM zXMFg|%6X#8ued6_kb93V7_I(lwex~R0kDJVvy}aO`7>x*f^IHx2o)=RXRqh$a8i65 z=NTdvL`cU2CjOFm#|gxR#X&2xL2AoHtE6Vc6Dn1&MHi!N3ZYPF64xDLhCKI$$&G?%l2 z4|K49uasFN>d|Bd>W&0H`o5cVQ~xAuh|K<(R98P>9*t>5!QLq9WAl14U)Ykv-pWG~ zB2s3l+e7rInK5AR@YeN&}az^2% zpGVJ&1)p>;cl8YM?9rgzuA_b*TxWwC@pwLQx6NY3{W5;KhjbHrm2@LjbyoR%@(<|n zsHINev*Z`nWv+bHL*z(4USfWT7$!QhLn6d^M$sE%*sEDHrOX3ow8TGghP5Lf^h{X#EwVJvNbAeqPx zvVYLziH1E1qzh*#u1>zMJJJX} z*rR%s(4S~dR1_ZQtoN%ebL`;#-o}O+1EZp&>ufA!@IF9Q8`w8iTudfmm+s*2r*i94 z78xR3>7=U&l{*NB16{PPfDXoh;2s1;E<)Zf22FoYm~-|Wu6lUVT3<@D$7Vn>+rsnE zb2C6VEVOTG+VzY+~ja;spguA*<<##z2_+^2H(vX zO98cT);uSv{R`l%35!y`wvDSnY}wwKev)O=^g(+pc%*| z1Ms3K@V+RQCFQB9`EGe1gl|4>oiOq`1u9+lLEr^*;%yaPV5?1e7yE1*S@*7i_VXsE z#q?3OOu}65%jY@UW7E62%(8kbxxRO~%o1JJVvi-^P+lQCvBWWRpa_*Msext5jyIJ% zE6kjxn&~spxT-IzP*W!Qka`Go@7}Jhl?r8O0e}b;z|nNbI@WsdtNbgAjnVFAhAHmH zI`1bIw1)TtnhvUy0+5R`Sl6%vShpk$FoMAwKx*3yt4l3Ud2e8&#taXGQ0PW}A}{mi zYr&!8q_f9V$X*CNX@)ho2FPiY1}eJ%xLzxML}s+8_beW2fAI9}AVWIW%j=5K%%ST_ z8V&S1y|8+6(%_lx2Pd@BJ!M7l1-YQl=WX!Cn^_~N2c;xyGhkn0sVh0qm_vhq z_Vj}TrWX2M;^vo2QzND9ABXM8{2A9{2B|ro4tPR~d<{>us%MG->f7-0mdicGZ6~1^ zn@_1uHorAbttjFXJv8@Kz*(IbJq9w;Tn>+oygthobOB1IJ|&&YUN#Xj8Du5&FbNZI z$S$%I)gDQriTMK(=mY?~ci9dA`qEfc?Q%$qQz14evyev5B>Rvwcp$)L#;3vy%DXkc z?arE^*!#_!>Bh}im3s+I+k@?(;Qig~l7Q5{T+R+gfvi=X={q}~Ewx+VT>O}DZq6Nd2n+4v!SG&z11EOsaU zGBq1ELn9JZ)q`9V?&jrA+0X-K1b}a~JC{*N`+--1t=T-slhIy~<%25XGTFFT!z^Uw zGqfhGwj3{I(mE#-BN@VXpbY1ms(PnlOHTfRviH{=jj>$Y`badOsK?1->uig%9*QD7#5#w~Nr`$)cB=A4z*z5Yw))sBo9bFo@57toLq zRPaLuo$vuH37r1`9E?{$74?Ri_3y7KA;FQu|R z65~>DLD&+MV`WaWVWyr){h$ML_Oo*EqkilSCcAjvFfI6aURIKB2o_a^c#h-4bhH;Z zPuk#94L@oo=@weKh?P0BwgkglzN;!IdM5vPv)Uk5i~oEc6gC89-+jrCHQ6f(R?fYa zK0rchcQmxsdfl?*K+_7mNNhECAP3rR04eKeatn}0Ifzqh`KI=-4oq$(_p?c<6+NKn ze3=}+rcs}!7a;Hok&87OU;`M|GP=Plx!o?bRLu~!p(-}K!?_y}VnXAqvjkO{k!hTFe}3iXwq-?BUNLlp{T}1Tn3Hd{io4Xjv%gl+ z`#XX>dwIT8)vF)x`O-E^R(5=YRo<_e;CBnWR37doT=I!w3fRPvXr{wB@oc>$=E>P< z?a7BhXhNtpPrcDJg?&BF?=$FUygXx8 z?CG37UTmWW7G)iV`5Ih4o_!`4s zf$OMpJyFn@Fh(pxbcj4B*HM#wVB5%B;Y7_;)<2-Trx|`hJnxkp$=ivaLoNU_)@Mu} zis2Q39|x=g+cBlvLGY->J}IZj##6`E?Px*rw{!< z=B)h8lik%?+Z3nO(b!z~o{r{P=B*m_A9shpmcuAX3&`r|@FNK0re#PA;H@hV-(O+v zjIbjT$MZj4dYR+Y+gfa>LizQM=Uli_BQ9z-4=~pGh_j9rYg3w!cU?0!>rTI2WWBc9 zM45WXa+ncEP!N7Y9UlgWdU_FXc-_V0?Fx0tcqjwm@#V67Ri1Ck4=lC2O`a^S)j2iG zmW4F`O6>*L740aYc%G}wzLaRw5X$>xBe9`k=IRd20mWMoVnmk%kR%oj4WUNg4?AQ^a?4y3MYxz(!kq7C-AAWJuR_2qH767sO z?<{`C=i0QgCSY|QPpPdpl<*IWe~~M>%D9vwU?*C})bW7jX*{=?&Z<6Q5hsS-k9Skl zFImP%@K_#P+;v~nZJfRNZ04G3J=3qd+5*F6U6&cSeag415Jot*HcVnJ%IVoGL$uGX z{i<#4w3+^lAy;s7Wb_N#gi^%;(a3e9h)-8U$UE>KP&RTau)eAoUJA^uoWbt1jUF2Z ziy0qAUxB$fe~({xEBVdr4@P76^698<9DI#@-wz< zEdW&l0SKcMGAp8;*e?sgg;3fw4U#AFivZ+}j+*Hy>5vddej z%DsZn>$u>!l0~k9Oeb>1L=R>AX91P`XtUj?n0;J6u^eWvsmu#SI@kOLXlR*u{h~4V z_59@iI>Oc+h~L8CqsP>nx_^gZOrIi?DXa1LcUPGhT?E5pmtSIkZ3=hh1AS%sa_Lr> zw0HRfgDMUrw7&Jkbdmp{yL1)?)GzKNo|toK*rXKv4~XjI4~P&3$NLHI04;}8ND z5^#VyJ4^ZRy|68{AB@q>jm7|o2r)el6V>A$WvEhQ*cNKJJ*EW-ZlYVF-epr$(r*XU zCbnv5_(g(V2mTOnbkM}|v{&`E2C(?jUn{t-m4CrHsl#Go8IB)ZA`t1=B&AQA!`QGv zKBSZ9(HvtVyteK!A%D%rmy&6?3&=s>=;l|~n&Ebj*y&j($ zt4|k?u9BJI>?Zdv7nE%k0IV>zn*Wa#wtSbEU+JXX0I z6y1LX;e2HrJ$x+Go*pW?l(J;WUJw{(t^SB|)J)-fx*)X=bIV@(>{JczhPm|lq`X@ry>S?#>U^c=bH^w zcyFL3!_V50@iIup&7j$cWoPeYk;a*u2*>9UzlO&b@N`nw>odRZm@Md5xZ$Z++QO(Y zk}-rkZWYHauC`j2h#fy$r0u7;JZg)d{(7O7-fbN<$m22%u+p>LAofcB##8+T`?1e& z1J(7U)whkMimW>Yxfz^V(otH*Ixot5)bCl?sDdudv=DQAv#m_ALe2hFKL9xb?nB9f z4$g|_yVW;eo_CrB(h$^zB4mgnU2-7Qs2YUfEt~xpijgnHK7 z**yPR&-=#yx-2)5``AX|doYJFFQp)QH>7pVbbVR2Rz2%WrU?~~*X*b~?Oh19?l7L-~c7k@4eemu31&aWSCdMO$$ei9X?&I9KE z%_&0OLjse={X1B&8qvoiOSa4C4V@O`Nl!1Z;joVc}zVXl(F;KxA?cE zDZu`rxq7AF;qwnCih|E;i<^iyACl;QQppW>`7tIV`H_kc2k)Za^1c$Vrt&t;Mu+(3j(}k{#*ZkDGL#lrj&1nK(GMz|Ks7AUcG~0)^?)ttuBCyn{`X+ zEz7C69Dz{`?UAX<09O>4bW`9U&9GMn2wY6Oth9{-J_F$;Q27cH3;_zqeh)YsAaDQ? zrQ8`<9a41X#V~&;!M^haK;IaczUG2$0MD4R*EjcQ7V;17L#;xZw2u z#~$j#UnCBSr&!Zhe~~zH6BI2_V@5qVv+AG7A3s7rjd*kNESn?Q*`I;#DbZBTX|9?- zH&(kCD_dIJ1@gI&{eL*efWU)=+`_7r)$zK$l9p;_PAsSjM+-O}MU(JXLnG!%p+LFO zL23RaT#We7kHAmr|A2BGVf(L4MLu2n1N!HO8b8Eg8wl|Eib<@gT_JikcH+XdU=1U1stwSUxN?CJntrPO}E|exLG|djo(GheJ^1v zm5L!VeL7JKt^fhk`~MH8`j1>ly~L@D@9#X|lq>y2Rruw9Q~E{zlb=|ixD}cKJOvqg zbEM-2y`1LcLt7q_IOrDL-ZBw>Fp-U83DkRGwnL*=ne;$wskRKOk{3em&UQMv)8fkv zu_+69#P|Y#&G-HpKD}_=D1=$y_{ndLr7C?gVUF=Bm!pW#=P- zUdPCZ>5_eEBSW?12mDk<-%Eyy%-#oG`%kPo{$}H$Im)6X4DxbvN*NGL_>N&`fdFEl z&#Q2DXUJ8>XAK7W>p$uT7k2sl7dhisgM)MOaphxX-MG0Rn_qbaE@CBx+48Es4OFl5 zZeO#Y5%x;CI6;jlS;Ctf?XxRK7LT`hTEPV?g$xahbJHfyg%d-!t7mQ=^N6ALDhdM< zX@fPzmnC-^;+`oUQg!pYpY<=KSk%r}fPy5uAaB{igr@iEvb9Z{TB}V0euY_}6`$m+ z@seJf!9rKzmz{!Ioy;;xADl|cg;3=iZ3#k*lsBzE-@617R=Pz~1txwtqJ7gc>szF* zV;^rh(C4w+B=vmr)#==PobqLSv@w+X$EIaNntM^e7w?c0wmDa&u{xw(B639ky+qG7 zqb9;IM;8w}$Zr>r>xj8Hcr8nQPhUP>7IU&Pe0_7T;6W)5^0whflDr!Sz$1pRDe|Ll z$n@3Cmq$7_%9%FyI88}0TfIE|5fO$Ce9O^7-#cUWO5RP-4QV}n&xPchNURjiP#EliQ9BUuqB+YCtKjE?lQY)Zp^nUl}DwYj1ex%_fgZKwI(SiZQU706la=q1D< zT>4}W+?(iWA=}B?CI&;(iVMw~)i(z(LhBc8`tQip<&9qnbm4o+K^N^dIYHg|mvof) zasL?37SL+>bsp6iX=H9c?Q<$VzNnBY)0R=y#tm1r=pq-P=i*@JPPQgRpNnp{T%9|? zY_|j>EuAGx7JIJ)Oej}1NyWzGrTizL7t31DJop!`;e?@Vb?XwEa0QhQIT>kFKjO(=tjX~&_$ z#&u0C*sF4$6H4vlUy|!*7|Xhg^#gK@wM0xQCK^vZAdJ5*W!LWnZS?BOnPcB%#6HhN z58Bknt2EwDOSZhS7;h(FY61}Hm?&Ym>VD8mWI&bL)bU60>xX95b+hj3uI2X44>LWa zhOgaoi~h9Za(xgzA0cB^?D{g~DbQSgM6w1VH9ZuD)?SE)|4bpPNW?t+9nvx4#6aE-WtCd^;xhj^EH*`C(){3vh)0o zrbbOnO;5Zd=)sse#T#oMtMHoAoja3mfbS~}d2+*Kug-TGm79{om-;iK#1S>E>ZICrd~GT)S+{Xj?B+FEa$E~WZVz(i}vf=ja5IBWGP+0HhWp{K^#RNf1pq3L>`$fToV z((!i0qmo8lZ7H3OO+4GlJewJ#8fDAqPBK5M z$Kv}EK1zP}Z(P6*2ZdZHJX8gYcou=nC_{o5YkqTnOjXyJvuFO@?bINl_c{ZLJZo;E z4;~TJ7#H$1u*&JIz3sx&q8qgtV{cm)K{_({zux$|EK50$Oo5Yr#iR-gsp*41P^ha1m1C-#Si)~)NZOA3$v3q z^F5{_vYdt^G1jiko{JdxW3e2X`72-|BjAU@Ffa-GoeY2?E5{IgKPc>z0TigkF$7mO zQVb6OGB5y)pCdYCa=IOJY0qf{%BsBvgx^f<3*Bd+b`uv zPeU5gk<-t4cc8j_jX}Z-@si%?PS$`_(>Bcdfb;~tW1~@ZLu136w<#|kbp8AT;!}F< zx^2sXO(k7ItyCp~=|a?2+yRR9jFt9Wh2^pq|2#jE*2BkUZ5bN%75o|RS$`|u$4+%R{SE?yO%`WiBXz=Jy3tUzHw$_ zmMLJ)iy=M!i{Sarg~*(85%T@vzgLLe;AkjuSIr~@&;fCmB4aeXCusQmLw z2R~rrTu3YhsPKz`Q;V2uC%zPdD(Q6YJd+(025h_*-ASVGzr8JB)h>DZ2LvY2z&_yC zS+L;0^CmzHlkT|*@D(*ULGY%FFsyMfXXh|!g*4R-n*bVtD>{UU2H^;W;uldbEUqVO z%ikKZ@X6lnz8ju8&7fT_5!~)4S-KS^{z=3s%$;P>d#$PlroD?n1KEqH46 zpj>*CW7H?b&t{%O0B{tqgRgk#;fALirpZ|5u z(4BQ(p@$?0p6L%rYIpb_8zIFw8CV*zn^*ueMsu-12QK3@*UbRR`0uV8_}`D2>M}yr z9>eZUHef8nNfe!<=U%aR_`e^7{QbxV_^#xNKJ8Y=^?8VcjnIh3)Nan+-YSWy7(5a~ zWzkS_(}P-treMcevWA2jyw&|Jzf67qe1tI3_PbJH1=&ZAg`y-QLmYvO<`=pRZ_@xLxDm9Q zJY7C7Y#9k6W5mC}c4=lJhH1&U^?LW^d@Tq zsNw0bzjP&k7a-Gbw6h#v1seBZv?13p(C}k$>>d1w(Hz0`iOix4nC>T{C)4z!Kw^?& z#m$%YX+5lnR_c-Xc~|fb6myOm&E;|@gjTp92BQh|E_quB-NEP_cEOpQ{ci`6G>kp> zmN-)(XjYBFq5;{&HTm-JlvU@q1s%!XIy32LERv{jUxPlNSd32fW=Gj+Xs8cT zy9JDkkoWxt;5*S^uI+?7XUhju4vj61$@Wo>;~YGiqFp$?aOX=RD zYTq23GVZ9!IPwQ{Vfi_K$?zYLU#FepziM0ntVXg_SSjp8Hw35{C?mYC25$#|RppHZ-36lwa5y^mgpwq9Dz#NA@}>Ro-~q!x zhwOI}Pk{YNpECcs>?;AX88z z?><|ocT{qwLD~VbZO@a$s+V|zIz(A?zQtpN`fTsa_dAX~op11QMj7wN*g55%!r#@5 zzLw45I8dZucrN1Hp?lsJbL@2^gXewA3(@C4h9AseT*fL6X-#ULKaIAm=_{W&UONd` z;AQi+wI7Z}MQ81R=8zJzAi>mQJ&qQKSF0)&v#5K&R(h%Tbfmf5P~d}Qx0I2GuWu@v ze6^Gg{3fx8R`WE3*CJ@Ak#S=Y^MuGkhV^MLUx!JcLUj0A>^kM~4Fr2UP-0hjGzPKY*;;_C=K#`szlPFUBREV!&U-RaX(vi`c3=|+1H6^vQ z;dtv*%LJm3I};WavKW_8TrV+osf?B_bXi=jvIWJIbXtUL8vRX8G&GrF;UtFqWkkeO z;?6^lb3C3OSDWh?>snQrZ`bW14=$1hs#g{-TzB@7jdf}h&t3cJ8rAHvxFrHLAtEB| zU_pxBg*~@5mZs+|XZg61qBWZ5Ue|v3TA!$ZUl$@@t?61{JL<>79?0dU*Cae=>beF! z8}~kX18I1FEIlK@OR!LK+naIo0|&ZbvoV9YX{IE2m0wG_z@kG^((t2a7MOww7XIw8 zs#eK^wQ*iTjP!7^MP0=eoKFQoeUflP&W;j3BUc$M*J3r1o{aDHX_DOZX z?Y8qCGKjLcN2Z){&+iR=v#^+4k)N7WsSTQ77*lxK%YR`WAr7o9E+$MOZH9JZN>1w@ zf01SRI%UFD^Sgh^4)Kofy*$<4)6IEFvLet(A<%7h5L2xPgKB5;0yM|#cAwhe_)L)F zu%Ko;kKD8JJf@mL#!@dmRtD9&D}1u>MwK7e{862ZVkd|CwRGVzKOqnQ;kj|Q3k##1 z7>(?}vV?Wz;k|T)-nLSg>C?3XzJAP*Abp#fJK~C#zB8Yw`X%tXV;?WiX1;o#nu7dt zs3fLC@cdY!!_GV1MU}`{eqZ70_V4$$a%PJxI)5tNGG+jA%8z%z;9oMK zkacYTWoiTK?&-EX|2(&TtdW~WV@rq2E2mNT{v(Hb4ix`tl~VJqShK0Gz~%u~_ z?iG(AxoI4kU?{1R6?Rp6^W)d~rNyFo+MKRmNI`MrZ0#-6T2Yx09S#`v@Zkx%-|`U} zqlo}{OV!&@R?#AMI{EpE58PG9(IlM zE1isC+v)*_N&9y&L&v@j&OP9$L<@<2uz^c~M1?k^?_zWo%Kg;siKdzU?eUd2oU zp||8z5A^)g&aa(K8BVy)@}F6=FM~G#XN|U~A-6u9(T$+1y<1!Pu*g1*nAu?64)^D>o zb8lyj`-GZgu7BIv!A6elHu9&JxSN9rtta(@%L8Tvcu;*yqCB=;)*z5 z9@TdFIxVkB(%Q++am>lvTf8iFr}&krhTVRU5`200b5rJlZZm4~ z!BQNwti;sISjPjTf;|wRGv~{Hz+@f@?SSH_rKS|yByB$t@8<$v@{gpYMJ-|ats>Km zIOiRgBliHv!zUKNInAYe;~-HCxWfS2A?^yhA8@)^Xd{?>ASOhu3mMZExLaG%Q~BpK6aR`A zt8PZEA$tNksRdpTb$xKqaBrw9bts2@J*1$Qn&l*d?DJXbGWRQVm|rb2`xJbDbbq9{ z=&eYfOWia;d7|ls0OY>{G{he;*tBO9yh6RSb#1Wmtwf03;2wFUbaxrOp=oY*Gf{@U z8$z9;E5$X)cuVHS7d6)CgxsA#6?aPoUXV1xsT)a6@j|Q_xG+|THqw$8PlFm7p)+4T z`-(WyeEJ@o5)+iggi#)(+4)JOwYYhRw_W`Nm(oX(0fuOBS(b~&0!vYM#Lrjs`3~=z zm9Q}XF2VWF!7jyL%oXIC)r^j&E&v)y^caF2e+hU{uG{;7ZvK zJO|QPEy-=V))U9pp@UPdpO3iMeK%xj1T0|IPTqdiV;Pe0@}`f0%84*#6Z5bFBd+&8tGxyM^b9D5 zo3c?N;B+YfXP!8~o!>NNU~qlkXyE*Cfb2fNw?j0Mohtu&h~3o)3SxqWBslFEV3q+5 z8+PLU-Y%al3STb$0W%(H#xu9R0mn;powYL}ocOMVq0IRMX6U*BhhgA^>E+g9v^EJL zj^!w5Yvl0rxHM(gxS%_#dG%YNCy}tS-1=lH>?_k5iY!qaAbQjjaB50$-7ic16^8YT zD`Wd3yovALvfnj1Otm2(K0~l4{?XmMe{@%kc>pnvV#k%=ghRX`KiP|xH}^9@Pdfg0 z0JFOB2shj~+?oCuDjuigU0V~tEEyxyo#ZD?rD<_0kIkk=?^LAw=xAsrzLync;SoM) zPEW*Wlq^&eWuE^F8atNK0$hc=<1)&8dy@IFZ!RiLiwwGh06=TlcU5?;`sXt z{>esrQ5VM0Wq-)qQ72Xkq3!7H&20l!3FazgH*_{U*{C9$u_;p?p3+DL*h3}#oykX> z`BZ<^at-S(;YQ&XL{>PW|)*=YC_Bw~E&aZxjHMioK#H4f$CaYi~-$ zEC)~|XZ7?c{TW*$r5m6``+WG8lV4jN?kI~}KgO!i7iFADRwJ{J9xjg+?msTcj!6_WQj)gh=|A@;1vP(D1Ma`{chTNS>~UIE8tIN> zXohKY=!cS4Rpzf+Vvd`TP;63FhKolSm!8{MA5%htUV(c6b8jItgVj2Pp zM*a%n!+eF!{r4%hsS7RM3@ zS7L9w_|w}CF6iI40@Buv-3?zmbpgB^=smz4{!j=D?#%~ep-ss(BvTy7fmW*@Fn-Nu z_?q@y9;6-zT>0hT(*8rk=Ljxb69RB;0YY<$3c6UVzEB}1Qw9{PAuQ~27-F;@Y|Gu=5ObJ*1kDxP;-bzxKu7NU2@AdtIvE30gSxi`U z?CJzRKCQYUTh`wM=)o-&xJ&p=#Y4Cmko5asjfxs#W^|P(BK*6_r+18wm>`+~CxjRnelTvI5 z|C3Wx&IPqI)R^k5Y$8TzG#D4>EQS<#TM~MERc|4B-dt;rPghAv%I7VoMq`#M4G7_rx}V*L$qh({bagC7nT-r*{1Jr_9bq#M@}!9YEv^ zaqb$ctDX?7nwzHOhI+7LRYACr6NG0eB{!f^^2!#bKNRvT)cPFVDL0p(Z>v+Al*CjH za1Yv+Ag|eG-u5xbI;KfNW{$I|L7Y7hrBDU6&k%*+QVVF&K!mV`YVP9=!(U$aqfg#H z>AXKbwey6h#Jxwh3K>^&+A}FW4f@y+ctuYYy^|UCw3~JPxf80LT+=tR-P@*r;pB(- z&*Fht;hn9Ou-j)Sq>(;Z{=Pa}c;cFqYdZoSSRZkwKjj$r-A4{B1t!>~HzzWlAeA!D zUD*+=_$8oCIW=xQtWS=W60{OMO(SSo>lB4t4b*;aT8+@P)Q!NF>t%Bi^kTyqmfY(} zlwKfo1be&mk^? zqGF2(5u*F_RzP1OJlVf>S9qhuC{q{4&Z!n;uu2?Rytd8ku95U5$V!v@}P7!Zl&3d zOGE9^c^4r52)1ltrYKD(h6X=Q^L-jq=mcGvHIF~&lFoJ4udd^IioH2p?}$q)UOscS za(XO(Myy?^3feo^J_V->t+zfI{yJZ(Zl$lNA%E76BkA>uqhbb)*yb!ms|{6ZCRWC# z6+(*Q4V`Wqo9^|)go~KyUE*cTZ^l*r#VaC*VBvhAd_G`vq%D_|@S~|SIaNb#1lnu# zxrT^{#iroQ8|jDQs%z4EH%Uo3SrweOuF6xB=Q!;vi^i$*q_?&B=}igts-Fro{j7x1I) zr`!{I-nIM09$)#aEKnw$D5#!RhCMJ8rDE*$m}v)1K7>-6{E^Zdl7cZ81@CKHOL3p5 zyEpNxgF&P4-5UbQo}9tdb2OnAmJkSF8Sd^{XUh*^)e7f7OEf-+(fCeuC&Wl4R+#VM zvR%300TZz$x}xK1H=+&U5Z-!ZEsaKEtI}mw;#HX%Ph3r-XUa1!8W^MXbt}HY}7Lc7bso0gNm{c;qW8u(znbFtFaz9|^Cc@R~#LLIYCc)w8 zWdSmp|*CzRlFb5yS}uM>c0J} z=9NB|Lw!IB8LuBrl8SysI|!(IlQsdnr_xO6nep?3a*VCpy=#O~@Cp8`UV|ErHp<;c zSZsT$k*qbXx7}HpmCMv*oQA3q+jVbOnXz}9=iANKtXm%Q3n-eHa*414936SvFlVvO{Z;UI$rHJJ(Dg`G&AJ}$fU5DS_dj4)Y(mSh1J8^5l)2Pr z4eSzQa2Aj&j)D{qHMW5s(aTTJb8|oq?q~B3pkyX@Heu?3hUwMd=8&&4oa!7~4pOs& z9|{6Us!W3dig^esq{p-x9>iPGR-&t%qPoVLt835Kxoqm$yV-545ubW4{+M}R%3AeR z3MQQfbZB3y(_RpoDyJq8;ZEKo!~PiOZ8bE}Pf7LJnlJ2SdzPBT@AGpqMlO)g=+K>K zX&XNiFLi17cC=8P2~|LjbksCK+sT1F*B&7A+N`|5LmfY*`|kP+_ZBLshRo>E@REq?fEEQGc_bpN*!c5J*`c2vvq`|$X?yH$b9D9ZuFP{_$ z4{3DLY{}zl5P*yuD?)osho+AWQeW!64Upa&nZM#QHGXv-?3gOF6nhN58U(M_0R)DuPwQoEb3n3rOn??|+d%}>lUntD>&2{;*qkE!>HAD`T%AKtitjsrS3UD~ zV^9TdZ0*0)aQkQDRFv7n?x(f;F^sUL$@_-)jgWMktYEMx)+PXUbIfY}#VHV7D`bi! ti_fwu4JG2`?6*vH%xJ{KZtplIJJW9h!yUi(7ysv Date: Wed, 9 Oct 2024 15:30:25 +0200 Subject: [PATCH 05/15] Add latest SEDOS publication --- docs/publications.md | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 docs/publications.md diff --git a/docs/publications.md b/docs/publications.md new file mode 100644 index 0000000..fa38103 --- /dev/null +++ b/docs/publications.md @@ -0,0 +1,6 @@ +# Further Reading + +In case you use our model structure and the related data in a scientific publication we kindly request you to cite our open-access publication: + +- Reveron Baecker, Beneharo, et al. "Comprehensive and open model structure for the design of future energy systems with sector coupling." +Renewable and Sustainable Energy Transition (2024): 100094. DOI: [https://doi.org/10.1016/j.rset.2024.100094](https://doi.org/10.1016/j.rset.2024.100094) \ No newline at end of file From 52d61a6c5c1fc8088123ed08cad59a98b22ec1a8 Mon Sep 17 00:00:00 2001 From: BeneharoRB Date: Wed, 9 Oct 2024 15:47:10 +0200 Subject: [PATCH 06/15] Add first draft for new data description for external SEDOS users. --- docs/visitor/data/data_conventions.md | 394 +++++++++++++++++++++++++- docs/visitor/data/input_data.md | 281 ------------------ docs/visitor/data/licensing.md | 142 ---------- docs/visitor/data/metadata.md | 18 +- docs/visitor/data/nomenclature.md | 163 +++++++++++ docs/visitor/data/overview.md | 17 +- docs/visitor/data/parameters.md | 3 - docs/visitor/nomenclature.md | 1 - 8 files changed, 559 insertions(+), 460 deletions(-) delete mode 100644 docs/visitor/data/input_data.md delete mode 100644 docs/visitor/data/licensing.md create mode 100644 docs/visitor/data/nomenclature.md delete mode 100644 docs/visitor/data/parameters.md delete mode 100644 docs/visitor/nomenclature.md diff --git a/docs/visitor/data/data_conventions.md b/docs/visitor/data/data_conventions.md index c5606a1..bd4e8f9 100644 --- a/docs/visitor/data/data_conventions.md +++ b/docs/visitor/data/data_conventions.md @@ -1,17 +1,387 @@ # Data conventions -## 2.7 Standards +## Background information -### Standard units +This section provides additional information on parameters and on the interpretation of their possible values. -Standard units should be harmonized as far as possible to improve transparency and comparability. The data adapters also convert the units to ensure compatibility with the frameworks. There may also be exceptions to the input data; the information should, therefore, be regarded as a suggestion. +??? note "Information on special parameters" -| Size | Unit | -|-------|-----------------------------| -| Performance | MW | -| Energy | GWh | -| Weight (products) | Million tonnes | -| Weight (CO2-equivalent emissions) | kg | -| Costs | Euro | -| Length | km | -| Surface area | m² | \ No newline at end of file + === "`conversion_factor_`" + Having many Multiple-Input-Multiple-Output (MIMO) processes in the model structure, efficiencies are considered with the parameter `conversion_factor`. + We use the same naming convention for all parameters that describe the ratios of inputs and outputs in relation to the primary commodity.
+ The primary commodity (conversion_factor = 1) is per default the first output of the process.
+ + For consistency please check that the calorific values (heating values) that your conversion factors are based on, are consistent with the + values defined in "calorific_values_SEDOS" in the supplementary files at the sharepoint.
+ + The TIMES adapter needs to convert the conversion factors into their parameter conventions and an automatic identification and naming of the commodity groups. + as required by the framework. + + === "`flow_share_min/max/fix`" + This parameter can be defined to bound flow shares within the commodity groups of MIMO processes that by default have flexible ratios.
+ e.g. for a hydrogen-ready gas turbine (that can either burn methane or h2 in the MIMO-process) the hydrogen flow for every + timestep could be restricted to a ratio of 0.3 with `flow_share_max=0.3`. + + === "`capacity_p_abs_new_max`" + + Growth rates of processes should be considered with `capacity_p_abs_new_max` or `capacity_e_abs_new_max` parameter. + It describes absolute upper bounds for the expansion of capacities per milestone year. Please consider the deviating + period lengths for different milestone years when you determine the upper bounds. + This parameter should be given for a process only if it is based on reasonable assumptions or data. + Please include its background in your AP specific documentation. The transport sector considers growth rates with the market shares. + + === "`wacc`" + + The weighted average cost of capital (wacc) gives the interest rate (%) of costs for capital after taxes. + As we follow a macro-economic approach in SEDOS it is globally defined for all technologies with a value of 2 percent. + Please link it to the `global_scalars` table as explained in the note `Linking data with foreign keys`. + +??? note "Existing and investment processes" + + === "Existing processes" + Processes that were existing before the base year 2021 can be identified on their name. They end with `_0` +
+ Example: `pow_combustion_gt_hydrogen_0` + + === "Investment processes" + Processes that were not existing before the base year 2021 and that the model can invest in can be + identified on their name. They end with `_1` +
+ Example: `pow_combustion_cc_chp_ccs_biomass_1` + +??? note "Parameter_Input-Output" + + The Parameter_Input-Output relations are important to link relevant flow-specific parameters to input or output commodities + of a MIMO process. Due to the high number of MIMO processes in our model structure we defined defaults for these relations:

+ **Cost parameters are directly related to the throughput power capacity based on the given primary commodity** + (first output of a process with conversion_factor = 1).

+ Moreover, the following parameters are per default directly derived from the parameter names in your uploaded data.
+ - `conversion_factor_`
+ - `flow_share_max_`
+ - `emission_factor__`
+ Please make sure that the names accurately fit to this schema. Otherwise, the data adapter will not recognize the + uploaded data and the relation of the parameters can not be defined.
+ + For exceptions to these defaults please use the "Parameter_Input-Output" sheet to clearly indicate that the parameter relations do not follow these defaults. + e.g. the investment costs of an electrolyzer that are defined in relation to the input power capacity. + +??? note "Monetary value" + + If not further specified the base year for the monatary value is 2021. + + If monatary conversion were performed, the following logic was applied:
+ _currency_A(year_x) -> currency_B(year_x) -> currency_B(year_z)_
+ e.g. USD2010 -> EUR2010 -> EUR2021
+ + For the conversion please use the provided table "monetary_conversion" in the supplementary files at the sharepoint. + The conversion is based on data from the ECB for the exchange rates and from the StBA for the harmonised index of consumer prices.
+ The original years of the sources can be documented in the method column - e.g. {`Investment costs`:`Conversion from USD2019`} + +??? note "Leap years" + + Leap years are considered in timeseries data by setting the timeindex_stop for **2024, 2040, 2060** to + the **30.12.**
The timesseries has only 8760 instead of 8784 timesteps (-> the 31.12 is missing). + + ```python + | id | region | type | timeindex_start | timeindex_stop | timeindex_resolution | exo_pkm_road_mcar | version | method | source | comment | + |------|----------|--------|-----------------------|-----------------------|------------------------|---------------------|-----------|----------|----------|-----------| + | 1 | DE | | 2021-01-01 00:00:00 | 2021-12-31 23:00:00 | 1h | [1,2,3,…,8760] | v1 | | | | + | 2 | DE | | 2024-01-01 00:00:00 | 2024-12-30 23:00:00 | 1h | [1,2,3,…,8760] | v1 | | | | + | 3 | DE | | 2027-01-01 00:00:00 | 2027-12-31 23:00:00 | 1h | [1,2,3,…,8760] | v1 | | | | + | 4 | DE | | 2030-01-01 00:00:00 | 2030-12-31 23:00:00 | 1h | [1,2,3,…,8760] | v1 | | | | + | 5 | DE | | 2035-01-01 00:00:00 | 2035-12-31 23:00:00 | 1h | [1,2,3,…,8760] | v1 | | | | + | 6 | DE | | 2040-01-01 00:00:00 | 2040-12-30 23:00:00 | 1h | [1,2,3,…,8760] | v1 | | | | + | 7 | DE | | 2045-01-01 00:00:00 | 2045-12-31 23:00:00 | 1h | [1,2,3,…,8760] | v1 | | | | + | 8 | DE | | 2050-01-01 00:00:00 | 2050-12-31 23:00:00 | 1h | [1,2,3,…,8760] | v1 | | | | + | 9 | DE | | 2060-01-01 00:00:00 | 2060-12-30 23:00:00 | 1h | [1,2,3,…,8760] | v1 | | | | + | 10 | DE | | 2070-01-01 00:00:00 | 2070-12-31 23:00:00 | 1h | [1,2,3,…,8760] | v1 | | | | + ``` + +??? note "Structure of energy demands" + + Demands per sector are provided via three tables:
+ 1. `_scalars`
+ 2. `_timeseries`
+ 3. `_demand`
+ + The structure is exemplified on the transport sector below. + + === "`tra_scalars`" + The table collects all sector process-unspecific scalars.
+ Also the annual demands. Demand columns are named as the commodity (unit must be declared via metadata) + + ```python + | id | region | year | type | exo_pkm_road_mcar | exo_tkm_rail | exo_tkm_rail_short | exo_pkm_road_lcar | bandwidth_type | version | method | source | comment | + |----|--------|------|------|-------------------|--------------|--------------------|-------------------|----------------|---------|--------|--------|---------| + | 1 | DE | 2021 | | 34.4 | 100 | 1000 | 66 | | | | | | + | 2 | DE | 2024 | | 34.4 | 101 | 1001 | 67 | | | | | | + | 3 | DE | 2027 | | 34.4 | 102 | 1002 | 68 | | | | | | + | 4 | DE | 2030 | | 34.4 | 103 | 1003 | 69 | | | | | | + | 5 | DE | 2035 | | 34.4 | 104 | 1004 | 70 | | | | | | + | 6 | DE | 2040 | | 34.4 | 105 | 1005 | 71 | | | | | | + | 7 | DE | 2045 | | 34.4 | 106 | 1006 | 72 | | | | | | + | 8 | DE | 2050 | | 34.4 | 107 | 1007 | 73 | | | | | | + | 9 | DE | 2060 | | 34.4 | 108 | 1008 | 74 | | | | | | + | 10 | DE | 2070 | | 34.4 | 109 | 1009 | 75 | | | | | | + ``` + + + === "`tra_timeseries`" + The table collects all sector timeseries - also the demand timeseries.
+ Note that leap years are considered in time series data by setting the timeindex_stop for 2024, 2040, 2060 to the 30.12. + + ```python + | id | region | type | timeindex_start | timeindex_stop | timeindex_resolution | exo_pkm_road_mcar | exo_tkm_rail | exo_tkm_rail_short | exo_pkm_road_lcar | exo_pkm_road_xcar | version | method | source | comment | + |----|--------|------|---------------------|---------------------|----------------------|-------------------|----------------|--------------------|-------------------|-------------------|---------|--------|--------|---------| + | 1 | DE | | 2021-01-01 00:00:00 | 2021-12-31 23:00:00 | 1h | [1,2,3,…,8760] | [1,2,3,…,8760] | [1,2,3,…,8760] | [1,2,3,…,8760] | [1,2,3,…,8760] | v1 | | | | + | 2 | DE | | 2024-01-01 00:00:00 | 2024-12-30 23:00:00 | 1h | [1,2,3,…,8760] | [1,2,3,…,8760] | [1,2,3,…,8760] | [1,2,3,…,8760] | [1,2,3,…,8760] | v1 | | | | + | 3 | DE | | 2027-01-01 00:00:00 | 2027-12-31 23:00:00 | 1h | [1,2,3,…,8760] | [1,2,3,…,8760] | [1,2,3,…,8760] | [1,2,3,…,8760] | [1,2,3,…,8760] | v1 | | | | + | 4 | DE | | 2030-01-01 00:00:00 | 2030-12-31 23:00:00 | 1h | [1,2,3,…,8760] | [1,2,3,…,8760] | [1,2,3,…,8760] | [1,2,3,…,8760] | [1,2,3,…,8760] | v1 | | | | + | 5 | DE | | 2035-01-01 00:00:00 | 2035-12-31 23:00:00 | 1h | [1,2,3,…,8760] | [1,2,3,…,8760] | [1,2,3,…,8760] | [1,2,3,…,8760] | [1,2,3,…,8760] | v1 | | | | + | 6 | DE | | 2040-01-01 00:00:00 | 2040-12-30 23:00:00 | 1h | [1,2,3,…,8760] | [1,2,3,…,8760] | [1,2,3,…,8760] | [1,2,3,…,8760] | [1,2,3,…,8760] | v1 | | | | + | 7 | DE | | 2045-01-01 00:00:00 | 2045-12-31 23:00:00 | 1h | [1,2,3,…,8760] | [1,2,3,…,8760] | [1,2,3,…,8760] | [1,2,3,…,8760] | [1,2,3,…,8760] | v1 | | | | + | 8 | DE | | 2050-01-01 00:00:00 | 2050-12-31 23:00:00 | 1h | [1,2,3,…,8760] | [1,2,3,…,8760] | [1,2,3,…,8760] | [1,2,3,…,8760] | [1,2,3,…,8760] | v1 | | | | + | 9 | DE | | 2060-01-01 00:00:00 | 2060-12-30 23:00:00 | 1h | [1,2,3,…,8760] | [1,2,3,…,8760] | [1,2,3,…,8760] | [1,2,3,…,8760] | [1,2,3,…,8760] | v1 | | | | + | 10 | DE | | 2070-01-01 00:00:00 | 2070-12-31 23:00:00 | 1h | [1,2,3,…,8760] | [1,2,3,…,8760] | [1,2,3,…,8760] | [1,2,3,…,8760] | [1,2,3,…,8760] | v1 | | | | + ``` + + === "`tra_demand`" + In column "demand_annual" the scalar demand is mapped via foreign-key & also the units via the metadata from + the `tra_scalars` table. + The normalised timeseries are mapped in the "demand_timeseries_fixed" column via Foreign-key. + + ```python + | id | region | year | type | demand_annual | demand_timeseries_fixed | bandwidth_type | version | method | source | comment | + |----|--------|------|--------------------------------|-------------------------------|-----------------------------------|----------------|---------|--------|--------|---------| + | 1 | DE | 2021 | helper_sink_exo_tkm_rail | tra_scalars.exo_tkm_rail | tra_timeseries.exo_tkm_rail | | | | | | + | 2 | DE | 2024 | helper_sink_exo_tkm_rail | tra_scalars.exo_tkm_rail | tra_timeseries.exo_tkm_rail | | | | | | + | 3 | DE | 2027 | helper_sink_exo_tkm_rail | tra_scalars.exo_tkm_rail | tra_timeseries.exo_tkm_rail | | | | | | + | 4 | DE | 2030 | helper_sink_exo_tkm_rail | tra_scalars.exo_tkm_rail | tra_timeseries.exo_tkm_rail | | | | | | + | 5 | DE | 2035 | helper_sink_exo_tkm_rail | tra_scalars.exo_tkm_rail | tra_timeseries.exo_tkm_rail | | | | | | + | 6 | DE | 2040 | helper_sink_exo_tkm_rail | tra_scalars.exo_tkm_rail | tra_timeseries.exo_tkm_rail | | | | | | + | 7 | DE | 2045 | helper_sink_exo_tkm_rail | tra_scalars.exo_tkm_rail | tra_timeseries.exo_tkm_rail | | | | | | + | 8 | DE | 2050 | helper_sink_exo_tkm_rail | tra_scalars.exo_tkm_rail | tra_timeseries.exo_tkm_rail | | | | | | + | 9 | DE | 2060 | helper_sink_exo_tkm_rail | tra_scalars.exo_tkm_rail | tra_timeseries.exo_tkm_rail | | | | | | + | 10 | DE | 2070 | helper_sink_exo_tkm_rail | tra_scalars.exo_tkm_rail | tra_timeseries.exo_tkm_rail | | | | | | + | 11 | DE | 2021 | helper_sink_exo_tkm_rail_short | tra_scalars.exo_tkm_rail_short | tra_timeseries.exo_tkm_rail_short | | | | | | + | 12 | DE | 2024 | helper_sink_exo_tkm_rail_short | tra_scalars.exo_tkm_rail_short | tra_timeseries.exo_tkm_rail_short | | | | | | + | 13 | DE | 2027 | helper_sink_exo_tkm_rail_short | tra_scalars.exo_tkm_rail_short | tra_timeseries.exo_tkm_rail_short | | | | | | + | 14 | DE | 2030 | helper_sink_exo_tkm_rail_short | tra_scalars.exo_tkm_rail_short | tra_timeseries.exo_tkm_rail_short | | | | | | + | 15 | DE | 2035 | helper_sink_exo_tkm_rail_short | tra_scalars.exo_tkm_rail_short | tra_timeseries.exo_tkm_rail_short | | | | | | + | 16 | DE | 2040 | helper_sink_exo_tkm_rail_short | tra_scalars.exo_tkm_rail_short | tra_timeseries.exo_tkm_rail_short | | | | | | + | 17 | DE | 2045 | helper_sink_exo_tkm_rail_short | tra_scalars.exo_tkm_rail_short | tra_timeseries.exo_tkm_rail_short | | | | | | + | 18 | DE | 2050 | helper_sink_exo_tkm_rail_short | tra_scalars.exo_tkm_rail_short | tra_timeseries.exo_tkm_rail_short | | | | | | + | 19 | DE | 2060 | helper_sink_exo_tkm_rail_short | tra_scalars.exo_tkm_rail_short | tra_timeseries.exo_tkm_rail_short | | | | | | + | 20 | DE | 2070 | helper_sink_exo_tkm_rail_short | tra_scalars.exo_tkm_rail_short | tra_timeseries.exo_tkm_rail_short | | | | | | + | 21 | DE | 2021 | helper_sink_exo_pkm_road_mcar | tra_scalars.exo_pkm_road_mcar | tra_timeseries.exo_pkm_road_mcar | | | | | | + | 22 | DE | 2024 | helper_sink_exo_pkm_road_mcar | tra_scalars.exo_pkm_road_mcar | tra_timeseries.exo_pkm_road_mcar | | | | | | + | 23 | DE | 2027 | helper_sink_exo_pkm_road_mcar | tra_scalars.exo_pkm_road_mcar | tra_timeseries.exo_pkm_road_mcar | | | | | | + | 24 | DE | 2030 | helper_sink_exo_pkm_road_mcar | tra_scalars.exo_pkm_road_mcar | tra_timeseries.exo_pkm_road_mcar | | | | | | + | 25 | DE | 2035 | helper_sink_exo_pkm_road_mcar | tra_scalars.exo_pkm_road_mcar | tra_timeseries.exo_pkm_road_mcar | | | | | | + | 26 | DE | 2040 | helper_sink_exo_pkm_road_mcar | tra_scalars.exo_pkm_road_mcar | tra_timeseries.exo_pkm_road_mcar | | | | | | + | 27 | DE | 2045 | helper_sink_exo_pkm_road_mcar | tra_scalars.exo_pkm_road_mcar | tra_timeseries.exo_pkm_road_mcar | | | | | | + | 28 | DE | 2050 | helper_sink_exo_pkm_road_mcar | tra_scalars.exo_pkm_road_mcar | tra_timeseries.exo_pkm_road_mcar | | | | | | + | 29 | DE | 2060 | helper_sink_exo_pkm_road_mcar | tra_scalars.exo_pkm_road_mcar | tra_timeseries.exo_pkm_road_mcar | | | | | | + | 30 | DE | 2070 | helper_sink_exo_pkm_road_mcar | tra_scalars.exo_pkm_road_mcar | tra_timeseries.exo_pkm_road_mcar | | | | | | + | 31 | DE | 2021 | helper_sink_exo_pkm_road_lcar | tra_scalars.exo_pkm_road_lcar | tra_timeseries.exo_pkm_road_lcar | | | | | | + | 32 | DE | 2024 | helper_sink_exo_pkm_road_lcar | tra_scalars.exo_pkm_road_lcar | tra_timeseries.exo_pkm_road_lcar | | | | | | + | 33 | DE | 2027 | helper_sink_exo_pkm_road_lcar | tra_scalars.exo_pkm_road_lcar | tra_timeseries.exo_pkm_road_lcar | | | | | | + | 34 | DE | 2030 | helper_sink_exo_pkm_road_lcar | tra_scalars.exo_pkm_road_lcar | tra_timeseries.exo_pkm_road_lcar | | | | | | + | 35 | DE | 2035 | helper_sink_exo_pkm_road_lcar | tra_scalars.exo_pkm_road_lcar | tra_timeseries.exo_pkm_road_lcar | | | | | | + | 36 | DE | 2040 | helper_sink_exo_pkm_road_lcar | tra_scalars.exo_pkm_road_lcar | tra_timeseries.exo_pkm_road_lcar | | | | | | + | 37 | DE | 2045 | helper_sink_exo_pkm_road_lcar | tra_scalars.exo_pkm_road_lcar | tra_timeseries.exo_pkm_road_lcar | | | | | | + | 38 | DE | 2050 | helper_sink_exo_pkm_road_lcar | tra_scalars.exo_pkm_road_lcar | tra_timeseries.exo_pkm_road_lcar | | | | | | + | 39 | DE | 2060 | helper_sink_exo_pkm_road_lcar | tra_scalars.exo_pkm_road_lcar | tra_timeseries.exo_pkm_road_lcar | | | | | | + | 40 | DE | 2070 | helper_sink_exo_pkm_road_lcar | tra_scalars.exo_pkm_road_lcar | tra_timeseries.exo_pkm_road_lcar | | | | | | + ``` + + + +??? note "Empty cells and value 0" + + **Example table**:
+ ```python + | id | region | year | type | capacity_p_inst | capacity_p_abs_new_max | conversion_factor_sec_elec | lifetime | cost_inv_capacity_p | cb_coefficient | cv_coefficient | bandwidth_type | version | method | source | comment | + |----|--------|------|------|-------------------------------------|------------------------|----------------------------|----------|---------------------|----------------|----------------|----------------|---------|--------|--------|---------| + | 1 | DE | 2021 | pow_combustion_cc_chp_ccs_biomass_1 | | 0 | | | | | | | | | | | + | 2 | DE | 2024 | pow_combustion_cc_chp_ccs_biomass_1 | | 0 | | | | | | | | | | | + | 3 | DE | 2027 | pow_combustion_cc_chp_ccs_biomass_1 | | 0 | | | | | | | | | | | + | 4 | DE | 2030 | pow_combustion_cc_chp_ccs_biomass_1 | | 0 | | | | | | | | | | | + | 5 | DE | 2035 | pow_combustion_cc_chp_ccs_biomass_1 | | | 0.8 | 25 | 1000 | 0.4 | 0.6 | | | | | | + | 6 | DE | 2040 | pow_combustion_cc_chp_ccs_biomass_1 | | | 0.8 | 25 | 1000 | 0.4 | 0.6 | | | | | | + | 7 | DE | 2045 | pow_combustion_cc_chp_ccs_biomass_1 | | | 0.8 | 25 | 800 | 0.4 | 0.6 | | | | | | + | 8 | DE | 2050 | pow_combustion_cc_chp_ccs_biomass_1 | | | 0.8 | 30 | 800 | 0.4 | 0.6 | | | | | | + | 9 | DE | 2060 | pow_combustion_cc_chp_ccs_biomass_1 | | | 0.8 | 30 | 800 | 0.4 | 0.6 | | | | | | + | 10 | DE | 2070 | pow_combustion_cc_chp_ccs_biomass_1 | | | 0.8 | 30 | 600 | 0.4 | 0.6 | | | | | | + | 11 | DE | 2021 | pow_geothermal_st_1 | | 0 | | | | | | | | | | | + | 12 | DE | 2024 | pow_geothermal_st_1 | | 0 | | | | | | | | | | | + | 13 | DE | 2027 | pow_geothermal_st_1 | | 0 | | | | | | | | | | | + | 14 | DE | 2030 | pow_geothermal_st_1 | | 0 | | | | | | | | | | | + | 15 | DE | 2035 | pow_geothermal_st_1 | | 0 | | | | | | | | | | | + | 16 | DE | 2040 | pow_geothermal_st_1 | | 0 | | | | | | | | | | | + | 17 | DE | 2045 | pow_geothermal_st_1 | | | 0.4 | 25 | 800 | | | | | | | | + | 18 | DE | 2050 | pow_geothermal_st_1 | | | 0.4 | 30 | 800 | | | | | | | | + | 19 | DE | 2060 | pow_geothermal_st_1 | | | 0.4 | 30 | 800 | | | | | | | | + | 20 | DE | 2070 | pow_geothermal_st_1 | | | 0.4 | 30 | 600 | | | | | | | | + | 21 | DE | 2021 | pow_combustion_gt_hydrogen_0 | 3500 | | 0.6 | 20 | 500 | | | | | | | | + | 22 | DE | 2024 | pow_combustion_gt_hydrogen_0 | 3500 | | 0.6 | 20 | 500 | | | | | | | | + | 23 | DE | 2027 | pow_combustion_gt_hydrogen_0 | 3500 | | 0.6 | 20 | 500 | | | | | | | | + | 24 | DE | 2030 | pow_combustion_gt_hydrogen_0 | 3300 | | 0.6 | 20 | 500 | | | | | | | | + | 25 | DE | 2035 | pow_combustion_gt_hydrogen_0 | 3000 | | 0.6 | 20 | 500 | | | | | | | | + | 26 | DE | 2040 | pow_combustion_gt_hydrogen_0 | 2700 | | 0.6 | 20 | 500 | | | | | | | | + | 27 | DE | 2045 | pow_combustion_gt_hydrogen_0 | 1500 | | 0.6 | 20 | 500 | | | | | | | | + | 28 | DE | 2050 | pow_combustion_gt_hydrogen_0 | 200 | | 0.6 | 20 | 500 | | | | | | | | + | 29 | DE | 2060 | pow_combustion_gt_hydrogen_0 | 0 | | | | | | | | | | | | + | 30 | DE | 2070 | pow_combustion_gt_hydrogen_0 | 0 | | | | | | | | | | | | + ``` + + + === "Empty cells" + **Parameter values that do not exist for a given year, process and parameter combination have no relevance for a process.**

+ Example: + ```python + | id | region | year | type | capacity_p_inst | + |----|--------|------|-------------------------------------|--------------------| + | 1 | DE | 2021 | pow_combustion_cc_chp_ccs_biomass_1 | | + | 2 | DE | 2024 | pow_combustion_cc_chp_ccs_biomass_1 | | + ``` + + **Exception**: Unrestricted bound parameters + + **Upper and lower bound paramters have empty cells if unrestricted**.
This convention was made to avoid + high or low dummy values for upper or lower bounds.

+ In the example above, new capacity investments (`capacity_p_abs_new_max`) for the processes are not restricted:
+ ```python + | id | region | year | type | capacity_p_abs_new_max | + |----|--------|------|--------------------------------------|------------------------| + | 5 | DE | 2035 | pow_combustion_cc_chp_ccs_biomassl_1 | | + | 6 | DE | 2040 | pow_combustion_cc_chp_ccs_biomassl_1 | | + | 7 | DE | 2045 | pow_combustion_cc_chp_ccs_biomassl_1 | | + | 8 | DE | 2050 | pow_combustion_cc_chp_ccs_biomassl_1 | | + | 9 | DE | 2060 | pow_combustion_cc_chp_ccs_biomassl_1 | | + | 10 | DE | 2070 | pow_combustion_cc_chp_ccs_biomassl_1 | | + | 17 | DE | 2045 | pow_geothermal_st_1 | | + | 18 | DE | 2050 | pow_geothermal_st_1 | | + | 19 | DE | 2060 | pow_geothermal_st_1 | | + | 20 | DE | 2070 | pow_geothermal_st_1 | | + ``` +
+ **Other bounds parameters** + ```python + | SEDOS parameter name | Recommended unit | Description | + |--------------------------|--------------------|--------------------------------------------------------------------------------------------| + | capacity_p_abs_new_max | MW | Absolute upper bound on level of investment in new power output capacity for a period. | + | capacity_e_abs_new_max | MWh | Absolute upper bound on level of investment in new storage energy capacity for a period. | + | capacity_w_abs_new_max | Mt | Absolute upper bound on level of investment in new weight capacity for a period. | + | activity_bound_min | Mt/year | Lower bound on the activity level of a process. | + | activity_bound_fix | Mt/year | Fix bound on the activity level of a process. | + | activity_bound_max | Mt/year | Upper bound on the activity level of a process. | + | demand_timeseries_lower | MWh, pkm, tkm | Lower bound for demand timeseries. | + | demand_timeseries_upper | MWh, pkm, tkm | Upper bound for demand timeseries. | + ``` + + === "Value 0" + **The value is actually zero for a given year, process and parameter.**

+ Example: Existing capacity for `pow_combustion_gt_hydrogen_0` in 2060 is zero.
+ ```python + | id | region | year | type | capacity_p_inst | + |----|--------|------|--------------------------------------|--------------------| + | 29 | DE | 2060 | pow_combustion_gt_hydrogen_0 | 0 | + ``` + +??? note "Over specification of processes" + + **Example table**:
+ ```python + | id | region | year | type | capacity_p_inst | capacity_p_abs_new_max | conversion_factor_sec_elec | lifetime | cost_inv_capacity_p | cb_coefficient | cv_coefficient | bandwidth_type | version | method | source | comment | | + |----|--------|----------|--------|----------------------------------------|------------------------|----------------------------|------------------------------|---------------------|-----------------------|------------------|------------------|------------------|-----------|----------|----------|-----------| + | | 1 | DE | 2021 | pow_combustion_cc_chp_ccs_biomass_1 | | 0 | | | | | | | | | | | + | | 2 | DE | 2024 | pow_combustion_cc_chp_ccs_biomass_1 | | 0 | | | | | | | | | | | + | | 3 | DE | 2027 | pow_combustion_cc_chp_ccs_biomass_1 | | 0 | | | | | | | | | | | + | | 4 | DE | 2030 | pow_combustion_cc_chp_ccs_biomass_1 | | 0 | | | | | | | | | | | + | | 5 | DE | 2035 | pow_combustion_cc_chp_ccs_biomass_1 | | | 0.8 | 25 | 1000 | 0.4 | 0.6 | | | | | | + | | 6 | DE | 2040 | pow_combustion_cc_chp_ccs_biomass_1 | | | 0.8 | 25 | 1000 | 0.4 | 0.6 | | | | | | + | | 7 | DE | 2045 | pow_combustion_cc_chp_ccs_biomass_1 | | | 0.8 | 25 | 800 | 0.4 | 0.6 | | | | | | + | | 8 | DE | 2050 | pow_combustion_cc_chp_ccs_biomass_1 | | | 0.8 | 30 | 800 | 0.4 | 0.6 | | | | | | + | | 9 | DE | 2060 | pow_combustion_cc_chp_ccs_biomass_1 | | | 0.8 | 30 | 800 | 0.4 | 0.6 | | | | | | + | | 10 | DE | 2070 | pow_combustion_cc_chp_ccs_biomass_1 | | | 0.8 | 30 | 600 | 0.4 | 0.6 | | | | | | + | | 11 | DE | 2021 | pow_geothermal_st_1 | | 0 | | | | | | | | | | | + | | 12 | DE | 2024 | pow_geothermal_st_1 | | 0 | | | | | | | | | | | + | | 13 | DE | 2027 | pow_geothermal_st_1 | | 0 | | | | | | | | | | | + | | 14 | DE | 2030 | pow_geothermal_st_1 | | 0 | | | | | | | | | | | + | | 15 | DE | 2035 | pow_geothermal_st_1 | | 0 | | | | | | | | | | | + | | 16 | DE | 2040 | pow_geothermal_st_1 | | 0 | | | | | | | | | | | + | | 17 | DE | 2045 | pow_geothermal_st_1 | | | 0.4 | 25 | 800 | | | | | | | | + | | 18 | DE | 2050 | pow_geothermal_st_1 | | | 0.4 | 30 | 800 | | | | | | | | + | | 19 | DE | 2060 | pow_geothermal_st_1 | | | 0.4 | 30 | 800 | | | | | | | | + | | 20 | DE | 2070 | pow_geothermal_st_1 | | | 0.4 | 30 | 600 | | | | | | | | + | | 21 | DE | 2021 | pow_combustion_gt_hydrogen_0 | 3500 | | 0.6 | 20 | 500 | | | | | | | | + | | 22 | DE | 2024 | pow_combustion_gt_hydrogen_0 | 3500 | | 0.6 | 20 | 500 | | | | | | | | + | | 23 | DE | 2027 | pow_combustion_gt_hydrogen_0 | 3500 | | 0.6 | 20 | 500 | | | | | | | | + | | 24 | DE | 2030 | pow_combustion_gt_hydrogen_0 | 3300 | | 0.6 | 20 | 500 | | | | | | | | + | | 25 | DE | 2035 | pow_combustion_gt_hydrogen_0 | 3000 | | 0.6 | 20 | 500 | | | | | | | | + | | 26 | DE | 2040 | pow_combustion_gt_hydrogen_0 | 2700 | | 0.6 | 20 | 500 | | | | | | | | + | | 27 | DE | 2045 | pow_combustion_gt_hydrogen_0 | 1500 | | 0.6 | 20 | 500 | | | | | | | | + | | 28 | DE | 2050 | pow_combustion_gt_hydrogen_0 | 200 | | 0.6 | 20 | 500 | | | | | | | | + | | 29 | DE | 2060 | pow_combustion_gt_hydrogen_0 | 0 | | | | | | | | | | | | + | | 30 | DE | 2070 | pow_combustion_gt_hydrogen_0 | 0 | | | | | | | | | | | | + ``` + + To avoid ambiguities in the data, the processes are specified as precisely as possible.
This means, for + example, for investment processes all years are specified in the data, even if an investment process is only + available from later years, e.g 2035, as opposed to missing rows for 2021, 2024, 2027 and 2030.
+ To avoid data misinterpretation, the techno-economic parameter values for 2021, 2024, 2027 and 2030 are empty, + since the process does not exist yet in such years. +
+ ```python + | id | region | year | type | capacity_p_inst | capacity_p_abs_new_max | conversion_factor_sec_elec | lifetime | cost_inv_capacity_p | cb_coefficient | cv_coefficient | bandwidth_type | version | method | source | comment | | + |----|--------|----------|--------|----------------------------------------|------------------------|----------------------------|------------------------------|---------------------|-----------------------|------------------|------------------|------------------|-----------|----------|----------|-----------| + | | 1 | DE | 2021 | pow_combustion_cc_chp_ccs_biomass_1 | | 0 | | | | | | | | | | | + | | 2 | DE | 2024 | pow_combustion_cc_chp_ccs_biomass_1 | | 0 | | | | | | | | | | | + | | 3 | DE | 2027 | pow_combustion_cc_chp_ccs_biomass_1 | | 0 | | | | | | | | | | | + | | 4 | DE | 2030 | pow_combustion_cc_chp_ccs_biomass_1 | | 0 | | | | | | | | | | | + | | 5 | DE | 2035 | pow_combustion_cc_chp_ccs_biomass_1 | | | 0.8 | 25 | 1000 | 0.4 | 0.6 | | | | | | + | | 6 | DE | 2040 | pow_combustion_cc_chp_ccs_biomass_1 | | | 0.8 | 25 | 1000 | 0.4 | 0.6 | | | | | | + | | 7 | DE | 2045 | pow_combustion_cc_chp_ccs_biomass_1 | | | 0.8 | 25 | 800 | 0.4 | 0.6 | | | | | | + | | 8 | DE | 2050 | pow_combustion_cc_chp_ccs_biomass_1 | | | 0.8 | 30 | 800 | 0.4 | 0.6 | | | | | | + | | 9 | DE | 2060 | pow_combustion_cc_chp_ccs_biomass_1 | | | 0.8 | 30 | 800 | 0.4 | 0.6 | | | | | | + | | 10 | DE | 2070 | pow_combustion_cc_chp_ccs_biomass_1 | | | 0.8 | 30 | 600 | 0.4 | 0.6 | | | | | | + ``` + + Conversely, existing capacities are explicitly declared as 0 as soon as they are no longer in the system, as + opposed to missing rows for 2060 and 2070.
+ To avoid data misinterpretation, the techno-economic parameter values for 2060 and 2070 are empty, + since the process does not exist anymore in such years. +
+ ```python + | id | region | year | type | capacity_p_inst | capacity_p_abs_new_max | conversion_factor_sec_elec | lifetime | cost_inv_capacity_p | cb_coefficient | cv_coefficient | bandwidth_type | version | method | source | comment | | + |----|--------|----------|--------|----------------------------------------|------------------------|----------------------------|------------------------------|---------------------|-----------------------|------------------|------------------|------------------|-----------|----------|----------|-----------| + | | 21 | DE | 2021 | pow_combustion_gt_hydrogen_0 | 3500 | | 0.6 | 20 | 500 | | | | | | | | + | | 22 | DE | 2024 | pow_combustion_gt_hydrogen_0 | 3500 | | 0.6 | 20 | 500 | | | | | | | | + | | 23 | DE | 2027 | pow_combustion_gt_hydrogen_0 | 3500 | | 0.6 | 20 | 500 | | | | | | | | + | | 24 | DE | 2030 | pow_combustion_gt_hydrogen_0 | 3300 | | 0.6 | 20 | 500 | | | | | | | | + | | 25 | DE | 2035 | pow_combustion_gt_hydrogen_0 | 3000 | | 0.6 | 20 | 500 | | | | | | | | + | | 26 | DE | 2040 | pow_combustion_gt_hydrogen_0 | 2700 | | 0.6 | 20 | 500 | | | | | | | | + | | 27 | DE | 2045 | pow_combustion_gt_hydrogen_0 | 1500 | | 0.6 | 20 | 500 | | | | | | | | + | | 28 | DE | 2050 | pow_combustion_gt_hydrogen_0 | 200 | | 0.6 | 20 | 500 | | | | | | | | + | | 29 | DE | 2060 | pow_combustion_gt_hydrogen_0 | 0 | | | | | | | | | | | | + | | 30 | DE | 2070 | pow_combustion_gt_hydrogen_0 | 0 | | | | | | | | | | | | + ``` +
+ + +## Standard units + +Standard units should be harmonized as far as possible to improve transparency and comparability. +The data adapters also convert the units to ensure compatibility with the frameworks. +There may also be exceptions to the suggestions below. + +| Size | Unit | +|-----------------------------------|-----------------| +| Power | MW | +| Energy | GWh / PJ | +| Costs | Euro | +| Weight (products) | Million tonnes | +| Weight (CO2-equivalent emissions) | tonnes | +| Transport Service | Billion pkm/tkm | +| Percent (range: [0,100]) | - | diff --git a/docs/visitor/data/input_data.md b/docs/visitor/data/input_data.md deleted file mode 100644 index f465be6..0000000 --- a/docs/visitor/data/input_data.md +++ /dev/null @@ -1,281 +0,0 @@ -# Input data - -## Datamodel - -The **oedatamodel-parameter** ([docs](https://github.com/sedos-project/oedatamodel#oedatamodel-parameter)) has to -be used to provide input data in SEDOS. This choice was made to allow ontological annotation of data. The data -model consists of two table types: "[scalar](https://github.com/sedos-project/oedatamodel/blob/main/oedatamodel-parameter/oedatamodel-parameter-datapackage_scalar.csv)" and "[timeseries](https://github.com/sedos-project/oedatamodel/blob/main/oedatamodel-parameter/oedatamodel-parameter-datapackage_timeseries.csv)". Please choose the table type accordingly, depending on the data you want to upload: - -- Use scalar tables to provide parameters with no relation to a timeindex.
To properly fill the table, read the - [scalar model column description](https://github.com/sedos-project/oedatamodel#scalar-description).
Use the - [example scalar package metadata](https://github.com/sedos-project/oedatamodel/blob/main/oedatamodel-parameter/datamodel_scalars.json) to write your own metadata - (see section [How to contribute data - 2. Create metadata](../how_to_contribute_data.md#create-metadata) -- Use a timeseries table to provide parameters with relation to a timeindex.
Use the [timeseries model column description](https://github.com/sedos-project/oedatamodel#timeseries-description) to make yourself familiar with the - fields and add metadata to your tables using the [example timeseries package metadata](https://github.com/sedos-project/oedatamodel/blob/main/oedatamodel-parameter/datamodel_timeseries.json) as a reference. - -**Datamodel features** - -- [type]() - use to specify multiple processes in one csv table (see [example](https://github.com/sedos-project/oedatamodel#example-table)) -- [bandwidth_type](https://github.com/sedos-project/oedatamodel#bandwidth-types-and-cell-methods) - specify how the - data bandwidths are interpreted - -### Input and output energy vectors - - -The input and output energy vectors of processes in SEDOS' reference energy system are defined in an external -table on the BW Sync&Share, in the sheet [Parameter_Input-Output](https://bwsyncandshare.kit.edu/f/2458081675). - -For processes with multiple input and/or output energy vectors it might not clear to which energy vector a -parameter column refers. Thus, the information has to be specified if needed. - -By `default`, **all** parameters of a process as assigned to all inputs and outputs of a process from the BW -Sync&Share table - sheet: [Process_Set](https://bwsyncandshare.kit.edu/f/2458081675) -(the `default` does not appear in the input_output sheet, but is used in the backend of the data pipeline).
-
-If needed, the `default` can be overwritten, simply by assigning other input(s) and output(s) to a specific -parameter of the process in the [Parameter_Input-Output](https://bwsyncandshare.kit.edu/f/2458081675) sheet. - -!!! Note "input_output insertion conventions" - - * Enclose substituting inputs or outputs in squared brackets `[ ]`. E.g. - * separate inputs or outputs with `,` (comma) - - -**Example** - -_Parameter_Input-Output_ sheet - -| parameter | process | input | output | | -|----------------------------------------|--------------------------------|------------------------------------|--------------------------------------------------|---| -| energy_conversion_efficiency_diesel | mob_road_mcar_ice_pass_diesel | | [pkm_road_mcar_short_exo, pkm_road_mcar_long_ex] | | -| energy_conversion_efficiency_syndiesel | mob_road_mcar_ice_pass_diesel | | [pkm_road_mcar_short_exo, pkm_road_mcar_long_ex] | | -| emission_factor_diesel | mob_road_mcar_ice_pass_diesel | diesel | CO2 | | -| emission_factor_syndiesel | mob_road_mcar_ice_pass_diesel | syndiesel | CO2 | | -| parameter1 | process 1 | [cane, honeymelon], heat, power | [sugar, cinnamon], waste | | - -In the [Process_Set](https://bwsyncandshare.kit.edu/f/2458081675) sheet, the process is assigned to: - -| Input | Process | Output | -|--------------------------------|-------------------------------|--------------------------------------------------------| -| [diesel, syndiesel, biodiesel] | mob_road_mcar_ice_pass_diesel | [pkm_road_mcar_short_exo, pkm_road_mcar_long_exo], CO2 | - -In the example it is assumed that the _mob_road_mcar_ice_pass_diesel_ emits the same amount of CO2 when using diesel or biodiesel as fuel. -However, the process has different efficiencies depending on the fuel.
- -All other process parameters of _mob_road_mcar_ice_pass_diesel_, such as: _investment_cost, operational_life_time, -mileage, occupancy_rate, market_share_ are assigned to the `default` inputs (diesel, syndiesel_ren, syndiesel_conv, -biodiesel) and outputs (pkm_road_mcar_short_exo, pkm_road_mcar_long_exo, CO2) in the backend from the table sheet -[Process_Set](https://bwsyncandshare.kit.edu/f/2458081675).
- -It is for the data providers (WP4-8) to assess whether this is correct for each process with respect to the -modelling.
-If the `default` is incorrect, the [Parameter_Input-Output](https://bwsyncandshare.kit.edu/f/2458081675) sheet -should be used to specify process parameters' inputs and outputs accordingly. - - -## Data tables - - -### Naming conventions for data tables and parameters -!!! warning "Note" - - * Parameter name and table name conventions are in place due to technical reasons of the underlying relational postgre-sql database on the OEP. - -The following conventions will be automatically checked when uploading a table on the OEP, and error messages will be raised in case of violation. -Users need to correct them and their compliance is mandatory. - -#### Do's -* use ASCII characters only -* use lower case only -* use the singular instead of the plural. -* use underscores - -#### Don'ts - -* table name must not exceed maximal character limit = 50 -* no points -* no commas -* no spaces -* no special characters -* avoid dates -* no hyphens. If dates are used, then without `-`! E.g.: 2022-10-21 will through an error. Use underscore instead! -* don't start parameter name with a number - -### Delimiter - -Use semicolon `;` as the column delimiter. - -### Decimal separator - -Use point `.` as decimal separator. - -### Versioning convention -??? Note "Versioning pattern" - -
**For SEDOS Reference Dataset** (SRD)

- `v` + `number`
- Version your data with **lowercase** letter `v` and arabic number, e.g.: v1, v2, v3, v4, ..., v12, v13 -

- **For SEDOS Scenarios**

- When the data for the SRD is final, specific scenarios will be uploaded to showcase the application of the SRD in practice. - It's done by selecting specific values from SRD's bandwidths and appending them with a `scenario version` to - respective tables.

- `s` + `number`
- Version your data with **lowercase** letter `s` and arabic number, e.g.: s1, s2, s3, s4, ..., s12, s13 - -**Increase the version when** you want to **add or update data** to a table that has been already uploaded to the OEP. -The oedatamodel-API will append new data versions to an existing OEP table. -
- -**Reasoning:** By following the versioning convention the end-user only needs to know the latest data version of a -given process. Thus, querying the latest process data version will return a full set of coherent input data. -
-Conversely, users only need to know one version number when querying older data versions to work with a full -set of coherent input data for a process. - -** v1 **: **Initial data** - -| id | region | year | type | capital_costs | lifetime | bandwidth_type | version | method | source | comment | -|----|--------|------|------|-------------------------------------------|------------------------------------------|----------------|--------------------------------------------|-------|--------|---------| -| 1 | DE | 2020 | | ** 1 ** | ** 5 ** | | ** v1 ** | | | | -| 2 | DE | 2025 | | ** 1.5 ** | ** 6 ** | | ** v1 ** | | | | - -** v2 **: **Adding data** to your csv table requires a new version `v2` for new -datapoints (capital_cost and lifetime in 2030, row=5), including a copy the existing data from `v1` as version `v2` -(reasoning see above) - -| id | region | year | type | capital_costs | lifetime | bandwidth_type | version | method | source | comment | -|----|--------|------|------|------------------------------------------|------------------------------------------|----------------|--------------------------------------------|-------|--------|---------| -| 1 | DE | 2020 | | 1 | 5 | | ** v2 ** | | | | -| 2 | DE | 2025 | | 1.5 | 6 | | ** v2 ** | | | | -| 3 | DE | 2030 | | ** 2 ** | ** 8 ** | | ** v2 ** | | | | - -** v3 **: **Updating a datapoint** (lifetime, row=8) requires a new version -`v3`, including a copy the existing data from `v2` as version `v3` - -| id | region | year | type | capital_costs | lifetime| bandwidth_type | version | method | source | comment | -|----|--------|------|------|---------------|------------------------------------------|----------------|--------------------------------------------|-------|--------|---------| -| 1 | DE | 2020 | | 1 | 5 | | ** v3 ** | | | | -| 2 | DE | 2025 | | 1.5 | 6 | | ** v3 ** | | | | -| 3 | DE | 2030 | | 2 | ** 15 ** | | ** v3 ** | | | | - -** v4 **: **Updating a datapoint** (capital_costs, row=11) requires a new -version `v4`, including a copy the existing data from `v3` as version `v4` - -| id | region | year | type | capital_costs | lifetime| bandwidth_type | version | method | source | comment | -|----|--------|------|------|------------------------------------------|------------------------------------------|----------------|--------------------------------------------|-------|--------|---------| -| 1 | DE | 2020 | | 1 | 5 | | ** v4 ** | | | | -| 2 | DE | 2025 | | 1.5 | 6 | | ** v4 ** | | | | -| 3 | DE | 2030 | | ** 4 ** | 15 | | ** v4 ** | | | | - - -!!! Note "`id` column numbering" - - If you check `Automatically increase IDs, if IDs are already present in table` in the OEDatamodel-api when - uploading the data, the id's will be updated automatically - as shown in the _Example result on OEP_ below. - -Example result on OEP: - -| id | region | year | type | capital_costs | lifetime| bandwidth_type | version | method | source | comment | -|----|--------|------|------|--------------------------------------------|------------------------------------------|----------------|--------------------------------------------|-------|--------|---------| -| 1 | DE | 2020 | | ** 1 ** | ** 5 ** | | ** v1 ** | | | | -| 2 | DE | 2025 | | ** 1.5 ** | ** 6 ** | | ** v1 ** | | | | -| 3 | DE | 2020 | | 1 | 5 | | ** v2 ** | | | | -| 4 | DE | 2025 | | 1.5 | 6 | | ** v2 ** | | | | -| 5 | DE | 2030 | | ** 2 ** | ** 8 ** | | ** v2 ** | | | | -| 6 | DE | 2020 | | 1 | 5 | | ** v3 ** | | | | -| 7 | DE | 2025 | | 1.5 | 6 | | ** v3 ** | | | | -| 8 | DE | 2030 | | 2 | ** 15 ** | | ** v3 ** | | | | -| 9 | DE | 2020 | | 1 | 5 | | ** v4 ** | | | | -| 10 | DE | 2025 | | 1.5 | 6 | | ** v4 ** | | | | -| 11 | DE | 2030 | | ** 4 ** | 15 | | ** v4 ** | | | | - - -!!! Note "Versioning note" - - * Uploading a row which exists already in: "region, type, year, version" results in an error. - * Otherwise single or multiple rows can be added to already existing versions - - -#### SEDOS Reference Dataset (SRD) versioning - -For the SRD, the following version tags apply: - -* **srd_range_sedos**: Final SRD with ranges to include parametric uncertainty from different sources. -* **srd_range_v1**: Updated SRD, after project end. -* **srd_point_sedos**: SEDOS-specific values from srd_range_sedos that serve as a basis for all scnearios. - -### Datatypes - -Available datatypes and corresponding formatting examples: - -| dtype | example | comment | -|:-----------:|:------------------------------------------:|:------------------------------------------------------------------------------------------------------------------------------------------------------------:| -| json | "{""key1"": ""text"", ""key2"": ""text""}" | {"key1": "text", ...} might work as well. If you're using an table edititor make sure to use ASCII characters only | | -| float array | [0.02, 279.5] | arrays with strings should be formatted as strings ("['string1', 'string2']" | -| text | "text" | String data should have text as datatype (text serves as "string") | -| integer | 27 | | -| text array | "[""TH"", ""BW""]" | ["TH","BW"] might work as well. If you're using an table edititor make sure to use ASCII characters only | - -### Table naming - -Follow the [nomenclature](https://bwsyncandshare.kit.edu/f/2458081675) for table and process naming in sheet: -**Nomenclature_Processes**. - -!!! warning "Note" - - * Create a new data package for each process, e.g. wind_onshore, chp, ...
- * Or use the `type` column to put multiple processes in one data package - * You can use a single datapackage for both demand data and other constraint data (tech-independent parameters),e.g.:
- * emission limit,
- * natural domestic limit,
- * WACC - - - -## Parameter naming - -Follow the [nomenclature](https://bwsyncandshare.kit.edu/f/2458081675) for parameter naming in sheet: -**Parameter_Set**. - -!!! warning "Note" - - * Parameter names must be linked to a concept in an ontology - -It is importance that every parameter name is linked to a suitable ontological concept via the metadata to enable -its clear interpretation. -
In case you cannot find a suitable ontology concept (e.g. because it's not in the ontology yet), please make sure -your chosen parameter name is clear and common in the domain. In this case avoid acronyms.
- -!!! note "Ontological annotations" - - * In the [nomenclature](https://bwsyncandshare.kit.edu/f/2458081675) for parameter naming in sheet: - **Parameter_Set**, we made suggestions for suitable ontology concepts for usage across the SEDOS APs. -

Please use them or make suggestions of better suitable concepts. - -For more background information regarding for linking parameter names and ontology concepts, using OEM, see [**here**](ontology.md#Ontological-annotation-of-data). - -For a practical manual linking parameter names to a suitable ontology concepts, using oemetadata builder, see [**here**](ontology.md#Link-a-parameter-name-to-a-suitable-ontology-concept). - -### Parameter naming in case of missing suitable ontology concept - -It is likely that not every parameter concept is already covered by an ontology. In this case, linking your parameter name to a suitable ontology concept is not directly possible. - -It might, however, be indirectly possible by linking it to a distinct selection of related ontology concepts. -In this case you would link your parameter name to multiple related concepts. - -For a practical manual linking parameter names to multiple related ontology concepts, using oemetadata builder, see [**here**](ontology.md#Link-a-parameter-name-to-multiple-related-ontology-concepts). - - \ No newline at end of file diff --git a/docs/visitor/data/licensing.md b/docs/visitor/data/licensing.md deleted file mode 100644 index 4df532c..0000000 --- a/docs/visitor/data/licensing.md +++ /dev/null @@ -1,142 +0,0 @@ -# Data Licencing - -In the SEDOS project, Open Data is one of the main criteria for developing the Reference Energy System (RES) database. -Open Data implies adequate licencing as a legal requirement, hence why this section aims to bring you up to speed regarding the nitty-gritty of licencing. -By the end of this section, you'll be able to licence your input data adequately. - -## Suitable data licences in SEDOS - -??? note "How to document licences in OEMetadata?" - - - If your data set has a licence, follow this example.
-
- For example: - - ``` - { - "sources": [ - { - "title": "OEDatamodel-parameter", - "description": "Parameter data model for secondary input scalars and timeseries", - "path": "https://github.com/sedos-project/oedatamodel/tree/main/oedatamodel-parameter", - "licenses": [ - { - "name": "CC0-1.0", - "title": "Creative Commons Zero v1.0 Universal", - "path": "https://creativecommons.org/publicdomain/zero/1.0/legalcode", - "instruction": "You are free: To Share, To Create, To Adapt", - "attribution": null - } - ] - }, - { - "title": "Code exposed: Review of five open-source frameworks for modeling renewable energy systems", - "description": "Energy system modeling is a commonly used method to provide policy recommendations and insight to transformation pathways of energy systems. However, the low open-source availability of the frameworks in practice often leads to low interpretability and transparency of energy modeling system configurations. The configuration of an energy model entails how its system components, such as power plants, storage systems and grids operate, and which parameters are used to define them. In order to understand the impact of different model configurations and working principles on the model output, a thorough comparison between various modeling frameworks is necessary. This work thereby consists of a comparison of five open-source energy system modeling frameworks (OS-ESMFs) oemof, GENeSYS-MOD, Balmorel, urbs and GENESYS-2 on the mathematical level and spotlights selected methodological differences in renewable energy system modeling. The comparison shows diversity in the complexity of selected system components and helps to define the best use-cases and scales of application for each framework. Impacts of modeled features on the results were demonstrated by implementing two harmonized scenarios depicting the German electricity system using each framework. While similar model results were obtained for both scenarios, some differences were present, especially in the long-term expansion planning model. Some of those differences could be traced back to the identified modeling differences.", - "path": "https://doi.org/10.1016/j.rser.2022.112272", - "licenses": [ - { - "name": "CC-BY-4.0", - "title": "Creative Commons Attribution 4.0 International", - "path": "https://creativecommons.org/licenses/by/4.0/", - "instruction": "You are free: To Share, To Create, To Adapt", - "attribution": null - } - ] - } - - ] - } - ``` - -1. For the data collection in WP3-8, you should choose data published under one of the listed licences below. -2. Add the licence spdx-id and/or correct attribution for respective source in the metadata ([oem-key 12.4.1-5](https://github.com/OpenEnergyPlatform/oemetadata/blob/develop/metadata/latest/metadata_key_description.md#source-keys)). -3. If your data is published under an open licence not listed below, please get in touch with *datenzentrum@rl-institut.de.* -> _Please note:_ non-conformant clauses such as
NC (non commercial) and ND (no derivates)
are **NOT** Open Data licences and must not be used. - -**Public Domain:** All rights granted. - -- [CC0-1.0](https://creativecommons.org/licenses/by/4.0/legalcode) | recommended -- [PDDL-1.0](https://opendatacommons.org/licenses/pddl/1-0/) | recommended -- [dl-de/zero-2-0](https://www.govdata.de/dl-de/zero-2-0) | granted by German government -- [CC-PDDC](https://creativecommons.org/licenses/publicdomain/) | not recommended - -**Attribution/Permissive:** Use rights and relicensing granted. Proprietisation is possible. Correct attribution is required (see licence link). - -- [CC-BY-4.0](https://creativecommons.org/licenses/by/4.0/legalcode) | recommended -- [ODC-By-1.0](https://opendatacommons.org/licenses/by/1-0/) | recommended -- [CDLA-Permissive-1.0](https://cdla.io/permissive-1-0/) -- [DL-DE-BY-2.0](https://www.govdata.de/dl-de/by-2-0) | granted only by the German government -- [GeoZG ](https://www.gesetze-im-internet.de/geozg/index.html) (no official spdx-id) | granted by German government | - -- [GeoNutzV](https://www.gesetze-im-internet.de/geonutzv/index.html) | granted by German government - -**Share-alike (Copyleft):** Use rights granted, propitiation impossible. - -- [ODbL-1.0](https://opendatacommons.org/licenses/odbl/1-0/) | recommended -- [CC-BY-SA-4.0](https://creativecommons.org/licenses/by-sa/4.0/legalcode) | not recommended - -For further information on licences, see
-* [OEP Tutorial on Open-Data Licences](https://openenergy-platform.org/tutorials/jupyter/tutorial_open-data-licenses/)
-* [ifrOSS GitHub](https://github.com/ifrOSS/ifrOSS/blob/master/OpenDataLicenses.md)
-* [Open Definition](https://opendefinition.org/licenses/) - -## Missing licence? - Using data without an open licence - -??? note "How to indicate missing licences in OEMetadata?" - - - If your data set has no licence, please **indicate this in the attribution**, using this pattern:
- `"attribution": "copyright. AuthorSurname1, AuthorSurname2, AuthorSurname3 OR Institut1,Institut2,Institut3. Year"`
-
- For example: - - ``` - { - "sources": [ - { - "title": "Impact of electric vehicles on a future renewable energy-based power system in Europe with a focus on Germany", - "description": "Paper on novel modelling approach comprising a detailed representation of electric vehicles based on real driving patterns and interactions between the power systems of Germany and other European regions.", - "path": "https://doi.org/10.1002/er.4056", - "licenses": [ - { - "name": null, - "title": null, - "path": null, - "instruction": null, - "attribution": "copyright. Miller, Heinz, Rutrecht. 2021" - } - ] - }, - { - "title": "Mobilität in Deutschland: Tabellarische Grundauswertung", - "description": "Mobilität in Deutschland (MiD) ist eine bundesweite Befragung von Haushalten zu ihrem alltäglichen Verkehrsverhalten im Auftrag des Bundesministeriums für Digitales und Verkehr (BMDV).", - "path": "https://bmdv.bund.de/SharedDocs/DE/Anlage/G/mid-2017-tabellenband.pdf?__blob=publicationFile", - "licenses": [ - { - "name": null, - "title": null, - "path": null, - "instruction": null, - "attribution": "copyright. Reiner Lemoine Institut, RKI. 1991" - } - ] - } - ] - } - ``` - -If you want to use a data set without a licence or an open data licence, try the following steps: - -1. **Contact the authors of the data set** and ask for either the licence or send a request for user-and relicensing - rights. Templates in DE and EN can be found **[here](https://bwsyncandshare.kit.edu/f/2369369032>)**. Please **add - *datenzentrum@rl-institut.de* to the CC of the Email** and **store positive response [here](https://bwsyncandshare.kit.edu/f/2369341357)**.

-2. **You can use the unlicensed data if you only extract a considerable small subset of a larger data set.**
- - - In Germany, the [Act on Copyright and Related Rights / Gesetz über Urheberrecht und verwandte Schutzrechte - (Urheberrechtsgesetz)](https://www.gesetze-im-internet.de/englisch_urhg/englisch_urhg.html) contains the paragraph [60c Scientific research (Copyright Act, § 60c Scientific Research)](https://www.gesetze-im-internet.de/englisch_urhg/englisch_urhg.html#p0479) that provides provisions specifically for non-commercial scientific research. According to this law:

- * Up to **15 percent of a work** may be reproduced, distributed, and made publicly accessible **for** the purpose of - **non-commercial scientific research**. This can be done for a specific group of individuals conducting their own scientific research, as well as for individual third parties for the purpose of assessing the quality of scientific research. - * Up to 75 percent of a work may be reproduced for one's own scientific research. - - diff --git a/docs/visitor/data/metadata.md b/docs/visitor/data/metadata.md index f5301d6..0d912b4 100644 --- a/docs/visitor/data/metadata.md +++ b/docs/visitor/data/metadata.md @@ -2,25 +2,15 @@ In SEDOS the metadata standard [OEMetadata v.1.5.1](https://github.com/OpenEnergyPlatform/oemetadata#open-energy-family---open-energy-metadata-oemetadata) is used. -## Required metadata information - -In SEDOS a minimal mandatory set of metadata information is required to: +In SEDOS a minimal mandatory set of metadata information is provided to: 1. automatically process the input data in the data pipeline, 2. to provide useful context for data interpretation, and 3. to fulfil legal requirements. -## Mandatory set of metadata information - -!!! Note "OEMetadata templates exist" - - **Many metadata fields are already prefilled, if** you can build upon metadata templates ([scalar template](https://raw.githubusercontent.com/sedos-project/oedatamodel/main/oedatamodel-parameter/datamodel_scalars.json) and [timeseries template](https://raw.githubusercontent.com/sedos-project/oedatamodel/main/oedatamodel-parameter/datamodel_timeseries.json)). +The following oem-keys have been provided in the metadata of our reference dataset. -!!! Danger "Technical upload requirement" - - OEM-key 15.2 is technically required for upload with oedatamodel-API - -Providing the following oem-keys when submitting your metadata is mandatory. +## Mandatory set of metadata information ### General Keys @@ -45,7 +35,7 @@ Information about the individual sources the data stems from. | 12.2 | description | A free text description of the data set. | Scientific climate change report by the UN | | | 12.3 | path | A URL to the original source. | https://www.ipcc.ch/site/assets/uploads/2018/02/ipcc_wg3_ar5_full.pdf | | | 12.4 | licenses | An array of objects under which the source is provided. | | | -| 12.4.1 | name | The SPDX identifier.
| ODbL-1.0 | In case of [missing licence](licensing.md#missing#licence#-#using#data#without#an#open#licence) | +| 12.4.1 | name | The SPDX identifier.
| ODbL-1.0 | | | 12.4.2 | title | The official (human readable) title of the license. | Open Data Commons Open Database License 1.0 | | | 12.4.3 | path | A link to the license text. | https://opendatacommons.org/licenses/odbl/1-0/index.html | | | 12.4.4 | instruction | A short description of rights and restrictions. The use of tl;drLegal is recommended. | You are free to share and change, but you must attribute, and share derivations under the same license. See https://tldrlegal.com/license/odc-open-database-license-(odbl) for further information. | | diff --git a/docs/visitor/data/nomenclature.md b/docs/visitor/data/nomenclature.md new file mode 100644 index 0000000..9df13ed --- /dev/null +++ b/docs/visitor/data/nomenclature.md @@ -0,0 +1,163 @@ +# Nomenclature + +## Process Nomenclature + +As the process and therefore the specifications of the processes are very detailed, a consistent nomenclature has been +defined within the SEDOS project. e.g. the process "pow_combustion_cc_chp_methane_1" consists of elements of all the +defined columns in the following table. This table helps to understand the meaning of the process names. + + + +| sector | category | specifications | input-specifications | existing/new | detail (aggregated) | +|:---------|:-----------------|:------------------------------------------------------------------------------------------------------------------------------|:---------------------------------------------------------------------|:---------------|:----------------------| +| pow | combustion | [gt, st, cc, ic], chp, ccs | [coal, biomass, waste, methane, biomass, hydrogen] | [0, 1] | _ag | +| | geothermal | [orc, st], chp | | | | +| | hydro | [ror, pond] | | | | +| | nuclear | [fis, fus] | | | | +| | photovoltaic | [field, hh, cts, ind], [gm, fl], [msi, psi, asi ,cpv], [roof, faca, balc] | | | | +| | wind_turbine | [on, off, near], [fl, fb], [ha, va] | | | | +| | storage | [batt, hydr], [util, hh, cts, ind] | | | | +| | eem | | | | | +| hea | combustion | [gt, st, cc, ic, orc] | | [0, 1] | | +| | heat_exchanger | | | [0, 1] | | +| | heater | [soco, hp, stov, boil], [et, cd], [mono, dual], [air, gro] | [hydrogen, gas, oil, biomass, wood] | [0, 1] | | +| | refrigerator | [comp, abs, ads] | | [0, 1] | | +| | storage | | | [0, 1] | | +| | cooling | [proc, space, combined] | | [0, 1] | | +| | water_heating | | | [0, 1] | | +| | district_heating | | [heat_high,heat_low] | [0, 1] | | +| x2x | p2gas | aec, pemec, soec, sabm, biom | | [1] | | +| | g2p | pemfc, sofc | ls | [1] | | +| | x2gas | sr,mpyr,coel,rwgs | [syngas,syngas_psa] | [0,1] | | +| | x2liquid | source,oref,ft | [biodiesel,bioethanol,biokerosene] | [0,1] | | +| | storage | hydrogen,methane | [lohc,new,retrofit] | [1] | | +| | other | dac,biogas_treatment, cng_compression, lng_liquefication | [ht,lt] | [1] | | +| | import | ammonia, biogas, coal, crudeoil, h2_renewable, lng, methanol, natgas, sng, syndiesel, syngasoline, synkerosene | | | | +| | transport | hydrogen, methane, diesel, gasoline, kerosene, naphtha, methanol, ethanol, hfo, lpg, lng, ammonia | [pipeline_retrofit,pipeline_new],[pipeline] | | | +| ind | automobile | [pc, hcv, lcv] [icev, phev, bev, fcev], prtp, bdys, pnts, hvlt, mcmp, fasmbl | | | | +| | cement | [rk, rawmats, novel, finish, novelfinish], ccs | | [0, 1] | | +| | glass | [flat, cont, spec, fibe], [batchplant, oxyf, oxyh, fulle, rege, recu, forming] | | [0, 1] | | +| | paper | [hchem, lchem, lmech] | [pulp, finish] | [0, 1] | | +| | steel | [blafu, elefu, dirred, hyddri, oxyfu, pellet, sinter, sponge, casting] | ccs | [0, 1] | | +| | aluminium | [pri, sec, aluminabayer] | | [0, 1] | | +| | copper | [pri, sec] | | [0, 1] | | +| | chemical | [NH3, methanol, Cl2, olefins, btx], hb, [msyn, mhydr], [memb, diaph], [scrac, ecrac, mto, mta], [smr, aec, pemec, biog, mpyr] | | | | +| | source | | | | | +| tra | road | [lcar, mcar, hcar, bus, motorc, ltruck, htruck, vehispec], [ice, fcev, bev, oev, hyb], [pass, frei], [long, short] | [diesel, gasoline, methanol, ethanol, lng, cng, lpg, hydrogen, flex] | | | +| | rail | [ice, fcev, bev, oev, hyb], [pass, frei], [long, short] | [coal, diesel, ethanol] | | | +| | air | [ice, fcev, bev, hyb], [pass, frei], [natio, europ, inter], | [kerosene, hydrogen] | | | +| | water | [ice, fcev], frei, [up, down] | [lng, methanol, ethanol, ammonia, diesel, hydrogen] | | | + + + +## Parameter Nomenclature + +Moreover, the nomenclature of the parameters that are being used in the SEDOS data is introduced together with the +description of the applied parameters and their units. + + + +| category | parameter name | description | +|:-----------------|:-----------------------------------------|:------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| oedatamodel_cols | id | A primary key is a field or set of fields that uniquely identifies each row in the table. It's recorded as a list of strings, since it is possible to define the primary key as made up of several columns. | +| | region | It describes the geographical scope of the dataset. | +| | year | It describes the time frame of the dataset. | +| | type | Is used distinguish different process types in a dataset. | +| | bandwidth_type | It describes the bandwidths type of the values in the parameter columns. | +| | version | It describes the version of the values in the parameter columns. | +| | method | It describes the procedure for obtaining the value, in case it does not originate from a single source. | +| | source | Human readable title of the source, e.g. document title or organisation name. The source must relate to a source provided in the oemetadata (datapackage) file. | +| | comment | Free text comment on what's been done. | +| | timeindex_start | Both date and time, with time zone. | +| | timeindex_stop | Both date and time, with time zone. | +| | timeindex_resolution | The time span between individual points of information in a time series. | +| general | co2_limit | CO2 net emission budget for a period. | +| | lifetime | Technical lifetime of a process. | +| | commodity_price | Cost/Revenue for purchasing/selling one unit (MWh) of a stock or buy commodity. | +| | potential_annual_max | Maximum annual energy use of a commodity. | +| | demand_timeseries | normalized demand timeseries which gets multiplied with demand_annual | +| | demand_annual | Projected annual demand for a commodity. | +| | shared_potential_id | Specifies a name for a potential group in which all components share the same potential (e.g. wind turibine) | +| capacities | capacity_p_inst_0 | Existing throughput power output capacity per process in a certain year. | +| | capacity_p_min | Minimum installable required throughput power output capacity per process. | +| | capacity_p_max | Maximum installable required throughput power output capacity per process. | +| | capacity_e_inst_0 | Existing storage energy capacity. | +| | capacity_e_min | Minimum required storage energy capacity. | +| | capacity_e_max | Maximum allowed storage energy capacity. | +| | capacity_w_inst_0 | Existing weight capacity of a process. | +| | capacity_w_min | Maximum weight capacity of a process. | +| | capacity_w_max | Minimum weight capacity of a process. | +| | capacity_tra_inst_0 | Number of vehicles. | +| | capacity_p_abs_new_max | Absolute upper bound on level of investment in new power output capacity for a period. | +| | capacity_e_abs_new_max | Absolute upper bound on level of investment in new storage energy capacity for a period. | +| | capacity_w_abs_new_max | Absolute upper bound on level of investment in new weight capacity for a period. | +| | availability_constant | Constant output ratio in relation to installed capacity. (= h/a) | +| | availability_timeseries_fixed | Time series of fixed capacity factor in relation to installed capacity. | +| | availability_timeseries_max | Time series of maximum capacity factor in relation to installed capacity. | +| costs | wacc | Percentage of costs for capital after taxes. Used to calculate annuity factor for investment costs. | +| | cost_inv_p | Investment costs for new throughput power output capacity. | +| | cost_inv_e | Investment costs for new storage energy capacity. | +| | cost_inv_w | Investment costs for new capacity per unit weight. | +| | cost_inv_tra | Investment costs for new vehicle unit. | +| | cost_fix_p | Operation independent costs for existing and new throughput power output capacity. | +| | cost_fix_e | Operation independent costs for existing and new storage energy capacity. | +| | cost_fix_w | Operation independent costs for capacity per unit weight. | +| | cost_fix_tra | Operation independent costs for existing and new vehicle units. | +| | cost_var_e | Variable costs per throughput energy unit output. (excluding fuel costs). | +| | cost_var_tra | | +| | cost_var_w | Variable costs per throughput weight unit output. (excluding fuel costs). | +| process | conversion_factor_ | Commodity-specific conversion factor (multiplication of input and output factors yields the efficiency of the process). | +| | flow_share_min_ | Minimum share of flow commodity c based upon the sum of individual flows defined by the commodity group cg belonging to process p. | +| | flow_share_max_ | Maximum share of flow commodity c based upon the sum of individual flows defined by the commodity group cg belonging to process p. | +| | flow_share_fix_ | Fixed share of flow commodity c based upon the sum of individual flows defined by the commodity group cg belonging to process p. | +| | conversion_factor_timeseries_ | Time-variable commodity-specific conversion factor. | +| | ef__ | Commodity-specific emission factor. | +| | cb_coefficient | The Cb-coefficient (backpressure coefficient) is defined as the maximum power generation capacity in backpressure mode divided by the maximum heat production capacity (including flue gas condensation if applicable). | +| | cv_coefficient | The Cv-value for an extraction steam turbine is defined as the loss of electricity production, when the heat production is increased one unit at constant fuel input. | +| | efficiency_sto_in | Energy efficiency of power input. | +| | efficiency_sto_out | Energy efficiency of power output. | +| | sto_init | The initial state of charge of a storage. | +| | sto_self_discharge | Storage losses over time. | +| | sto_ep_ratio_binding | Fixed ratio of the storage energy capacity to its power output capacity. | +| | sto_ep_ratio_optional | Optional fixed ratio of the storage energy capacity to its power output capacity. | +| | sto_cycles_max | Defines the maximum number of full storage cycle equivalents over the lifetime. | +| tra-extra | capacity_tra_connection_max | Maximum connection capacity of an average electric vehicle, taken the connection availability into acocunt. | +| | capacity_tra_connection_timeseries | Connection capacity of an average electric vehicle. | +| | mileage | Yearly mileage of a vehicle. | +| | market_share_range | Range of market share. | +| | occupancy_rate | Occupancy rate of a vehicle. | +| | tonnage | Tonnes transported per vehicle. | +| | share_tra_charge_mode | Proportion of fleet that load with a soecific charge mode.. | +| | sto_min_timeseries | Time series of min battery state of charge. | +| | sto_max_timeseries | Time series of max battery state of charge. | +| | optional_limitations | User constraint to describe market limitations | diff --git a/docs/visitor/data/overview.md b/docs/visitor/data/overview.md index 888ea3f..8d44e86 100644 --- a/docs/visitor/data/overview.md +++ b/docs/visitor/data/overview.md @@ -1,9 +1,9 @@ -# Overview of the SEDOS data architecture +# Overview of the SEDOS data -The SEDOS Reference Dataset (SRD) entails technology data across five sectors (power, heat, x2x, industry, mobility) -and various aggregation levels. +## Sectors -**SEDOS sectors** +The SEDOS Reference Dataset (SRD) entails technology data across five sectors (power, heat, x2x, industry, mobility) +and various aggregation levels. The sectors and the used abbreviations within the data are listed below: | Sector abbreviation | Sector | SEDOS workpackage | |---------------------|------------|-------------------| @@ -13,6 +13,11 @@ and various aggregation levels. | ind | Industry | AP7 | | tra | Transport | AP8 | +[//]: # (## TODO: Umfang der Daten beschreiben) + + +## Data Architecture + Multiple input data packages are created and uploaded onthe [OEP](https://openenergy-platform. org/dataedit/view/model_draft?query=sedos&tags=246) via the [OEDatamodel-API](https://modex.rl-institut.de/create_table/). @@ -23,6 +28,4 @@ conventions. A generalized representation of a datapackage is shown in the figur * **metadata** - describing the structure of the datamodel, and providing context to the data. -![datapackage](../../graphics/datapackage.jpg) - - +![datapackage](../../graphics/datapackage.jpg) \ No newline at end of file diff --git a/docs/visitor/data/parameters.md b/docs/visitor/data/parameters.md deleted file mode 100644 index 4eef7df..0000000 --- a/docs/visitor/data/parameters.md +++ /dev/null @@ -1,3 +0,0 @@ -# Parameters - - diff --git a/docs/visitor/nomenclature.md b/docs/visitor/nomenclature.md deleted file mode 100644 index 24c5ee9..0000000 --- a/docs/visitor/nomenclature.md +++ /dev/null @@ -1 +0,0 @@ -# Nomenclature \ No newline at end of file From fbe1ce02006411633c5a1264309bbcb915a127ca Mon Sep 17 00:00:00 2001 From: BeneharoRB Date: Wed, 9 Oct 2024 15:48:22 +0200 Subject: [PATCH 07/15] Add first draft for new model description for external SEDOS users. --- docs/visitor/model/gui.md | 6 ++++++ docs/visitor/model/results.md | 32 ++++++++++++++++++++++++++++---- docs/visitor/model/scenarios.md | 18 ++++++++++++------ 3 files changed, 46 insertions(+), 10 deletions(-) create mode 100644 docs/visitor/model/gui.md diff --git a/docs/visitor/model/gui.md b/docs/visitor/model/gui.md new file mode 100644 index 0000000..15b7ce7 --- /dev/null +++ b/docs/visitor/model/gui.md @@ -0,0 +1,6 @@ +# GUI + +The results and reference energy system can be explored using the [GUI](https://sedos.apps.rl-institut.de/). + + +TODO: descriprion of the GUI \ No newline at end of file diff --git a/docs/visitor/model/results.md b/docs/visitor/model/results.md index eb1cbb8..fcf93c2 100644 --- a/docs/visitor/model/results.md +++ b/docs/visitor/model/results.md @@ -1,9 +1,33 @@ -The results and reference energy system can be explored using the [dashboard](https://sedos.apps.rl-institut.de/). +# Results -[//]: # (()) +The following results have been created with our SEDOS [GUI](https://sedos.apps.rl-institut.de/) and can be reproduced with +the uploaded SEDOS result data. - - +With a sankey, we can analyze potential flows between the aggregated energy sectors. + + +Or we cann look with more detail into selected sectors, e.g. the industry sector and its related input energy carrier flows: + +

+ +With bar charts, we can visualize the expansion within the sectors over the defined milestone years. Below you can see the industry sector: + + +TODO: add reasonable industry results + + +[//]: # (We can also look into the model structure of our system:) [//]: # () \ No newline at end of file diff --git a/docs/visitor/model/scenarios.md b/docs/visitor/model/scenarios.md index 5403d16..4ff1ebf 100644 --- a/docs/visitor/model/scenarios.md +++ b/docs/visitor/model/scenarios.md @@ -1,13 +1,19 @@ # Scenarios -!!! info "SEDOS - Scenario frame details" +[//]: # (!!! info "SEDOS - Scenario frame details") - Find scenario details, such as temporal and spatial scope, sectors and technologies, in the [SEDOS Scenario Bundle](https://openenergy-platform.org/scenario-bundles/id/9387d4a9-85f1-52e9-ce79-0168f25dd5e0). +[//]: # ( Find scenario details, such as temporal and spatial scope, sectors and technologies, in the [SEDOS Scenario Bundle](https://openenergy-platform.org/scenario-bundles/id/9387d4a9-85f1-52e9-ce79-0168f25dd5e0).) -More information will follow. +## Base scenario ToKo - technology-open & cost-optimal +Which technologies can reduce GHG emissions from energy use to a targeted level at minimum cost +(e.g. climate neutrality by 2045)? -## Basisszenario ToKo – Technologieoffen & Kostenoptimal +## Scenario variation RIGa: Reduced import dependency for fossil gas +How can the dependency on fossil gas imports, including LNG imports, be reduced to a specified minimum level at minimum +cost while complying with the GHG reduction targets? -## Scenario variation 1. Reduzierte Importabhängigkeit bei fossilem Gas (RIGa) +## Scenario variation SienA/B: sector integration +In which areas can sector integration make a greater contribution to GHG reduction? -## Scenario variation 2. Sektorintegration (SIN) \ No newline at end of file +- SienA: Specification of a minimum use of hydrogen or H2 derivatives. +- SienB: Specification of a minimum domestic RE electricity generation. \ No newline at end of file From 1a1328207c1e3f991b3bff3ab8d3439fed8c4713 Mon Sep 17 00:00:00 2001 From: BeneharoRB Date: Wed, 9 Oct 2024 15:48:47 +0200 Subject: [PATCH 08/15] Add first draft for new structure description for external SEDOS users. --- docs/visitor/structure/exogenous_values.md | 47 ++++++++-------- docs/visitor/structure/model_frame.md | 64 +++++----------------- docs/visitor/structure/overview.md | 10 ++++ 3 files changed, 48 insertions(+), 73 deletions(-) diff --git a/docs/visitor/structure/exogenous_values.md b/docs/visitor/structure/exogenous_values.md index c85f9d0..d91f5a2 100644 --- a/docs/visitor/structure/exogenous_values.md +++ b/docs/visitor/structure/exogenous_values.md @@ -1,54 +1,55 @@ # Collection of Exogenous Variables -## 4.1 Framework data +In our approach exogenous assumptions are reduced by defining a technology-open model structure that does not only consider +processes that are generally expected to prevail on the market under current assumptions on future developments but +defines multiple parallel technologies that can also highly depend on the interactions between sectors. +However, the optimization problem still needs various exogenous parameters that should be consistent across different sectors. +Therefore, these exogenous values that can be related to each other are collected in the list below. + +## General developments - Macroeconomic development - Demographic development - Development of living and usable space - Development of passenger & freight transport performance - Development of primary energy prices -- Discount factor -## 4.2 Exogenous demand +## Exogenous demand - Households & tertiary sector: space heating, hot water, electricity - Industry: production volumes, gross value added - Transport: passenger-kilometers, tonne-kilometers -## 4.3 Political framework +## Political framework - Renewable energy target - Emission targets -- Supply reliability Imports -- Business management aspects (see section 1.1) - -## 4.4 Technological key figures of the energy system components +- Supply reliability of imports -- Installed capacities Start year -- Extrapolation of installed capacities by service life (repowering path) -- Expansion limits -- Useful life -- Possible expansion rates -- E2P ratio -- Efficiency -- Emission output -- Area potentials: Assumptions for allocation to technologies with conflicting objectives +## Technological values -## 4.5 Economic key figures of the energy system components +- Installed capacities on first milestone year +- Decomissioning of installed capacities by lifetime +- Expansion limits per milestone year +- Efficiencies +- Energy-to-power ratios for storage systems +- Emission values +- Area potentials: Assumptions for allocation to technologies with conflicting objectives (e.g. biomass resources) +## Economic values - Investment costs - Fixed costs - Variable costs -- WACC (global) +- Weighted average costs of capital (harmonized across all sectors) -## 4.6 Key Resources +## Key Resources - Annual potential - Hourly potential - Subsidy costs -## 4.7 Import/Export +## Import / Export -- Electricity and commodity prices Neighbouring countries +- Electricity and commodity prices of neighbouring countries - Restrictions on all imports from neighboring countries -- Further cost-potential ratios for imports of PtG and PtL products +- Ccost-potential ratios for imports of PtG and PtL products diff --git a/docs/visitor/structure/model_frame.md b/docs/visitor/structure/model_frame.md index 08a9520..8e8d162 100644 --- a/docs/visitor/structure/model_frame.md +++ b/docs/visitor/structure/model_frame.md @@ -1,66 +1,30 @@ # Model Base -The specifications, a result of thorough discussions and definitions in the 3rd working package of the SEDOS project, provide a clear and accessible series of assumptions and requirements. This clarity sets the basic framework for the modeling in the project. The transparency also ensures that the model can be solved with different model generators. +As a result of thorough discussions in the 3rd working package of the SEDOS project, the following list +provides assumptions and requirements to understand the model base. +This sets the basic framework for modeling with the provided model structure also with different model generators. +The key points of the model base are: -## Alignment - -The SEDOS focus is on understanding... - -- The overall system, -- The technical foundation in the sectors, -- The possible relations and interactions due to sector coupling. - -The model structure is used in three frameworks oemof, FINE and TIMES. - -## Key Facts - -- Deterministic model formulation with Linear Programming Optimization +- Deterministic model formulation with Linear Programming Optimization. - Intertemporal Time-Span modeling with perfect foresight. -- Central planner solving perspective for macro-economic optimization. Business/regulatory aspects are neglected as far as possible, -- Brownfield approach: Differentiation between existing technology stock (0X) vs new technology expansion (1X) - if necessary, taxes are deducted from the prices and a global WACC of 2% has been defined for all technologies. -- Long-Term time horizon until 2070 -- To enable the internal and external calculability of SEDOS-based models, additional aggregation levels are introduced - due to the high level of detail in the sectors. This allows the user to focus their model on individual sectors while - other sectors are modeled simplified. -- Hourly time resolution with time series aggregation using the tsam tool [TODO: Link] +- Central planner solving perspective for macro-economic optimization. Business/regulatory aspects are neglected as far as possible. + A consistent Weighted Average Cost of Capital (WACC) of 2% has been defined for all technologies and if necessary, taxes are deducted from the prices. +- Brownfield approach: Differentiation between existing technology stock (0X) vs new technology expansion (1X). +- Long-Term time horizon until 2070. +- Hourly time resolution with time series aggregation using the [tsam](https://tsam.readthedocs.io/en/latest/index.html) tool +- The SEDOS data are provided for a 1-region Germany model. Cost parameters for the electricity grid are to be estimated +for the overall system, considering demand and renewable energy supply. - A distinction is made between three energy categories: primary energy, secondary energy, and model exogenous energy demand. - The exogenous demand in the model is defined in such a way that the model has maximum degrees of freedom to choose between the technologies to meet the demand. The final energy in the system is thus determined as far as possible endogenously in the model. - For the processes, a distinction is made between complementary inputs/outputs with a fixed ratio to each other and substitutive inputs/outputs with a flexible ratio to each other. This should also allow processes to be modeled that can choose their energy sources endogenously. +- To ease the feasibility of SEDOS-based models, additional aggregation levels are introduced due to the high level of + detail in the sectors. This allows the user to focus their model on individual sectors while other sectors are simplified. - Capacity expansion limits have been defined per milestone years. -- The SEDOS data are provided for a 1-region Germany model. Cost parameters for the electricity grid are to be estimated -for the overall system, considering demand and renewable energy supply. - The European electricity market is considered but modeled in a simplified manner. -## 2.6 Emissions - -General information: -- Emission types: CO2, methane & N2O -- The emission values should be standardised from the NRI Inventory table "global_emission_factors.xlsx". -- CO2 equivalents: The following factors are used for a consistent conversion into CO2 equivalents: - - CH4: 25 - - N2O: 298 -- Realisation of negative emissions in the model structure via additional commodities per sector (see "Commodity_Set" spreadsheet) -- Add emission concept graphic [CHECK] - -Emission balancing: - -- balancing during combustion & offsetting if necessary - - Biogen: CO2 emissions from combustion & negative emissions from production/source processes of biogenic energy sources - - Synthetic: CO2 emissions during combustion & model-endogenous negative emissions for production with carbon capture - - Fossil: CO2 emissions during combustion - -Differentiation of emissions: - -- Global (CO2): Foreign key mapping to the global table with emission factors per energy source. Specification with a foreign key on the global table -- Process-specific (methane & N2O): Sector/process-specific emission factors due to higher dependence on process conditions -- (e.g., firing temperature N2O, material moisture CH4 ...) Direct specification with a numerical value - - - [//]: # () [//]: # (### 2.3.3 Temporal aggregation method) diff --git a/docs/visitor/structure/overview.md b/docs/visitor/structure/overview.md index 07dd0c5..d7d24ec 100644 --- a/docs/visitor/structure/overview.md +++ b/docs/visitor/structure/overview.md @@ -1 +1,11 @@ # Overview + +## Alignment +The SEDOS focus is on understanding... + +- The overall system, +- The technical foundation in the sectors, +- The possible relations and interactions due to sector coupling. + +The model structure is used to build up energy models in three different frameworks: oemof, FINE and TIMES. +Key components of the model structure are defined in this Section. For further information please consult the open-access [publication](TODO:Link). \ No newline at end of file From 5957bef9c878101e7bc1f748ba5f20dd4b4d54d4 Mon Sep 17 00:00:00 2001 From: BeneharoRB Date: Wed, 9 Oct 2024 15:52:09 +0200 Subject: [PATCH 09/15] Updated the navigation pane according to the new contents. --- mkdocs.yml | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/mkdocs.yml b/mkdocs.yml index 3d37aa9..5353c81 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -2,35 +2,35 @@ site_name: SEDOS Project nav: - Welcome: index.md - - 'Reference Energy System': + - 'Model Structure': - 'Overview': 'visitor/structure/overview.md' - 'Model Base': 'visitor/structure/model_frame.md' - 'Exogenous Values': 'visitor/structure/exogenous_values.md' - - 'Model Structure': '' - - 'Aggregations': '' + - 'Emissions': 'visitor/structure/emissions.md' +# - 'Model Structure': '' +# - 'Aggregations': '' - 'Reference Dataset': - 'Overview': 'visitor/data/overview.md' - - 'Data': 'visitor/data/input_data.md' + - 'Nomenclature': 'visitor/data/nomenclature.md' + - 'Data Conventions': 'visitor/data/data_conventions.md' - 'Metadata': 'visitor/data/metadata.md' - 'Ontology': 'visitor/data/ontology.md' - - 'Licensing': 'visitor/data/licensing.md' - - 'Data Preface': 'developer/data_preface.md' - - 'Nomenclature': 'visitor/nomenclature.md' - 'Model Application': - 'Scenarios': 'visitor/model/scenarios.md' + - 'GUI': 'visitor/model/gui.md' - 'Results': 'visitor/model/results.md' - - 'GUI': '' - - SEDOS Developer: + - 'How to contribute data?': 'developer/how_to_contribute_data.md' + - 'Data preface': 'developer/data_preface.md' + - 'FAQ': 'developer/faq.md' + - 'Glossary': 'glossary.md' + - Developer Instructions: - '(Meta)data requirements': - 'Overview': 'developer/data_requirements/overview.md' - 'Data': 'developer/data_requirements/input_data.md' - 'Metadata': 'developer/data_requirements/metadata.md' - 'Ontology': 'developer/data_requirements/ontology.md' - 'Licensing': 'developer/data_requirements/licensing.md' - - 'How to contribute data?': 'developer/how_to_contribute_data.md' - - 'Data preface': 'developer/data_preface.md' - - 'FAQ': 'developer/faq.md' - - 'Glossary': 'glossary.md' + - 'Further reading': 'publications.md' markdown_extensions: - toc: From 45d98f4a61d2764d1d39293818cf5d49feb0bd9b Mon Sep 17 00:00:00 2001 From: BeneharoRB Date: Wed, 9 Oct 2024 15:52:31 +0200 Subject: [PATCH 10/15] Added citation note on starting page --- docs/index.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docs/index.md b/docs/index.md index 45a19a9..12433ac 100644 --- a/docs/index.md +++ b/docs/index.md @@ -18,6 +18,10 @@ The documentation is structured in the following four main parts Find the SEDOS Reference Dataset on the **[Databus](https://databus.openenergyplatform.org/sedos-project/collections/sedos-project)** or the **[OpenEnergyPlatform](https://openenergy-platform.org/dataedit/view/model_draft?query=sedos&tags=246)** +!!! info "How to cite our work?" + + In case you use our model structure and the related data in a scientific publication we kindly request you to cite our publications listed in the further reading section. +[//]: # ( TODO: Ergänzen mit Info zu gesamten Datensatz wie zitieren? Metadaten zu den Metadaten (siehe Mail Christoph an Jonas RLI)) ??? info "Latest documentation version" From e94e9a6ae067e5b88045f6f62ab86f1afd0aeead Mon Sep 17 00:00:00 2001 From: johanna-mohr Date: Wed, 16 Oct 2024 16:28:12 +0200 Subject: [PATCH 11/15] Graph copper and aluminium --- docs/visitor/model/results.md | 30 ++++++++++++------------------ 1 file changed, 12 insertions(+), 18 deletions(-) diff --git a/docs/visitor/model/results.md b/docs/visitor/model/results.md index fcf93c2..81335c0 100644 --- a/docs/visitor/model/results.md +++ b/docs/visitor/model/results.md @@ -1,33 +1,27 @@ # Results -The following results have been created with our SEDOS [GUI](https://sedos.apps.rl-institut.de/) and can be reproduced with -the uploaded SEDOS result data. - - - -With a sankey, we can analyze potential flows between the aggregated energy sectors. - - -Or we cann look with more detail into selected sectors, e.g. the industry sector and its related input energy carrier flows: +Beispiel Test 1:
-

Graph for 2021

- +

Graph for copper

+
-

Graph for 2050

- +

Graph for aluminium

+
-With bar charts, we can visualize the expansion within the sectors over the defined milestone years. Below you can see the industry sector: - +In both diagrams it can be seen that over the years the installed capacity consists more and more of new technologies. + +Especially in the diagram for copper it can be observed that in 2050 only the newest and most innovative technology accounts for the total installed capacity. +In the second diagram, describing the installed capacity for the aluminium industry, it can be seen, that from 2045 on only new technologies form the installed capacity. +A new technology was introduced in the sec sector as early as 2025, which will then become established over the next few decades and replace the older technology. +A similar thing happens in the pri sector, where in 2035 a new and highly innovative technology is introduced and takes over the total capacity for this sector within the next 10 years. -TODO: add reasonable industry results -[//]: # (We can also look into the model structure of our system:) -[//]: # () \ No newline at end of file +Hydrogen: From 7f22a451cd63ec9d4385510f77b31c1a152939fb Mon Sep 17 00:00:00 2001 From: johanna-mohr Date: Thu, 17 Oct 2024 12:07:37 +0200 Subject: [PATCH 12/15] new copper and aluminium diagram --- docs/visitor/model/results.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/visitor/model/results.md b/docs/visitor/model/results.md index 81335c0..31b7c73 100644 --- a/docs/visitor/model/results.md +++ b/docs/visitor/model/results.md @@ -6,11 +6,11 @@ Beispiel Test 1:

Graph for copper

- +

Graph for aluminium

- +
From 4329cacc5645c5a0f470790b09c01f1e2ce65b8c Mon Sep 17 00:00:00 2001 From: johanna-mohr Date: Thu, 17 Oct 2024 17:50:32 +0200 Subject: [PATCH 13/15] Energy flow and use of hydrogen sankey diagrams --- docs/visitor/model/results.md | 31 +++++++++++++++++++++++++++++-- 1 file changed, 29 insertions(+), 2 deletions(-) diff --git a/docs/visitor/model/results.md b/docs/visitor/model/results.md index 31b7c73..91b6032 100644 --- a/docs/visitor/model/results.md +++ b/docs/visitor/model/results.md @@ -1,6 +1,10 @@ # Results -Beispiel Test 1: +## Changes in technology + +One interesting question is how the technologies used in the industry will change over the decades. +The two sub-sectors of copper and aluminum were selected for a closer look at this development. +The following diagrams show the installed capacity per year in each case, with the colored background describing the technology used.
@@ -23,5 +27,28 @@ A new technology was introduced in the sec sector as early as 2025, which will t A similar thing happens in the pri sector, where in 2035 a new and highly innovative technology is introduced and takes over the total capacity for this sector within the next 10 years. +## Energy flow and use of hydrogen + +Another topic that will be considered below is energy flow of the subsectors in the industry. +In connection with that analysis, the development of the use of hydrogen in the industrial sector can also be examined. +Therefor three diagrams were created showing the energy flow in the individual subsectors of the industry. +Here can be seen that while currently no hydrogen is being used in the indsutry sectors, +it will already play a major role in 2045 and thus the use of coal and methane can be drastically reduced + + +Year 2024: + + + +Year 2045: + + + +Year 2070: + + + + + + -Hydrogen: From 6b4af81a9ecdc265828bb29ff8ff417406699255 Mon Sep 17 00:00:00 2001 From: johanna-mohr Date: Fri, 18 Oct 2024 12:39:56 +0200 Subject: [PATCH 14/15] Update Sankeys and add complex ones for selection --- docs/visitor/model/results.md | 40 +++++++++++++++++++++++++++++++++-- 1 file changed, 38 insertions(+), 2 deletions(-) diff --git a/docs/visitor/model/results.md b/docs/visitor/model/results.md index 91b6032..fccc40a 100644 --- a/docs/visitor/model/results.md +++ b/docs/visitor/model/results.md @@ -31,9 +31,45 @@ A similar thing happens in the pri sector, where in 2035 a new and highly innova Another topic that will be considered below is energy flow of the subsectors in the industry. In connection with that analysis, the development of the use of hydrogen in the industrial sector can also be examined. -Therefor three diagrams were created showing the energy flow in the individual subsectors of the industry. +Therefor two diagrams were created showing the energy flow in the individual subsectors of the industry. Here can be seen that while currently no hydrogen is being used in the indsutry sectors, -it will already play a major role in 2045 and thus the use of coal and methane can be drastically reduced +it will play a major role in 2050 and thus the use of methane can be reduced and coal is no longer needed at all. + + +
+
+
+

2021

+ +
+
+

2050

+ +
+
+
+ +More complex diagrams: + + +sec-pri-inputs to specification (no outputs): + + + +sec-pri-inputs to process (no outputs): + + + +sec-pri-inputs to specification to sec waste heat output: + + + +sec-pri-inputs to process to sec waste heat output: + + + + + Year 2024: From bb000b351020053ddd84ebbaf473eff14d64fb58 Mon Sep 17 00:00:00 2001 From: BeneharoRB Date: Fri, 18 Oct 2024 16:46:27 +0200 Subject: [PATCH 15/15] Refine draft of contents for project meeting --- docs/index.md | 11 ++-- docs/visitor/model/results.md | 91 ++++++++++++++++----------- docs/visitor/model/scenarios.md | 11 ++-- docs/visitor/structure/emissions.md | 26 ++++---- docs/visitor/structure/model_frame.md | 6 ++ docs/visitor/structure/overview.md | 6 +- mkdocs.yml | 16 ++--- 7 files changed, 98 insertions(+), 69 deletions(-) diff --git a/docs/index.md b/docs/index.md index 12433ac..b08ac5c 100644 --- a/docs/index.md +++ b/docs/index.md @@ -8,19 +8,20 @@ open source structure. The documentation is structured in the following four main parts -1. [Reference Energy System](visitor/structure/model_frame.md) +1. [Model Structure](visitor/structure/model_frame.md) 2. [Reference Dataset](./visitor/data_requirements/input_data.md) 3. [Model Application](./visitor/data_requirements/input_data.md) -4. [SEDOS developer](./developer/how_to_contribute_data.md) +4. [Developer Instructions](./developer/how_to_contribute_data.md) -!!! question "Just here for the data?" +??? question "Just here for the data?" Find the SEDOS Reference Dataset on the **[Databus](https://databus.openenergyplatform.org/sedos-project/collections/sedos-project)** or the **[OpenEnergyPlatform](https://openenergy-platform.org/dataedit/view/model_draft?query=sedos&tags=246)** -!!! info "How to cite our work?" +??? info "How to cite our work?" - In case you use our model structure and the related data in a scientific publication we kindly request you to cite our publications listed in the further reading section. + In case you use our model structure and the related data in a scientific publication we kindly ask you to cite our + publications listed in the [Further Reading](publications.md) section. [//]: # ( TODO: Ergänzen mit Info zu gesamten Datensatz wie zitieren? Metadaten zu den Metadaten (siehe Mail Christoph an Jonas RLI)) ??? info "Latest documentation version" diff --git a/docs/visitor/model/results.md b/docs/visitor/model/results.md index fccc40a..4ddb5b8 100644 --- a/docs/visitor/model/results.md +++ b/docs/visitor/model/results.md @@ -9,80 +9,99 @@ The following diagrams show the installed capacity per year in each case, with t
-

Graph for copper

- +

Copper Industry Transition

+
-

Graph for aluminium

- +

Aluminium Industry Transition

+
-In both diagrams it can be seen that over the years the installed capacity consists more and more of new technologies. -Especially in the diagram for copper it can be observed that in 2050 only the newest and most innovative technology accounts for the total installed capacity. -In the second diagram, describing the installed capacity for the aluminium industry, it can be seen, that from 2045 on only new technologies form the installed capacity. -A new technology was introduced in the sec sector as early as 2025, which will then become established over the next few decades and replace the older technology. -A similar thing happens in the pri sector, where in 2035 a new and highly innovative technology is introduced and takes over the total capacity for this sector within the next 10 years. +The diagrams demonstrate the increasing prevalence of advanced technologies in the installed capacity of both the copper +and aluminum industries over time. +In the copper industry, the first diagram illustrates a clear transition: by 2050, the entire installed capacity is +composed of the most recent and innovative technologies, signifying a complete shift away from older methods. +The gradual introduction of these advanced systems, especially visible after 2035, shows a clear industry-wide +adaptation to newer production technologies. -## Energy flow and use of hydrogen +The second diagram, which focuses on the aluminum industry, similarly shows that from 2045 onwards, only new +technologies constitute the total installed capacity. Interestingly, the adoption of newer technologies in the secondary +aluminum production sector begins as early as 2025. This early transition in secondary production paves the way for +these technologies to dominate by mid-century, effectively replacing outdated systems. In the primary aluminum +production sector, a breakthrough occurs in 2035 with the introduction of a highly innovative technology, which rapidly +supplants the older methods within a decade. -Another topic that will be considered below is energy flow of the subsectors in the industry. -In connection with that analysis, the development of the use of hydrogen in the industrial sector can also be examined. -Therefor two diagrams were created showing the energy flow in the individual subsectors of the industry. -Here can be seen that while currently no hydrogen is being used in the indsutry sectors, -it will play a major role in 2050 and thus the use of methane can be reduced and coal is no longer needed at all. +## Energy supply of the energy-intensive industry sectors + + +The diagrams illustrate the models transformation of energy supply within various industrial subsectors between +2021 and 2050, with a particular focus on the integration of hydrogen. + +In 2021, the industrial sector heavily relied on traditional energy sources such as coal and methane, +as depicted in the left diagram. Coal plays a significant role in powering steel production, while methane and other +fossil fuels are prominent across various subsectors. + +In comparison, the 2050 diagram presents a drastically different energy landscape. Hydrogen emerges as a pivotal energy +source, especially in the steel sector, where it completely replaces coal. The reduction of methane usage is also +evident as the transition toward cleaner energy sources reshapes the entire industry. This shift underscores the +declining relevance of coal in industrial processes and highlights hydrogen’s growing importance in decarbonizing +energy-intensive industries.
-

2021

+

Industry Energy Supply 2021

-

2050

+

Industry Energy Supply 2050

-More complex diagrams: - - -sec-pri-inputs to specification (no outputs): - - - -sec-pri-inputs to process (no outputs): +More complex sankey variations: - +- Variation 1: primary/secondary inputs to specifications (no outputs): -sec-pri-inputs to specification to sec waste heat output: + - +- Variation 2: primary/secondary inputs to specifications to waste-heat output: -sec-pri-inputs to process to sec waste heat output: + - +- Variation 3: primary/secondary inputs to processes (no outputs): + +[//]: # () +[//]: # (sec-pri-inputs to process to sec waste heat output:) +[//]: # () +[//]: # () -Year 2024: +[//]: # (Year 2024:) - +[//]: # () +[//]: # () -Year 2045: +[//]: # () +[//]: # (Year 2045:) - +[//]: # () +[//]: # () -Year 2070: +[//]: # () +[//]: # (Year 2070:) - +[//]: # () +[//]: # () diff --git a/docs/visitor/model/scenarios.md b/docs/visitor/model/scenarios.md index 4ff1ebf..3160e97 100644 --- a/docs/visitor/model/scenarios.md +++ b/docs/visitor/model/scenarios.md @@ -2,18 +2,17 @@ [//]: # (!!! info "SEDOS - Scenario frame details") -[//]: # ( Find scenario details, such as temporal and spatial scope, sectors and technologies, in the [SEDOS Scenario Bundle](https://openenergy-platform.org/scenario-bundles/id/9387d4a9-85f1-52e9-ce79-0168f25dd5e0).) - -## Base scenario ToKo - technology-open & cost-optimal +**Base scenario ToKio - technology-open & cost-optimal** Which technologies can reduce GHG emissions from energy use to a targeted level at minimum cost (e.g. climate neutrality by 2045)? -## Scenario variation RIGa: Reduced import dependency for fossil gas +**Scenario variation RIGa: Reduced import dependency for fossil gas** How can the dependency on fossil gas imports, including LNG imports, be reduced to a specified minimum level at minimum cost while complying with the GHG reduction targets? -## Scenario variation SienA/B: sector integration +**Scenario variation SienA/B: sector integration** In which areas can sector integration make a greater contribution to GHG reduction? - SienA: Specification of a minimum use of hydrogen or H2 derivatives. -- SienB: Specification of a minimum domestic RE electricity generation. \ No newline at end of file +- SienB: Specification of a minimum domestic RE electricity generation. +[//]: # ( Find further scenario details, such as temporal and spatial scope, sectors and technologies, in the [SEDOS Scenario Bundle](https://openenergy-platform.org/scenario-bundles/id/9387d4a9-85f1-52e9-ce79-0168f25dd5e0).) diff --git a/docs/visitor/structure/emissions.md b/docs/visitor/structure/emissions.md index b6489a1..d1934cc 100644 --- a/docs/visitor/structure/emissions.md +++ b/docs/visitor/structure/emissions.md @@ -2,19 +2,19 @@ General information: -- Emission types: CO2, methane & N2O (emission values are taken from the National Inventory Report for Germany.) -- The 100-year time horizon global warming potentials (GWP) relative to CO2 according to the fourth IPCC assessment report - (AR4) are taken as suggested by the UWB at the time of the definition in 2023: CH4: 25, N2O: 298 -- Differentiation of energy sources into fossil, synthetic and biogenic. (assumption: only carbon-capture-based synthetic imports) -- No positive balancing for electricity imports - limitation by country-specific constraints. -- Negative offsetting for imports of biogenic and synthetically produced energy sources carrying CO2 -- Negative offsetting for growth of biogenic resources in Germany & for processes with CO2 capture (CC & DACC). -- No sector-specific emission targets, due to sector coupling with many possible conversions of energy sources before final energy consumption. -- Exogenous demand and carbon carrying by-products are possible, limited CO2 sinks - system boundary at product demand. -- Differentiation of emissions: Global (CO2): Foreign key mapping to the global table with emission factors per energy source. -- Process-specific (methane & N2O): Sector/process-specific emission factors due to higher dependence on process conditions - (e.g., firing temperature N2O, material moisture CH4 ...) Direct specification with a numerical value -- Realisation of negative emissions in the model structure with the following visualized emission concept: +- Emission types considered: CO2, methane (CH4), and nitrous oxide (N2O), based on data from Germany's National Inventory Report. +- Global warming potentials (GWP) over a 100-year time horizon, relative to CO2, are adopted from the IPCC Fifth Assessment Report (AR5): CH4: 28, N2O: 265. +- Energy sources are categorized as fossil, synthetic, or biogenic, with the assumption that only carbon-capture-based synthetic imports are considered. +- No positive balancing is applied to electricity imports, constrained by country-specific limitations. +- Negative offsets are applied to imported biogenic and synthetically produced energy sources that carry CO2. +- Negative offsets also account for the growth of biogenic resources within Germany and for processes involving carbon capture (CC) or direct air carbon capture (DACC). +- Sector-specific emission targets are not defined, due to sector coupling and the multiple potential conversions of energy sources before final consumption. +- Exogenous demand and carbon-carrying by-products are allowed, with limited CO2 sinks; the system boundary is set at the product demand level. +- Emissions are differentiated globally (CO2): a foreign key links to the global table of emission factors per energy source. +- Sector- and process-specific emission factors are used for CH4 and N2O, as they are more dependent on specific process conditions (e.g., firing temperature for N2O, material moisture for CH4). + + +- Negative emissions are implemented within the model structure, as demonstrated by the following visualized emission concept. ![emission_concept](../../graphics/emission_concept.jpg) diff --git a/docs/visitor/structure/model_frame.md b/docs/visitor/structure/model_frame.md index 8e8d162..c87a89f 100644 --- a/docs/visitor/structure/model_frame.md +++ b/docs/visitor/structure/model_frame.md @@ -25,6 +25,12 @@ can choose their energy sources endogenously. - Capacity expansion limits have been defined per milestone years. - The European electricity market is considered but modeled in a simplified manner. +
+The central assumptions are additionally highlighted in the figure below: +
+![sector_overview](../../graphics/model-frame-decisions_v3.jpg) + + [//]: # () [//]: # (### 2.3.3 Temporal aggregation method) diff --git a/docs/visitor/structure/overview.md b/docs/visitor/structure/overview.md index d7d24ec..eb273ea 100644 --- a/docs/visitor/structure/overview.md +++ b/docs/visitor/structure/overview.md @@ -8,4 +8,8 @@ The SEDOS focus is on understanding... - The possible relations and interactions due to sector coupling. The model structure is used to build up energy models in three different frameworks: oemof, FINE and TIMES. -Key components of the model structure are defined in this Section. For further information please consult the open-access [publication](TODO:Link). \ No newline at end of file +Key components of the model structure are defined in this Section. For further information please consult the open-access [publication](TODO:Link). + +The different sectors and their general interfaces are shown in the figure below: + +![sector_overview](../../graphics/sector_overview_without-chapters.jpg){ width=1000px } \ No newline at end of file diff --git a/mkdocs.yml b/mkdocs.yml index 5353c81..07cefd3 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -5,8 +5,8 @@ nav: - 'Model Structure': - 'Overview': 'visitor/structure/overview.md' - 'Model Base': 'visitor/structure/model_frame.md' + - 'Emission Concept': 'visitor/structure/emissions.md' - 'Exogenous Values': 'visitor/structure/exogenous_values.md' - - 'Emissions': 'visitor/structure/emissions.md' # - 'Model Structure': '' # - 'Aggregations': '' - 'Reference Dataset': @@ -17,20 +17,20 @@ nav: - 'Ontology': 'visitor/data/ontology.md' - 'Model Application': - 'Scenarios': 'visitor/model/scenarios.md' - - 'GUI': 'visitor/model/gui.md' +# - 'GUI': 'visitor/model/gui.md' - 'Results': 'visitor/model/results.md' - - 'How to contribute data?': 'developer/how_to_contribute_data.md' - - 'Data preface': 'developer/data_preface.md' - - 'FAQ': 'developer/faq.md' - - 'Glossary': 'glossary.md' - Developer Instructions: - - '(Meta)data requirements': + - '(Meta)Data Requirements': - 'Overview': 'developer/data_requirements/overview.md' - 'Data': 'developer/data_requirements/input_data.md' - 'Metadata': 'developer/data_requirements/metadata.md' - 'Ontology': 'developer/data_requirements/ontology.md' - 'Licensing': 'developer/data_requirements/licensing.md' - - 'Further reading': 'publications.md' + - 'How to Contribute Data?': 'developer/how_to_contribute_data.md' + - 'Data Preface': 'developer/data_preface.md' + - 'FAQ': 'developer/faq.md' + - 'Further Reading': 'publications.md' + - 'Glossary': 'glossary.md' markdown_extensions: - toc: