Tutorial

O idessem provê uma interface semelhante para todos os arquivos do modelo DESSEM. Para os arquivos de entrada, são implementadas as capacidades de leitura e escrita, permitindo uma geração automática de arquivos. Para os arquivos de saída, é implementada somente a capacidade de leitura, de modo a permitir análise facilitada de resultados.

A leitura dos arquivos é sempre implementada a partir do método read da respectiva classe, enquanto que a escrita dos arquivos é implementada pelo método write da instância em questão, quando for suportada.

Um exemplo é o processamento do arquivo que contém a entrada de dados gerais entdados.dat. Sendo um arquivo de entrada, é permitido realizar a leitura e a escrita deste arquivo, modificando alguma informação de entrada caso seja desejado pelo usuário. Por exemplo, pode-se fazer uma sensibilidade de alterar o volume inicial de um reservatório:

from idessem.dessem.entdados import Entdados
arq_entdados = Entdados.read("./entdados.dat")
arq_entdados.uh(codigo_usina=6).volume_inicial
69.51

arq_entdados.uh(codigo_usina=6).volume_inicial*= 1.1
arq_entdados.uh(codigo_usina=6).volume_inicial
76.46100000000001

arq_entdados.write("./entdados.dat")

Se tratando dos arquivos de saída, não existe implementação para o método write, mas é possível realizar a leitura normalmente, e acessar todas as propriedades encontradas. Para o PDO_SIST.DAT, por exemplo:

from idessem.dessem.pdo_sist import PdoSist
arq_pdo_sist = PdoSist.read("./PDO_SIST.DAT")
arq_pdo_sist.tabela

    estagio patamar submercado    cmo   demanda perdas  ...  corte_carga    saldo  recebimento  geracao_termica_minima  geracao_termica_maxima  energia_armazenada
0          1    LEVE         SE  71.48  36935.91      -  ...          0.0 -3461.61      3461.61                 2555.95                 9489.79           122020.78
1          1    LEVE          S  71.44   9974.79      -  ...          0.0  3009.85     -3009.85                  246.00                 1348.57            14792.56
2          1    LEVE         NE  71.46  11465.14      -  ...          0.0  3317.36     -3317.36                    4.00                 5997.78            39932.58
3          1    LEVE          N  73.57   7341.98      -  ...          0.0 -2865.60      2865.60                 1153.00                 3134.21            14434.54
4          1    LEVE         FC   0.00      0.00      -  ...          0.0     0.00         0.00                    0.00                    0.00                0.00
..       ...     ...        ...    ...       ...    ...  ...          ...      ...          ...                     ...                     ...                 ...
255       52   MEDIA         SE  71.99  39910.00      -  ...          0.0 -6271.76      6271.76                 2544.95                 9478.79           121052.53
256       52   MEDIA          S  71.95  12148.00      -  ...          0.0  2704.38     -2704.38                  246.00                 1348.57            15032.88
257       52   MEDIA         NE  71.97  12032.00      -  ...          0.0  6032.64     -6032.64                    4.00                 5997.78            40053.92
258       52   MEDIA          N  75.27   7053.00      -  ...          0.0 -2465.27      2465.27                 1153.00                 3134.21            14365.11
259       52   MEDIA         FC  71.99      0.00      -  ...          0.0     0.00         0.00                    0.00                    0.00                0.00

[260 rows x 20 columns]

Alguns arquivos do modelo DESSEM podem sofrer alterações de sintaxe conforme são feitas atualizações no modelo. Desta forma, poderia ser necessário criar mais de uma classe para dar suporte ao mesmo arquivo. Todavia, o framework cfinterface possui uma modelagem para dar suporte a mais de uma versão do mesmo arquivo fazendo uso do método set_version de cada uma das classes. Caso não seja especificada a versão por meio do método set_version, será considerada a versão mais recente do arquivo. Por exemplo, o arquivo AVL_FPHA1.DAT possui diferentes formatos dependendo da versão do modelo DESSEM:

*  MODELO DESSEM     - VERSAO 19.3 - Janeiro de 2023 (CPLEX)                         *

-----;--------------;-------;---------;------------;-------------;-------------;-------------;
USIH ;    Nome      ;SegFPHA; Fcorrec ;    Rhs     ;    Varm     ;    Qtur     ;    Qlat     ;
-----;--------------;-------;---------;------------;-------------;-------------;-------------;
 001 ; CAMARGOS     ;    1  ; 1.00000 ;   -11.8461 ;    0.020604 ;    0.224440 ;    0.000000 ;
 001 ; CAMARGOS     ;    2  ; 1.00000 ;    -5.7558 ;    0.020604 ;    0.186494 ;    0.000000 ;
 001 ; CAMARGOS     ;    3  ; 1.00000 ;     0.0000 ;    0.000000 ;    0.225931 ;    0.000000 ;
 001 ; CAMARGOS     ;    4  ; 1.00000 ;     7.0475 ;    0.000000 ;    0.182021 ;    0.000000 ;
*  MODELO DESSEM     - VERSAO 19.3.1 - Fevereiro de 2023 (CPLEX)                     *

-----;--------------;-------;---------;--------;------------;-------------;-------------;-------------;
USIH ;    Nome      ;SegFPHA; Fcorrec ; QlatpM ;    Rhs     ;    Varm     ;    Qtur     ;    Qlat     ;
-----;--------------;-------;---------;--------;------------;-------------;-------------;-------------;
 001 ; CAMARGOS     ;    1  ; 1.00000 ;   0.00 ;   -11.4690 ;    0.020604 ;    0.223018 ;    0.000000 ;
 001 ; CAMARGOS     ;    2  ; 1.00000 ;   0.00 ;    -7.8204 ;    0.013736 ;    0.225763 ;    0.000000 ;
 001 ; CAMARGOS     ;    3  ; 1.00000 ;   0.00 ;    -7.7113 ;    0.013736 ;    0.224743 ;    0.000000 ;
 001 ; CAMARGOS     ;    4  ; 1.00000 ;   0.00 ;    -5.2177 ;    0.020604 ;    0.184069 ;    0.000000 ;

Para a leitura deste arquivo gerado em uma versão inferior do modelo DESSEM, deve ser especificada a versão desejada antes de efetuar a leitura do arquivo.

from idessem.dessem.avlfpha1 import AvlFpha1
AvlFpha1.set_version("19.3")
arq_avfpha1 = AvlFpha1.read("./AVL_FPHA1.DAT")