コード例 #1
0
ファイル: ballistic2d.py プロジェクト: jmotohisa/fetmodel
def n2D(Vds, Vgs, p, EFs):
    ene0 = E0_2d_root(Vds, Vgs, EFs, p)
    n2dos = p.ems*const.electron_mass / \
            (math.pi*const.hbar**2)*p.temp*const.Boltzmann
    beta = const.elementary_charge/(p.temp*const.Boltzmann)
    ns = (fdint.fdk(0, beta*(EFs-ene0))+fdint.fdk(0, beta*(EFs-ene0-Vds)))/2*n2dos
    return ns
コード例 #2
0
def cylinder_seebeck(cp):
    '''seebeck coefficient (V/K)'''

    try:
        return (constant['k'] /
                constant['e']) * (2.0 * fdk(1, cp) / fdk(0, cp) - cp)
    except ValueError:
        return 0.
コード例 #3
0
def fermi_fdint(nu):
    """
    Fermi-Dirac integral of order 1/2 calculated using `fdint` package.
    """
    F = fdk(k=0.5, phi=nu)
    F *= 2 / np.sqrt(np.pi)
    return F
コード例 #4
0
def powerlaw_seebeck(cp, s):
    '''
    returns the seebeck coeficient (V/K)

    Args:
      cp: (float/ndarray) reduced chemical potential, unitless
      s: (int) energy exponent restricted to integer/half-integer, unitless

    Returns: (float/ndarray)
    '''

    if s == 0:  # s=0 requires analytic simplification
        return constant['k'] / constant['e'] * ((
            (1. + np.exp(-cp)) * fdk(0, cp)) - cp)
    else:
        return constant['k'] / constant['e'] * ((
            (s + 1.) * fdk(s, cp) / s / fdk(s - 1, cp)) - cp)
コード例 #5
0
ファイル: nwrta.py プロジェクト: araghukas/bte35
 def calculate_n_j(self, j, Ef):
     """
     Calculates electron concentration in the `j`th sub-band [1/m^3]
     """
     c = 1. / (np.pi**2 * self.R**2) * np.sqrt(2. * const.k * self.T * self.meG) / const.hbar
     eta = (float(Ef) - self.E_lns_CB[j]) / const.k / self.T
     n_j = c * fdk(-1 / 2, eta)
     self.n_js[j] = n_j
     return n_j
コード例 #6
0
ファイル: misc.py プロジェクト: smhooten/reqns
def fermi_dirac_integral(k, phi):
    if k == 0.5:
        gamma = np.sqrt(pi) / 2
    elif k == 0:
        gamma = 1
    elif k == -0.5:
        gamma = sqrt(pi)
    else:
        raise ValueError('k is not the correct value')

    fd = (1 / gamma) * fdk(k, phi)
    return fd
コード例 #7
0
ファイル: nwrta.py プロジェクト: araghukas/bte35
    def calculate_p(self, Ef, T):
        """
        Calculates total hole concentration [1/m^3]
        """
        c = 1. / (np.pi**2 * self.R**2) * np.sqrt(2. * const.k * T * self.mat.mh_DOS) / const.hbar
        p_ = 0.
        Eg = self.mat.get_Eg(T)
        for E_ln in self.E_lns_VB:
            eta = -(float(Ef) + E_ln + Eg) / const.k / T
            p_ += c * fdk(-1 / 2, eta)

        return p_
コード例 #8
0
ファイル: ballistic2d.py プロジェクト: jmotohisa/fetmodel
def Ids_ballistic2d_0(Vds, Vgs, p, EFs):
    ene0 = E0_2d_root(Vds, Vgs, EFs, p)
    n2d = p.ems*const.electron_mass / \
        (math.pi*const.hbar**2)*p.temp*const.Boltzmann
    beta = const.elementary_charge/(p.temp*const.Boltzmann)
    ns = (fdint.fdk(0, beta*(EFs-ene0))+fdint.fdk(0, beta*(EFs-ene0-Vds)))/2*n2d
    v0 = math.sqrt(2*p.temp*const.Boltzmann /
                   (math.pi*p.ems*const.electron_mass))
    v1 = fdint.fdk(0.5, beta*(EFs-ene0))*(2/math.sqrt(math.pi))
    v2 = fdint.fdk(0, beta*(EFs-ene0))
    vinj = v0*v1/v2
    f1 = 1 - fdint.fdk(0.5, beta*(EFs-ene0-Vds))/fdint.fdk(0.5, beta*(EFs-ene0))
    f2 = 1 + fdint.fdk(0, beta*(EFs-ene0-Vds))/fdint.fdk(0, beta*(EFs-ene0))
    return const.elementary_charge*ns*vinj*f1/f2
コード例 #9
0
def powerlaw_conductivity(cp, s, sigma_E_0):
    '''
    returns the electrical conductivity (S/m)

    Args:
      cp: (float/ndarray) reduced chemical potential, unitless
      s: (int) energy exponent restricted to integer/half-integer, unitless
      sigma_E_0: (float) powerlaw prefactor, S/m

    Returns: (float/ndarray)
    '''

    if s == 0:  # s=0 requires analytic simplification
        return sigma_E_0 / (1. + np.exp(-cp))
    else:
        return sigma_E_0 * s * fdk(s - 1, cp)
コード例 #10
0
def seebeck_spb(eta, Lambda=0.5):
    return BOLTZMANN_CONST / ELECTRON_CHARGE * (
        (2. + Lambda) * fdk(1. + Lambda, eta) /
        ((1. + Lambda) * fdk(Lambda, eta)) - eta) * 1e+6
コード例 #11
0
def seebeck_eff_mass_from_carr(eta, n, T, Lambda):
    """  eta in kB*T units, n in cm-3, T in K
        returns mass in m0 units """
    return (2 * np.pi**2 * abs(n) * 10 ** 6 / (fdk(0.5,eta))) ** (2. / 3)\
            / (2 * ELECTRON_MASS * BOLTZMANN_CONST * T / (PLANCK_CONSTANT/2/np.pi) ** 2)
コード例 #12
0
def cylinder_conductivity(cp, T, tau_0, l):
    '''electrical conductivity (S/m)'''

    return (constant['e']**2. * l / 2. / constant['pi']**2. /
            constant['hbar']**2. * constant['k'] * T * tau_0 * fdk(0, cp))
コード例 #13
0
def cylinder_carriers(cp, T, mstar, l):
    '''carrier concentration (1/m3)'''

    return fdk(0, cp) * (l * mstar / 2. / constant['pi']**2. /
                         constant['hbar']**2. * constant['k'] * T)
コード例 #14
0
ファイル: sphere_model.py プロジェクト: dyllamt/semitransport
def sphere_conductivity(cp, T, tau_0, mstar):
    '''electrical conductivity (S/m)'''

    return (tau_0 * fdk(0, cp) * 8. * constant['pi'] * mstar**0.5 *
            constant['e']**2. * (2. * constant['k'] * T)**1.5 / 3. /
            constant['h']**3.)
コード例 #15
0
ファイル: sphere_model.py プロジェクト: dyllamt/semitransport
def sphere_carriers(cp, T, mstar):
    '''carrier concentration (1/m3)'''

    return fdk(
        0.5, cp) * (4. * constant['pi'] *
                    (2. * mstar * constant['k'] * T / constant['h']**2.)**1.5)