Skip to content

FRidh/seapy

Repository files navigation

Introduction

SeaPy is a Python module to assist in performing a Statistical Energy Analysis, or SEA. SEA is used within vibroacoustics to model the flow of acoustic power through a vibrating system. An example is modeling the vibrations in cars due to the engine. SEA is generally used in the high-frequency region whereas finite-element analysis is used in the low-frequency region.

First step in performing an SEA is creating the geometry. Then, the relevant components are modeled as subsystems, where each subsystem represents one wave type. The subsystems are then connected through couplings. Power is added into the system through excitation of one or more subsystems. Power dissipation in subsystems and couplings are modeled using loss factors. Finally, a single matrix composed of loss factors, modal densities and input powers, are solved resulting in the modal energies of each subsystem, from which their vibration or noise levels can be calculated.

SeaPy

This module provides several classes and functions to perform an SEA. First, an object of the main class System() has to be created. Then, components, subsystems, couplings and excitations can be added to the System() instance. Finally, when all properties have been set, the modal energies can be solved by executing the solve() method of the System() instance.

Prerequisites

Required are:

  • Python 3.8 or higher
  • NumPy
  • matplotlib
  • pandas
  • toolz
  • networkx

Installing

To install the development version

pip install git+https://github.com/FRidh/seapy.git

Developing

To develop clone this repository

git clone https://github.com/FRidh/seapy.git

It is recommended to use Nix

nix develop

Documentation

Documentation can be viewed at Python Hosted.

To do

There's still plenty to be done. Some of the most important things to do are, in order of importance:

  1. Implement several junctions. E.g., one that allows calculating the coupling loss factors between multiple plates.
  2. Improve handling of spectral values.
  3. Adjust impedance based on position of excitation
  4. Enable and disable objects per band. This would allow for frequency-dependent models without having to make entirely new or separate models.
  5. Path analysis

Reporting bugs

Issues can be reported at the GitHub issue tracker.

About

Statistical Energy Analysis with Python

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published