【一种新的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代码实现) 的相关文章

  • 从 Excel 读取字符串到 Matlab 中?

    我想从 Excel 文件中将字符串读入 Matlab ID xlsread data xlsx 1 D2 D4 D2 D4 范围内的单元格中包含字符串 当我尝试将字符串导入 Matlab 时 我得到的只是一个空列表 我能做什么来解决这个问题
  • 在 GUI MATLAB 中为静态文本赋值

    如何在 MATLAB GUI 中为静态文本赋值 双击指南中的文本打开属性编辑器 然后编辑 String 财产 您还可以设置 Tag 属性 以便您可以在 GUI 运行时对其进行编辑 如果您将标签设置为mytext 您可以将静态文本更改为 My
  • Matlab多核

    我正在运行一种占用大量资源并最大化 CPU 的算法 问题是它只使用一个CPU 我怎样才能使MATLAB多线程计算并使用超过1个CPU 除非您专门使用并行结构 即使用显式并行性 或使用已经为您并行化的内置函数 否则 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 相比,Numpy 加载 csv 太慢

    我发布这个问题是因为我想知道我是否做了一些非常错误的事情才能得到这个结果 我有一个中等大小的 csv 文件 我尝试使用 numpy 来加载它 为了便于说明 我使用 python 创建了该文件 import timeit import num
  • 有没有办法在 mex 文件中制作 try-catch 语句?

    我知道在 C 中没有内置的方法来执行 try catch 语句 但是 MATLAB 是否为 MEX 文件提供了任何类型的 try catch 功能 我尝试使用Longjmp and Setjmp以中描述的方式http www di unip
  • 将数据库导入 MATLAB 错误

    我正在尝试将表导入到我的 MATLAB 工作区 但它一直向我抛出错误 Undefined function or method fetch for input arguments of type struct 这是我尝试执行的代码 dyn
  • 如何在不使用 MATLAB 的情况下打开 .mat 文件?

    我在Matlab中做了一个项目 现在我已经卸载了Matlab 现在 我需要一些我的项目的参考 我留下了所有 mat 文件 我正在尝试在记事本中打开它们 并且我在那里得到了 unicode 字符 我的问题很简单 如何在记事本或某些文字处理器中
  • 使用 MAT2CELL 的 MATLAB

    我有以下矩阵 letter A B C D E F G H I J K L M N O P Q R S T U V W X Y Z a b c d e f g h ii jj k l m o p q r s t u v w x y z nu
  • 如何绘制 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
  • 读取 MEX 文件中的 4D 数组

    我在 MATLAB 中有一个 4 维数组 我正在尝试访问 MEX 函数中的数组 下面创建 testmatrix 一个 4 维矩阵 已知数据为uint8 type Create a 4D array 2x 2y rgb 3 framenumb
  • 笛卡尔散点图上的极坐标网格线

    我有一个脚本来创建散点图 使用gscatter 基于另一个脚本生成的 x y 数据 离散数据点 不连续 由于这些数据点实际上是圆形空间中某些对象的位置 因此添加极坐标网格线将使绘图更有意义 有谁知道如何在笛卡尔散点图上显示极坐标网格线 或者
  • Google Chrome 的互联网历史记录脚本

    我并不是在寻找 最佳 或最有效的脚本来执行此操作 但我想知道是否存在一个脚本可以从 Google Chrome 中提取一天的互联网历史记录并将其记录到 txt 文件中 我更喜欢用 Python 或 MATLAB 编写 如果你们有不同的方法
  • 在Matlab中使用中心切片定理实现滤波反投影算法

    我正在研究一种使用中心切片定理的滤波反投影算法作为家庭作业 虽然我理解纸上的理论 但在 Matlab 中实现它时遇到了问题 我得到了一个可以遵循的框架 但我认为我可能误解了一个步骤 这是我所拥有的 function img sampleFB
  • 有没有办法在 MATLAB 中执行函数内联?

    我可以使用什么语言功能或开箱即用的技巧来完成 MATLAB 中的函数内联 令人烦恼的是 Google 搜索 matlab 内联函数 http www google com search q matlab inline function揭示了
  • 如何在matlab中绘制彩色一维直方图

    我有一个一维数组 X 其中包含相关系数的统计数据 我想绘制一个彩色直方图 我使用以下代码 histogram X 10 它可以创建具有单色的直方图 现在我想绘制一个直方图 其中每个条形都有不同的颜色 但 FaceColor 选项只能调整整个
  • 使用 lsqcurvefit 进行拟合

    我想将一些数据拟合到洛伦兹函数 但当我使用不同数量级的参数时 我发现拟合存在问题 这是我的洛伦兹函数 function value lorentz x x0 gamma amp value amp gamma 2 x x0 2 gamma
  • MATLAB 图像锐化 - 使用(1-高斯低通滤波器)的高斯高通滤波器

    我试图通过设计高斯高通滤波器来锐化图像 我想利用高通滤波器相当于单位矩阵减去低通滤波器的事实来做到这一点 所以我执行了以下操作 image imread Question3 Data Cats jpg read image H 1 fspe

随机推荐