from inewave.newave.modelos.confhd import BlocoConfUHE
from inewave.newave.modelos.confhd import LeituraConfhd
from inewave._utils.dadosarquivo import DadosArquivo
from inewave._utils.arquivo import Arquivo
from inewave._utils.escrita import Escrita
import pandas as pd # type: ignore
[documentos]class Confhd(Arquivo):
"""
Armazena os dados de entrada do NEWAVE referentes às
configurações das usinas hidrelétricas.
Esta classe lida com informações de entrada fornecidas ao NEWAVE e
que podem ser modificadas através do arquivo `modif.dat`.
"""
def __init__(self,
dados: DadosArquivo):
super().__init__(dados)
# Interpreta o resultado da leitura
val = True
msg = "Erro na criação de Confhd: "
if len(dados.blocos) == 1:
bloco = dados.blocos[0]
if isinstance(bloco, BlocoConfUHE):
self.__bloco = bloco
else:
msg += (f"O bloco deve ser do tipo {BlocoConfUHE}, " +
f"mas foi fornecido do tipo {type(bloco)}")
val = False
else:
msg += "Deve ser fornecido exatamente 1 bloco para Confhd"
val = False
if not val:
raise TypeError(msg)
[documentos] @classmethod
def le_arquivo(cls,
diretorio: str,
nome_arquivo="confhd.dat") -> 'Confhd':
"""
"""
leitor = LeituraConfhd(diretorio)
r = leitor.le_arquivo(nome_arquivo)
return cls(r)
[documentos] def escreve_arquivo(self,
diretorio: str,
nome_arquivo="confhd.dat"):
"""
"""
escritor = Escrita(diretorio)
escritor.escreve_arquivo(self._dados,
nome_arquivo)
@property
def usinas(self) -> pd.DataFrame:
return self.__bloco.dados
@usinas.setter
def usinas(self, d: pd.DataFrame):
self.__bloco.dados = d