Hi everyone,
Recently, I want to study the propagation of ultrasound in space filled with water droplets. In the paper "Nonlinear ultrasound simulation in an axisymmetric coordinate system using a k-space pseudospectral method", I find the case "D. Scattering of plane wave by a fluid sphere"simulation seems to be similar to this situation.Scattering of acoustic signals is the main consideration.
I want to know if I can set many micron-sized particles in the medium properties by resetting the droplet density parameters to achieve my idea.
I hope to receive your reply.
Thanks.
Zeng
k-Wave
A MATLAB toolbox for the time-domain
simulation of acoustic wave fields
Ultrasound propagation in droplets
(3 posts) (2 voices)-
Posted 3 years ago #
-
Hello,
I have created a code as follows:% Based on Heterogeneous Propagation Medium Example
clearvars;
% =========================================================================
% SIMULATION
% =========================================================================% create the computational grid
Nx = 512; % number of grid points in the x (row) direction
Ny = Nx; % number of grid points in the y (column) direction
dx = 1e-6; % grid point spacing in the x direction [m]
dy = 1e-6; % grid point spacing in the y direction [m]
kgrid = kWaveGrid(Nx, dx, Ny, dy);% define the properties of the propagation medium
Air_speed = 330;
Air_rho0 = 1;
Air_BonA = 0.4;
Air_absob = 2.0;source_f0 = 1.1e6; % source frequency [Hz]
water_temp = 22;
water_speed = waterSoundSpeed(water_temp);
water_rho0 = waterDensity(water_temp);
water_BonA = waterNonlinearity(water_temp);
water_absob = waterAbsorption(source_f0 * 1e-6, water_temp);% reference sound speed
medium.sound_speed_ref = Air_speed;
% sound speed
medium.sound_speed = Air_speed* ones(Nx, Ny);
% sound density
medium.density = Air_rho0 * ones(Nx, Ny);
% nonlinearity
medium.BonA = Air_BonA * ones(Nx, Ny);
% absorption
medium.alpha_coeff = Air_absob * ones(Nx, Ny);medium.alpha_power = 2.0;
%========create water droplets disk===
N= 10; %Number of water droplets
drop_pos_x = randperm(Nx-10); % Center of particle position
drop_pos_y = randperm(Nx-10); %for i=1:N
% droplets geometry
drop_radius = 5; %radius of droplet,grid point spacing
cx = drop_pos_x(i);
cy = drop_pos_y(i);
drop_mask = makeDisc(Nx, Ny, cx, cy, drop_radius);% sound speed
medium.sound_speed(drop_mask == 1) = water_speed;
% sound density
medium.density(drop_mask == 1) = water_rho0;
% nonlinearity
medium.BonA(drop_mask == 1) = water_BonA;
% absorption
medium.alpha_coeff(drop_mask == 1) = water_absob;end
% create initial pressure distribution using makeDisc
disc_magnitude = 5; % [Pa]
disc_x_pos = Nx/2; % [grid points]
disc_y_pos = Ny/2; % [grid points]
disc_radius = 20; % [grid points]
disc_1 = disc_magnitude * makeDisc(Nx, Ny, disc_x_pos, disc_y_pos, disc_radius);source.p0 = disc_1 ;
init_p0 = source.p0;% define a centered Cartesian circular sensor
sensor_radius = 2e-4; % [m]
sensor_angle = 2*pi ; % [rad]
sensor_pos = [0, 0]; % [m]
num_sensor_points = 150;
cart_sensor_mask = makeCartCircle(sensor_radius, num_sensor_points, sensor_pos, sensor_angle);
% Cartesian sensors aren't support in the C++ code, convert it to a binary mask
[grid_sensor_mask, order_index, reorder_index] = cart2grid(kgrid, cart_sensor_mask);
sensor.mask = grid_sensor_mask;% create the time array
t1=kgrid.makeTime(medium.sound_speed);% run the simulation with optional inputs for plotting the simulation
% layout in addition to removing the PML from the display
sensor_data = kspaceFirstOrder2DC(kgrid, medium, source, sensor, ...
'PlotLayout', false, 'PlotPML', false);Can the above code be used to analyze the simulated pressure amplitude for
the scattering of a monochromatic plane wave by a sphere of micron-sized particles?
Could anyone give me some suggestions? Thanks advance.
ZengPosted 3 years ago # -
Hi Zeng,
I don't know anything about your particular problem, but yes, you can model lots of small scatterers in k-Wave by perturbing the acoustic density / sound speed. Keep in mind that if you run your simulation in 2D, what you're actually modelling is scattering by infinite cylinders.
Also, the code you posted uses a disc-shaped initial pressure. You will want to look at some of the other examples for how to create a monochromatic (single frequency) plane wave.
Brad.
Posted 3 years ago #
Reply
You must log in to post.