问题标签 [fipy]
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.
pde - 我应该如何在 FiPy 中编写这些耦合的 PDE?
我正在尝试使用 FiPy 实现三元合金的相场凝固模型。我查看了 FiPy 网站上提供的大多数相场示例,我的模型类似于examples.phase.quaternary。
浓度的演化方程如下所示:
应该解决 C_1 和 C_2(C_3 是溶剂)的问题。浓度方程与相演化方程耦合,我们有 D_i = D_i(phi),h = h(phi)。
在所有三个术语中为 (C_i) 求解的变量存在非线性依赖关系,这让我不确定如何在 FiPy 中定义它们。第一项(红色)是具有非线性系数的扩散项,应该没问题,但我应该如何定义反扩散和相变项?
我尝试将它们定义为具有非线性系数的扩散和对流项,但没有成功。因此,我希望就如何定义一些建议让 FiPy 喜欢它。
任何帮助都非常感谢,谢谢!/安德斯
python - FiPy - 域延伸/帧增长
我试图在深度( h(t) )随时间变化的域上求解一个简单的扩散方程(dT/dt = K d2T/dx2 )。因此,得到的等式是:
其中 z 现在是一个固定的 0->1 域。
新术语是框架平流,我试图将其包含在内,但我正在努力解决空间相关系数。
当我将它包括在对流项之外时:
我收到此错误:
但如果我重新组织方程,使空间相关性在对流项内:
求解方程时出现不同的错误:
包含这些术语的正确方法是什么?我在某个地方犯了一个愚蠢的错误吗?
cython - 如何提高Fipy效率
我正在使用 fipy 解决计算域中孤立区域的扩散问题。见示意图。下图: 孤立的 BC 之间没有通量,而周期性 BC 存在通量
该问题在 Fipy 下建模,在fipy.FaceVariable
@Daniel Wheeler 的帮助下定义了可变系数。
但是,计算速度无法满足我的命令,这比使用有限差分法的 cython 代码慢得多。如果我想加快 fipy 计算,我该怎么办?这是我的演示代码:
python - FiPy 设置初始网格值
我是一个用例,我需要将值从 2D Numpy 数组转置为 2D FiPy 网格,然后将其用于求解系统。
我的代码如下:
其中 tmpSource 和 tmpSink 表示 Numpy 数组。
虽然这种方法有效,但运行起来非常缓慢。有人对可以使其更快的替代方法有任何建议吗?
谢谢!
python - 在 Fipy 中操纵对流系数:对流扩散方程
我正在尝试使用 fipy 在 python 中解决对流扩散方程。我想操纵对流系数,使其指向域的中心。
我的代码是
正如你所看到的,随着时间的推移,波的移动方向由对流系数向量确定。操纵波的对流系数的代码如何仅向我的域中心移动?
任何建议将不胜感激!
python - 名义上安装了 Fipy 但 fipy.test() 失败并显示错误消息
我正在尝试在 Windows 7 系统上使用 Miniconda 2 设置 FiPy,并使用推荐 python -c "import fipy; fipy.test()"
的.
不幸的是,该套件没有得到测试结果,而是给了我一个堆栈跟踪错误:
任何人都可以帮我解决这个问题吗?我不知道从哪里开始这个结果。
python - 使用 Fipy 估计 PDE 系统的参数
我正在使用 Fipy 解决一个涉及两个参数或常量的 PDE 系统,所以我想知道是否也可以在 Fipy 中估计这些参数,或者其他库更适合于此。
注意:我知道 scipy 有一些功能(optimize.minimize for MLE),但我不确定是否足以将它们应用于 Fipy 的代码。
更新:对于下面的 PDE 系统,我想估计两个未知参数:“Beta”和“m”
在 Fipy 中求解这个 PDE 的函数是这样的:
最后,对于最大似然标准,我想最大化:
设置初始值,并使用 scipy
结果显示的值始终接近我的参数初始值,这就是我不确定我的程序是否正确的原因。任何建议将不胜感激。
simulation - 求解管道中的热方程
我想模拟从热流体流经管道到周围固体的热传递。进入管道的流体的温度是变化的。
到目前为止我想到的最好的事情是使用存储其先前值(旧)的变量并沿管道手动移动值,并将当前入口流体温度分配给管道开始处的体积以模拟流动,同时使用短足够的时间间隔以避免不连续性。
虽然这可能有效,但由于网格元素具有不同的体积,因此存在明显的缺点,因此分配其他值意味着存储的能量会发生变化,这对模拟不利,并且由于流动始终沿同一方向,因此该错误可能会累积。
我想知道是否有更好的方法来模拟这个。有什么建议么?
谢谢!
fipy - 一般边界条件
我很感激有关设置一般边界条件的帮助,-grad(y) + g(y) = 0
其中g
是一些未知函数y
。这是一个我无法开始工作的简单一维示例:
此代码无法解决,但我确实可以看到矩阵和 RHS:
矩阵m
显然是奇异的,因为源项未包含在最后一行中。关于如何包含它的任何建议?
python - EnvironmentError: Gmsh 版本必须 >= 2.0
我是fipy的新手,所以如果我问一些应该很明显的问题,请原谅我的无知。但是我无法运行一个已经存在的(并且在其他机器上工作)脚本,EnvironmentError: Gmsh version must be >= 2.0.
我可能在安装过程中错过了一些东西?Fipy 手册对 gmsh 的实现有点含糊。它只提供下载文件的链接,并且可以通过它生成网格,但它没有说应该安装 gmsh 的位置(所以我有我 gmsh-3.0.3-Windows
的默认值,即在Program Files (x86)
. 如果它安装在某个特定的目录中,也许和fipy一样吗?(我真的为一个愚蠢的问题道歉,但是如果你知道要问什么问题,你就已经知道答案并且根本不需要问。)
为了完整起见,我在 Windows 7 上运行它,来自 Anaconda 发行版的 Python 2.7,fipy 3.1.3。