inewave 1.10.4__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 +1 -1
- inewave/newave/__init__.py +5 -0
- inewave/newave/arquivos.py +22 -0
- inewave/newave/eliminacao_cortes.py +188 -0
- inewave/newave/modelos/eliminacao_cortes.py +79 -0
- {inewave-1.10.4.dist-info → inewave-1.11.0.dist-info}/METADATA +1 -1
- {inewave-1.10.4.dist-info → inewave-1.11.0.dist-info}/RECORD +9 -7
- {inewave-1.10.4.dist-info → inewave-1.11.0.dist-info}/WHEEL +0 -0
- {inewave-1.10.4.dist-info → inewave-1.11.0.dist-info}/licenses/LICENSE.md +0 -0
inewave/__init__.py
CHANGED
inewave/newave/__init__.py
CHANGED
|
@@ -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
|
inewave/newave/arquivos.py
CHANGED
|
@@ -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))
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
inewave/__init__.py,sha256=
|
|
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
|
|
@@ -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=
|
|
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=
|
|
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
|
|
@@ -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.
|
|
543
|
-
inewave-1.
|
|
544
|
-
inewave-1.
|
|
545
|
-
inewave-1.
|
|
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,,
|
|
File without changes
|
|
File without changes
|