Simulador técnico-didático para visualização do processo de remoção de fluoreto em águas industriais via precipitação e adsorção.
- Vite + TypeScript
- Vanilla CSS (Estrutura Modular)
- SVG Dinâmico para visualização do fluxo
- Canvas API para monitoramento de dados em tempo real
- Vitest para testes de lógica de domínio
O projeto foi refatorado para seguir padrões modernos de desenvolvimento:
- Centralized State: Estado único via
SimulationStore. - Formal State Machine: Transições de fase estritamente controladas.
- Dedicated Scheduler: Relógio centralizado (
Clock) com suporte a cancelamento viaAbortController. - Separation of Concerns:
simulation/: Lógica pura, cálculos e motor temporal.ui/: Gerenciamento de DOM, formulários e gráficos.svg/: Camada visual de animações e estados hidráulicos.styles/: Sistema de CSS modular (tokens, layout, components).
Este simulador é didático. Embora os conceitos sejam baseados em engenharia química real:
- Cinética: A velocidade de reação é acelerada para fins de demonstração.
-
Isoterma de Adsorção: O decaimento de PPM na etapa de Alumina segue uma curva simplificada (
$progress^{0.7}$ ) para ilustrar o comportamento não linear de saturação de sítios ativos. - Calibração: Os setpoints de pH (10.5 para precipitação e 5.8 para adsorção) são tecnicamente precisos, mas os tempos de mistura não consideram turbulência real.
- Saturação: O modelo de saturação do filtro é discreto (baseado em ciclos de uso) em vez de uma curva de ruptura (breakthrough curve) contínua.
- Instalar dependências:
npm install - Rodar em dev:
npm run dev - Typecheck:
npm run typecheck - Verificar qualidade:
npm run lint - Rodar testes:
npm test - Gerar build:
npm run build
O projeto utiliza semântica HTML5 (main, aside, section), rótulos ARIA para elementos dinâmicos e suporte total a navegação por teclado com estados de foco visíveis.
Desenvolvido por Carlos Silva (ChickChuck2).