问题标签 [mathematical-lattices]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
simulation - 格子玻尔兹曼模拟中的幻数解释?
我最近遇到了这种流体动力学模拟,并一直在尝试阅读格子玻尔兹曼方法,以便更好地理解它。那里的大部分代码都非常透明,所以在阅读代码和阅读 Wikipedia 之间,我已经大致了解了所有内容……除了核心“碰撞”函数中的运动学计算。
我已经能够弄清楚 1/9、4/9 和 1/36 的因子与沿不同晶格方向连接单元中心的向量的长度有关,我什至可以找到解释有什么不同的资源用于不同晶格类型的因素(此代码中使用了 D2Q9 晶格)。但是我还没有找到任何东西来解释你如何从定义格子玻尔兹曼算法的碰撞步骤的通用向量方程到下面显示的具体的九行实现算法。特别是 3、1.5 和 4.5 的那些因数是从哪里来的?
链接网页中使用的代码(稍作修改以删除自由变量并提高可读性)如下:
python - 获取 Shapely 多边形内具有整数坐标的所有点
我有一个看起来像这样的多边形:
我正在尝试获取内部的整数坐标。我试图用它来获取内部和外部坐标:(来自https://stackoverflow.com/a/21922058/5666087)
但是,我得到的只是:
为什么室内坐标是空的?
有什么方法可以获取内部坐标吗?
python - 如何创建具有可变数量“for”循环的函数,每个循环都有不同的索引?
问题:
考虑一个d维简单立方晶格。
如果晶格的宽度为L,则晶格点数为L d。我想为一般的d和L创建一个包含所有格点位置的列表。
例如,当L = 2且d = 2时,这将是 [(0, 0), (1, 0), (0, 1), (1, 1)]。
我的尝试:
虽然我可以为一般L做到这一点,但我无法概括维度d。
下面是我使用三个循环对d = 3的解决方案。for
很容易看出我将如何更改它以增加或减少维度d,因为我可以简单地添加或删除循环,但显然为大dfor
写出来非常乏味。
我考虑过使用递归for
循环,所以我只会for
对任何d使用一个循环,但我不知道如何在保留索引的同时保留我需要写出位置的索引。
综上所述:
是否可以有可变数量的for
循环,每个循环都有一个不同的索引来解决这个问题?
或者有没有更好的解决方案而不使用for
循环?
parallel-processing - 改进一个笨拙的自动长方体域分解算法
介绍
对于我的库,我需要拆分一个长方体点晶格以分配给多个处理元素 (PE)。
如您所见,PE 之间没有共享点,并且某些 PE(此处为 4-7)仅获得二维“切片”。
该接口接受n1
, n2
, n3
,P
它们都是整数。表示沿方向即或的nx
格点数。表示可用的PE数量。x
n1
n2
n3
P
当前的问题表述
由于域是一个长方体,我正在寻找这样的 3 部分分解P
,P = p1 * p2 * p3
并且与px
成比例nx
。
问题表述的局限性
- 需要开发三部分分解算法。
- 必须使用某种度量来选择生成的许多 3 部分分解中的任何一个。在图像中的示例中,假设
n1 = 3, n2 = 5, n3 = 4
,P = 54
我们将有 3 部分分解(27, 2, 1)
、(9, 3, 2)
和。这里适用哪一个?一个简单的差值度量会选择。但即使这样也有多个排列和.(6, 9, 1)
(6, 3, 3)
(6, 3, 3)
(3, 6, 3)
(3, 3, 6)
- 如果选择的 3 部分分解有一个大于相应格子大小 (
nx
) 的因子,那么我们将不得不截断它,这意味着一些 PE 将不起作用。 - 如果选择的 3 部分因式分解有一个因子(可能是在上面提到的截断之后)不划分其相应的格大小,我们就有不均等的工作共享(尽管一些 PE 可能正在休眠,如上点所示)。
读者如何提供帮助
- 我们如何改进这种不优雅的算法?您能否建议对“问题表述的限制”中的任何一点进行改进?
- 有没有更好、更正式的方法(即问题表述)?
- 论文/网站/文章/书籍的链接将不胜感激。