fealpy icon indicating copy to clipboard operation
fealpy copied to clipboard

Some issue in LagrangeFiniteElementSpace.py and poisson_2d.py

Open xieweidc opened this issue 3 years ago • 4 comments

魏老师,在学习拉格朗日空间时,有如下几个困惑: (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

xieweidc avatar Dec 14 '21 03:12 xieweidc

if isinstance(c, {int, float}): 这是一个 bug, 已经修正了。

weihuayi avatar Dec 21 '21 11:12 weihuayi

如果你的函数输入的是笛卡尔坐标 , 最好加上这个装饰子 @cartesian ,这样代码更可读一点。后面的积分程序会根据这个装饰子来决定要不要把积分点的重心坐标,转换为笛卡尔坐标, 再输入函数。

weihuayi avatar Dec 21 '21 11:12 weihuayi

因为还有可能用有限元函数做系数,有限元函数的装饰子一般应该是 @cartesian

weihuayi avatar Dec 21 '21 11:12 weihuayi

好的,谢谢老师

xieweidc avatar Dec 21 '21 12:12 xieweidc