openTEPES 4.18.1__py3-none-any.whl → 4.18.2__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.
openTEPES/__init__.py CHANGED
@@ -14,7 +14,7 @@ Open Generation, Storage, and Transmission Operation and Expansion Planning Mode
14
14
  >>> import openTEPES as oT
15
15
  >>> oT.routine("9n", "C:\\Users\\UserName\\Documents\\GitHub\\openTEPES", "glpk")
16
16
  """
17
- __version__ = "4.18.1"
17
+ __version__ = "4.18.2"
18
18
 
19
19
  from .openTEPES_Main import main
20
20
  from .openTEPES import *
openTEPES/openTEPES.py CHANGED
@@ -1,5 +1,5 @@
1
1
  """
2
- Open Generation, Storage, and Transmission Operation and Expansion Planning Model with RES and ESS (openTEPES) - December 19, 2024
2
+ Open Generation, Storage, and Transmission Operation and Expansion Planning Model with RES and ESS (openTEPES) - January 15, 2024
3
3
  """
4
4
 
5
5
  # import dill as pickle
@@ -39,8 +39,8 @@ def openTEPES_run(DirName, CaseName, SolverName, pIndOutputResults, pIndLogConso
39
39
  idxDict['y' ] = 1
40
40
 
41
41
  #%% model declaration
42
- mTEPES = ConcreteModel('Open Generation, Storage, and Transmission Operation and Expansion Planning Model with RES and ESS (openTEPES) - Version 4.18.1 - December 19, 2024')
43
- print( 'Open Generation, Storage, and Transmission Operation and Expansion Planning Model with RES and ESS (openTEPES) - Version 4.18.1 - December 19, 2024', file=open(f'{_path}/openTEPES_version_{CaseName}.log','w'))
42
+ mTEPES = ConcreteModel('Open Generation, Storage, and Transmission Operation and Expansion Planning Model with RES and ESS (openTEPES) - Version 4.18.2 - January 15, 2024')
43
+ print( 'Open Generation, Storage, and Transmission Operation and Expansion Planning Model with RES and ESS (openTEPES) - Version 4.18.2 - January 15, 2024', file=open(f'{_path}/openTEPES_version_{CaseName}.log','w'))
44
44
 
45
45
  pIndOutputResults = [j for i,j in idxDict.items() if i == pIndOutputResults][0]
46
46
  pIndLogConsole = [j for i,j in idxDict.items() if i == pIndLogConsole ][0]
@@ -1086,9 +1086,9 @@ def InputData(DirName, CaseName, mTEPES, pIndLogConsole):
1086
1086
  # pMaxPowerElec = pMaxPowerElec.where(pMaxPowerElec >= pMinPowerElec, pMinPowerElec)
1087
1087
  # pMaxCharge = pMaxCharge.where (pMaxCharge >= pMinCharge, pMinCharge )
1088
1088
 
1089
- #Decrease Minimum to reach maximum
1089
+ # Decrease Minimum to reach maximum
1090
1090
  pMinPowerElec = pMinPowerElec.where(pMinPowerElec <= pMaxPowerElec, pMaxPowerElec)
1091
- pMinCharge = pMinCharge.where (pMinCharge <= pMaxCharge, pMaxCharge)
1091
+ pMinCharge = pMinCharge.where (pMinCharge <= pMaxCharge, pMaxCharge )
1092
1092
 
1093
1093
  #Calculate 2nd Blocks
1094
1094
  pMaxPower2ndBlock = pMaxPowerElec - pMinPowerElec
@@ -1313,7 +1313,7 @@ def InputData(DirName, CaseName, mTEPES, pIndLogConsole):
1313
1313
  mTEPES.pIndBinGenOperat = Param(initialize=pIndBinGenOperat , within=Binary, doc='Indicator of binary generation operation decisions', mutable=True)
1314
1314
  mTEPES.pIndBinSingleNode = Param(initialize=pIndBinSingleNode , within=Binary, doc='Indicator of single node within a electric network case', mutable=True)
1315
1315
  mTEPES.pIndBinGenRamps = Param(initialize=pIndBinGenRamps , within=Binary, doc='Indicator of using or not the ramp constraints', mutable=True)
1316
- mTEPES.pIndBinGenMinTime = Param(initialize=pIndBinGenMinTime , within=Binary, doc='Indicator of using or not the min time constraints', mutable=True)
1316
+ mTEPES.pIndBinGenMinTime = Param(initialize=pIndBinGenMinTime , within=Binary, doc='Indicator of using or not the min up/dw time constraints', mutable=True)
1317
1317
  mTEPES.pIndBinLineCommit = Param(initialize=pIndBinLineCommit , within=Binary, doc='Indicator of binary electric network switching decisions', mutable=True)
1318
1318
  mTEPES.pIndBinNetLosses = Param(initialize=pIndBinNetLosses , within=Binary, doc='Indicator of binary electric network ohmic losses', mutable=True)
1319
1319
  mTEPES.pIndHydroTopology = Param(initialize=pIndHydroTopology , within=Binary, doc='Indicator of reservoir and hydropower topology' )
@@ -660,7 +660,7 @@
660
660
  # For more information on this, and how to apply and follow the GNU AGPL, see
661
661
  # <https://www.gnu.org/licenses/>.
662
662
 
663
- # Open Generation, Storage, and Transmission Operation and Expansion Planning Model with RES and ESS (openTEPES) - December 19, 2024
663
+ # Open Generation, Storage, and Transmission Operation and Expansion Planning Model with RES and ESS (openTEPES) - December 23, 2024
664
664
  # simplicity and transparency in power systems planning
665
665
 
666
666
  # Developed by
@@ -685,7 +685,7 @@ import time
685
685
  # import pkg_resources
686
686
  from .openTEPES import openTEPES_run
687
687
 
688
- print('\033[1;32mOpen Generation, Storage, and Transmission Operation and Expansion Planning Model with RES and ESS (openTEPES) - Version 4.18.1 - December 19, 2024\033[0m')
688
+ print('\033[1;32mOpen Generation, Storage, and Transmission Operation and Expansion Planning Model with RES and ESS (openTEPES) - Version 4.18.2 - January 15, 2024\033[0m')
689
689
  print('\033[34m#### Academic research license - for non-commercial use only ####\033[0m \n')
690
690
 
691
691
  parser = argparse.ArgumentParser(description='Introducing main parameters...')
@@ -737,9 +737,9 @@ def main():
737
737
  # Computing the elapsed time
738
738
  ElapsedTime = round(time.time() - StartTime)
739
739
  print('Total time ... {} s'.format(ElapsedTime))
740
- path_to_write_time = os.path.join(args.dir,args.case,f'openTEPES_time_{args.case}.log')
740
+ path_to_write_time = os.path.join(args.dir,args.case,f'openTEPES_time_{CASE}.log')
741
741
  with open(path_to_write_time, 'w') as f:
742
- f'Elapsed time {ElapsedTime} s'
742
+ f.write('Elapsed time '+str(ElapsedTime)+' s')
743
743
  # Final message
744
744
  print('End of the run ************')
745
745
  print('\033[34m#### Academic research license - for non-commercial use only ####\033[0m')
@@ -1,5 +1,5 @@
1
1
  """
2
- Open Generation, Storage, and Transmission Operation and Expansion Planning Model with RES and ESS (openTEPES) - December 11, 2024
2
+ Open Generation, Storage, and Transmission Operation and Expansion Planning Model with RES and ESS (openTEPES) - January 07, 2025
3
3
  """
4
4
 
5
5
  import time
@@ -1079,7 +1079,7 @@ def GenerationOperationModelFormulationRampMinTime(OptModel, mTEPES, pIndLogCons
1079
1079
  else:
1080
1080
  pEpsilon = 1e-4
1081
1081
 
1082
- def eRampUpState(OptModel, n, nr):
1082
+ def eRampUpState(OptModel,n,nr):
1083
1083
  if mTEPES.pStableTime[nr] and mTEPES.pMaxPower2ndBlock[p,sc,n,nr] and (p,nr) in mTEPES.pnr and mTEPES.pDuration[p,sc,n]():
1084
1084
  if pIndStableTimeDeadBand:
1085
1085
  if mTEPES.pRampUp[nr]:
@@ -1110,7 +1110,7 @@ def GenerationOperationModelFormulationRampMinTime(OptModel, mTEPES, pIndLogCons
1110
1110
  if pIndLogConsole == 1:
1111
1111
  print('eRampUpState ... ', len(getattr(OptModel, f'eRampUpState_{p}_{sc}_{st}')), ' rows')
1112
1112
 
1113
- def eRampDwState(OptModel, n, nr):
1113
+ def eRampDwState(OptModel,n,nr):
1114
1114
  if mTEPES.pStableTime[nr] and mTEPES.pMaxPower2ndBlock[p,sc,n,nr] and (p,nr) in mTEPES.pnr and mTEPES.pDuration[p,sc,n]():
1115
1115
  if pIndStableTimeDeadBand:
1116
1116
  if mTEPES.pRampDw[nr]:
@@ -1168,7 +1168,7 @@ def GenerationOperationModelFormulationRampMinTime(OptModel, mTEPES, pIndLogCons
1168
1168
  print('eMinDownTime ... ', len(getattr(OptModel, f'eMinDownTime_{p}_{sc}_{st}')), ' rows')
1169
1169
 
1170
1170
  if pIndSimplexFormulation:
1171
- def eMinStableTime(OptModel, n, nr):
1171
+ def eMinStableTime(OptModel,n,nr):
1172
1172
  if (mTEPES.pStableTime[nr] and mTEPES.pMaxPower2ndBlock[p,sc,n,nr] and mTEPES.n.ord(n) >= mTEPES.pStableTime[nr] + 2):
1173
1173
  return OptModel.vRampUpState[p,sc,n,nr] + sum(OptModel.vRampDwState[p,sc,n2,nr] for n2 in list(mTEPES.n2)[mTEPES.n.ord(n)-mTEPES.pStableTime[nr]-1:mTEPES.n.ord(n)-1]) <= 1
1174
1174
  else:
@@ -1181,9 +1181,9 @@ def GenerationOperationModelFormulationRampMinTime(OptModel, mTEPES, pIndLogCons
1181
1181
  for nr in mTEPES.nr:
1182
1182
  if (mTEPES.pStableTime[nr] and mTEPES.pMaxPower2ndBlock[p,sc,n,nr] and mTEPES.n.ord(n) >= mTEPES.pStableTime[nr] + 2):
1183
1183
  for n2 in list(mTEPES.n2)[mTEPES.n.ord(n)-mTEPES.pStableTime[nr]-1:mTEPES.n.ord(n)-1]:
1184
- MinStableTimeLoadLevels.append((n, n2, nr))
1184
+ MinStableTimeLoadLevels.append((n,n2,nr))
1185
1185
 
1186
- def eMinStableTime(OptModel, n, n2, nr):
1186
+ def eMinStableTime(OptModel,n,n2,nr):
1187
1187
  return OptModel.vRampUpState[p,sc,n,nr] + OptModel.vRampDwState[p,sc,n2,nr] <= 1
1188
1188
  setattr(OptModel, f'eMinStableTime_{p}_{sc}_{st}', Constraint(MinStableTimeLoadLevels, rule=eMinStableTime, doc='minimum stable time [p.u.]'))
1189
1189
 
@@ -1514,13 +1514,13 @@ def NetworkHeatOperationModelFormulation(OptModel, mTEPES, pIndLogConsole, p, sc
1514
1514
  chp2n[nd].append(chp)
1515
1515
 
1516
1516
  def eEnergy2Heat(OptModel,n,chp):
1517
- if (p,chp) in mTEPES.pchp and chp not in mTEPES.bo and chp in mTEPES.ch:
1518
- return OptModel.vTotalOutputHeat[p,sc,n,chp] == OptModel.vTotalOutput[p,sc,n,chp] / mTEPES.pPower2HeatRatio[chp]
1517
+ if (p,chp) in mTEPES.pchp and chp in mTEPES.ch and chp not in mTEPES.bo:
1518
+ return OptModel.vTotalOutputHeat[p,sc,n,chp] == OptModel.vTotalOutput [p,sc,n,chp] / mTEPES.pPower2HeatRatio [chp]
1519
1519
  elif (p,chp) in mTEPES.pchp and chp in mTEPES.hp:
1520
1520
  return OptModel.vTotalOutputHeat[p,sc,n,chp] == OptModel.vESSTotalCharge[p,sc,n,chp] / mTEPES.pProductionFunctionHeat[chp]
1521
1521
  else:
1522
1522
  return Constraint.Skip
1523
- setattr(OptModel, f'eEnergy2Heat_{p}_{sc}_{st}', Constraint(mTEPES.n, mTEPES.chp, rule=eEnergy2Heat, doc='Energy to heat conversion [Tcal/h]'))
1523
+ setattr(OptModel, f'eEnergy2Heat_{p}_{sc}_{st}', Constraint(mTEPES.n, mTEPES.chp, rule=eEnergy2Heat, doc='Energy to heat conversion [GW]'))
1524
1524
 
1525
1525
  if pIndLogConsole == 1:
1526
1526
  print('eEnergy2Heat ... ', len(getattr(OptModel, f'eEnergy2Heat_{p}_{sc}_{st}')), ' rows')
@@ -1531,7 +1531,7 @@ def NetworkHeatOperationModelFormulation(OptModel, mTEPES, pIndLogConsole, p, sc
1531
1531
  sum(OptModel.vFlowHeat[p,sc,n,nd,nf,cc] for nf,cc in lout[nd] if (p,nd,nf,cc) in mTEPES.pha) + sum(OptModel.vFlowHeat[p,sc,n,ni,nd,cc] for ni,cc in lin[nd] if (p,ni,nd,cc) in mTEPES.pha)) == mTEPES.pDemandHeat[p,sc,n,nd]
1532
1532
  else:
1533
1533
  return Constraint.Skip
1534
- setattr(OptModel, f'eBalanceHeat_{p}_{sc}_{st}', Constraint(mTEPES.n, mTEPES.nd, rule=eBalanceHeat, doc='Heat load generation balance [Tcal/h]'))
1534
+ setattr(OptModel, f'eBalanceHeat_{p}_{sc}_{st}', Constraint(mTEPES.n, mTEPES.nd, rule=eBalanceHeat, doc='Heat load generation balance [GW]'))
1535
1535
 
1536
1536
  if pIndLogConsole == 1:
1537
1537
  print('eBalanceHeat ... ', len(getattr(OptModel, f'eBalanceHeat_{p}_{sc}_{st}')), ' rows')
@@ -1,5 +1,5 @@
1
1
  """
2
- Open Generation, Storage, and Transmission Operation and Expansion Planning Model with RES and ESS (openTEPES) - December 19, 2024
2
+ Open Generation, Storage, and Transmission Operation and Expansion Planning Model with RES and ESS (openTEPES) - January 15, 2025
3
3
  """
4
4
 
5
5
  import time
@@ -366,10 +366,10 @@ def GenerationOperationResults(DirName, CaseName, OptModel, mTEPES, pIndTechnolo
366
366
  StartTime = time.time()
367
367
 
368
368
  # generators to area (n2a)
369
- n2a = defaultdict(list)
370
- for ar,nr in mTEPES.ar*mTEPES.nr:
371
- if (ar,nr) in mTEPES.a2g:
372
- n2a[ar].append(nr)
369
+ # n2a = defaultdict(list)
370
+ # for ar,nr in mTEPES.ar*mTEPES.nr:
371
+ # if (ar,nr) in mTEPES.a2g:
372
+ # n2a[ar].append(nr)
373
373
  g2a = defaultdict(list)
374
374
  for ar,g in mTEPES.a2g:
375
375
  g2a[ar].append(g)
@@ -1451,6 +1451,12 @@ def FlexibilityResults(DirName, CaseName, OptModel, mTEPES):
1451
1451
  for gt,g in mTEPES.t2g:
1452
1452
  g2t[gt].append(g)
1453
1453
 
1454
+ # nodes to area (d2a)
1455
+ d2a = defaultdict(list)
1456
+ for ar,nd in mTEPES.ar*mTEPES.nd:
1457
+ if (nd,ar) in mTEPES.ndar:
1458
+ d2a[ar].append(nd)
1459
+
1454
1460
  OutputToFile = pd.Series(data=[sum(OptModel.vTotalOutput[p,sc,n,g]() for g in g2t[gt] if (p,g) in mTEPES.pg) for p,sc,n,gt in mTEPES.psngt], index=pd.Index(mTEPES.psngt))
1455
1461
  OutputToFile *= 1e3
1456
1462
  TechnologyOutput = OutputToFile.loc[:,:,:,:]
@@ -1470,15 +1476,20 @@ def FlexibilityResults(DirName, CaseName, OptModel, mTEPES):
1470
1476
  NetESSTechnologyOutput[p,sc,n,ot] = MeanESSTechnologyOutput[ot] - ESSTechnologyOutput[p,sc,n,ot]
1471
1477
  NetESSTechnologyOutput.to_frame(name='MW').reset_index().pivot_table(index=['level_0','level_1','level_2'], columns='level_3', values='MW', aggfunc='sum').rename_axis(['Period', 'Scenario', 'LoadLevel'], axis=0).rename_axis([None], axis=1).to_csv(f'{_path}/oT_Result_FlexibilityTechnologyESS_{CaseName}.csv', sep=',')
1472
1478
 
1473
- MeanDemand = pd.Series(data=[sum(mTEPES.pDemandElec[p,sc,n,nd] for nd in mTEPES.nd) for p,sc,n in mTEPES.psn], index=pd.Index(mTEPES.psn)).mean()
1474
- OutputToFile = pd.Series(data=[sum(mTEPES.pDemandElec[p,sc,n,nd] for nd in mTEPES.nd) - MeanDemand for p,sc,n in mTEPES.psn], index=pd.Index(mTEPES.psn))
1479
+ MeanDemand = pd.Series(data=[sum(mTEPES.pDemandElec[p,sc,n,nd] for nd in d2a[ar]) for p,sc,n,ar in mTEPES.psnar], index=pd.Index(mTEPES.psnar)).groupby(level=3).mean()
1480
+ OutputToFile = pd.Series(data=[sum(mTEPES.pDemandElec[p,sc,n,nd] for nd in d2a[ar]) - MeanDemand[ar] for p,sc,n,ar in mTEPES.psnar], index=pd.Index(mTEPES.psnar))
1481
+ OutputToFile *= 1e3
1482
+ OutputToFile.to_frame(name='MW').reset_index().pivot_table(index=['level_0','level_1','level_2'], columns='level_3', values='MW', aggfunc='sum').rename_axis(['Period', 'Scenario', 'LoadLevel'], axis=0).rename_axis([None], axis=1).to_csv(f'{_path}/oT_Result_FlexibilityDemand_{CaseName}.csv', sep=',')
1483
+
1484
+ MeanENS = pd.Series(data=[sum(OptModel.vENS[p,sc,n,nd]() for nd in d2a[ar]) for p,sc,n,ar in mTEPES.psnar], index=pd.Index(mTEPES.psnar)).groupby(level=3).mean()
1485
+ OutputToFile = pd.Series(data=[sum(OptModel.vENS[p,sc,n,nd]() for nd in d2a[ar]) - MeanENS[ar] for p,sc,n,ar in mTEPES.psnar], index=pd.Index(mTEPES.psnar))
1475
1486
  OutputToFile *= 1e3
1476
- OutputToFile.to_frame(name='Demand').reset_index().pivot_table(index=['level_0','level_1','level_2']).rename_axis(['Period', 'Scenario', 'LoadLevel'], axis=0).rename_axis([None], axis=1).to_csv(f'{_path}/oT_Result_FlexibilityDemand_{CaseName}.csv', sep=',')
1487
+ OutputToFile.to_frame(name='MW').reset_index().pivot_table(index=['level_0','level_1','level_2'], columns='level_3', values='MW', aggfunc='sum').rename_axis(['Period', 'Scenario', 'LoadLevel'], axis=0).rename_axis([None], axis=1).to_csv(f'{_path}/oT_Result_FlexibilityPNS_{CaseName}.csv', sep=',')
1477
1488
 
1478
- MeanENS = pd.Series(data=[sum(OptModel.vENS[p,sc,n,nd]() for nd in mTEPES.nd) for p,sc,n in mTEPES.psn], index=pd.Index(mTEPES.psn)).mean()
1479
- OutputToFile = pd.Series(data=[sum(OptModel.vENS[p,sc,n,nd]() for nd in mTEPES.nd) - MeanENS for p,sc,n in mTEPES.psn], index=pd.Index(mTEPES.psn))
1489
+ MeanFlow = pd.Series(data=[sum(OptModel.vFlowElec[p,sc,n,nd,nf,cc]() for nd,nf,cc,af in mTEPES.la*mTEPES.ar if nd in d2a[ar] and nf in d2a[af] and af != ar) for p,sc,n,ar in mTEPES.psnar], index=pd.Index(mTEPES.psnar)).groupby(level=3).mean()
1490
+ OutputToFile = pd.Series(data=[sum(OptModel.vFlowElec[p,sc,n,nd,nf,cc]() for nd,nf,cc,af in mTEPES.la*mTEPES.ar if nd in d2a[ar] and nf in d2a[af] and af != ar) - MeanFlow[ar] for p,sc,n,ar in mTEPES.psnar], index=pd.Index(mTEPES.psnar))
1480
1491
  OutputToFile *= 1e3
1481
- OutputToFile.to_frame(name='PNS').reset_index().pivot_table(index=['level_0','level_1','level_2']).rename_axis(['Period', 'Scenario', 'LoadLevel'], axis=0).rename_axis([None], axis=1).to_csv(f'{_path}/oT_Result_FlexibilityPNS_{CaseName}.csv', sep=',')
1492
+ OutputToFile.to_frame(name='MW').reset_index().pivot_table(index=['level_0','level_1','level_2'], columns='level_3', values='MW', aggfunc='sum').rename_axis(['Period', 'Scenario', 'LoadLevel'], axis=0).rename_axis([None], axis=1).to_csv(f'{_path}/oT_Result_FlexibilityNetwork_{CaseName}.csv', sep=',')
1482
1493
 
1483
1494
  WritingResultsTime = time.time() - StartTime
1484
1495
  StartTime = time.time()
@@ -1879,7 +1890,7 @@ def EconomicResults(DirName, CaseName, OptModel, mTEPES, pIndAreaOutput, pIndPlo
1879
1890
  if (nd,re) in mTEPES.n2g:
1880
1891
  r2n[nd].append(re)
1881
1892
 
1882
- # generators to area (g2a)
1893
+ # generators to area (n2a)(g2a)
1883
1894
  n2a = defaultdict(list)
1884
1895
  for ar,nr in mTEPES.ar*mTEPES.nr:
1885
1896
  if (ar,nr) in mTEPES.a2g:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: openTEPES
3
- Version: 4.18.1
3
+ Version: 4.18.2
4
4
  Summary: Open Generation, Storage, and Transmission Operation and Expansion Planning Model with RES and ESS (openTEPES)
5
5
  Home-page: https://pascua.iit.comillas.edu/aramos/openTEPES/index.html
6
6
  Author: IIT-EnergySystemModels
@@ -1,10 +1,10 @@
1
- openTEPES/__init__.py,sha256=2SGpRpRSXmRHBLaGM8-HwGFrQRnfYHpUi2n7Kvg00e8,832
1
+ openTEPES/__init__.py,sha256=QGVjYBk-tvIK0QGDJpFU41UnmWDlethIi7LhVqv_huw,832
2
2
  openTEPES/openTEPES.mapbox_token,sha256=xsXNkwGp2vzXqQy2zVkyLhhNcNWniK2BMeOFpc5SZHI,93
3
- openTEPES/openTEPES.py,sha256=vw2EWB8hUv8uONlVhNuXm4VzJJD8VGjzSOSKta8IVjM,20739
4
- openTEPES/openTEPES_InputData.py,sha256=AqmtlDTy894_6iE6InJsq2LMQVR4DF7qQE27YEcEdmI,212065
5
- openTEPES/openTEPES_Main.py,sha256=GHTL0vYSVNXbUNjrPiaxoY54Mx09z23L9unVIXhs-VY,39858
6
- openTEPES/openTEPES_ModelFormulation.py,sha256=KEECy3e9oaK0FShVF0iAI91PfrO1hSYEaFgQKO5O5Ko,115926
7
- openTEPES/openTEPES_OutputResults.py,sha256=V6V-2Ur7QLJZbJaIbeI5X0clz3NjGsQoLJkk0VzUihI,206316
3
+ openTEPES/openTEPES.py,sha256=SfROIuJtiLpcrkuizmooHZ8yUndnEjspA1d08J1Tbpw,20736
4
+ openTEPES/openTEPES_InputData.py,sha256=VuKwKbugL9z2jEXIvDrtcbt2L2_ZvZxf2YzcLdP7XqA,212075
5
+ openTEPES/openTEPES_Main.py,sha256=vXh1GYdfn7JzIe7kXiSCl2S9RQdPem7HmUHcf8jacp0,39867
6
+ openTEPES/openTEPES_ModelFormulation.py,sha256=U9HxoeqO96C-jgcYjX03Ie4zWCXT-hPp2zGIIXlAjV0,115918
7
+ openTEPES/openTEPES_OutputResults.py,sha256=xO3BFeCYWMTBJJrCs-9rTWFeSd0zUb3FVjDIVR2Dap4,207496
8
8
  openTEPES/openTEPES_ProblemSolving.py,sha256=XRZolKfwqPMH61P3GKklGWoUQ_v9S8jlypaJKALo-Q8,14776
9
9
  openTEPES/openTEPES_gitinfo.py,sha256=6fA1fa-JcyusSc_HcjPiCgnV9zn-fZwdG-kK0a5Fxc8,2004
10
10
  openTEPES/.idea/.name,sha256=jiwfcnJ20wztcvpny4SHcqmAIWK-w5tCqN9TWf0GOkw,11
@@ -335,8 +335,8 @@ openTEPES/sSEP/oT_Dict_Storage_sSEP.csv,sha256=H2rJXZvoMuT-25sI2GpG8IuiNKD-dxuty
335
335
  openTEPES/sSEP/oT_Dict_Technology_sSEP.csv,sha256=MCTpplzz7_eVPKQfOw35c86ib6CTtW6UK6JrbCJ8wls,170
336
336
  openTEPES/sSEP/oT_Dict_ZoneToArea_sSEP.csv,sha256=AUDCs5Bg6sw9f2pVjGP1o4IJjXFF_VrokOGf_V3QsEI,24
337
337
  openTEPES/sSEP/oT_Dict_Zone_sSEP.csv,sha256=TBud-fvbFbiAsuutxTYe8wWlv_x1P8oyWXILMpYiXJc,13
338
- opentepes-4.18.1.dist-info/entry_points.txt,sha256=gNNPrDaTsRuRJXI1FLNgqMX1CiJ45bEp1dEDH7ZB8Oc,49
339
- opentepes-4.18.1.dist-info/LICENSE,sha256=4O7bphXVzRuYavtsWzpLGuM3E-fp3HTRna7F4yIfnS4,35184
340
- opentepes-4.18.1.dist-info/WHEEL,sha256=CpUCUxeHQbRN5UGRQHYRJorO5Af-Qy_fHMctcQ8DSGI,82
341
- opentepes-4.18.1.dist-info/METADATA,sha256=mq1SxwdjmjLLCSAIb5UjO1SefHObXfxEvBW6FZG7O3I,17788
342
- opentepes-4.18.1.dist-info/RECORD,,
338
+ opentepes-4.18.2.dist-info/entry_points.txt,sha256=gNNPrDaTsRuRJXI1FLNgqMX1CiJ45bEp1dEDH7ZB8Oc,49
339
+ opentepes-4.18.2.dist-info/LICENSE,sha256=4O7bphXVzRuYavtsWzpLGuM3E-fp3HTRna7F4yIfnS4,35184
340
+ opentepes-4.18.2.dist-info/WHEEL,sha256=CpUCUxeHQbRN5UGRQHYRJorO5Af-Qy_fHMctcQ8DSGI,82
341
+ opentepes-4.18.2.dist-info/METADATA,sha256=0K3Xm4OnlFCgugK1j379l_i_iWFjqVd2xSWOFciWGo0,17788
342
+ opentepes-4.18.2.dist-info/RECORD,,