← Back to team overview

dolfin team mailing list archive

Re: [Question #145534]: Dirac Delta Function

 

On Thu, Feb 17, 2011 at 2:09 PM, Anders Logg <logg@xxxxxxxxx> wrote:

> On Wed, Feb 16, 2011 at 09:21:23AM -0800, Johan Hake wrote:
> > On Wednesday February 16 2011 09:07:57 Garth N. Wells wrote:
> > > On 16/02/11 16:54, Johan Hake wrote:
> > > > Question #145534 on DOLFIN changed:
> > > > https://answers.launchpad.net/dolfin/+question/145534
> > > >
> > > > Johan Hake proposed the following answer:
> > > >
> > > > On Wednesday February 16 2011 08:48:38 Anders Logg wrote:
> > > >> Question #145534 on DOLFIN changed:
> > > >> https://answers.launchpad.net/dolfin/+question/145534
> > > >>
> > > >>     Status: Open => Answered
> > > >>
> > > >> Anders Logg proposed the following answer:
> > > >>
> > > >> On Tue, Feb 15, 2011 at 10:30:06PM -0000, Yi Jiang wrote:
> > > >>> New question #145534 on DOLFIN:
> > > >>> https://answers.launchpad.net/dolfin/+question/145534
> > > >>>
> > > >>> Hi all,
> > > >>>
> > > >>> I am using the dolfin to solve a PDE problem by finite element
> method.
> > > >>> However, I met a problem when I try to define the linear form L(v)
> of
> > > >>> right hand side. Suppose the PDE is:
> > > >>>
> > > >>> F(x) = f.
> > > >>>
> > > >>> What should I do if the f is a Dirac Delta function. How to define
> it
> > > >>> in ufl? Anybody met and solved the similar problems before?
> > > >>> Thank you for attention and kind help.
> > > >>
> > > >> This is not supported.
> > > >
> > > > I am also interested in this. What would it require to implement?
> Changes
> > > > to UFL, FFC, DOLFIN?
> > >
> > > A lot of changes. It would require being able to integrate over
> > > surfaces/lines within a cell.
> > >
> > > UFL can be stretched to do this, but extentions to FFC and DOLFIN are
> > > needed. Take a look at the modelling discontinuities chapter in the
> > > FEniCS book ;).
> >
> > Looking forward to do that!
> >
> > A naive thought would be to introduce a DeltaDiracFunction which
> evaluates to
> > zero for all but a given coordinates which need to coincide with a
> vertex. But
> > I guess we need to prevent DOLFIN to interpolate the function during
> assemble,
> > and just evaluate it at the quadrature points, where it evaluates to
> zero?
> >
> > Johan
>
> Anyone interested in this, please add a blueprint so we can remember
> it for later.
>
>
I have actually implemented this!  This is fairly easy to support through
the assembly process.  I've implemented this before by defining a boundary
condition type DeltaFunctionBC that alters the right hand side as, for the
test function v,

(v, \delta(x - x_0))= v(x_0)

The simplification I made was that, so I didn't have to search for some
point x_0 in the mesh, that x_0 has to correspond to the coordinates of a
mesh vertex.  However, it's easy to generalize to any, potentially mixed,
function space.

- Peter


> --
> Anders
>
> _______________________________________________
> Mailing list: https://launchpad.net/~dolfin
> Post to     : dolfin@xxxxxxxxxxxxxxxxxxx
> Unsubscribe : https://launchpad.net/~dolfin
> More help   : https://help.launchpad.net/ListHelp
>

References