主要内容gydF4y2Ba

散射问题gydF4y2Ba

这个例子展示了如何解决一个简单的散射问题,在这个问题中,你可以计算被来自左边的入射波照亮的方形物体反射的波。gydF4y2Ba

对于这个问题,假设一个无限水平膜受到小的垂直位移gydF4y2BaUgydF4y2Ba.膜固定在物体的边界上。介质是均匀的,波的相速度(传播速度),gydF4y2Baα,gydF4y2Ba是恒定的。波动方程是gydF4y2Ba

∂gydF4y2Ba 2gydF4y2Ba UgydF4y2Ba ∂gydF4y2Ba tgydF4y2Ba 2gydF4y2Ba -gydF4y2Ba αgydF4y2Ba 2gydF4y2Ba ▵gydF4y2Ba UgydF4y2Ba =gydF4y2Ba 0gydF4y2Ba

解决方案gydF4y2BaUgydF4y2Ba是入射波的总和吗gydF4y2BaVgydF4y2Ba反射波gydF4y2BaRgydF4y2Ba:gydF4y2Ba

UgydF4y2Ba =gydF4y2Ba VgydF4y2Ba +gydF4y2Ba RgydF4y2Ba

当光照在时间上是谐波的时候,你可以通过解决一个稳定的问题来计算场。假设入射波是在gydF4y2Ba- xgydF4y2Ba方向:gydF4y2Ba

VgydF4y2Ba (gydF4y2Ba xgydF4y2Ba ,gydF4y2Ba ygydF4y2Ba ,gydF4y2Ba tgydF4y2Ba )gydF4y2Ba =gydF4y2Ba egydF4y2Ba 我gydF4y2Ba (gydF4y2Ba -gydF4y2Ba kgydF4y2Ba xgydF4y2Ba -gydF4y2Ba ωgydF4y2Ba tgydF4y2Ba )gydF4y2Ba =gydF4y2Ba egydF4y2Ba -gydF4y2Ba ikxgydF4y2Ba ⋅gydF4y2Ba egydF4y2Ba -gydF4y2Ba 我gydF4y2Ba ωgydF4y2Ba tgydF4y2Ba

反射波可以分解为空间和时间分量:gydF4y2Ba

RgydF4y2Ba (gydF4y2Ba xgydF4y2Ba ,gydF4y2Ba ygydF4y2Ba ,gydF4y2Ba tgydF4y2Ba )gydF4y2Ba =gydF4y2Ba rgydF4y2Ba (gydF4y2Ba xgydF4y2Ba ,gydF4y2Ba ygydF4y2Ba )gydF4y2Ba egydF4y2Ba -gydF4y2Ba 我gydF4y2Ba ωgydF4y2Ba tgydF4y2Ba

现在你可以把波动方程写成亥姆霍兹方程用波数表示反射波的空间分量gydF4y2Ba kgydF4y2Ba =gydF4y2Ba ωgydF4y2Ba /gydF4y2Ba αgydF4y2Ba :gydF4y2Ba

-gydF4y2Ba ΔgydF4y2Ba rgydF4y2Ba -gydF4y2Ba kgydF4y2Ba 2gydF4y2Ba rgydF4y2Ba =gydF4y2Ba 0gydF4y2Ba

物体边界的狄利克雷边界条件是gydF4y2BaUgydF4y2Ba= 0,或根据入射波和反射波,gydF4y2BaRgydF4y2Ba= -gydF4y2BaVgydF4y2Ba.求时谐解和入射波在gydF4y2Ba- xgydF4y2Ba方向,可以将此边界条件写为:gydF4y2Ba

rgydF4y2Ba (gydF4y2Ba xgydF4y2Ba ,gydF4y2Ba ygydF4y2Ba )gydF4y2Ba =gydF4y2Ba -gydF4y2Ba egydF4y2Ba -gydF4y2Ba ikxgydF4y2Ba

的反射波gydF4y2BaRgydF4y2Ba从物体向外传播。计算外边界的条件必须允许波不反射地通过。这种情况通常称为无反射。作为gydF4y2Ba |gydF4y2Ba xgydF4y2Ba →gydF4y2Ba |gydF4y2Ba 趋于无穷时,gydF4y2BaRgydF4y2Ba近似满足单向波动方程gydF4y2Ba

∂gydF4y2Ba RgydF4y2Ba ∂gydF4y2Ba tgydF4y2Ba +gydF4y2Ba αgydF4y2Ba ξgydF4y2Ba →gydF4y2Ba ⋅gydF4y2Ba ∇gydF4y2Ba RgydF4y2Ba =gydF4y2Ba 0gydF4y2Ba

这个方程只考虑正向运动的波gydF4y2BaξgydF4y2Ba方向。在这里,gydF4y2BaξgydF4y2Ba为到物体的径向距离。利用时谐解,将该方程转化为广义诺伊曼边界条件gydF4y2Ba

ξgydF4y2Ba →gydF4y2Ba ⋅gydF4y2Ba ∇gydF4y2Ba rgydF4y2Ba -gydF4y2Ba ikrgydF4y2Ba =gydF4y2Ba 0gydF4y2Ba

为了使用编程工作流解决散射问题,首先创建一个单因变量的PDE模型。gydF4y2Ba

numberOfPDE = 1;模型= createpde (numberOfPDE);gydF4y2Ba

指定定义问题的变量:gydF4y2Ba

  • ggydF4y2Ba:一个几何说明函数。有关更多信息,请参阅文档部分gydF4y2Ba2-D几何创建的参数化函数gydF4y2Ba代码是gydF4y2Bascatterg.mgydF4y2Ba.gydF4y2Ba

  • kgydF4y2Ba,gydF4y2BacgydF4y2Ba,gydF4y2Ba一个gydF4y2Ba,gydF4y2BafgydF4y2Ba:系数和非齐次项。gydF4y2Ba

g = @scatterg;k = 60;c = 1;= - k ^ 2;f = 0;gydF4y2Ba

转换几何图形并将其附加到模型中。gydF4y2Ba

geometryFromEdges(模型中,g);gydF4y2Ba

绘制几何图形并显示边界条件定义中使用的边缘标签。gydF4y2Ba

图;pdegplot(模型,gydF4y2Ba“EdgeLabels”gydF4y2Ba,gydF4y2Ba“上”gydF4y2Ba);轴gydF4y2Ba平等的gydF4y2Ba标题gydF4y2Ba“显示边缘标签的几何图形”gydF4y2Ba;ylim ([0, 1])gydF4y2Ba

图中包含一个轴对象。标题为“显示几何边缘标签”的轴对象包含9个类型为行、文本的对象。gydF4y2Ba

应用边界条件。gydF4y2Ba

布特= applyBoundaryCondition(模型,gydF4y2Ba“纽曼”gydF4y2Ba,gydF4y2Ba“边缘”gydF4y2Ba(8)gydF4y2Ba...gydF4y2Ba‘g’gydF4y2Ba0,gydF4y2Ba“问”gydF4y2Ba-60我);州innerBCFunc = @ (loc) exp (1 * k * loc.x);克里丝= applyBoundaryCondition(模型,gydF4y2Ba“边界条件”gydF4y2Ba,gydF4y2Ba“边缘”gydF4y2Ba(1:4),gydF4y2Ba...gydF4y2Ba“u”gydF4y2Ba, innerBCFunc);gydF4y2Ba

指定系数。gydF4y2Ba

specifyCoefficients(模型,gydF4y2Ba“米”gydF4y2Ba0,gydF4y2Ba' d 'gydF4y2Ba0,gydF4y2Ba“c”gydF4y2BacgydF4y2Ba“一个”gydF4y2Ba一个,gydF4y2Ba“f”gydF4y2Baf);gydF4y2Ba

生成一个网格。gydF4y2Ba

generateMesh(模型,gydF4y2Ba“Hmax”gydF4y2Ba, 0.02);图pdemesh(模型);轴gydF4y2Ba平等的gydF4y2Ba

图中包含一个轴对象。轴对象包含两个类型为line的对象。gydF4y2Ba

求复振幅。向量的实部gydF4y2BaugydF4y2Ba存储亥姆霍兹方程实值解的近似值。gydF4y2Ba

结果= solvepde(模型);u = result.NodalSolution;gydF4y2Ba

策划解决方案。gydF4y2Ba

图pdeplot(模型,gydF4y2Ba“XYData”gydF4y2Ba真正的(u),gydF4y2Ba“网”gydF4y2Ba,gydF4y2Ba“关闭”gydF4y2Ba);colormap(喷气)包含gydF4y2Ba“x”gydF4y2BaylabelgydF4y2Ba“y”gydF4y2Ba标题(gydF4y2Ba亥姆霍兹方程的实值解gydF4y2Ba)gydF4y2Ba

图中包含一个轴对象。标题为亥姆霍兹方程实值解的轴对象包含一个patch类型的对象。gydF4y2Ba

使用亥姆霍兹方程的解,创建一个动画显示相应的随时间变化的波动方程的解。gydF4y2Ba

图m = 10;maxu = max (abs (u));gydF4y2Ba为gydF4y2BaJ = 1:m uu =实数(exp(-j*2*pi/m*根号(-1))*u);pdeplot(模型,gydF4y2Ba“XYData”gydF4y2Bauu,gydF4y2Ba“ColorBar”gydF4y2Ba,gydF4y2Ba“关闭”gydF4y2Ba,gydF4y2Ba“网”gydF4y2Ba,gydF4y2Ba“关闭”gydF4y2Ba);colormap(喷气)caxis ([-maxu maxu]);轴gydF4y2Ba紧gydF4y2Ba甘氨胆酸ax =;斧子。dataspectratio = [1 1 1];轴gydF4y2Ba从gydF4y2Ba米(j) = getframe;gydF4y2Ba结束gydF4y2Ba

要播放电影,请使用gydF4y2Ba电影(M)gydF4y2Ba命令。gydF4y2Ba