← Back to team overview

dolfin team mailing list archive

Re: DG viz

 

Anders Logg wrote:
On Thu, Jun 28, 2007 at 12:17:50PM -0400, Jake Ostien wrote:
Garth N. Wells wrote:
Jake Ostien wrote:
Hi,

If even possible, does anyone know how to view the fully discontinuous solution (without the interpolation to the vertices)?

It's not possible at the moment. The best approach for now is to project the discontinuous solution onto a continuous basis, and plot the continuous field.
OK. Here's a related question, I need to check that my weakly enforced Dirichlet BCs are being properly handled. Right now I think I need to sample the discontinuous function along a given subset of the boundary (which I do by iterating through all the vertices and selected solution components by position), and manually integrate those values along the boundary for comparison with the prescribed value, say zero for simplicity. Is there a better way to do this? I am observing some noise (oscillations) in the projected solution near the boundaries and I am trying to figure out why.

-Jake

Sounds like you want to compute a functional of the computed solution?
exactly
Say you want to check the L2 error of the computed solution along a subset of the boundary. In FFC, do this:

element = FiniteElement(...)

u = Function(element)
u0 = Function(element)

e = u - u0

M = e*e*ds

Here, u is your computed solution, u0 is a boundary condition (you
want u = u0 on the boundary). Then the functional M will be the L2
error squared along a subset of the boundary.

Assemble the functional in DOLFIN by

double L2error = assemble(M, mesh, sub_domain);

OK, this was easy to do (many thanks, this was much, much simpler than what I was going to try and do). Let me add a little context to the discussion. As an exercise, I am solving a 2D Linear Elasticity problem using DG1 vector elements. I can write down the answer on paper, so I am checking how well the method performs. I am finding that the weakly enforced Dirichlet conditions, u[0] = 0.0 on x = 0.0, u[1] = 0.0 on y = 0.0 are showing oscillations near the domain corners (the domain is the UnitSquare(#,#). Qualitatively, the solutions look good if the mesh is fine enough, but quantitatively, the functional I am calculating on the fixed Dirichlet boundary is not identically zero. I get numbers around 1e-05 to 1e-07 for the L2 norms. I expect to get much closer to machine precision than that, but maybe that assumption is misguided? Anyone have any thoughts or advice on this?
where M is the form (taking two arguments u and u0) and sub_domain is
the sub_domain you want to integrate over.

Just for the record, I was under the (possibly false) assumption that I could not use SubDomains with discontinuous functions. I don't remember where I picked that up. Is it true? (I could test it fairly easily if necessary)

Thanks again,
Jake
/Anders
_______________________________________________
DOLFIN-dev mailing list
DOLFIN-dev@xxxxxxxxxx
http://www.fenics.org/mailman/listinfo/dolfin-dev





Follow ups

References