Hello,
I'm new with k-wave, and let me say it seems to be a great and useful tool! I've a question about propagation in heterogeneous medium (that's why i'm writing here instead of starting a new topic).
I'm trying to model a 3D environment with scattering, and two different region (different speed and density). I'm using a single-point transducer and a single point sensor.
I'm having some problem when the speed of the second medium(the one inside) is much bigger than the first medium.
If c1=1807, it seems to work. When i try c1=2007 (or 2407), the sensor data gives me weird result... What am i doing wrong?
I hope someone here could give me some hint.
Following there are few parts of my code:
GRID:
Nx = 128 - 2*PML_X_SIZE; % [grid points]
Ny = 64 - 2*PML_Y_SIZE; % [grid points]
Nz = 64 - 2*PML_Z_SIZE; % [grid points]
x = 40e-3
dx = x/(4*Nx); % [m]
dy = dx; % [m]
dz = dx; % [m]
SENSOR:
x = [max(kgrid.x(:,1,1))];
y = [0];
z = [0];
sensor.mask = [x; y; z];
MEDIUM 1;
medium.sound_speed = 1629; % [m/s]
medium.density = 1056; % [kg/m^3]
medium.alpha_coeff = 0.1256; %a [dB/(MHz^y cm)]
medium.alpha_power = 1.001; %b
SIGNAL:
source_strength = 1e6; % [MPa]
tone_burst_freq = 6e6; % [Hz]
tone_burst_cycles = 4;
TRANSDUCER:
transducer.number_elements = 1; % total number of transducer elements
transducer.element_width = 1; % width of each element [grid points]
transducer.element_length = 1; % length of each element [grid points]
transducer.element_spacing = 0; % spacing (kerf width) between the elements [grid points]
transducer.radius = inf; % radius of curvature of the transducer [m]
transducer_width = transducer.number_elements*transducer.element_width + (transducer.number_elements - 1)*transducer.element_spacing;
transducer.position = round([1, Ny/4 - transducer_width/2, Nz/2 - transducer.element_length/2]);
INHOMOGENEITIES:
background_map_mean = 1;
background_map_std = 0.008;
background_map = background_map_mean+ background_map_std*randn([Nx_tot, Ny_tot, Nz_tot]);
MEDIUM 2:
c1 = 2407;
rho1 = 1920;
sound_speed_map = c0*ones(Nx_tot, Ny_tot, Nz_tot).*background_map;
density_map = rho0*ones(Nx_tot, Ny_tot, Nz_tot).*background_map;
bone_region = zeros(Nx_tot, Ny_tot, Nz_tot);
region_rho1 = rho1*ones(Nx_tot, Ny_tot, Nz_tot);
region_c1 = c1*ones(Nx_tot, Ny_tot, Nz_tot);
bone_region(:, Ny/2 - 8/2:Ny/2 + 8/2, Nz/2 - 8/2:Nz/2 + 8/2)=1;
density_map(bone_region == 1) = region_rho1(bone_region == 1);
sound_speed_map(bone_region == 1) = region_c1(bone_region == 1);