Skip to content

Commit 038f8a0

Browse files
add electric conductivity algorithm (TheAlgorithms#7449)
* add electric conductivity algorithm * Update electric_conductivity.py * Apply suggestions from code review Co-authored-by: Caeden Perelli-Harris <[email protected]> * Update electric_conductivity.py * Update electric_conductivity.py * Update electric_conductivity.py * add algorithm Co-authored-by: Caeden Perelli-Harris <[email protected]>
1 parent 7b521b6 commit 038f8a0

File tree

2 files changed

+104
-0
lines changed

2 files changed

+104
-0
lines changed

electronics/electric_conductivity.py

+53
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
from __future__ import annotations
2+
3+
ELECTRON_CHARGE = 1.6021e-19 # units = C
4+
5+
6+
def electric_conductivity(
7+
conductivity: float,
8+
electron_conc: float,
9+
mobility: float,
10+
) -> tuple[str, float]:
11+
"""
12+
This function can calculate any one of the three -
13+
1. Conductivity
14+
2. Electron Concentration
15+
3. Electron Mobility
16+
This is calculated from the other two provided values
17+
Examples -
18+
>>> electric_conductivity(conductivity=25, electron_conc=100, mobility=0)
19+
('mobility', 1.5604519068722301e+18)
20+
>>> electric_conductivity(conductivity=0, electron_conc=1600, mobility=200)
21+
('conductivity', 5.12672e-14)
22+
>>> electric_conductivity(conductivity=1000, electron_conc=0, mobility=1200)
23+
('electron_conc', 5.201506356240767e+18)
24+
"""
25+
if (conductivity, electron_conc, mobility).count(0) != 1:
26+
raise ValueError("You cannot supply more or less than 2 values")
27+
elif conductivity < 0:
28+
raise ValueError("Conductivity cannot be negative")
29+
elif electron_conc < 0:
30+
raise ValueError("Electron concentration cannot be negative")
31+
elif mobility < 0:
32+
raise ValueError("mobility cannot be negative")
33+
elif conductivity == 0:
34+
return (
35+
"conductivity",
36+
mobility * electron_conc * ELECTRON_CHARGE,
37+
)
38+
elif electron_conc == 0:
39+
return (
40+
"electron_conc",
41+
conductivity / (mobility * ELECTRON_CHARGE),
42+
)
43+
else:
44+
return (
45+
"mobility",
46+
conductivity / (electron_conc * ELECTRON_CHARGE),
47+
)
48+
49+
50+
if __name__ == "__main__":
51+
import doctest
52+
53+
doctest.testmod()

physics/sheer_stress.py

+51
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
from __future__ import annotations
2+
3+
4+
def sheer_stress(
5+
stress: float,
6+
tangential_force: float,
7+
area: float,
8+
) -> tuple[str, float]:
9+
"""
10+
This function can calculate any one of the three -
11+
1. Sheer Stress
12+
2. Tangential Force
13+
3. Cross-sectional Area
14+
This is calculated from the other two provided values
15+
Examples -
16+
>>> sheer_stress(stress=25, tangential_force=100, area=0)
17+
('area', 4.0)
18+
>>> sheer_stress(stress=0, tangential_force=1600, area=200)
19+
('stress', 8.0)
20+
>>> sheer_stress(stress=1000, tangential_force=0, area=1200)
21+
('tangential_force', 1200000)
22+
"""
23+
if (stress, tangential_force, area).count(0) != 1:
24+
raise ValueError("You cannot supply more or less than 2 values")
25+
elif stress < 0:
26+
raise ValueError("Stress cannot be negative")
27+
elif tangential_force < 0:
28+
raise ValueError("Tangential Force cannot be negative")
29+
elif area < 0:
30+
raise ValueError("Area cannot be negative")
31+
elif stress == 0:
32+
return (
33+
"stress",
34+
tangential_force / area,
35+
)
36+
elif tangential_force == 0:
37+
return (
38+
"tangential_force",
39+
stress * area,
40+
)
41+
else:
42+
return (
43+
"area",
44+
tangential_force / stress,
45+
)
46+
47+
48+
if __name__ == "__main__":
49+
import doctest
50+
51+
doctest.testmod()

0 commit comments

Comments
 (0)