Hi, Ben
Sorry to disturb you again.
My code for simulation is as following.
clear;
close all;
% =========================================================================
% DEFINE THE K-WAVE GRID
% =========================================================================
% physical properties of the transducer
transducer.EleNum = 1;
transducer.R = 5e-3; % diameter of aperture
% set total number of grid points not including the PML
Nx = 256; % [grid points/X]
Ny = 256; % [grid points/Y]
Nz = 512; % [grid points/Z]
% set desired grid size in the x-direction not including the PML
x = 25.6e-3; % [m]
z = 51.2e-3; % [m]
% calculate the spacing between the grid points
dx = x/Nx; % [m]
dy = dx; % [m]
dz = z/Nz; % [m]
% create the k-space grid
kgrid = kWaveGrid(Nx, dx, Ny, dy, Nz, dz);
% =========================================================================
% DEFINE THE MEDIUM PARAMETERS
% =========================================================================
sound_speed_Water = 1500;
medium.sound_speed = sound_speed_Water * ones(Nx, Ny, Nz); % [m/s]
medium.density = 1000 * ones(Nx, Ny, Nz); % [kg/m^3]
medium.alpha_coeff = 0; % assume no attenuation
medium.alpha_power = 1;
medium.alpha_mode = 'no_dispersion';
Freq = 1e6; %[Hz]
Zg = ceil((transducer.R^2/sound_speed_Water * Freq + 2e-3)/ dz); %far-field distance
ZIte = 40; % distance between second medium to far-field
medium.sound_speed(:, :, Zg+ZIte:end) = 2000; % parameters of second medium
medium.density(:, :, Zg+ZIte:end) = 1200;
medium.alpha_coeff(:, :, Zg+ZIte:end) = 0;
% =========================================================================
% DEFINE THE INPUT SIGNAL
% =========================================================================
% create the time array
kgrid.makeTime(medium.sound_speed);
% define properties of the input signal
source_mag = 2; % [Pa]
source_freq = Freq; % [Hz]
source.u_mask = zeros(Nx, Ny, Nz);
% creat single circle flat transducer manually using grid points
mask = zeros(Nx, Ny);
p_ind = bsxfun(@plus, kgrid.x_vec.^2, kgrid.y_vec.^2');
mask(p_ind <= transducer.R^2) = 1;
source.u_mask(:, :, 11) = mask;
source.uz = source_mag * sin(2 * pi * source_freq * kgrid.t_array);
source.ux = 0;
source.uy = 0;
% define a series of Cartesian points to collect the data
sensor.mask = zeros(Nx, Ny, Nz);
sensor.mask(Nx/2, :, :) = 1;
sensor.record_start_index = ceil(numel(kgrid.t_array)/2);
% define the field parameters to record
sensor.record = {'p', 'p_max_all'};
input_args = {'DisplayMask', sensor.mask, 'DataCast', 'single', ...
'CartInterp', 'nearest', 'PMLSize', [10 10 10]};
% run the simulation
sensor_data = kspaceFirstOrder3D(kgrid, medium, source, sensor, input_args{:});
Using that simulation, the distance between the sound pressure antinode are λ/4. Then I followed your suggestion to modify the transducer.R to 10e-3 and set 'PMLAlpha' to [2 2 0], [0 0 2] and [0 0 0], but the reflection wave is even more unexplainable.
So,,, I wanna know if there is some problems in my simulation code or I misunderstand what you really mean?
Thanks again.
Best wishes.
Durant