fealpy
fealpy copied to clipboard
FEALPy 数值积分数组的内存布局需要优化吗?
在目前的 FEALPy 程序中,给定一组积分点 bcs
,会计算出每个积分点在每个单元上的每个基函数的值数组 gphi
,然后用于后续的数值积分(如矩阵向量的组装)
from fealpy.mesh import MeshFactory as MF
from fealpy.functionspace import LagrangeFiniteElementSpace
box = [0, 1, 0, 1]
mesh = MF.boxmesh2d(box, nx = 10, ny = 10, meshtype='tri')
space = LagrangeFiniteElementSpace(mesh, p=3)
qf = mesh.integrator(4)
bcs, ws = qf.get_quadrature_points_and_weights()
gphi = space.grad_basis(bcs) # gphi.shape == (NQ, NC, ldof, GD)
上面 gphi
的内存布局是 (NQ, NC, ldof, GD)
,其中
NQ
: 积分点的个数
NC
: 单元的个数
ldof
: 基函数的个数
GD
: 几何空间的维数
我的问题是:更优的内存布局是什么?
这个加速意义不大,积分公式只会调用一次。 --华祎 ------------------ Original ------------------ From: @.>; Date: Mon, Jun 27, 2022 11:14 AM To: @.>; Cc: @.>; @.>; Subject: Re: [weihuayi/fealpy] FEALPy 数值积分数组的内存布局需要优化吗? (Issue #85)
魏老师,您好。最近在学习数值积分时,偶然有以下思考:
https://github.com/weihuayi/fealpy/blob/16582573044f386cde579b87c96510dbf76ab7a6/fealpy/quadrature/GaussLegendreQuadrature.py#L8-L14
在使用 Gauss-Legendre 积分时,如果我使用 10阶,那当前的积分形式是否意味着我需要进行十次 if 的判断,如果改为:
if k==0: ··· elif k==1: ···
又亦或是改为字典形式在运行速度上有所提升
— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you authored the thread.Message ID: @.***>