Couple more questions, this time regarding weakly imposed BCs In the undocumented FEniCS dg-poisson example <https://github.com/FEniCS/dolfin/blob/master/demo/undocumented/dg-poisson/python/demo_dg-poisson.py>, they have this weak formulation: a = dot(grad(v), grad(u))*dx \ - dot(avg(grad(v)), jump(u, n))*dS \ - dot(jump(v, n), avg(grad(u)))*dS \ + alpha/h_avg*dot(jump(v, n), jump(u, n))*dS \ - dot(grad(v), u*n)*ds(1) \ - dot(v*n, grad(u))*ds(1) \ + (gamma/h)*v*u*ds(1) L = v*f*dx - u0*dot(grad(v), n)*ds(1) + (gamma/h)*u0*v*ds(1) + g*v*ds(2) I am attempting to emulate this in Firedrake but with a diffusion tensor (let's say D). From what I understand in the literature, I know I have to add D to the first three terms in the bilinear form. 1) Do I need to include D in any of the ds(...) terms? 2a) So in the above example, ds(1) denotes the boundary where the authors want to enforce Dirichlet conditions and ds(2) denotes the Neumann conditions. In Firedrake, if I know I want non-homogeneous Dirichlet boundaries on all faces, can I simply use ds or do I need to include the ID's too i.e., ds(1), ds(2), .... etc? 2b) If I have Homogeneous Dirichlet BCs on all four faces, do I still need the last three terms in the above a = ... ? Thanks, Justin