Próbuję symulować podstawowe modele półprzewodnikowe do celów pedagogicznych - zaczynając od modelu dyfuzyjnego Drifta. Chociaż nie chcę używać gotowego symulatora półprzewodników - nauczę się innych (powszechnych, najnowszych lub niejasnych) modeli, ale chcę używać gotowego solvera PDE.
Ale nawet w prostym przypadku 1D model dyfuzyjno-dyfuzyjny składa się z szeregu sprzężonych nieliniowych PDE:
Równania gęstości prądu J p = q p ( x ) μ p E ( x ) + q D p ∇ p
Równanie ciągłości ∂str
Równanie Poissona
oraz szereg warunków brzegowych.
Wypróbowałem niektóre solwery FEM w Pythonie, FEniCS / Dolfin i SfePy , ale bez powodzenia, ponieważ nie byłem w stanie sformułować ich w słabej formie wariacyjnej z funkcjami testowymi.
Istnieje oczywiście opcja implementacji rozwiązania numerycznego od zera, ale nie studiowałem jeszcze FEM / Numerical dogłębnie, więc mam nadzieję, że nie jest to moja jedyna opcja, ponieważ nie chcę być przytłoczony problemami numerycznymi.
Czy jest więc pakiet (pref. Open source), który wziąłby te równania w tej formie i je rozwiązał? A może forma wariacyjna wymagana przez narzędzia nie jest tak trudna? W każdym razie, jakie są moje opcje?
Dzięki
Edycja: Próba sformułowania słabej formy wariacyjnej dla FEniCS / Dolfin lub SfePy
Skoro V rozwiązuje równanie Poissona, czy możemy wykorzystać ostatnio obliczoną wartość dozwoloną w oprogramowaniu Dolfin / FEniCS i uprościć sposób, w jaki traktujemy V w tym drugim równaniu sprzężonym? Tego rodzaju techniki działają przy dyskretyzacji (np. Gummel, ...), czego nie robię w tych gotowych rozwiązaniach!