openTEPES 4.18.4__py3-none-any.whl → 4.18.5__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 (70) hide show
  1. openTEPES/9n_PTDF/oT_Data_Demand_9n_PTDF.csv +8737 -0
  2. openTEPES/9n_PTDF/oT_Data_Duration_9n_PTDF.csv +8737 -0
  3. openTEPES/9n_PTDF/oT_Data_Emission_9n_PTDF.csv +2 -0
  4. openTEPES/9n_PTDF/oT_Data_EnergyInflows_9n_PTDF.csv +8737 -0
  5. openTEPES/9n_PTDF/oT_Data_EnergyOutflows_9n_PTDF.csv +8737 -0
  6. openTEPES/9n_PTDF/oT_Data_Generation_9n_PTDF.csv +17 -0
  7. openTEPES/9n_PTDF/oT_Data_Inertia_9n_PTDF.csv +8737 -0
  8. openTEPES/9n_PTDF/oT_Data_Network_9n_PTDF.csv +14 -0
  9. openTEPES/9n_PTDF/oT_Data_NodeLocation_9n_PTDF.csv +10 -0
  10. openTEPES/9n_PTDF/oT_Data_OperatingReserveDown_9n_PTDF.csv +8737 -0
  11. openTEPES/9n_PTDF/oT_Data_OperatingReserveUp_9n_PTDF.csv +8737 -0
  12. openTEPES/9n_PTDF/oT_Data_Option_9n_PTDF.csv +2 -0
  13. openTEPES/9n_PTDF/oT_Data_Parameter_9n_PTDF.csv +2 -0
  14. openTEPES/9n_PTDF/oT_Data_Period_9n_PTDF.csv +2 -0
  15. openTEPES/9n_PTDF/oT_Data_RESEnergy_9n_PTDF.csv +2 -0
  16. openTEPES/9n_PTDF/oT_Data_ReserveMargin_9n_PTDF.csv +2 -0
  17. openTEPES/9n_PTDF/oT_Data_Scenario_9n_PTDF.csv +2 -0
  18. openTEPES/9n_PTDF/oT_Data_Stage_9n_PTDF.csv +2 -0
  19. openTEPES/9n_PTDF/oT_Data_VariableEmissionCost_9n_PTDF.csv +8737 -0
  20. openTEPES/9n_PTDF/oT_Data_VariableFuelCost_9n_PTDF.csv +8737 -0
  21. openTEPES/9n_PTDF/oT_Data_VariableMaxConsumption_9n_PTDF.csv +8737 -0
  22. openTEPES/9n_PTDF/oT_Data_VariableMaxEnergy_9n_PTDF.csv +8737 -0
  23. openTEPES/9n_PTDF/oT_Data_VariableMaxGeneration_9n_PTDF.csv +8737 -0
  24. openTEPES/9n_PTDF/oT_Data_VariableMaxStorage_9n_PTDF.csv +8737 -0
  25. openTEPES/9n_PTDF/oT_Data_VariableMinConsumption_9n_PTDF.csv +8737 -0
  26. openTEPES/9n_PTDF/oT_Data_VariableMinEnergy_9n_PTDF.csv +8737 -0
  27. openTEPES/9n_PTDF/oT_Data_VariableMinGeneration_9n_PTDF.csv +8737 -0
  28. openTEPES/9n_PTDF/oT_Data_VariableMinStorage_9n_PTDF.csv +8737 -0
  29. openTEPES/9n_PTDF/oT_Data_VariablePTDF_9n_PTDF.csv +8740 -0
  30. openTEPES/9n_PTDF/oT_Data_VariableTTCBck_9n_PTDF.csv +8739 -0
  31. openTEPES/9n_PTDF/oT_Data_VariableTTCFrw_9n_PTDF.csv +8739 -0
  32. openTEPES/9n_PTDF/oT_Dict_AreaToRegion_9n_PTDF.csv +2 -0
  33. openTEPES/9n_PTDF/oT_Dict_Area_9n_PTDF.csv +2 -0
  34. openTEPES/9n_PTDF/oT_Dict_Circuit_9n_PTDF.csv +3 -0
  35. openTEPES/9n_PTDF/oT_Dict_Generation_9n_PTDF.csv +17 -0
  36. openTEPES/9n_PTDF/oT_Dict_Line_9n_PTDF.csv +3 -0
  37. openTEPES/9n_PTDF/oT_Dict_LoadLevel_9n_PTDF.csv +8737 -0
  38. openTEPES/9n_PTDF/oT_Dict_NodeToZone_9n_PTDF.csv +10 -0
  39. openTEPES/9n_PTDF/oT_Dict_Node_9n_PTDF.csv +10 -0
  40. openTEPES/9n_PTDF/oT_Dict_Period_9n_PTDF.csv +2 -0
  41. openTEPES/9n_PTDF/oT_Dict_Region_9n_PTDF.csv +31 -0
  42. openTEPES/9n_PTDF/oT_Dict_Scenario_9n_PTDF.csv +2 -0
  43. openTEPES/9n_PTDF/oT_Dict_Stage_9n_PTDF.csv +2 -0
  44. openTEPES/9n_PTDF/oT_Dict_Storage_9n_PTDF.csv +3 -0
  45. openTEPES/9n_PTDF/oT_Dict_Technology_9n_PTDF.csv +7 -0
  46. openTEPES/9n_PTDF/oT_Dict_ZoneToArea_9n_PTDF.csv +10 -0
  47. openTEPES/9n_PTDF/oT_Dict_Zone_9n_PTDF.csv +10 -0
  48. openTEPES/RTS-GMLC_6y/oT_Dict_AreaToRegion_RTS-GMLC_6y.csv +4 -4
  49. openTEPES/RTS-GMLC_6y/oT_Dict_Area_RTS-GMLC_6y.csv +4 -4
  50. openTEPES/RTS-GMLC_6y/oT_Dict_Circuit_RTS-GMLC_6y.csv +5 -5
  51. openTEPES/RTS-GMLC_6y/oT_Dict_Line_RTS-GMLC_6y.csv +3 -3
  52. openTEPES/RTS-GMLC_6y/oT_Dict_NodeToZone_RTS-GMLC_6y.csv +74 -74
  53. openTEPES/RTS-GMLC_6y/oT_Dict_Region_RTS-GMLC_6y.csv +2 -2
  54. openTEPES/RTS-GMLC_6y/oT_Dict_Scenario_RTS-GMLC_6y.csv +2 -2
  55. openTEPES/RTS-GMLC_6y/oT_Dict_Storage_RTS-GMLC_6y.csv +3 -3
  56. openTEPES/RTS-GMLC_6y/oT_Dict_Technology_RTS-GMLC_6y.csv +10 -10
  57. openTEPES/RTS-GMLC_6y/oT_Dict_ZoneToArea_RTS-GMLC_6y.csv +22 -22
  58. openTEPES/RTS-GMLC_6y/oT_Dict_Zone_RTS-GMLC_6y.csv +22 -22
  59. openTEPES/__init__.py +1 -1
  60. openTEPES/openTEPES.py +21 -15
  61. openTEPES/openTEPES_InputData.py +383 -214
  62. openTEPES/openTEPES_Main.py +2 -2
  63. openTEPES/openTEPES_ModelFormulation.py +413 -156
  64. openTEPES/openTEPES_OutputResults.py +228 -166
  65. openTEPES/openTEPES_ProblemSolving.py +30 -28
  66. {opentepes-4.18.4.dist-info → openTEPES-4.18.5.dist-info}/METADATA +15 -16
  67. {opentepes-4.18.4.dist-info → openTEPES-4.18.5.dist-info}/RECORD +70 -23
  68. {opentepes-4.18.4.dist-info → openTEPES-4.18.5.dist-info}/WHEEL +1 -1
  69. {opentepes-4.18.4.dist-info → openTEPES-4.18.5.dist-info}/LICENSE +0 -0
  70. {opentepes-4.18.4.dist-info → openTEPES-4.18.5.dist-info}/entry_points.txt +0 -0
@@ -1,5 +1,5 @@
1
1
  """
2
- Open Generation, Storage, and Transmission Operation and Expansion Planning Model with RES and ESS (openTEPES) - April 03, 2025
2
+ Open Generation, Storage, and Transmission Operation and Expansion Planning Model with RES and ESS (openTEPES) - May 05, 2025
3
3
  """
4
4
 
5
5
  import time
@@ -20,10 +20,10 @@ def ProblemSolving(DirName, CaseName, SolverName, OptModel, mTEPES, pIndLogConso
20
20
  #%% solving the problem
21
21
  Solver = SolverFactory(SolverName) # select solver
22
22
  if SolverName == 'gurobi':
23
- FileName = _path+f'/openTEPES_gurobi_{CaseName}_{p}_{sc}_{st}.log'
23
+ FileName = f'{_path}/openTEPES_gurobi_{CaseName}_{p}_{sc}_{st}.log'
24
24
  if os.path.exists(FileName):
25
25
  os.remove(FileName)
26
- Solver.options['LogFile' ] = _path+f'/openTEPES_gurobi_{CaseName}_{p}_{sc}_{st}.log'
26
+ Solver.options['LogFile' ] = f'{_path}/openTEPES_gurobi_{CaseName}_{p}_{sc}_{st}.log'
27
27
  # Solver.options['SolutionTarget'] = 1 # optimal solution with or without basic solutions
28
28
  Solver.options['Method' ] = 2 # barrier method
29
29
  Solver.options['Crossover' ] = -1
@@ -32,16 +32,16 @@ def ProblemSolving(DirName, CaseName, SolverName, OptModel, mTEPES, pIndLogConso
32
32
  # Solver.options['RINS' ] = 100
33
33
  # Solver.options['BarConvTol' ] = 1e-9
34
34
  # Solver.options['BarQCPConvTol' ] = 0.025
35
- # Solver.options['IISFile' ] = _path+f'/openTEPES_gurobi_'+CaseName+'.ilp' # should be uncommented to show results of IIS
35
+ # Solver.options['IISFile' ] = f'{_path}/openTEPES_gurobi_'+CaseName+'.ilp' # should be uncommented to show results of IIS
36
36
  Solver.options['MIPGap' ] = 0.01
37
37
  Solver.options['Threads' ] = int((psutil.cpu_count(logical=True) + psutil.cpu_count(logical=False))/2)
38
38
  Solver.options['TimeLimit' ] = 36000
39
39
  Solver.options['IterationLimit' ] = 36000000
40
40
  if SolverName == 'cplex':
41
- FileName = _path+f'/openTEPES_cplex_{CaseName}_{p}_{sc}_{st}.log'
41
+ FileName = f'{_path}/openTEPES_cplex_{CaseName}_{p}_{sc}_{st}.log'
42
42
  if os.path.exists(FileName):
43
43
  os.remove(FileName)
44
- # Solver.options['LogFile' ] = _path+f'/openTEPES_cplex_{CaseName}_{p}_{sc}_{st}.log'
44
+ # Solver.options['LogFile' ] = f'{_path}/openTEPES_cplex_{CaseName}_{p}_{sc}_{st}.log'
45
45
  Solver.options['LPMethod' ] = 4 # barrier method
46
46
  # Solver.options['BarCrossAlg' ] = 0
47
47
  # Solver.options['NumericalEmphasis'] = 1
@@ -52,10 +52,10 @@ def ProblemSolving(DirName, CaseName, SolverName, OptModel, mTEPES, pIndLogConso
52
52
  Solver.options['TimeLimit' ] = 36000
53
53
  # Solver.options['ItLim' ] = 36000000
54
54
  if SolverName == 'appsi_highs':
55
- FileName = _path+f'/openTEPES_highs_{CaseName}_{p}_{sc}_{st}.log'
55
+ FileName = f'{_path}/openTEPES_highs_{CaseName}_{p}_{sc}_{st}.log'
56
56
  if os.path.exists(FileName):
57
57
  os.remove(FileName)
58
- Solver.options['log_file' ] = _path+f'/openTEPES_highs_{CaseName}_{p}_{sc}_{st}.log'
58
+ Solver.options['log_file' ] = f'{_path}/openTEPES_highs_{CaseName}_{p}_{sc}_{st}.log'
59
59
  Solver.options['solver' ] = 'choose'
60
60
  Solver.options['simplex_strategy' ] = 3
61
61
  Solver.options['run_crossover' ] = 'on'
@@ -65,31 +65,33 @@ def ProblemSolving(DirName, CaseName, SolverName, OptModel, mTEPES, pIndLogConso
65
65
  Solver.options['time_limit' ] = 36000
66
66
  Solver.options['simplex_iteration_limit'] = 36000000
67
67
  if SolverName == 'gams' or SolverName == 'GAMS':
68
+ FileName = f'{_path}/openTEPES_gams_{CaseName}_{p}_{sc}_{st}.log'
68
69
  solver_options = {
69
- 'file COPT / cplex.opt / ; put COPT putclose "LPMethod 4" / "EpGap 0.01" / ; GAMS_MODEL.OptFile = 1 ;'
70
+ 'file COPT / cplex.opt / ; put COPT putclose "LPMethod 4" / "EpGap 0.01" / ; GAMS_MODEL.OptFile = 1 ; '
70
71
  'option SysOut = off ;',
71
72
  'option LP = cplex ; option MIP = cplex ;',
72
73
  'option ResLim = 36000 ; option IterLim = 36000000 ;',
73
74
  'option Threads = '+str(int((psutil.cpu_count(logical=True) + psutil.cpu_count(logical=False))/2))+' ;'
74
75
  }
75
76
 
76
- idx = 0
77
+ nUnfixedVars = 0
77
78
  for var in OptModel.component_data_objects(pyo.Var, active=True, descend_into=True):
78
- if not var.is_continuous():
79
- idx += 1
80
- if idx == 0:
79
+ if not var.is_continuous() and not var.is_fixed() and var.value != None:
80
+ nUnfixedVars += 1
81
+
82
+ if nUnfixedVars == 0:
81
83
  OptModel.dual = Suffix(direction=Suffix.IMPORT_EXPORT)
82
84
  OptModel.rc = Suffix(direction=Suffix.IMPORT_EXPORT)
83
85
 
84
- if SolverName == 'gams':
85
- SolverResults = Solver.solve(OptModel, tee=True, report_timing=True, symbolic_solver_labels=False, add_options=solver_options)
86
+ if SolverName == 'gams' or SolverName == 'GAMS':
87
+ SolverResults = Solver.solve(OptModel, tee=True, report_timing=True, symbolic_solver_labels=False, add_options=solver_options, logfile=FileName)
86
88
  else:
87
89
  SolverResults = Solver.solve(OptModel, tee=True, report_timing=True)
88
90
 
89
91
  print('Termination condition: ', SolverResults.solver.termination_condition)
90
92
  if SolverResults.solver.termination_condition == TerminationCondition.infeasible or SolverResults.solver.termination_condition == TerminationCondition.maxTimeLimit or SolverResults.solver.termination_condition == TerminationCondition.infeasible.maxIterations:
91
93
  log_infeasible_constraints(OptModel, log_expression=True, log_variables=True)
92
- logging.basicConfig(filename=_path+f'/openTEPES_infeasibilities_{CaseName}_{p}_{sc}_{st}.log', level=logging.INFO)
94
+ logging.basicConfig(filename=f'{_path}/openTEPES_infeasibilities_{CaseName}_{p}_{sc}_{st}.log', level=logging.INFO)
93
95
  raise ValueError('Problem infeasible')
94
96
  SolverResults.write() # summary of the solver results
95
97
 
@@ -98,17 +100,17 @@ def ProblemSolving(DirName, CaseName, SolverName, OptModel, mTEPES, pIndLogConso
98
100
  # binary operation decisions are fixed to their optimal values
99
101
  # if NoRepetition == 1, all variables are fixed
100
102
  # if NoRepetition == 0, only the variables of the current period and scenario are fixed
101
- idx = 0
103
+ nUnfixedVars = 0
102
104
  if mTEPES.NoRepetition == 1:
103
105
  for var in OptModel.component_data_objects(pyo.Var, active=True, descend_into=True):
104
- if not var.is_continuous() and not var.is_fixed():
106
+ if not var.is_continuous() and not var.is_fixed() and var.value != None:
105
107
  var.fixed = True # fix the current value
106
- idx += 1
108
+ nUnfixedVars += 1
107
109
  else:
108
110
  for var in OptModel.component_data_objects(pyo.Var, active=True, descend_into=True):
109
- if not var.is_continuous() and not var.is_fixed() and var.index()[0] == p and var.index()[1] == sc:
111
+ if not var.is_continuous() and not var.is_fixed() and var.value != None and var.index()[0] == p and var.index()[1] == sc:
110
112
  var.fixed = True # fix the current value
111
- idx += 1
113
+ nUnfixedVars += 1
112
114
 
113
115
  # continuous investment decisions are fixed to their optimal values
114
116
  for eb in mTEPES.eb:
@@ -133,7 +135,7 @@ def ProblemSolving(DirName, CaseName, SolverName, OptModel, mTEPES, pIndLogConso
133
135
  if (p,ni,nf,cc) in mTEPES.phc:
134
136
  OptModel.vHeatPipeInvest[p,ni,nf,cc].fix(OptModel.vHeatPipeInvest [p,ni,nf,cc]())
135
137
 
136
- if idx > 0:
138
+ if nUnfixedVars > 0:
137
139
  OptModel.dual = Suffix(direction=Suffix.IMPORT_EXPORT)
138
140
  OptModel.rc = Suffix(direction=Suffix.IMPORT_EXPORT)
139
141
  SolverResults = Solver.solve(OptModel, tee=True, report_timing=True)
@@ -170,16 +172,16 @@ def ProblemSolving(DirName, CaseName, SolverName, OptModel, mTEPES, pIndLogConso
170
172
  print (' Total generation investment cost [MEUR] ', sum(mTEPES.pDiscountedWeight[pp] * mTEPES.pGenInvestCost [eb ] * OptModel.vGenerationInvest [pp,eb ]() for eb in mTEPES.eb if (pp,eb) in mTEPES.peb) +
171
173
  sum(mTEPES.pDiscountedWeight[pp] * mTEPES.pGenInvestCost [bc ] * OptModel.vGenerationInvestHeat[pp,bc ]() for bc in mTEPES.bc if (pp,bc) in mTEPES.pbc))
172
174
  print (' Total generation retirement cost [MEUR] ', sum(mTEPES.pDiscountedWeight[pp] * mTEPES.pGenRetireCost [gd ] * OptModel.vGenerationRetire [pp,gd ]() for gd in mTEPES.gd if (pp,gd) in mTEPES.pgd))
173
- if mTEPES.pIndHydroTopology == 1 and len(mTEPES.rn):
175
+ if mTEPES.pIndHydroTopology == 1 and mTEPES.rn:
174
176
  print(' Total reservoir investment cost [MEUR] ', sum(mTEPES.pDiscountedWeight[pp] * mTEPES.pRsrInvestCost [rc ] * OptModel.vReservoirInvest [pp,rc ]() for rc in mTEPES.rn if (pp,rc) in mTEPES.prc))
175
177
  else:
176
178
  print(' Total reservoir investment cost [MEUR] ', 0.0)
177
179
  print (' Total network investment cost [MEUR] ', sum(mTEPES.pDiscountedWeight[pp] * mTEPES.pNetFixedCost [ni,nf,cc] * OptModel.vNetworkInvest [pp,ni,nf,cc]() for ni,nf,cc in mTEPES.lc if (pp,ni,nf,cc) in mTEPES.plc))
178
- if mTEPES.pIndHydrogen == 1 and len(mTEPES.pc):
180
+ if mTEPES.pIndHydrogen == 1 and mTEPES.pc:
179
181
  print(' Total H2 pipe investment cost [MEUR] ', sum(mTEPES.pDiscountedWeight[pp] * mTEPES.pH2PipeFixedCost [ni,nf,cc] * OptModel.vH2PipeInvest [pp,ni,nf,cc]() for ni,nf,cc in mTEPES.pc if (pp,ni,nf,cc) in mTEPES.ppc))
180
182
  else:
181
183
  print(' Total H2 pipe investment cost [MEUR] ', 0.0)
182
- if mTEPES.pIndHeat == 1 and len(mTEPES.hc):
184
+ if mTEPES.pIndHeat == 1 and mTEPES.hc:
183
185
  print(' Total heat pipe investment cost [MEUR] ', sum(mTEPES.pDiscountedWeight[pp] * mTEPES.pHeatPipeFixedCost[ni,nf,cc] * OptModel.vHeatPipeInvest [pp,ni,nf,cc]() for ni,nf,cc in mTEPES.hc if (pp,ni,nf,cc) in mTEPES.phc))
184
186
  else:
185
187
  print(' Total heat pipe investment cost [MEUR] ', 0.0)
@@ -192,16 +194,16 @@ def ProblemSolving(DirName, CaseName, SolverName, OptModel, mTEPES, pIndLogConso
192
194
  print (' Total generation investment cost [MEUR] ', sum(mTEPES.pDiscountedWeight[p] * mTEPES.pGenInvestCost [eb ] * OptModel.vGenerationInvest [p,eb ]() for eb in mTEPES.eb if (p,eb) in mTEPES.peb) +
193
195
  sum(mTEPES.pDiscountedWeight[p] * mTEPES.pGenInvestCost [bc ] * OptModel.vGenerationInvestHeat[p,bc ]() for bc in mTEPES.bc if (p,bc) in mTEPES.pbc))
194
196
  print (' Total generation retirement cost [MEUR] ', sum(mTEPES.pDiscountedWeight[p] * mTEPES.pGenRetireCost [gd ] * OptModel.vGenerationRetire [p,gd ]() for gd in mTEPES.gd if (p,gd) in mTEPES.pgd))
195
- if mTEPES.pIndHydroTopology == 1 and len(mTEPES.rn):
197
+ if mTEPES.pIndHydroTopology == 1 and mTEPES.rn:
196
198
  print (' Total reservoir investment cost [MEUR] ', sum(mTEPES.pDiscountedWeight[p] * mTEPES.pRsrInvestCost [rc ] * OptModel.vReservoirInvest [p,rc ]() for rc in mTEPES.rn if (p,rc) in mTEPES.prc))
197
199
  else:
198
200
  print (' Total reservoir investment cost [MEUR] ', 0.0)
199
201
  print (' Total network investment cost [MEUR] ', sum(mTEPES.pDiscountedWeight[p] * mTEPES.pNetFixedCost [ni,nf,cc] * OptModel.vNetworkInvest [p,ni,nf,cc ]() for ni,nf,cc in mTEPES.lc if (p,ni,nf,cc) in mTEPES.plc))
200
- if mTEPES.pIndHydrogen == 1 and len(mTEPES.pc):
202
+ if mTEPES.pIndHydrogen == 1 and mTEPES.pc:
201
203
  print (' Total H2 pipe investment cost [MEUR] ', sum(mTEPES.pDiscountedWeight[p] * mTEPES.pH2PipeFixedCost [ni,nf,cc] * OptModel.vH2PipeInvest [p,ni,nf,cc ]() for ni,nf,cc in mTEPES.pc if (p,ni,nf,cc) in mTEPES.ppc))
202
204
  else:
203
205
  print (' Total H2 pipe investment cost [MEUR] ', 0.0)
204
- if mTEPES.pIndHeat == 1 and len(mTEPES.hc):
206
+ if mTEPES.pIndHeat == 1 and mTEPES.hc:
205
207
  print (' Total heat pipe investment cost [MEUR] ', sum(mTEPES.pDiscountedWeight[p] * mTEPES.pHeatPipeFixedCost[ni,nf,cc] * OptModel.vHeatPipeInvest [p,ni,nf,cc ]() for ni,nf,cc in mTEPES.hc if (p,ni,nf,cc) in mTEPES.phc))
206
208
  else:
207
209
  print (' Total heat pipe investment cost [MEUR] ', 0.0)
@@ -1,8 +1,8 @@
1
- Metadata-Version: 2.3
1
+ Metadata-Version: 2.1
2
2
  Name: openTEPES
3
- Version: 4.18.4
3
+ Version: 4.18.5
4
4
  Summary: Open Generation, Storage, and Transmission Operation and Expansion Planning Model with RES and ESS (openTEPES)
5
- Home-page: https://pascua.iit.comillas.edu/aramos/openTEPES/index.html
5
+ Home-page: https://opentepes.readthedocs.io/en/latest/index.html
6
6
  Author: IIT-EnergySystemModels
7
7
  Author-email: andres.ramos@comillas.edu
8
8
  Requires-Python: >=3.11
@@ -25,8 +25,8 @@ Requires-Dist: networkx>=3.3
25
25
  Requires-Dist: dill>=0.3.8
26
26
 
27
27
 
28
- .. image:: https://pascua.iit.comillas.edu/aramos/openTEPES.png
29
- :target: https://pascua.iit.comillas.edu/aramos/openTEPES/index.html
28
+ .. image:: doc/img/openTEPES.png
29
+ :target: https://opentepes.readthedocs.io/en/latest/index.html
30
30
  :alt: logo
31
31
  :align: center
32
32
 
@@ -66,8 +66,10 @@ The **openTEPES** model has been developed at the `Instituto de Investigación T
66
66
  The **openTEPES** model presents a decision support system for defining the **integrated generation, storage, and transmission resource planning** (IRP, GEP+SEP+TEP) -**Integrated Resource Planning** (IRP)- of a **large-scale electric system** at a tactical level (i.e., time horizons of 5-30 years),
67
67
  defined as a set of **generation, storage, and (electricity, hydrogen, and heat) networks dynamic investment decisions for multiple future years**.
68
68
 
69
+ The `openTEPES complete documentation <https://opentepes.readthedocs.io/en/latest/index.html>`_ presents the input data, output results, mathematical formulation, download and installation, and the research projects where the model has been used.
70
+
69
71
  It is integrated into the `open energy system modelling platform <https://openenergymodels.net/>`_, helping model Europe's energy system and in the list of `energy models published under open source licenses <https://wiki.openmod-initiative.org/wiki/Open_Models>`_.
70
- It is also part of the Africa `open energy system modelling toolbox <https://africaenergymodels.net/>`_, which is a suite of open and linked state-of-the-art open-source energy system models for Africa.
72
+ It is also part of the `Africa's open energy system modelling toolbox <https://africaenergymodels.net/models/>`_, which is a suite of open and linked state-of-the-art open-source energy system models for Africa, and of the `African Energy modelling Network Open-Source Tools <https://africanenergymodellingnetwork.net/en/focus-area-3-open-source-tools-and-data>`_.
71
73
 
72
74
  Scripts are provided to exchange information with Integrated Assessment Models (IAM) using their `nomenclature and data formats <https://nomenclature-iamc.readthedocs.io/en/stable/>`_.
73
75
 
@@ -79,6 +81,12 @@ Reference
79
81
 
80
82
  **openTEPES**: `summary presentation <https://pascua.iit.comillas.edu/aramos/openTEPES.pdf>`_, `présentation (French) <https://pascua.iit.comillas.edu/aramos/openTEPES_fr.pdf>`_, and `installation <https://pascua.iit.comillas.edu/aramos/openTEPES_installation.pdf>`_
81
83
 
84
+ Authors
85
+ ########
86
+ **Andrés Ramos, Erik Alvarez, Francisco Labora, Sara Lumbreras**. Universidad Pontificia Comillas, Instituto de Investigación Tecnológica, Alberto Aguilera 23, 28015 Madrid, Spain
87
+
88
+ Contact: andres.ramos@comillas.edu
89
+
82
90
  Description
83
91
  ############
84
92
  **openTEPES** determines the investment plans of new facilities (generators, ESS, and lines)
@@ -149,7 +157,7 @@ Miniconda (recommended)
149
157
  2. The `HiGHS <https://ergo-code.github.io/HiGHS/dev/interfaces/python/#python-getting-started>`_ is our recommendation if you want a free and open-source solver.
150
158
  3. Install openTEPES via pip by ``pip install openTEPES``
151
159
 
152
- Continue at `Get Started <#get-started>`_ and see the `Tips <#tips>`_.
160
+ Continue at `Get Started <#get-started>`_.
153
161
 
154
162
 
155
163
  GitHub Repository (the hard way)
@@ -223,15 +231,6 @@ Then, the **results** should be written in the folder who is called with the cas
223
231
 
224
232
  ``openTEPES_run(<dir>, <case>, <solver>, <results>, <log>)``
225
233
 
226
- Tips
227
- ####
228
-
229
- 1. A complete documentation of the openTEPES model can be found at `<https://opentepes.readthedocs.io/en/latest/index.html>`_, which presents the mathematical formulation, input data and output results.
230
- 2. Try modifying the **TimeStep** in **oT_Data_Parameter_<case>.csv** and see their effect on results.
231
- 3. Using **0** or **1**, the optimization options can be activated or deactivated in **oT_Data_Option_<case>.csv**.
232
- 4. If you need a nice python editor, think about using `PyCharm <https://www.jetbrains.com/pycharm/>`_. It has many features including project management, etc.
233
- 5. We also suggest the use of `Gurobi <https://www.gurobi.com/academia/academic-program-and-licenses/>`_ (for Academics and Recent Graduates) as a solver to deal with MIP and LP problems instead of GLPK.
234
-
235
234
  Run the Tutorial
236
235
  ################
237
236
 
@@ -1,11 +1,11 @@
1
- openTEPES/__init__.py,sha256=oXXMiWsp1L34uIA2ezGyfpC0o9GwTguC7KFdkHwVLzc,832
1
+ openTEPES/__init__.py,sha256=0LrESaXoSN5ntta3lWySc71R8nXHjJg0CqsW2WtGuxo,832
2
2
  openTEPES/openTEPES.mapbox_token,sha256=xsXNkwGp2vzXqQy2zVkyLhhNcNWniK2BMeOFpc5SZHI,93
3
- openTEPES/openTEPES.py,sha256=QbqXyLGFGjwCVDE6LOZL-6cGQs7SfzH9W0FG5z2UfCA,27043
4
- openTEPES/openTEPES_InputData.py,sha256=7Ly3pFnLpeLHwFqpYKjTHhyJkY5eGDE57YE50xyzn1c,214376
5
- openTEPES/openTEPES_Main.py,sha256=5gyIYhWGn8HaPXtau-UXu-y4lyT99Tp8682t793D5I8,39916
6
- openTEPES/openTEPES_ModelFormulation.py,sha256=aYbscFI8qa2xyGwFqm67qSkswvtzO4fyazk9hzTqjkM,119863
7
- openTEPES/openTEPES_OutputResults.py,sha256=h6smx2UZOzZRlzjvFiQLHSmwJ9pT3g5hrG9Bb0Bfi_k,214190
8
- openTEPES/openTEPES_ProblemSolving.py,sha256=goQFqIaiUtXyMjCTbQGgUlxNK4l8NvrzdgOkSfmpTyk,15686
3
+ openTEPES/openTEPES.py,sha256=7OxyRstC3-tSDSDAIpbaC-R6DhKnPZr0Iz4DRQV6X54,27285
4
+ openTEPES/openTEPES_InputData.py,sha256=ImmkRzRwPhSjJIZbFcXw5tvquLCewKVAHvZmjCOGo6g,224488
5
+ openTEPES/openTEPES_Main.py,sha256=w3s55T1QDfMCHtCROI05gIzgXeMShZ5EW90C5XNlQwE,39914
6
+ openTEPES/openTEPES_ModelFormulation.py,sha256=r5rT_a7MGeofXQ4D_S9Hz8gUUCaGTAmWUnMbOD5Q4bI,136424
7
+ openTEPES/openTEPES_OutputResults.py,sha256=LJLl-GlE184Jde6FNCADK1ZSfF8V077mEai20JoC2MY,221372
8
+ openTEPES/openTEPES_ProblemSolving.py,sha256=WATzENUIGOlvbjAH44F6AEnAVgm9g91hiaWMsjCn5YI,15934
9
9
  openTEPES/openTEPES_gitinfo.py,sha256=6fA1fa-JcyusSc_HcjPiCgnV9zn-fZwdG-kK0a5Fxc8,2004
10
10
  openTEPES/.idea/.name,sha256=jiwfcnJ20wztcvpny4SHcqmAIWK-w5tCqN9TWf0GOkw,11
11
11
  openTEPES/.idea/misc.xml,sha256=m4-3O284ZBS8WZSQD0QWwk8YjuQYz92w6kr7NRFNips,298
@@ -102,6 +102,53 @@ openTEPES/9n7y/oT_Dict_Storage_9n7y.csv,sha256=GbyzeENaCG-Yx67tdPsZhF1qUY-OVDKQP
102
102
  openTEPES/9n7y/oT_Dict_Technology_9n7y.csv,sha256=9WQUthNC8T5Sy4rdm2XvqcUMXebxQ7jNnAai3OrfgJ0,47
103
103
  openTEPES/9n7y/oT_Dict_ZoneToArea_9n7y.csv,sha256=ub27ppJJ-NYjYX7hmL9ua6ACYzDUV9XWgTLdHulvZ2c,128
104
104
  openTEPES/9n7y/oT_Dict_Zone_9n7y.csv,sha256=-EFkGBbP6FddAAYIksLik2ktnW008aLg3ZwNPDp9s6M,69
105
+ openTEPES/9n_PTDF/oT_Data_Demand_9n_PTDF.csv,sha256=LsMcM_06kkRn1eXbA2TknF-n20ghARxBLdKVUXlHF0A,1196560
106
+ openTEPES/9n_PTDF/oT_Data_Duration_9n_PTDF.csv,sha256=MNMIViQ0Q0g3TLP9fgQUBhalqLFnprOv-HWozXW_7gE,332010
107
+ openTEPES/9n_PTDF/oT_Data_Emission_9n_PTDF.csv,sha256=rYwkA8jTZyx47BP54DfyN4443WbBelCc_X76K1bp-zU,41
108
+ openTEPES/9n_PTDF/oT_Data_EnergyInflows_9n_PTDF.csv,sha256=oEXYvy2pjKpIpi9HmPFMipdeHlKeoMv8jhyDbISQZQc,437023
109
+ openTEPES/9n_PTDF/oT_Data_EnergyOutflows_9n_PTDF.csv,sha256=OVKIL2LhUakkInIKxvL8GjE7jcGQyod3ZOxG3LDtRZM,419537
110
+ openTEPES/9n_PTDF/oT_Data_Generation_9n_PTDF.csv,sha256=0jgZt1ZD68uAnOQnTITYEdKKjWqNCSEMUwUcgVDh6jI,2564
111
+ openTEPES/9n_PTDF/oT_Data_Inertia_9n_PTDF.csv,sha256=nndR80BBM7wKH9Ej3LrSuG0U4a0eKtT8LVmm79brjIY,288321
112
+ openTEPES/9n_PTDF/oT_Data_Network_9n_PTDF.csv,sha256=zcRFVagDQ3EL9J9Q85C1muzjLuLvhk8VUbfQh0sX1aw,1213
113
+ openTEPES/9n_PTDF/oT_Data_NodeLocation_9n_PTDF.csv,sha256=eaz-9dcwWLoQUEp-oafd4jcetaQ_Grjgp0gh0oIv6k4,303
114
+ openTEPES/9n_PTDF/oT_Data_OperatingReserveDown_9n_PTDF.csv,sha256=VqBDqfaIPiD1guy1rLNAYEEZYWypabaFR4u57YNz0fw,383843
115
+ openTEPES/9n_PTDF/oT_Data_OperatingReserveUp_9n_PTDF.csv,sha256=VqBDqfaIPiD1guy1rLNAYEEZYWypabaFR4u57YNz0fw,383843
116
+ openTEPES/9n_PTDF/oT_Data_Option_9n_PTDF.csv,sha256=2onSiuxVxB0WXX45pBWpfb6uoGY1o_FuAYKrp7w3cpQ,230
117
+ openTEPES/9n_PTDF/oT_Data_Parameter_9n_PTDF.csv,sha256=Gn-pzaThuI_w9USJwZ-AGDy5VnXMuVnmiac3W1sm2ds,220
118
+ openTEPES/9n_PTDF/oT_Data_Period_9n_PTDF.csv,sha256=NFbJq1PV7fhKMp7ocoy_hy42mKuVabBdPqe9Pt2IVQ4,26
119
+ openTEPES/9n_PTDF/oT_Data_RESEnergy_9n_PTDF.csv,sha256=zOj39jlgP1Pj6oIWDY8Kr-ysvvKUhkap5zCZn9s68is,40
120
+ openTEPES/9n_PTDF/oT_Data_ReserveMargin_9n_PTDF.csv,sha256=WCIVw1Yr64PzAOBRta-7h4Ri8G0kLNvdu7700sQr6Yg,46
121
+ openTEPES/9n_PTDF/oT_Data_Scenario_9n_PTDF.csv,sha256=UGeFNxqb6ysUgpVrLESkfFGy-3X9nzJoeRooynFTTQQ,45
122
+ openTEPES/9n_PTDF/oT_Data_Stage_9n_PTDF.csv,sha256=fHzcT28maF4tn7D92epcXLZqsQct_ZrmOfLGZj12B6Q,24
123
+ openTEPES/9n_PTDF/oT_Data_VariableEmissionCost_9n_PTDF.csv,sha256=OVKIL2LhUakkInIKxvL8GjE7jcGQyod3ZOxG3LDtRZM,419537
124
+ openTEPES/9n_PTDF/oT_Data_VariableFuelCost_9n_PTDF.csv,sha256=OVKIL2LhUakkInIKxvL8GjE7jcGQyod3ZOxG3LDtRZM,419537
125
+ openTEPES/9n_PTDF/oT_Data_VariableMaxConsumption_9n_PTDF.csv,sha256=OVKIL2LhUakkInIKxvL8GjE7jcGQyod3ZOxG3LDtRZM,419537
126
+ openTEPES/9n_PTDF/oT_Data_VariableMaxEnergy_9n_PTDF.csv,sha256=OVKIL2LhUakkInIKxvL8GjE7jcGQyod3ZOxG3LDtRZM,419537
127
+ openTEPES/9n_PTDF/oT_Data_VariableMaxGeneration_9n_PTDF.csv,sha256=2unfNkFYcQYNzI-M8-PoSFVI0aVVJmUO-pGKVEkRgX4,565976
128
+ openTEPES/9n_PTDF/oT_Data_VariableMaxStorage_9n_PTDF.csv,sha256=oEXYvy2pjKpIpi9HmPFMipdeHlKeoMv8jhyDbISQZQc,437023
129
+ openTEPES/9n_PTDF/oT_Data_VariableMinConsumption_9n_PTDF.csv,sha256=OVKIL2LhUakkInIKxvL8GjE7jcGQyod3ZOxG3LDtRZM,419537
130
+ openTEPES/9n_PTDF/oT_Data_VariableMinEnergy_9n_PTDF.csv,sha256=OVKIL2LhUakkInIKxvL8GjE7jcGQyod3ZOxG3LDtRZM,419537
131
+ openTEPES/9n_PTDF/oT_Data_VariableMinGeneration_9n_PTDF.csv,sha256=OVKIL2LhUakkInIKxvL8GjE7jcGQyod3ZOxG3LDtRZM,419537
132
+ openTEPES/9n_PTDF/oT_Data_VariableMinStorage_9n_PTDF.csv,sha256=oEXYvy2pjKpIpi9HmPFMipdeHlKeoMv8jhyDbISQZQc,437023
133
+ openTEPES/9n_PTDF/oT_Data_VariablePTDF_9n_PTDF.csv,sha256=wetQwHN8CURqlCfF8pHbNE03Db6IV19MSlH19-VXleY,445800
134
+ openTEPES/9n_PTDF/oT_Data_VariableTTCBck_9n_PTDF.csv,sha256=nwKz0WpSjuJfWhlwoSi773y4oPZmfjlM6WFxmz9gbw0,314549
135
+ openTEPES/9n_PTDF/oT_Data_VariableTTCFrw_9n_PTDF.csv,sha256=nwKz0WpSjuJfWhlwoSi773y4oPZmfjlM6WFxmz9gbw0,314549
136
+ openTEPES/9n_PTDF/oT_Dict_AreaToRegion_9n_PTDF.csv,sha256=Tj0yBL-v69HHH4eZD1DGWRLNZsZci9lP3LLKDAo15qA,23
137
+ openTEPES/9n_PTDF/oT_Dict_Area_9n_PTDF.csv,sha256=gPrgfhexkukh9zR4hjcUvmYaJCkoQndGtKpnlPR68iY,13
138
+ openTEPES/9n_PTDF/oT_Dict_Circuit_9n_PTDF.csv,sha256=HA_AvO-c5JJ0A5mgMEzk4YzTmsA4hk02WkyIwEJMZsg,19
139
+ openTEPES/9n_PTDF/oT_Dict_Generation_9n_PTDF.csv,sha256=ooB6zMs5bAUlVzm3R_g-sfX8ZA2G7S6sWreqsRU0NM4,209
140
+ openTEPES/9n_PTDF/oT_Dict_Line_9n_PTDF.csv,sha256=xg4OpM5ldCbkhLOrAgZiJbZekkwtD5lpwxYE6dCzzLA,18
141
+ openTEPES/9n_PTDF/oT_Dict_LoadLevel_9n_PTDF.csv,sha256=FNuj3oD4Npror74ru-HGnm3wD8rLhJFTu2u4jMUYJ4o,192203
142
+ openTEPES/9n_PTDF/oT_Dict_NodeToZone_9n_PTDF.csv,sha256=hn2BuMq73Hmw3AZRZhZ8X2Ltnvk0tKvhSdEeAO3NqM8,137
143
+ openTEPES/9n_PTDF/oT_Dict_Node_9n_PTDF.csv,sha256=dIZAxYlhLVGWv2r0tmb91rTnaAY8VjvjYa6rzexxo9I,78
144
+ openTEPES/9n_PTDF/oT_Dict_Period_9n_PTDF.csv,sha256=1zv4VAX7gc0fMHgXbmMdzWbaPT-3EwAM29WixPc_zyo,14
145
+ openTEPES/9n_PTDF/oT_Dict_Region_9n_PTDF.csv,sha256=7ypbm_FG7DsOw1xg4KL4UvRbDdiHzwM1uU5eecX9kjA,128
146
+ openTEPES/9n_PTDF/oT_Dict_Scenario_9n_PTDF.csv,sha256=UFD1pqOy6af_SLucKNhgs-CCcoSkZ6OB7YcxLhIpeqs,16
147
+ openTEPES/9n_PTDF/oT_Dict_Stage_9n_PTDF.csv,sha256=PyWDtx6UFjodj7r4qZktaFfzPVgGzOA-cPLNW1CIjGw,12
148
+ openTEPES/9n_PTDF/oT_Dict_Storage_9n_PTDF.csv,sha256=GbyzeENaCG-Yx67tdPsZhF1qUY-OVDKQP2TOSbugPVk,28
149
+ openTEPES/9n_PTDF/oT_Dict_Technology_9n_PTDF.csv,sha256=9WQUthNC8T5Sy4rdm2XvqcUMXebxQ7jNnAai3OrfgJ0,47
150
+ openTEPES/9n_PTDF/oT_Dict_ZoneToArea_9n_PTDF.csv,sha256=ub27ppJJ-NYjYX7hmL9ua6ACYzDUV9XWgTLdHulvZ2c,128
151
+ openTEPES/9n_PTDF/oT_Dict_Zone_9n_PTDF.csv,sha256=-EFkGBbP6FddAAYIksLik2ktnW008aLg3ZwNPDp9s6M,69
105
152
  openTEPES/NG2030/oT_Data_Demand_NG2030.csv,sha256=Ebg6bwYYLjiHsd5nkbVgS8yHgfVLfaUx3HSONT_9fms,12342624
106
153
  openTEPES/NG2030/oT_Data_Duration_NG2030.csv,sha256=Wzg3rbdRY-tkz_-Im_WZvUTbw7uJQAqiWKqqyX1wRQE,995946
107
154
  openTEPES/NG2030/oT_Data_Emission_NG2030.csv,sha256=FGgWg3G127ufYGa5nG-9k16tlQj__DYJxfUxf9yXLuo,43
@@ -218,22 +265,22 @@ openTEPES/RTS-GMLC_6y/oT_Data_VariableMinConsumption_RTS-GMLC_6y.csv,sha256=TZB_
218
265
  openTEPES/RTS-GMLC_6y/oT_Data_VariableMinEnergy_RTS-GMLC_6y.csv,sha256=TZB_4NU_utULtvgq-RGNviZukUjzvyjakn9sVH_-hRs,12582183
219
266
  openTEPES/RTS-GMLC_6y/oT_Data_VariableMinGeneration_RTS-GMLC_6y.csv,sha256=TZB_4NU_utULtvgq-RGNviZukUjzvyjakn9sVH_-hRs,12582183
220
267
  openTEPES/RTS-GMLC_6y/oT_Data_VariableMinStorage_RTS-GMLC_6y.csv,sha256=TZB_4NU_utULtvgq-RGNviZukUjzvyjakn9sVH_-hRs,12582183
221
- openTEPES/RTS-GMLC_6y/oT_Dict_AreaToRegion_RTS-GMLC_6y.csv,sha256=eVY_4Mu1PTkNbvzIcqbYbpvT0rloVrphTB048YYDyvA,60
222
- openTEPES/RTS-GMLC_6y/oT_Dict_Area_RTS-GMLC_6y.csv,sha256=6l13IVxPq4HJh6apld5lNtUPMerRRMgfK7odZxCpCb8,26
223
- openTEPES/RTS-GMLC_6y/oT_Dict_Circuit_RTS-GMLC_6y.csv,sha256=YudHKDVQ2bpMRufOHYttfppzQEaqi2d3vRGmxTuMFdc,28
268
+ openTEPES/RTS-GMLC_6y/oT_Dict_AreaToRegion_RTS-GMLC_6y.csv,sha256=AC7WhEMDMekOKE9-kUHV-Dy92zmWKo6-YNL9vyps_j8,64
269
+ openTEPES/RTS-GMLC_6y/oT_Dict_Area_RTS-GMLC_6y.csv,sha256=VR1A8dGJ-9UcRtiyYaJwANd-7faXMtPggvkhNQ4RBf8,30
270
+ openTEPES/RTS-GMLC_6y/oT_Dict_Circuit_RTS-GMLC_6y.csv,sha256=-5ia4UT_W0lrWYYVyFV9D6-q6nA93timI8MYf_XaWxY,33
224
271
  openTEPES/RTS-GMLC_6y/oT_Dict_Generation_RTS-GMLC_6y.csv,sha256=w6kE1V9QiFoihhMs43minFkyFWRzwQtWnSYsF96_7WA,2535
225
- openTEPES/RTS-GMLC_6y/oT_Dict_Line_RTS-GMLC_6y.csv,sha256=rON9ZbWsiGauhkOIgBS3CDQosACOkKkJoORYT_fCGoc,15
272
+ openTEPES/RTS-GMLC_6y/oT_Dict_Line_RTS-GMLC_6y.csv,sha256=xg4OpM5ldCbkhLOrAgZiJbZekkwtD5lpwxYE6dCzzLA,18
226
273
  openTEPES/RTS-GMLC_6y/oT_Dict_LoadLevel_RTS-GMLC_6y.csv,sha256=FNuj3oD4Npror74ru-HGnm3wD8rLhJFTu2u4jMUYJ4o,192203
227
- openTEPES/RTS-GMLC_6y/oT_Dict_NodeToZone_RTS-GMLC_6y.csv,sha256=7bnlSu5HfA1ch_58touhcvhmrCLOEjjWhH7f5G8tONw,1251
274
+ openTEPES/RTS-GMLC_6y/oT_Dict_NodeToZone_RTS-GMLC_6y.csv,sha256=p0TKIjW16gSR5F51FnP-5E_oACrxzPo0glTt0OoglBE,1325
228
275
  openTEPES/RTS-GMLC_6y/oT_Dict_Node_RTS-GMLC_6y.csv,sha256=2YRl6OD1hV1lR8LiTN-PYjX8bW2v3BktmLVMRl8HW74,736
229
276
  openTEPES/RTS-GMLC_6y/oT_Dict_Period_RTS-GMLC_6y.csv,sha256=Jp7qufLCOXwJ1kSCruPE64llGaTj4wVqe79u5H4LPKg,44
230
- openTEPES/RTS-GMLC_6y/oT_Dict_Region_RTS-GMLC_6y.csv,sha256=9sUtX_OUST0EMWbhQG2bh7q4_CN0zrELH-ImI5OCAV4,16
231
- openTEPES/RTS-GMLC_6y/oT_Dict_Scenario_RTS-GMLC_6y.csv,sha256=2ofsWknL6_xojAEk9w_ntKDc_iRFh1tY3MKWyKGlKBE,14
277
+ openTEPES/RTS-GMLC_6y/oT_Dict_Region_RTS-GMLC_6y.csv,sha256=xd-mTmEwgSbq3wu8mbiMhvW4D_h9Y9sX9-M4C7j_Jyc,18
278
+ openTEPES/RTS-GMLC_6y/oT_Dict_Scenario_RTS-GMLC_6y.csv,sha256=UFD1pqOy6af_SLucKNhgs-CCcoSkZ6OB7YcxLhIpeqs,16
232
279
  openTEPES/RTS-GMLC_6y/oT_Dict_Stage_RTS-GMLC_6y.csv,sha256=cZKl_y6qUHVS8cLY2EFYwGyb8Bzw8043XqkYZJhOOr0,76
233
- openTEPES/RTS-GMLC_6y/oT_Dict_Storage_RTS-GMLC_6y.csv,sha256=1xK85kRhPuVmBJUjdT5jxma6pft_aX3AQ4RsJyU1kLs,25
234
- openTEPES/RTS-GMLC_6y/oT_Dict_Technology_RTS-GMLC_6y.csv,sha256=OWIqvZzabgF1OxfFkk7tSRf8hRjdGUZBF7yMz7f8g9s,66
235
- openTEPES/RTS-GMLC_6y/oT_Dict_ZoneToArea_RTS-GMLC_6y.csv,sha256=GAxPRWF3ZLQMYrZTLOxQpJq0EnLQBxG05HDL-P3GJUE,325
236
- openTEPES/RTS-GMLC_6y/oT_Dict_Zone_RTS-GMLC_6y.csv,sha256=qdYPgz7RLrL4A2iiNEJ5pkXMPFpwIeLK5QOyAqJ11oQ,173
280
+ openTEPES/RTS-GMLC_6y/oT_Dict_Storage_RTS-GMLC_6y.csv,sha256=GbyzeENaCG-Yx67tdPsZhF1qUY-OVDKQP2TOSbugPVk,28
281
+ openTEPES/RTS-GMLC_6y/oT_Dict_Technology_RTS-GMLC_6y.csv,sha256=TpbqRLfZsKkqXtVZNRxBrmis9claViI_UQzw7zyvCuA,76
282
+ openTEPES/RTS-GMLC_6y/oT_Dict_ZoneToArea_RTS-GMLC_6y.csv,sha256=lj86EH-OBqXsts32_AyCPKWtyH8aFRAnHfJls6tJI_8,347
283
+ openTEPES/RTS-GMLC_6y/oT_Dict_Zone_RTS-GMLC_6y.csv,sha256=mwTHNLbVoLCLclucd4IC1p4Ui8eK7td5FYYUHb8QMxk,195
237
284
  openTEPES/RTS24/oT_Data_Demand_RTS24.csv,sha256=18rtSbDL9CNMYanislGY7DmgFm0MqZIPF57gFurjFu8,1824986
238
285
  openTEPES/RTS24/oT_Data_Duration_RTS24.csv,sha256=MNMIViQ0Q0g3TLP9fgQUBhalqLFnprOv-HWozXW_7gE,332010
239
286
  openTEPES/RTS24/oT_Data_Emission_RTS24.csv,sha256=fuUh5xa2V53QHSLlDxWeG4g9CwOmNwWADwDOpqMvfeA,58
@@ -335,8 +382,8 @@ openTEPES/sSEP/oT_Dict_Storage_sSEP.csv,sha256=H2rJXZvoMuT-25sI2GpG8IuiNKD-dxuty
335
382
  openTEPES/sSEP/oT_Dict_Technology_sSEP.csv,sha256=MCTpplzz7_eVPKQfOw35c86ib6CTtW6UK6JrbCJ8wls,170
336
383
  openTEPES/sSEP/oT_Dict_ZoneToArea_sSEP.csv,sha256=AUDCs5Bg6sw9f2pVjGP1o4IJjXFF_VrokOGf_V3QsEI,24
337
384
  openTEPES/sSEP/oT_Dict_Zone_sSEP.csv,sha256=TBud-fvbFbiAsuutxTYe8wWlv_x1P8oyWXILMpYiXJc,13
338
- opentepes-4.18.4.dist-info/entry_points.txt,sha256=gNNPrDaTsRuRJXI1FLNgqMX1CiJ45bEp1dEDH7ZB8Oc,49
339
- opentepes-4.18.4.dist-info/LICENSE,sha256=4O7bphXVzRuYavtsWzpLGuM3E-fp3HTRna7F4yIfnS4,35184
340
- opentepes-4.18.4.dist-info/WHEEL,sha256=CpUCUxeHQbRN5UGRQHYRJorO5Af-Qy_fHMctcQ8DSGI,82
341
- opentepes-4.18.4.dist-info/METADATA,sha256=gS9Pdul7WDnhUnu41_9owmo3I4-0tJJMDvqmUE5f1MI,18423
342
- opentepes-4.18.4.dist-info/RECORD,,
385
+ openTEPES-4.18.5.dist-info/entry_points.txt,sha256=gNNPrDaTsRuRJXI1FLNgqMX1CiJ45bEp1dEDH7ZB8Oc,49
386
+ openTEPES-4.18.5.dist-info/LICENSE,sha256=4O7bphXVzRuYavtsWzpLGuM3E-fp3HTRna7F4yIfnS4,35184
387
+ openTEPES-4.18.5.dist-info/WHEEL,sha256=jPMR_Dzkc4X4icQtmz81lnNY_kAsfog7ry7qoRvYLXw,81
388
+ openTEPES-4.18.5.dist-info/METADATA,sha256=iydsNCxTCunfmrstvG17guqA4-NK4Plk5i08Qle042s,18201
389
+ openTEPES-4.18.5.dist-info/RECORD,,
@@ -1,4 +1,4 @@
1
1
  Wheel-Version: 1.0
2
- Generator: flit 3.10.1
2
+ Generator: flit 3.6.0
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any