inewave 1.10.3__py3-none-any.whl → 1.11.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.
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.10.3"
9
+ __version__ = "1.11.0"
10
10
 
11
11
  from . import newave # noqa
12
12
  from . import nwlistcf # noqa
@@ -166,20 +166,34 @@ def formata_df_meses_para_datas_nwlistop(df: pd.DataFrame) -> pd.DataFrame:
166
166
  }
167
167
  return mapa_formatacao[colunas_identificacao](df)
168
168
 
169
+ def converte_anos(anos: List[str]) -> List[int]:
170
+ """
171
+ Converte uma lista de anos representados como strings para inteiros.
172
+ Se o ano for 'PRE', converte para 1; se for 'POS', converte para 9999.
173
+ """
174
+ anos_convertidos = []
175
+ for a in anos:
176
+ if a == "PRE":
177
+ anos_convertidos.append(1)
178
+ elif a == "POS":
179
+ anos_convertidos.append(9999)
180
+ else:
181
+ anos_convertidos.append(int(a))
182
+ return anos_convertidos
183
+
184
+ def prepara_vetor_ano_mes_tabela(anos: List[str], meses: List[int]) -> List[datetime]:
185
+
186
+ anos_convertidos = converte_anos(anos)
187
+ return [
188
+ datetime(year=int(a), month=int(m), day=1) for a, m in zip(anos_convertidos, meses)
189
+ ]
190
+
169
191
 
170
192
  def prepara_vetor_anos_tabela(anos: List[str]) -> List[datetime]:
171
193
  # Se tem pré, substitui por 0001
172
194
  # Se tem pós, substitui por 9999
173
195
  # Repete os valores existentes 12 vezes
174
- anos_convertidos: List[int] = []
175
- for a in anos:
176
- if a == "PRE":
177
- a_convertido = 1
178
- elif a == "POS":
179
- a_convertido = 9999
180
- else:
181
- a_convertido = int(a)
182
- anos_convertidos.append(a_convertido)
196
+ anos_convertidos = converte_anos(anos)
183
197
 
184
198
  anos_array = np.array(anos_convertidos).repeat(len(MESES_DF))
185
199
  meses = np.tile(np.arange(1, 13), len(anos))
@@ -20,15 +20,20 @@ from .clasgas import Clasgas # noqa
20
20
  from .clast import Clast # noqa
21
21
  from .confhd import Confhd # noqa
22
22
  from .conft import Conft # noqa
23
+ from .cortes import Cortes # noqa
24
+ from .cortesh import Cortesh # noqa
23
25
  from .curva import Curva # noqa
24
26
  from .cvar import Cvar # noqa
25
27
  from .dger import Dger # noqa
26
28
  from .dsvagua import Dsvagua # noqa
27
29
  from .eafpast import Eafpast # noqa
30
+ from .eliminacao_cortes import EliminacaoCortes # noqa
28
31
  from .elnino import ElNino # noqa
29
32
  from .ensoaux import ENSOAux # noqa
30
33
  from .exph import Exph # noqa
31
34
  from .expt import Expt # noqa
35
+ from .forward import Forward # noqa
36
+ from .forwarh import Forwarh # noqa
32
37
  from .gee import GEE # noqa
33
38
  from .ghmin import Ghmin # noqa
34
39
  from .gtminpat import Gtminpat # noqa
@@ -554,3 +554,25 @@ class Arquivos(SectionFile):
554
554
  @cortesh_pos_estudo.setter
555
555
  def cortesh_pos_estudo(self, arq: str):
556
556
  self.__atualiza_nome_por_indice(43, arq)
557
+
558
+ @property
559
+ def volume_referencia_sazonal(self) -> Optional[str]:
560
+ """
561
+ Nome do arquivo com os volumes de referência sazonais.
562
+ """
563
+ return self.__le_nome_por_indice(44)
564
+
565
+ @volume_referencia_sazonal.setter
566
+ def volume_referencia_sazonal(self, arq: str):
567
+ self.__atualiza_nome_por_indice(44, arq)
568
+
569
+ @property
570
+ def eliminacao_cortes(self) -> Optional[str]:
571
+ """
572
+ Nome do arquivo com parâmetros para eliminação de cortes.
573
+ """
574
+ return self.__le_nome_por_indice(45)
575
+
576
+ @eliminacao_cortes.setter
577
+ def eliminacao_cortes(self, arq: str):
578
+ self.__atualiza_nome_por_indice(45, arq)
@@ -0,0 +1,188 @@
1
+ from inewave.newave.modelos.eliminacao_cortes import BlocoParametrosEliminacaoCortes
2
+
3
+ from cfinterface.files.sectionfile import SectionFile
4
+ from typing import TypeVar, Optional, List
5
+
6
+
7
+ class EliminacaoCortes(SectionFile):
8
+ """
9
+ Armazena os dados de entrada do NEWAVE referentes aos parâmetros
10
+ utilizados na eliminação de cortes de Benders.
11
+
12
+ Esta classe lida com informações de entrada do NEWAVE que definem
13
+ como o algoritmo de eliminação de cortes deve ser executado,
14
+ incluindo configurações para diferentes algoritmos (Paralelo,
15
+ Análise por Pares, Shapiro Modificado).
16
+
17
+ """
18
+
19
+ T = TypeVar("T")
20
+
21
+ SECTIONS = [BlocoParametrosEliminacaoCortes]
22
+
23
+ @property
24
+ def _parametros(self) -> Optional[List[List]]:
25
+ b = self.data.get_sections_of_type(BlocoParametrosEliminacaoCortes)
26
+ if isinstance(b, BlocoParametrosEliminacaoCortes) and isinstance(b.data, list) and len(b.data) > 0:
27
+ return b.data
28
+ return None
29
+
30
+ def _get_parametro_por_indice(self, indice: int, coluna: int) -> Optional[int]:
31
+ params = self._parametros
32
+ if params and len(params) > indice and len(params[indice]) > coluna:
33
+ return params[indice][coluna]
34
+ return None
35
+
36
+ @property
37
+ def algoritmo_avaliacao_paralelo(self) -> Optional[int]:
38
+ """
39
+ Habilita ou não o algoritmo para eliminação de cortes Paralelo.
40
+
41
+ :return: O valor do parâmetro
42
+ :rtype: int | None
43
+ """
44
+ valor = self._get_parametro_por_indice(0, 0)
45
+ return int(valor) if valor is not None else None
46
+
47
+ @property
48
+ def algoritmo_avaliacao_pares(self) -> Optional[int]:
49
+ """
50
+ Habilita ou não o algoritmo para eliminação de cortes por Análise por Pares.
51
+
52
+ :return: O valor do parâmetro
53
+ :rtype: int | None
54
+ """
55
+ valor = self._get_parametro_por_indice(0, 1)
56
+ return int(valor) if valor is not None else None
57
+
58
+ @property
59
+ def algoritmo_avaliacao_shapiro(self) -> Optional[int]:
60
+ """
61
+ Habilita ou não o algoritmo para eliminação de cortes Shapiro Modificado.
62
+
63
+ :return: O valor do parâmetro
64
+ :rtype: int | None
65
+ """
66
+ valor = self._get_parametro_por_indice(0, 2)
67
+ return int(valor) if valor is not None else None
68
+
69
+ @property
70
+ def iteracao_inicial_paralelo(self) -> Optional[int]:
71
+ """
72
+ Iteração inicial para aplicação da eliminação de cortes (Paralelo).
73
+
74
+ :return: O valor do parâmetro
75
+ :rtype: int | None
76
+ """
77
+ valor = self._get_parametro_por_indice(1, 0)
78
+ return int(valor) if valor is not None else None
79
+
80
+ @property
81
+ def iteracao_inicial_pares(self) -> Optional[int]:
82
+ """
83
+ Iteração inicial para aplicação da eliminação de cortes (Análise por Pares).
84
+
85
+ :return: O valor do parâmetro
86
+ :rtype: int | None
87
+ """
88
+ valor = self._get_parametro_por_indice(1, 1)
89
+ return int(valor) if valor is not None else None
90
+
91
+ @property
92
+ def iteracao_inicial_shapiro(self) -> Optional[int]:
93
+ """
94
+ Iteração inicial para aplicação da eliminação de cortes (Shapiro Modificado).
95
+
96
+ :return: O valor do parâmetro
97
+ :rtype: int | None
98
+ """
99
+ valor = self._get_parametro_por_indice(1, 2)
100
+ return int(valor) if valor is not None else None
101
+
102
+ @property
103
+ def passo_aplicacao_paralelo(self) -> Optional[int]:
104
+ """
105
+ Passo para aplicação da eliminação de cortes (Paralelo).
106
+
107
+ :return: O valor do parâmetro
108
+ :rtype: int | None
109
+ """
110
+ valor = self._get_parametro_por_indice(2, 0)
111
+ return int(valor) if valor is not None else None
112
+
113
+ @property
114
+ def passo_aplicacao_pares(self) -> Optional[int]:
115
+ """
116
+ Passo para aplicação da eliminação de cortes (Análise por Pares).
117
+
118
+ :return: O valor do parâmetro
119
+ :rtype: int | None
120
+ """
121
+ valor = self._get_parametro_por_indice(2, 1)
122
+ return int(valor) if valor is not None else None
123
+
124
+ @property
125
+ def passo_aplicacao_shapiro(self) -> Optional[int]:
126
+ """
127
+ Passo para aplicação da eliminação de cortes (Shapiro Modificado).
128
+
129
+ :return: O valor do parâmetro
130
+ :rtype: int | None
131
+ """
132
+ valor = self._get_parametro_por_indice(2, 2)
133
+ return int(valor) if valor is not None else None
134
+
135
+ @property
136
+ def janela_iteracoes_pares(self) -> Optional[int]:
137
+ """
138
+ Janela de iterações de construção dos cortes a serem avaliados (Análise por Pares).
139
+
140
+ :return: O valor do parâmetro
141
+ :rtype: int | None
142
+ """
143
+ valor = self._get_parametro_por_indice(3, 1)
144
+ return int(valor) if valor is not None else None
145
+
146
+ @property
147
+ def janela_iteracoes_shapiro(self) -> Optional[int]:
148
+ """
149
+ Janela de iterações de construção dos cortes a serem avaliados (Shapiro Modificado).
150
+
151
+ :return: O valor do parâmetro
152
+ :rtype: int | None
153
+ """
154
+ valor = self._get_parametro_por_indice(3, 2)
155
+ return int(valor) if valor is not None else None
156
+
157
+ @property
158
+ def fator_limites_afluencias(self) -> Optional[float]:
159
+ """
160
+ Fator aplicado aos limites das afluências passadas (%).
161
+
162
+ :return: O valor do parâmetro
163
+ :rtype: float | None
164
+ """
165
+ valor = self._get_parametro_por_indice(4, 0)
166
+ return float(valor) if valor is not None else None
167
+
168
+ @property
169
+ def afluencias_sim_final_calculo_limites(self) -> Optional[int]:
170
+ """
171
+ Afluências da simulação final no cálculo dos limites.
172
+
173
+ :return: O valor do parâmetro
174
+ :rtype: int | None
175
+ """
176
+ valor = self._get_parametro_por_indice(5, 0)
177
+ return int(valor) if valor is not None else None
178
+
179
+ @property
180
+ def impressao_relatorios(self) -> Optional[int]:
181
+ """
182
+ Impressão de relatórios da eliminação de cortes.
183
+
184
+ :return: O valor do parâmetro (0=NÃO, 1=SIM)
185
+ :rtype: int | None
186
+ """
187
+ valor = self._get_parametro_por_indice(6, 0)
188
+ return int(valor) if valor is not None else None
@@ -0,0 +1,79 @@
1
+ from cfinterface.components.section import Section
2
+ from cfinterface.components.line import Line
3
+ from cfinterface.components.literalfield import LiteralField
4
+ from cfinterface.components.integerfield import IntegerField
5
+ from cfinterface.components.floatfield import FloatField
6
+ from typing import IO, List
7
+
8
+
9
+ class BlocoParametrosEliminacaoCortes(Section):
10
+ """
11
+ Bloco com os parâmetros para eliminação de cortes de Benders
12
+ utilizados pelo NEWAVE, extraído do arquivo `eliminacao_cortes.dat`.
13
+ """
14
+
15
+ __slots__ = ["__linha", "__cabecalhos", "__comentarios", "data"]
16
+
17
+ def __init__(self, previous=None, next=None, data=None) -> None:
18
+ super().__init__(previous, next, data)
19
+ self.__linha = Line(
20
+ [
21
+ LiteralField(60, 0), # Descrição do parâmetro
22
+ FloatField(6, 61, 2), # Valor PARAL (coluna 1)
23
+ IntegerField(6, 68), # Valor A.P.P (coluna 2)
24
+ IntegerField(6, 75), # Valor S.M. (coluna 3)
25
+ ]
26
+ )
27
+ self.__cabecalhos: List[str] = []
28
+ self.__comentarios: List[str] = []
29
+
30
+ def __eq__(self, o: object) -> bool:
31
+ if not isinstance(o, BlocoParametrosEliminacaoCortes):
32
+ return False
33
+ bloco: BlocoParametrosEliminacaoCortes = o
34
+ if not all(
35
+ [
36
+ isinstance(self.data, list),
37
+ isinstance(o.data, list),
38
+ ]
39
+ ):
40
+ return False
41
+ else:
42
+ return self.data == bloco.data
43
+
44
+ # Override
45
+ def read(self, file: IO, *args, **kwargs):
46
+ # Salta as linhas de cabeçalhos
47
+ for _ in range(2):
48
+ self.__cabecalhos.append(file.readline())
49
+
50
+ # Lê as linhas de parâmetros
51
+ self.data: List[List] = []
52
+
53
+ for _ in range(4):
54
+ linha = file.readline()
55
+ if not linha:
56
+ break
57
+ dados = self.__linha.read(linha)
58
+
59
+ self.__comentarios.append(dados[0].strip())
60
+ self.data.append(dados[1:])
61
+
62
+ for _ in range(3):
63
+ linha = file.readline()
64
+ if not linha:
65
+ break
66
+ dados = self.__linha.read(linha)
67
+
68
+ self.__comentarios.append(dados[0].strip())
69
+ self.data.append([dados[1]])
70
+
71
+ # Override
72
+ def write(self, file: IO, *args, **kwargs):
73
+ for linha in self.__cabecalhos:
74
+ file.write(linha)
75
+ if not isinstance(self.data, list):
76
+ raise ValueError("Dados do eliminacao_cortes.dat não foram lidos com sucesso")
77
+
78
+ for c, s in zip(self.__comentarios, self.data):
79
+ file.write(self.__linha.write([c] + s))
@@ -2,10 +2,14 @@ from cfinterface.components.section import Section
2
2
  from cfinterface.components.line import Line
3
3
  from cfinterface.components.integerfield import IntegerField
4
4
  from cfinterface.components.floatfield import FloatField
5
- from cfinterface.components.datetimefield import DatetimeField
5
+ from cfinterface.components.literalfield import LiteralField
6
6
  from typing import List, IO, Optional
7
7
  import pandas as pd # type: ignore
8
- from datetime import datetime
8
+
9
+ from inewave._utils.formatacao import (
10
+ prepara_valor_ano,
11
+ prepara_vetor_ano_mes_tabela,
12
+ )
9
13
 
10
14
 
11
15
  class BlocoUHEGhmin(Section):
@@ -22,7 +26,8 @@ class BlocoUHEGhmin(Section):
22
26
  self.__linha_uhe = Line(
23
27
  [
24
28
  IntegerField(3, 0),
25
- DatetimeField(7, 5, format="%m %Y"),
29
+ LiteralField(2, 5),
30
+ LiteralField(4, 8),
26
31
  IntegerField(1, 14),
27
32
  FloatField(6, 17, 0),
28
33
  ]
@@ -48,7 +53,7 @@ class BlocoUHEGhmin(Section):
48
53
  def converte_tabela_em_df():
49
54
  df = pd.DataFrame()
50
55
  df["codigo_usina"] = codigos
51
- df["data"] = datas
56
+ df["data"] = prepara_vetor_ano_mes_tabela(anos, meses)
52
57
  df["patamar"] = patamares
53
58
  df["geracao"] = geracoes
54
59
  return df
@@ -59,7 +64,8 @@ class BlocoUHEGhmin(Section):
59
64
 
60
65
  # Variáveis auxiliares
61
66
  codigos: List[Optional[int]] = []
62
- datas: List[Optional[datetime]] = []
67
+ meses: List[Optional[str]] = []
68
+ anos: List[Optional[str]] = []
63
69
  patamares: List[Optional[int]] = []
64
70
  geracoes: List[Optional[float]] = []
65
71
 
@@ -72,9 +78,10 @@ class BlocoUHEGhmin(Section):
72
78
  break
73
79
  dados = self.__linha_uhe.read(linha)
74
80
  codigos.append(dados[0])
75
- datas.append(dados[1])
76
- patamares.append(dados[2])
77
- geracoes.append(dados[3])
81
+ meses.append(dados[1])
82
+ anos.append(dados[2])
83
+ patamares.append(dados[3])
84
+ geracoes.append(dados[4])
78
85
 
79
86
  # Override
80
87
  def write(self, file: IO, *args, **kwargs):
@@ -82,8 +89,12 @@ class BlocoUHEGhmin(Section):
82
89
  file.write(linha)
83
90
  if not isinstance(self.data, pd.DataFrame):
84
91
  raise ValueError("Dados do ghmin.dat não foram lidos com sucesso")
92
+ df_aux = self.data.copy()
93
+ df_aux['ano'] = df_aux['data'].apply(lambda x: prepara_valor_ano(x.year))
94
+ df_aux['mes'] = df_aux['data'].apply(lambda x: f"{x.month:2d}")
95
+ df_aux.drop("data", inplace=True, axis=1)
85
96
 
86
- for _, linha in self.data.iterrows():
97
+ for _, linha in df_aux[['codigo_usina','mes','ano','patamar','geracao']].iterrows():
87
98
  linha_lida: pd.Series = linha
88
99
  dados_linha = linha_lida.tolist()
89
100
  file.write(self.__linha_uhe.write(dados_linha))
@@ -51,8 +51,10 @@ class BlocoTemposEtapasTim(Block):
51
51
  tempos: List[timedelta] = []
52
52
 
53
53
  # Leitura das etapas
54
- for _ in range(5):
54
+ while True:
55
55
  dados = self.__line.read(file.readline())
56
+ if not dados or not dados[0].strip("- \t\n"):
57
+ break
56
58
  etapas.append(dados[0].split(":")[0])
57
59
  h = int(dados[1].split("h")[0])
58
60
  min = int(dados[1].split("h")[1].split("min")[0])
@@ -44,8 +44,7 @@ class TabelaMediasusih(Section):
44
44
  var_name="estagio",
45
45
  value_name="valor",
46
46
  )
47
- df.loc[df["valor"] == "- ", "valor"] = 0.0
48
- df = df.astype({"valor": float})
47
+ df["valor"] = pd.to_numeric(df["valor"], errors="coerce")
49
48
  df["estagio"] = df["estagio"].astype(int)
50
49
  df["estagio"] -= df["estagio"].min() - 1
51
50
  df = df.pivot_table(
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: inewave
3
- Version: 1.10.3
3
+ Version: 1.11.0
4
4
  Summary: inewave
5
5
  Project-URL: Documentation, https://rjmalves.github.io/inewave/
6
6
  Project-URL: Repository, https://github.com/rjmalves/inewave/
@@ -1,8 +1,8 @@
1
- inewave/__init__.py,sha256=dVljpD7h1gRAVUNk04SzzzNVmaCOpjrq3lPunv7_g1w,236
1
+ inewave/__init__.py,sha256=44kSITb1meBcZFYLpGkP_bStt_w3rOvo1hY3JrvaynI,236
2
2
  inewave/config.py,sha256=fMgG2sqE_PNz30QCNxkgfPf78SEOAVfV07kGtO1bREE,1106
3
3
  inewave/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
4
4
  inewave/_utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
5
- inewave/_utils/formatacao.py,sha256=-bdNExSg2PGAq7fwMekoPbeLvGYiEjpCR_nlKAGF9xg,5930
5
+ inewave/_utils/formatacao.py,sha256=v7Qo6wb_q43IsLn6YHIKup_-0Q-TSEIvwHsMFWvkFI8,6431
6
6
  inewave/libs/__init__.py,sha256=Jz0qQ08srjYGvoynfro6m8fQYAKbnkj-VweNEu8JnVQ,161
7
7
  inewave/libs/eolica.py,sha256=YMO1_37PojeUeix-CtkYeba2z66aRkaRR6CE_Cn4sbs,13324
8
8
  inewave/libs/restricoes.py,sha256=9CkYGsg6fWSFS7RoyIqKlqxfaCwcNxFJrUS8Qknz4xg,16485
@@ -11,11 +11,11 @@ inewave/libs/modelos/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hS
11
11
  inewave/libs/modelos/eolica.py,sha256=0bKVjGBYBJ5RuddyE72kbFjOxlrGvNC7Yj6Et9PHpjk,14151
12
12
  inewave/libs/modelos/restricoes.py,sha256=-9wye8gEj83efSrxqibNRuGpMWgb1T5ukmmr-0rI0Qg,19606
13
13
  inewave/libs/modelos/usinas_hidreletricas.py,sha256=4-fWBqlWj2GKKj5qm8zd0NbZb7sRZq-yHLVzQ99UZKU,19927
14
- inewave/newave/__init__.py,sha256=9b_fJulbMzAlfsUh2w_19e6AS2OSA_Vj3M5GJtcj31s,2618
14
+ inewave/newave/__init__.py,sha256=JQ167G-38iOiYK-sXBC4KBfySRGuvWVch9HRHjuN7_Q,2820
15
15
  inewave/newave/abertura.py,sha256=LdSW9PrMDEG6LXgsRj4awui7R0bQqZLcHiXrfzpwiZs,361
16
16
  inewave/newave/adterm.py,sha256=83DR82nT0uqbMwWJ-hwQmmWb6l02iXQhKNabuod8y-g,1097
17
17
  inewave/newave/agrint.py,sha256=DmZ3ZBTVnaIUBkjrIC5h9ELMbECxJwF3G3Fr_xq7aWQ,2064
18
- inewave/newave/arquivos.py,sha256=faGtzKORL8MJw_p9QcAdqQVU6ZLhViLYsth_9VVSmS0,15168
18
+ inewave/newave/arquivos.py,sha256=Aqw3p4LwV_Q4P7LllwR-GB8XSNHfsfU_PMmPzHaAeng,15839
19
19
  inewave/newave/avl_cortesfpha_nwv.py,sha256=utS3pfQmsclt4PAunmgERtbPUpr-YUo3ycToT_sE44I,1605
20
20
  inewave/newave/avl_desvfpha_s.py,sha256=PUrb6F6WIMyrPXH6_Irxk4_m9HXZ-gNiDSbGSBFyraE,1989
21
21
  inewave/newave/avl_desvfpha_v_q.py,sha256=tMeYRLB9JG9Y-3QlgBwuGK0-ReR9Y0JlPyZBVLxu5LI,2015
@@ -34,6 +34,7 @@ inewave/newave/dger.py,sha256=e7AGNjBm7kZqY5fRcthvYFY_m7vovWbZdAQF-Iyd_Wk,83959
34
34
  inewave/newave/dsvagua.py,sha256=e4Kczvaj4kHkxBvBTiKFI69aCHY7MMrO2bCSTjtBJwI,1294
35
35
  inewave/newave/eafpast.py,sha256=uSKf6mWAERHED--eRGYcJTuEcYg-SGzolo5hCFlzLVg,1203
36
36
  inewave/newave/eco_fpha.py,sha256=-HCqfX-zLIBPPPGftLNffyDWBL91sEhA2vJjp5jhuWM,1491
37
+ inewave/newave/eliminacao_cortes.py,sha256=eAIg8ZKIz4KZk3lVJApY2mafAtjZLUFRQzMZnx7Fy7c,6229
37
38
  inewave/newave/elnino.py,sha256=Q8jFu1ZUIhJK7AWrNQ16jniYrcinptFUEQDXpurBSvA,333
38
39
  inewave/newave/enavazb.py,sha256=LuuzYdFun-Ilqff39HtT1H-lIycZ4YuvomQZ7MJnKCY,1443
39
40
  inewave/newave/enavazf.py,sha256=32dyiVQGfpH6oa6pfra0uir3yO19L0zDlQYOgduTx6o,1368
@@ -109,6 +110,7 @@ inewave/newave/modelos/dger.py,sha256=-aUJ-S0j15q1RVbAyq-bWB0F9YfXGoNe1Vsy7hH78E
109
110
  inewave/newave/modelos/dsvagua.py,sha256=G_4PKZcQCF_vZMrBqQcnpH54edXhSEyDlHNy4aZoiIk,5592
110
111
  inewave/newave/modelos/eafpast.py,sha256=HFKpsMyoLGwQly95uHhsK2wnrBwL7v8auzaa-UbgP5k,3322
111
112
  inewave/newave/modelos/eco_fpha.py,sha256=q-b-ShvAW-RDpr7xlmhBvM9ixWF9DxqFvhxApA7oGdo,1646
113
+ inewave/newave/modelos/eliminacao_cortes.py,sha256=VXBP4rukg9sIU3aMiAeZ8R6keJbCIMWKIemcM6Cwv6A,2690
112
114
  inewave/newave/modelos/elnino.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
113
115
  inewave/newave/modelos/enavazb.py,sha256=DfLuRFI9gcSSeZUn-xwYsaWCe618iMw7LUFo9RVI1l0,2966
114
116
  inewave/newave/modelos/enavazf.py,sha256=AgfALMrCmNcnUJzbyDDvpr2i-X3ex6vLHsvdVUemnls,2738
@@ -122,13 +124,13 @@ inewave/newave/modelos/expt.py,sha256=TgfHkVhZUbBcvRgctjxHgRHqcm_57BecXY5wKb1ZrX
122
124
  inewave/newave/modelos/forward.py,sha256=f3YDCMcl45DOYVa41XtI3A9Ko9pPmeI-_epu5ov3m4o,88425
123
125
  inewave/newave/modelos/forwarh.py,sha256=46jHcPDTBftWm8Q23zzJwiXIoSnxAuQLMBzkA4BQq6s,8231
124
126
  inewave/newave/modelos/gee.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
125
- inewave/newave/modelos/ghmin.py,sha256=53Bno60jYq2BttvuRNMJ0ccOqA3dzPKUsrLAz9gPg-o,2962
127
+ inewave/newave/modelos/ghmin.py,sha256=RKkZBTGjh8ovcxVhYnvVXvcxYFsqNHIO4C8YOpCyJPI,3438
126
128
  inewave/newave/modelos/gtminpat.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
127
129
  inewave/newave/modelos/hidr.py,sha256=ga3luPn4E7GDY5dl9UrnbIt2DUU1m1cs4EognfLsg2c,15773
128
130
  inewave/newave/modelos/itaipu.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
129
131
  inewave/newave/modelos/manutt.py,sha256=16sztv-hOdVUUeL2J5F9vBagZnII9-F-IGQJpiAkTK4,3781
130
132
  inewave/newave/modelos/modif.py,sha256=uXNRcO03dwqCeoJ1kBSNWAiaYJLLqIDThAeqsym20Uo,17159
131
- inewave/newave/modelos/newavetim.py,sha256=irKwGBH-3V1A5wKWI4NCjx_yQ0j4iCg1WAjEl-vqVj0,2979
133
+ inewave/newave/modelos/newavetim.py,sha256=5oCqu2rL0A3sok2k8NoqaHhhEPFWz1_DXWYxoG9VFe0,3052
132
134
  inewave/newave/modelos/nwv_avl_evap.py,sha256=22oXfDH9R-I1HwAiaQgm7x21zDWGWVySWYsLfdvGlHg,1228
133
135
  inewave/newave/modelos/nwv_cortes_evap.py,sha256=nAgdZ-TdWPmokcG1qANgoKtfwyq3waIFclKcY7WyWtQ,1292
134
136
  inewave/newave/modelos/nwv_eco_evap.py,sha256=vog9Lw4cqxx66Gmqext086cEsL-Tz5_4pG6wJFSoO90,1235
@@ -444,7 +446,7 @@ inewave/nwlistop/modelos/mediasrhq.py,sha256=hv9jZHw8wL3p-YL1fY-oym2EO5N4ooPbADD
444
446
  inewave/nwlistop/modelos/mediasrhv.py,sha256=38fFijM3Fdr_3GRaq5bESFsFCbgJCuq22EBxz-Htaz4,1736
445
447
  inewave/nwlistop/modelos/mediassin.py,sha256=R798woqZQ4p93Jpmt1ji2vNms1UEhkAkAFqv2b-lwUE,1635
446
448
  inewave/nwlistop/modelos/mediasusie.py,sha256=_j5osR1diNnwkqxy1wHcnTVW_T0YDHa4YAS8KwBvivw,1725
447
- inewave/nwlistop/modelos/mediasusih.py,sha256=ZO5GbJytNcDBBOuiEEMHor7666VTqU6jh_6TJAAffRQ,1819
449
+ inewave/nwlistop/modelos/mediasusih.py,sha256=K8dwMu8VVRUtgc_UDcEFavQHynPqhV1DgdEp8lyDBPM,1791
448
450
  inewave/nwlistop/modelos/mediasusit.py,sha256=87xjpsy7XS8O40hpDubbsPn-MXKRn2NVXG5k3iYJrzA,1725
449
451
  inewave/nwlistop/modelos/mercl.py,sha256=arrMiDrPb3z7CqoT0ndCW0GZgJec6oa0by3yfd9GWWQ,634
450
452
  inewave/nwlistop/modelos/merclsin.py,sha256=arrMiDrPb3z7CqoT0ndCW0GZgJec6oa0by3yfd9GWWQ,634
@@ -539,7 +541,7 @@ inewave/nwlistop/modelos/blocos/usina.py,sha256=cQvLVtG1NC8y4lP_to6-YjAKQRGRlaxO
539
541
  inewave/nwlistop/modelos/blocos/valoresclassetermicaseriepatamar.py,sha256=0LV0JMFoiuNEQ3n-XVfG2T0sIq_33bnCt6gmwPOTql8,3283
540
542
  inewave/nwlistop/modelos/blocos/valoresserie.py,sha256=Q88QBoI3zyU7y0AvHBeSqDBEVAkb3rAa3XpxA51NbF8,2143
541
543
  inewave/nwlistop/modelos/blocos/valoresseriepatamar.py,sha256=xnRdor-_2VyR5EbWNSzU_hbABJFtfgKGlznbcRaslGg,2589
542
- inewave-1.10.3.dist-info/METADATA,sha256=8WCCVwL-O2ZuPKHaMCD7mxLyQm3XVr300lH_CzNbxpg,3743
543
- inewave-1.10.3.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
544
- inewave-1.10.3.dist-info/licenses/LICENSE.md,sha256=0jOBL78mjzscN0-XI-6YtK1IqnODUbG85DaKAMH4XJ8,1070
545
- inewave-1.10.3.dist-info/RECORD,,
544
+ inewave-1.11.0.dist-info/METADATA,sha256=q80VZ89iXc624xH1xYFINnkW37LuIDp_2Q3sVRHfGzo,3743
545
+ inewave-1.11.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
546
+ inewave-1.11.0.dist-info/licenses/LICENSE.md,sha256=0jOBL78mjzscN0-XI-6YtK1IqnODUbG85DaKAMH4XJ8,1070
547
+ inewave-1.11.0.dist-info/RECORD,,