首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >FaceVariables in FiPy

FaceVariables in FiPy
EN

Stack Overflow用户
提问于 2018-02-15 10:25:47
回答 1查看 566关注 0票数 0

我在FiPy的帮助下通过各种结构来模拟电流。为了做到这一点,我解决了拉普拉斯方程的电势。然后,用欧姆定律导出电场,借助电导得到电流密度。

FiPy将潜力存储为以细胞为中心的变量,将其梯度存储为以脸为中心的变量,这对我来说是有意义的。关于以脸为中心的变量,我有两个问题:

  1. 如果我有一个二维或三维问题,FiPy计算所有方向的梯度(ddx,ddy,ddz).梯度是一个FaceVariable,它总是定义在两个细胞中心之间的表面上。对于一个结构化的(四边形)网格,只有一个导数应该大于零,因为对于任何一个面,所涉及的两个单元中心的位置只应该在一个坐标中不同。然而,在我的模拟中,经常会出现一个以上的导数(ddx,ddy,ddz)大于零,即使是一个结构化网格。 手册给出了FaceGrad-方法的如下解释:返回梯度(Phi)为1级FaceVariable,使用法线方向的差分(二阶梯度)。 我看不出,这与我上面指出的理解有何不同。 使它更成问题的是:当包含“太多”的衍生物时,电流似乎并不保守,即使在最简单的结构中,我的模型也是如此。
  2. 是否有一种聪明的方法来访问存储在以脸为中心的变量中的数据?假设我想要计算通过我的模型结构的电流。 现在,我将存储在FaceVariable中的数据保存为tsv文件。这将产生一个包含(x,y,z)-positions和(ddx,ddy,ddz)-values的表。我读取文件并将数据保存到数组中,以便在Python中使用它。这似乎违反了直觉,而且非常不方便。如果能够沿着特定的飞机或在某些点访问FaceVariable,那就好得多了。
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-02-16 17:15:52

  1. 文档并没有明确说明这一点,但是.faceGrad包含的切线组件不仅仅是相邻的单元格中心值。请参阅这个木星笔记本获得FiPy可以计算的不同类型梯度的显式表达式(是的,这些内容应该进入文档:#560)。
  2. 这个值可以用myFaceVar.value访问,坐标可以用myFaceVar.mesh.faceCenters访问。FiPy是围绕非结构化网格设计的,因此获取任意的切片并不简单。CellVariable对象通过调用myCellVar((xs, ys, zs))支持插值,但FaceVariable对象不支持。见这一讨论
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48804907

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档