flextool 4.0.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (322) hide show
  1. flextool/__init__.py +41 -0
  2. flextool/_mem_sampler.py +193 -0
  3. flextool/_resources.py +43 -0
  4. flextool/calibrate/__init__.py +51 -0
  5. flextool/calibrate/__main__.py +11 -0
  6. flextool/calibrate/_cli.py +316 -0
  7. flextool/calibrate/_db_alt.py +166 -0
  8. flextool/calibrate/_final_outputs.py +110 -0
  9. flextool/calibrate/_guard.py +151 -0
  10. flextool/calibrate/_loop.py +558 -0
  11. flextool/calibrate/_readers.py +223 -0
  12. flextool/calibrate/_report.py +263 -0
  13. flextool/calibrate/_sizing.py +699 -0
  14. flextool/calibrate/_solve.py +134 -0
  15. flextool/calibrate/_solve_status.py +495 -0
  16. flextool/cli/__init__.py +9 -0
  17. flextool/cli/_console.py +51 -0
  18. flextool/cli/_timing.py +147 -0
  19. flextool/cli/cmd_execute_flextool_workflow.py +187 -0
  20. flextool/cli/cmd_export_to_tabular.py +56 -0
  21. flextool/cli/cmd_import_sensitivities.py +75 -0
  22. flextool/cli/cmd_migrate_database.py +13 -0
  23. flextool/cli/cmd_open_results_db.py +269 -0
  24. flextool/cli/cmd_read_matpower.py +66 -0
  25. flextool/cli/cmd_read_old_flextool.py +63 -0
  26. flextool/cli/cmd_read_self_describing_tabular_input.py +50 -0
  27. flextool/cli/cmd_read_tabular_input.py +81 -0
  28. flextool/cli/cmd_run_flextool.py +1095 -0
  29. flextool/cli/cmd_scenario_results.py +284 -0
  30. flextool/cli/cmd_solve_mps.py +169 -0
  31. flextool/cli/cmd_update_flextool.py +17 -0
  32. flextool/cli/cmd_write_outputs.py +125 -0
  33. flextool/common_utils/__init__.py +1 -0
  34. flextool/common_utils/plot_mem_shape.py +77 -0
  35. flextool/common_utils/precision.py +451 -0
  36. flextool/decomposition/__init__.py +0 -0
  37. flextool/decomposition/region_decomposition.py +128 -0
  38. flextool/decomposition/region_filter.py +1261 -0
  39. flextool/engine_polars/__init__.py +110 -0
  40. flextool/engine_polars/_axis_enums.py +742 -0
  41. flextool/engine_polars/_benders.py +3462 -0
  42. flextool/engine_polars/_block_layout.py +1479 -0
  43. flextool/engine_polars/_blocks.py +1515 -0
  44. flextool/engine_polars/_commodity_ladder.py +660 -0
  45. flextool/engine_polars/_cumulative_invest.py +1165 -0
  46. flextool/engine_polars/_db_loader.py +153 -0
  47. flextool/engine_polars/_db_reader.py +127 -0
  48. flextool/engine_polars/_dc_power_flow.py +445 -0
  49. flextool/engine_polars/_delay.py +442 -0
  50. flextool/engine_polars/_derived_arithmetic.py +432 -0
  51. flextool/engine_polars/_derived_block.py +990 -0
  52. flextool/engine_polars/_derived_branch.py +769 -0
  53. flextool/engine_polars/_derived_existing.py +1353 -0
  54. flextool/engine_polars/_derived_npv.py +1297 -0
  55. flextool/engine_polars/_derived_params.py +9850 -0
  56. flextool/engine_polars/_derived_profile.py +881 -0
  57. flextool/engine_polars/_derived_walks.py +276 -0
  58. flextool/engine_polars/_determinism.py +70 -0
  59. flextool/engine_polars/_direct_params.py +2186 -0
  60. flextool/engine_polars/_dump_csvs.py +1009 -0
  61. flextool/engine_polars/_emit_arc_unions.py +1631 -0
  62. flextool/engine_polars/_emit_calc_params.py +729 -0
  63. flextool/engine_polars/_emit_chain_params.py +709 -0
  64. flextool/engine_polars/_emit_co2_accumulators.py +400 -0
  65. flextool/engine_polars/_emit_dispatchers.py +690 -0
  66. flextool/engine_polars/_emit_energy_margin.py +125 -0
  67. flextool/engine_polars/_emit_energy_margin_adder.py +290 -0
  68. flextool/engine_polars/_emit_entity_annual.py +428 -0
  69. flextool/engine_polars/_emit_inflow_scaling.py +1420 -0
  70. flextool/engine_polars/_emit_leaf_sets.py +550 -0
  71. flextool/engine_polars/_emit_lp_scaling.py +665 -0
  72. flextool/engine_polars/_emit_mid_sets.py +859 -0
  73. flextool/engine_polars/_emit_pdt_params.py +759 -0
  74. flextool/engine_polars/_emit_per_solve.py +774 -0
  75. flextool/engine_polars/_emit_period_calc.py +504 -0
  76. flextool/engine_polars/_emit_period_params.py +2398 -0
  77. flextool/engine_polars/_emit_provider_io.py +141 -0
  78. flextool/engine_polars/_emit_reserve.py +574 -0
  79. flextool/engine_polars/_emit_solve_time.py +311 -0
  80. flextool/engine_polars/_emit_solve_writers.py +1249 -0
  81. flextool/engine_polars/_flex_data_accumulator.py +388 -0
  82. flextool/engine_polars/_flex_data_provider.py +478 -0
  83. flextool/engine_polars/_group_slack.py +1253 -0
  84. flextool/engine_polars/_inmemory_reader.py +140 -0
  85. flextool/engine_polars/_input_source.py +336 -0
  86. flextool/engine_polars/_invest_seeds.py +191 -0
  87. flextool/engine_polars/_native_input_writer.py +100 -0
  88. flextool/engine_polars/_native_run_model.py +1348 -0
  89. flextool/engine_polars/_orchestration.py +4314 -0
  90. flextool/engine_polars/_output_writer.py +439 -0
  91. flextool/engine_polars/_param_shapes.py +1595 -0
  92. flextool/engine_polars/_parquet_bundle.py +723 -0
  93. flextool/engine_polars/_pdt_join.py +167 -0
  94. flextool/engine_polars/_pdt_lookup.py +547 -0
  95. flextool/engine_polars/_per_solve_sets.py +335 -0
  96. flextool/engine_polars/_projection_params.py +2056 -0
  97. flextool/engine_polars/_provider_keys.py +173 -0
  98. flextool/engine_polars/_provider_translators.py +225 -0
  99. flextool/engine_polars/_recursive_solve.py +703 -0
  100. flextool/engine_polars/_region_filter.py +2508 -0
  101. flextool/engine_polars/_reserve.py +649 -0
  102. flextool/engine_polars/_solve_acceptance.py +331 -0
  103. flextool/engine_polars/_solve_config.py +1001 -0
  104. flextool/engine_polars/_solve_context.py +885 -0
  105. flextool/engine_polars/_solve_handoff.py +164 -0
  106. flextool/engine_polars/_solve_state.py +232 -0
  107. flextool/engine_polars/_solver_base.py +36 -0
  108. flextool/engine_polars/_solver_dispatch.py +511 -0
  109. flextool/engine_polars/_spinedb_reader.py +1165 -0
  110. flextool/engine_polars/_stochastic.py +593 -0
  111. flextool/engine_polars/_subprocess_solve.py +1838 -0
  112. flextool/engine_polars/_timeline.py +1416 -0
  113. flextool/engine_polars/_vectorize.py +438 -0
  114. flextool/engine_polars/_warm.py +858 -0
  115. flextool/engine_polars/autoscale/__init__.py +107 -0
  116. flextool/engine_polars/autoscale/_config.py +218 -0
  117. flextool/engine_polars/autoscale/_layer2.py +1253 -0
  118. flextool/engine_polars/autoscale/_layer2_types.py +584 -0
  119. flextool/engine_polars/autoscale/_quantity_types.py +621 -0
  120. flextool/engine_polars/autoscale/_report.py +336 -0
  121. flextool/engine_polars/chain.py +259 -0
  122. flextool/engine_polars/input.py +6638 -0
  123. flextool/engine_polars/model.py +4754 -0
  124. flextool/env_check.py +388 -0
  125. flextool/export_to_tabular/__init__.py +5 -0
  126. flextool/export_to_tabular/db_reader.py +224 -0
  127. flextool/export_to_tabular/excel_writer.py +3559 -0
  128. flextool/export_to_tabular/export_settings.yaml +377 -0
  129. flextool/export_to_tabular/export_to_excel.py +227 -0
  130. flextool/export_to_tabular/formatting.py +543 -0
  131. flextool/export_to_tabular/sheet_config.py +876 -0
  132. flextool/gui/__init__.py +0 -0
  133. flextool/gui/__main__.py +118 -0
  134. flextool/gui/calibrate_commands.py +184 -0
  135. flextool/gui/calibrate_jobs.py +424 -0
  136. flextool/gui/check_tree.py +142 -0
  137. flextool/gui/cli_format.py +83 -0
  138. flextool/gui/config_parser.py +68 -0
  139. flextool/gui/data_models.py +362 -0
  140. flextool/gui/db_editor_integration.py +202 -0
  141. flextool/gui/db_version_check.py +269 -0
  142. flextool/gui/dialogs/__init__.py +0 -0
  143. flextool/gui/dialogs/add_dialog.py +1098 -0
  144. flextool/gui/dialogs/calibrate_dialog.py +1259 -0
  145. flextool/gui/dialogs/file_picker.py +473 -0
  146. flextool/gui/dialogs/group_picker.py +299 -0
  147. flextool/gui/dialogs/migration_consent_dialog.py +106 -0
  148. flextool/gui/dialogs/migration_progress_dialog.py +237 -0
  149. flextool/gui/dialogs/plot_dialog.py +459 -0
  150. flextool/gui/dialogs/plot_settings_picker.py +2184 -0
  151. flextool/gui/dialogs/project_dialog.py +426 -0
  152. flextool/gui/dialogs/update_dialog.py +212 -0
  153. flextool/gui/downsampling.py +88 -0
  154. flextool/gui/error_handling.py +50 -0
  155. flextool/gui/execution_manager.py +1715 -0
  156. flextool/gui/execution_window.py +1377 -0
  157. flextool/gui/hover_tooltip.py +111 -0
  158. flextool/gui/input_sources.py +730 -0
  159. flextool/gui/main_window.py +6181 -0
  160. flextool/gui/network_graph.py +215 -0
  161. flextool/gui/output_actions.py +393 -0
  162. flextool/gui/output_log_window.py +159 -0
  163. flextool/gui/platform_utils.py +421 -0
  164. flextool/gui/plot_cache.py +88 -0
  165. flextool/gui/plot_canvas.py +543 -0
  166. flextool/gui/plot_config_reader.py +272 -0
  167. flextool/gui/project_utils.py +100 -0
  168. flextool/gui/result_viewer.py +4394 -0
  169. flextool/gui/scenario_key.py +162 -0
  170. flextool/gui/scenario_lists.py +516 -0
  171. flextool/gui/settings_io.py +360 -0
  172. flextool/gui/solve_reader.py +103 -0
  173. flextool/gui/tree_reorder.py +88 -0
  174. flextool/gui/ui_metrics.py +420 -0
  175. flextool/input_derivation/__init__.py +281 -0
  176. flextool/input_derivation/_commodity_ladder.py +375 -0
  177. flextool/input_derivation/_commodity_ladder_sets.py +70 -0
  178. flextool/input_derivation/_dc_power_flow.py +377 -0
  179. flextool/input_derivation/_method_constants.py +77 -0
  180. flextool/input_derivation/_process_method.py +258 -0
  181. flextool/input_derivation/_specs.py +1026 -0
  182. flextool/input_derivation/_validators.py +321 -0
  183. flextool/lean_parquet.py +159 -0
  184. flextool/model_builder/__init__.py +5 -0
  185. flextool/model_builder/build_model.py +589 -0
  186. flextool/model_builder/encoding.py +67 -0
  187. flextool/model_builder/names.py +34 -0
  188. flextool/model_builder/profiles.py +129 -0
  189. flextool/plot_outputs/__init__.py +14 -0
  190. flextool/plot_outputs/axis_helpers.py +355 -0
  191. flextool/plot_outputs/color_template.py +888 -0
  192. flextool/plot_outputs/config.py +171 -0
  193. flextool/plot_outputs/format_helpers.py +345 -0
  194. flextool/plot_outputs/legend_helpers.py +143 -0
  195. flextool/plot_outputs/orchestrator.py +1141 -0
  196. flextool/plot_outputs/perf.py +37 -0
  197. flextool/plot_outputs/plan.py +1787 -0
  198. flextool/plot_outputs/plot_bars.py +1510 -0
  199. flextool/plot_outputs/plot_bars_detail.py +753 -0
  200. flextool/plot_outputs/plot_lines.py +951 -0
  201. flextool/plot_outputs/shared_manifest.py +564 -0
  202. flextool/plot_outputs/subplot_helpers.py +137 -0
  203. flextool/process_inputs/__init__.py +188 -0
  204. flextool/process_inputs/import_old_excel_input.json +4159 -0
  205. flextool/process_inputs/read_matpower.py +451 -0
  206. flextool/process_inputs/read_old_flextool.py +1288 -0
  207. flextool/process_inputs/read_self_describing_excel.py +1423 -0
  208. flextool/process_inputs/read_tabular_with_specification.py +1114 -0
  209. flextool/process_inputs/write_old_flextool_to_db.py +3077 -0
  210. flextool/process_inputs/write_self_describing_to_db.py +977 -0
  211. flextool/process_inputs/write_to_input_db.py +269 -0
  212. flextool/process_outputs/__init__.py +7 -0
  213. flextool/process_outputs/_annualize.py +55 -0
  214. flextool/process_outputs/_inmemory_helpers.py +292 -0
  215. flextool/process_outputs/_output_meta.py +672 -0
  216. flextool/process_outputs/calc_capacity_flows.py +107 -0
  217. flextool/process_outputs/calc_connections.py +136 -0
  218. flextool/process_outputs/calc_costs.py +260 -0
  219. flextool/process_outputs/calc_group_flows.py +192 -0
  220. flextool/process_outputs/calc_slacks.py +103 -0
  221. flextool/process_outputs/calc_storage_vre.py +160 -0
  222. flextool/process_outputs/drop_levels.py +208 -0
  223. flextool/process_outputs/handoff_writers.py +1315 -0
  224. flextool/process_outputs/out_ancillary.py +544 -0
  225. flextool/process_outputs/out_capacity.py +179 -0
  226. flextool/process_outputs/out_costs.py +334 -0
  227. flextool/process_outputs/out_flowgroup.py +189 -0
  228. flextool/process_outputs/out_flows.py +301 -0
  229. flextool/process_outputs/out_group.py +475 -0
  230. flextool/process_outputs/out_node.py +190 -0
  231. flextool/process_outputs/persist_realized_slice.py +601 -0
  232. flextool/process_outputs/process_results.py +24 -0
  233. flextool/process_outputs/read_highs_solution.py +2256 -0
  234. flextool/process_outputs/read_parameters.py +1799 -0
  235. flextool/process_outputs/read_sets.py +1095 -0
  236. flextool/process_outputs/read_variables.py +553 -0
  237. flextool/process_outputs/solve_order.py +81 -0
  238. flextool/process_outputs/spinedb_replay.py +412 -0
  239. flextool/process_outputs/union_realized_slice.py +224 -0
  240. flextool/process_outputs/write_outputs.py +1286 -0
  241. flextool/process_outputs/write_spinedb.py +1267 -0
  242. flextool/representative_periods/__init__.py +5 -0
  243. flextool/representative_periods/clustering.py +165 -0
  244. flextool/representative_periods/force_include.py +563 -0
  245. flextool/representative_periods/netload.py +365 -0
  246. flextool/representative_periods/netload_inputs.py +345 -0
  247. flextool/representative_periods/netload_iterate.py +722 -0
  248. flextool/representative_periods/preprocess.py +948 -0
  249. flextool/representative_periods/scenario_stack.py +195 -0
  250. flextool/representative_periods/weights.py +124 -0
  251. flextool/scenario_comparison/__init__.py +13 -0
  252. flextool/scenario_comparison/config_builder.py +158 -0
  253. flextool/scenario_comparison/constants.py +20 -0
  254. flextool/scenario_comparison/data_models.py +222 -0
  255. flextool/scenario_comparison/db_reader.py +399 -0
  256. flextool/scenario_comparison/dispatch_data.py +1002 -0
  257. flextool/scenario_comparison/dispatch_mappings.py +205 -0
  258. flextool/scenario_comparison/dispatch_plots.py +691 -0
  259. flextool/scenario_comparison/input_entity_colors.py +319 -0
  260. flextool/scenario_comparison/orchestrator.py +453 -0
  261. flextool/scenario_comparison/plan_union.py +244 -0
  262. flextool/scenario_comparison/plot_settings_seed.py +205 -0
  263. flextool/schemas/AXIS_CONTRACT.md +71 -0
  264. flextool/schemas/canonical_databases/howto_aggregate_output.json +6225 -0
  265. flextool/schemas/canonical_databases/howto_connections.json +5606 -0
  266. flextool/schemas/canonical_databases/howto_demand.json +5518 -0
  267. flextool/schemas/canonical_databases/howto_hydro_reservoir.json +6239 -0
  268. flextool/schemas/canonical_databases/howto_hydro_reservoir_with_pump.json +5933 -0
  269. flextool/schemas/canonical_databases/howto_non_sync_and_curtailment.json +5794 -0
  270. flextool/schemas/canonical_databases/howto_ramp_and_start_up.json +5707 -0
  271. flextool/schemas/canonical_databases/howto_stochastics.json +6032 -0
  272. flextool/schemas/canonical_databases/templates_examples.json +13532 -0
  273. flextool/schemas/canonical_databases/templates_time_settings_only.json +5340 -0
  274. flextool/schemas/comparison_settings_template.json +197 -0
  275. flextool/schemas/default_plot_settings.yaml +260 -0
  276. flextool/schemas/default_plots.yaml +2293 -0
  277. flextool/schemas/flextool_axis_contract.json +303 -0
  278. flextool/schemas/flextool_axis_contract.schema.json +247 -0
  279. flextool/schemas/old_flextool_import_template.json +4443 -0
  280. flextool/schemas/output_info_template.json +48 -0
  281. flextool/schemas/output_settings_template.json +256 -0
  282. flextool/schemas/pre_v26/flextool_template_constant_default.json +2105 -0
  283. flextool/schemas/pre_v26/flextool_template_default_optional_output.json +2152 -0
  284. flextool/schemas/pre_v26/flextool_template_default_value.json +2094 -0
  285. flextool/schemas/pre_v26/flextool_template_drop_down.json +2080 -0
  286. flextool/schemas/pre_v26/flextool_template_lifetime_method.json +1990 -0
  287. flextool/schemas/pre_v26/flextool_template_optional_outputs.json +2094 -0
  288. flextool/schemas/pre_v26/flextool_template_output_node_flows.json +2105 -0
  289. flextool/schemas/pre_v26/flextool_template_results_master.json +493 -0
  290. flextool/schemas/pre_v26/flextool_template_rolling_start_remove.json +2087 -0
  291. flextool/schemas/pre_v26/flextool_template_rolling_window.json +2059 -0
  292. flextool/schemas/pre_v26/flextool_template_storage_binding_defaults.json +46 -0
  293. flextool/schemas/pre_v26/flextool_template_v2.json +1990 -0
  294. flextool/schemas/pre_v26/flextool_template_v25.json +3864 -0
  295. flextool/schemas/spinedb_results_schema.json +581 -0
  296. flextool/schemas/spinedb_schema.json +4636 -0
  297. flextool/solver_config/copt.opt.template +18 -0
  298. flextool/solver_config/cplex.opt.template +25 -0
  299. flextool/solver_config/gurobi.opt.template +18 -0
  300. flextool/solver_config/highs.opt.template +18 -0
  301. flextool/solver_config/xpress.opt.template +26 -0
  302. flextool/spinedb_backend/__init__.py +26 -0
  303. flextool/spinedb_backend/_axis_enums.py +1119 -0
  304. flextool/spinedb_backend/_backend.py +1139 -0
  305. flextool/update_flextool/__init__.py +12 -0
  306. flextool/update_flextool/canonical_databases.py +251 -0
  307. flextool/update_flextool/db_migration.py +7108 -0
  308. flextool/update_flextool/ensure_settings_db.py +138 -0
  309. flextool/update_flextool/export_database.py +103 -0
  310. flextool/update_flextool/extend_tests_fixture.py +772 -0
  311. flextool/update_flextool/generate_canonical.py +274 -0
  312. flextool/update_flextool/initialize_database.py +42 -0
  313. flextool/update_flextool/install_info.py +225 -0
  314. flextool/update_flextool/self_update.py +464 -0
  315. flextool/update_flextool/sync_master_json_template.py +125 -0
  316. flextool/update_flextool/test_fixtures.py +187 -0
  317. flextool-4.0.0.dist-info/METADATA +217 -0
  318. flextool-4.0.0.dist-info/RECORD +322 -0
  319. flextool-4.0.0.dist-info/WHEEL +5 -0
  320. flextool-4.0.0.dist-info/entry_points.txt +17 -0
  321. flextool-4.0.0.dist-info/licenses/LICENSE.txt +19 -0
  322. flextool-4.0.0.dist-info/top_level.txt +1 -0
@@ -0,0 +1,581 @@
1
+ {
2
+ "entity_classes": [
3
+ [
4
+ "connection",
5
+ [],
6
+ null,
7
+ 280741963428706,
8
+ true
9
+ ],
10
+ [
11
+ "group",
12
+ [],
13
+ null,
14
+ 280655732797761,
15
+ true
16
+ ],
17
+ [
18
+ "model",
19
+ [],
20
+ null,
21
+ 280378317271475,
22
+ true
23
+ ],
24
+ [
25
+ "node",
26
+ [],
27
+ null,
28
+ 280655732797997,
29
+ true
30
+ ],
31
+ [
32
+ "reserve",
33
+ [],
34
+ null,
35
+ 281473533932379,
36
+ true
37
+ ],
38
+ [
39
+ "unit",
40
+ [],
41
+ null,
42
+ 281107035648629,
43
+ true
44
+ ],
45
+ [
46
+ "upDown",
47
+ [],
48
+ null,
49
+ 280378317271864,
50
+ true
51
+ ],
52
+ [
53
+ "unit__node",
54
+ [
55
+ "unit",
56
+ "node"
57
+ ],
58
+ null,
59
+ null,
60
+ true
61
+ ],
62
+ [
63
+ "connection__node__node",
64
+ [
65
+ "connection",
66
+ "node",
67
+ "node"
68
+ ],
69
+ null,
70
+ null,
71
+ true
72
+ ],
73
+ [
74
+ "group__reserve__upDown",
75
+ [
76
+ "reserve",
77
+ "upDown",
78
+ "group"
79
+ ],
80
+ null,
81
+ null,
82
+ true
83
+ ],
84
+ [
85
+ "connection__reserve__upDown__node",
86
+ [
87
+ "connection",
88
+ "reserve",
89
+ "upDown",
90
+ "node"
91
+ ],
92
+ null,
93
+ null,
94
+ true
95
+ ],
96
+ [
97
+ "unit__reserve__upDown__node",
98
+ [
99
+ "unit",
100
+ "reserve",
101
+ "upDown",
102
+ "node"
103
+ ],
104
+ null,
105
+ null,
106
+ true
107
+ ]
108
+ ],
109
+ "parameter_definitions": [
110
+ [
111
+ "connection",
112
+ "capacity",
113
+ null,
114
+ null,
115
+ "'existing' - capacity that was assumed to exist in the beginning of the solve. 'invested' - capacity the model decided to invest for the given period. 'retired' - capacity the model decided to retire in the beginning of the given period. 'total' - sum of existing, invested and retired capacities.",
116
+ null
117
+ ],
118
+ [
119
+ "connection",
120
+ "cost_annualized",
121
+ null,
122
+ null,
123
+ "per-entity annualized cost broken down by category (commodity cost, commodity sales, co2, other operational, starts, investment / retirement, fixed cost pre-existing / invested / reduction of divestments and, for nodes, upward / downward slack penalty). Fuel / commodity cost is attributed to the consuming process and CO2 cost is summed over every priced group the process touches. Summing a category over all entities reproduces the system-wide cost_annualized.",
124
+ null
125
+ ],
126
+ [
127
+ "connection",
128
+ "cost_discounted",
129
+ null,
130
+ null,
131
+ "per-entity net present (discounted) cost over the horizon, same category break-down as cost_annualized. Summing a category over all entities reproduces the system-wide cost_discounted_total.",
132
+ null
133
+ ],
134
+ [
135
+ "connection",
136
+ "invest_marginal",
137
+ null,
138
+ null,
139
+ "Marginal cost to invest in one more kW of capacity (zero value means that the model has invested in optimal amount; negative value means that if the model would be able to invest more, it could reduce total cost by the stated amount per kW; positive value means the cost is higher than the benefit by the stated amount per kW).",
140
+ null
141
+ ],
142
+ [
143
+ "connection__node__node",
144
+ "cf",
145
+ null,
146
+ null,
147
+ "[per unit] average capacity factor of the flow, i.e. the utilization rate of the connection where flows in both directions are considered as utilization. Average of the absolute flow [MWh/h] divided by the capacity of the connection.",
148
+ null
149
+ ],
150
+ [
151
+ "connection__node__node",
152
+ "flow_annualized",
153
+ null,
154
+ null,
155
+ "annualized cumulative flow through the connection (left to right is positive).",
156
+ null
157
+ ],
158
+ [
159
+ "connection__node__node",
160
+ "flow_t",
161
+ null,
162
+ null,
163
+ "flow through the connection (left to right is positive).",
164
+ null
165
+ ],
166
+ [
167
+ "connection__node__node",
168
+ "flow_to_first_node_annualized",
169
+ null,
170
+ null,
171
+ "annualized cumulative flow through the connection only to the left (first) node.",
172
+ null
173
+ ],
174
+ [
175
+ "connection__node__node",
176
+ "flow_to_first_node_t",
177
+ null,
178
+ null,
179
+ "flow through the connection to the left (first) node.",
180
+ null
181
+ ],
182
+ [
183
+ "connection__node__node",
184
+ "flow_to_second_node_annualized",
185
+ null,
186
+ null,
187
+ "annualized cumulative flow through the connection only to the right (second) node.",
188
+ null
189
+ ],
190
+ [
191
+ "connection__node__node",
192
+ "flow_to_second_node_t",
193
+ null,
194
+ null,
195
+ "flow through the connection to the right (second) node.",
196
+ null
197
+ ],
198
+ [
199
+ "connection__reserve__upDown__node",
200
+ "reservation_average",
201
+ null,
202
+ null,
203
+ "",
204
+ null
205
+ ],
206
+ [
207
+ "connection__reserve__upDown__node",
208
+ "reservation_t",
209
+ null,
210
+ null,
211
+ "",
212
+ null
213
+ ],
214
+ [
215
+ "group",
216
+ "CO2_annualized",
217
+ null,
218
+ null,
219
+ "how many tonnes of CO2 annualized the units and connections in this group have generated (by using commodity with CO2 content) or removed.",
220
+ null
221
+ ],
222
+ [
223
+ "group",
224
+ "VRE_share_t",
225
+ null,
226
+ null,
227
+ "Share of VRE generation in the group of nodes (sum of 'upper_limit' flows into nodes divided by the sum of inflexible inflow (parameter 'inflow') into those nodes).",
228
+ null
229
+ ],
230
+ [
231
+ "group",
232
+ "flow_annualized",
233
+ null,
234
+ null,
235
+ "produces grouped and annualized flow results of the `node` members of the `group`",
236
+ null
237
+ ],
238
+ [
239
+ "group",
240
+ "flow_t",
241
+ null,
242
+ null,
243
+ "produces grouped flow results to the `node` members of the `group`",
244
+ null
245
+ ],
246
+ [
247
+ "group",
248
+ "indicator",
249
+ null,
250
+ null,
251
+ "A set of results for all node members of the group. 'sum of annualized inflows' - [MWh] sum of inflow to the node which has been annualized (scaled to correspond to a year of timesteps). 'VRE share' - [0-1] how much the flows from VRE sources (inputs using ‘upper limit’ profile) are of the inflow.\n'curtailed VRE share' - [0-1] how much the unused flows from VRE sources would have been of the inflow. 'upward slack share' - [0-1] upward slack in relation to the inflow. 'downward slack share' - [0-1] downward slack in relation to the inflow.",
252
+ null
253
+ ],
254
+ [
255
+ "group",
256
+ "inertia_largest_flow_t",
257
+ null,
258
+ null,
259
+ "Largest individual flow coming into a group of nodes that are part of the same inertia group.",
260
+ null
261
+ ],
262
+ [
263
+ "group",
264
+ "inertia_t",
265
+ null,
266
+ null,
267
+ "the amount of inertia (MWs) in the group of nodes in each timestep.",
268
+ null
269
+ ],
270
+ [
271
+ "group",
272
+ "inertia_unit_node_t",
273
+ null,
274
+ null,
275
+ "the amount of inertia in the flows between the units and the nodes in the group.",
276
+ null
277
+ ],
278
+ [
279
+ "group",
280
+ "slack_capacity_margin",
281
+ null,
282
+ null,
283
+ "use of slack variable and the associated penalty cost to meet the capacity margin requirement in the period.",
284
+ null
285
+ ],
286
+ [
287
+ "group",
288
+ "slack_inertia_t",
289
+ null,
290
+ null,
291
+ "use of slack variable and the associated penalty cost to fulfill the inertia requirement in each timestep.",
292
+ null
293
+ ],
294
+ [
295
+ "group",
296
+ "slack_nonsync_t",
297
+ null,
298
+ null,
299
+ "use of slack variable and the associated penalty cost to fulfill the non-synchronous share maximum share constraint in each timestep.",
300
+ null
301
+ ],
302
+ [
303
+ "group",
304
+ "sum_flow_annualized",
305
+ null,
306
+ null,
307
+ "Annualized sum of flows in the group (members from group__connection__node and group__unit__node). Annualization scales the sum to correspond with full year time series.",
308
+ null
309
+ ],
310
+ [
311
+ "group",
312
+ "sum_flow_t",
313
+ null,
314
+ null,
315
+ "Sum of flows in the group (members from group__connection__node and group__unit__node).",
316
+ null
317
+ ],
318
+ [
319
+ "group__reserve__upDown",
320
+ "slack_reserve_t",
321
+ null,
322
+ null,
323
+ "use of slack variable and the associated penalty cost to fulfill the upward or downward reserve requirement in each timestep.",
324
+ null
325
+ ],
326
+ [
327
+ "model",
328
+ "cost_annualized",
329
+ null,
330
+ null,
331
+ "Annualized (scaled to one year) and undiscounted cost for each period. The costs are divided into the following categories: 'unit investment/retirement' - [CUR] cost of investing in unit capacity or benefits from salvaging unit capacity. 'connection investment/retirement' - [CUR] cost of investing in connection capacity or benefits from salvaging connection capacity. 'storage investment/retirement' - [CUR] cost of investing in storage capacity or benefits from salvaging storage capacity. 'commodity' - [CUR] cost of unit using commodity inputs or benefit of selling commodities (negative value). 'CO2' - [CUR] cost of CO2 emissions caused by unit using commodities with CO2 content. 'variable cost' - [CUR] other variable operation and maintenance costs. 'starts' - [CUR] start up costs. 'upward penalty' - [CUR] cost of involuntary demand reduction. 'downward penalty' - [CUR] cost of involuntary demand increase- 'inertia penalty' - [CUR] cost of not meeting the inertia constraint. 'non-synchronous penalty' - [CUR] cost of not meeting the non-synchronous constraint. 'capacity margin penalty' - [CUR] cost of not meeting the capacity margin constraint. 'upward reserve penalty' - [CUR] cost of not meeting the upward reserve constraint. 'downward reserve penalty' - [CUR] cost of not meeting the downward reserve constraint.",
332
+ null
333
+ ],
334
+ [
335
+ "model",
336
+ "cost_discounted_solve",
337
+ null,
338
+ null,
339
+ "Costs for the solve considering discounting and years presented (scaled to all years presented). The costs are divided into the following categories: 'unit investment/retirement' - [CUR] cost of investing in unit capacity or benefits from salvaging unit capacity. 'connection investment/retirement' - [CUR] cost of investing in connection capacity or benefits from salvaging connection capacity. 'storage investment/retirement' - [CUR] cost of investing in storage capacity or benefits from salvaging storage capacity. 'commodity' - [CUR] cost of unit using commodity inputs or benefit of selling commodities (negative value). 'CO2' - [CUR] cost of CO2 emissions caused by unit using commodities with CO2 content. 'variable cost' - [CUR] other variable operation and maintenance costs. 'starts' - [CUR] start up costs. 'upward penalty' - [CUR] cost of involuntary demand reduction. 'downward penalty' - [CUR] cost of involuntary demand increase- 'inertia penalty' - [CUR] cost of not meeting the inertia constraint. 'non-synchronous penalty' - [CUR] cost of not meeting the non-synchronous constraint. 'capacity margin penalty' - [CUR] cost of not meeting the capacity margin constraint. 'upward reserve penalty' - [CUR] cost of not meeting the upward reserve constraint. 'downward reserve penalty' - [CUR] cost of not meeting the downward reserve constraint.",
340
+ null
341
+ ],
342
+ [
343
+ "model",
344
+ "cost_discounted_total",
345
+ null,
346
+ null,
347
+ "Total costs for all the solves considering discounting and years presented (scaled to all years presented). The costs are divided into the following categories: 'unit investment/retirement' - [CUR] cost of investing in unit capacity or benefits from salvaging unit capacity. 'connection investment/retirement' - [CUR] cost of investing in connection capacity or benefits from salvaging connection capacity. 'storage investment/retirement' - [CUR] cost of investing in storage capacity or benefits from salvaging storage capacity. 'commodity' - [CUR] cost of unit using commodity inputs or benefit of selling commodities (negative value). 'CO2' - [CUR] cost of CO2 emissions caused by unit using commodities with CO2 content. 'variable cost' - [CUR] other variable operation and maintenance costs. 'starts' - [CUR] start up costs. 'upward penalty' - [CUR] cost of involuntary demand reduction. 'downward penalty' - [CUR] cost of involuntary demand increase- 'inertia penalty' - [CUR] cost of not meeting the inertia constraint. 'non-synchronous penalty' - [CUR] cost of not meeting the non-synchronous constraint. 'capacity margin penalty' - [CUR] cost of not meeting the capacity margin constraint. 'upward reserve penalty' - [CUR] cost of not meeting the upward reserve constraint. 'downward reserve penalty' - [CUR] cost of not meeting the downward reserve constraint.",
348
+ null
349
+ ],
350
+ [
351
+ "model",
352
+ "cost_t",
353
+ null,
354
+ null,
355
+ "Costs for each timestep divided into following categories: 'commodity' - [CUR] cost of unit using commodity inputs or benefit of selling commodities (negative value). 'CO2' - [CUR] cost of CO2 emissions caused by unit using commodities with CO2 content. 'variable cost' - [CUR] other variable operation and maintenance costs. 'starts' - [CUR] start up costs. 'upward penalty' - [CUR] cost of involuntary demand reduction. 'downward penalty' - [CUR] cost of involuntary demand increase- 'inertia penalty' - [CUR] cost of not meeting the inertia constraint. 'non-synchronous penalty' - [CUR] cost of not meeting the non-synchronous constraint. 'upward reserve penalty' - [CUR] cost of not meeting the upward reserve constraint. 'downward reserve penalty' - [CUR] cost of not meeting the downward reserve constraint.",
356
+ null
357
+ ],
358
+ [
359
+ "model",
360
+ "investments discount factor",
361
+ null,
362
+ null,
363
+ "",
364
+ null
365
+ ],
366
+ [
367
+ "model",
368
+ "operations discount factor",
369
+ null,
370
+ null,
371
+ "",
372
+ null
373
+ ],
374
+ [
375
+ "node",
376
+ "balance",
377
+ null,
378
+ null,
379
+ "cumulative inputs (positive) and outputs (negative) to the node from all the possible sources (from_units, from_connection, to_units, to_connections, state change over the period, self discharge during the period, upward slack for involuntary demand reduction and downward slack for involuntary demand increase).",
380
+ null
381
+ ],
382
+ [
383
+ "node",
384
+ "balance_t",
385
+ null,
386
+ null,
387
+ "timestep inputs (positive) and outputs (negative) to the node from all the possible sources (from_units, from_connection, to_units, to_connections, state change over the period, self discharge during the period, upward slack for involuntary demand reduction and downward slack for involuntary demand increase)",
388
+ null
389
+ ],
390
+ [
391
+ "node",
392
+ "capacity",
393
+ null,
394
+ null,
395
+ "'existing' - capacity that was assumed to exist in the beginning of the solve. 'invested' - capacity the model decided to invest for the given period. 'retired' - capacity the model decided to retire in the beginning of the given period. 'total' - sum of existing, invested and retired capacities.",
396
+ null
397
+ ],
398
+ [
399
+ "node",
400
+ "cost_annualized",
401
+ null,
402
+ null,
403
+ "per-entity annualized cost broken down by category (commodity cost, commodity sales, co2, other operational, starts, investment / retirement, fixed cost pre-existing / invested / reduction of divestments and, for nodes, upward / downward slack penalty). Fuel / commodity cost is attributed to the consuming process and CO2 cost is summed over every priced group the process touches. Summing a category over all entities reproduces the system-wide cost_annualized.",
404
+ null
405
+ ],
406
+ [
407
+ "node",
408
+ "cost_discounted",
409
+ null,
410
+ null,
411
+ "per-entity net present (discounted) cost over the horizon, same category break-down as cost_annualized. Summing a category over all entities reproduces the system-wide cost_discounted_total.",
412
+ null
413
+ ],
414
+ [
415
+ "node",
416
+ "invest_marginal",
417
+ null,
418
+ null,
419
+ "marginal cost to invest in one more kWh of storage capacity (zero value means that the model has invested in optimal amount; negative value means that if the model would be able to invest more, it could reduce total cost by the stated amount per kWh; positive value means the cost is higher than the benefit by the stated amount per kWh).",
420
+ null
421
+ ],
422
+ [
423
+ "node",
424
+ "price_t",
425
+ null,
426
+ null,
427
+ "each node that maintains an energy balance provides a price time series based on the marginal value of the balance constraint.",
428
+ null
429
+ ],
430
+ [
431
+ "node",
432
+ "ramp_t",
433
+ null,
434
+ null,
435
+ "Includes seven parameters that form the ramp room envelope (how much there is additional room to ramp in a give node). 'ramp' - [MW] the actual ramp in the node from previous timestep to this timestep.\n'units_up' - [MW] additional room for upward ramps from non-VRE units connected to the node. 'VRE_up' - [MW] adds upward ramp room from VRE units on top of the ramp room from non-VRE units. 'connections_up' - [MW] adds upward ramp room from connections on top of the previous ramp rooms (does not consider whether the connected node has ramp room, but is simply the available capacity in the connection). 'units_down' - [MW] additional room for downward ramps from non-VRE units connected to the node. 'VRE_down' - [MW] adds downward ramp room from VRE units on top of the ramp room from non-VRE units. 'connections_down' - [MW] adds downward ramp room from connections on top of the previous ramp rooms (does not consider whether the connected node has ramp room, but is simply the available capacity in the connection).",
436
+ null
437
+ ],
438
+ [
439
+ "node",
440
+ "state_t",
441
+ null,
442
+ null,
443
+ "storage state of the node in each timestep.",
444
+ null
445
+ ],
446
+ [
447
+ "unit",
448
+ "CO2_annualized",
449
+ null,
450
+ null,
451
+ "how many tonnes of CO2 the unit has generated (by using commodity with CO2 content) or removed.",
452
+ null
453
+ ],
454
+ [
455
+ "unit",
456
+ "capacity",
457
+ null,
458
+ null,
459
+ "'existing' - capacity that was assumed to exist in the beginning of the solve. 'invested' - capacity the model decided to invest for the given period. 'retired' - capacity the model decided to retire in the beginning of the given period. 'total' - sum of existing, invested and retired capacities.",
460
+ null
461
+ ],
462
+ [
463
+ "unit",
464
+ "cost_annualized",
465
+ null,
466
+ null,
467
+ "per-entity annualized cost broken down by category (commodity cost, commodity sales, co2, other operational, starts, investment / retirement, fixed cost pre-existing / invested / reduction of divestments and, for nodes, upward / downward slack penalty). Fuel / commodity cost is attributed to the consuming process and CO2 cost is summed over every priced group the process touches. Summing a category over all entities reproduces the system-wide cost_annualized.",
468
+ null
469
+ ],
470
+ [
471
+ "unit",
472
+ "cost_discounted",
473
+ null,
474
+ null,
475
+ "per-entity net present (discounted) cost over the horizon, same category break-down as cost_annualized. Summing a category over all entities reproduces the system-wide cost_discounted_total.",
476
+ null
477
+ ],
478
+ [
479
+ "unit",
480
+ "invest_marginal",
481
+ null,
482
+ null,
483
+ "marginal cost to invest in one more kW of capacity (zero value means that the model has invested in optimal amount; negative value means that if the model would be able to invest more, it could reduce total cost by the stated amount per kW; positive value means the cost is higher than the benefit by the stated amount per kW).",
484
+ null
485
+ ],
486
+ [
487
+ "unit",
488
+ "online_average",
489
+ null,
490
+ null,
491
+ "average online status of the unit (average number of units online during the period).",
492
+ null
493
+ ],
494
+ [
495
+ "unit",
496
+ "online_t",
497
+ null,
498
+ null,
499
+ "online status of the unit (number of units online in each timestep).",
500
+ null
501
+ ],
502
+ [
503
+ "unit",
504
+ "startup_cumulative",
505
+ null,
506
+ null,
507
+ "cumulative number of unit startups during the period.",
508
+ null
509
+ ],
510
+ [
511
+ "unit__node",
512
+ "cf",
513
+ null,
514
+ null,
515
+ " [per unit] average capacity factor of the flow, i.e. the utilization rate of the flow from/to the unit. Average of flow [MWh/h] divided by capacity [MW] of the input or output to the unit.",
516
+ null
517
+ ],
518
+ [
519
+ "unit__node",
520
+ "curtailment_share",
521
+ null,
522
+ null,
523
+ "Share of curtailed production from potential production for periods",
524
+ null
525
+ ],
526
+ [
527
+ "unit__node",
528
+ "curtailment_t",
529
+ null,
530
+ null,
531
+ "curtailed flow to the node",
532
+ null
533
+ ],
534
+ [
535
+ "unit__node",
536
+ "flow_annualized",
537
+ null,
538
+ null,
539
+ "cumulative flow from the node (if node is input) or to the node (if node is output).",
540
+ null
541
+ ],
542
+ [
543
+ "unit__node",
544
+ "flow_t",
545
+ null,
546
+ null,
547
+ "flow from the node (if node is input) or to the node (if node is output).",
548
+ null
549
+ ],
550
+ [
551
+ "unit__node",
552
+ "ramp_t",
553
+ null,
554
+ null,
555
+ "shows ramping of particular input or output flow between a unit and a node for each time step.",
556
+ null
557
+ ],
558
+ [
559
+ "unit__reserve__upDown__node",
560
+ "reservation_average",
561
+ null,
562
+ null,
563
+ "how much upward or downward reserve particular unit was providing to a particular node in average during the period.",
564
+ null
565
+ ],
566
+ [
567
+ "unit__reserve__upDown__node",
568
+ "reservation_t",
569
+ null,
570
+ null,
571
+ "how much upward or downward reserve particular unit was providing to a particular node in given timestep.",
572
+ null
573
+ ]
574
+ ],
575
+ "alternatives": [
576
+ [
577
+ "Base",
578
+ "Base alternative"
579
+ ]
580
+ ]
581
+ }