Source code for pymead.core.units
import numpy as np
[docs]
class Units:
[docs]
def __init__(self):
self._BASE_LENGTH_UNIT = "m"
self._BASE_AREA_UNIT = "m2"
self._BASE_ANGLE_UNIT = "rad"
self._LENGTH_UNIT = self._BASE_LENGTH_UNIT
self._AREA_UNIT = self._BASE_AREA_UNIT
self._ANGLE_UNIT = self._BASE_ANGLE_UNIT
self._LENGTH_CONVERSIONS = {"in": 39.37007874015748, "mm": 1000., "cm": 100.}
self._AREA_CONVERSIONS = {"in2": 1550.0031000062002, "mm2": 1.0e6, "cm2": 1.0e4}
self._ANGLE_CONVERSIONS = {"deg": 57.29577951308232}
def current_length_unit(self):
return self._LENGTH_UNIT
def set_current_length_unit(self, unit: str):
self._LENGTH_UNIT = unit
def convert_length_to_base(self, value, unit: str):
if unit == self._BASE_LENGTH_UNIT:
return value
return value / self._LENGTH_CONVERSIONS[unit]
def convert_length_from_base(self, value, unit: str):
if unit == self._BASE_LENGTH_UNIT:
return value
return value * self._LENGTH_CONVERSIONS[unit]
def current_area_unit(self) -> str:
return self._AREA_UNIT
def set_current_area_unit(self, unit: str):
self._AREA_UNIT = unit
def convert_area_to_base(self, value, unit: str):
if unit == self._BASE_AREA_UNIT:
return value
return value / self._AREA_CONVERSIONS[unit]
def convert_area_from_base(self, value, unit: str):
if unit == self._BASE_AREA_UNIT:
return value
return value * self._AREA_CONVERSIONS[unit]
def current_angle_unit(self) -> str:
return self._ANGLE_UNIT
def set_current_angle_unit(self, unit: str):
self._ANGLE_UNIT = unit
def convert_angle_to_base(self, value, unit: str):
if unit == self._BASE_ANGLE_UNIT:
return value
return value / self._ANGLE_CONVERSIONS[unit]
def convert_angle_from_base(self, value, unit: str):
if unit == self._BASE_ANGLE_UNIT:
return value
return value * self._ANGLE_CONVERSIONS[unit]
def pi(self) -> float:
return self.convert_angle_from_base(np.pi, self.current_angle_unit())
def sin(self, angle: float) -> float:
return np.sin(self.convert_angle_to_base(angle, self.current_angle_unit()))
def cos(self, angle: float) -> float:
return np.cos(self.convert_angle_to_base(angle, self.current_angle_unit()))