← Back to team overview

dolfin team mailing list archive

Re: pointmap

 

On Thu, Apr 12, 2007 at 03:12:55PM +0200, Johan Hoffman wrote:
> I have been thinking about vector bc's; typically one wants to set
> boundary conditions of the type u*n=g or u*t=h, with n,t normal and
> tangent vectors.
> 
> This is not obvious how to do, but maybe we could incorporate also this in
> the general formulation in the following way, where now u = (u^1,u^2),
> u_j=(u_j^1,u_j^2) and \phi_j=(\phi_j^1,\phi_j^2):
> 
> u*n = (\sum_j u_j*\phi_j)*n_j = \sum_j u_j*(\phi_j*n_j) = g
> 
> where n_j is a normal vector defined for each node/dof j. We could then
> define a new basis function \phi^n_j=\phi_j*n_j, with associated dual
> basis \eta^n_j.
> 
> Now we would obtain the proper boundary condition for u_j as:
> 
> \int_Gamma \eta^n_j(g) ds
> 
> The question then is: does FIAT provide functionality to tabulate basis
> functions and dual basis functions for a modified basis \phi of the type
> \phi*n etc.? If so, this may be a nice solution to a usually complicated
> problem.
> 
> Or?
> 
> /Johan
> 
> PS. Note that normals etc. needs to be defined for each node/dof, not for
> each face which may be the geometrically natural thing, since otherwise
> one imposes conditions for a node related to several normals possibly
> being linearly independent. This could result in u*n=0 resulting in u=0
> etc.

For (strong) Dirichlet boundary conditions, all we can do now is set
the values of single dofs (entries in the vector x of dofs) so the
dofs must correspond to the condition you want to set. This means that
your finite element space must be chosen according to which boundary
conditions you want to set. For Lagrange elements you can set point
values and for BDM elements you can set normal component values etc.

But maybe we could extend this to imposing boundary conditions as
non-trivial equations in the future (linear combinations of dofs
rather than fixed values for single dofs).

/Anders


References