Código-fonte para idessem.libs.usinas_hidreletricas

from typing import Type, TypeVar, Optional, List, Union
from cfinterface.components.register import Register
from cfinterface.files.registerfile import RegisterFile
import pandas as pd  # type: ignore
from idessem.libs.modelos.usinas_hidreletricas import (
    HidreletricaCurvaJusante,
    HidreletricaCurvaJusantePolinomioPorPartes,
    HidreletricaCurvaJusantePolinomioPorPartesSegmento,
    HidreletricaCurvaJusanteAfogamentoExplicitoUsina,
    HidreletricaCurvaJusanteAfogamentoExplicitoPadrao,
    HidreletricaVazaoJusanteInfluenciaDefluencia,
    HidreletricaVazaoJusanteInfluenciaPosto,
    HidreletricaVazaoJusanteInfluenciaUsina,
)


[documentos] class UsinasHidreletricas(RegisterFile): """ Armazena os dados de entrada do DESSEM referentes aos dados das usinas hidrelétricas do problema. """ T = TypeVar("T", bound=Register) REGISTERS = [ HidreletricaCurvaJusanteAfogamentoExplicitoUsina, HidreletricaCurvaJusanteAfogamentoExplicitoPadrao, HidreletricaCurvaJusantePolinomioPorPartesSegmento, HidreletricaCurvaJusantePolinomioPorPartes, HidreletricaCurvaJusante, HidreletricaVazaoJusanteInfluenciaUsina, HidreletricaVazaoJusanteInfluenciaDefluencia, HidreletricaVazaoJusanteInfluenciaPosto, ] def __registros_ou_df( self, t: Type[T], **kwargs ) -> Optional[Union[T, List[T], pd.DataFrame]]: if kwargs.get("df"): return self._as_df(t) else: kwargs_sem_df = {k: v for k, v in kwargs.items() if k != "df"} return self.data.get_registers_of_type(t, **kwargs_sem_df)
[documentos] def hidreletrica_curvajusante( self, codigo_usina: Optional[int] = None, indice_familia: Optional[int] = None, nivel_montante_referencia: Optional[float] = None, df: bool = False, ) -> Optional[ Union[ HidreletricaCurvaJusante, List[HidreletricaCurvaJusante], pd.DataFrame, ] ]: """ Obtém registros que cadastram uma família de curvas de jusante para uma usina hidrelétrica. Opcionalmente, o retorno pode ser transformado em um `DataFrame`, apenas para leitura das informações. :param codigo_usina: código que especifica a usina :type codigo_usina: int | None :param indice_familia: índice da família de polinômios :type indice_familia: int | None :param nivel_montante_referencia: nível de montante de usina de jusante para cálculo da queda :type nivel_montante_referencia: float | None :param df: ignorar os filtros e retornar todos os dados de registros como um DataFrame :type df: bool :return: Um ou mais registros, se existirem. :rtype: `HidreletricaCurvaJusante` | List[`HidreletricaCurvaJusante`] | `None` | `DataFrame` """ return self.__registros_ou_df( HidreletricaCurvaJusante, codigo_usina=codigo_usina, indice_familia=indice_familia, nivel_montante_referencia=nivel_montante_referencia, df=df, )
[documentos] def hidreletrica_curvajusante_polinomio( self, codigo_usina: Optional[int] = None, indice_familia: Optional[int] = None, numero_polinomios: Optional[int] = None, df: bool = False, ) -> Optional[ Union[ HidreletricaCurvaJusantePolinomioPorPartes, List[HidreletricaCurvaJusantePolinomioPorPartes], pd.DataFrame, ] ]: """ Obtém registros que cadastram uma família de curvas de jusante para uma usina hidrelétrica. Opcionalmente, o retorno pode ser transformado em um `DataFrame`, apenas para leitura das informações. :param codigo_usina: código que especifica a usina :type codigo_usina: int | None :param indice_familia: índice da família de polinômios :type indice_familia: int | None :param numero_polinomios: número de polinômios da família :type numero_polinomios: int | None :param df: ignorar os filtros e retornar todos os dados de registros como um DataFrame :type df: bool :return: Um ou mais registros, se existirem. :rtype: `HidreletricaCurvaJusantePolinomioPorPartes` | List[`HidreletricaCurvaJusantePolinomioPorPartes`] | `None` | `DataFrame` """ return self.__registros_ou_df( HidreletricaCurvaJusantePolinomioPorPartes, codigo_usina=codigo_usina, indice_familia=indice_familia, numero_polinomios=numero_polinomios, df=df, )
[documentos] def hidreletrica_curvajusante_polinomio_segmento( self, codigo_usina: Optional[int] = None, indice_familia: Optional[int] = None, indice_polinomio: Optional[int] = None, limite_inferior_vazao_jusante: Optional[float] = None, limite_superior_vazao_jusante: Optional[float] = None, coeficiente_a0: Optional[float] = None, coeficiente_a1: Optional[float] = None, coeficiente_a2: Optional[float] = None, coeficiente_a3: Optional[float] = None, coeficiente_a4: Optional[float] = None, df: bool = False, ) -> Optional[ Union[ HidreletricaCurvaJusantePolinomioPorPartesSegmento, List[HidreletricaCurvaJusantePolinomioPorPartesSegmento], pd.DataFrame, ] ]: """ Obtém registros que cadastram os polinômios para cada família de curvas de jusante para uma usina hidrelétrica. Opcionalmente, o retorno pode ser transformado em um `DataFrame`, apenas para leitura das informações. :param codigo_usina: código que especifica a usina :type codigo_usina: int | None :param indice_familia: índice da família de polinômios :type indice_familia: int | None :param indice_polinomio: índice do polinômio da família :type indice_polinomio: int | None :param limite_inferior_vazao_jusante: limite inferior de vazão de jusante para janela de validade do polinômio :type limite_inferior_vazao_jusante: float | None :param limite_superior_vazao_jusante: limite superior de vazão de jusante para janela de validade do polinômio :type limite_superior_vazao_jusante: float | None :param coeficiente_a0: coeficiente de grau 0 do polinômio :type coeficiente_a0: float | None :param coeficiente_a1: coeficiente de grau 1 do polinômio :type coeficiente_a1: float | None :param coeficiente_a2: coeficiente de grau 2 do polinômio :type coeficiente_a2: float | None :param coeficiente_a3: coeficiente de grau 3 do polinômio :type coeficiente_a3: float | None :param coeficiente_a4: coeficiente de grau 4 do polinômio :type coeficiente_a4: float | None :param df: ignorar os filtros e retornar todos os dados de registros como um DataFrame :type df: bool :return: Um ou mais registros, se existirem. :rtype: :class:`HidreletricaCurvaJusantePolinomioPorPartesSegmento` | list[:class:`HidreletricaCurvaJusantePolinomioPorPartesSegmento`] | None """ return self.__registros_ou_df( HidreletricaCurvaJusantePolinomioPorPartesSegmento, codigo_usina=codigo_usina, indice_familia=indice_familia, indice_polinomio=indice_polinomio, limite_inferior_vazao_jusante=limite_inferior_vazao_jusante, limite_superior_vazao_jusante=limite_superior_vazao_jusante, coeficiente_a0=coeficiente_a0, coeficiente_a1=coeficiente_a1, coeficiente_a2=coeficiente_a2, coeficiente_a3=coeficiente_a3, coeficiente_a4=coeficiente_a4, df=df, )
[documentos] def hidreletrica_curvajusante_afogamentoexplicito_usina( self, codigo_usina: Optional[int] = None, considera_afogamento: Optional[str] = None, df: bool = False, ) -> Optional[ Union[ HidreletricaCurvaJusanteAfogamentoExplicitoUsina, List[HidreletricaCurvaJusanteAfogamentoExplicitoUsina], pd.DataFrame, ] ]: """ Obtém registros que habilitam ou desabilitam a consideração do tratamento do afogamento explícito por usina. Opcionalmente, o retorno pode ser transformado em um `DataFrame`, apenas para leitura das informações. :param codigo_usina: código que especifica a usina :type codigo_usina: int | None :param considera_afogamento: habilitação do afogamento :type considera_afogamento: str | None :type df: bool :return: Um ou mais registros, se existirem. :rtype: `HidreletricaCurvaJusante` | List[`HidreletricaCurvaJusante`] | `None` | `DataFrame` """ return self.__registros_ou_df( HidreletricaCurvaJusanteAfogamentoExplicitoUsina, codigo_usina=codigo_usina, considera_afogamento=considera_afogamento, df=df, )
[documentos] def hidreletrica_curvajusante_afogamentoexplicito_padrao( self, considera_afogamento: Optional[str] = None, df: bool = False ) -> Optional[ Union[ HidreletricaCurvaJusanteAfogamentoExplicitoPadrao, List[HidreletricaCurvaJusanteAfogamentoExplicitoPadrao], pd.DataFrame, ] ]: """ Obtém registros que habilitam ou desabilitam a consideração do tratamento do afogamento explícito padrão. :param considera_afogamento: habilitação do afogamento :type considera_afogamento: str | None """ return self.__registros_ou_df( HidreletricaCurvaJusanteAfogamentoExplicitoPadrao, considera_afogamento=considera_afogamento, df=df, )
[documentos] def vazao_jusante_influencia_defluencia( self, codigo_usina_influenciada: Optional[int] = None, df: bool = False, ) -> Optional[ Union[ HidreletricaVazaoJusanteInfluenciaDefluencia, List[HidreletricaVazaoJusanteInfluenciaDefluencia], pd.DataFrame, ] ]: """ Obtém registros que identificam a usina e fatores de influência do turbinamento e vertimento na vazão de jusante da própria usina. Opcionalmente, o retorno pode ser transformado em um `DataFrame`, apenas para leitura das informações. :param codigo_usina_influenciada: código da usina influenciada :type codigo_usina_influenciada: int | None :return: Um ou mais registros, se existirem. :rtype: `HidreletricaVazaoJusanteInfluenciaDefluencia` | List[`HidreletricaVazaoJusanteInfluenciaDefluencia`] | `None` | `DataFrame` """ return self.__registros_ou_df( HidreletricaVazaoJusanteInfluenciaDefluencia, codigo_usina_influenciada=codigo_usina_influenciada, df=df, )
[documentos] def vazao_jusante_influencia_posto( self, codigo_usina_influenciada: Optional[int] = None, df: bool = False, ) -> Optional[ Union[ HidreletricaVazaoJusanteInfluenciaPosto, List[HidreletricaVazaoJusanteInfluenciaPosto], pd.DataFrame, ] ]: """ Obtém registros que identificam a usina influenciada e a usina influenciadora e fator de influência da vazão incremental na vazão de jusante da usina influenciada. Opcionalmente, o retorno pode ser transformado em um `DataFrame`, apenas para leitura das informações. :param codigo_usina_influenciada: código da usina influenciada :type codigo_usina_influenciada: int | None :return: Um ou mais registros, se existirem. :rtype: `HidreletricaVazaoJusanteInfluenciaDefluencia` | List[`HidreletricaVazaoJusanteInfluenciaDefluencia`] | `None` | `DataFrame` """ return self.__registros_ou_df( HidreletricaVazaoJusanteInfluenciaPosto, codigo_usina_influenciada=codigo_usina_influenciada, df=df, )
[documentos] def vazao_jusante_influencia_usina( self, codigo_usina_influenciada: Optional[int] = None, df: bool = False, ) -> Optional[ Union[ HidreletricaVazaoJusanteInfluenciaUsina, List[HidreletricaVazaoJusanteInfluenciaUsina], pd.DataFrame, ] ]: """ Obtém registros que identificam a usina influenciada e a usina influenciadora e fator de influência da vazão defluente na vazão de jusante da usina influenciada. Opcionalmente, o retorno pode ser transformado em um `DataFrame`, apenas para leitura das informações. :param codigo_usina_influenciada: código da usina influenciada :type codigo_usina_influenciada: int | None :return: Um ou mais registros, se existirem. :rtype: `HidreletricaVazaoJusanteInfluenciaUsina` | List[`HidreletricaVazaoJusanteInfluenciaUsina`] | `None` | `DataFrame` """ return self.__registros_ou_df( HidreletricaVazaoJusanteInfluenciaUsina, codigo_usina_influenciada=codigo_usina_influenciada, df=df, )