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);