Tutorial

O idecomp provê uma interface semelhante para todos os arquivos do modelo DECOMP. 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 de vazões previstas e geradas vazoes.rvX. 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 elevar em 10% todos os valores de vazões previstas:

from idecomp.decomp import Vazoes
arq_vazoes = Vazoes.read("./vazoes.rv0")
arq_vazoes.previsoes

   estagio      1    2    3    4    5      6      7  ...  313  314  315  316  317  318  319  320
0        1   70.4  0.0  0.0  0.0  0.0  382.8   68.2  ...  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0
1        2  101.2  0.0  0.0  0.0  0.0  573.1   97.9  ...  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0
2        3  113.3  0.0  0.0  0.0  0.0  590.7  107.8  ...  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0
3        4  146.3  0.0  0.0  0.0  0.0  755.7  128.7  ...  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0
4        5  170.5  0.0  0.0  0.0  0.0  630.3  129.8  ...  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0

[5 rows x 321 columns]

df = arq_vazoes.previsoes
df.iloc[:, 1:] *= 1.1
arq_vazoes.previsoes = df
arq_vazoes.previsoes

   estagio      1    2    3    4    5      6      7  ...  313  314  315  316  317  318  319  320
0        1   70.4  0.0  0.0  0.0  0.0  382.8   68.2  ...  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0
1        2  101.2  0.0  0.0  0.0  0.0  573.1   97.9  ...  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0
2        3  113.3  0.0  0.0  0.0  0.0  590.7  107.8  ...  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0
3        4  146.3  0.0  0.0  0.0  0.0  755.7  128.7  ...  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0
4        5  170.5  0.0  0.0  0.0  0.0  630.3  129.8  ...  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0

[5 rows x 321 columns]

arq_vazoes.write("./vazoes.rv0")

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 relato.rvX, por exemplo:

from idecomp.decomp import Relato
arq_relato = Relato.read("./relato.rv0")
arq_relato.convergencia.head(10)

    Iteração        Zinf  ...  Tot. Inviab (m3/s)  Tot. Inviab (Hm3)
0          1    450767.9  ...                14.0                0.0
1          2    450767.9  ...               481.0                0.0
2          3    450767.9  ...               188.0                0.0
3          4  41454619.2  ...                 0.0                0.0
4          5  85359403.8  ...                 0.0                0.0
5          6  85359508.8  ...                10.0                0.0
6          7  85360125.8  ...                 0.0                0.0
7          8  85361257.2  ...                 0.0                0.0
8          9  85366484.0  ...                 0.0                0.0
9         10  85366570.3  ...                 0.0                0.0
10        11  85366634.8  ...                 0.0                0.0

[48 rows x 11 columns]

Alguns arquivos do modelo DECOMP 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. Entretanto, até o momento o uso deste método não foi necessário para nenhum arquivo do modelo DECOMP, visto que as implementações feitas pelo desenvolvedor tendem a ser retrocompatíveis.