具有不规则边界的域的有限差异


11

谁能帮助我找到有关泊松数值解(有限差分法和Crank-Nicolson方法)的书,以及包括不规则几何体(例如,由矩形和圆形之间的区域组成的区域)的扩散方程(尤其是书本或链接)在这种情况下的MATLAB代码示例)?


4
出于什么目的?一开始为学生做介绍?在您的情况下,不规则几何是什么?具有可折角的域名?
shuhalo 2012年

@马丁:我是这个领域的重要人物。我需要它来使用不规则形状的区域,特别是带有弯曲的二元线(例如2-D圆形区域)的通
弦的

2
@last请编辑问题标题和正文,以明确您的要求。指定您关心的方程类型。您对离散化,代数求解器或两者感兴趣?您是否关心有限差分与有限元素(scicomp.stackexchange.com/questions/290/…)?您当前的问题非常广泛,很难在搜索中找到。
杰德·布朗

@JedBrown:我想在给定的域和边界条件下使用有限差分来求解泊松方程。
liona 2012年

最后,请修改您的问题的正文,以将信息包含在迄今为止的两个评论中。另外,正如JedBrown所说,还请编辑问题的标题,以便人们更容易地搜索您的问题,也使人们更容易判断问题是否有趣或适用于他们。
Geoff Oxberry 2012年

Answers:


3

使有限差分方案适用于不规则几何的关键是要有一个“形状”矩阵,其值表示域的外部,内部和边界。假设我们的形状是这样的:

00000000000001个1个1个1个1个1个1个1个1个1个0001个2222221个000001个22221个00000001个221个0000000001个1个00000000000000000

真实域(矩阵的所有非零项所在的地方)形成一个指向下方的三角形。1代表边界上的点,而2代表内部点(通常是未知的),我们可以如下分配节点号:

0000000000000-1个-1个-1个-1个-1个-1个-1个-1个-1个-1个000-1个1个23456-1个00000-1个78910-1个0000000-1个1112-1个000000000-1个-1个00000000000000000

在此,-1表示边界位置。然后,您可以对矩阵中的所有条目运行有限差分方案,但是使用if语句仅在内部节点(从1到12)上执行方案。这种方法不是最有效的方法,但是它可以完成工作...如果您负担得起内存,最好存储所有内部节点的(i,j)条目并运行仅在那些节点上进行for循环。

要直接创建几何图形,您可以执行以下两项操作之一:
1.手动创建黑白图像,并将其导入到程序中(最容易实现,但无法细化空间分辨率dx或dy)。
2.编写代码,为您选择的任何空间分辨率创建想要的基本形状的离散表示(难以实现,但对于任何空间分辨率为dx或dy的常规有限差分方案,它都更健壮)。

如果您想了解更多有关如何执行此操作的信息,则可以考虑观看以下视频:
NPTEL计算机图形学课程,视频2(光栅图形)
NPTEL计算机图形学课程,视频3(光栅图形,续)签
出,然后让我知道这是否解决了您的问题。


有没有一种方法可以改善我发布的矩阵值的格式...看起来不太像我希望的样子
Paul

是的,您可以使用MathJax并将它们放在数组环境中。
David Ketcheson 2012年

您是对的... MathJax看起来更好。感谢您的建议:)
保罗

@Paul:谢谢您的简单解决方案!但是,如何计算边界点以获得矩形和三角形之间的封闭区域或(矩形和圆形之间的封闭区域)的内部点?
liona 2012年

您是否具有要建模的域形状的图片?看到它总是比用语言描述它总是容易的:)
Paul


2

我建议以下论文:

任意不规则网格的有限差分法及其在应用力学中的应用-Liszka Orkisz

http://www.sciencedirect.com/science/article/pii/0045794980901492

可变网格的有限差分技术-Jensen

http://www.mendeley.com/research/finite-difference-techniques-variable-grids-7/

用广义有限差分法求解抛物线和双曲型方程-Benito Urena Gavete

http://www.sciencedirect.com/science/article/pii/S037704270600687X

基本上,他们描述了如何为非结构化/不规则网格生成有限差分模板。我不知道有哪本书可以深入探讨这个特定主题,但是Randall LeVeque的书可能对此有所了解。这是作者网页的链接,其中包含一些Matlab m文件(用于有限差分)。

http://faculty.washington.edu/rjl/booksnotes.html


1

我认为使网格适合边界并因此偏离fdm的标准方形网格可能是一种解决方案,但对于使用高阶算法却有严重的含义-困难甚至并非不可能。我采用了另一种方法,即将矩形网格保留在弯曲的边界几何图形上,创建高阶算法,从边界插值以将值设置为“几何图形外部”,仅此而已。我们使用8阶算法通过此方法在〜1e-12的同心球测试几何中获得了精度。如果您要在Google上搜索“ Edwards,fdm弯曲边界”,那么您会发现我的作品的参考。


0

您是否可以使用自适应网格细化?快速的Google搜索将打开许多链接。例如,在流体动力学中使用AMR对通过复杂形状的流动进行建模。以及许多其他应用程序。这是解决恒星形成中双曲守恒定律系统的示例。几何形状非常复杂。本文的第一部分是一个不错的教程。 http://www.mpa-garching.mpg.de/lectures/ADSEM/SS05_Homann.pdf


0

这个问题打开了一罐蠕虫,从给出的各种答案可以明显看出。其中许多提出了有用的观点,但是一个真正有用的答案将考虑尚未提出的考虑因素。除了确定几何的确切性质之外,了解以下内容将很有价值:a)您需要哪种精度?b)是否要保留规则的正方形网格?c)您愿意在学习新技术上投入多少?

规则的正方形网格难以精确地定义边界,因此许多人会更改为符合标准的网格。具有矩形连通性的合格网格很难适应非常不规则的形状,因此许多人采用非结构化网格(三角形/四面体或更一般)。

对于任何不具有规则笛卡尔结构的数据,都很难评估导数,因此许多人以整数形式重新表达了他们的问题,这导致了有限元/有限体积方法(可以实现高阶)。有无网格方法。有边界元素方法。有浸入式边界方法。有切细胞方法。通常,由于大多数是历史原因,有一种方法在某些应用程序中很流行,但在另一些应用程序中却不受欢迎。

祝您在迷宫中导航时万事如意,但您必须意识到,没有一个万能的解决方案可以解决您的问题。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.