针对波动计算复杂性的吸收边界条件(PML 用于一般波动方程)(Matlab代码实现)

 💥💥💞💞欢迎来到本博客❤️❤️💥💥

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

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

📋📋📋本文目录如下:🎁🎁🎁

目录

💥1 概述

📚2 运行结果

🎉3 参考文献

🌈4 Matlab代码、文章下载


💥1 概述


针对波动计算复杂性的吸收边界条件
摘要
在之前的一些工作的基础上,我们研究了如何向计算域添加吸收边界条件,以便我们可以假装我们的波从中间某处传播到无穷远。我们讨论了几种不同的方法来增强我们的模拟,以实现这一目标,其中一种特定的方法是完美匹配层(PML)。
作为一名电气工程师,以下观点可能会让你感到震惊:所有有趣的微分方程都来自量子力学。哦,是的,麦克斯韦方程无穷有用,但拜托,就算是一桶激光也永远不会像需要一个波动方程是复值那样有趣。认真地读一下[1]的前九十页,特别是第四章和第五节,我相信你会同意的。
现在,当面对一个偏微分方程时,当然首先要做的事情是把它输入计算机,看看事情是如何反弹的。我说的反弹,是真的反弹。当量子波函数——实际上是任何波状物——在一个边界条件被默认设置为零的计算域中移动时,它们会从侧面反射出来(这是不连续性和二阶导数的有趣结果)。由于量子力学的基本方程中没有任何源或汇,概率和能量在这种情况下往往是守恒的:这是一件好事。
然而,即使在存在电势的情况下,如果你的初始波函数足够扩展,它最终会演变成由计算域本身的模式(通常是一个正方形)主导的一堆振荡模式。也就是说,如果你试图探索特定标量电势的模式——而不是你的计算机的模式——你需要找到一种方法,在波函数到达计算域边缘之前衰减它。对于一些电势,比如谐振子,这通常是不必要的,但对于其他电势来说是必要的。虽然不一定显而易见,但为了做到这一点,如果我们盯着薛定谔方程看。

这个程序是为标准波动方程设计的完美匹配层,它使用吸收边界条件。这些条件不是用来解决麦克斯韦方程,而是用于标准波动方程,比如用于电势的波动方程。如何添加良好的吸收边界条件,使得你可以假装在计算机内部模拟真实的电磁现象?当你不是在解决麦克斯韦方程,而是在解决电势的波动方程时,你该如何做?别担心,下面就是解决这个问题的方法:

详细文章见第4部分。

1. 使用辅助微分方程的一阶方程的完全显式有限差分法。
2. 使用二阶方程的完全显式有限差分法。
3. 使用辅助微分方程的一阶方程的半隐式有限差分法。

📚2 运行结果

部分代码:

clear;   close all;   showpotential = true;

%% Initialize computational domain:
n = 256;   c = 1;   tmax = 2^12;

xmin = -50; xmax = 50;   x = linspace(xmin, xmax, n);   dx = x(2) - x(1);
[x, y] = meshgrid(x, x);

phi = exp(-(x.^2+y.^2)/2)/(2*pi);

%% Initialize perfectly matched layer & simulation variables:
[sigmax, sigmay] = setupPML(x, dx);

dt = 0.25 * dx / c;
s_xplusy = 1/c^2*(sigmax + sigmay);
s_xtimesy = 1/c^2*(sigmax.*sigmay);

psi = zeros(size(x));
u_now = zeros(size(x));

vx = zeros(size(x));
vy = zeros(size(x));

s = c^2 * dt^2;

%% Run the simulation:
if showpotential
    fig = mesh(x, y, u_now);
    axis([xmin xmax xmin xmax -0.2 0.2]);
    xlabel('x');   ylabel('y');
    zlabel('Wave Amplituide');
    title('Generic Wave with PML at Boundary');
end

🎉3 参考文献

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

🌈4 Matlab代码、文章下载

  • 22
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

荔枝科研社

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值