pyva.coupling.junctions.LineJunction

class pyva.coupling.junctions.LineJunction(systems, length, thetas)

Bases: Junction

Class for line junctions

systems

of systems

Type:

list or tuple

length

length of LineJunction

Type:

float

thetas

angles of connected plates

Type:

ndarray

__init__(systems, length, thetas)

Class contructor for LineJunction.

Parameters:
  • systems (list or tuple) – systems connected to junction

  • length (float) – length of LineJunction

  • thetas (list or tuple) – angles of connected plates

Methods

CLF(omega[, i_sys, i_in_wave, i_out_wave, ...])

coupling loss factor for line junctions

CLF_angle(omega[, i_sys, i_in_wave, ...])

coupling loss factor for wave fields of plates

__init__(systems, length, thetas)

Class contructor for LineJunction.

get_wave_DOF([ix])

Provides the local wave DOFs of the junction

index(ID)

Determines index of ID in system list of junction

junction_matrix(omega[, N_step, method])

Creates junction matrix for LineJunction (all upper triangular)

kx(omega, i_sys, i_in_wave, i_out_wave, Nstep)

wavenumber sampling for diffuse field intgegration.

max_inplane_wavenumber(omega)

Determine the maximal in-plane wavenumber of all connected plates

modal_density(omega)

Provides modal density

total_radiation_stiffness_wavenumber(omega, ...)

Calculates the total radiation stiffness of line junctions

total_radiation_stiffness_wavenumber_LM(...)

Calculate the total radiation stiffness of line junctions.

transmission_wavenumber(omega, wavenumber[, ...])

Calculates the transmission coefficient of line junctions

transmission_wavenumber_LM(omega, wavenumber)

Calculate the transmission coefficient of line junctions (LinearMatrix Version).

transmission_wavenumber_diffuse(omega[, ...])

Diffuse transmission coefficient for line junctions.

transmission_wavenumber_langley(omega, ...)

transmission coefficient based on the wave transionmssion method

transmission_wavenumber_wave(omega, wavenumber)

transmission coefficient assuming wave transformations for radiation stiffness calculations of blocked forces from langley are used

Attributes

N

Number of connected physical SEA systems (not wave_fields)

N_wave

Number of wave fields

exc_DOF

Provides 'excitation' DOFs of junction SEA matrix

in_dofs

Provides input wave dofs of junction for upper triangular input matrix

out_dofs

Provides output wave dofs of junction for upper triangular input matrix

res_DOF

Provides 'response' DOFs of junction SEA matrix

CLF(omega, i_sys=(0, 1), i_in_wave=(5, 5), i_out_wave=(5, 3), N_step=100, method='diffuse', Signal=True)

coupling loss factor for line junctions

This method calculates the CLF from system i_sys[0] to i_sys[1]. The wavefields that are considered are given by i_in_wave and i_out_wave. The CLF is calculated running through through both indexes

Parameters:
  • omega (ndarray or float) – angular frequency.

  • i_sys (ndarray,list or tuple, optional) – indexes of incident and radiating system. The default is (0,1).

  • i_in_wave (ndarray,list or tuple, optional) – DESCRIPTION. The default is (5,5).

  • i_out_wave (ndarray,list or tuple, optional) – DESCRIPTION. The default is (5,3).

  • N_step (int, optional) – Number of angle integration intervals. The default is 100.

  • method (str, 'diffuse' or 'langley', optional) – identifier for calculation method. The default is ‘diffuse’.

  • Signal (bool, optional) – Switch for Signal output. The default is True.

Raises:

ValueError – For non consistent arguments.

Returns:

coupling loss factor.

Return type:

ndarray or Signal

CLF_angle(omega, i_sys=(0, 1), i_in_wave=(5, 3), i_out_wave=(5, 3), N_step=200, method='diffuse', Signal=True)

coupling loss factor for wave fields of plates

This method uses the transmission_wave_number_diffuse function that is based in angular integration. The normal CLF method uses the wavenumber integration.

Options for i_in/out_wave are 0 : all 1 : longitudinal 2 : shear 3/4 : bending 5 : in-plane (longitudinal + shear)

Parameters:
  • omega (np.array) – angular frequency

  • L (double) – length of junction

  • i_sys (tupel of integer) – pair of in- and out systems. The default is (0,1), if (0,0) only tau between waves is considered

  • i_in_wave (TYPE, optional) – wave_fields index of exciting waves. The default is (5,3).

  • i_out_wave (TYPE, optional) – wave_fields index of outgoing waves. The default is (5,3).

  • N_step (TYPE, optional) – Number of steps for numerical angle integration. The default is 200.

  • method (TYPE, optional) – Method of tau calculation. ‘diffuse’ for diffuse reciprocity, ‘langley’ for wave transmission. The default is ‘diffuse’.

Return type:

Signals with coupling loss factors

property N

Number of connected physical SEA systems (not wave_fields)

Returns:

number of systems

Return type:

int

property N_wave

Number of wave fields

Returns:

Number of wave fields

Return type:

int

property exc_DOF

Provides ‘excitation’ DOFs of junction SEA matrix

The ‘excitation’ and response DOFs are equal in terms of ID and wave_dof but use ‘power’ as physical input

Returns:

excitation DOFs of junction SEA matrix

Return type:

DOF

get_wave_DOF(ix=slice(None, None, None))

Provides the local wave DOFs of the junction

Returns:

dofs of junction, list of systems

Return type:

DOF,sys_list

property in_dofs

Provides input wave dofs of junction for upper triangular input matrix

These DOFs are requiered to determine the column index of the upper triangular components in the global SEA matrix.

For example a plate - cavity junction has wave dofs [ ID=1,dof=3 ; 1,5 ; 2,0 ]

The full of diag CLF in the SEA matrix are

\begin{bmatrix}
    \Sigma & - n_{15}\eta_{15,13} & -n_{20}\eta_{20,13} \\                 - n_{13}\eta_{13,15} & \Sigma & -n_{20}\eta_{20,15} \\                 - n_{13}\eta_{13,20} & - n_{15}\eta_{15,20} & \Sigma
\end{bmatrix}

The column dofs would be : [ 1,5 ; 2,0 ; 2,0]

See also

out_dofs

Returns:

wave_DOF of column.

Return type:

DOF

index(ID)

Determines index of ID in system list of junction

Parameters:

ID (int) – System ID

Returns:

index of ID in system list (-1) if not found

Return type:

int

junction_matrix(omega, N_step=200, method='diffuse')

Creates junction matrix for LineJunction (all upper triangular)

This method calculates the all CLF of junction matric [J] The wavefields that are considered ar either the pressure wave or the bending wave The CLF is calculated running through through both indexes

Parameters:
  • omega (float) – angular frequency.

  • N_step (int, optional) – Number of integration steps. The default is 90.

  • method (str, optional) – CLF calculation method. The default is ‘diffuse’.

Returns:

JM – JunctionMatrix.

Return type:

DynamiMatrix

kx(omega, i_sys, i_in_wave, i_out_wave, Nstep, method='angle')

wavenumber sampling for diffuse field intgegration.

The different wave number regimes require a well balanced sampling of the wavnumber. High sampling in-plane waves and low sampling for bending waves

Parameters:
  • omega (double) – angular frequency

  • i_sys (tupel or list of int) – system index

  • i_in_wave (tupel or list of int) – wave_DOF of irradiating wave field

  • i_out_wave (tupel or list of int) – wave_DOF of radiating wave field

  • Nstep (int) – Integration steps

  • method (str) – ‘angle’ for angular integration with dense sampling at 90 degrees ‘in-plane’ for two intervals, kx = [0 kS ) + [kS kB)

Returns:

kx – wavenumber in x

Return type:

ndarray

max_inplane_wavenumber(omega)

Determine the maximal in-plane wavenumber of all connected plates

Bending wavenumber can be orders of magnitude higher. In this case the in-plane wave may be undersampled. Thus, for all wavenumber intergration the upper boundary of the in-plane wavenumber is required for better sampling of 0 > kx > kS.

Parameters:

omega (float) – angular frequency.

Returns:

k_max – maximal wavenumber.

Return type:

float

modal_density(omega)

Provides modal density

Calculates the modal density for all connected wavefields of the junction.

Parameters:

omega (ndarray) – angular frequency.

Returns:

res – modal density.

Return type:

ndarray of dimension N_wave x size(omega)

property out_dofs

Provides output wave dofs of junction for upper triangular input matrix

These DOFs are requiered to determine the row index of the upper triangular components in the global SEA matrix.

For example a plate - cavity junction has wave dofs [ 1,3 ; 1,5 ; 2,0 ]

The full of diag CLF in the SEA matrix are

\begin{bmatrix}
    \Sigma & - n_{15}\eta_{15,13} & -n_{20}\eta_{20,13} \\                 - n_{13}\eta_{13,15} & \Sigma & -n_{20}\eta_{20,15} \\                 - n_{13}\eta_{13,20} & - n_{15}\eta_{15,20} & \Sigma
\end{bmatrix}

The column dofs would be : [ 1,3 ; 1,3 ; 1,5]

See also

in_dofs

Returns:

wave_DOF of rows.

Return type:

DOF

property res_DOF

Provides ‘response’ DOFs of junction SEA matrix

The ‘response’ and excitation DOFs are equal in terms of ID and wave_dof but use ‘energy’ as physical output

Returns:

response DOFs of junction SEA matrix

Return type:

DOF

total_radiation_stiffness_wavenumber(omega, wavenumber)

Calculates the total radiation stiffness of line junctions

The result is given in wavenumber domain and global displacement coordinate system

Parameters:
  • omega (float) – angular frequency.

  • wavenumber (ndarray) – wavenumber in x- (edge) direction.

Returns:

Total stiffness matrix of line junction

Return type:

nd.array

total_radiation_stiffness_wavenumber_LM(omega, wavenumber)

Calculate the total radiation stiffness of line junctions.

The result is given in wavenumber domain and global displacement coordinate system.

_LM identifies the slow LinearMatrix version

In ref [Pei2022] this is Equation (8.129).

Parameters:
  • omega (float) – angular frequency.

  • wavenumber (ndarray) – wavenumber in x- (edge) direction.

Returns:

Total stiffness matrix of line junction

Return type:

LinearMatrix

transmission_wavenumber(omega, wavenumber, i_sys=(0, 1), i_in_wave=(3, 3), i_out_wave=(5, 5), Signal=True)

Calculates the transmission coefficient of line junctions

This methods applies the hybrid CLF formulation from [1] but using the radiated power calcualted from the wave amplitude as disscussed in the reference.

The rad_sw argument is used for validation. For simulation always use ‘wave’

Parameters:
  • omega (float or ndarray) – angular frequency.

  • wavenumber (float or ndarray) – wavenumber in x- or edge-direction.

  • i_sys (tuple or list, optional) – incident and radiating system index vector. The default is (0,1).

  • i_in_wave (tuple or list, optional) – incident wave type. The default is (1,2,3).

  • i_out_wave (tuple or list, optional) – radiating wave type. The default is (1,2,3).

  • Signal (bool, optional) – switch for Signal output. The default is True.

Raises:

ValueError – When input values are not or correct type of not constent.

Returns:

transmission coefficient for one frequency over wavenumber.

Return type:

ndarray or Signal

transmission_wavenumber_LM(omega, wavenumber, i_sys=(0, 1), i_in_wave=(1, 2, 3), i_out_wave=(1, 2, 3), rad_sw='wave', Signal=True)

Calculate the transmission coefficient of line junctions (LinearMatrix Version).

This methods applies the hybrid CLF formulation from [1] but using the radiated power calculated from the wave amplitude as disscussed in the reference.

The method is the version that is used for validation purpose, thus the radiated power can be calculated using the radiation stiffness. As shown in [Pei2022] this is not correct in the wavenumber range [k_L < kx < k_S]

The rad_sw argument is used for exactly this validation. For simulation always use ‘wave’

Parameters:
  • omega (float or ndarray) – angular frequency.

  • wavenumber (float or ndarray) – wavenumber in x- or edge-direction.

  • i_sys (tuple or list, optional) – incident and radiating system index vector. The default is (0,1).

  • i_in_wave (tuple or list, optional) – incident wave type. The default is (1,2,3).

  • i_out_wave (tuple or list, optional) – radiating wave type. The default is (1,2,3).

  • rad_sw (str, 'wave' or 'im_dir', optional) – identifier for radiated power method. The default is ‘wave’.

  • Signal (bool, optional) – switch for Signal output. The default is True.

Raises:

ValueError – When input values are not or correct type of not constent.

Returns:

transmission coefficient for one frequency over wavenumber.

Return type:

ndarray or Signal

transmission_wavenumber_diffuse(omega, i_sys=(0, 1), i_in_wave=(5, 5), i_out_wave=(5, 3), N_step=100, CLF_sw=False, method='diffuse', Signal=True)

Diffuse transmission coefficient for line junctions.

When this method is used for calculating Equation (8.160) we don’t need the diffuse field transmission coeffcient <tau> but the pure wavenumber integral that is NOT divided by k_v^(m). For this purpose a switch in intgrated that sets k_in = 1.

Parameters:
  • omega (float or ndarray) – angular frequency.

  • i_sys (tuple or list, optional) – incident and radiating system index vector. The default is (0,1).

  • i_in_wave (tuple or list, optional) – incident wave_DOF. The default is (5,5).

  • i_out_wave (tuple or list, optional) – transmissted wave_DOF. The default is (5,3).

  • N_step (int, optional) – Number of wavenumber integration steps. The default is 100.

  • CLF_sw (bool, otional) – Sets the incoming wavenumber to 1 if True for use in line junctin matrix Eq. (8.160). The default is False.

  • method (str, optional) – Mewthod seclector ‘diffuse’ for diffuse field reciprocity, ‘langley’ for wave transmission. The default is ‘diffuse’.

  • Signal (bool, optional) – Swith for return datatype. The default is True.

Returns:

diffuse field transmission coefficient.

Return type:

ndarray (Signal = False) or Signal

transmission_wavenumber_langley(omega, wavenumber, i_sys=(0, 1), i_in_wave=(1, 1, 1, 2, 2, 2, 3, 3, 3), i_out_wave=(1, 2, 3, 1, 2, 3, 1, 2, 3), matrix=False, Signal=True)

transmission coefficient based on the wave transionmssion method

The version is based on the wave trasmission theory from [2] The transmission is calculated for each specific wave type, this is not possible for the hybrid CLF as the diffuse field reciprocity is not valid for single in-plane waves.

The matrix argument is for test pupose to check if the analytical expression is correct.

Parameters:
  • omega (float or ndarray) – angular frequency.

  • wavenumber (float or ndarray) – wavenumber in x- or edge-direction.

  • i_sys (tuple or list, optional) – incident and radiating system index vector. The default is (0,1).

  • i_in_wave (tuple or list, optional) – incident wave_DOF. The default is (1,1,1,2,2,2,3,3,3).

  • i_out_wave (tuple or list, optional) – transmissted wave_DOF. The default is (1,2,3)*3.

  • matrix (bool, optional) – Switch if the matrix D.f - q (True) or the expicity analytical version is used. The default is False.

  • Signal (TYPE, optional) – DESCRIPTION. The default is True.

Returns:

transmission coefficient.

Return type:

ndarray

transmission_wavenumber_wave(omega, wavenumber, i_sys=(0, 1), i_in_wave=(1, 1, 1, 2, 2, 2, 3, 3, 3), i_out_wave=(1, 2, 3, 1, 2, 3, 1, 2, 3), matrix=False)

transmission coefficient assuming wave transformations for radiation stiffness calculations of blocked forces from langley are used

Parameters:
  • omega (TYPE) – DESCRIPTION.

  • wavenumber (TYPE) – DESCRIPTION.

  • i_sys (TYPE, optional) – DESCRIPTION. The default is (0,1).

  • i_in_wave (TYPE, optional) – DESCRIPTION. The default is (1,)*3+(2,)*3+(3,)*3.

  • i_out_wave (TYPE, optional) – DESCRIPTION. The default is (1,2,3)*3.

  • matrix (TYPE, optional) – DESCRIPTION. The default is False.

Return type:

None.