kokor心sim
Simulador Cardíaco Open Source: Eletrofisiológico, Dromotrópico e Hemodinâmico
O kokor心sim é um projeto de código aberto dedicado à simulação biofísica da eletrofisiologia celular cardíaca e hemodinâmica ventricular em tempo real diretamente no navegador web. Desenvolvido inicialmente como projeto pessoal, evoluiu para uma ferramenta que pode auxiliar o ensino e a pesquisa no Brasil, sendo construído em Rust e compilado para WebAssembly (WASM) com interface declarativa reativa em Dioxus. O motor numérico resolve mais de 160 equações diferenciais ordinárias (EDOs) e variáveis de estado simultaneamente utilizando o método numérico híbrido de Rush-Larsen a $dt = 0.01\text{ ms}$ (1.600 passos por quadro de 16 ms a 60 FPS), assegurando execução em 1x tempo real com baixíssimo consumo de CPU (< 5-10%) em smartphones, tablets, notebooks e computadores de laboratórios acadêmicos, sem depender de placas gráficas dedicadas.
🧭 Navegação e Documentação do Projeto
🚀 Módulos e Páginas do Projeto
- ⚡ Abrir Simulador Interativo (Web App): Aplicação biofísica em tempo real no navegador (Rust + WebAssembly).
- 🧬 Modelos Biofísicos e Referências Científicas: Equações detalhadas, formulações de canais iônicos, CellML e adaptações coelho → humano.
- 🎓 Roteiro de Aulas Práticas para Universidades: 4 experimentos didáticos completos para Fisiologia e Farmacologia.
- 🈯 Terminologia Médica em Kanji e Guia Bilíngue: Auditoria filológica, pronúncia e correspondência biofísica exata de cada termo em kanji do simulador.
- 🏛️ Decisões de Arquitetura e Engenharia: Justificativas biofísicas, matemáticas e arquiteturais do software.
- 🗺️ Roadmap de Desenvolvimento: Fases concluídas da v2.0 e planejamento da expansão espacial para a v2.1+.
- 🎨 Identidade Visual e Conceito do Logotipo: O Rotor, o Magatama (勾玉) e a convergência biofísica.
📌 Índice Rápido Desta Página (Sobre)
- 🧬 Modelos Biofísicos Integrados
- ⚡ Sistema de Condução e Dromotropismo Dinâmico
- 📈 Eletrocardiograma (ECG) Baseado em Dipolo Transmural
- 💓 Hemodinâmica Ventricular, Diagrama de Wiggers e Síntese de Áudio
- 📺 Modos de Visualização do Osciloscópio e Onda Fantasma
- 🎛️ Modulação Farmacológica, Eletrolítica e Patológica
- 🎨 Identidade Visual e Conceito do Logotipo
- 🈯 Terminologia Médica em Kanji e Guia Bilíngue
- 💻 Arquitetura de Software
- 📖 Como Citar o KokoroSim (ABNT, Vancouver, BibTeX)
- 💖 Agradecimentos e Dedicatória
- 🕰️ Versão Histórica 1.0 (Protótipo Legado)
- 📜 Licença (GPLv3)
🧬 Modelos Biofísicos Integrados ↑
O simulador implementa 7 modelos biofísicos padrão-ouro validados pela literatura científica internacional e pelo consórcio Physiome Model Repository (CellML):
- Nó Sinoatrial (SA) — Marcapasso Primário: Severi et al. (2012) — Automatismo biológico acoplado aos relógios de membrana ($I_f$) e cálcio ($I_{Ca,L}$, $I_{Ca,T}$, $I_{NCX}$) com modulação autonômica cronotrópica ($\beta_1$ e $M_2$).
- Músculo Atrial Humano: Courtemanche, Ramirez, Nattel (1998) — Miócitos atriais de resposta rápida e repolarização dependente de $I_{Kur}$, gerando a Onda P do ECG.
- Nó Atrioventricular (AV) — Filtro e Retardo: Inada et al. (2009) — Retardo nodal fisiológico dependente de cálcio (intervalo PR) e condução decremental protetora.
- Fibras de Purkinje e Feixe de His: Stewart et al. (2009) — Condução hisiana ultrarrápida ($dV/dt > 400\text{ V/s}$) e automatismo terciário de escape idioventricular (~25–35 BPM).
- Músculo Ventricular com Heterogeneidade Transmural: ten Tusscher & Panfilov (2006) — Subtipos Endocárdio, Célula M e Epicárdio reproduzindo o complexo QRS e a Onda T positiva concordante do ECG.
- Fibroblastos Cardíacos e Fibrose: MacCannell et al. (2007) — Acoplamento eletrotônico miócito-fibroblasto via gap junctions, dreno capacitivo e lentificação na condução.
- Acoplamento Eletromecânico e Hemodinâmica: Elastância de Suga & Sagawa (1974) e Circulação Arterial Windkessel de Westerhof et al. (2009) — Curvas dinâmicas de pressão ventricular ($LVP$) e aórtica ($AoP$) com incisura dicrótica e bulhas cardíacas (B1/B2).
🔬 Documentação Científica Completa: Para consultar as equações diferenciais detalhadas, formulações de correntes iônicas, links para o PubMed/DOI e repositórios computacionais CellML, acesse a página de Modelos Biofísicos e Referências Científicas.
⚡ Sistema de Condução e Dromotropismo Dinâmico ↑
Diferente de simuladores convencionais que utilizam grampeamentos de voltagem ou temporizadores arbitrários estáticos, o KokoroSim v2.0 implementa uma cadeia acoplada com estímulos de corrente fisiológica e latências dependentes de estado (dromotropismo dinâmico):
1. Cadeia de Propagação Fisiológica
$$\text{Nó SA} \xrightarrow{\Delta t_{SA \to Atr}} \text{Átrio} \xrightarrow{\Delta t_{Atr \to AV}} \text{Nó AV} \xrightarrow{\Delta t_{AV \to His}} \text{Purkinje} \xrightarrow{\Delta t_{Purk \to Endo}} \text{Endocárdio} \xrightarrow{\Delta t_{trans}} \text{Célula M} \to \text{Epicárdio}$$
- Cada transição despolariza o tecido subsequente através de um pulso transitório de injeção de corrente ($I_{stim}$ ou $I_{st}$ por 1.5 a 2.0 ms), respeitando o limiar elétrico da membrana e o período refratário natural dos canais de sódio e cálcio.
2. Dromotropismo Dinâmico e Condução Decremental no Nó AV
O Nó Atrioventricular não possui um atraso fixo; sua velocidade de condução varia continuamente em resposta a fatores cronotrópicos e farmacológicos: - Condução Decremental Frequência-Dependente: Conforme a frequência cardíaca se eleva (taquicardia sinusal ou batimentos ectópicos), os canais de cálcio $I_{Ca,L}$ do nó AV têm menos tempo para se recuperar da inativação. Como consequência, o atraso nodal alarga progressivamente (simulando a curva de recuperação do nó AV e o fenômeno de Wenckebach). - Tônus Autonômico: - Estimulação Simpática ($\beta_1$): Aumenta a corrente $I_{Ca,L}$, acelerando a condução AV (dromotropismo positivo) e encurtando o intervalo PR. - Estimulação Vagal / Parassimpática ($M_2$): Ativa a corrente hiperpolarizante de potássio $I_{K,ACh}$, desacelerando a condução AV (dromotropismo negativo) e alargando o PR. - Verapamil e Bloqueadores de Cálcio: Como o nó AV depende do cálcio para a Fase 0, a inibição de $I_{Ca,L}$ induz alargamento acentuado da condução (BAV de 1º grau) ou bloqueio completo (BAV de 2º e 3º grau), momento no qual as fibras de Purkinje assumem o marcapasso por automatismo terciário. - Isquemia Tecidual: Lentifica a condução nodal e prolonga o intervalo PR.
3. Acoplamento Eletrotônico Miócito-Fibroblasto e Fibrose Miocárdica
A fibrose cardíaca pós-isquêmica ou senescente é simulada através da proliferação e acoplamento de fibroblastos não-excitáveis aos miócitos ventriculares via junções comunicantes de conexina-43/45: - Efeito Dreno Capacitivo: Como os fibroblastos repousam a potenciais menos negativos ($-35\text{ a }-45\text{ mV}$), o acoplamento eletrotônico drena corrente dos miócitos vizinhos durante a despolarização e injeta corrente durante o repouso. - Despolarização Parcial Diastólica: O potencial de repouso ventricular é elevado de $-86\text{ mV}$ para até $-76\text{ mV}$, promovendo inativação em estado estacionário dos canais rápidos de sódio $I_{Na}$. - Retardo Conducional e Bloqueios: O $dV/dt_{\max}$ da Fase 0 ventricular é atenuado e a condução transmural sofre lentificação progressiva, criando o substrato clássico de arritmias por reentrada e dispersão tecidual.
📈 Eletrocardiograma (ECG) Baseado em Dipolo Transmural ↑
O KokoroSim calcula a derivação eletrocardiográfica (equivalente a DII / precordiais) a partir de primeiros princípios biofísicos, resolvendo o gradiente elétrico do campo distante dipolar gerado pela despolarização e repolarização da parede cardíaca:
$$\text{ECG}(t) = 0.15 \cdot (V_{atrio}(t) + 80) + 0.55 \cdot (V_{endo}(t) - V_{epi}(t)) + 0.25 \cdot (V_M(t) - V_{epi}(t))$$
Como a Morfologia P-QRS-T Real Emerge:
- Onda P: Gerada pela despolarização inicial do tecido atrial ($V_{atrio}$).
- Intervalo PR: Reflete o tempo de trânsito através do átrio e retardo nodal AV até o feixe de His.
- Complexo QRS (Onda R escarpada): A despolarização chega primeiro ao subendocárdio via Purkinje ($t = 0\text{ ms}$), enquanto o epicárdio permanece em repouso ($-86\text{ mV}$). O gradiente $V_{endo} - V_{epi} \approx +25 - (-86) = +111\text{ mV}$ projeta uma deflexão positiva rápida e estreita.
- Segmento ST: Durante a fase de platô, todas as camadas ventriculares estão simultaneamente despolarizadas ($V_{endo} \approx V_M \approx V_{epi} \approx +15\text{ a }+25\text{ mV}$), anulando a diferença de potencial e mantendo o traçado na linha isoelétrica.
- Onda T Positiva e Fisiológica: O epicárdio possui densidade superior de canais de potássio de efluxo rápido e APD mais curto, repolarizando para $-86\text{ mV}$ antes do endocárdio e da célula M. Durante a repolarização: $$V_{endo}(t) - V_{epi}(t) \approx (-30\text{ mV}) - (-86\text{ mV}) = +56\text{ mV} > 0$$ Esse gradiente elétrico positivo gera a clássica Onda T positiva e concordante com o QRS, resolvendo o paradoxo histórico dos modelos unicelulares!
💓 Hemodinâmica Ventricular, Diagrama de Wiggers e Síntese de Áudio ↑
O quarto canal do osciloscópio exibe em tempo real o núcleo mecânico do Diagrama de Wiggers:
- Pressão Ventricular Esquerda ($LVP$, ciano #00cec9): Eleva-se de ~7 mmHg na diástole até ~120 mmHg na sístole, cruzando a curva aórtica nos pontos de abertura e fechamento valvar.
- Pressão Aórtica ($AoP$, coral #ff7675): Decai exponencialmente na diástole até ~70-80 mmHg e atinge ~120 mmHg no pico da ejeção. O fechamento da valva aórtica gera a clássica incisura dicrótica.
- Síntese Acústica em Tempo Real (Web Audio API):
- 🔊 Bip de Monitor (UTI - Onda R): Disparado na despolarização ventricular rápida ($dV/dt > 0$), gerando uma onda senoidal pura de 880 Hz com decaimento exponencial de 75 ms.
- 🩺 Bulhas Cardíacas (Ausculta B1/B2):
- B1 ("Tum" / Lub): Disparada na contração isovolumétrica no fechamento da valva mitral ($LVP \ge LAP$), sintetizada com pitch sweep descendente (140 $\to$ 85 Hz), ressonância muscular calibrada e ganho reforçado para clara audibilidade em transdutores de smartphones e notebooks.
- B2 ("Tá" / Dub): Disparada no relaxamento isovolumétrico no fechamento da valva aórtica ($LVP \le AoP$), sintetizada com estalido de alta frequência (240 $\to$ 160 Hz), filtro passa-banda e decaimento rápido.
- Marcadores Visuais Verticais Multicanal: Quando as opções de áudio estão ativas, linhas verticais correspondentes são desenhadas simultaneamente em todos os 4 canais (amarelo tracejado para Onda R/UTI, verde esmeralda para B1 e coral para B2), estabelecendo correlação áudio-visual em tempo real.
- As duas opções de som vêm desativadas por padrão no Accordion "5. Monitorização & Áudio", sendo ativadas pelo clique do usuário em conformidade com as diretrizes de autoplay dos navegadores.
📺 Modos de Visualização do Osciloscópio e Onda Fantasma ↑
- 5 Modos de Varredura Temporal:
- Fita Deslizante (Rolling Strip-Chart — Padrão): Fluxo contínuo da direita para a esquerda.
- Varredura Contínua (Continuous Sweep — Monitor UTI): Varredura da esquerda para a direita com barra apagadora à frente da caneta e wrap-around.
- Paginação Sincronizada (Triggered Paged): Sincronizada pelo início da Fase 0 do Nó SA ($X = 0$); desenha uma página completa (~1.5 a 2 ciclos), congela a imagem para estudo minucioso e recomeça a nova página no próximo marco sinusal.
- Gatilho Automático (Auto-Trigger): Redesenha automaticamente a cada batimento a partir do Nó SA com barra apagadora, sobrepondo os ciclos no mesmo eixo temporal.
- Gatilho Único (Single-Shot / Congelado): Traça exatamente 1 ciclo completo e congela indefinidamente, aguardando o comando
⚡ DISPARAR / ARMAR PRÓXIMO CICLO. - Controle de Execução e Congelamento:
- Botão
[ ⏸ CONGELAR ]/[ ▶ CONTINUAR ]no topo da barra de controles para suspender instantaneamente a simulação, congelar o traçado e silenciar o áudio para análise pedagógica detalhada. - Onda Fantasma Bio-Sincronizada (Referência Basal em Memória):
- Gravação bio-disparada na Fase 0 do Nó SA: ao clicar em
📸 Capturar, o sistema aguarda o marcapasso sinusal e grava com precisão 1 ciclo $RR$ completo fechado ($t_0 \to t_{RR}$). - Dinâmica de Espaçamento e Encurtamento: Em bradicardia, repousa no potencial basal ($V_{rest}$) destacando o atraso; em taquicardia, reinicia sincronizada a cada novo batimento.
- Acessibilidade Sensorial (Zero Formiguinhas): Renderizada como linha sólida contínua translúcida e suave (
rgba(..., 0.35), espessura 1.2px), sem cintilações ou vibrações visuais, propiciando conforto máximo a usuários neurodivergentes. - Custo de CPU Zero: Armazenada em vetor estático sem exigir instâncias secundárias da simulação.
- Reset Limpo de Memória nos Modos de Varredura e Gatilho:
- Comutação entre modos com higienização instantânea de memória por sentinelas
NaN, eliminando quaisquer rastros ou artefatos de ciclos anteriores.
🎛️ Modulação Farmacológica, Eletrolítica e Patológica ↑
- Potássio $[K^+]_o$ (2.0 a 8.5 mEq/L): Modula o potencial de repouso ($V_{rest}$) pela equação de Nernst. Hipocalemia causa hiperexcitabilidade e pós-despolarizações; hipercalemia severa causa inativação permanente dos canais de sódio e parada diastólica.
- Cálcio $[Ca^{2+}]_o$ (1.0 a 3.5 mmol/L): Regula a corrente $I_{Ca,L}$, modulando a duração do platô ventricular e o intervalo QT.
- Sódio $[Na^+]_o$ (125 a 155 mEq/L): Determina a amplitude e velocidade da Fase 0 nas células rápidas (Átrio, Purkinje e Ventrículo).
- Fibrose Miocárdica (0% a 100%): Aumenta a densidade e o acoplamento de junções comunicantes miócito-fibroblasto ($G_{gap}$ até $4.0\text{ nS}$), deprimindo $dV/dt$, prolongando a condução e gerando dispersão da repolarização.
- Antiarrítmicos (Classes I a IV de Vaughan Williams):
- Classe I (Lidocaína): Bloqueio fracionário de canais de $Na^+$, alargando o complexo QRS e reduzindo a velocidade de condução transmural.
- Classe III (Amiodarona): Bloqueio de canais de $K^+$ ($I_{Kr}$, $I_{Ks}$), prolongando o platô e o intervalo QT.
- Classe IV (Verapamil): Inibição seletiva de $I_{Ca,L}$, deprimindo a rampa nodal AV e simulando bloqueios atrioventriculares.
- Glicosídeo Cardíaco (Digoxina): Inibição da bomba $Na^+/K^+$ ATPase, elevando o cálcio intracelular e a força de contração ativa.
- Isquemia Miocárdica: Ativação de canais $K_{ATP}$, encurtando precocemente o potencial de ação e provocando alterações morfológicas do segmento ST e da onda T.
🎨 Identidade Visual e Conceito do Logotipo: O Rotor / Magatama (勾玉) ↑
O isotipo do KokoroSim foge dos clichês gráficos tradicionais da cardiologia (como corações estilizados ou traçados simplistas de ECG). Em vez disso, estabelece uma ponte geométrica direta entre a eletrofisiologia não-linear, a hemodinâmica ventricular e a iconografia tradicional japonesa:
1. A Convergência Multifísica (O Choque e o Fluxo)
A silhueta baseia-se no magatama (勾玉) e no elemento dinâmico unitário do mitsudomoe (a gota espiralada clássica). Essa topologia resolve em um único símbolo as duas forças que regem o simulador: - Na Eletrofisiologia (O Choque): Rotores são ondas espirais auto-sustentadas que giram em torno de uma singularidade de fase em meio excitável (reentrância funcional), representando a base matemática primordial das taquiarritmias e da fibrilação ventricular. - Na Hemodinâmica (O Fluxo): A mesma espiral descreve a formação dos anéis de vórtice transmitrais (vortex rings) durante o enchimento diastólico ventricular rápido, canalizando a inércia do sangue para a via de ejeção aórtica com máxima eficiência energética.
2. Eficiência de Silhueta e Traço Dinâmico
- Assimetria Funcional: A terminação afiada e agressiva da cauda do magatama evoca o disparo elétrico da despolarização rápida da membrana (Fase 0 mediada por $I_{Na}$ / pico da Onda R). O corpo arredondado fecha-se em espiral logarítmica de vórtice, sugerindo o turbilhonamento fluido ventricular.
- Resolução em Baixa Altura (1-bit / 24px): Projetado para manter reconhecimento visual imediato tanto em alta resolução quanto em ícones microscópicos de 24 pixels (avatares de repositório, favicons de navegador e executáveis de desktop), superando o ruído visual de diagramas densos e o peso estático de arabescos têxteis.
3. O Kanji e a Tipografia Integrada: kokor心sim
- O caractere 心 (kokoro — coração, mente, espírito) é fundido diretamente na tipografia geométrica, substituindo o segundo "o" da palavra. Essa fusão sutil preserva a legibilidade fonética e ancora a alma do software.
- A paleta de cores adota o Carmesim Neon (
#ff1754— representando o sangue arterial oxigenado, a pressão aórtica e o calor metabólico) em contraste com o Ciano Elétrico (#00f2fe— representando a bioeletricidade transmembrana, a polaridade iônica e a convenção anatômica do sangue venoso), montados sobre um fundo escuro com estética de interface tática Mecha/HUD de ficção científica.
📖 Documento Conceitual Completo: Leia o ensaio ilustrado sobre a semiologia, geometria e fundamentação visual em Identidade Visual e Conceito do Logotipo.
🈯 Terminologia Médica em Kanji e Guia Bilíngue ↑
Inspirado nos painéis de telemetria analógica e eletrocardiógrafos hospitalares japoneses dos anos 80 e 90, o KokoroSim adota notação bilíngue em todos os seus instrumentos (HUD superior, canais de osciloscópio CRT e módulos do rack de controle lateral).
Todos os caracteres em Kanji e Katakana correspondem rigorosamente ao vocabulário médico, fisiológico e biofísico oficial utilizado no Japão (ex: 心拍数 para Frequência Cardíaca, 静止電位 para Potencial de Repouso, 抗不整脈薬 para Fármacos Antiarrítmicos e 活動電位 para Potencial de Ação Celular), com correspondente direto em português e unidades do Sistema Internacional.
🈯 Tabela Completa de Auditoria Filológica: Para consultar a pronúncia (rōmaji), a decomposição morfológica caractere por caractere e a correlação fisiológica detalhada de cada termo presente no simulador, acesse a página de Terminologia Médica em Kanji e Guia Bilíngue.
💻 Arquitetura de Software ↑
- Linguagem Principal: Rust 2021 Edition.
- Compilação WebAssembly:
wasm-bindgenewasm-packcom otimizações em release (-O3). - Interface Gráfica: Dioxus 0.6 (declarativo e reativo nativo em Rust).
- Mecanismo de Renderização: Pipeline
Canvas 2Dde alto desempenho com buffers circulares de 500 pontos (janela horizontal de 2.5s, comportando > 3 ciclos cardíacos completos) e processamento em lote viaHeartSystem::run_batch(). - Módulo de Áudio: Sintetizador biofísico nativo via Web Audio API (
AudioContext,OscillatorNode,GainNode,BiquadFilterNode) sem dependência de assets de áudio externos. - Ambiente de Desenvolvimento: Script
./scripts/run_local.shcom hot-reloading inteligente, fila concorrente assíncrona, debounce e injeção automática de versão e build-time no rodapé.
📖 Citação Acadêmica ↑
Se você utilizar o KokoroSim em pesquisas científicas, aulas práticas, monografias, dissertações, teses ou publicações acadêmicas, por favor cite conforme os formatos padronizados abaixo:
Formato ABNT (NBR 6023:2018)
FREITAS, Lumen Muller Lohn. KokoroSim: Simulador Cardíaco Open Source — Eletrofisiológico, Dromotrópico e Hemodinâmico. Versão 2.0.0. Florianópolis: Universidade Federal de Santa Catarina (UFSC), 2026. Disponível em: https://kokorosim.github.io/. Acesso em: [data de acesso].
Formato Vancouver
Freitas LML. KokoroSim: Simulador Cardíaco Open Source — Eletrofisiológico, Dromotrópico e Hemodinâmico [software na Internet]. Versão 2.0.0. Florianópolis: Universidade Federal de Santa Catarina; 2026 [citado em ano mês dia]. Disponível em: https://kokorosim.github.io/
Formato BibTeX
@software{freitas2026kokorosim,
author = {Freitas, Lumen Muller Lohn},
title = {KokoroSim: Simulador Cardíaco Open Source --- Eletrofisiológico, Dromotrópico e Hemodinâmico},
year = {2026},
publisher = {GitHub},
journal = {GitHub repository},
howpublished = {\url{https://github.com/KokoroSim/KokoroSim}},
url = {https://kokorosim.github.io/}
}
💖 Agradecimentos e Dedicatória ↑
Este projeto não existiria sem as pessoas que guiaram meus passos nessa jornada e sustentam os meus dias:
À Universidade Federal de Santa Catarina (UFSC) e aos meus mestres:
- Profa. Andréa Gonçalves Trentin e Profa. Cláudia B. N. Mendes de Aguiar, que me apresentaram o funcionamento das células.
- Prof. Carlos Peres Silva, Prof. Marcelo Farina e Profa. Nicolle Platt dos Santos, que me mostraram as maravilhas da bioquímica.
- Profa. Domitila Augusta Huber, Prof. Eduardo Luiz Gasnhar Moreira, Prof. Gustavo Jorge dos Santos e Profa. Renata Maria Lataro, que me apresentaram a fisiologia e inspiraram o gosto por ela.
- Profa. Patrícia de Souza Brocardo e Profa. Viviane Mara Woehl, que mostraram que uma célula não funciona sozinha.
Aos colegas e amigos:
- Alicy Nunes Silveira, Amabilli de Souza Ferreira, Arthur Martins Daux Medeiros e C. Luís dos Santos, por serem os melhores companheiros que eu poderia desejar.
- Ao Butisal, por ser a primeira vez que eu faço parte de um grupo de meninas como uma delas (apesar do intruso).
À minha família e ao meu alicerce:
- Lisiane Freitas, amada esposa, amante, cúmplice, confidente e apoio até quando eu mesma acho que não mereço.
- Charlotte, Tobias, Miojo, Nemo, Pru, Ratinha e Tutu, companhias para todos os momentos, mesmo quando só ficam em silêncio ao meu lado.
- Agatha, Pedro e Sophia, filhos que eu desejei e só me enchem de orgulho e, claro, são a razão de continuar aqui.
🕰️ Versão Histórica 1.0 (Protótipo Legado em TypeScript/Vite) ↑
Para fins históricos, didáticos e de comparação de desempenho e evolução da engenharia de software, a primeira versão do simulador permanece disponível online:
Como foi concebida e construída a v1.0
A versão 1.0 foi o protótipo inicial do projeto, desenvolvida em Vanilla TypeScript, empacotada com Vite e executada em um Web Worker que integrava as equações diferenciais pelo método explícito de Forward Euler em JavaScript puro para os modelos atrioventriculares iniciais, desenhando os traçados em um elemento Canvas 2D.
Por que o projeto foi completamente reescrito na v2.0 (Rust + WebAssembly + Dioxus)?
- Rigidez Numérica (Stiffness) e a Transição de Forward Euler para Rush-Larsen: À medida que a simulação incorporou novos modelos acoplados (Purkinje, as 3 camadas ventriculares transmurais e fibroblastos), a rigidez matemática dos canais rápidos de sódio ($\tau_m \approx 0.0008\text{ ms}$) impôs passos microscópicos de integração ($dt = 0.001\text{ ms}$). O navegador precisava processar mais de 8 milhões de avaliações de EDOs por segundo, saturando CPUs modestas e tornando a execução lenta e inviável em celulares. Na v2.0, a reescrita em Rust e a adoção do método de integração exponencial de Rush-Larsen (1978) permitiram multiplicar o passo em 10x ($dt = 0.01\text{ ms}$), reduzindo o consumo de CPU para < 5-10% com estabilidade numérica incondicional.
- Eliminação de Stuttering por Garbage Collection: O motor V8 do JavaScript sofria com pausas intermitentes de desalocação de memória (Garbage Collection) e desotimizações JIT causadas pelo volume constante de arrays transitórios, provocando micro-travamentos no osciloscópio. O WebAssembly em Rust roda com determinismo estrito, latência zero de GC e taxa contínua de 60 FPS.
- Memória Linear Compartilhada (Zero-Copy): Na arquitetura antiga, os buffers de pontos precisavam ser serializados e copiados via mensagens entre o Web Worker e a thread principal de renderização. Na v2.0, a interface reativa em Dioxus e o motor biofísico operam no mesmo espaço de memória linear contígua do Wasm sem nenhuma cópia de dados.
📜 Licença ↑
Distribuído sob a licença GNU General Public License v3.0 (GPLv3). Consulte o arquivo LICENSE para mais detalhes.