fuelCellPem — Simulador de Célula a Combustível PEM
Um app desktop que mostra, hora a hora, como uma célula a combustível PEM se comporta ao longo de um dia de uso.
O que é
Aplicativo desktop que simula uma célula a combustível PEM (Proton Exchange Membrane) ao longo de 24 horas. O usuário informa as características do stack e um perfil de carga diário, e o app mostra de forma interativa quanto hidrogênio é consumido, quanta água é produzida, quanto calor é gerado, qual a eficiência da célula e quanta energia ela entrega — com totais diários, mensais e anuais.
É a evolução natural do Electrolysis App: enquanto aquele simula a produção de hidrogênio, este simula o caminho inverso, transformando hidrogênio de volta em eletricidade.
Como funciona
O usuário configura os parâmetros do stack e desenha o perfil de uso arrastando as barras diretamente no gráfico (ou digitando o valor exato), com atalhos prontos para perfis típicos, como 24 horas contínuas ou apenas as horas de sol. A cada mudança, o app recalcula a operação hora a hora a partir do modelo físico da célula e atualiza gráficos, médias e totais em tempo real. Os campos de entrada validam os valores digitados e avisam quando algo é inválido, e a interface oferece desfazer/refazer, importação e exportação das entradas em JSON e exportação dos resultados completos em PDF.
O modelo foi portado de um notebook Python de referência e validado contra ele de forma sistemática: um conjunto de testes automatizados compara as saídas do app com as do notebook em uma ampla variedade de cenários, incluindo casos extremos e entradas absurdas, garantindo que nada quebre ou produza resultados inválidos.
Stack técnica
- C# / .NET com Avalonia UI (desktop multiplataforma)
- Gráficos interativos e exportação de relatórios em PDF
- xUnit para testes automatizados (incluindo testes da interface em modo headless)
- Python + SciPy para gerar os dados de referência usados na validação
- Git e GitHub Actions para integração contínua e publicação de releases
Destaques técnicos
- Migração fiel de um modelo científico de Python para C#, com paridade verificada contra a implementação original
- Validação em larga escala contra a referência, cobrindo grandes combinações de parâmetros
- Robustez de entrada: aceita vírgula ou ponto como separador decimal, rejeita valores inválidos e protege contra estouro numérico e laços infinitos
- Importação e exportação de JSON com tratamento de erros (arquivo inválido, bloqueado ou grande demais) sem derrubar o app
- Interface editável por arraste, com desfazer/refazer e exportação de relatório em PDF
- Código organizado em camadas: modelo físico, dados, interface e testes
- Pipeline de CI que compila, testa e publica releases automaticamente