コンテンツにスキップ
これは開発版のドキュメントである. 内容は次のリリースまでに変更される可能性がある. 最新のリリース版は 0.6.x を参照.

gspat

src

gspat は, gs を高速化したアルゴリズム. アルゴリズムは Plasencia らの論文 (Plasencia et al., 2020) に基づく.

gspat(
&NalgebraBackend,
&geometry,
&foci,
wavelength,
&option,
&mut dst,
)?;
引数 説明
geometry &Geometry デバイス配置
foci &[AmplitudeTarget] 焦点列 (位置と目標振幅)
wavelength Length 波長
option &GspatOption 追加オプション (下記参照)
dst &mut [[Emission; _]] 出力バッファ

引数は gs と同一.

GspatOption {
repeat,
constraint,
directivity,
mask,
parallel,
}
フィールド デフォルト
repeat NonZeroUsize 100
constraint EmissionConstraint Clamp(MIN, MAX)
directivity Directivity Sphere
mask TransducerMask AllEnabled
parallel bool true

オプションは gs と同一.

parallel は結果の量子化をホスト側で複数スレッドへ分散するかどうか (GPU バックエンドの場合は無視される).

use std::num::NonZeroUsize;
use autd3_rs::geometry::{Autd3, Geometry, offset};
use autd3_rs::units::{m, mm, s};
use autd3_rs::value::Intensity;
use autd3_rs_pattern::wavelength;
use autd3_rs_pattern_holo::{
AmplitudeTarget, Directivity, EmissionConstraint, GspatOption, NalgebraBackend, Pa,
TransducerMask, gspat,
};
let geometry = Geometry::new(vec![Autd3::default()]);
let mut dst = geometry.pattern_buffer();
gspat(
&NalgebraBackend,
&geometry,
&[
AmplitudeTarget {
point: geometry.center() + offset(-30.0 * mm, 0.0 * mm, 150.0 * mm),
amplitude: 2.5e3 * Pa,
},
AmplitudeTarget {
point: geometry.center() + offset(30.0 * mm, 0.0 * mm, 150.0 * mm),
amplitude: 2.5e3 * Pa,
},
],
wavelength(340.0 * m / s),
&GspatOption {
repeat: NonZeroUsize::new(100).unwrap(),
constraint: EmissionConstraint::Clamp(Intensity::MIN, Intensity::MAX),
directivity: Directivity::Sphere,
mask: TransducerMask::AllEnabled,
parallel: true,
},
&mut dst,
)?;