inewave 1.7.3__py3-none-any.whl → 1.7.4__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.
inewave/__init__.py CHANGED
@@ -6,7 +6,7 @@ inewave é um módulo em Python para manipulação dos arquivos de entrada
6
6
  e saída do NEWAVE.
7
7
  """
8
8
 
9
- __version__ = "1.7.3"
9
+ __version__ = "1.7.4"
10
10
 
11
11
  from . import newave # noqa
12
12
  from . import nwlistcf # noqa
@@ -12,6 +12,8 @@ class SecaoDadosEnergias(Section):
12
12
  no arquivo energias.dat.
13
13
  """
14
14
 
15
+ TAMANHO_REGISTRO = 4000
16
+
15
17
  def __init__(self, previous=None, next=None, data=None) -> None:
16
18
  super().__init__(previous, next, data)
17
19
 
@@ -39,19 +41,28 @@ class SecaoDadosEnergias(Section):
39
41
  *args,
40
42
  **kwargs,
41
43
  ):
42
- numero_registros = (
43
- (numero_estagios + numero_estagios_th)
44
- * numero_rees
45
- * numero_series
46
- )
44
+ self.numero_series = numero_series
45
+ self.numero_rees = numero_rees
46
+ self.numero_estagios = numero_estagios
47
+ self.numero_estagios_th = numero_estagios_th
48
+
49
+ numero_entradas_estagio = numero_series * numero_rees
50
+ saldo_final_registro = (
51
+ self.TAMANHO_REGISTRO - numero_entradas_estagio
52
+ ) % self.TAMANHO_REGISTRO
47
53
  self.__linha = Line(
48
54
  [
49
55
  FloatField(size=8, starting_position=8 * i)
50
- for i in range(numero_registros)
56
+ for i in range(numero_entradas_estagio)
51
57
  ],
52
58
  storage="BINARY",
53
59
  )
54
- dados = self.__linha.read(file.read(self.__linha.size))
60
+ dados = []
61
+ for i in range(numero_estagios + numero_estagios_th):
62
+ dados_estagio = self.__linha.read(file.read(self.__linha.size))
63
+ dados += dados_estagio
64
+ if saldo_final_registro > 0:
65
+ file.read(saldo_final_registro * 8)
55
66
  indices_estagios = np.arange(
56
67
  1 - numero_estagios_th, numero_estagios + 1
57
68
  )
@@ -76,11 +87,29 @@ class SecaoDadosEnergias(Section):
76
87
 
77
88
  def write(self, file: IO, *args, **kwargs):
78
89
  dados = self.data["valor"].to_numpy()
79
- linha = Line(
90
+ numero_entradas_estagio = self.numero_series * self.numero_rees
91
+ saldo_final_registro = (
92
+ self.TAMANHO_REGISTRO - numero_entradas_estagio
93
+ ) % self.TAMANHO_REGISTRO
94
+ self.__linha = Line(
95
+ [
96
+ FloatField(size=8, starting_position=8 * i)
97
+ for i in range(numero_entradas_estagio)
98
+ ],
99
+ storage="BINARY",
100
+ )
101
+ self.__linha_saldo = Line(
80
102
  [
81
103
  FloatField(size=8, starting_position=8 * i)
82
- for i in range(len(dados))
104
+ for i in range(saldo_final_registro)
83
105
  ],
84
106
  storage="BINARY",
85
107
  )
86
- file.write(linha.write(dados))
108
+ for i in range(self.numero_estagios + self.numero_estagios_th):
109
+ idx_i = i * numero_entradas_estagio
110
+ idx_f = idx_i + numero_entradas_estagio
111
+ file.write(self.__linha.write(dados[idx_i:idx_f]))
112
+ if saldo_final_registro > 0:
113
+ file.write(
114
+ self.__linha_saldo.write([0.0] * saldo_final_registro)
115
+ )
@@ -416,7 +416,9 @@ class BlocoGeracaoMinimaUsinasTermicasPMO(Block):
416
416
  # Confere se acabou
417
417
  if len(linha) < 3 or "X--------------------" in linha:
418
418
  tabela = tabela[:i, :]
419
- self.data = converte_tabela_em_df()
419
+ self.data = (
420
+ converte_tabela_em_df() if i > 0 else pd.DataFrame()
421
+ )
420
422
  break
421
423
  # Lê mais uma linha
422
424
  dados = self.__line.read(linha)
@@ -500,7 +502,9 @@ class BlocoGeracaoMaximaUsinasTermicasPMO(Block):
500
502
  # Confere se acabou
501
503
  if len(linha) < 3 or "X--------------------" in linha:
502
504
  tabela = tabela[:i, :]
503
- self.data = converte_tabela_em_df()
505
+ self.data = (
506
+ converte_tabela_em_df() if i > 0 else pd.DataFrame()
507
+ )
504
508
  break
505
509
  # Lê mais uma linha
506
510
  dados = self.__line.read(linha)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: inewave
3
- Version: 1.7.3
3
+ Version: 1.7.4
4
4
  Summary: Interface para arquivos do NEWAVE
5
5
  Home-page: https://github.com/rjmalves/inewave
6
6
  Author: Rogerio Alves
@@ -3,7 +3,7 @@ examples/plot_dger.py,sha256=e8Qi-DEBmxgGBgfJfABqx39rThuRXQlMHTOfobT601U,1563
3
3
  examples/plot_modif.py,sha256=hqB3WRRYP4CBEvnnhrBwlbIrFWzkiHqgaXe76b3olzo,2735
4
4
  examples/plot_pmo.py,sha256=-NgaJnsr8N6-8DWWfSH8n8G8Ad9E0StFJBt21xwZxME,1473
5
5
  examples/plot_sistema.py,sha256=mM287WEkPV_5NCz-nB9kH9So9KOAbjBfBeB0PTVfHCA,2422
6
- inewave/__init__.py,sha256=yhruXlT9N-YihZsQtcl4jIk779t58h0ajbrjqBzjoNY,235
6
+ inewave/__init__.py,sha256=FVhIKwB-9f8cEuK9xbkOp6vCNj4FvgF5F9sKWonaN2Q,235
7
7
  inewave/config.py,sha256=fMgG2sqE_PNz30QCNxkgfPf78SEOAVfV07kGtO1bREE,1106
8
8
  inewave/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
9
9
  inewave/_utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -112,7 +112,7 @@ inewave/newave/modelos/enavazb.py,sha256=mo2nCrsyZSCTBK1UiqJ51SsG0WYU9AHjkuI_RO7
112
112
  inewave/newave/modelos/enavazf.py,sha256=DYIOFG24J-sQQ6sx-s7KfWtABRUqMf7oYUHOoBfx8Gw,2709
113
113
  inewave/newave/modelos/energiab.py,sha256=Hy8VPg9K-idZKBdn7AuwILFqgItEBlMFUH_T9lnGtR4,2880
114
114
  inewave/newave/modelos/energiaf.py,sha256=761lZhVwiDU6Za3tOZLRFfLY0l0AmkophWfpLoyLWfo,2652
115
- inewave/newave/modelos/energias.py,sha256=JI8d7Zadz1pYgdwBFBcqwTOOWaJ71mh-GYFLoGEuyN4,2612
115
+ inewave/newave/modelos/energias.py,sha256=Se0ByXQ59VVTSrzmw20gmA_SUbxlJaFa1Z8xVzfBw10,3891
116
116
  inewave/newave/modelos/engnat.py,sha256=vvZDX10qtzv1IvES4r_hXA_dCwNkQCJxrpaJguKBkEY,2832
117
117
  inewave/newave/modelos/ensoaux.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
118
118
  inewave/newave/modelos/exph.py,sha256=52JxLuZJY2BeuJguDThWwxYf9-0kJfC_FF2xLec1FIY,5520
@@ -136,7 +136,7 @@ inewave/newave/modelos/parpvaz.py,sha256=npnubBGthrac8uJ2tkkZruvhpuaI6zsLsymoGKY
136
136
  inewave/newave/modelos/patamar.py,sha256=P9uxFGqrv8uDuJYa5rCNtM9YfM9dc50lFRYAnRsIf94,21478
137
137
  inewave/newave/modelos/penalid.py,sha256=R4yUfP9hn9nUGCiQMBTe8ExvpZr080fbzz0gmwDLhZA,5663
138
138
  inewave/newave/modelos/perda.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
139
- inewave/newave/modelos/pmo.py,sha256=GCADoT0XJlATPXNO8D7XEBqN8gBlHk_igoLZay7CO1A,55106
139
+ inewave/newave/modelos/pmo.py,sha256=Mz3i5kVhj09qU6w0gSxyB0VPLqQV94EjxseMH2y-N7w,55244
140
140
  inewave/newave/modelos/re.py,sha256=ZevREGtx584M0yPH3PC4_DqeH3PQsKM_VQCxbwTJlj0,6574
141
141
  inewave/newave/modelos/ree.py,sha256=IqNVcDpl5AomPhWV1306hq26xkR7sL5nSG8Y7EKXmJs,4406
142
142
  inewave/newave/modelos/sar.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -606,7 +606,7 @@ tests/mocks/arquivos/perdfm.py,sha256=FzaJlwSXyAa6gyRzEVOg3b4h-fltHDmqCyxkdAzmIg
606
606
  tests/mocks/arquivos/perdfsin.py,sha256=jMhP-qdW9E0t4N6VOJnpE6KL6HlQN_Dra_meCi68FkE,267139
607
607
  tests/mocks/arquivos/pivarm.py,sha256=PGkPHgmJXErjDku5CO_MFCXMPgb-CjqGVDSmeZ-bOzI,425677
608
608
  tests/mocks/arquivos/pivarmincr.py,sha256=jdHu1xfI8xU2Eu5WRYaRK_OmNO2AVYQC-2FnZZu1A5M,14847
609
- tests/mocks/arquivos/pmo.py,sha256=N-Moz6l6-5TgtYucXPEGTXiAH79Qd0Euu5uHA4xOIx0,655644
609
+ tests/mocks/arquivos/pmo.py,sha256=Tq2n1INLsLjYxS8cfOKnGo8LzfG_cMC6_1ZXwYwDfo8,657056
610
610
  tests/mocks/arquivos/qafluh.py,sha256=ado-zuW71uEHNLQrPIBu2ssLZ5ZhG9QQMQdyYSkRne8,283145
611
611
  tests/mocks/arquivos/qincruh.py,sha256=jRvjlyaGefwZKSA36QxdLUeeHP3Z0kC5omZ1mLk2Dns,283145
612
612
  tests/mocks/arquivos/re.py,sha256=AyVV_dNpv-finVzNyB3jk2sH0T23nND0EZWa_ug0o6o,1843
@@ -669,7 +669,7 @@ tests/newave/test_enavazb.py,sha256=Uw0rF4_A3WOLH5sOjX2BatEW84x8FHsF-3zRJ5dvu_0,
669
669
  tests/newave/test_enavazf.py,sha256=SEzLVVTL-r43SKNj7tNz7q58DoiZ8BUUB4LWE0X8juE,1895
670
670
  tests/newave/test_energiab.py,sha256=-ZYCBpp6dBqb_zR9SWWH79brgDGbR-XgbJCe6bkRsxA,1883
671
671
  tests/newave/test_energiaf.py,sha256=TQlvhVdYCxlQvGfNFHZZETNoud5z5fyR2kVoGDaTgWQ,1909
672
- tests/newave/test_energias.py,sha256=96d6hnohlnMx3rJNgzLsRMqa_DxB6wQ2DliEGQ_rBkk,1885
672
+ tests/newave/test_energias.py,sha256=9tVOeV1R2i3Bh-Ox1x0dvKbxZ-RixQnA13urG4Otg1I,1883
673
673
  tests/newave/test_engnat.py,sha256=gZ4BVSI2r3B5lIkOHG1iUzYJ0Afcjsh8gciTjfFkShI,1808
674
674
  tests/newave/test_exph.py,sha256=KBXCUaLE9w52x6B9dJbCK5QdKM0TD-Z3o21S9P2Ayts,2500
675
675
  tests/newave/test_expt.py,sha256=UEK-qeK1zCXYRudKghdQIy51hgs9rZSrn27r79Xl_F0,2422
@@ -843,8 +843,8 @@ tests/nwlistop/test_vmort.py,sha256=KUqgO1HznEzu7TX5xu8wLhSl_sKSJteNfMd9zVcruls,
843
843
  tests/nwlistop/test_vmortm.py,sha256=re8ypER8xgRbgRdgBd1H97G1ebNxtYZn23_nBGyWwhU,1204
844
844
  tests/nwlistop/test_vmortsin.py,sha256=LvdpNPPZtnQWIxrLMUx_KIg6k22pOif6SzmRasAjquc,1113
845
845
  tests/nwlistop/test_vturuh.py,sha256=wvQ9zq9nuHdt0CPNt3SkPKMGq5WHQs7nZUnRaY33ONQ,1190
846
- inewave-1.7.3.dist-info/LICENSE.md,sha256=0jOBL78mjzscN0-XI-6YtK1IqnODUbG85DaKAMH4XJ8,1070
847
- inewave-1.7.3.dist-info/METADATA,sha256=yPawla4WFTbJuBxqC0oPcY_54VjFdwZPNBME37_QFn0,1958
848
- inewave-1.7.3.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
849
- inewave-1.7.3.dist-info/top_level.txt,sha256=o3hXlvlgJI4qWYy-wVzUYago7roEBl3kP5IL3QR9L70,23
850
- inewave-1.7.3.dist-info/RECORD,,
846
+ inewave-1.7.4.dist-info/LICENSE.md,sha256=0jOBL78mjzscN0-XI-6YtK1IqnODUbG85DaKAMH4XJ8,1070
847
+ inewave-1.7.4.dist-info/METADATA,sha256=IwiwmuiLYZICY0F1h_F7g-73ztv51Lm9h3TyfrLnyZQ,1958
848
+ inewave-1.7.4.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
849
+ inewave-1.7.4.dist-info/top_level.txt,sha256=o3hXlvlgJI4qWYy-wVzUYago7roEBl3kP5IL3QR9L70,23
850
+ inewave-1.7.4.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: bdist_wheel (0.42.0)
2
+ Generator: bdist_wheel (0.43.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
@@ -1067,6 +1067,14 @@ MockBlocoGeracaoMaximaUsinasTermicasPMO = [
1067
1067
  " 2027 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00\n",
1068
1068
  " X---------------------------------------------------------------------------------------------------------------------------X\n",
1069
1069
  "\n",
1070
+ "\n",
1071
+ " GERACAO TERMICA MAXIMA POR USINA (MWmed)\n",
1072
+ " X---------------------------------------------------------------------------------------------------------------------------X\n",
1073
+ "\n",
1074
+ " NUMERO NOME ANO ESTAGIOS\n",
1075
+ " 1 2 3 4 5 6 7 8 9 10 11 12\n",
1076
+ " X------X------------X-------X-------X-------X-------X-------X-------X-------X-------X-------X-------X-------X-------X-------X\n",
1077
+ " X---------------------------------------------------------------------------------------------------------------------------X\n",
1070
1078
  ]
1071
1079
 
1072
1080
  MockBlocoGeracaoMinimaUsinasTermicasPMO = [
@@ -1830,6 +1838,14 @@ MockBlocoGeracaoMinimaUsinasTermicasPMO = [
1830
1838
  " 2027 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00\n",
1831
1839
  " X---------------------------------------------------------------------------------------------------------------------------X\n",
1832
1840
  "\n",
1841
+ " GERACAO TERMICA MINIMA POR USINA (MWmed)\n",
1842
+ " X---------------------------------------------------------------------------------------------------------------------------X\n",
1843
+ "\n",
1844
+ " NUMERO NOME ANO ESTAGIOS\n",
1845
+ " 1 2 3 4 5 6 7 8 9 10 11 12\n",
1846
+ " X------X------------X-------X-------X-------X-------X-------X-------X-------X-------X-------X-------X-------X-------X-------X\n",
1847
+ " X---------------------------------------------------------------------------------------------------------------------------X\n",
1848
+ "\n",
1833
1849
  ]
1834
1850
 
1835
1851
 
@@ -8,10 +8,10 @@ from unittest.mock import MagicMock, patch
8
8
 
9
9
  ARQ_TESTE = "./tests/mocks/arquivos/energias.dat"
10
10
 
11
- NUM_SERIES = 2
12
- NUM_REES = 1
13
- NUM_ESTAGIOS = 16
14
- NUM_ESTAGIOS_TH = 12
11
+ NUM_SERIES = 3
12
+ NUM_REES = 2
13
+ NUM_ESTAGIOS = 3
14
+ NUM_ESTAGIOS_TH = 3
15
15
  NUM_ENTRADAS = NUM_SERIES * NUM_REES * (NUM_ESTAGIOS_TH + NUM_ESTAGIOS)
16
16
 
17
17