# Path: Sea/model/subsystems/SubsystemStructural.py
# class SubsystemStructural(Subsystem):
#     """
#     Abstract base class for all Structural subsystems.
#     """
#     __metaclass__ = abc.ABCMeta  
#     
#     
#     @property
#     def velocity(self):
#         """
#         Vibrational velocity :math:`v`.
#         
#         .. math:: v = \\sqrt{\\frac{E}{m}}
#         """
#         try:
#             return np.sqrt(self.energy / self.component.mass)
#         except FloatingPointError:
#             return np.zeros(self.frequency.amount)
#             
#     @property
#     def velocity_level(self):
#         """
#         Velocity level.
#         
#         .. math:: L_v = 20 \\log_{10}{\\frac{v}{v_0}}
#         """
#         try:
#             return 20 * np.log10(self.velocity / (5 * 10**(-8)) ) 
#         except FloatingPointError:
#             return np.zeros(self.frequency.amount)


import numpy as np
from ComponentStructural import ComponentStructural
from ..subsystems import SubsystemStructural
        
        .. math:: k_B = \\sqrt[4]{ \\frac{ \\rho \\omega }{D}} 
        
        
        See Langley and Heron, 1990, eq 18.
        """
        return np.power(self.component.material.density * self.frequency.angular / self.flexural_rigidity, 0.25)
    
    @property
    def flexural_rigidity(self):
        """Flexural rigidity of a plate.
        
        :rtype: :class:`numpy.ndarray`
        
        .. math:: D = \\frac{t^3}{12 \\left( 1 - \\nu^2 \\right)}
        
        
        """
        return self.thickness**3.0 / (12.0 * (1.0 - self.poisson()**2.0))
    
    @property
    def impedance(self):
        """Impedance
        
        :rtype: :class:`numpy.ndarray`
        
        """
        return np.zeros(self.frequency.amount)    
        
    

# Path: Sea/model/subsystems/SubsystemStructural.py
# class SubsystemStructural(Subsystem):
#     """
#     Abstract base class for all Structural subsystems.
#     """
#     __metaclass__ = abc.ABCMeta  
#     
#     
#     @property
#     def velocity(self):
#         """
#         Vibrational velocity :math:`v`.
#         
#         .. math:: v = \\sqrt{\\frac{E}{m}}
#         """
#         try:
#             return np.sqrt(self.energy / self.component.mass)
#         except FloatingPointError:
#             return np.zeros(self.frequency.amount)
#             
#     @property
#     def velocity_level(self):
#         """
#         Velocity level.
#         
#         .. math:: L_v = 20 \\log_{10}{\\frac{v}{v_0}}
#         """
#         try:
#             return 20 * np.log10(self.velocity / (5 * 10**(-8)) ) 
#         except FloatingPointError:
#             return np.zeros(self.frequency.amount)


# Path: Sea/model/components/Component2DPlate.py
import numpy as np
from ComponentStructural import ComponentStructural
from ..subsystems import SubsystemStructural

        
        .. math:: k_B = \\sqrt[4]{ \\frac{ \\rho \\omega }{D}} 
        
        
        See Langley and Heron, 1990, eq 18.
        """
        return np.power(self.component.material.density * self.frequency.angular / self.flexural_rigidity, 0.25)
    
    @property
    def flexural_rigidity(self):
        """Flexural rigidity of a plate.
        
        :rtype: :class:`numpy.ndarray`
        
        .. math:: D = \\frac{t^3}{12 \\left( 1 - \\nu^2 \\right)}
        
        
        """
        return self.thickness**3.0 / (12.0 * (1.0 - self.poisson()**2.0))
    
    @property
    def impedance(self):
        """Impedance
        
        :rtype: :class:`numpy.ndarray`
        
        """
        return np.zeros(self.frequency.amount)    
        
    

class SubsystemShear(SubsystemStructural):