Código fonte para inewave.nwlistop.modelos.eafbm00

from typing import Dict
import numpy as np  # type: ignore
from inewave.config import NUM_CENARIOS, MESES


[documentos]class Eafbm00: """ Armazena os dados das saídas referentes às energias afluentes brutas, por submercado em valores absolutos. Esta classe lida com as informações de saída fornecidas pelo NWLISTOP e reproduzidas nos `eafbm00x.out`, onde x varia conforme o submercado em questão. **Parâmetros** - mes_pmo: `int` - ano_pmo: `int` - versao_newave: `str` - submercado: `str` - energias_afluentes: `Dict[int, np.ndarray]` """ def __init__(self, mes_pmo: int, ano_pmo: int, versao_newave: str, submercado: str, energias_afluentes: Dict[int, np.ndarray]): self.mes_pmo = mes_pmo self.ano_pmo = ano_pmo self.versao_newave = versao_newave self.submercado = submercado self.energias_afluentes = energias_afluentes def __eq__(self, o: object) -> bool: """ A igualdade entre Eafbm00 avalia todos os valores, exceto a versão do NEWAVE. """ if not isinstance(o, Eafbm00): return False eaf: Eafbm00 = o eq_mes_pmo = self.mes_pmo == eaf.mes_pmo eq_ano_pmo = self.ano_pmo == eaf.ano_pmo eq_submercado = self.submercado == eaf.submercado eq_e = all([np.array_equal(e, f) for (e, f) in zip(self.energias_afluentes.values(), eaf.energias_afluentes.values()) ]) return eq_mes_pmo and eq_ano_pmo and eq_submercado and eq_e @property def energias_por_ano(self) -> Dict[int, np.ndarray]: """ Energias afluentes para cada ano e em cada cenário, para todos os meses, organizadas primeiramente por ano. **Retorna** `Dict[int, np.ndarray]` **Sobre** O acesso é feito com [ano] e retorna um np.ndarray com os valores de EAFB para todos os cenários e meses, naquele ano. """ return self.energias_afluentes @property def energias_por_ano_e_mes(self) -> Dict[int, Dict[int, np.ndarray]]: """ Energias afluentes para cada ano e mês em cada cenário, para todos os meses, organizadas primeiramente por ano. **Retorna** `Dict[int, Dict[int, np.ndarray]]` **Sobre** O acesso é feito com [ano][mes] e retorna um np.ndarray com os valores de EAFB para todos os cenários, naquele ano e mês. """ energias: Dict[int, Dict[int, np.ndarray]] = {} anos_estudo = list(self.energias_afluentes.keys()) n_meses = len(MESES) # Cria e inicializa os objetos a serem retornados for a in anos_estudo: energias[a] = {m: np.array([]) for m in range(1, n_meses + 1)} # Preenche com os valores for a, tabela in self.energias_afluentes.items(): for m in range(1, n_meses + 1): col = m - 1 energias[a][m] = tabela[:, col] return energias @property def energias_por_ano_e_cenario(self) -> Dict[int, Dict[int, np.ndarray]]: """ Energias afluentes para cada ano e cenário, para todos os meses, organizadas primeiramente por ano. **Retorna** `Dict[int, Dict[int, np.ndarray]]` **Sobre** O acesso é feito com [ano][cenario] e retorna um np.ndarray com os valores de EAFB para todos os meses, naquele ano e cenário. """ energias: Dict[int, Dict[int, np.ndarray]] = {} anos_estudo = list(self.energias_afluentes.keys()) # Cria e inicializa os objetos a serem retornados for a in anos_estudo: energias[a] = {c: np.array([]) for c in range(NUM_CENARIOS)} # Preenche com os valores for a, tabela in self.energias_afluentes.items(): for c in range(NUM_CENARIOS): energias[a][c] = tabela[c, :] return energias