Ajuste de dados experimentais
1. Visão geral
Assim como você pode ajustar a equação do diodo a uma curva JV no escuro para extrair o fator de idealidade, o OghmaNano permite ajustar modelos completos de dispositivos diretamente a dados experimentais. Ao calibrar a simulação às suas medições, você pode recuperar parâmetros fisicamente significativos — mobilidades, densidades de estados de armadilha, resistências de contato, coeficientes de recombinação — dentro de uma estrutura autoconsistente. Em comparação com fórmulas analíticas simples, um ajuste baseado em física preserva o acoplamento óptico-elétrico e fornece uma compreensão mais rica e confiável dos mecanismos que governam o desempenho. Este tutorial apresenta o fluxo de trabalho de ajuste no OghmaNano e mostra como escolher variáveis, selecionar minimizadores e executar ajustes eficientes e reproduzíveis.
2. Seu primeiro ajuste
OghmaNano inclui várias simulações de demonstração que ilustram como ajustar modelos a dados experimentais. Uma delas usa um modelo simples de drift–diffusion como exemplo. Para acessá-la, clique no ícone Nova simulação na faixa File para abrir a janela Nova simulação (Figura ??). A partir daí, clique duas vezes na categoria Scripting and fitting para abrir a pasta mostrada na Figura ??. Selecione o exemplo Fitting and parameter extraction para carregar um projeto de demonstração. Quando aberto, ele inicia uma simulação simples de célula solar (Figura ??). Embora esta demonstração se concentre em uma célula solar, o mecanismo de ajuste pode ser aplicado a qualquer simulação e conjunto de dados experimentais.
Depois de salvar a nova simulação, a janela principal da simulação aparecerá (??). A partir daí, vá para a faixa Automation (destacada em vermelho) e selecione o ícone Fit to experiment para acessar a janela de ajuste ??.
A janela de ajuste controla como a otimização é realizada: ela especifica quais conjuntos de dados experimentais são usados e quais variáveis de simulação são ajustadas. Você pode ajustar a um único conjunto de dados, como mostrado aqui, ou a múltiplos conjuntos de dados simultaneamente para uma extração de parâmetros mais restrita. Na Figura ??, a linha azul representa a curva JV experimental que será usada no ajuste.
💡 Exercício prático: usando a janela de ajuste
- Tarefa 1 – Uma iteração: Clique no botão One iteration para atualizar a visualização do ajuste (??a). Na aba Delta = Experiment − Simulation você verá a JV simulada (azul) sobreposta à JV experimental (vermelho), além da curva verde delta definida ponto a ponto como \( \Delta(V) = J_{\mathrm{exp}}(V) - J_{\mathrm{sim}}(V) \). Um bom ponto de partida é quando a curva verde está próxima de zero em toda a faixa de tensão.
-
Tarefa 2 – Executar ajuste:
Pressione Run fit para iniciar o minimizador automatizado (pressionar novamente interrompe a execução).
Durante os primeiros passos o erro pode aumentar brevemente, mas depois deve cair à medida que as curvas
simulada e experimental convergem. Mude para a aba Fit progress para plotar o erro em função da iteração
(??b); este gráfico também é
salvo em
fitlog.csvno diretório da simulação para plotagem externa. Em uma configuração típica esta etapa leva ~30 s.
3. Adicionando e removendo dados
A janela principal de ajuste fornece uma barra de ferramentas com comandos que controlam como experimentos são adicionados, gerenciados e ajustados. Esses botões permitem importar ou remover conjuntos de dados, configurar quais parâmetros são variados e iniciar ou interromper o processo de ajuste. As opções mais importantes são:
- New experiment: Adiciona outro conjunto de dados experimentais à janela de ajuste. Por exemplo, você pode incluir tanto uma curva JV sob iluminação quanto uma curva JV no escuro. Ajustar contra múltiplos conjuntos de dados melhora a confiabilidade dos parâmetros extraídos, mas também torna o processo de ajuste mais lento e mais desafiador.
- Delete experiment: Remove o conjunto de dados selecionado do ajuste.
- Clone experiment: Cria uma duplicata do conjunto de dados atual.
- Rename experiment: Permite renomear o conjunto de dados selecionado.
- Export data: Salva o ajuste atual e os dados como um arquivo zip compactado.
- Import data: Carrega dados experimentais externos na janela de ajuste (veja a seção Assistente de Importação para detalhes).
- Configure: Abre a janela de configuração para definir quais variáveis serão ajustadas durante o ajuste (explicado em detalhes abaixo).
- One iteration: Executa uma única etapa de ajuste para verificar quão próxima a simulação está dos dados experimentais. Recomenda-se usar esta opção e ajustar parâmetros manualmente até obter um ponto de partida razoável antes de executar o ajuste automatizado.
- Run fit: Inicia o algoritmo de ajuste automatizado. O processo continua até ser interrompido manualmente pressionando o botão novamente.
- Fit this data set: Habilita ou desabilita o ajuste para o conjunto de dados atualmente selecionado.
4. A faixa do minimizador
A faixa Minimizer fornece controle sobre o algoritmo de otimização usado durante o ajuste. A partir desta aba você pode escolher qual minimizador aplicar (por exemplo, o padrão Nelder–Mead downhill simplex) e configurar suas definições. A faixa também inclui ferramentas para gerenciar variáveis de ajuste, duplicar parâmetros e aplicar regras matemáticas para restringir o ajuste. Ao ajustar essas opções, você pode controlar como o algoritmo explora o espaço de parâmetros, equilibrar velocidade e precisão e garantir que restrições fisicamente significativas sejam impostas durante o processo de ajuste.
5. Definindo as variáveis a ajustar
Para abrir a janela Fit variables, vá para a faixa Minimizer na janela de ajuste (Figura ??) e clique em Fitting variables. Este painel (Figura ??) permite escolher quais parâmetros são variados durante o ajuste e definir seus limites. Para velocidade e robustez, comece com um pequeno conjunto de parâmetros simétricos; adicione mais (ou introduza assimetria) somente depois de obter um ajuste inicial razoável.
A tabela Fit variables contém sete colunas: Enabled, Variable, Min, Max, Error function, Log scale, e Variable (JSON).
- Enabled: Liga ou desliga o ajuste da variável.
- Variable: Descreve o caminho da variável a ser ajustada em inglês.
- Min: O valor mínimo que a variável pode assumir.
- Max: O valor máximo que a variável pode assumir.
- Error function: Penalidade adicionada ao erro total do ajuste se a variável sair do seu intervalo min–max. Isso efetivamente empurra o algoritmo de volta para dentro dos limites permitidos.
- Log scale: Ajusta o parâmetro em escala logarítmica. Útil para variáveis que abrangem muitas ordens de grandeza, garantindo que todo o intervalo seja explorado.
- Variable (JSON): Geralmente oculta; representa o caminho completo do parâmetro em
formato
json. O backend usa esse caminho, enquanto o caminho em inglês é apenas para legibilidade e pode nem sempre ser exato.
6. Duplicando variáveis
Abra a janela Duplicate variables a partir da faixa Minimizer (??). Esta ferramenta espelha um parâmetro fonte em um parâmetro destino a cada iteração. No exemplo de dispositivo simétrico, ajustamos apenas o parâmetro do lado do elétron e usamos Duplicate variables para copiar seu valor para o parâmetro correspondente do lado do buraco, mantendo-os iguais durante todo o ajuste (veja ??).
A coluna Function y = f(x) define como o valor da fonte x é transformado antes de ser
escrito no destino y. O padrão x realiza uma cópia direta; exemplos como
2*x (dobrar o valor) ou x + 0.05 (aplicar um deslocamento) também são possíveis.
7. Regras de ajuste
A janela Fit rules (??), acessada a partir da faixa Minimizer, permite aplicar restrições matemáticas ao processo de ajuste. As regras adicionam uma penalidade à função erro sempre que uma condição é violada. Por exemplo, você pode impor que um parâmetro deve ser sempre maior que outro, ou aplicar uma penalidade se uma variável sair de um intervalo aceitável. Isso ajuda a manter o ajuste fisicamente significativo e evita que o minimizador explore combinações de parâmetros irreais.
x > y para impor
relacionamentos entre parâmetros. Se uma regra for violada, um erro adicional é adicionado ao ajuste, guiando o
minimizador de volta para uma região válida do espaço de parâmetros.
💡 Dicas e truques principais para ajuste:
- De modo geral, ajuste é um processo difícil que requer muita paciência e refinamento manual. Não espere clicar em um botão e simplesmente funcionar — você precisará trabalhar com cuidado para obter bons ajustes.
- Se o ajuste não estiver funcionando, algo pode estar errado com as hipóteses físicas que você fez sobre o dispositivo. O modelo só ajustará dados fisicamente razoáveis, então, se algo estiver errado por uma ordem de grandeza, reconsidere o que você está pedindo ao modelo. Por exemplo, se você simplesmente não conseguir fazer o \(J_{sc}\) coincidir em uma célula solar, será que o seu material simplesmente não está absorvendo fótons suficientes para atingir o valor desejado de \(J_{sc}\)?
- Diferentes conjuntos de dados fornecem diferentes tipos de informação. Por exemplo, a curva JV no escuro de uma célula solar fornece informações sobre resistência shunt, resistência série e alguns detalhes de mobilidade/recombinação. A curva JV sob iluminação, porém, fornece quase nenhuma informação sobre resistência shunt, portanto não espere que ela forneça estimativas precisas de \(R_{shunt}\). Sempre pense sobre quais informações seus dados contêm antes de interpretar os parâmetros ajustados.
- O processo de ajuste funciona assim: 1) executar uma simulação; 2) calcular a diferença entre resultados numéricos e experimentais; 3) ajustar parâmetros; 4) executar novamente a simulação e verificar se o erro diminui; 5) se o erro diminuir, a mudança do parâmetro é aceita e o processo se repete. Isso pode levar centenas ou milhares de iterações. Portanto, as simulações individuais devem executar rapidamente. Por exemplo, se sua malha tiver 1000 pontos, tente reduzi-la para 10 para o ajuste; se você tiver 1000 passos de tempo, reduza para 100. Cada aceleração na simulação base acelera o processo de ajuste.
- Escrever arquivos em disco é a parte mais lenta de qualquer processo computacional. Mesmo SSDs modernos são cerca de 30× mais lentos do que a memória principal (por exemplo, 456 MB/s vs 12,800 MB/s para PC3-12800). Usar drives USB, armazenamento em rede ou serviços em nuvem como OneDrive/Dropbox torna isso ainda pior. Para velocidade, sempre salve simulações em um SSD local (não em uma unidade de rede ou mecânica).
- Minimize o número de arquivos que sua simulação produz. Desative saídas desnecessárias como snapshots, saída óptica ou pastas dinâmicas. Uma simulação bem configurada deve produzir apenas cerca de 50 arquivos. Se você vir centenas, investigue o motivo.
- Embora o ajuste possa ser feito na interface gráfica, ele costuma ser lento. Uma boa prática é configurar os ajustes na GUI, mas executá-los a partir da linha de comando (instruções são dadas abaixo).
- Como o ajuste grava muitos arquivos em disco, softwares antivírus podem tornar tudo mais lento ao verificar cada arquivo. Considere excluir sua pasta de simulação da verificação em tempo real se isso se tornar um problema.
👉 Próximo passo: Agora continue para a Parte B para métodos de ajuste mais avançados.