Source code for calculation.resonator

from .geometry import Geometry
from .aperture import Aperture

[docs] class Resonator: """ Combines a geometry and an aperture to define a Helmholtz resonator. This class acts as a simple data container bundling both a cavity (geometry) and an acoustic opening (aperture). Attributes: geometry (Geometry): The internal volume of the resonator. aperture (Aperture): The acoustic aperture (tube or slit). """ def __init__(self, geometry: Geometry, aperture: Aperture): """ Initializes a Resonator from a given Geometry and Aperture. Args: geometry (Geometry): Geometry object representing the resonator's internal shape. aperture (Aperture): Aperture object defining the acoustic opening. """ self.geometry = geometry self.aperture = aperture
[docs] def to_dict(self) -> dict: """ Serializes the Resonator instance into a dictionary format. Returns: dict: A dictionary containing serialized geometry and aperture information. """ return { "geometry": self.geometry.to_dict(), "aperture": { "form": self.aperture.form, "length": self.aperture.length, "radius": self.aperture.radius, "inner_ending": self.aperture.inner_ending, "outer_ending": self.aperture.outer_ending, "additional_dampening": self.aperture.additional_dampening, "xi": self.aperture.xi, "amount": self.aperture.amount, "width": self.aperture.width, "height": self.aperture.height } }
[docs] @classmethod def from_dict(cls, data: dict) -> 'Resonator': """ Reconstructs a Resonator instance from a dictionary representation. Args: data (dict): Dictionary with 'geometry' and 'aperture' keys. Returns: Resonator: A new Resonator object with loaded parameters. """ geometry = Geometry.from_dict(data['geometry']) aperture = Aperture.from_dict(data['aperture']) return cls(geometry=geometry, aperture=aperture)