首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >波动方程模拟中的非反射边界

波动方程模拟中的非反射边界
EN

Stack Overflow用户
提问于 2014-06-20 21:50:52
回答 1查看 803关注 0票数 0

我正在实现一个波动方程的模拟,使用一个阵列来离散地建模一个空间区域,在其中波可以传播。目前,波浪反射出空间区域的边界。然而,我想消除这种反射,使波似乎永远传播。

我知道有许多学术论文讨论非反射/吸收边界条件(例如完全匹配的层?),但大多数似乎都集中在解析解上。在我的模拟中,我想不出如何实现非反射边界。这是我正在编写的代码:

代码语言:javascript
复制
for (var i = 1; i < width - 1; ++i) {
    for (var j = 1; j < height - 1; ++j) {
        var d2f_dx2 = f[i + 1][j] - f[i][j] * 2 + f[i - 1][j];
        var d2f_dy2 = f[i][j + 1] - f[i][j] * 2 + f[i][j - 1];
        var d2f_dt2 = c2[i][j] * (d2f_dx2 + d2f_dy2);
        df_dt[i][j] += d2f_dt2;
    }
}
for (var i = 1; i < width - 1; ++i) {
    for (var j = 1; j < height - 1; ++j) {
        f[i][j] += df_dt[i][j];
    }
}

其中f是场,df_dt是场相对时间的偏导数,d2f_dt2是场相对时间的第二偏导数,d2f_dx2是场在x方向的第二偏导数,d2f_dy2是场在y方向的二阶偏导数。

有人知道我如何调整这段代码,使其具有非反射边界吗?

EN

回答 1

Stack Overflow用户

发布于 2014-06-21 00:49:05

在清理了几个25年前的蜘蛛网之后,你的问题的解决将取决于你设定方程来满足以下初始条件和无穷大的条件。对于我来说,要将初始和无限边界条件转化为偏微分,然后转化为你的代码已经很久了,但是知道适用的正确边界条件将提供你想要创建的数值模型。希望这能帮上忙。

对于无阻尼的非反射条件,你想要建立模型的边值问题在维基百科文章你的网站在这个的最后一段描述。Sturm公式本身可能不能提供适当的模型,但标题下最后一段中讨论的边界条件是必须满足的条件。推导用单维数解释,但正如本文所指出的,一维问题的数值解可以扩展到任意维数。

无阻尼无限传播的边界条件

代码语言:javascript
复制
boundary value at t=0 == value at t=infinity after X whole periods, where
y = Asin(Bx - C) + D or y = Acos(Bx - C) + D.

f(x)tf(y)t的解是周期摩擦学函数,波向无穷远传播。如果你想一想,条件是清楚的。在任何时候,你想要描述的波只是一个不受阻尼的周期谐波,它将被模拟成正弦、余弦等。在描述波在任何时间点上唯一的区别将是振幅和相位,因为它循环通过一个正常的周期。三角学函数满足初始条件的恒等式将取决于相位角和时移,t=0。当时间接近无穷大时,边界条件将是当一个完整的周期完成后,相同的函数。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24336180

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档