For the numerical integration of reaction terms in my PDE on a 2D triangular mesh, I would like to use the scheme $$ \int_T \Phi(x) \approx \frac{|T|}{3} (\Phi(x_0) + \Phi(x_1) + \Phi(x_2)) $$ where the $x_i$ are the triangle nodes.

How to specify this when assembleing the system?


Actually you don't specify quadrature rule to assembler but to form compiler. You can tweak ffc/quadrature_schemes.py for your needs or you can adjust generated code. In both cases you just supply your quadrature points and weights.

  • $\begingroup$ Luckily, assemble() has an form_compiler_parameters argument. $\endgroup$ – Nico Schlömer May 17 '13 at 13:25
  • $\begingroup$ @Nico: Yes, but FFC seems to accept only default and canonical which is a scheme supplied by FIAT. $\endgroup$ – Jan Blechta May 17 '13 at 13:28
  • $\begingroup$ Indeed, quadrature_schemes.py doesn't seem to permit custom schemes. $\endgroup$ – Nico Schlömer May 17 '13 at 13:55

You can adjust the quadrature degree by setting

parameters["form_compiler_parameters"]["quadrature_degree"] = q

This will change the quadrature degree such that polynomials of degree q are integrated exactly.

FEniCS will try to autodetect the necessary quadrature degree so this should normally not be needed. However, in some cases you might want to underintegrate by setting a lower value of q.

  • $\begingroup$ I skimmed through FFC/ffc/quadrature_schemes.py to see what schemes are used for the particular degrees, but the "lumping" scheme that I'd like to use is not implemented. $\endgroup$ – Nico Schlömer May 17 '13 at 13:54

Your Answer

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

Not the answer you're looking for? Browse other questions tagged or ask your own question.