add awg wire

This commit is contained in:
2025-12-22 21:02:50 +01:00
parent f452c54368
commit 1fb8f5edd7
2 changed files with 44 additions and 0 deletions

View File

@@ -3,6 +3,9 @@ from fvr.typing import FloatArray
def area(vertices: FloatArray) -> float:
r"""Determine the area of a simple polygon.
Args:
vertices: List of points, pair of x and y: "[[x1, y1], [x2, y2], ...]"
Shoelace formula, Gauss's area formula, surveyor's formula
https://en.wikipedia.org/wiki/Shoelace_formula

41
src/fvr/wire.py Normal file
View File

@@ -0,0 +1,41 @@
import math
class awg:
"""AWG wire.
"""
def __init__(self, number: int|str):
"""Determine parameters for a given AWG wire size.
Args:
number: AWG wire size, also '00', '000', '0000'
"""
self.number = number
self.num2int()
def num2int(self):
if isinstance(self.number, int):
self._number = self.number
elif self.number.isdigit():
if self.number in ['00', '000', '0000']:
self._number = 1 - len(self.number)
else:
self._number = int(self.number)
else:
raise ValueError
@property
def diameter(self):
"""The diameter for a given AWG wire size in mm"""
return 0.127 * 92**((36-self._number)/39)
@property
def area(self):
"""The area for a given AWG wire size in mm²"""
return math.pi/4*self.diameter**2
def __str__(self):
res = (
'%s' % self.number + ' AWG\n'
'A = %.4g' % self.area + ' mm²\n' +
'd = %.4g' % self.diameter + ' mm\n')
return res