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
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
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
# -*- 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)