15#include <plask/python.hpp>
16#include <plask/common/fem/python.hpp>
20#include "../ddm2d.hpp"
23template <
typename GeometryT>
24inline static void register_drift_diffusion_solver(
const char* name,
const char*
geoname)
29 u8"{0}(name=\"\")\n\n"
31 u8"Finite element drift-diffusion electrical solver for 2D {1} geometry."
33 , name,
geoname).
c_str(), py::init<std::string>(py::arg(
"name")=
""));
34 METHOD(compute, compute,
u8"Run drift-diffusion calculations", py::arg(
"loops")=0);
35 METHOD(get_total_current, getTotalCurrent,
u8"Get total current flowing through active region (mA)", py::arg(
"nact")=0);
48 BOUNDARY_CONDITIONS(voltage_boundary,
u8"Boundary conditions of the first kind (constant potential)");
49 solver.def_readwrite(
"maxerrVi", &__Class__::maxerrPsiI,
u8"Limit for the initial potential estimate updates");
50 solver.def_readwrite(
"maxerrV0", &__Class__::maxerrPsi0,
u8"Limit for the built-in potential updates");
51 solver.def_readwrite(
"maxerrV", &__Class__::maxerrPsi,
u8"Limit for the potential updates");
52 solver.def_readwrite(
"maxerrFn", &__Class__::maxerrFn,
u8"Limit for the electrons quasi-Fermi level updates");
53 solver.def_readwrite(
"maxerrFp", &__Class__::maxerrFp,
u8"Limit for the holes quasi-Fermi level updates");
54 solver.def_readwrite(
"loopsVi", &__Class__::loopsPsiI,
u8"Loops limit for the initial potential estimate");
55 solver.def_readwrite(
"loopsV0", &__Class__::loopsPsi0,
u8"Loops limit for the built-in potential");
56 solver.def_readwrite(
"loopsV", &__Class__::loopsPsi,
u8"Loops limit for the potential");
57 solver.def_readwrite(
"loopsFn", &__Class__::loopsFn,
u8"Loops limit for the electrons quasi-Fermi level");
58 solver.def_readwrite(
"loopsFp", &__Class__::loopsFp,
u8"Loops limit for the holes quasi-Fermi level");
59 solver.def_readwrite(
"Rsrh", &__Class__::mRsrh,
u8"True if SRH recombination is taken into account");
60 solver.def_readwrite(
"Rrad", &__Class__::mRrad,
u8"True if radiative recombination is taken into account");
61 solver.def_readwrite(
"Raug", &__Class__::mRaug,
u8"True if Auger recombination is taken into account");
62 solver.def_readwrite(
"Pol", &__Class__::mPol,
u8"True if polarization effects are taken into account");
63 solver.def_readwrite(
"FullIon", &__Class__::mFullIon,
u8"True if dopants are completely ionized");
64 solver.def_readwrite(
"SchottkyP", &__Class__::mSchottkyP,
u8"Schottky barrier for p-type contact");
65 solver.def_readwrite(
"SchottkyN", &__Class__::mSchottkyN,
u8"Schottky barrier for n-type contact");
98 .value(
"MAXWELL_BOLTZMANN",
STAT_MB)
103 .value(
"OHMIC",
OHMIC)