conservation-laws / ryujin

High-performance high-order finite element solver for hyperbolic conservation equations
https://conservation-laws.org
Other
103 stars 25 forks source link

dG Infrastructure, Part 3 #97

Closed tamiko closed 4 months ago

tamiko commented 4 months ago

This pull request adds to more missing pieces:

  1. Extend limiter bounds by taking the minimum over the stencil. This is now a new runtime parameter (also available for cG) that branches off into a modified loop in HyperbolicModule that does the bounds extension. Performance impact on the standard method should be minimal
  2. Adjusts the incidence matrix for Q0 and Q2 to have proper scaling.

With these two changes I now see proper convergence rates... I will submit test vectors in a separate pull request.

tamiko commented 4 months ago

@nachosaurus Current convergence tables for this pull request:

dG Q0:

  #dofs    L1 error          L2 error          Linf error
-------  ----------  ----  ----------  ----  ------------  ----
     64  0.239303          0.445754             1.37159
    256  0.0934643   1.36  0.189046    1.24     0.633356   1.11
   1024  0.0235038   1.99  0.0494011   1.94     0.203721   1.64
   4096  0.00579149  2.02  0.0124722   1.99     0.056288   1.86
  16384  0.00146566  1.98  0.00326836  1.93     0.0293925  0.94

dG Q1:

  #dofs     L1 error          L2 error          Linf error
-------  -----------  ----  ----------  ----  ------------  ----
    256  0.0896792          0.173201            0.974556
   1024  0.0305853    1.55  0.0691853   1.32    0.431899    1.17
   4096  0.00886494   1.79  0.0213493   1.7     0.128639    1.75
  16384  0.00232961   1.93  0.00575481  1.89    0.0321078   2.0
  65536  0.000590042  1.98  0.00146795  1.97    0.00794425  2.01

dG Q2:

  #dofs     L1 error           L2 error          Linf error
-------  -----------  ----  -----------  ----  ------------  ----
    576  0.0412296          0.0670614            0.460117
   2304  0.00579616   2.83  0.0138716    2.27    0.170333    1.43
   9216  0.000593558  3.29  0.00193619   2.84    0.0342838   2.31
  36864  7.25492e-05  3.03  0.000269699  2.84    0.00674325  2.35
 147456  9.1628e-06   2.99  3.8928e-05   2.79    0.00137409  2.29

dG Q3:

  #dofs     L1 error           L2 error          Linf error
-------  -----------  ----  -----------  ----  ------------  ----
   1024  0.00735236         0.0147951            0.115376
   4096  0.000625408  3.56  0.00194717   2.93    0.0303727   1.93
  16384  4.28851e-05  3.87  0.000153276  3.67    0.00216174  3.81
  65536  3.03506e-06  3.82  1.18803e-05  3.69    0.00019853  3.44

The slight reduction for dG Q0 comes from the fact that we use a rather strict relaxation window [1] and the relaxation is not expanded over the stencil. This works reasonably well for Q1 - Q3, but not for dG Q0. Hence the reduction in the L^\infty norm.

[1] https://github.com/conservation-laws/ryujin/blob/development/source/euler/limiter.h#L347-L351