【一种新的Burton-Miller型奇异边界方法(BM-SBM)】用于声学设计灵敏度分析,2D和3D声学设计灵敏度分析的奇异边界方法研究(Matlab代码实现)

2024-01-24

???????????????? 欢迎来到本博客 ❤️❤️????????

????博主优势: ???????????? 博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️ 座右铭: 行百里者,半于九十。

???????????? 本文目录如下: ????????????

目录

????1 概述

????2 运行结果

2.1 2D

2.2 3D

????3 参考文献

????4 Matlab代码实现


????1 概述

Burton-Miller型奇异边界方法(BM-SBM)是一种声学设计灵敏度分析的方法,用于在声学场中计算某个设计参数对声学场性能的影响程度。这种方法结合了Burton-Miller方法和奇异边界方法,可以在2D和3D声学设计中进行应用。

Burton-Miller方法是一种用于求解边界积分方程的数值方法,它通过将边界上的物理量表示为积分形式,然后将积分转化为离散形式来近似求解。这种方法能够有效地处理复杂的边界形状和非均匀介质分布。

奇异边界方法(SBM)是一种基于奇异积分方程的数值方法,用于求解泛定问题。它将边界上的物理量表示为积分形式,并且利用奇异积分方程的特性进行近似求解。奇异边界方法在处理奇异问题和边界层问题时具有出色的表现。

BM-SBM方法将Burton-Miller方法和奇异边界方法相结合,可以在声学设计中进行灵敏度分析。它可以通过改变设计参数的数值来评估该参数对声学场性能的影响程度。这种方法在2D和3D声学设计中可以应用,可以帮助设计师优化声学系统的性能。

该方法的研究主要包括开发有效的数值算法和技术,处理复杂的边界形状和非均匀介质分布,以及提高计算效率和准确性。研究还可以探索不同的应用领域,如声学传感器设计、声学材料优化等。

综上,Burton-Miller型奇异边界方法(BM-SBM)是一种用于声学设计灵敏度分析的新方法,可以在2D和3D声学设计中应用,提供有关设计参数对声学场性能影响的评估。这种方法的研究还在不断发展,以改进计算效率和准确性,并扩展应用领域。

???? 2 运行结果

2.1 2D

2.2 3D

部分代码:

%% Parameter settings
t0 = clock;              % Time Start
n = 100;                 % Total number of soource points
m = 100;                 % The number of equal parts for design variable
a = 0.1;                 % Radius of pulsating cylinder
SS = 4*pi*a^2;
Lj = SS/n;               % The influence ranges of source point.
rho = 1.2;               % the air density
c = 341;                 % The speed of sound in air
v0=1;                    % the radial velocity
k = linspace(0.01,6,m);  % The value range of the wave number
dk = (k(end)-k(1))/(m-1);

xi = 5 ; yi = 0; zi = 0; % test point
i = sqrt(-1);


%% Analytical solution of the acoustic sensitivity with respect to the wave number
pt_exact = @(ro,k,a) i*rho*c*v0*a^2*exp(i*k.*(ro-a))./(ro.*(1-i*k*a).^2).*((1-i*k*a).^2+i*k*ro.*(1-i*k*a)+i*k*a);

%% Arrangement of Boundary Points
[nodes] = Creat_Sources(n);
xp = a.*nodes(:, 1);
yp = a.*nodes(:, 2);
zp = a.*nodes(:, 3);
n_x = -xp/a; n_y = -yp/a; n_z = -zp/a;
r=sqrt((xp-xp').^2+(yp-yp').^2+(zp-zp').^2);

%% Unknown coefficient solving process
alpha = zeros(n,m);
for j=1:m
lamda=i/(k(j)+1);
b = i*rho*k(j)*c*v0*ones(n,1) ; % boundary condition (Nuemann)

[~,F,~,H] = GFEH(k(j),r,xp,yp,zp,xp',yp',zp',n_x,n_y,n_z,n_x',n_y',n_z');
A=F+lamda*H;

[~,H0] = FH0(r,xp,yp,zp,xp',yp',zp',n_x,n_y,n_z,n_x',n_y',n_z');
[~,E0] = GE0(r,xp,yp,zp,xp',yp',zp',n_x',n_y',n_z');
E0(logical(eye(n)))=0;
Asum1 = sum(E0,2);
H0(logical(eye(n)))=0;
Asum2 = sum(H0,2);
H(logical(eye(n)))=0;
Asum3 = sum(H,2);

%Source intensity factors (SIFs)
uii=1/(4*pi)*(i*k(j)+pi^4./(25*sqrt(Lj))+(log(pi))^2/SS);
qii=1/Lj-Asum1;
qii_BM=-Asum2+k(j)^2/2*uii;

A(logical(eye(n))) = qii+lamda*qii_BM;  % Source intensity factors (SIFs)

alpha(:,j)=A\b;
end

%% Central difference method
alpha_k(:,1) = (alpha(:,2)-alpha(:,1))/dk; %(-alpha(:,3)+4*alpha(:,2)-3*alpha(:,1))/(2*dk);
alpha_k(:,2:m-1) = (alpha(:,3:m)-alpha(:,1:m-2))/(2*dk);
alpha_k(:,m) = (alpha(:,m)-alpha(:,m-1))/dk;  %(3*alpha(:,m)-4*alpha(:,m-1)+alpha(:,m-2))/(2*dk);

%% Numerical solution and exact solution
Pe=zeros(m,1);
for j = 1:m
lamda=i/(k(j)+1);

????3 参考文献

文章中一些内容引自网络,会注明出处或引用为参考文献,难免有未尽之处,如有不妥,请随时联系删除。

[1] Koo B U .Shape design sensitivity analysis of acoustic problems using a boundary element method[J].Computers & Structures, 1997, 65(5):713-719.DOI:10.1016/S0045-7949(96)00322-7.

[2]张汝毅,王发杰,程隋福,等.振动体声学灵敏度分析的Burton-Miller奇异边界法及其MATLAB工具箱开发[J].计算机辅助工程, 2022, 31(4):1-6.

???? 4 Matlab代码 实现

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【一种新的Burton-Miller型奇异边界方法(BM-SBM)】用于声学设计灵敏度分析,2D和3D声学设计灵敏度分析的奇异边界方法研究(Matlab代码实现) 的相关文章

  • 在 MATLAB 中将数组拆分为多个部分

    我想将数组分成相等的部分 如下所示 a 1 2 3 4 5 6 7 8 9 10 n 2 b split a n b 1 2 3 4 5 6 7 8 9 10 哪个函数可以做到这一点 尝试这个 a 1 2 3 4 5 6 reshape a
  • MATLAB - 函数的多个返回值?

    我正在 matlab 中编写 2 个函数 一个初始化函数和一个将项目插入数组的函数 将其视为双向链表 但是 我的初始化函数仅返回 ans 和初始化的数组 我怎样才能让它也设置其他变量的值 这是我的代码 function array list
  • 具有表面梯度的颜色 matplotlibplot_surface 命令

    我想将 surf 命令从MATLAB到plot surface命令中绘图库 我面临的挑战是使用时cmapplot surface 命令中的函数用渐变为表面着色 这里是matlab script Matlab Commands x 5 25
  • 在python中访问包含matlab类的.mat文件

    我有一个从 matlab 2012b 生成的 mat 文件 它包含一个带有用户定义的 matlab 类的变量 在 python 3 3 中使用 scipy io loadmat 加载文件时 我得到以下信息 mat scipy io load
  • matlab中的分箱

    我一直无法在 matlab 或 Octave 中找到函数来完成我想要的操作 我有一个两列的矩阵 m x 和 y 值 我知道我可以通过执行 m 1 或 m 2 来提取列 我想将其分成 可能 大小相等的较小矩阵 并绘制这些矩阵的平均值 换句话说
  • R和matlab中的qr函数

    我有一个关于将 matlab 函数转换为 R 的问题 我希望有人能提供帮助 matlab 和 R 中使用的标准 QR 分解称为 qr 据我了解 用两种语言执行 qr 分解的标准方法是 Matlab Q R qr A 满足QR A R z l
  • MATLAB 颜色条刻度标记错误?

    我正在绘制 9 个子图 如下图所示 其中一个颜色条代表三个子图 在这里我想将颜色条中的最高值显示为 gt value 令人惊讶的是 当我手动将刻度标签编辑为h TickLabels end gt h TickLabels end 颜色条开始
  • Windows 上 Matlab 64 位版本的免费 SCM [已关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 当 Matlab 安装为 64 位版本时 它只能使用 64 位源代码控制系统 是否有免费的源代码控制系统
  • 如何绘制 NxN 圆数组?

    我想绘制一个 NxN 的圆数组 为了形象化 我附上了我想要实现的目标的图像 我是 MatlLab 的新手 所以我尝试先绘制一个圆 下面是示例代码 n 2 10 size of mask M zeros n I 1 n x I n 2 mas
  • 计算向量中连续 1 和 0 的数量

    在 Matlab 中我有一个如下所示的向量 0 0 1 1 0 0 0 1 1 0 0 0 0 1 1 1 0 0 0 0 1 0 1 我现在要做的是统计这个向量中1的个数 连续的 1 算作 1 此外 我还想计算 1 之间 0 的平均值和中
  • 如何将 Simulink 编码器编译器版本设置为支持 C++11 的版本?

    我正在尝试将代码合并到 Simulink 及其嵌入式编码器中 该代码使用 C 11 扩展 跑步mex setup c 给出这个输出 mex setup c MEX configured to use Xcode Clang for C la
  • Matlab,如何获取imagesc生成的结果?

    我读过一些类似的文章 但它们不是我想要的 得到imagesc之后的矩阵 https stackoverflow com questions 14364239 get the matrix after imagesc 14364434 143
  • 如何将Matlab命令的输出重定向到文件? [复制]

    这个问题在这里已经有答案了 我想将 Matlab 命令的输出重定向或复制到文件中 我怎样才能做到这一点 就我而言 我想使用 UNIX 工具比较两个大型结构diff 示例 我可以在 Matlab 中执行此操作 gt gt s1 s1 a 32
  • 在 MATLAB 中一次为元胞数组分配不同的值

    我需要有关在 MATLAB 中创建元胞数组的帮助 其中每个元胞都是不同大小的数组 例如 假设我有这个简单的数组和值 A 5 3 8 7 0 4 1 B 10 元胞数组C必须创建为 C 10 20 30 40 50 10 20 30 10 2
  • 从彩色背景中提取黑色对象

    人眼很容易辨别black来自其他颜色 但是计算机呢 我在普通的A4纸上打印了一些色块 由于组成彩色图像有青色 品红色和黄色三种墨水 所以我设置每个块的颜色C 20 C 30 C 40 C 50 以及其余两种颜色是 0 这是我的源图像的第一列
  • 优化数组压缩

    假设我有一个数组k 1 2 0 0 5 4 0 我可以按如下方式计算掩码m k gt 0 1 1 0 0 1 1 0 仅使用掩码 m 和以下操作 左移 右移 And Or 加 减 乘 我可以将 k 压缩为以下形式 1 2 5 4 以下是我目
  • MATLAB:生成给定三种颜色的颜色图

    我正在尝试在 MATLAB 中生成给定三种颜色 最高值 零值和最低值 的颜色图 我的思维过程是从最高端到中间循环 并将每个步骤存储到一个 3xN 第一列是 R 第二列是 G 第三列是 B 矩阵 所以我正在使用 fade from high
  • 是否有一个函数可以将两个元胞数组“压缩”在一起? [复制]

    这个问题在这里已经有答案了 假设我有一个元胞数组A and B as so A A B C D B 1 2 3 4 我想创建元胞数组C通过将 A 和 B 压缩 在一起 如下所示 C zip A B C A 1 B 2 C 3 D 4 这样的
  • 将 Matlab MEX 文件中的函数直接嵌入到 Python 中

    我正在使用专有的 Matlab MEX 文件在 Matlab 中导入一些仿真结果 当然没有可用的源代码 Matlab 的接口实际上非常简单 因为只有一个函数 返回一个 Matlab 结构体 我想知道是否有任何方法可以直接从Python调用M
  • 在matlab中设置图例符号的精度

    我有这个 leg2 strcat Max Degree num2str adet 1 1 ch l leg3 strcat Min Degree num2str adet 1 2 ch l leg4 strcat Max Request n

随机推荐