Questions tagged «adaptive-mesh-refinement»

2
有什么简单的方法可以自适应地采样2D函数?
我有一个二维函数,我想对它的值进行采样。该函数的计算非常昂贵,而且形状复杂,因此我需要找到一种方法,以最少的采样点获取有关其形状的最多信息。f(x,y)f(x,y)f(x,y) 有什么好的方法可以做到这一点? 到目前为止我有什么 我从已经计算了函数值的现有点集开始(这可以是点的方格或其他形式)。 然后,我计算这些点的Delaunay三角剖分。 如果在Delaunay三角两个相邻点足够远()和函数值不同充分地它们(> Δ ˚F),然后我插入一个新的中点其间它们。我为每个相邻的点对执行此操作。>ΔX>ΔX > \Delta X>Δf>Δf> \Delta f 这种方法有什么问题? 好吧,它工作得相对较好,但是在与此功能类似的功能上并不理想,因为采样点往往会“越过”山脊,甚至不会注意到那里。 它会产生如下结果(如果初始点网格的分辨率足够粗糙): 上图显示了计算函数值的点(实际上是它们周围的Voronoi单元)。 上图显示了从相同点生成的线性插值,并将其与Mathematica的内置采样方法(大约相同的起始分辨率)进行了比较。 如何改善呢? 我认为这里的主要问题是我的方法基于渐变来决定是否添加细化点。 添加细化点时最好考虑曲率或至少考虑二阶导数。 题 当我的点的位置完全不受约束时,考虑二阶导数或曲率的一种非常简单的实现方法是什么?(我不一定要有一个正方形的起点,理想情况下应该是通用的。) 还是有其他简单的方法可以以最佳方式计算精炼点的位置? 我将在Mathematica中实现这一点,但是这个问题主要与方法有关。对于“易于实现”这一点,确实可以认为我正在使用Mathematica(即到目前为止,这很容易完成,因为它具有用于执行Delaunay三角剖分的程序包) 我将其应用于什么实际问题 我正在计算一个相图。它具有复杂的形状。在一个区域中,其值为0,在另一个区域中,其值为0到1。两个区域之间有一个急剧的跳跃(不连续)。在函数大于零的区域中,既有一些平滑变化,也有一些不连续。 该函数值是根据蒙特卡洛模拟计算得出的,因此偶尔会出现不正确的函数值或噪声(这种情况很少见,但是对于很多点,它会发生,例如,当未达到稳态时,一些随机因素) 我已经在Mathematica.SE上问过这个问题,但由于它仍处于私测阶段,所以无法链接到它。这里的问题是关于方法,而不是实现。 回复@suki 您是否建议这种划分类型,即在三角形的中间放置一个新点? 我在这里担心的是,似乎需要对该区域的边缘进行特殊处理,否则它将产生非常长且非常细的三角形,如上所示。你纠正了吗? 更新 我描述的方法和@suki提出的基于三角形进行细分并将细分点置于三角形内的建议都出现了一个问题,即当存在不连续性时(如我的问题),在执行步骤之后可能会重新计算Delaunay三角剖分导致三角形发生变化,并且可能会出现一些大三角形,在三个顶点中它们具有不同的函数值。 这是两个示例: 第一个显示围绕直线不连续采样时的最终结果。第二个显示了类似情况下的采样点分布。 有什么简单的方法可以避免这种情况?目前,我只是在细分那些在重新三角化之后消失的egdes,但这感觉就像是破解,需要谨慎进行,因为在对称网格(例如方形网格)的情况下,存在多个有效的Delaunay三角剖分,因此边缘可能会改变重新三角化后随机。

4
是否有用于结构化网格自适应网格细化的通用库?
想要改善这篇文章吗?提供此问题的详细答案,包括引文和答案正确的解释。答案不够详细的答案可能会被编辑或删除。 自适应网格细化(AMR)是解决PDE数值解中空间尺度变化很大的常见技术。在结构化网格上存在哪些针对AMR的通用库?理想情况下,我希望本着PETSc的精神,库仅处理自适应网格,而我提供物理和离散化(有限差分/体积/元素)。 理想的图书馆是 模块化:不决定如何编写代码或过多的数据结构 General:不在乎我使用的是哪种离散化 高效:不会产生太多开销 并行且高度可扩展 仅适合这些条件中的一个子集的库仍将受到关注。 附录:我知道Donna Calhoun的AMR软件包的详细列表,但是我不知道其中哪个(如果有)符合上述条件。因此,我主要感兴趣的是听取具有一个或多个(或更多)软件包的实际经验的人,以了解他们如何衡量这些术语。

3
生成运动网格的基本原理是什么?
我对实现对流扩散问题的移动网格感兴趣。自适应运动网格方法提供了一个很好的示例,说明如何使用有限差分对一维Burger方程进行此操作。有人能够提供一个使用移动网格的有限差分法求解一维对流扩散方程的实例吗? 例如,以保守的形式,等式为 üŤ= (a (x )u + düX)Xut=(a(x)u+dux)x u_t = (a(x)u + du_x)_x 其中是速度(空间的函数)。初始条件u (0 ,x )可以指定(例如)从左向右(例如,沿着管道)流动的流动物种,其中初始条件具有急剧的梯度。一个(x )a(x)a(x)u (0 ,x )u(0,x)u(0,x) 如何解决运动网格的均分布问题(可能使用De Boor算法或其他方法)?我希望自己在Python中实现此功能,以便您的答案可以更好地转换为代码! 悬赏之前的旧问题 根据系统属性生成自适应网格的基本方法是什么?我应该使用通量来衡量梯度较大的地方吗? 因为我寻求一种迭代(时间扫描)解决方案。我想从旧网格插值到新网格很重要,通常的方法是什么? 我真的很想看到一个解决简单问题(例如对流方程)的实例。 有关该问题的细节的一些背景知识。我正在模拟一维耦合方程组, ∂ü∂Ť= 一个ü∂2ü∂X2+ bü∂ü∂X+ fü(x ,u ,v ,w )∂v∂Ť= 一个v∂2v∂X2+ bv∂v∂X+ fv(x ,u ,v ,w )∂w∂Ť= 一个ü∂ü∂X+ 一个v∂v∂X+ fw(x ,u ,v ,w )∂u∂t=au∂2u∂x2+bu∂u∂x+fu(x,u,v,w)∂v∂t=av∂2v∂x2+bv∂v∂x+fv(x,u,v,w)∂w∂t=au∂u∂x+av∂v∂x+fw(x,u,v,w) …

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.