gpt4 book ai didi

python - CFD 边界条件

转载 作者:行者123 更新时间:2023-11-30 21:49:08 26 4
gpt4 key购买 nike

我试图理解一段来自 paper concerning fluid simulations for games 的代码。我正在研究边界条件的解决方法。由于我不了解 C++,所以我遇到了额外的困难。

据我了解:

  • IX(i, j) 表示位于 x 方向上的 i 处的二维网格单元,位于 x 方向上的 j 处的二维网格单元。 y 方向

  • u[IX(i, j)] 则为 (i, j) 单元中的速度

以下宏用于 IX(i, j):

#define IX(i, j) ((i) + (N + 2) * (j))

最佳答案

我不会试图费力地读完整篇论文,但我可以解释一下语法并对正在发生的事情做出一些有根据的猜测。

#define IX(i,j) ((i)+(N+2)*(j))

在我看来,它们正在转换二维坐标i,j 转换为一维数组索引。 j 是行号,i是列号,与您的描述相符,总计列数为N+2

      0       1       2  ...   (N+2)-1
(N+2)+0 (N+2)+1 (N+2)+2 ... 2(N+2)-1
...

然后我们有这个:

x[IX(0,i)] = b==1 ? -x[IX(1,i)] : x[IX(1,i)]

在 C 语言中,a ? b : c 表示如果 a、b,则 c。这是一个表达式,其值是 bc,具体取决于 a 是否为真。它称为三元运算符,了解更多 here .

Python 有自己的三元运算符,操作数不同订单:

b if a else c

所以x[IX(0,i)] = b==1 ? -x[IX(1,i)] : x[IX(1,i)] 相当于说:

if (b == 1)
x[IX(0,i)] = -x[IX(1,i)]
else
x[IX(0,i)] = x[IX(1,i)]

因此,在第 i 行中,第 0 列的新值是第 1 列的值,可能被否定。看第10页,好像和这个有关系与边界。这是在左边缘,所以我们将其设置为向内一个单元格的值或该值的负值,具体取决于 b

希望这能让事情有所澄清。

关于python - CFD 边界条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51725926/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com