Source code for osaft.core.frequency
from osaft import log
from osaft.core.functions import pi
from osaft.core.variable import ActiveVariable, PassiveVariable
[docs]class Frequency:
"""Frequency class
:param frequency: frequency [Hz]
"""
# -------------------------------------------------------------------------
# Magic Methods
# -------------------------------------------------------------------------
def __init__(self, frequency: float) -> None:
"""Constructor method"""
# Independent variables
self._f = PassiveVariable(frequency, "frequency f")
# Initialize dependent variables
self._omega = ActiveVariable(
self._compute_omega,
"angular frequency omega",
)
# Dependencies
self._omega.is_computed_by(self._f)
log.debug(f"Creating {self}")
def __repr__(self) -> str:
return f"Frequency(f={self.f})"
# -------------------------------------------------------------------------
# Setters and Getters for Independent Variables
# -------------------------------------------------------------------------
@property
def f(self) -> float:
"""Excitation frequency [Hz].
:getter: returns the value for the frequency
:setter: automatically invokes
:meth:`osaft.core.variable.BaseVariable.notify`
"""
return self._f.value
@f.setter
def f(self, value: float) -> None:
self._f.value = value
# -------------------------------------------------------------------------
# Getters for Dependent Variables
# -------------------------------------------------------------------------
@property
def omega(self) -> float:
"""Returns the angular frequency :math:`\\omega` [rad/s]."""
return self._omega.value
# -------------------------------------------------------------------------
# Methods Dependent Variables Methods
# -------------------------------------------------------------------------
def _compute_omega(self) -> float:
return self.f * 2 * pi
if __name__ == "__main__":
pass