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