Welcome to the Bug Tracking System for the DUNE project.
Due to increasing spam attacks, we had to disable the feature of anonymous bug reports. You will have to register before you are able to report a new bug.
In case you experience any problems, let us know at http://www.dune-project.org/mailinglists.html .
| Tasklist |

FS#723 - method order on basis

Attached to Project: Dune
Opened by Andreas Dedner (dedner) - Sunday, 24 January 2010, 20:41 GMT+2
Task Type Bug Report
Category Dune Core Modules → Localfunctions
Status New
Assigned To No-one
Operating System Unspecified / All
Severity High
Priority High
Reported Version SVN (pre2.1)
Due in Version Undecided
Due Date Undecided
Percent Complete 0%
Votes 0
Private No

Details

What is the exact semantics of order()?

We would suggest to have two methods:
k=interpolationOrder(): P_k subset span<b_i>
K=maxOrder(): span<b_i> subset P_K
Example: RT_0 would have k=0, K=1
Q_p would have k=p, K=2p
P_p would have k=K=p
Note that the maxOrder is only meaningful for polynomial
basis functions (e.g. a sin/cos basis would have to have
k=0, K=infinity).

A third value which might be even more practical, is a bit
difficult to define and has something todo with the required
quadrature order. Assuming e.g. that a tensor product
quadrature is used on cubes then the quadrature order for
Q_p would be p=interpolationOrder();
but for RT_0 on simplex elements we need order 1=maxOrder().
Of course maxOrder always works but in the case of Q_p it
is much to large.

At the moment the order seems not consistently implemented:
Q1LocalBasis::order returns 1 (interpolation order)
RT0LocalBasis::order returns 1 (max order)
Our basis function return the ''quadrature order''.
This task depends upon

Comment by Carsten Gräser (Carsten) - Sunday, 24 January 2010, 21:32 GMT+2
The interesting thing is 'the' quadrature order. This should be the minimal order k such that the quadrature rule returned from dune-grid for k can integrate the basis functions exactly. If the corresponding rule is a tensor product rule it should be p for Q_p. If not it should be as high as needed.

However returning one order is not sufficient in general:
1) Either we use the approach suggested above then Q_p might sometimes have p and some times not. Otherwise the rule for p might not be able to integrate exactly.
2) RefinedP* elements need quadrature rules on subtriangles obtained by red refinement.
3) There are elements defined on barycentric refined triangles (Hsieh-Clough-Tocher).
4) For hierarchical basis functions there are different orders for the functions.
5) If QuadRule(k) with k=basis.order() can integrate the basis functions which rule is needed derivatives, products, products of derivatives, ...

In order to really solve the problem we would need to return some struct that contains more information and a mechanism to construct this for derivatives, products,... . Then some kind of factory should return a proper quadrature.

Loading...