Plate-Cavity


In [1]:
from seapy import System
import numpy as np
%matplotlib inline

Creating a SEA model

To create a SEA model we begin by creating an instance of System.


In [2]:
system1 = System()

We are only interested in a limited frequency range.


In [3]:
from acoustics.signal import OctaveBand

f = OctaveBand(fstart=1000.0, fstop=4000.0, fraction=3)

system1.frequency.center = f.center
system1.frequency.lower = f.lower
system1.frequency.upper = f.upper
system1.frequency.enabled = f.center.astype(bool)

Material

The room is filled with air.


In [4]:
air = system1.addMaterial('air', 
                          'MaterialGas',
                          density = 1.296,
                          temperature = 293.0,
                          bulk = 1.01e5,
                          loss_factor=np.ones(len(system1.frequency.center))*0.01)

The plate is made of steel.


In [5]:
steel = system1.addMaterial('steel', 
                            'MaterialSolid', 
                            young=1.0e7, 
                            poisson=0.30,
                            density=8.0e3,
                            loss_factor=np.ones(len(system1.frequency.center))*0.02)

In [6]:
from seapy.materials.materialsolid import modulus

steel.shear = modulus('shear', young=steel.young, poisson=steel.poisson)
print(steel.shear)


3846153.846153846

Components

The room is modelled as a 2D cavity.


In [7]:
room1 = system1.addComponent('room1', 
                             'Component3DAcoustical', 
                             material='air',
                             volume=50.0,)

In [8]:
#fig = room1.subsystem_long.plot("resistance_point_average")

In [9]:
plate1 = system1.addComponent('plate1', 
                             'Component2DPlate', 
                             material='steel', 
                             length=3.0,
                             width=3.0,
                             height=0.01)

Junction


In [10]:
junction1 = system1.addJunction('junction1', 'Junction', shape='Surface',
                                components=['room1', 'plate1'])

Excitation


In [11]:
excitation1 = plate1.subsystem_bend.addExcitation('excitation1', 
                                                  'ExcitationPointForce', 
                                                  velocity=1.0)

In [12]:
#system1.objects_info()

In [13]:
#fig = excitation1.plot('resistance')

In [14]:
room1.subsystem_long.info(['soundspeed_group', 'modal_density'])


Out[14]:
999 1258 1586 1998 2517 3172 3996
modal_density 4.589219 7.284931 11.564107 18.356876 29.139724 46.256428 73.427503
soundspeed_group 279.163212 279.163212 279.163212 279.163212 279.163212 279.163212 279.163212

In [15]:
plate1.subsystem_bend.info(['soundspeed_group', 'modal_density'])


Out[15]:
999 1258 1586 1998 2517 3172 3996
modal_density 6.694050 6.694050 6.694050 6.694050 6.694050 6.694050 6.694050
soundspeed_group 51.834642 58.182419 65.307557 73.305254 82.282366 92.358833 103.669285

In [16]:
plate1.subsystem_shear.info(['soundspeed_group', 'modal_density'])


Out[16]:
999 1258 1586 1998 2517 3172 3996
modal_density 18.705207 23.567084 29.692665 37.410413 47.134167 59.38533 74.820827
soundspeed_group 21.926450 21.926450 21.926450 21.926450 21.926450 21.92645 21.926450

In [17]:
system1.info(system1.subsystems, 'tlf')


Out[17]:
999 1258 1586 1998 2517 3172 3996
plate1_Bend 0.02 0.02 0.02 0.02 0.02 0.02 0.02
plate1_Long 0.02 0.02 0.02 0.02 0.02 0.02 0.02
plate1_Shear 0.02 0.02 0.02 0.02 0.02 0.02 0.02
room1_Long 0.01 0.01 0.01 0.01 0.01 0.01 0.01

In [18]:
system1.info(system1.subsystems, 'modal_density')


Out[18]:
999 1258 1586 1998 2517 3172 3996
plate1_Bend 6.694050 6.694050 6.694050 6.694050 6.694050 6.694050 6.694050
plate1_Long 6.546822 8.248479 10.392433 13.093645 16.496959 20.784865 26.187289
plate1_Shear 18.705207 23.567084 29.692665 37.410413 47.134167 59.385330 74.820827
room1_Long 4.589219 7.284931 11.564107 18.356876 29.139724 46.256428 73.427503

Solving the system


In [19]:
system1.solveSystem()


[ 0.          0.          0.          0.00118972]
[ 0.          0.          0.          0.00094428]
[ 0.          0.          0.          0.00074948]
[ 0.          0.          0.          0.00059486]
[ 0.          0.          0.          0.00047214]
[ 0.          0.          0.          0.00037474]
[ 0.          0.          0.          0.00029743]
Out[19]:
True

In [20]:
system1.info(system1.subsystems, 'modal_energy')


Out[20]:
999 1258 1586 1998 2517 3172 3996
plate1_Bend 0.00119 0.000944 0.000749 0.000595 0.000472 0.000375 0.000297
plate1_Long 0.00000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
plate1_Shear 0.00000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
room1_Long 0.00000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000

Subsystem pressure and velocity levels


In [21]:
system1.info(system1.subsystems, 'velocity_level')


Out[21]:
999 1258 1586 1998 2517 3172 3996
plate1_Bend 96.458610 95.455176 94.451743 93.448310 92.444876 91.441443 90.438010
plate1_Long -inf -inf -inf -inf -inf -inf -inf
plate1_Shear -inf -inf -inf -inf -inf -inf -inf

In [22]:
system1.info(system1.subsystems, 'pressure_level')


Out[22]:
999 1258 1586 1998 2517 3172 3996
room1_Long -inf -inf -inf -inf -inf -inf -inf

Component pressure and velocity levels


In [23]:
system1.info(system1.components, 'velocity_level')


Out[23]:
999 1258 1586 1998 2517 3172 3996
plate1 96.45861 95.455176 94.451743 93.44831 92.444876 91.441443 90.43801

In [24]:
system1.info(system1.components, 'pressure_level')


Out[24]:
999 1258 1586 1998 2517 3172 3996
room1 -inf -inf -inf -inf -inf -inf -inf

In [ ]:
system1.info(system1.couplings, 'critical_frequency')

In [ ]:
room1.subsystem_long.info(['soundspeed_group'])

In [ ]:
plate1.subsystem_long.info(['soundspeed_group'])

In [ ]:
plate1.subsystem_bend.info(['soundspeed_group', 'flexural_rigidity'])

In [ ]:
print(plate1.mass_per_area)

In [ ]:
print(plate1.frequency.angular)

In [ ]:
print(plate1.subsystem_bend.soundspeed_group)

In [ ]: