Estoy tratando de simular modelos básicos de semiconductores con fines pedagógicos, comenzando por el modelo de difusión de deriva. Aunque no quiero usar un simulador de semiconductores estándar, aprenderé otros modelos (comunes, recientes u oscuros), sí quiero usar un solucionador de PDE estándar.
Pero incluso para el caso simple de 1D, el modelo de deriva-difusión consta de una serie de PDE no lineales acopladas:
Ecuaciones de densidad de corriente
Ecuación de continuidad
Ecuación de Poisson
y una serie de condiciones de contorno.
He intentado algunos solucionadores de Python FEM, FEniCS / Dolfin y SfePy , pero sin suerte, debido a que no puedo formularlos en la forma variada débil con funciones de prueba.
Por supuesto, existe la opción de implementar la solución numérica desde cero, pero aún no he estudiado FEM / Numerical en profundidad, así que espero que no sea mi única opción, ya que no quiero estar abrumado con problemas numéricos.
Entonces, ¿hay un paquete (pref. Código abierto) que tome estas ecuaciones, en esa forma, y las resuelva? ¿O tal vez la forma variacional requerida por las herramientas no es tan difícil? En cualquier caso, ¿cuáles son mis opciones?
Gracias
Editar: Intento de formular la forma variacional débil para FEniCS / Dolfin o SfePy
Usando tres PDE (Poisson + dos ecuaciones de continuidad con J sustituido), estamos buscando V, ny p. La ecuación de Poisson (usando una función de prueba ) es directa. Sin embargo, estoy teniendo dificultades con las ecuaciones de continuidad.
El segundo PDE (forma fuerte) donde son constantes, son funciones escalares
Deje denotar una función de prueba para el segundo PDE. Luego
Especialmente preocupante es la integral:
Pero es un vector, y son escalares. Luego, usando la identidad
Dado que V se resuelve mediante la ecuación de Poisson, ¿podemos usar el valor calculado recientemente como se permite en el software Dolfin / FEniCS y simplificar cómo tratamos a V en esta segunda ecuación acoplada? Este tipo de técnicas funcionan mientras discretizan (por ejemplo, Gummel, ...), ¡lo cual no hago en estos solucionadores listos!
Además, las condiciones de contorno se dan en términos de no , ¿cómo implementa esto? ¿Debo resolver las cinco variables , aunque está determinado por V y n?