Inicio Ejemplos Capturas de pantalla Manual de usuario Logotipo de Bluesky YouTube
OghmaNano Simule células solares orgánicas/de perovskita, OFETs y OLEDs DESCARGAR

Configuración del solver Drift–Diffusion

El solver Drift–Diffusion puede configurarse seleccionando Configure en la cinta Electrical. Esto abre la ventana de configuración del solver, donde pueden ajustarse propiedades numéricas como límites de iteración, tolerancias de error y estrategias de convergencia. Estas opciones permiten al usuario controlar el rendimiento y la estabilidad del solver para diferentes simulaciones de dispositivos.

Configuración del solver eléctrico

El motor eléctrico de OghmaNano resuelve un conjunto fuertemente acoplado de ecuaciones no lineales (Poisson + drift–diffusion, más cualquier cinética habilitada). Estas ecuaciones contienen exponenciales y acoplamientos fuertes, por lo que se resuelven iterativamente utilizando un método de Newton–Raphson sobre un único Jacobiano global. Normalmente no necesitará cambiar los valores por defecto, pero el panel de configuración le permite estabilizar casos difíciles, acelerar los fáciles o inspeccionar cómo se comporta la parte numérica.

Abra la configuración yendo a la pestaña Electrical, seleccionando Drift–diffusion y eligiendo Configure — véase DD Solver Open. Esto abre la ventana mostrada en DD Solver Window, donde puede ajustar cómo el solver itera y converge.

Qué controla cada sección

El panel está dividido en cuatro bloques principales que gobiernan distintas fases de una ejecución: First iteration, Later iterations, Voltage ramp, y Exit strategy. En todas las fases la idea central es la misma: partir de una estimación, actualizar las incógnitas con pasos de Newton y detenerse cuando el error global sea suficientemente pequeño. Un clamp limita la actualización máxima por paso para evitar que el solver salte a regiones no físicas. Clamps pequeños → más lento pero muy estable; clamps grandes → más rápido pero potencialmente inestable.

Primera iteración

Iteraciones posteriores

Rampa de voltaje

Cuando se realiza una rampa desde una polarización inicial (por ejemplo 0 V) hasta un punto de operación objetivo (posiblemente a alto voltaje), las resoluciones intermedias suelen ser solo puntos de paso. Este bloque le permite usar tolerancias más laxas o clamps diferentes para atravesar la rampa más rápido mientras mantiene estrictas las resoluciones del punto de operación final.

Estrategia de salida

Tipo de solver y herramientas

Guía práctica

Si un caso es delicado (alto dopado, campos extremos, fuerte inyección), reduzca el clamp y haga más estricta la tolerancia del primer paso. Para casos fáciles y bien comportados, aumente el clamp para ganar velocidad. Use el bloque de rampa para llegar rápidamente a su punto de operación y luego imponga allí tolerancias más estrictas.

Véase también: La entrada de configuración mostrada en DD Solver Open y el cuadro de diálogo completo en DD Solver Window.

Estabilidad del solver

OghmaNano es un simulador numérico que resuelve un conjunto fuertemente acoplado de ecuaciones diferenciales para carga, potencial y recombinación. Como cualquier solver numérico, necesita parámetros de entrada físicamente realistas para converger con éxito. Valores exactamente cero, infinitamente grandes o extendidos a través de demasiados órdenes de magnitud pueden hacer que las operaciones matriciales subyacentes se vuelvan inestables. Para ayudarle a evitar estos problemas, esta sección destaca algunas consideraciones prácticas al configurar sus simulaciones.

Cómo evitar números muy grandes y muy pequeños

Abra MATLAB (u Octave en Linux) y escriba la siguiente expresión: \(((1e-1+1e1)-1e1)/1e-1\). Antes de pulsar Enter, evalúela mentalmente: los \(1e1\) y \(-1e1\) se cancelan, dejando \(\frac{1e-1}{1e-1}=1\). Ahora sustituya las potencias de 10 por 19 y pruebe: \(((1e-19+1e19)-1e19)/1e-19\). De nuevo, sobre el papel el resultado debería ser \(1\).

Sin embargo, cuando deja que el ordenador lo evalúe, la respuesta será \(0\), no \(1\). Esto sucede porque los ordenadores almacenan números con precisión limitada (unas 15–16 cifras decimales en una máquina moderna). Cuando suma \(1e-19\) a \(1e19\), el término más pequeño se pierde por redondeo, así que el ordenador ve \(1.000000000000000e19\) en lugar de \(1.0000000000000000001e19\). Restar \(1e19\) da entonces exactamente cero, y la contribución de \(1e-19\) desaparece.

La precisión numérica importa

Si su simulación involucra parámetros que abarcan demasiados órdenes de magnitud, el solver puede perder precisión. Intente evitar relaciones extremas, especialmente en movilidad o densidad de estados, para garantizar la estabilidad.

Todos los ordenadores están afectados por esto, por potentes que sean. Para simulaciones de dispositivos, esto significa que debe evitar rangos de parámetros que creen matrices con números muy grandes y muy pequeños uno al lado del otro. Por ejemplo, movilidades de \(1e-19\) junto a \(1e5\) causarán dificultades numéricas. Esto es especialmente importante al simular aislantes.

Evite los ceros

Los valores cero provocan errores de división por cero. No establezca movilidades, secciones eficaces de captura, pendientes de cola, o densidades de estados exactamente a cero. Está bien usar cero para las constantes de recombinación.

⚠️ Evite ceros exactos

Sustituya los ceros por valores muy pequeños (por ejemplo \(1e-30\)) para evitar inestabilidades numéricas mientras sigue aproximando “casi cero”.

Saltos muy grandes en el band gap

Grandes saltos de energía en el band gap producen densidades de portadores extremadamente pequeñas o extremadamente grandes, lo que conduce directamente a los mismos problemas de precisión descritos en Cómo evitar números muy grandes y muy pequeños. Mantenga una discretización energética lo bastante fina para evitar saltos no físicos.

🔍 Compruebe su malla

Si la discretización de su band gap es demasiado gruesa, puede generar densidades de portadores no físicas. Refine la malla para mantener los valores dentro de un rango numéricamente estable.