Hi,
I'm running a 2D simulation in k-Wave using a line source placed symmetrically along the x-axis and a symmetrical arc-shaped sensor array (e.g., 6 elements). Both the source and sensor are symmetric in geometry.
However, although symmetric sensor elements visibly receive the wavefront at the same time in the simulation movie, their recorded signals in combined_sensor_data show a delay of about 200 time steps (out of 1200), which is unexpected.
I’m wondering:
What might cause this delay between symmetric receivers?
Could it be due to the use of kWaveArray, combineSensorData(), or the element size?
Any ideas would be appreciated. Thanks!
=================== code ==================
clear;
clc;
Nx = 256;
Ny = 256;
dx = 0.5e-3;
dy = dx;
%% grid
kgrid = kWaveGrid(Nx, dx, Ny, dy);
%% medium
medium.sound_speed = 1500;
kgrid.makeTime(medium.sound_speed);
%% source [array type]
karrayy = kWaveArray;
x_bias = -20e-3;
y_width = 50e-3;
start_pos = [x_bias, -y_width / 2];
end_pos = [x_bias, +y_width / 2];
karrayy.addLineElement(start_pos, end_pos);
source.p_mask = karrayy.getArrayBinaryMask(kgrid);
imagesc(kgrid.x_vec*1000, kgrid.y_vec*1000, source.p_mask);
xlabel("y/mm"); ylabel("x/mm");
axis equal; axis tight; colorbar;
f1 = 100e3; % 0.1MHz
sig1 = toneBurst(1/kgrid.dt, f1, 3);
source.p = sig1;
% plot(sig1);
%% sensor [array type]
karray = kWaveArray;
radius = 50e-3;
num_elements = 6;
elem_pos = makeCartCircle(radius, num_elements, [0, 0]);
radius_of_curv = 10e-3;
diameter = 1e-3;
focus_pos = [0, 0];
for ind = 1:num_elements
karray.addArcElement(elem_pos(:, ind), radius_of_curv, diameter, focus_pos);
end
sensor.mask = karray.getArrayBinaryMask(kgrid);
imagesc(sensor.mask);
xlabel("y/mm"); ylabel("x/mm");
axis equal; axis tight; colorbar;
input_args = {'DisplayMask',(source.p_mask | sensor.mask),...
'RecordMovie', true,...
'MovieName','video2',...
'DataCast', 'gpuArray-single',...
'PlotSim',true};
%% run
sensor_data = kspaceFirstOrder2D(kgrid, medium, source, sensor, input_args{:});
combined_sensor_data = karray.combineSensorData(kgrid, sensor_data);
stackedPlot(combined_sensor_data);