I have a user-defined expression "fun" that is everywhere either 0.0 or -1.0. However, if I run
print assemble(conditional(lt(fun, const), 1.0, 0.0)*dx, mesh=mesh)
where const is -0.1, -0.2, -0.3, ..., then, although I would expect to obtain identical results, the results look like
"34.193..., 34.193..., 25.8265..., 25.8265..., 19.424...", i.e. it jumps whenever const reaches some threshold. Why is it? I thought that FEniCS uses some kind of Gaussian quadratures for integrating and fun is <-0.1 iff it is <-0.5.