fealpy
fealpy copied to clipboard
插值函数
魏老师,通过有限元数值解插值全域函数,只要给出一个点的位置,就可以知道插值全域函数值,您开发的包里面的这个封装函数是如何实现的,能仔细讲解一下吗?
我不太理解你的问题,能说的理详细一点吗? ------------------ Original ------------------ From: @.>; Date: Fri, Mar 19, 2021 09:57 AM To: @.>; Cc: @.***>; Subject: [weihuayi/fealpy] 插值函数 (#33)
魏老师,通过有限元数值解插值全域函数,只要给出一个点的位置,就可以知道插值全域函数值,您开发的包里面的这个封装函数是如何实现的,能仔细讲解一下吗?
— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub, or unsubscribe.
魏老师,我在求一个非线性方程需要迭代求解,首通过有限元求解方程得到数值离散解uh,然后非线性项的变量是关于p,而p=2|u|^2,因此我需要把离散解插值回计算区域的函数,这样只需要给出函数点,就可以直接得到p的值,好像您开发包里面有关于数值解构造函数的,所以想问问您实现的具体细节?
p 属于什么空间? ------------------ Original ------------------ From: @.>; Date: Sat, Mar 20, 2021 12:23 PM To: @.>; Cc: @.>; @.>; Subject: Re: [weihuayi/fealpy] 插值函数 (#33)
魏老师,我在求一个非线性方程需要迭代求解,首通过有限元求解方程得到数值离散解uh,然后非线性项的变量是关于p,而p=2|u|^2,因此我需要把离散解插值回计算区域的函数,这样只需要给出函数点,就可以直接得到p的值,好像您开发包里面有关于数值解构造函数的,所以想问问您实现的具体细节?
— You are receiving this because you commented. Reply to this email directly, view it on GitHub, or unsubscribe.
P跟u在一个空间,,可以这样理解
,但是我不想进行这样二重循环,我想直接先求基础全域插值函数,在进行平方。
p 和 u 全部是分片线性连续空间吗? 如果都是, 你可以 p[:] = 2*u**2.
这就是一个插值的操作, 当然你也可以做投影. 无论是插值还是投影, 目前这种做法都会存在误差的. 我建议下次你问关于编程的问题,最好提供一段最小的测试代码, 方便大家直接理解你的意思并提供帮助.
如果直接p[:]=2*u**2,不包含交叉项,例如u1u2, u1u3这些项,会不会导致误差太大,非线性迭代不收敛
这是一个线性插值, 这个逼近阶是 h^2 的, 就看你非线迭代的要求是什么?
我的问题是 p 这个中间变量是必须的吗? 它如果只是你双线性形的系数, 你根本不需要插值. 只接当成系数用就可以.
比如 (p*u, v) 这样的项, 你就把 p 当成一个系数函数即可, 根本不需要做插值.
from fealpy.decorator import barycentric
@barycentric # 声明定义的函数传入的参数是重心坐标
def p(bc):
return 2*u(bc)**2
------------------ Original ------------------ From: @.>; Date: Mon, Mar 22, 2021 03:53 PM To: @.>; Cc: @.>; @.>; Subject: Re: [weihuayi/fealpy] 插值函数 (#33)
如果直接p[:]=2*u**2,不包含交叉项,例如u1u2, u1u3这些项,会不会导致误差太大,非线性迭代不收敛
— You are receiving this because you commented. Reply to this email directly, view it on GitHub, or unsubscribe.
前面邮件回复的, 格式有点乱了
from fealpy.decorator import barycentric
@barycentric # 声明定义的函数传入的参数是重心坐标
def p(bc):
return 2*u(bc)**2
谢谢魏老师,我还有个关于WG的问题,就是我看程序包里面都是关于其刚度矩阵的组装,没有WG的质量矩阵组装,质量矩阵组装只有单元内函数积分块有值,其他例如单元函数和边界函数,边界函数之间的积分值为0吗?
质量应该是只有单元内部有啊. ------------------ Original ------------------ From: @.>; Date: Wed, Mar 24, 2021 09:47 AM To: @.>; Cc: @.>; @.>; Subject: Re: [weihuayi/fealpy] 插值函数 (#33)
谢谢魏老师,我还有个关于WG的问题,就是我看程序包里面都是关于其刚度矩阵的组装,没有WG的质量矩阵组装,质量矩阵组装只有单元内函数积分块有值,其他例如单元函数和边界函数,边界函数之间的积分值为0吗?
— You are receiving this because you commented. Reply to this email directly, view it on GitHub, or unsubscribe.
魏老师,WG针对于自由度,我看您写的Ndof=NT+NE,但是其他是这么写的Ndof=3*NT+NE,其中3代表一个单元内部有三个基函数,是因为您这个解是在节点和边上的系数,其它的是内部和边上的系数
WG最低阶可以是内部P^0边上也是P^0。
你看的是哪一段代码? 把相应的文件告诉我, 我不确定你看的是哪一个文件. ------------------ Original ------------------ From: @.>; Date: Wed, Mar 24, 2021 10:49 AM To: @.>; Cc: @.>; @.>; Subject: Re: [weihuayi/fealpy] 插值函数 (#33)
魏老师,WG针对于自由度,我看您写的Ndof=NT+NE,但是其他是这么写的Ndof=3*NT+NE,其中3代表一个单元内部有三个基函数,是因为您这个解是在节点和边上的系数,其它的是内部和边上的系数
— You are receiving this because you commented. Reply to this email directly, view it on GitHub, or unsubscribe.
我看的是您和陈龙老师开发的Matllab版的
@Smile-In-Heart 这个就是我刚才说的P^0-P^0的WG,最低阶,陈老师应该没有更新函数的文档。刚才我更新了,请从https://github.com/lyc102/ifem去pull最新版的ifem。单元里面u_0就是一个常数,stiffness算出来就是函数里面写的那个ct2。
我以为你说的是 FEALPy 中的代码, 在 FEALPy 中你可以看这个空间: https://github.com/weihuayi/fealpy/blob/master/fealpy/functionspace/WeakGalerkinSpace2d.py
魏老师,我想问一下刚度矩阵和质量矩阵组装时,它的系数函数是在节点(自由度)的值向量,即f=sum(f(i)*phi(i))如有限元离散一样,phi就是基函数,该怎么组装,是需要插值回去,还是有其他方法
你说的这个系数函数一个函数,也是一个数组,在FEALPy 当中, 假设 C 就是一个 np.ndarray, 就是你系数函数的值向量, 下面的代码就把 C 封装成一个有限元函数,你可以像函数一样调用它。
space = LagrangeFiniteElementSpace(mesh, p=1) F = space.function(array=C)