Estou tentando simular modelos básicos de semicondutores para fins pedagógicos - a partir do modelo de difusão à deriva. Embora eu não queira usar um simulador de semicondutores pronto para uso - aprenderei outros modelos (comuns, recentes ou obscuros), quero usar um solucionador de PDE pronto para uso.
Mas mesmo para o caso 1D simples, o modelo de difusão à deriva consiste em um número de PDEs não lineares acoplados:
Equações de densidade atual
Equação de continuidade
Equação de Poisson
e várias condições de contorno.
Eu tentei alguns solucionadores python FEM, FEniCS / Dolfin e SfePy , mas sem sorte, devido à incapacidade de formulá-los na forma variacional fraca com funções de teste.
É claro que existe a opção de implementar a solução numérica do zero, mas ainda não estudei o FEM / Numérico, por isso espero que não seja a minha única opção, pois não quero ficar sobrecarregado com problemas numéricos.
Então, existe um pacote (pref. Código aberto) que pegaria essas equações dessa forma e as resolveria? Ou talvez a forma variacional exigida pelas ferramentas não seja tão difícil? De qualquer forma, quais são minhas opções?
obrigado
Edit: Tentativa de formular a forma variacional fraca para FEniCS / Dolfin ou SfePy
Usando três PDEs (Poisson + duas equações de continuidade com J substituído), procuramos V, ne p. A equação de Poisson (usando a função de teste ) é simples. Estou tendo dificuldades, no entanto, com as equações de continuidade.
O segundo PDE (formato forte) onde são constantes, são funções escalares
Deixe denotar uma função de teste para o segundo PDE. Então
Especialmente preocupante é a integral:
Mas é um vetor e são escalares. Em seguida, usando a identidade
Como V é resolvido pela equação de Poisson, podemos usar o valor recentemente calculado como permitido no software Dolfin / FEniCS e simplificar como tratamos V nesta segunda equação acoplada? Esse tipo de técnica funciona enquanto discretiza (por exemplo, Gummel, ...), o que não faço nesses solucionadores prontos!
Além disso, as condições de contorno são fornecidas em termos de não , como você implementa isso? Devo resolver as cinco variáveis , mesmo que seja determinado por V e n?