← Back to team overview

dolfin team mailing list archive

Re: BC question

 

On Mon, Jan 14, 2008 at 05:51:12PM -0600, Matthew Knepley wrote:
> On Jan 14, 2008 5:42 PM, Murtazo Nazarov <murtazo@xxxxxxxxxxx> wrote:
> > > On Tue, Jan 15, 2008 at 12:23:30AM +0100, Murtazo Nazarov wrote:
> > >> > On Mon, Jan 14, 2008 at 08:57:34PM +0100, Murtazo Nazarov wrote:
> > >> >> > Is there an obvious high level way to implement normal flow type
> > >> >> > boundary conditions or symmetry type boundary conditions?
> > >> >> >
> > >> >> > -gideon
> > >> >> >
> > >> >>
> > >> >> If you mean slip boundary condition which for normal velocity, it is
> > >> >> already implemented and soon will be available with UNICORN.
> > >> >>
> > >> >> The slip with friction is also implemented.
> > >> >>
> > >> >> /murtazo
> > >> >
> > >> > How is this implemented and for which element types? Maybe it can be
> > >> > added to DOLFIN.
> > >> >
> > >>
> > >> It is implemented in the "stong" way as the Dirichlet BC. The idea is to
> > >> put u*n = u1*n1 + u2*n2 + u3*n3 = 0, where u = (u1,u2,u3) velocity and n
> > >> =
> > >> (n1,n2,n3) normal to a boundary node. At the monent it works for simple
> > >> (cylinder, cube, ...) and quite complex geometries (car), but we are
> > >> testing it in different geometries. Then, it would be good to add it to
> > >> DOLFIN.
> > >
> > > I mean how do you translate u1*n1 + u2*n2 + u3*n3 = 0 into an equation
> > > for the degrees of freedom (which may or may not be u1, u2, u3), which
> > > types of finite elements does this work for and how do you modify the
> > > linear system?
> > >
> >
> > It is done for the linear system. The idea is almost the same as Dirichlet
> > implementation, but here we change two (in 2D), three (in 3D)
> > corresponding rows of the system. I think (I may be wrong) it has nothing
> > to do with the types of finite elements.
> 
> Just a small comment. I believe this is a completely wrong strategy for parallel
> operation, and have discussed it extensively with Wolfgang Bangreth (DealII).
> Changing an assembled parallel matrix is a very big pain, and can impact
> performance. I think it makes much more sense to identify and remove
> constrained dofs before assembly. I believe we discussed this approach last time
> I was at Simula.

I agree. It's just that we haven't done anything about it yet.

> Also, I believe it does depend on the element which you use. If I want to apply
> a Dirichlet condition to the linear system, I assume this means setting a
> vector entry to some value. That vector entry is a coefficient in the expansion
> of the BC function in the FEM basis. Thus I need the projection of this function
> into the basis first. Coordinating this is not trivial. FIAT does not
> currently output
> the projection method (I have it coded for some elements), but I believe SiFy
> does.

Yes, it definitely depends on the type of elements. For example,
implementing this for BDM elements is "simple" because the dofs are
the normal components. But there may still be a way to find an
implementation that generalizes to different element types?

-- 
Anders


Follow ups

References