MCPcopy
hub / github.com/TheAlgorithms/Python / carrier_concentration

Function carrier_concentration

electronics/carrier_concentration.py:8–69  ·  view source on GitHub ↗

This function can calculate any one of the three - 1. Electron Concentration 2, Hole Concentration 3. Intrinsic Concentration given the other two. Examples - >>> carrier_concentration(electron_conc=25, hole_conc=100, intrinsic_conc=0) ('intrinsic_conc', 50.0) >>>

(
    electron_conc: float,
    hole_conc: float,
    intrinsic_conc: float,
)

Source from the content-addressed store, hash-verified

6
7
8def carrier_concentration(
9 electron_conc: float,
10 hole_conc: float,
11 intrinsic_conc: float,
12) -> tuple:
13 """
14 This function can calculate any one of the three -
15 1. Electron Concentration
16 2, Hole Concentration
17 3. Intrinsic Concentration
18 given the other two.
19 Examples -
20 >>> carrier_concentration(electron_conc=25, hole_conc=100, intrinsic_conc=0)
21 ('intrinsic_conc', 50.0)
22 >>> carrier_concentration(electron_conc=0, hole_conc=1600, intrinsic_conc=200)
23 ('electron_conc', 25.0)
24 >>> carrier_concentration(electron_conc=1000, hole_conc=0, intrinsic_conc=1200)
25 ('hole_conc', 1440.0)
26 >>> carrier_concentration(electron_conc=1000, hole_conc=400, intrinsic_conc=1200)
27 Traceback (most recent call last):
28 ...
29 ValueError: You cannot supply more or less than 2 values
30 >>> carrier_concentration(electron_conc=-1000, hole_conc=0, intrinsic_conc=1200)
31 Traceback (most recent call last):
32 ...
33 ValueError: Electron concentration cannot be negative in a semiconductor
34 >>> carrier_concentration(electron_conc=0, hole_conc=-400, intrinsic_conc=1200)
35 Traceback (most recent call last):
36 ...
37 ValueError: Hole concentration cannot be negative in a semiconductor
38 >>> carrier_concentration(electron_conc=0, hole_conc=400, intrinsic_conc=-1200)
39 Traceback (most recent call last):
40 ...
41 ValueError: Intrinsic concentration cannot be negative in a semiconductor
42 """
43 if (electron_conc, hole_conc, intrinsic_conc).count(0) != 1:
44 raise ValueError("You cannot supply more or less than 2 values")
45 elif electron_conc < 0:
46 raise ValueError("Electron concentration cannot be negative in a semiconductor")
47 elif hole_conc < 0:
48 raise ValueError("Hole concentration cannot be negative in a semiconductor")
49 elif intrinsic_conc < 0:
50 raise ValueError(
51 "Intrinsic concentration cannot be negative in a semiconductor"
52 )
53 elif electron_conc == 0:
54 return (
55 "electron_conc",
56 intrinsic_conc**2 / hole_conc,
57 )
58 elif hole_conc == 0:
59 return (
60 "hole_conc",
61 intrinsic_conc**2 / electron_conc,
62 )
63 elif intrinsic_conc == 0:
64 return (
65 "intrinsic_conc",

Callers

nothing calls this directly

Calls 1

countMethod · 0.80

Tested by

no test coverage detected