吧务
level 15
xzcyr
楼主
标题又写不下了……其实原本我拟的标题是
【交(gǎo)流(shì)】这个经典(大概)的纳维斯托克斯方程的边值问题(二维稳态不可压缩流)在其他软件里是怎么解的?
大家都知道,NDSolve自版本10开始加入了有限元方法("FiniteElement"),终于可以求解
1. 不含时的偏微分方程定解问题(或者说得更“数学”一点:不管在哪个方向上都不是
适定的初值问题的偏微分方程定解问题)
2. 不规则区域上的的偏微分方程定解问题
了,尽管目前NDSolve的有限元方法展现出了一些吸引人的特性(比如简洁易懂的语法),但是,它还很年轻,
截止版本11.2,它还不能求解非线性问题。比如这一帖
mathematica.stackexchange.com/a/96579/1871
里面提及的问题。如大家所见,user21 使用了一些较低级的有限元函数来求解这个问题,老实说,我一个用了几年Mathematica的人,看了他的代码都觉得脑仁疼……显然,在当前,如果需要在不规则区域上求解非线性的偏微分方程,Mathematica恐怕不是一个很好的选择。
那什么才称得上是“很好的选择”呢?
开这个帖就是想让各位来秀一下。(我知道吧里存在复数个其他有限元软件的用户。)
事先声明下规则:所有讨论围绕上面所举的例子进行,谢绝空谈,违者……可能删。(毕竟这是个涉及软件对比的帖子,我得最大限度地压制住出现无谓争端的可能性。)
为了方便大家阅读,这里重述一下上面帖子中出现的问题。首先是方程组:

参数:
\[Mu] = 10^-3;
\[Rho] = 1;
区域(就直接上代码了,应该都能看懂吧……):
l = 2.2;
h = 0.41;
\[CapitalOmega] =
RegionDifference[Rectangle[{0, 0}, {l, h}],
ImplicitRegion[(x - 1/5)^2 + (y - 1/5)^2 < (1/20)^2, {x, y}]];
RegionPlot[\[CapitalOmega], AspectRatio -> Automatic]

边界条件
\[CapitalGamma] = {
DirichletCondition[p[x, y] == 0., x == l],
DirichletCondition[{u[x, y] == 4*0.3*y*(h - y)/h^2, v[x, y] == 0},
x == 0],
DirichletCondition[{u[x, y] == 0., v[x, y] == 0.},
y == 0 || y == h || (x - 1/5)^2 + (y - 1/5)^2 <= (1/20)^2]};
……其实就是左边界速度分布为4*0.3*y*(h - y)/h^2,压力的右边界为0。
好了,大家来展示下自己所用的软件是怎么解这个问题的吧。
2018年01月06日 14点01分
1
【交(gǎo)流(shì)】这个经典(大概)的纳维斯托克斯方程的边值问题(二维稳态不可压缩流)在其他软件里是怎么解的?
大家都知道,NDSolve自版本10开始加入了有限元方法("FiniteElement"),终于可以求解
1. 不含时的偏微分方程定解问题(或者说得更“数学”一点:不管在哪个方向上都不是
适定的初值问题的偏微分方程定解问题)
2. 不规则区域上的的偏微分方程定解问题
了,尽管目前NDSolve的有限元方法展现出了一些吸引人的特性(比如简洁易懂的语法),但是,它还很年轻,
截止版本11.2,它还不能求解非线性问题。比如这一帖
mathematica.stackexchange.com/a/96579/1871
里面提及的问题。如大家所见,user21 使用了一些较低级的有限元函数来求解这个问题,老实说,我一个用了几年Mathematica的人,看了他的代码都觉得脑仁疼……显然,在当前,如果需要在不规则区域上求解非线性的偏微分方程,Mathematica恐怕不是一个很好的选择。
那什么才称得上是“很好的选择”呢?
开这个帖就是想让各位来秀一下。(我知道吧里存在复数个其他有限元软件的用户。)
事先声明下规则:所有讨论围绕上面所举的例子进行,谢绝空谈,违者……可能删。(毕竟这是个涉及软件对比的帖子,我得最大限度地压制住出现无谓争端的可能性。)
为了方便大家阅读,这里重述一下上面帖子中出现的问题。首先是方程组:

参数:\[Mu] = 10^-3;
\[Rho] = 1;
区域(就直接上代码了,应该都能看懂吧……):
l = 2.2;
h = 0.41;
\[CapitalOmega] =
RegionDifference[Rectangle[{0, 0}, {l, h}],
ImplicitRegion[(x - 1/5)^2 + (y - 1/5)^2 < (1/20)^2, {x, y}]];
RegionPlot[\[CapitalOmega], AspectRatio -> Automatic]

边界条件\[CapitalGamma] = {
DirichletCondition[p[x, y] == 0., x == l],
DirichletCondition[{u[x, y] == 4*0.3*y*(h - y)/h^2, v[x, y] == 0},
x == 0],
DirichletCondition[{u[x, y] == 0., v[x, y] == 0.},
y == 0 || y == h || (x - 1/5)^2 + (y - 1/5)^2 <= (1/20)^2]};
……其实就是左边界速度分布为4*0.3*y*(h - y)/h^2,压力的右边界为0。
好了,大家来展示下自己所用的软件是怎么解这个问题的吧。








