示例#1
0
def r_s_from_grid(grid,
                  grid_pts,
                  minimum_distance_between_speakers=1.2,
                  max_distance_from_wall=0.6):

    ymax = np.amax(grid.nos[:, 1])

    y_start = ymax * 0.7
    y_end = ymax * 0.85

    y_space = np.linspace(y_start, y_end, grid_pts[1])

    y_height = 1.2
    a = grid.nos
    xmax = []
    for i in y_space:

        b = a[(a[:, 2] > y_height * .8) & (a[:, 2] < y_height * 1.2)]
        b = b[(b[:, 1] > i * .8) & (b[:, 1] < i * 1.2)]
        xmax.append(np.amax(b[:, 0]))

    xmax = np.array(xmax)

    x_end = xmax - max_distance_from_wall
    x_start = np.ones_like(x_end) * (minimum_distance_between_speakers / 2)
    x_space = []
    for i in range(len(x_end)):
        x_space.append(np.linspace(x_start[i], x_end[i], grid_pts[0]))

    x_space = np.array(x_space)
    s_coords_L = []  #np.zeros(grid_pts)
    r_coords = []
    # print(s_coords_L.shape)
    # print(np.array([x_space[0],y_space[0],1.2]))
    for i in range(grid_pts[0]):
        x_spacei = x_space[:, i]
        for ii in range(grid_pts[1]):
            s_coords_L.append([x_spacei[i], y_space[ii], 1.2])
            r_coords.append([
                0, (y_space[ii]) - np.cos(np.deg2rad(30)) * x_spacei[i] * 2,
                1.21
            ])

    s_coords_L = np.array(s_coords_L)
    s_coords_R = s_coords_L.copy()
    s_coords_R[:, 0] = -s_coords_R[:, 0]

    r_coords = np.array(r_coords)

    Ro = []
    So = []
    for i in range(len(r_coords)):

        R = fd.Receiver(coord=[r_coords[i]])
        Ro.append(R)
        S = fd.Source()
        S.coord = np.array([[s_coords_L[i, :]], [s_coords_R[i, :]]])
        S.q = np.array([[0.0001], [0.0001]])
        So.append(S)
    return So, Ro
示例#2
0
def r_s_coord_pair(y_value, distance_s_r):

    r_coord = np.array([0, y_value, 1.2])

    hyp = distance_s_r

    rad30 = np.deg2rad(30)
    s_x = np.sin(rad30) * hyp
    s_y = np.cos(rad30) * hyp + y_value

    s_coord = np.array([[s_x, s_y, 1.2], [-s_x, s_y, 1.2]])

    R = fd.Receiver()
    R.star(r_coord, 0.15)
    S = fd.Source()
    S.coord = s_coord
    S.q = np.array([[0.0001], [0.0001]])

    return R, S
示例#3
0
def r_s_positions(grid, grid_pts, bias):

    xmax = np.amax(grid.nos[:, 0])
    ymax = np.amax(grid.nos[:, 1])

    x_start = xmax * 0.8 + bias[0]
    x_end = xmax * 0.5 + bias[0]

    y_start = ymax * 0.7 + bias[1]
    y_end = ymax * 0.9 + bias[1]

    y_space = np.linspace(y_start, y_end, grid_pts[1])
    x_space = np.linspace(x_start, x_end, grid_pts[0])
    s_coords_L = []  #np.zeros(grid_pts)
    r_coords = []
    # print(s_coords_L.shape)
    # print(np.array([x_space[0],y_space[0],1.2]))
    for i in range(grid_pts[0]):
        for ii in range(grid_pts[1]):
            s_coords_L.append([x_space[i], y_space[ii], 1.2])
            r_coords.append([
                0, (1 / y_space[ii]) * np.cos(np.deg2rad(30)) * x_space[i] * 2,
                1.21
            ])

    s_coords_L = np.array(s_coords_L)
    s_coords_R = s_coords_L.copy()
    s_coords_R[:, 0] = -s_coords_R[:, 0]

    r_coords = np.array(r_coords)

    Ro = []
    So = []
    for i in range(len(r_coords)):

        R = fd.Receiver(coord=[r_coords[i]])
        Ro.append(R)
        S = fd.Source()
        S.coord = np.array([[s_coords_L[i, :]], [s_coords_R[i, :]]])
        S.q = np.array([[0.0001], [0.0001]])
        So.append(S)
    return So, Ro
示例#4
0
# -*- coding: utf-8 -*-
"""
Created on Sat Nov 28 00:30:38 2020

@author: gutoa
"""
import femder as fd
import numpy as np

path_to_geo = "..\\Mshs\\FEM_3D\\cplx_room.geo"

AP = fd.AirProperties(c0=343)
AC = fd.AlgControls(AP, 20, 150, 1)

S = fd.Source("spherical")

S.coord = np.array([[-1, 2.25, 1.2], [1, 2.25, 1.2]])
S.q = np.array([[0.0001], [0.0001]])

R = fd.Receiver([0, 1, 1.2])

BC = fd.BC(AC, AP)
# BC.normalized_admittance(3,0.02)
tmm = fd.TMM(20, 200, 1)
tmm.porous_layer(sigma=10.9, t=150, model='db')
tmm.compute()
# BC.normalized_admittance(3,tmm.y_norm)
BC.mu[3] = (tmm.y)
# BC.delany(3,10900,0.15)
# BC.normalized_admittance(3,0.02+1j*0.5)