Ajuste de datos experimentales
1. Visión general
Del mismo modo que se puede ajustar la ecuación de diodo a una curva JV en oscuridad para extraer el factor de idealidad, OghmaNano le permite ajustar modelos completos de dispositivo directamente a datos experimentales. Al calibrar la simulación con sus mediciones, puede recuperar parámetros físicamente significativos—movilidades, densidades de estados trampa, resistencias de contacto, coeficientes de recombinación—dentro de un marco autoconsistente. En comparación con fórmulas analíticas simples, un ajuste basado en física conserva el acoplamiento óptico–eléctrico y proporciona una visión más rica y fiable de los mecanismos que gobiernan el rendimiento. Este tutorial introduce el flujo de trabajo de ajuste en OghmaNano y muestra cómo elegir variables, seleccionar minimizadores y ejecutar ajustes eficientes y reproducibles.
2. Su primer ajuste
OghmaNano incluye varias simulaciones de demostración que ilustran cómo ajustar modelos a datos experimentales. Una de ellas usa un modelo simple drift–diffusion como ejemplo. Para acceder a ella, haga clic en el icono New simulation en la cinta File para abrir la ventana New simulation (Figura ??). Desde aquí, haga doble clic en la categoría Scripting and fitting para abrir la carpeta mostrada en la Figura ??. Seleccione el ejemplo Fitting and parameter extraction para cargar un proyecto de demostración. Al abrirlo, lanza una simulación simple de célula solar (Figura ??). Aunque esta demostración se centra en una célula solar, el motor de ajuste puede aplicarse a cualquier simulación y conjunto de datos experimentales.
Una vez que haya guardado la nueva simulación, aparecerá la ventana principal de simulación (??). Desde aquí, navegue a la cinta Automation (resaltada en rojo) y seleccione el icono Fit to experiment para acceder a la ventana de ajuste ??.
La ventana de ajuste controla cómo se realiza la optimización: especifica qué conjuntos de datos experimentales se utilizan y qué variables de simulación se ajustan. Puede ajustar a un solo conjunto de datos, como se muestra aquí, o a múltiples conjuntos de datos simultáneamente para una extracción de parámetros más restringida. En la Figura ??, la línea azul representa la curva JV experimental que se utilizará para el ajuste.
💡 Ejercicio práctico: Uso de la ventana de ajuste
- Tarea 1 – Una iteración: Haga clic en el botón One iteration para actualizar la vista de ajuste (??a). En la pestaña Delta = Experiment − Simulation verá la JV simulada (azul) superpuesta a la JV experimental (rojo), además de la curva verde delta definida punto por punto como \( \Delta(V) = J_{\mathrm{exp}}(V) - J_{\mathrm{sim}}(V) \). Un buen punto de partida es cuando la curva verde está cerca de cero en todo el rango de voltaje.
-
Tarea 2 – Ejecutar ajuste:
Pulse Run fit para lanzar el minimizador automatizado (al pulsarlo de nuevo se detiene la ejecución).
Durante los primeros pasos el error puede aumentar brevemente, pero después debería caer a medida que las curvas simulada y
experimental convergen. Cambie a la pestaña Fit progress para representar el error frente a la iteración
(??b); esta gráfica también
se guarda en
fitlog.csven el directorio de simulación para representación externa. En una configuración típica esta etapa dura ~30 s.
3. Añadir y eliminar datos
La ventana principal de ajuste proporciona una barra de herramientas de comandos que controlan cómo se añaden, gestionan y ajustan los experimentos. Estos botones le permiten importar o eliminar conjuntos de datos, configurar qué parámetros se varían e iniciar o detener el proceso de ajuste. Las opciones más importantes son:
- New experiment: Añade otro conjunto de datos experimentales a la ventana de ajuste. Por ejemplo, puede incluir tanto una curva JV con luz como una curva JV en oscuridad. Ajustar frente a múltiples conjuntos de datos mejora la fiabilidad de los parámetros extraídos, pero también hace que el proceso de ajuste sea más lento y más difícil.
- Delete experiment: Elimina del ajuste el conjunto de datos seleccionado.
- Clone experiment: Crea un duplicado del conjunto de datos actual.
- Rename experiment: Permite renombrar el conjunto de datos seleccionado.
- Export data: Guarda el ajuste actual y los datos como un archivo zip comprimido.
- Import data: Carga datos experimentales externos en la ventana de ajuste (véase la sección del Asistente de importación para más detalles).
- Configure: Abre la ventana de configuración para definir qué variables se ajustarán durante el ajuste (explicado en detalle más abajo).
- One iteration: Ejecuta un único paso de ajuste para comprobar cuán cerca está la simulación de los datos experimentales. Se recomienda usar esta opción y ajustar los parámetros manualmente hasta tener un punto de partida razonable antes de ejecutar el ajuste automatizado.
- Run fit: Inicia el algoritmo de ajuste automatizado. El proceso continúa hasta que se detiene manualmente pulsando el botón de nuevo.
- Fit this data set: Activa o desactiva el ajuste para el conjunto de datos actualmente seleccionado.
4. La cinta Minimizer
La cinta Minimizer proporciona control sobre el algoritmo de optimización utilizado durante el ajuste. Desde esta pestaña puede elegir qué minimizador aplicar (por ejemplo, el Nelder–Mead downhill simplex predeterminado) y configurar sus ajustes. La cinta también incluye herramientas para gestionar variables de ajuste, duplicar parámetros y aplicar reglas matemáticas para restringir el ajuste. Ajustando estas opciones, puede controlar cómo el algoritmo explora el espacio de parámetros, equilibrar velocidad frente a precisión y garantizar que se impongan restricciones físicamente significativas durante el proceso de ajuste.
5. Configuración de las variables a ajustar
Para abrir la ventana Fit variables, vaya a la cinta Minimizer en la ventana de ajuste (Figura ??) y haga clic en Fitting variables. Este panel (Figura ??) le permite elegir qué parámetros se varían durante el ajuste y fijar sus límites. Para mayor velocidad y robustez, comience con un pequeño conjunto de parámetros simétricos; añada más (o introduzca asimetría) solo después de tener un ajuste inicial razonable.
La tabla Fit variables contiene siete columnas: Enabled, Variable, Min, Max, Error function, Log scale, y Variable (JSON).
- Enabled: Activa o desactiva el ajuste de la variable.
- Variable: Describe la ruta de la variable a ajustar en inglés.
- Min: El valor mínimo que puede tomar la variable.
- Max: El valor máximo que puede tomar la variable.
- Error function: Penalización añadida al error total de ajuste si la variable se sale de su rango min–max. Esto efectivamente empuja al algoritmo de vuelta dentro de los límites permitidos.
- Log scale: Ajusta el parámetro en escala logarítmica. Útil para variables que abarcan muchos órdenes de magnitud para asegurar que se explore todo el rango.
- Variable (JSON): Normalmente oculta; representa la ruta completa del parámetro en
formato
json. El backend usa esta ruta, mientras que la ruta en English es solo para legibilidad y puede no ser siempre exacta.
6. Duplicación de variables
Abra la ventana Duplicate variables desde la cinta Minimizer (??). Esta herramienta refleja un parámetro origen en un parámetro destino en cada iteración. En el ejemplo de dispositivo simétrico, ajustamos solo el parámetro del lado electrónico y usamos Duplicate variables para copiar su valor al parámetro correspondiente del lado de huecos, manteniéndolos iguales durante todo el ajuste (véase ??).
La columna Function y = f(x) define cómo el valor origen x se transforma antes de ser
escrito en el destino y. El valor predeterminado x realiza una copia directa; también son posibles ejemplos como
2*x (duplicar el valor) o x + 0.05 (aplicar un desplazamiento).
7. Reglas de ajuste
La ventana Fit rules (??), accesible desde la cinta Minimizer, le permite aplicar restricciones matemáticas al proceso de ajuste. Las reglas añaden una penalización a la función de error cuando se viola una condición. Por ejemplo, puede imponer que un parámetro siempre sea mayor que otro, o aplicar una penalización si una variable se desvía fuera de un rango aceptable. Esto ayuda a mantener el ajuste físicamente significativo y evita que el minimizador explore combinaciones de parámetros irreales.
x > y para imponer
relaciones entre parámetros. Si se incumple una regla, se añade un error adicional al ajuste, guiando al
minimizador de vuelta a una región válida del espacio de parámetros.
💡 Consejos y trucos clave para el ajuste:
- En términos generales, el ajuste es un proceso complicado que requiere mucha paciencia y ajuste manual fino. No espere pulsar un botón y que simplemente funcione — tendrá que trabajar cuidadosamente para conseguir buenos ajustes.
- Si el ajuste no funciona, puede que algo esté mal en las suposiciones físicas que ha hecho sobre su dispositivo. El modelo solo ajustará datos físicamente razonables, así que si algo se desvía en un orden de magnitud, reconsidere lo que está pidiendo al modelo. Por ejemplo, si simplemente no consigue que \(J_{sc}\) coincida en una célula solar, ¿podría ser que su material simplemente no esté absorbiendo suficientes fotones para alcanzar el valor de \(J_{sc}\) deseado?
- Diferentes conjuntos de datos proporcionan distintos tipos de información. Por ejemplo, la curva JV en oscuridad de una célula solar da información sobre resistencia shunt, resistencia serie y algunos detalles de movilidad/recombinación. La curva JV con luz, sin embargo, proporciona casi ninguna información sobre la resistencia shunt, así que no espere que dé estimaciones precisas de \(R_{shunt}\). Piense siempre en qué información contienen sus datos antes de interpretar los parámetros ajustados.
- El proceso de ajuste funciona así: 1) ejecutar una simulación; 2) calcular la diferencia entre resultados numéricos y experimentales; 3) retocar parámetros; 4) volver a ejecutar la simulación y comprobar si el error se reduce; 5) si el error se reduce, se acepta el cambio de parámetro y el proceso se repite. Esto puede requerir cientos o miles de iteraciones. Por tanto, las simulaciones individuales deben ejecutarse rápidamente. Por ejemplo, si su malla tiene 1000 puntos, pruebe a reducirla a 10 para el ajuste; si tiene 1000 pasos temporales, reduzca a 100. Cada mejora de velocidad en la simulación base acelera el proceso de ajuste.
- Escribir archivos en disco es la parte más lenta de cualquier proceso computacional. Incluso los SSD modernos son aproximadamente 30× más lentos que la memoria principal (p. ej. 456 MB/s frente a 12,800 MB/s para PC3-12800). Usar unidades USB, almacenamiento en red o servicios en la nube como OneDrive/Dropbox empeora aún más la situación. Para mayor velocidad, guarde siempre las simulaciones en un SSD local (no en una unidad de red o mecánica).
- Minimice el número de archivos que produce su simulación. Desactive salidas innecesarias como snapshots, salida óptica o carpetas dinámicas. Una simulación bien configurada debería producir solo unos 50 archivos. Si ve cientos, investigue por qué.
- Aunque el ajuste puede hacerse en la GUI, a menudo es lento. Una buena práctica es configurar los ajustes en la GUI pero ejecutarlos desde la línea de comandos (más abajo se dan instrucciones).
- Como el ajuste escribe muchos archivos en disco, el software antivirus puede ralentizar el proceso al escanear cada archivo. Considere excluir su carpeta de simulación del escaneo en tiempo real si esto se convierte en un problema.
👉 Siguiente paso: Ahora continúe con Parte B para métodos de ajuste más avanzados.