Example #1
0
 def d_rho_dDPsi(z, Psi):
     dn_nodes, dp_nodes = SchDiode.dn_carriers_dEf_theory(Psi, z)
     if SchDiode.Semiconductor.dop_type == 'n':
         dp_nodes = np.zeros_like(z)
     elif SchDiode.Semiconductor.dop_type == 'p':
         dn_nodes = np.zeros_like(z)
     d_carriers_nodes = dn_nodes - dp_nodes
     dN_dopants_nodes = np.zeros_like(z)
     for dopant in SchDiode.Semiconductor.dopants:
         dN_dopants_nodes += dopant.concentration(z) * (
             dopant.charge_states[1][0] - dopant.charge_states[0][0]) * dopant.dF(z)
     dN_BI_nodes = np.zeros_like(z)
     for BI in SchDiode.Semiconductor.bonding_interfaces:
         dN_BI_nodes += smooth_dd(z - BI.depth, BI.smooth_dirac_epsilon) * BI.d_density_of_charge
     return (d_carriers_nodes - dN_dopants_nodes - dN_BI_nodes) * to_numeric(q ** 2) / Eps0Eps
Example #2
0
 def rho_z_Psi(z, Psi):
     rho = 0
     if carriers_charge:
         if Psi != Psi_zero:
             n, p = self.n_carriers_theory(Psi, z)
             if self.Semiconductor.dop_type == 'n':
                 p = 0
             elif self.Semiconductor.dop_type == 'p':
                 n = 0
             rho += p - n
     for dopant in self.Semiconductor.dopants:
         Nd = dopant.concentration(z)
         rho += Nd * (
             (dopant.charge_states[1][0] - dopant.charge_states[0][0]) * dopant.F(z) +
             dopant.charge_states[0][
                 0])
     for BI in self.Semiconductor.bonding_interfaces:
         rho += smooth_dd(z - BI.depth, BI.smooth_dirac_epsilon) * BI.density_of_charge
     return to_numeric(q) * rho
Example #3
0
 def d_rho_dDPsi(z, Psi):
     dn_nodes, dp_nodes = SchDiode.dn_carriers_dEf_theory(Psi, z)
     if SchDiode.Semiconductor.dop_type == 'n':
         dp_nodes = np.zeros_like(z)
     elif SchDiode.Semiconductor.dop_type == 'p':
         dn_nodes = np.zeros_like(z)
     d_carriers_nodes = dn_nodes - dp_nodes
     dN_dopants_nodes = np.zeros_like(z)
     for dopant in SchDiode.Semiconductor.dopants:
         dN_dopants_nodes += dopant.concentration(z) * (
             dopant.charge_states[1][0] -
             dopant.charge_states[0][0]) * dopant.dF(z)
     dN_BI_nodes = np.zeros_like(z)
     for BI in SchDiode.Semiconductor.bonding_interfaces:
         dN_BI_nodes += smooth_dd(
             z - BI.depth,
             BI.smooth_dirac_epsilon) * BI.d_density_of_charge
     return (d_carriers_nodes - dN_dopants_nodes -
             dN_BI_nodes) * to_numeric(q**2) / Eps0Eps