fealpy
fealpy copied to clipboard
Some issue in LagrangeFiniteElementSpace.py and poisson_2d.py
魏老师,在学习拉格朗日空间时,有如下几个困惑: (1)以下代码中, https://github.com/weihuayi/fealpy/blob/ccb91e5d197e9e9b482927c2bc476edcba313121/fealpy/functionspace/LagrangeFiniteElementSpace.py#L176 变系数 c 用来判断 int, float ,是否应该是由 int, float 组成的元组:
if isinstance(c, (int, float)):
一个小的检测例子:
In[1] : import numpy as np
In[2] : a = np.arange(4)
In[3] : isinstance(a, {int, float})
Traceback (most recent call last):
File "<ipython-input-3-423e8d9a4913>", line 1, in <module>
isinstance(a, {int, float})
TypeError: isinstance() arg 2 must be a type or tuple of types
(2) 引用pde模型中,有的 pde 类下的源项、梯度会有加 @cartesian 装饰子,有的是没有添加,这样如何判别是在重心坐标下的函数还是笛卡尔坐标下的函数?代码如下: 有装饰子的: https://github.com/weihuayi/fealpy/blob/ccb91e5d197e9e9b482927c2bc476edcba313121/fealpy/pde/poisson_2d.py#L74-L91
没有装饰子的: https://github.com/weihuayi/fealpy/blob/ccb91e5d197e9e9b482927c2bc476edcba313121/fealpy/pde/poisson_2d.py#L220-L236
if isinstance(c, {int, float}):
这是一个 bug, 已经修正了。
如果你的函数输入的是笛卡尔坐标 , 最好加上这个装饰子 @cartesian
,这样代码更可读一点。后面的积分程序会根据这个装饰子来决定要不要把积分点的重心坐标,转换为笛卡尔坐标, 再输入函数。
因为还有可能用有限元函数做系数,有限元函数的装饰子一般应该是 @cartesian
好的,谢谢老师