From: Manav Bhatia <bhatiamanav@gm...>  20130221 21:47:42

I had looked at DirichletBoundary class in the examples, but I had not realized that it works for all interpolation basis. What you describe is very impressive, and I will certaintly look deeper into the class. Thanks! Manav On Thu, Feb 21, 2013 at 4:17 PM, Roy Stogner <roystgnr@...>wrote: > > On Thu, 21 Feb 2013, Manav Bhatia wrote: > > I have a preference for Lagrange interpolation for the structural >> (and some thermal) applications that I am working on, primarily due >> to easy application of Dirichlet boundary conditions. >> > > Have you noticed the relativelynew DirichletBoundary class we have? > Hand that a functor, and it'll do the projections onto nonLagrange > spaces for you. Right now there's still work and testing to be done > for transient Dirichlet conditions (that functor may get evaluated at > time t in places where it should be evaluated at t +/ deltat...) but > for steady Dirichlet conditions it's pretty solid. > > > Perhaps hierarchic polynomials would also offer a similar feature >> (please correct if I am wrong) due to the presence of node and edge >> functions whose dof values can be specified, and bubble functions >> that are zero on the boundaries. >> > > Unless your Dirichlet values are piecewiselinear, they'll have > nonzero dofs corresponding to those bubble functions. What our > DirichletBoundary stuff gives you is interpolation at nodes, then > constrained L2 projection for edgeinterior values, then > furtherconstrained L2 projection for faceinterior values. > > > I am curious about your comment "mapped the Lagrange bases on to >> nodes topologically". Are you implying a software fix of telling the >> dof that it is associated with a node, or some sort of a >> mathematical mapping process? >> > > Software. Suppose you have a quad on the unit square. Isoparametric > cubic Lagrange elements would have nodes at (1/3,0) and (2/3,0), each > with a single degree of freedom. My suggestion would be to do what we > do with hierarchics: keep the single node at (1/2,0), give it two > degrees of freedom, then use some canonical ordering based on node > positions to determine which DoF is which. This breaks code which > assumes that solution(node>dof_number(0,0,**0)) == u(Point(node)), but > mathematically it can still be the same basis being used. >  > Roy 