Hello,
I am trying to evaluate attenuation in homogeneous media.
Using 3D simulation with a round transducer and a square sensor the pressure is computed at the same point in media without attenuation (a0) and in the same media by introducing attenuation (a1).
Using "medium.alpha_coeff =3 dB/cm" and "medium.alpha_power = 1.01", at a distance of 20mm from the emitter the difference between a0 an a1 should be 6dB (50% of decreasing).
The pressure values obtained in simulation (using peak to peak or maximum values) indicate only a decreasing of around 10% after introduction of attenuation.
I appreciate some help in this matter.
Best regards.
Here is the simulation code:
%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% grid dimensions
XX=3.2e-3; YY=3.2e-3;
ZZ=20e-3;
% grid point spacing
scat=200e-6;
dx=scat;
dy=scat;
dz=scat;
% create the computational grid
Nx=round(XX/dx);
Ny=round(YY/dy);
Nz=round(ZZ/dz);
kgrid = makeGrid(Nx, dx, Ny, dy, Nz, dz);
% create the time array explicitly
kgrid.t_array = 0:20e-9:30e-6;
% circular transducer
R=round(1.5e-3/scat); %raio da sonda
disc = makeDisc(Nx, Ny, Nx/2, Ny/2, R); % size of grid (Nx, Ny), centre (Nx/2,Ny/2) and radius R
source.p_mask = zeros(Nx, Ny, Nz);
aa=zeros(Nx, Ny, Nz-1);% matriz de zeros com menos uma slice
source.p_mask=cat(3,disc,aa); % concatena o disco com a matriz aa
% define properties of the input signal
source_strength = 10e6; % [Pa]
tone_burst_freq = 1e6; % [Hz]
tone_burst_cycles = 2;
% create the input signal using toneBurst
input_signal = toneBurst(1e8, tone_burst_freq, tone_burst_cycles);
source.p = input_signal;
% define the properties of the propagation medium
medium.sound_speed = 1500*ones(Nx, Ny, Nz); % [m/s]
medium.density = 1000*ones(Nx, Ny, Nz); % [kg/m^3]
% receiver
sensor.mask = zeros(Nx, Ny, Nz);
sensor.mask(6:10,6:10,100:100)=1
% attenuation
medium.alpha_coeff =3;
medium.alpha_power = 1.01;
% input arguments
input_args = {'DisplayMask', source.p_mask, 'DataCast', 'single','PMLInside', false,'PMLAlpha',2};%,'PMLSize', 20
% run the simulation
sensor_data = kspaceFirstOrder3D(kgrid, medium, source, sensor, input_args{:});
sensor.record ={'p'}
%recorded time signal
pp=sum(sensor_data);