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
- Max electrical iterations (first step) — Límite superior de pasos de Newton para la primera resolución (a menudo a 0 V en oscuridad). Un margen mayor ayuda en arranques en frío difíciles.
- Electrical clamp (first step) — Escala la actualización máxima de Newton en el primer paso. Como regla práctica: 0.1 es muy seguro (lento), 1.0 es un buen valor por defecto, ≥2.0 puede ser rápido pero menos estable.
- Desired solver error (first step) — Objetivo de convergencia para la primera resolución (más pequeño = más preciso pero más lento). Aceptación típica: no peor que \(1\times10^{-5}\); para arranques robustos puede fijar \(1\times10^{-8}\)–\(1\times10^{-9}\).
Iteraciones posteriores
- Max electrical iterations — Límite de iteraciones para todas las resoluciones posteriores a la primera.
- Electrical clamp — Como arriba, pero aplicado a cada paso excepto el primero. A menudo puede relajarlo respecto al primer paso para ganar velocidad.
- Desired solver error — Objetivo de convergencia para pasos rutinarios. Manténgalo coherente con sus necesidades de precisión; \(1\times10^{-6}\)–\(1\times10^{-8}\) son valores comunes.
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.
- Max electrical iterations (ramp) — Límite para cada paso de la rampa.
- Electrical clamp (ramp) — Control del tamaño de paso durante la rampa.
- Desired solver error (ramp) — Objetivo de convergencia usado solo para pasos de rampa.
- Newton minimum iterations — Fuerza al menos este número de pasos para que el solver no termine demasiado pronto solo porque el residuo inicial resulte pequeño.
Estrategia de salida
- Newton solver clever exit — Si el residuo “rebota en el ruido” (sube–baja sin tendencia), detiene las iteraciones y acepta el mejor estado encontrado hasta el momento.
- Solve Kirchhoff’s current law in Newton solver — Incluye las restricciones KCL directamente en el Jacobiano para una continuidad de corriente más estricta.
- Quit on convergence problem / Quit on inverted Fermi-level — Protecciones de parada estricta para estados claramente incorrectos.
Tipo de solver y herramientas
- Newton solver to use — Elija el algoritmo:
none— Sin resolución eléctrica (solo óptica/térmica).newton— Solver Newton 1D estándar.
- Matrix solver / Complex matrix solver — Seleccione el backend del solver lineal.
- Slotboom T0 / D0 / n0 — Parámetros para
newtonnorm. - Use newton cache (experimental) — Vuelca grandes datos intermedios a disco para reducir la presión de memoria (experimental).
- Solver output verbosity — Controla cuánta información de progreso se imprime.
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.