<?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: Simulating constructive interference between two transducers</title>
		<link>http://www.k-wave.org/forum/topic/simulating-constructive-interference-between-two-transducers</link>
		<description>Support for the k-Wave MATLAB toolbox</description>
		<language>en-US</language>
		<pubDate>Tue, 12 May 2026 23:06:41 +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/simulating-constructive-interference-between-two-transducers" rel="self" type="application/rss+xml" />

		<item>
			<title>bencox on "Simulating constructive interference between two transducers"</title>
			<link>http://www.k-wave.org/forum/topic/simulating-constructive-interference-between-two-transducers#post-8577</link>
			<pubDate>Wed, 13 Jul 2022 18:44:14 +0000</pubDate>
			<dc:creator>bencox</dc:creator>
			<guid isPermaLink="false">8577@http://www.k-wave.org/forum/</guid>
			<description>&#60;p&#62;Hi derrelldv, &#60;/p&#62;
&#60;p&#62;I can't quite picture what you've got. Do the transducers share the same grid points?&#60;/p&#62;
&#60;p&#62;Best wishes&#60;br /&#62;
Ben
&#60;/p&#62;</description>
		</item>
		<item>
			<title>derrelldv on "Simulating constructive interference between two transducers"</title>
			<link>http://www.k-wave.org/forum/topic/simulating-constructive-interference-between-two-transducers#post-8561</link>
			<pubDate>Thu, 07 Jul 2022 02:37:56 +0000</pubDate>
			<dc:creator>derrelldv</dc:creator>
			<guid isPermaLink="false">8561@http://www.k-wave.org/forum/</guid>
			<description>&#60;p&#62;I was trying to overlap the binary masks of two transducers inclined. The first transducer is inclined clockwise at 18 degrees from x-axis while second one is horizontal. The first few elements of second transducer and the last few elements of the first transduceroverlap. When both are transmitting plane wave at the same angle and at the same time, the second transducer (from left) doesn't start transmitting exactly from first element but a few elements after that. Any reason why?
&#60;/p&#62;</description>
		</item>
		<item>
			<title>jamesb67 on "Simulating constructive interference between two transducers"</title>
			<link>http://www.k-wave.org/forum/topic/simulating-constructive-interference-between-two-transducers#post-6692</link>
			<pubDate>Tue, 18 Dec 2018 12:38:41 +0000</pubDate>
			<dc:creator>jamesb67</dc:creator>
			<guid isPermaLink="false">6692@http://www.k-wave.org/forum/</guid>
			<description>&#60;p&#62;Got the code working, I forgot to add the sources properly.&#60;br /&#62;
Code below for anyone interested&#60;/p&#62;
&#60;p&#62;% create the computational grid&#60;br /&#62;
Nx = 128;           % number of grid points in the x (row) direction&#60;br /&#62;
Ny = 128;           % number of grid points in the y (column) direction&#60;br /&#62;
dx = 0.1e-3;        % grid point spacing in the x direction [m]&#60;br /&#62;
dy = 0.1e-3;        % grid point spacing in the y direction [m]&#60;br /&#62;
kgrid = kWaveGrid(Nx, dx, Ny, dy);&#60;/p&#62;
&#60;p&#62;% define the properties of the propagation medium&#60;br /&#62;
medium.sound_speed = 1500;  % [m/s]&#60;br /&#62;
medium.alpha_coeff = 0.75;  % [dB/(MHz^y cm)]&#60;br /&#62;
medium.alpha_power = 1.5;&#60;/p&#62;
&#60;p&#62;% create the time array&#60;br /&#62;
kgrid.makeTime(medium.sound_speed);&#60;/p&#62;
&#60;p&#62;% define a curved transducer element&#60;br /&#62;
arc_pos = [20, 20];         % [grid points]&#60;br /&#62;
radius = 60;                % [grid points]&#60;br /&#62;
diameter = 81;              % [grid points]&#60;br /&#62;
focus_pos = [Nx/2, Nx/2];   % [grid points]&#60;br /&#62;
source1.p_mask = makeArc([Nx, Ny], arc_pos, radius, diameter, focus_pos);&#60;/p&#62;
&#60;p&#62;% define a time varying sinusoidal source&#60;br /&#62;
source_freq = 0.25e6;       % [Hz]&#60;br /&#62;
source_mag = 0.5;           % [Pa]&#60;br /&#62;
source1.p = source_mag * sin(2 * pi * source_freq * kgrid.t_array);&#60;/p&#62;
&#60;p&#62;% filter the source to remove any high frequencies not supported by the grid&#60;br /&#62;
source1.p = filterTimeSeries(kgrid, medium, source1.p);&#60;/p&#62;
&#60;p&#62;% create a sensor mask covering the entire computational domain using the&#60;br /&#62;
% opposing corners of a rectangle&#60;br /&#62;
sensor.mask = [1, 1, Nx, Ny].';&#60;/p&#62;
&#60;p&#62;% set the record mode to capture the final wave-field and the statistics at&#60;br /&#62;
% each sensor point&#60;br /&#62;
%sensor.record = {'p_final', 'p_max', 'p_rms'};&#60;/p&#62;
&#60;p&#62;% define a second curved transducer element&#60;br /&#62;
arc_pos1 = [20, 108];         % [grid points]&#60;br /&#62;
radius1 = 60;                % [grid points]&#60;br /&#62;
diameter1 = 81;              % [grid points]&#60;br /&#62;
focus_pos1 = [Nx/2, Nx/2];   % [grid points]&#60;br /&#62;
source2.p_mask = makeArc([Nx, Ny], arc_pos1, radius1, diameter1, focus_pos1);&#60;/p&#62;
&#60;p&#62;% define a time varying sinusoidal source&#60;br /&#62;
source_freq1 = 0.25e6;       % [Hz]&#60;br /&#62;
source_mag1 = 0.5;           % [Pa]&#60;br /&#62;
source2.p = source_mag1 * sin(2 * pi * source_freq1 * kgrid.t_array);&#60;/p&#62;
&#60;p&#62;% filter the source to remove any high frequencies not supported by the grid&#60;br /&#62;
source2.p = filterTimeSeries(kgrid, medium, source2.p);&#60;/p&#62;
&#60;p&#62;source.p = source1.p + source2.p;&#60;br /&#62;
source.p_mask = source1.p_mask + source2.p_mask;&#60;/p&#62;
&#60;p&#62;% create a sensor mask covering the entire computational domain using the&#60;br /&#62;
% opposing corners of a rectangle&#60;br /&#62;
sensor.mask = [1, 1, Nx, Ny].';&#60;/p&#62;
&#60;p&#62;% create a display mask to display the transducer&#60;br /&#62;
display_mask = source.p_mask;&#60;/p&#62;
&#60;p&#62;% assign the input options&#60;br /&#62;
input_args = {'DisplayMask', display_mask, 'PMLInside', false, 'PlotPML', false};&#60;/p&#62;
&#60;p&#62;% run the simulation&#60;br /&#62;
sensor_data = kspaceFirstOrder2D(kgrid, medium, source, sensor, input_args{:});
&#60;/p&#62;</description>
		</item>
		<item>
			<title>jamesb67 on "Simulating constructive interference between two transducers"</title>
			<link>http://www.k-wave.org/forum/topic/simulating-constructive-interference-between-two-transducers#post-6691</link>
			<pubDate>Mon, 17 Dec 2018 17:02:43 +0000</pubDate>
			<dc:creator>jamesb67</dc:creator>
			<guid isPermaLink="false">6691@http://www.k-wave.org/forum/</guid>
			<description>&#60;p&#62;Hi Anthony&#60;/p&#62;
&#60;p&#62;I've only gotten started now, I've managed to create two source/transducers and they appear on the grid. But only one is firing. Any idea where the error is?&#60;/p&#62;
&#60;p&#62;% create the computational grid&#60;br /&#62;
Nx = 128;           % number of grid points in the x (row) direction&#60;br /&#62;
Ny = 128;           % number of grid points in the y (column) direction&#60;br /&#62;
dx = 0.1e-3;        % grid point spacing in the x direction [m]&#60;br /&#62;
dy = 0.1e-3;        % grid point spacing in the y direction [m]&#60;br /&#62;
kgrid = kWaveGrid(Nx, dx, Ny, dy);&#60;/p&#62;
&#60;p&#62;% define the properties of the propagation medium&#60;br /&#62;
medium.sound_speed = 1500;  % [m/s]&#60;br /&#62;
medium.alpha_coeff = 0.75;  % [dB/(MHz^y cm)]&#60;br /&#62;
medium.alpha_power = 1.5;&#60;/p&#62;
&#60;p&#62;% create the time array&#60;br /&#62;
kgrid.makeTime(medium.sound_speed);&#60;/p&#62;
&#60;p&#62;% define a curved transducer element&#60;br /&#62;
arc_pos = [20, 20];         % [grid points]&#60;br /&#62;
radius = 60;                % [grid points]&#60;br /&#62;
diameter = 81;              % [grid points]&#60;br /&#62;
focus_pos = [Nx/2, Nx/2];   % [grid points]&#60;br /&#62;
source1.p_mask = makeArc([Nx, Ny], arc_pos, radius, diameter, focus_pos);&#60;/p&#62;
&#60;p&#62;% define a time varying sinusoidal source&#60;br /&#62;
source_freq = 0.25e6;       % [Hz]&#60;br /&#62;
source_mag = 0.5;           % [Pa]&#60;br /&#62;
source1.p = source_mag * sin(2 * pi * source_freq * kgrid.t_array);&#60;/p&#62;
&#60;p&#62;% filter the source to remove any high frequencies not supported by the grid&#60;br /&#62;
source1.p = filterTimeSeries(kgrid, medium, source1.p);&#60;/p&#62;
&#60;p&#62;% create a sensor mask covering the entire computational domain using the&#60;br /&#62;
% opposing corners of a rectangle&#60;br /&#62;
sensor.mask = [1, 1, Nx, Ny].';&#60;/p&#62;
&#60;p&#62;% set the record mode to capture the final wave-field and the statistics at&#60;br /&#62;
% each sensor point&#60;br /&#62;
%sensor.record = {'p_final', 'p_max', 'p_rms'};&#60;/p&#62;
&#60;p&#62;% define a second curved transducer element&#60;br /&#62;
arc_pos1 = [20, 108];         % [grid points]&#60;br /&#62;
radius1 = 60;                % [grid points]&#60;br /&#62;
diameter1 = 81;              % [grid points]&#60;br /&#62;
focus_pos1 = [Nx/2, Nx/2];   % [grid points]&#60;br /&#62;
source2.p_mask = makeArc([Nx, Ny], arc_pos1, radius1, diameter1, focus_pos1);&#60;/p&#62;
&#60;p&#62;% define a time varying sinusoidal source&#60;br /&#62;
source_freq1 = 0.25e6;       % [Hz]&#60;br /&#62;
source_mag1 = 0.5;           % [Pa]&#60;br /&#62;
source2.p = source_mag1 * sin(2 * pi * source_freq1 * kgrid.t_array);&#60;/p&#62;
&#60;p&#62;% filter the source to remove any high frequencies not supported by the grid&#60;br /&#62;
source2.p = filterTimeSeries(kgrid, medium, source2.p);&#60;/p&#62;
&#60;p&#62;% create a sensor mask covering the entire computational domain using the&#60;br /&#62;
% opposing corners of a rectangle&#60;br /&#62;
sensor.mask = [1, 1, Nx, Ny].';&#60;/p&#62;
&#60;p&#62;% create a display mask to display the transducer&#60;br /&#62;
display_mask = source1.p_mask + source2.p_mask;&#60;/p&#62;
&#60;p&#62;% assign the input options&#60;br /&#62;
input_args = {'DisplayMask', display_mask, 'PMLInside', false, 'PlotPML', false};&#60;/p&#62;
&#60;p&#62;% run the simulation&#60;br /&#62;
sensor_data = kspaceFirstOrder2D(kgrid, medium, source, sensor, input_args{:});
&#60;/p&#62;</description>
		</item>
		<item>
			<title>Anthony on "Simulating constructive interference between two transducers"</title>
			<link>http://www.k-wave.org/forum/topic/simulating-constructive-interference-between-two-transducers#post-6664</link>
			<pubDate>Fri, 30 Nov 2018 10:51:49 +0000</pubDate>
			<dc:creator>Anthony</dc:creator>
			<guid isPermaLink="false">6664@http://www.k-wave.org/forum/</guid>
			<description>&#60;p&#62;Hi James, &#60;/p&#62;
&#60;p&#62;You can simply define your two transducers using a binary mask (see k-Wave example &#34;Simulating Transducer Field Patterns&#34; or my recent reply to the post &#34;&#60;br /&#62;
how to generate a cylindrical transducer in 3D Space&#34;). &#60;/p&#62;
&#60;p&#62;Then, use source.p to set the input signal (see section 3.4 of the user manual). It can be either the same for each point of your transducers or a specific one for each transducer voxel.&#60;/p&#62;
&#60;p&#62;Regards,
&#60;/p&#62;</description>
		</item>
		<item>
			<title>jamesb67 on "Simulating constructive interference between two transducers"</title>
			<link>http://www.k-wave.org/forum/topic/simulating-constructive-interference-between-two-transducers#post-6663</link>
			<pubDate>Thu, 29 Nov 2018 13:07:23 +0000</pubDate>
			<dc:creator>jamesb67</dc:creator>
			<guid isPermaLink="false">6663@http://www.k-wave.org/forum/</guid>
			<description>&#60;p&#62;Hi Brad&#60;/p&#62;
&#60;p&#62;Sorry for only replying now, it would just be two simple 1MHz, 1 Watt disk transducers.&#60;br /&#62;
Not sure how to get the setup correct so that the beams will focus at the same area.&#60;/p&#62;
&#60;p&#62;Is there any code for available for modelling disk transducers and I can try work from there?&#60;/p&#62;
&#60;p&#62;All the best&#60;br /&#62;
James
&#60;/p&#62;</description>
		</item>
		<item>
			<title>Bradley Treeby on "Simulating constructive interference between two transducers"</title>
			<link>http://www.k-wave.org/forum/topic/simulating-constructive-interference-between-two-transducers#post-6620</link>
			<pubDate>Tue, 30 Oct 2018 16:19:59 +0000</pubDate>
			<dc:creator>Bradley Treeby</dc:creator>
			<guid isPermaLink="false">6620@http://www.k-wave.org/forum/</guid>
			<description>&#60;p&#62;Hi James,&#60;/p&#62;
&#60;p&#62;In principle, yes this can be achieved in k-Wave. How easy this is will depend on the details, for example, how complex your transducer is, etc, etc.&#60;/p&#62;
&#60;p&#62;Brad
&#60;/p&#62;</description>
		</item>
		<item>
			<title>jamesb67 on "Simulating constructive interference between two transducers"</title>
			<link>http://www.k-wave.org/forum/topic/simulating-constructive-interference-between-two-transducers#post-6601</link>
			<pubDate>Sun, 14 Oct 2018 18:14:11 +0000</pubDate>
			<dc:creator>jamesb67</dc:creator>
			<guid isPermaLink="false">6601@http://www.k-wave.org/forum/</guid>
			<description>&#60;p&#62;Hi,&#60;/p&#62;
&#60;p&#62;I'm doing a PhD in shear wave ultrasound elastography, I am looking to model two ultrasound transducers at an angle, cause them to constructively interfere and model the resulting shear wave propagation.&#60;/p&#62;
&#60;p&#62;Before I get properly stuck into k-wave, I just want to know is this a reasonable/possible scenario to model using this software?&#60;/p&#62;
&#60;p&#62;All the best&#60;br /&#62;
James
&#60;/p&#62;</description>
		</item>

	</channel>
</rss>
