不连续 Galerkin 方法的归一化勒让尔和正交基

计算科学 有限元 数字 不连续-galerkin
2021-12-05 15:18:05

我已经成功地实现了一个具有非归一化勒让德基础的一维 DG 代码,现在我开始使用张量积开发一个二维代码。对于我的二维码,我选择了归一化勒让德多项式,即

L0(x)=12L1(x)=32x.

我的问题是:如果我们规范化勒让德多项式,我是否也必须规范化我的高斯-勒让德权重?还是我们只根据基对多项式进行归一化?

subroutine GaussQuad (xq,wq,n)
use parameters 
implicit none 
integer :: n
real(kind=8),dimension(n) :: xq,wq

integer :: i,iter
real(kind=8) :: xx
real(kind=8) :: legendre,dlegendre

do i=1,n
 xx = cos(dpi*(i - 0.25d0)/(n + 0.5d0))

 do iter=1,500
    xx = xx - legendre(xx,n)/dlegendre(xx,n)
 end do

 xq(i) = xx
 wq(i) = (2.0*dble(n) + 1.0)*2.0d0/((1.0d0-xx**2.0)*dlegendre(xx,n)**2.0)
end do
end subroutine GaussQuad

为了使我的 2D 代码工作,我需要在高斯正交例程中使用归一化的勒让德多项式以及权重的归一化(请参阅如何将其添加到 wq(i))。但是,由于临时猜测,我才让它工作。我想避免这种情况,因为我个人不明白为什么我的求解器需要这样做。2n+1

编辑 2020 年 4 月 1 日:

  1. 在我的代码中,我在引用元素中执行所有操作。事实上,仔细检查,我的 Gauss-Legendre 点值在范围内,我的权重总和为 2。 [1,+1]
  2. 为了从物理空间映射到参考空间,我使用以下
    X(η)=xixi12η+xi+xi12Y(ζ)=yjyj12ζ+yj+yj12
  3. 为了整合体积通量,我使用了带有点的张量积 Gauss-Legendre 方案M2

    do ix=1,nx
     do iy=1,ny
      do i=1,mx
       do j=1,my
        do inode=1,mx
          do jnode=1,my
           call Flux(un(:,ix,iy,inode,jnode),FFlux,GFlux)
    
           flux_vol1(:,ix,iy,i,j) = flux_vol1(:,ix,iy,i,j) + &
           & 0.5*FFlux(:)* &
           & dlegendre(xg(inode),i-1)*& 
           & legendre(xg(jnode),j-1)*&
           & wg(inode)*&
           & wg(jnode)
    
           flux_vol2(:,ix,iy,i,j) = flux_vol2(:,ix,iy,i,j) + &
           & 0.5*GFlux(:)* &
           & dlegendre(xg(jnode),j-1)*&
           & legendre(xg(inode),i-1)*&
           & wg(inode)* &
           & wg(jnode)
         end do
        end do
       end do
      end do
     end do
    end do
    

以上是我如何执行张量积求积的片段。我对为什么去除高斯正交的归一化会导致如此严重的结果有点困惑。
解决方案:

计算张量积的标准方法是 前两篇论文改编的张量积公式为 有没有理由使用公式(1)超过公式(2)?从数学上讲,它们似乎都是正确的。

uh(x,y)=k=0Nl=0Muij(t)ϕk(x)ϕl(y)(1),
Uh(x,y)=k=012(k+1)(k+2)uijk(t)ϕk(x,y)(2)

1个回答

根据 Stack Exchange 的规定。我已经包含了我的问题的“答案”。

所以我设法解决了我的问题。首先,在计算表面积分时,我错过了 0.5 的系数。此外,我正在使用以下规范化ϕ(x)=2m+1L(ξ)