Dear all,

I have problem in simulating focused ultrasound transducer.

I use a k-wave transducer with a center frequency of 0.5 MHz, a diameter of 30 mm, and a focal length of 30 mm.I set medium properties by free water. However, when I see spatial distribution of peak pressure field, they showed focal distance at 26.8 mm. I don't know what is the problem.Please let me know how to fix it.

Below is my code.

% set total number of grid points not including the PML

resolution = 0.2; %[mm]

Nx = 80/resolution; % [grid points]

Ny = Nx;

Nz = Nx;

% set desired grid size in the -direction not including PML

dx = resolution*1e-03; % grid point spacing in the x direction [m: 1mm = 1e-03m]

dy = dx;

dz = dx;

kgrid = kWaveGrid(Nx, dx, Ny, dy, Nz, dz);

% homogeneous

T = 20; %[degC]

f = 0.5; %[mHz]

y = 1.43;

medium.sound_speed = speedSoundWater(T); % [m/s]

medium.density = 999.5; % [kg/m^3]

kgrid.makeTime(medium.sound_speed);

% define the k-wave transducer

grid_size = [Nx Ny Nz];

bowl_pos = [1 round(Nx/2) round(Nx/2)];

radius = round(30e-03/dx);

diameter = (30e-03/dx)-mod(30e-03/dx,2)+1;

focus_pos = [round(Nx/2) round(Nx/2) round(Nx/2)];

source.p_mask = makeBowl(grid_size, bowl_pos, radius, diameter, focus_pos);

% define properties of the input signal

source_freq = f*1e06; % [Hz]

source_mag = 1; % [Pa]

source.p = source_mag * sin(2*pi*source_freq*kgrid.t_array);

source.p = filterTimeSeries(kgrid, medium, source.p);

sensor.mask = ones(Nx, Ny, Nz);

sensor.record = {'p_max'};

input_args = {'DisplayMask', source.p_mask, ...

'PMLInside', false, 'PlotPML', false, 'DataCast', 'single'};

sensor_data= kspaceFirstOrder3D(kgrid, medium, source, sensor, input_args{:});