<?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: FUS transducer composed of discrete (modular) elements in 2D</title>
		<link>http://www.k-wave.org/forum/topic/fus-transducer-composed-of-discrete-modular-elements-in-2d</link>
		<description>Support for the k-Wave MATLAB toolbox</description>
		<language>en-US</language>
		<pubDate>Wed, 13 May 2026 12:44:55 +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/fus-transducer-composed-of-discrete-modular-elements-in-2d" rel="self" type="application/rss+xml" />

		<item>
			<title>Bradley Treeby on "FUS transducer composed of discrete (modular) elements in 2D"</title>
			<link>http://www.k-wave.org/forum/topic/fus-transducer-composed-of-discrete-modular-elements-in-2d#post-7017</link>
			<pubDate>Thu, 22 Aug 2019 17:50:50 +0000</pubDate>
			<dc:creator>Bradley Treeby</dc:creator>
			<guid isPermaLink="false">7017@http://www.k-wave.org/forum/</guid>
			<description>&#60;p&#62;HI Ellen,&#60;/p&#62;
&#60;p&#62;The arc positions don't seem to lie on a circle around the geometric focus. For example, try:&#60;/p&#62;
&#60;pre&#62;&#60;code&#62;d = sqrt((rows - 409).^2 + (cols - 377).^2);
d(rows &#38;gt;= Nx/2)
d(rows &#38;lt; Nx/2)&#60;/code&#62;&#60;/pre&#62;
&#60;p&#62;You can see the elements at the bottom are all more-or-less equidistant, but the elements at the top aren't. Worth checking how your Elem_X and Elem_Z values are calculated.&#60;/p&#62;
&#60;p&#62;Brad.
&#60;/p&#62;</description>
		</item>
		<item>
			<title>yeatsem on "FUS transducer composed of discrete (modular) elements in 2D"</title>
			<link>http://www.k-wave.org/forum/topic/fus-transducer-composed-of-discrete-modular-elements-in-2d#post-6968</link>
			<pubDate>Wed, 10 Jul 2019 17:20:29 +0000</pubDate>
			<dc:creator>yeatsem</dc:creator>
			<guid isPermaLink="false">6968@http://www.k-wave.org/forum/</guid>
			<description>&#60;p&#62;I've posted the entire script, though it may be confusing. The relevant portion is below the section titled %% build the transducer. The coordinates used in Elem_X(coords) and Elem_Z(coords) are as follows:&#60;/p&#62;
&#60;p&#62;Elem_X(coords)&#60;/p&#62;
&#60;p&#62;-0.0496&#60;br /&#62;
-0.0736&#60;br /&#62;
-0.0956&#60;br /&#62;
-0.1142&#60;br /&#62;
-0.1293&#60;br /&#62;
 0.0496&#60;br /&#62;
 0.0736&#60;br /&#62;
 0.0956&#60;br /&#62;
 0.1142&#60;br /&#62;
 0.1293&#60;/p&#62;
&#60;p&#62;Elem_Z(coords)&#60;/p&#62;
&#60;p&#62;-0.1410&#60;br /&#62;
-0.1299&#60;br /&#62;
-0.1149&#60;br /&#62;
-0.0964&#60;br /&#62;
-0.0750&#60;br /&#62;
-0.1410&#60;br /&#62;
-0.1299&#60;br /&#62;
-0.1149&#60;br /&#62;
-0.0964&#60;br /&#62;
-0.0750&#60;/p&#62;
&#60;p&#62;These are the coordinates of elements pertaining to a section of a (nearly) hemispherical array with geometrical focus at (0,0,0). These coordinates get shifted in the script to facilitate placement into the kgrid.&#60;/p&#62;
&#60;p&#62;Thank you,&#60;/p&#62;
&#60;p&#62;Ellen
&#60;/p&#62;</description>
		</item>
		<item>
			<title>yeatsem on "FUS transducer composed of discrete (modular) elements in 2D"</title>
			<link>http://www.k-wave.org/forum/topic/fus-transducer-composed-of-discrete-modular-elements-in-2d#post-6967</link>
			<pubDate>Wed, 10 Jul 2019 17:13:45 +0000</pubDate>
			<dc:creator>yeatsem</dc:creator>
			<guid isPermaLink="false">6967@http://www.k-wave.org/forum/</guid>
			<description>&#60;p&#62;addpath('C:\Users\labadmin\Desktop\k-Wave')&#60;br /&#62;
clear all;&#60;br /&#62;
clc;&#60;/p&#62;
&#60;p&#62;%experimental properties&#60;br /&#62;
water_speed = 1480;&#60;br /&#62;
gly_speed = 1560;&#60;br /&#62;
gt = 1 %glycerin thickness in.&#60;br /&#62;
gt = gt*2.54*1e-2; %glycerin thickness m&#60;/p&#62;
&#60;p&#62;% grid properties&#60;br /&#62;
pts_per_lam = 8;&#60;br /&#62;
c0_min = water_speed;&#60;br /&#62;
f_max = 500000;&#60;br /&#62;
x_size = .4;&#60;br /&#62;
dx = c0_min/(pts_per_lam*f_max);&#60;br /&#62;
dy = dx;&#60;/p&#62;
&#60;p&#62;Nx = round(x_size/dx);&#60;br /&#62;
Ny = round(Nx/2);&#60;/p&#62;
&#60;p&#62;% check prime factors&#60;br /&#62;
checkFactors(Ny - 40,Ny + 40)&#60;br /&#62;
checkFactors(Nx - 20, Nx + 20)&#60;br /&#62;
close all&#60;br /&#62;
%%&#60;br /&#62;
%set final grid properties&#60;br /&#62;
Nx = 1024;&#60;br /&#62;
Ny = 512;&#60;br /&#62;
%%&#60;br /&#62;
% create the grid and time array&#60;br /&#62;
kgrid = makeGrid(Nx,dx,Ny,dy);&#60;br /&#62;
CFL = .2;&#60;br /&#62;
c0_max = gly_speed;&#60;br /&#62;
dt = CFL*dx/c0_max;&#60;br /&#62;
kgrid.t_array = 0:dt:120e-6;&#60;/p&#62;
&#60;p&#62;%medium properties&#60;br /&#62;
medium.sound_speed = water_speed*ones(Nx,Ny); % [m/s] Water&#60;br /&#62;
medium.density = 997*ones(Nx,Ny);   % [kg m^-3] Water&#60;br /&#62;
%medium.BonA = 5*ones(Nx,Ny); %assume linear at first&#60;br /&#62;
%medium.alpha_coeff = .0022*ones(Nx,Ny); %assume lossless at first&#60;br /&#62;
%medium.alpha_power = 1.05*ones(Nx,Ny); %assume lossless at first&#60;br /&#62;
medium.alpha_mode = 'no_dispersion';&#60;/p&#62;
&#60;p&#62;load('Elem_X')&#60;br /&#62;
load('Elem_Z')&#60;br /&#62;
coords = [3 7 13 20 28 85 88 92 98 105]; %elem #  &#60;/p&#62;
&#60;p&#62;%shift in x to fit in the kgrid&#60;/p&#62;
&#60;p&#62;x_shift = min(Elem_X(coords)) - min(min(kgrid.x)) -.01;&#60;br /&#62;
y_shift = min(Elem_Z(coords)) - min(min(kgrid.y)) -.01;&#60;/p&#62;
&#60;p&#62;[grid_data,order_id,re_order_id] = cart2grid(kgrid,[Elem_X(coords)-x_shift  Elem_Z(coords)-y_shift]');&#60;/p&#62;
&#60;p&#62;[val id]= max(Elem_Z(coords));&#60;br /&#62;
[rows cols] = find(grid_data);&#60;br /&#62;
gly_start = round(cols(order_id(id)) + .013/dx);&#60;br /&#62;
gt = round(gt/dy);&#60;/p&#62;
&#60;p&#62;% medium.sound_speed(28:727,gly_start:gly_start+gt) = gly_speed; % [m/s] Glycerin&#60;br /&#62;
% medium.density(28:727,gly_start:gly_start+gt) = 1034.2; % [kg/m^3] % Glycerin&#60;/p&#62;
&#60;p&#62;medium.sound_speed_ref = c0_min; %ensures phase error is bounded&#60;/p&#62;
&#60;p&#62;%check dt&#60;br /&#62;
kmax = pi/dx;&#60;br /&#62;
dt &#38;lt; 2/(medium.sound_speed_ref*kmax)*asin(medium.sound_speed_ref/c0_max)&#60;/p&#62;
&#60;p&#62;%%&#60;/p&#62;
&#60;p&#62;% build transducer&#60;/p&#62;
&#60;p&#62;diam = floor(.02/dx);&#60;br /&#62;
if rem(diam,2) == 0&#60;br /&#62;
    diam = diam + 1;&#60;br /&#62;
end&#60;br /&#62;
[rows,cols] = find(grid_data);&#60;br /&#62;
bm = makeMultiArc([Nx, Ny],[rows cols], 9999, diam, [409 377]); %geometric focus array in gridpoints&#60;/p&#62;
&#60;p&#62;imagesc(bm)&#60;br /&#62;
axis equal&#60;/p&#62;
&#60;p&#62;source.p_mask = bm;&#60;/p&#62;
&#60;p&#62;source_freq = 0.5e6;   % [Hz]&#60;br /&#62;
source_mag = -10;      % [Pa]&#60;br /&#62;
tc = gauspuls('cutoff',source_freq,0.6,[],-50); &#60;/p&#62;
&#60;p&#62;time = -tc : kgrid.dt : kgrid.t_array(end) ;&#60;br /&#62;
pulse = gauspuls(time,source_freq,0.6);&#60;br /&#62;
source.p = filterTimeSeries(kgrid, medium, source_mag*pulse);&#60;/p&#62;
&#60;p&#62;sensor.mask = zeros(Nx,Ny);&#60;br /&#62;
sensor.mask(190,205) = 1;&#60;/p&#62;
&#60;p&#62;% Define data types to be stored in sensor_data&#60;br /&#62;
sensor.record = {'p', 'p_final','p_max_all','p_min_all'};  %[ p is acoustic pressure at each sensor, p_final is acoustic field across grid]&#60;/p&#62;
&#60;p&#62;%Define Record start index&#60;br /&#62;
sensor.record_start_index = 1; %Start recording at kgrid.t_array( x )&#60;/p&#62;
&#60;p&#62;%% Run the Sim&#60;br /&#62;
input_args = {'DataCast', 'single','PMLInside',false}; %put PML outside of grid&#60;br /&#62;
sensor_data = kspaceFirstOrder2D(kgrid, medium, source, sensor,input_args{:});
&#60;/p&#62;</description>
		</item>
		<item>
			<title>Bradley Treeby on "FUS transducer composed of discrete (modular) elements in 2D"</title>
			<link>http://www.k-wave.org/forum/topic/fus-transducer-composed-of-discrete-modular-elements-in-2d#post-6962</link>
			<pubDate>Wed, 10 Jul 2019 13:47:16 +0000</pubDate>
			<dc:creator>Bradley Treeby</dc:creator>
			<guid isPermaLink="false">6962@http://www.k-wave.org/forum/</guid>
			<description>&#60;p&#62;Hi yeatsem,&#60;/p&#62;
&#60;p&#62;Can you post the code you use to create the array (or the entire script)?&#60;/p&#62;
&#60;p&#62;Brad.
&#60;/p&#62;</description>
		</item>
		<item>
			<title>yeatsem on "FUS transducer composed of discrete (modular) elements in 2D"</title>
			<link>http://www.k-wave.org/forum/topic/fus-transducer-composed-of-discrete-modular-elements-in-2d#post-6958</link>
			<pubDate>Tue, 09 Jul 2019 23:11:05 +0000</pubDate>
			<dc:creator>yeatsem</dc:creator>
			<guid isPermaLink="false">6958@http://www.k-wave.org/forum/</guid>
			<description>&#60;p&#62;Hello,&#60;/p&#62;
&#60;p&#62;I am trying to model a section of a hemispherical phased array transducer with discrete circular elements in just two dimensions. I am modeling each element as an arc using the makeMultiArc command. There are 5 elements symmetrically distributed on each side of a circular section representing a slice through the hemispherical phased array (10 elements in total). The makeMultiArc command appears to be working well for the 5 elements on one side of the slice, but on the other side, the 5 arcs appear to be slightly misaligned with respect to the focus. I am assigning the same focal point to all of the arcs but am nonetheless encountering this problem. I believe the misalignment is affecting the output of the simulation. When I plot the 2D image of the maximum pressure over the entire field, the beam has appropriate lobes on the side where the elements are properly aligned yet lacks this pattern on the misaligned side. This is causing the maximum pressure in the field to shift laterally.&#60;/p&#62;
&#60;p&#62;Has anyone else encountered a similar problem? Am I misusing the makeMultiArc function?
&#60;/p&#62;</description>
		</item>

	</channel>
</rss>
