<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="bbPress/1.0.2" -->
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>k-Wave User Forum &#187; Topic: Heterogeneous Ultrasound Simulation</title>
		<link>http://www.k-wave.org/forum/topic/heterogeneous-ultrasound-simulation</link>
		<description>Support for the k-Wave MATLAB toolbox</description>
		<language>en-US</language>
		<pubDate>Wed, 13 May 2026 13:34:35 +0000</pubDate>
		<generator>http://bbpress.org/?v=1.0.2</generator>
		<textInput>
			<title><![CDATA[Search]]></title>
			<description><![CDATA[Search all topics from these forums.]]></description>
			<name>q</name>
			<link>http://www.k-wave.org/forum/search.php</link>
		</textInput>
		<atom:link href="http://www.k-wave.org/forum/rss/topic/heterogeneous-ultrasound-simulation" rel="self" type="application/rss+xml" />

		<item>
			<title>Bradley Treeby on "Heterogeneous Ultrasound Simulation"</title>
			<link>http://www.k-wave.org/forum/topic/heterogeneous-ultrasound-simulation#post-5828</link>
			<pubDate>Mon, 13 Feb 2017 09:53:29 +0000</pubDate>
			<dc:creator>Bradley Treeby</dc:creator>
			<guid isPermaLink="false">5828@http://www.k-wave.org/forum/</guid>
			<description>&#60;p&#62;Hi Dennis,&#60;/p&#62;
&#60;p&#62;Yes, if you have very large density changes, then the tranmission coefficient may not be accurate. See Fig. 4 in &#60;a href=&#34;http://bug.medphys.ucl.ac.uk/papers/2014-Robertson-IEEEIUS.pdf&#34;&#62;this paper&#60;/a&#62; for an illustration. I would suggest setting up a simple example in 1D with the same impedance mismatch, and then seeing how many points per wavelength are required until the reflection and transmission coefficients converge.&#60;/p&#62;
&#60;p&#62;I'm a bit confused about what you mean by the word &#60;em&#62;net&#60;/em&#62; in your description?&#60;/p&#62;
&#60;p&#62;Brad.
&#60;/p&#62;</description>
		</item>
		<item>
			<title>DennisGeisler on "Heterogeneous Ultrasound Simulation"</title>
			<link>http://www.k-wave.org/forum/topic/heterogeneous-ultrasound-simulation#post-5810</link>
			<pubDate>Fri, 06 Jan 2017 12:26:43 +0000</pubDate>
			<dc:creator>DennisGeisler</dc:creator>
			<guid isPermaLink="false">5810@http://www.k-wave.org/forum/</guid>
			<description>&#60;p&#62;Hello everyone,&#60;/p&#62;
&#60;p&#62;i am student of mechanical engineering and my task is to simulate an ultrasound signal through wood. My goal is to find holes and delaminations.&#60;br /&#62;
I have already found some Informations in this forum that maybe i will get a problem with an overestimated transmission. Is it possible that i will have this problems?&#60;/p&#62;
&#60;p&#62;Another problem is, that my net calculate stable values if i change the cfl number form 0,2 down to 0,01.&#60;br /&#62;
But if i change my net, i am not able to get the same values of pressure, calculated with the same variables beside the net. Obviously that doesnt make sense.&#60;br /&#62;
I dont have this problem if i calculate in air. Values in air are independent from cfl and netsize. &#60;/p&#62;
&#60;p&#62;I want to fit my result to measurements with the absorption terms. But as long as my values arent independent from net size, that doesnt works.&#60;/p&#62;
&#60;p&#62;I hope someone can help me with that.&#60;/p&#62;
&#60;p&#62;Best Regards&#60;/p&#62;
&#60;p&#62;Dennis Geisler&#60;/p&#62;
&#60;p&#62;My code:&#60;/p&#62;
&#60;p&#62;% scale geometry&#60;br /&#62;
N=320; % Goal&#60;br /&#62;
M=320; % Standard&#60;br /&#62;
a=N/M;&#60;br /&#62;
scale=1;&#60;br /&#62;
pml_size= 30*a;&#60;/p&#62;
&#60;p&#62;% create the computational grid&#60;br /&#62;
Nx = M*a;           % number of grid points in the x (row) direction&#60;br /&#62;
Ny = M*a;           % number of grid points in the y (column) direction&#60;br /&#62;
dx = 0.001/a;        % grid point spacing in the x direction [m]&#60;br /&#62;
dy = 0.001/a;        % grid point spacing in the y direction [m]&#60;br /&#62;
kgrid = makeGrid(Nx, dx, Ny, dy);&#60;/p&#62;
&#60;p&#62;% define the properties of the upper layer of the propagation medium&#60;br /&#62;
medium.sound_speed                         = 343*ones(Nx, Ny); % [m/s]&#60;br /&#62;
medium.density                             = 1*ones(Nx, Ny); % [kg/m^3]&#60;br /&#62;
medium.alpha_coeff                         = 0.1328*ones(Nx, Nx); % [dB/(MHz^y cm)] &#60;/p&#62;
&#60;p&#62;% define the properties of the lower layer of the propagation medium&#60;br /&#62;
medium.sound_speed(153*a:188*a, :)                  = 500 ; % [m/s]&#60;br /&#62;
medium.density(153*a:188*a, :)                     = 700; % [kg/m^3]&#60;br /&#62;
medium.alpha_coeff (153*a:188*a, :)                =1; % [dB/(MHz^y cm)]&#60;br /&#62;
medium.alpha_power                                    =1;&#60;br /&#62;
medium.alpha_mode                                      ='no_dispersion';&#60;/p&#62;
&#60;p&#62;% create the time array&#60;br /&#62;
cfl   = 0.05;    % Courant-Friedrichs-Lewy number&#60;br /&#62;
t_end = 0.002;% [s]&#60;/p&#62;
&#60;p&#62;% scale time&#60;br /&#62;
c=0.1/cfl;&#60;/p&#62;
&#60;p&#62;kgrid.t_array = makeTime(kgrid, max(medium.sound_speed(:)), cfl, t_end);&#60;br /&#62;
time_schwinger=kgrid.t_array(1,1:2000*a*c);&#60;/p&#62;
&#60;p&#62;% define a time varying sinusoidal source&#60;br /&#62;
source_freq = 50000;   % [Hz]&#60;br /&#62;
amplitude = 60; % [Pa]&#60;br /&#62;
source_mag = amplitude*[linspace(0,1,round(400*a*c)),ones(1,round(1200*a*c)), linspace(1,0,round(400*a*c))];         % [Pa]&#60;br /&#62;
startpoint= [round((10+120+35+90+46/2)*a), round(Ny/2-(16+20)*a)];&#60;br /&#62;
angle=0.17;&#60;br /&#62;
length=round(40*a);&#60;br /&#62;
line = makeLine ( Nx,Ny, startpoint, angle, length);&#60;br /&#62;
source.p_mask= line;&#60;br /&#62;
quelle=sin(2*pi*source_freq*time_schwinger);&#60;br /&#62;
source.p = source_mag.*quelle;&#60;/p&#62;
&#60;p&#62;% filter the source to remove high frequencies not supported by the grid&#60;br /&#62;
%source.p = filterTimeSeries(kgrid, medium, source.p);&#60;/p&#62;
&#60;p&#62;% define a centered circular sensor&#60;br /&#62;
sensor.mask = zeros(Nx,Ny);&#60;/p&#62;
&#60;p&#62;% sensor oberseite&#60;br /&#62;
pos1=round(Ny*10/100);&#60;br /&#62;
pos2=round(Ny*20/100);&#60;br /&#62;
pos3=round(Ny*30/100);&#60;br /&#62;
pos4=round(Ny*40/100);&#60;br /&#62;
pos5=round(Ny*50/100);&#60;br /&#62;
pos6=round(Ny*60/100);&#60;br /&#62;
pos7=round(Ny*70/100);&#60;br /&#62;
pos8=round(Ny*80/100);&#60;br /&#62;
pos9=round(Ny*90/100);&#60;/p&#62;
&#60;p&#62;sensor.mask(60*a, pos1)=1;&#60;br /&#62;
sensor.mask(60*a, pos2)=1;&#60;br /&#62;
sensor.mask(60*a, pos3)=1;&#60;br /&#62;
sensor.mask(60*a, pos4)=1;&#60;br /&#62;
sensor.mask(60*a, pos5)=1;&#60;br /&#62;
sensor.mask(60*a, pos6)=1;&#60;br /&#62;
sensor.mask(60*a, pos7)=1;&#60;br /&#62;
sensor.mask(60*a, pos8)=1;&#60;br /&#62;
sensor.mask(60*a, pos9)=1;&#60;/p&#62;
&#60;p&#62;input_args = {'PMLSize', pml_size, };&#60;/p&#62;
&#60;p&#62;% run the simulation&#60;br /&#62;
sensor_data= kspaceFirstOrder2D(kgrid, medium, source, sensor, input_args{:});&#60;/p&#62;
&#60;p&#62;% define the acoustic parameters to record&#60;br /&#62;
sensor.record = {'p', 'p_final', 'I', 'I_avg' };&#60;/p&#62;
&#60;p&#62;% =========================================================================&#60;br /&#62;
% VISUALISATION&#60;br /&#62;
% =========================================================================
&#60;/p&#62;</description>
		</item>

	</channel>
</rss>
