# Transmission simulator in FBS#

The method of Transmission Simulator (TS) is primarly used direclty in the modal domain. Nevertheless, the concept of attaching a transmission simulator at the interface can be used also in the frequency domain. In this example a frequency based subtructuring is performed on a complex structure. First a transmission simulator is decoupled from the receiver structure and aftewards a source structure is coupled to the receiver structure. At the interface the VPT is used to obtain collocated interface DoFs.

Note

Download example showing a Transmission Simulator (TS) application: `10_TS.ipynb`

.

## Example Datasests and 3D view#

As already shown in the 3D Display one can load the predefined datasets from an example and add a structure from STL file to the 3D display. This allows both the acceleration sensors and excitation points to be visualized. Also for the transmission simulator application, a subplot representation, as already presented in Coupling, can be used.

## Virtual point transformation#

The VPT can be performed on experimental data. See the `04_VPT.ipynb`

example for more options and details.

```
df_vp = pd.read_excel(xlsx_A, sheet_name='VP Channels')
df_vpref = pd.read_excel(xlsx_A, sheet_name='VP RefChannels')
vpt_TS = pyFBS.VPT(df_chn_TS,df_imp_TS,df_vp,df_vpref,sort_matrix = False)
vpt_BTS = pyFBS.VPT(df_chn_BTS,df_imp_BTS,df_vp,df_vpref,sort_matrix = False)
vpt_A = pyFBS.VPT(df_chn_A,df_imp_A,df_vp,df_vpref,sort_matrix = False)
vpt_TS.apply_VPT(freq,Y_TS)
vpt_BTS.apply_VPT(freq,Y_BTS)
vpt_A.apply_VPT(freq,Y_A)
Y_TS_tran = vpt_TS.vptData
Y_BTS_tran = vpt_BTS.vptData
Y_A_tran = vpt_A.vptData
```

### LM-FBS coupling and decoupling#

First, construct an admittance matrix for the uncoupled system, containing substructure admittances:

```
Y_AnB = np.zeros((800,30+36+18,30+36+18),dtype = complex)
Y_AnB[:,0:36,0:36] = Y_BTS_tran
Y_AnB[:,36:36+30,36:36+30] = -1*Y_TS_tran
Y_AnB[:,30+36:,30+36:] = Y_A_tran
```

Next the compatibility and the equilibrium conditions has to be defined through the signed Boolean matrices `Bu`

and `Bf`

.

```
k = 18
Bu = np.zeros((2*k,36+30+18))
Bu[:k,0:k] = 1*np.eye(k)
Bu[:k,36:36+k] = -1*np.eye(k)
Bu[k:,0:k] = 1*np.eye(k)
Bu[k:,36+30:36+30+k] = -1*np.eye(k)
Bf = np.zeros((2*k,36+30+18))
Bf[:k,0:k] = 1*np.eye(k)
Bf[:k,36:36+k] = -1*np.eye(k)
Bf[k:,0:k] = 1*np.eye(k)
Bf[k:,36+30:36+30+k] = -1*np.eye(k)
```

Apply the LM-FBS based on the defined coompatibility and equilibrium conditions.

```
Y_ABn = np.zeros_like(Y_AnB,dtype = complex)
Y_int = Bu @ Y_AnB @ Bf.T
Y_ABn = Y_AnB - Y_AnB @ Bf.T @ np.linalg.pinv(pyFBS.TSVD(Y_int,reduction = 22)) @ Bu @ Y_AnB
```

First extract the FRFs at the reference DoFs:

```
arr_out = [30,31,32,33,34,35]
arr_in = [30,31,32,33,34,35]
Y_AB_coupled = Y_ABn[:,arr_out,:][:,:,arr_in]
Y_AB_ref = Y_AB_ref[:,:,:]
```

Finnaly, the coupled and the reference results can be compared and evaluated:

**Thatâ€™s a wrap!**

Want to know more, see a potential application? Contact us at info.pyfbs@gmail.com!