← Back to team overview

dolfin team mailing list archive

Re: Computation of Norms

 

On Wed, Jun 10, 2009 at 7:12 PM, Anders Logg<logg@xxxxxxxxx> wrote:
> On Wed, Jun 10, 2009 at 06:46:53PM +0200, Martin Sandve Alnæs wrote:
>> Not a linear form, but a functional. That's what norm does anyway.
>>
>> u = Function(element)
>> x, y, z = tetrahedron.x
>> L2 = (sin(2*pi*x) - u)**2*dx
>>
>> You still have to make sure you compile
>> with sufficient quadrature order though.
>
> That may not be numerically stable depending on how the form compiler
> expands the expression into terms. Use the function errornorm() which

Which is only one of the reasons why quadrature
based form compilers shouldn't expand expressions.
SFC doesn't, and I don't think the latest FFC does
either when using quadrature.

Martin



> works around this and automatically computes the norm:
>
>  e = errornorm(u, u_h)
>
> Look at the documentation in errornorm.py for a longer explanation.
>
> --
> Anders
>
>
>
>>
>> On Wed, Jun 10, 2009 at 6:33 PM, Shawn Walker<walker@xxxxxxxxxxxxxxx> wrote:
>> > Actually, I have a question about this.  I may have asked this before, so
>> > forgive me if I repeat.
>> >
>> > Suppose my exact solution is sin(2*pi*x).  I would like to compute the exact
>> > error against this function.  Is this doable?  I know you can resample it
>> > with a higher order function, but that is lame!  Can't FFC treat it like a
>> > linear form and use quadrature to evaluate it?  I know it isn't really a
>> > linear form, but FFC wouldn't know the difference!  :) Maybe I am missing
>> > something...
>> >
>> > - Shawn
>> >
>> > On Wed, 10 Jun 2009, Martin Sandve Alnæs wrote:
>> >
>> >> The norm definitions should use "inner" instead of "dot" to handle
>> >> tensor fields as well.
>> >>
>> >> Martin
>> >>
>> >>
>> >>
>> >> On Wed, Jun 10, 2009 at 6:14 PM, Anders Logg<logg@xxxxxxxxx> wrote:
>> >>>
>> >>> On Wed, Jun 10, 2009 at 09:58:20AM -0500, Jehanzeb Hameed wrote:
>> >>>>
>> >>>> Thanks. So I guess that means no such facility is available in C/C++ ?
>> >>>
>> >>> No, since the computation depends on the space the functions are in
>> >>> and so the code needs to be generated. In C++, you need to define a
>> >>> form file for the norm. Look at
>> >>>
>> >>>  site-packages/dolfin/norm.py
>> >>>
>> >>> for how to define the norms.
>> >>>
>> >>>
>> >>>
>> >>>> On Wed, Jun 10, 2009 at 2:03 AM, Anders Logg<logg@xxxxxxxxx> wrote:
>> >>>>>
>> >>>>> On Tue, Jun 09, 2009 at 05:11:48PM -0500, Jehanzeb Hameed wrote:
>> >>>>>>
>> >>>>>> Hello,
>> >>>>>>
>> >>>>>> Is there a builtin function in dolfin to compute L^2 or H_1 norms? If
>> >>>>>> so, can you please point it out. If not, are there support functions
>> >>>>>> (e.g. a Gauss Quadrature table, computation of Jacobians, etc) which
>> >>>>>> can help in this?
>> >>>>>
>> >>>>> Yes, this is available in the DOLFIN Python interface:
>> >>>>>
>> >>>>>  norm(v)
>> >>>>>
>> >>>>> The default computes the L^2 norm. Several options are available:
>> >>>>>
>> >>>>>  L^2:     norm(v, 'L2')
>> >>>>>  H^1:     norm(v, 'H1')      includes L^2 term
>> >>>>>  H^1_0:   norm(v, 'H10')     does not include L^2 term
>> >>>>>  H(div):  norm(v, 'Hdiv')    includes L^2 term
>> >>>>>  H(div):  norm(v, 'Hdiv0')   does not include L^2 term
>> >>>>>  H(curl): norm(v, 'Hcurl')   includes L^2 term
>> >>>>>  H(curl): norm(v, 'Hcurl0')  does not include L^2 term
>> >>>>>
>> >>>>>
>> >>>>> -----BEGIN PGP SIGNATURE-----
>> >>>>> Version: GnuPG v1.4.9 (GNU/Linux)
>> >>>>>
>> >>>>> iEYEARECAAYFAkovWqUACgkQTuwUCDsYZdGb3gCfa2gWnzealWzkjPoRj8hf3cr/
>> >>>>> 0EUAoJh4mpaIzRU9eCnnC+XWlupu6SV0
>> >>>>> =so4c
>> >>>>> -----END PGP SIGNATURE-----
>> >>>>>
>> >>>>> _______________________________________________
>> >>>>> DOLFIN-dev mailing list
>> >>>>> DOLFIN-dev@xxxxxxxxxx
>> >>>>> http://www.fenics.org/mailman/listinfo/dolfin-dev
>> >>>>>
>> >>>>>
>> >>>> _______________________________________________
>> >>>> DOLFIN-dev mailing list
>> >>>> DOLFIN-dev@xxxxxxxxxx
>> >>>> http://www.fenics.org/mailman/listinfo/dolfin-dev
>> >>>
>> >>> -----BEGIN PGP SIGNATURE-----
>> >>> Version: GnuPG v1.4.9 (GNU/Linux)
>> >>>
>> >>> iEYEARECAAYFAkov28sACgkQTuwUCDsYZdE8KQCdEI7wS27QaNw9knI2U9L+RVST
>> >>> xeUAnRdLrrhAVzsBn6nO1b6CLEpF64ey
>> >>> =a7iu
>> >>> -----END PGP SIGNATURE-----
>> >>>
>> >>> _______________________________________________
>> >>> DOLFIN-dev mailing list
>> >>> DOLFIN-dev@xxxxxxxxxx
>> >>> http://www.fenics.org/mailman/listinfo/dolfin-dev
>> >>>
>> >>>
>> >> _______________________________________________
>> >> DOLFIN-dev mailing list
>> >> DOLFIN-dev@xxxxxxxxxx
>> >> http://www.fenics.org/mailman/listinfo/dolfin-dev
>> >>
>> >
>> _______________________________________________
>> DOLFIN-dev mailing list
>> DOLFIN-dev@xxxxxxxxxx
>> http://www.fenics.org/mailman/listinfo/dolfin-dev
>
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v1.4.9 (GNU/Linux)
>
> iEYEARECAAYFAkov6WEACgkQTuwUCDsYZdGsogCgkGG4Q6P3KPmcgNMbNRmhGo3g
> ewUAnitXpohiVKg7fdE4snDRe2pQ3QMU
> =2TVq
> -----END PGP SIGNATURE-----
>
> _______________________________________________
> DOLFIN-dev mailing list
> DOLFIN-dev@xxxxxxxxxx
> http://www.fenics.org/mailman/listinfo/dolfin-dev
>
>


Follow ups

References