[Dune] [Dune-Commit] dune-localfunctions r718 - in trunk: . dune/localfunctions dune/localfunctions/generic dune/localfunctions/generic/lagrangebasis dune/localfunctions/generic/orthonormalbasis dune/localfunctions/generic/quadrature dune/localfunctions/generic/raviartthomasbasis dune/localfunctions/test dune/localfunctions/utility

Oliver Sander sander at mi.fu-berlin.de
Mon Jan 18 14:32:47 CET 2010


Hi Martin!

Could you please document the rules about what goes into common/ and 
what goes into utility/?
Apology if you already have and I just can't find it.

Thnx,
Oliver

mnolte at dune-project.org schrieb:
> Author: mnolte
> Date: 2010-01-18 14:25:13 +0100 (Mon, 18 Jan 2010)
> New Revision: 718
>
> Added:
>    trunk/dune/localfunctions/utility/
>    trunk/dune/localfunctions/utility/field.hh
>    trunk/dune/localfunctions/utility/gmpfield.hh
>    trunk/dune/localfunctions/utility/matrix.hh
> Removed:
>    trunk/dune/localfunctions/generic/common/
>    trunk/dune/localfunctions/generic/math/
> Modified:
>    trunk/configure.ac
>    trunk/dune/localfunctions/Makefile.am
>    trunk/dune/localfunctions/generic/Makefile.am
>    trunk/dune/localfunctions/generic/dglagrangefiniteelement.hh
>    trunk/dune/localfunctions/generic/lagrangebasis/equidistantpoints.hh
>    trunk/dune/localfunctions/generic/lagrangebasis/interpolation.hh
>    trunk/dune/localfunctions/generic/lagrangebasis/lagrangebasis.hh
>    trunk/dune/localfunctions/generic/lagrangebasis/lagrangecoefficients.hh
>    trunk/dune/localfunctions/generic/lagrangebasis/lobattopoints.hh
>    trunk/dune/localfunctions/generic/lagrangebasis/test.cc
>    trunk/dune/localfunctions/generic/lagrangefiniteelement.hh
>    trunk/dune/localfunctions/generic/orthonormalbasis/orthonormalbasis.hh
>    trunk/dune/localfunctions/generic/orthonormalbasis/orthonormalcompute.hh
>    trunk/dune/localfunctions/generic/orthonormalbasis/test.cc
>    trunk/dune/localfunctions/generic/orthonormalfiniteelement.hh
>    trunk/dune/localfunctions/generic/quadrature/gaussquadrature.hh
>    trunk/dune/localfunctions/generic/quadrature/genericquadrature.hh
>    trunk/dune/localfunctions/generic/quadrature/lobattoquadrature.hh
>    trunk/dune/localfunctions/generic/quadrature/quadrature.hh
>    trunk/dune/localfunctions/generic/raviartthomasbasis/interpolation.hh
>    trunk/dune/localfunctions/generic/raviartthomasbasis/raviartthomasbasis.hh
>    trunk/dune/localfunctions/generic/raviartthomasbasis/raviartthomasprebasis.hh
>    trunk/dune/localfunctions/generic/raviartthomasbasis/test.cc
>    trunk/dune/localfunctions/generic/raviartthomasfiniteelement.hh
>    trunk/dune/localfunctions/test/testgenericfem.cc
>    trunk/dune/localfunctions/utility/Makefile.am
>    trunk/dune/localfunctions/utility/basisevaluator.hh
>    trunk/dune/localfunctions/utility/basismatrix.hh
>    trunk/dune/localfunctions/utility/basisprint.hh
>    trunk/dune/localfunctions/utility/coeffmatrix.hh
>    trunk/dune/localfunctions/utility/defaultbasisfactory.hh
>    trunk/dune/localfunctions/utility/dglocalcoefficients.hh
>    trunk/dune/localfunctions/utility/interpolationhelper.hh
>    trunk/dune/localfunctions/utility/l2interpolation.hh
>    trunk/dune/localfunctions/utility/monomialbasis.hh
>    trunk/dune/localfunctions/utility/multiindex.hh
>    trunk/dune/localfunctions/utility/polynomialbasis.hh
>    trunk/dune/localfunctions/utility/tensor.hh
> Log:
> move generic/common + generic/math to utility
>
>
> Modified: trunk/configure.ac
> ===================================================================
> --- trunk/configure.ac	2010-01-18 10:53:34 UTC (rev 717)
> +++ trunk/configure.ac	2010-01-18 13:25:13 UTC (rev 718)
> @@ -51,8 +51,7 @@
>                  dune/localfunctions/raviartthomas/raviartthomas0q3d/Makefile
>                  dune/localfunctions/test/Makefile
>                  dune/localfunctions/generic/Makefile
> -                dune/localfunctions/generic/common/Makefile         
> -                dune/localfunctions/generic/math/Makefile           
> +                dune/localfunctions/utility/Makefile
>                  dune/localfunctions/generic/quadrature/Makefile
>                  dune/localfunctions/generic/orthonormalbasis/Makefile
>                  dune/localfunctions/generic/lagrangebasis/Makefile  
>
> Modified: trunk/dune/localfunctions/Makefile.am
> ===================================================================
> --- trunk/dune/localfunctions/Makefile.am	2010-01-18 10:53:34 UTC (rev 717)
> +++ trunk/dune/localfunctions/Makefile.am	2010-01-18 13:25:13 UTC (rev 718)
> @@ -7,7 +7,7 @@
>  	pk2d.hh q22d.hh q1.hh \
>  	pq22d.hh refinedp0.hh
>  
> -SUBDIRS = common generic test \
> +SUBDIRS = common generic utility test \
>            p0 p1 pk2d pk3d q1 q22d raviartthomas edger02d edges02d \
>   	  edges03d rannacher_turek2d refinedp1 monom mimetic \
>            prismp1 prismp2 hierarchicalprismp2 refinedp0
>
> Modified: trunk/dune/localfunctions/generic/Makefile.am
> ===================================================================
> --- trunk/dune/localfunctions/generic/Makefile.am	2010-01-18 10:53:34 UTC (rev 717)
> +++ trunk/dune/localfunctions/generic/Makefile.am	2010-01-18 13:25:13 UTC (rev 718)
> @@ -3,7 +3,7 @@
>                    dglagrangefiniteelement.hh \
>                    orthonormalfiniteelement.hh \
>                    raviartthomasfiniteelement.hh
> -SUBDIRS = common orthonormalbasis lagrangebasis raviartthomasbasis math quadrature
> +SUBDIRS = orthonormalbasis lagrangebasis raviartthomasbasis quadrature
>  AM_CPPFLAGS = $(DUNE_CPPFLAGS)
>  
>  include $(top_srcdir)/am/global-rules
>
> Modified: trunk/dune/localfunctions/generic/dglagrangefiniteelement.hh
> ===================================================================
> --- trunk/dune/localfunctions/generic/dglagrangefiniteelement.hh	2010-01-18 10:53:34 UTC (rev 717)
> +++ trunk/dune/localfunctions/generic/dglagrangefiniteelement.hh	2010-01-18 13:25:13 UTC (rev 718)
> @@ -1,8 +1,8 @@
>  #ifndef DUNE_DGLAGRANGEFINITEELEMENT_HH
>  #define DUNE_DGLAGRANGEFINITEELEMENT_HH
>  
> -#include <dune/localfunctions/generic/common/localfiniteelement.hh>
> -#include <dune/localfunctions/generic/common/dglocalcoefficients.hh>
> +#include <dune/localfunctions/utility/localfiniteelement.hh>
> +#include <dune/localfunctions/utility/dglocalcoefficients.hh>
>  #include <dune/localfunctions/generic/lagrangebasis/lagrangecoefficients.hh>
>  #include <dune/localfunctions/generic/lagrangebasis/interpolation.hh>
>  #include <dune/localfunctions/generic/lagrangebasis/lagrangebasis.hh>
>
> Modified: trunk/dune/localfunctions/generic/lagrangebasis/equidistantpoints.hh
> ===================================================================
> --- trunk/dune/localfunctions/generic/lagrangebasis/equidistantpoints.hh	2010-01-18 10:53:34 UTC (rev 717)
> +++ trunk/dune/localfunctions/generic/lagrangebasis/equidistantpoints.hh	2010-01-18 13:25:13 UTC (rev 718)
> @@ -4,9 +4,9 @@
>  #include <vector>
>  
>  #include <dune/common/fvector.hh>
> -#include <dune/localfunctions/generic/math/field.hh>
> +#include <dune/localfunctions/utility/field.hh>
>  #include <dune/common/forloop.hh>
> -#include <dune/localfunctions/generic/common/topologyfactory.hh>
> +#include <dune/localfunctions/utility/topologyfactory.hh>
>  #include <dune/grid/genericgeometry/topologytypes.hh>
>  #include <dune/grid/genericgeometry/subtopologies.hh>
>  
>
> Modified: trunk/dune/localfunctions/generic/lagrangebasis/interpolation.hh
> ===================================================================
> --- trunk/dune/localfunctions/generic/lagrangebasis/interpolation.hh	2010-01-18 10:53:34 UTC (rev 717)
> +++ trunk/dune/localfunctions/generic/lagrangebasis/interpolation.hh	2010-01-18 13:25:13 UTC (rev 718)
> @@ -2,7 +2,7 @@
>  #define DUNE_LAGRANGEBASIS_INTERPOLATION_HH
>  
>  #include <vector>
> -#include <dune/localfunctions/generic/common/topologyfactory.hh>
> +#include <dune/localfunctions/utility/topologyfactory.hh>
>  #include <dune/localfunctions/generic/lagrangebasis/lagrangecoefficients.hh>
>  
>  namespace Dune
>
> Modified: trunk/dune/localfunctions/generic/lagrangebasis/lagrangebasis.hh
> ===================================================================
> --- trunk/dune/localfunctions/generic/lagrangebasis/lagrangebasis.hh	2010-01-18 10:53:34 UTC (rev 717)
> +++ trunk/dune/localfunctions/generic/lagrangebasis/lagrangebasis.hh	2010-01-18 13:25:13 UTC (rev 718)
> @@ -4,9 +4,9 @@
>  #include <fstream>
>  #include <dune/common/exceptions.hh>
>  
> -#include <dune/localfunctions/generic/common/defaultbasisfactory.hh>
> +#include <dune/localfunctions/utility/defaultbasisfactory.hh>
>  
> -#include <dune/localfunctions/generic/common/monomialbasis.hh>
> +#include <dune/localfunctions/utility/monomialbasis.hh>
>  #include <dune/localfunctions/generic/orthonormalbasis/orthonormalbasis.hh>
>  #include <dune/localfunctions/generic/lagrangebasis/interpolation.hh>
>  
>
> Modified: trunk/dune/localfunctions/generic/lagrangebasis/lagrangecoefficients.hh
> ===================================================================
> --- trunk/dune/localfunctions/generic/lagrangebasis/lagrangecoefficients.hh	2010-01-18 10:53:34 UTC (rev 717)
> +++ trunk/dune/localfunctions/generic/lagrangebasis/lagrangecoefficients.hh	2010-01-18 13:25:13 UTC (rev 718)
> @@ -4,9 +4,9 @@
>  #include <vector>
>  
>  #include <dune/common/fvector.hh>
> -#include <dune/localfunctions/generic/math/field.hh>
> +#include <dune/localfunctions/utility/field.hh>
>  #include <dune/common/forloop.hh>
> -#include <dune/localfunctions/generic/common/topologyfactory.hh>
> +#include <dune/localfunctions/utility/topologyfactory.hh>
>  
>  #include <dune/grid/genericgeometry/topologytypes.hh>
>  #include <dune/grid/genericgeometry/subtopologies.hh>
>
> Modified: trunk/dune/localfunctions/generic/lagrangebasis/lobattopoints.hh
> ===================================================================
> --- trunk/dune/localfunctions/generic/lagrangebasis/lobattopoints.hh	2010-01-18 10:53:34 UTC (rev 717)
> +++ trunk/dune/localfunctions/generic/lagrangebasis/lobattopoints.hh	2010-01-18 13:25:13 UTC (rev 718)
> @@ -2,10 +2,10 @@
>  #define DUNE_LOBATTOBASIS_HH
>  
>  #include <fstream>
> -#include <dune/localfunctions/generic/math/matrix.hh>
> -#include <dune/localfunctions/generic/math/field.hh>
> +#include <dune/localfunctions/utility/matrix.hh>
> +#include <dune/localfunctions/utility/field.hh>
>  #include <dune/common/forloop.hh>
> -#include <dune/localfunctions/generic/common/topologyfactory.hh>
> +#include <dune/localfunctions/utility/topologyfactory.hh>
>  #include <dune/grid/genericgeometry/referenceelements.hh>
>  #include <dune/grid/genericgeometry/referencemappings.hh>
>  
>
> Modified: trunk/dune/localfunctions/generic/lagrangebasis/test.cc
> ===================================================================
> --- trunk/dune/localfunctions/generic/lagrangebasis/test.cc	2010-01-18 10:53:34 UTC (rev 717)
> +++ trunk/dune/localfunctions/generic/lagrangebasis/test.cc	2010-01-18 13:25:13 UTC (rev 718)
> @@ -1,6 +1,6 @@
>  #include <config.h>
>  
> -#include <dune/localfunctions/generic/math/field.hh>
> +#include <dune/localfunctions/utility/field.hh>
>  
>  #include <dune/localfunctions/generic/lagrangebasis/equidistantpoints.hh>
>  
> @@ -8,7 +8,7 @@
>  
>  #include <dune/localfunctions/generic/lagrangebasis/lagrangebasis.hh>
>  #include <dune/localfunctions/generic/quadrature/genericquadrature.hh>
> -#include <dune/localfunctions/generic/common/basisprint.hh>
> +#include <dune/localfunctions/utility/basisprint.hh>
>  
>  #if HAVE_ALGLIB
>    typedef amp::ampf< 128 > StorageField;
>
> Modified: trunk/dune/localfunctions/generic/lagrangefiniteelement.hh
> ===================================================================
> --- trunk/dune/localfunctions/generic/lagrangefiniteelement.hh	2010-01-18 10:53:34 UTC (rev 717)
> +++ trunk/dune/localfunctions/generic/lagrangefiniteelement.hh	2010-01-18 13:25:13 UTC (rev 718)
> @@ -1,7 +1,7 @@
>  #ifndef DUNE_LAGRANGEFINITEELEMENT_HH
>  #define DUNE_LAGRANGEFINITEELEMENT_HH
>  
> -#include <dune/localfunctions/generic/common/localfiniteelement.hh>
> +#include <dune/localfunctions/utility/localfiniteelement.hh>
>  #include <dune/localfunctions/generic/lagrangebasis/lagrangecoefficients.hh>
>  #include <dune/localfunctions/generic/lagrangebasis/interpolation.hh>
>  #include <dune/localfunctions/generic/lagrangebasis/lagrangebasis.hh>
>
> Modified: trunk/dune/localfunctions/generic/orthonormalbasis/orthonormalbasis.hh
> ===================================================================
> --- trunk/dune/localfunctions/generic/orthonormalbasis/orthonormalbasis.hh	2010-01-18 10:53:34 UTC (rev 717)
> +++ trunk/dune/localfunctions/generic/orthonormalbasis/orthonormalbasis.hh	2010-01-18 13:25:13 UTC (rev 718)
> @@ -3,9 +3,9 @@
>  
>  #include <sstream>
>  
> -#include <dune/localfunctions/generic/common/topologyfactory.hh>
> +#include <dune/localfunctions/utility/topologyfactory.hh>
>  
> -#include <dune/localfunctions/generic/common/polynomialbasis.hh>
> +#include <dune/localfunctions/utility/polynomialbasis.hh>
>  #include <dune/localfunctions/generic/orthonormalbasis/orthonormalcompute.hh>
>  
>  namespace Dune
>
> Modified: trunk/dune/localfunctions/generic/orthonormalbasis/orthonormalcompute.hh
> ===================================================================
> --- trunk/dune/localfunctions/generic/orthonormalbasis/orthonormalcompute.hh	2010-01-18 10:53:34 UTC (rev 717)
> +++ trunk/dune/localfunctions/generic/orthonormalbasis/orthonormalcompute.hh	2010-01-18 13:25:13 UTC (rev 718)
> @@ -9,13 +9,13 @@
>  
>  #include <dune/common/fmatrix.hh>
>  
> -#include <dune/localfunctions/generic/math/field.hh>
> -#include <dune/localfunctions/generic/math/matrix.hh>
> +#include <dune/localfunctions/utility/field.hh>
> +#include <dune/localfunctions/utility/matrix.hh>
>  
>  #include <dune/grid/genericgeometry/topologytypes.hh>
>  
> -#include <dune/localfunctions/generic/common/monomialbasis.hh>
> -#include <dune/localfunctions/generic/common/multiindex.hh>
> +#include <dune/localfunctions/utility/monomialbasis.hh>
> +#include <dune/localfunctions/utility/multiindex.hh>
>  
>  namespace ONBCompute
>  {
>
> Modified: trunk/dune/localfunctions/generic/orthonormalbasis/test.cc
> ===================================================================
> --- trunk/dune/localfunctions/generic/orthonormalbasis/test.cc	2010-01-18 10:53:34 UTC (rev 717)
> +++ trunk/dune/localfunctions/generic/orthonormalbasis/test.cc	2010-01-18 13:25:13 UTC (rev 718)
> @@ -1,6 +1,6 @@
>  #include <config.h>
>  
> -#include <dune/localfunctions/generic/math/field.hh>
> +#include <dune/localfunctions/utility/field.hh>
>  #include <dune/localfunctions/generic/orthonormalbasis/orthonormalbasis.hh>
>  #include <dune/localfunctions/generic/quadrature/gaussquadrature.hh>
>  
>
> Modified: trunk/dune/localfunctions/generic/orthonormalfiniteelement.hh
> ===================================================================
> --- trunk/dune/localfunctions/generic/orthonormalfiniteelement.hh	2010-01-18 10:53:34 UTC (rev 717)
> +++ trunk/dune/localfunctions/generic/orthonormalfiniteelement.hh	2010-01-18 13:25:13 UTC (rev 718)
> @@ -1,9 +1,9 @@
>  #ifndef DUNE_ORTHONORMALFINITEELEMENT_HH
>  #define DUNE_ORTHONORMALFINITEELEMENT_HH
>  
> -#include <dune/localfunctions/generic/common/localfiniteelement.hh>
> -#include <dune/localfunctions/generic/common/dglocalcoefficients.hh>
> -#include <dune/localfunctions/generic/common/l2interpolation.hh>
> +#include <dune/localfunctions/utility/localfiniteelement.hh>
> +#include <dune/localfunctions/utility/dglocalcoefficients.hh>
> +#include <dune/localfunctions/utility/l2interpolation.hh>
>  #include <dune/localfunctions/generic/orthonormalbasis/orthonormalbasis.hh>
>  
>  namespace Dune 
>
> Modified: trunk/dune/localfunctions/generic/quadrature/gaussquadrature.hh
> ===================================================================
> --- trunk/dune/localfunctions/generic/quadrature/gaussquadrature.hh	2010-01-18 10:53:34 UTC (rev 717)
> +++ trunk/dune/localfunctions/generic/quadrature/gaussquadrature.hh	2010-01-18 13:25:13 UTC (rev 718)
> @@ -5,7 +5,7 @@
>  #include <alglib/gqgengauss.h>
>  #endif
>  
> -#include <dune/localfunctions/generic/math/field.hh>
> +#include <dune/localfunctions/utility/field.hh>
>  
>  #include <dune/grid/common/quadraturerules.hh>
>  
>
> Modified: trunk/dune/localfunctions/generic/quadrature/genericquadrature.hh
> ===================================================================
> --- trunk/dune/localfunctions/generic/quadrature/genericquadrature.hh	2010-01-18 10:53:34 UTC (rev 717)
> +++ trunk/dune/localfunctions/generic/quadrature/genericquadrature.hh	2010-01-18 13:25:13 UTC (rev 718)
> @@ -5,7 +5,7 @@
>  #include <dune/grid/genericgeometry/topologytypes.hh>
>  
>  #include <dune/localfunctions/generic/quadrature/quadrature.hh>
> -#include <dune/localfunctions/generic/common/topologyfactory.hh>
> +#include <dune/localfunctions/utility/topologyfactory.hh>
>  
>  namespace Dune
>  {
>
> Modified: trunk/dune/localfunctions/generic/quadrature/lobattoquadrature.hh
> ===================================================================
> --- trunk/dune/localfunctions/generic/quadrature/lobattoquadrature.hh	2010-01-18 10:53:34 UTC (rev 717)
> +++ trunk/dune/localfunctions/generic/quadrature/lobattoquadrature.hh	2010-01-18 13:25:13 UTC (rev 718)
> @@ -9,7 +9,7 @@
>  
>  #include <dune/common/static_assert.hh>
>  
> -#include <dune/localfunctions/generic/math/field.hh>
> +#include <dune/localfunctions/utility/field.hh>
>  
>  #include <dune/localfunctions/generic/quadrature/genericquadrature.hh>
>  
>
> Modified: trunk/dune/localfunctions/generic/quadrature/quadrature.hh
> ===================================================================
> --- trunk/dune/localfunctions/generic/quadrature/quadrature.hh	2010-01-18 10:53:34 UTC (rev 717)
> +++ trunk/dune/localfunctions/generic/quadrature/quadrature.hh	2010-01-18 13:25:13 UTC (rev 718)
> @@ -5,7 +5,7 @@
>  
>  #include <dune/common/fvector.hh>
>  #include <dune/common/geometrytype.hh>
> -#include <dune/localfunctions/generic/math/field.hh>
> +#include <dune/localfunctions/utility/field.hh>
>  
>  namespace Dune
>  {
>
> Modified: trunk/dune/localfunctions/generic/raviartthomasbasis/interpolation.hh
> ===================================================================
> --- trunk/dune/localfunctions/generic/raviartthomasbasis/interpolation.hh	2010-01-18 10:53:34 UTC (rev 717)
> +++ trunk/dune/localfunctions/generic/raviartthomasbasis/interpolation.hh	2010-01-18 13:25:13 UTC (rev 718)
> @@ -9,14 +9,14 @@
>  #include <dune/grid/genericgeometry/referencemappings.hh>
>  #include <dune/grid/genericgeometry/referenceelements.hh>
>  
> -#include <dune/localfunctions/generic/common/topologyfactory.hh>
> -#include <dune/localfunctions/generic/common/interpolationhelper.hh>
> -#include <dune/localfunctions/generic/math/matrix.hh>
> +#include <dune/localfunctions/utility/topologyfactory.hh>
> +#include <dune/localfunctions/utility/interpolationhelper.hh>
> +#include <dune/localfunctions/utility/matrix.hh>
>  #include <dune/localfunctions/common/localkey.hh>
>  
>  #include <dune/localfunctions/generic/quadrature/gaussquadrature.hh>
>  
> -#include <dune/localfunctions/generic/common/polynomialbasis.hh>
> +#include <dune/localfunctions/utility/polynomialbasis.hh>
>  #include <dune/localfunctions/generic/orthonormalbasis/orthonormalbasis.hh>
>  
>  
>
> Modified: trunk/dune/localfunctions/generic/raviartthomasbasis/raviartthomasbasis.hh
> ===================================================================
> --- trunk/dune/localfunctions/generic/raviartthomasbasis/raviartthomasbasis.hh	2010-01-18 10:53:34 UTC (rev 717)
> +++ trunk/dune/localfunctions/generic/raviartthomasbasis/raviartthomasbasis.hh	2010-01-18 13:25:13 UTC (rev 718)
> @@ -4,7 +4,7 @@
>  #include <fstream>
>  #include <dune/common/exceptions.hh>
>  
> -#include <dune/localfunctions/generic/common/defaultbasisfactory.hh>
> +#include <dune/localfunctions/utility/defaultbasisfactory.hh>
>  #include <dune/localfunctions/generic/raviartthomasbasis/interpolation.hh>
>  #include <dune/localfunctions/generic/raviartthomasbasis/raviartthomasprebasis.hh>
>  
>
> Modified: trunk/dune/localfunctions/generic/raviartthomasbasis/raviartthomasprebasis.hh
> ===================================================================
> --- trunk/dune/localfunctions/generic/raviartthomasbasis/raviartthomasprebasis.hh	2010-01-18 10:53:34 UTC (rev 717)
> +++ trunk/dune/localfunctions/generic/raviartthomasbasis/raviartthomasprebasis.hh	2010-01-18 13:25:13 UTC (rev 718)
> @@ -3,10 +3,10 @@
>  #include <fstream>
>  #include <utility>
>  
> -#include <dune/localfunctions/generic/math/matrix.hh>
> +#include <dune/localfunctions/utility/matrix.hh>
>  #include <dune/grid/genericgeometry/topologytypes.hh>
>  
> -#include <dune/localfunctions/generic/common/polynomialbasis.hh>
> +#include <dune/localfunctions/utility/polynomialbasis.hh>
>  
>  namespace Dune 
>  {
>
> Modified: trunk/dune/localfunctions/generic/raviartthomasbasis/test.cc
> ===================================================================
> --- trunk/dune/localfunctions/generic/raviartthomasbasis/test.cc	2010-01-18 10:53:34 UTC (rev 717)
> +++ trunk/dune/localfunctions/generic/raviartthomasbasis/test.cc	2010-01-18 13:25:13 UTC (rev 718)
> @@ -1,7 +1,7 @@
>  #include <config.h>
> -#include <dune/localfunctions/generic/math/field.hh>
> +#include <dune/localfunctions/utility/field.hh>
>  #include <dune/localfunctions/generic/raviartthomasbasis/raviartthomasbasis.hh>
> -#include <dune/localfunctions/generic/common/basisprint.hh>
> +#include <dune/localfunctions/utility/basisprint.hh>
>  
>  #if HAVE_ALGLIB
>    typedef amp::ampf< 128 > StorageField;
>
> Modified: trunk/dune/localfunctions/generic/raviartthomasfiniteelement.hh
> ===================================================================
> --- trunk/dune/localfunctions/generic/raviartthomasfiniteelement.hh	2010-01-18 10:53:34 UTC (rev 717)
> +++ trunk/dune/localfunctions/generic/raviartthomasfiniteelement.hh	2010-01-18 13:25:13 UTC (rev 718)
> @@ -1,7 +1,7 @@
>  #ifndef DUNE_RAVIARTTHOMASFINITEELEMENT_HH
>  #define DUNE_RAVIARTTHOMASFINITEELEMENT_HH
>  
> -#include <dune/localfunctions/generic/common/localfiniteelement.hh>
> +#include <dune/localfunctions/utility/localfiniteelement.hh>
>  #include <dune/localfunctions/generic/raviartthomasbasis/raviartthomasbasis.hh>
>  
>  namespace Dune 
>
> Modified: trunk/dune/localfunctions/test/testgenericfem.cc
> ===================================================================
> --- trunk/dune/localfunctions/test/testgenericfem.cc	2010-01-18 10:53:34 UTC (rev 717)
> +++ trunk/dune/localfunctions/test/testgenericfem.cc	2010-01-18 13:25:13 UTC (rev 718)
> @@ -12,7 +12,7 @@
>  
>  #include <dune/common/function.hh>
>  
> -#include <dune/localfunctions/generic/math/gmpfield.hh>
> +#include <dune/localfunctions/utility/gmpfield.hh>
>  
>  // Lagrange type elements
>  #include <dune/localfunctions/generic/lagrangefiniteelement.hh>
>
> Copied: trunk/dune/localfunctions/utility (from rev 717, trunk/dune/localfunctions/generic/common)
>
> Modified: trunk/dune/localfunctions/utility/Makefile.am
> ===================================================================
> --- trunk/dune/localfunctions/generic/common/Makefile.am	2010-01-18 10:53:34 UTC (rev 717)
> +++ trunk/dune/localfunctions/utility/Makefile.am	2010-01-18 13:25:13 UTC (rev 718)
> @@ -1,11 +1,12 @@
> -commondir = $(includedir)/dune/localfunctions/generic/common
> +utilitydir = $(includedir)/dune/localfunctions/generic/utility
>  
> -common_HEADERS = basisevaluator.hh       localfiniteelement.hh  \
> -                 basismatrix.hh          monomialbasis.hh       \
> -                 basisprint.hh           multiindex.hh          \
> -                 coeffmatrix.hh          polynomialbasis.hh     \
> -                 defaultbasisfactory.hh  tensor.hh              \
> -                 dglocalcoefficients.hh  topologyfactory.hh     \
> -                 interpolationhelper.hh  l2interpolation.hh
> +utility_HEADERS = basisevaluator.hh       localfiniteelement.hh  \
> +                  basismatrix.hh          monomialbasis.hh       \
> +                  basisprint.hh           multiindex.hh          \
> +                  coeffmatrix.hh          polynomialbasis.hh     \
> +                  defaultbasisfactory.hh  tensor.hh              \
> +                  dglocalcoefficients.hh  topologyfactory.hh     \
> +                  interpolationhelper.hh  l2interpolation.hh     \
> +                  field.hh gmpfield.hh matrix.hh
>  
>  include $(top_srcdir)/am/global-rules
>
> Modified: trunk/dune/localfunctions/utility/basisevaluator.hh
> ===================================================================
> --- trunk/dune/localfunctions/generic/common/basisevaluator.hh	2010-01-18 10:53:34 UTC (rev 717)
> +++ trunk/dune/localfunctions/utility/basisevaluator.hh	2010-01-18 13:25:13 UTC (rev 718)
> @@ -8,11 +8,11 @@
>  
>  #include <dune/grid/genericgeometry/topologytypes.hh>
>  
> -#include <dune/localfunctions/generic/math/field.hh>
> +#include <dune/localfunctions/utility/field.hh>
>  
> -#include <dune/localfunctions/generic/common/multiindex.hh>
> +#include <dune/localfunctions/utility/multiindex.hh>
>  
> -#include <dune/localfunctions/generic/common/tensor.hh>
> +#include <dune/localfunctions/utility/tensor.hh>
>  
>  namespace Dune
>  {
>
> Modified: trunk/dune/localfunctions/utility/basismatrix.hh
> ===================================================================
> --- trunk/dune/localfunctions/generic/common/basismatrix.hh	2010-01-18 10:53:34 UTC (rev 717)
> +++ trunk/dune/localfunctions/utility/basismatrix.hh	2010-01-18 13:25:13 UTC (rev 718)
> @@ -4,9 +4,9 @@
>  #include <fstream>
>  #include <dune/common/exceptions.hh>
>  
> -#include <dune/localfunctions/generic/math/matrix.hh>
> -#include <dune/localfunctions/generic/common/monomialbasis.hh>
> -#include <dune/localfunctions/generic/common/polynomialbasis.hh>
> +#include <dune/localfunctions/utility/matrix.hh>
> +#include <dune/localfunctions/utility/monomialbasis.hh>
> +#include <dune/localfunctions/utility/polynomialbasis.hh>
>  
>  namespace Dune
>  {
>
> Modified: trunk/dune/localfunctions/utility/basisprint.hh
> ===================================================================
> --- trunk/dune/localfunctions/generic/common/basisprint.hh	2010-01-18 10:53:34 UTC (rev 717)
> +++ trunk/dune/localfunctions/utility/basisprint.hh	2010-01-18 13:25:13 UTC (rev 718)
> @@ -1,7 +1,7 @@
>  #ifndef BASISPRINT
>  #define BASISPRINT
> -#include <dune/localfunctions/generic/common/multiindex.hh>
> -#include <dune/localfunctions/generic/common/polynomialbasis.hh>
> +#include <dune/localfunctions/utility/multiindex.hh>
> +#include <dune/localfunctions/utility/polynomialbasis.hh>
>  namespace Dune {
>    /**********************************************
>     * Methods for printing a PolynomialBasis.
>
> Modified: trunk/dune/localfunctions/utility/coeffmatrix.hh
> ===================================================================
> --- trunk/dune/localfunctions/generic/common/coeffmatrix.hh	2010-01-18 10:53:34 UTC (rev 717)
> +++ trunk/dune/localfunctions/utility/coeffmatrix.hh	2010-01-18 13:25:13 UTC (rev 718)
> @@ -4,8 +4,8 @@
>  #include <iostream>
>  #include <vector>
>  #include <dune/common/fvector.hh>
> -#include <dune/localfunctions/generic/math/field.hh>
> -#include <dune/localfunctions/generic/common/tensor.hh>
> +#include <dune/localfunctions/utility/field.hh>
> +#include <dune/localfunctions/utility/tensor.hh>
>  
>  namespace Dune 
>  {
>
> Modified: trunk/dune/localfunctions/utility/defaultbasisfactory.hh
> ===================================================================
> --- trunk/dune/localfunctions/generic/common/defaultbasisfactory.hh	2010-01-18 10:53:34 UTC (rev 717)
> +++ trunk/dune/localfunctions/utility/defaultbasisfactory.hh	2010-01-18 13:25:13 UTC (rev 718)
> @@ -4,8 +4,8 @@
>  #include <fstream>
>  #include <dune/common/exceptions.hh>
>  
> -#include <dune/localfunctions/generic/common/basismatrix.hh>
> -#include <dune/localfunctions/generic/common/topologyfactory.hh>
> +#include <dune/localfunctions/utility/basismatrix.hh>
> +#include <dune/localfunctions/utility/topologyfactory.hh>
>  
>  namespace Dune
>  {
>
> Modified: trunk/dune/localfunctions/utility/dglocalcoefficients.hh
> ===================================================================
> --- trunk/dune/localfunctions/generic/common/dglocalcoefficients.hh	2010-01-18 10:53:34 UTC (rev 717)
> +++ trunk/dune/localfunctions/utility/dglocalcoefficients.hh	2010-01-18 13:25:13 UTC (rev 718)
> @@ -4,7 +4,7 @@
>  #include <cassert>
>  #include <vector>
>  
> -#include <dune/localfunctions/generic/common/topologyfactory.hh>
> +#include <dune/localfunctions/utility/topologyfactory.hh>
>  #include <dune/localfunctions/common/localkey.hh>
>  
>  namespace Dune
>
> Copied: trunk/dune/localfunctions/utility/field.hh (from rev 717, trunk/dune/localfunctions/generic/math/field.hh)
> ===================================================================
> --- trunk/dune/localfunctions/utility/field.hh	                        (rev 0)
> +++ trunk/dune/localfunctions/utility/field.hh	2010-01-18 13:25:13 UTC (rev 718)
> @@ -0,0 +1,395 @@
> +#ifndef DUNE_FIELD_HH
> +#define DUNE_FIELD_HH
> +
> +#if HAVE_ALGLIB
> +#include <alglib/amp.h>
> +#endif
> +#if HAVE_GMP
> +#include <dune/localfunctions/utility/gmpfield.hh>
> +#endif
> +
> +#include <dune/common/fvector.hh>
> +
> +namespace Dune
> +{
> +
> +  // Unity
> +  // -----
> +
> +  /** 
> +   * @brief A class representing the unit of a given Field
> +   *
> +   * This class can be used to assign the unit element to an
> +   * instance of a given Field also operators for +/- with
> +   * unit element are provided. Also 1/f can be evaluated.
> +   * Through specialization this class can be used also in the case that the
> +   * integer 1 is not automatically converted to the unit
> +   * element of the Field - the default implementation
> +   **/
> +  template< class Field >
> +  struct Unity
> +  {
> +    operator Field () const
> +    {
> +      return Field( 1 );
> +    }
> +  };
> +
> +  template< class Field >
> +  Field operator+ ( const Unity< Field > &u, const Field &f )
> +  {
> +    return (Field)u + f;
> +  }
> +
> +  template< class Field >
> +  Field operator- ( const Unity< Field > &u, const Field &f )
> +  {
> +    return (Field)u - f;
> +  }
> +
> +  template< class Field >
> +  Field operator* ( const Unity< Field > &u, const Field &f )
> +  {
> +    return f;
> +  }
> +
> +  template< class Field >
> +  Field operator/ ( const Unity< Field > &u, const Field &f )
> +  {
> +    return (Field)u / f;
> +  }
> +
> +
> +
> +  // Zero
> +  // ----
> +
> +  /** 
> +   * @brief A class representing the zero of a given Field
> +   *
> +   * This class can be used to assign the zero element to an
> +   * instance of a given Field. An epsilon is also
> +   * provided for the comparison operators.
> +   * This class can be used also in the case that the
> +   * integer 0 is not automatically converted to the zero
> +   * element of the Field and the epsilon can be changed
> +   * depending on the accuracy of the Field type.
> +   **/
> +  template< class Field >
> +  struct Zero
> +  {
> +    operator Field () const
> +    {
> +      return Field( 0 );
> +    }
> +    static const Field epsilon()
> +    {
> +      return Field(1e-12);
> +    }
> +  };
> +#if HAVE_ALGLIB
> +  template< unsigned int precision >
> +  struct Zero< amp::ampf< precision > >
> +  {
> +    typedef amp::ampf< precision > Field;
> +    operator Field () const
> +    {
> +      return Field( 0 );
> +    }
> +    static const Field epsilon()
> +    {
> +      return Field(1e-20);
> +    }
> +  };
> +#endif
> +#if HAVE_GMP
> +  template< unsigned int precision >
> +  struct Zero< GMPField< precision > >
> +  {
> +    typedef GMPField< precision > Field;
> +    operator Field () const
> +    {
> +      return Field( 0 );
> +    }
> +    static const Field epsilon()
> +    {
> +      return Field(1e-20);
> +    }
> +  };
> +#endif
> +
> +  template< class Field >
> +  inline bool operator == ( const Zero< Field > &, const Field &f )
> +  {
> +    return ( f < Zero<Field>::epsilon() && f > -Zero<Field>::epsilon() );
> +  }
> +
> +  template< class Field >
> +  inline bool operator == ( const Field &f, const Zero< Field > &z)
> +  {
> +    return ( z == f );
> +  }
> +
> +  template< class Field >
> +  inline bool operator< ( const Zero< Field > &, const Field &f )
> +  {
> +    return f > Zero<Field>::epsilon();
> +  }
> +
> +  template< class Field >
> +  inline bool operator< ( const Field &f, const Zero< Field > & )
> +  {
> +    return f < -Zero<Field>::epsilon();
> +  }
> +
> +  template< class Field >
> +  inline bool operator> ( const Zero< Field > &z, const Field &f )
> +  {
> +    return f < z;
> +  }
> +
> +  template< class Field >
> +  inline bool operator> ( const Field &f, const Zero< Field > &z )
> +  {
> +    return z < f;
> +  }
> +
> +
> +  // field_cast
> +  // ----------
> +
> +  /**
> +   * @brief a helper class to cast from one field
> +   *        to another
> +   *
> +   * This cast can be used for assignement between
> +   * different field types, including for example
> +   * between FieldVectors with different fields.
> +   * Specially the conversion from a special type
> +   * e.g. gmp to build in types are provided, the 
> +   * other direction can be more easily handled by
> +   * the special field type implementation.
> +   **/
> +  template< class F2, class F1 >
> +  inline void field_cast ( const F1 &f1, F2 &f2 )
> +  {
> +    f2 = f1;
> +  }
> +
> +#if HAVE_ALGLIB
> +  template< unsigned int precision >
> +  inline void field_cast ( const amp::ampf< precision > &f1, double &f2 )
> +  {
> +    f2 = f1.toDouble();
> +  }
> +
> +  template< unsigned int precision >
> +  inline void field_cast ( const amp::ampf< precision > &f1, long double &f2 )
> +  {
> +    f2 = f1.toDouble();
> +  }
> +#endif
> +
> +#if HAVE_GMP
> +  template< unsigned int precision >
> +  inline void field_cast ( const Dune::GMPField< precision > &f1, double &f2 )
> +  {
> +    f2 = f1.get_d();
> +  }
> +
> +  template< unsigned int precision >
> +  inline void field_cast ( const Dune::GMPField< precision > &f1, long double &f2 )
> +  {
> +    f2 = f1.get_d();
> +  }
> +#endif
> +
> +  template< class F2, class F1, int dim >
> +  inline void field_cast ( const Dune::FieldVector< F1, dim > &f1, Dune::FieldVector< F2, dim > &f2 )
> +  {
> +    for( int d = 0; d < dim; ++d )
> +      field_cast( f1[ d ], f2[ d ] );
> +  }
> +  template< class F2, class F1 >
> +  inline void field_cast ( const Dune::FieldVector< F1, 1 > &f1, F2 &f2 )
> +  {
> +    field_cast( f1[ 0 ], f2 );
> +  }
> +  template< class F2, class F1 >
> +  inline void field_cast ( const F1 &f1, Dune::FieldVector< F2, 1 > &f2 )
> +  {
> +    field_cast( f1, f2[ 0 ] );
> +  }
> +
> +  template< class F2, class F1, int rdim, int cdim >
> +  inline void field_cast ( const Dune::FieldMatrix< F1, rdim, cdim > &f1, Dune::FieldMatrix< F2, rdim, cdim > &f2 )
> +  {
> +    for( int r = 0; r < rdim; ++r )
> +      field_cast( f1[ r ], f2[ r ] );
> +  }
> +  template< class F2, class F1 >
> +  inline void field_cast ( const Dune::FieldMatrix<F1,1,1> &f1, Dune::FieldMatrix< F2, 1,1 > &f2 )
> +  {
> +    field_cast( f1[ 0 ][ 0 ], f2[ 0 ][ 0 ] );
> +  }
> +  template< class F2, class F1 >
> +  inline void field_cast ( const Dune::FieldMatrix< F1, 1,1 > &f1, F2 &f2 )
> +  {
> +    field_cast( f1[ 0 ][ 0 ], f2 );
> +  }
> +  template< class F2, class F1 >
> +  inline void field_cast ( const F1 &f1, Dune::FieldMatrix< F2, 1,1 > &f2 )
> +  {
> +    field_cast( f1, f2[ 0 ][ 0 ] );
> +  }
> +  template< class F2, class F1 >
> +  inline void field_cast ( const Dune::FieldVector<F1,1> &f1, Dune::FieldMatrix< F2, 1,1 > &f2 )
> +  {
> +    field_cast( f1[ 0 ], f2[ 0 ][ 0 ] );
> +  }
> +  template< class F2, class F1 >
> +  inline void field_cast ( const Dune::FieldMatrix<F1,1,1> &f1, Dune::FieldVector< F2, 1 > &f2 )
> +  {
> +    field_cast( f1[ 0 ][ 0 ], f2[ 0 ] );
> +  }
> +
> +  template< class F2, class F1 >
> +  inline void field_cast ( const Dune::FieldVector< F1, 1 > &f1, Dune::FieldVector<F2, 1> &f2 )
> +  {
> +    field_cast( f1[ 0 ], f2[ 0 ] );
> +  }
> +
> +
> +  template< class F2,class F1 > 
> +  inline F2 field_cast ( const F1 &f1 )
> +  {
> +    F2 f2;
> +    field_cast( f1, f2 );
> +    return f2;
> +  }
> +
> +  template< class F2,class F1,int dim > 
> +  inline Dune::FieldVector<F2,dim> field_cast ( const Dune::FieldVector<F1,dim> &f1 )
> +  {
> +    Dune::FieldVector<F2,dim> f2;
> +    field_cast( f1, f2 );
> +    return f2;
> +  }
> +
> +  template< class F2,class F1,int dim1, int dim2> 
> +  inline Dune::FieldMatrix<F2,dim1,dim2> field_cast ( const Dune::FieldMatrix<F1,dim1,dim2> &f1 )
> +  {
> +    Dune::FieldMatrix<F2,dim1,dim2> f2;
> +    field_cast( f1, f2 );
> +    return f2;
> +  }
> +
> +  // Precision
> +  // this is not a perfect solution to obtain the
> +  // precision of a field - definition is not clear
> +  // to be removed
> +  // ---------
> +
> +  template <class Field>
> +  struct Precision;
> +
> +  template<>
> +  struct Precision< double >
> +  {
> +    static const unsigned int value = 64;
> +  };
> +
> +  template<>
> +  struct Precision< long double >
> +  {
> +    static const unsigned int value = 80;
> +  };
> +
> +  template<>
> +  struct Precision< float >
> +  {
> +    static const unsigned int value = 32;
> +  };
> +
> +#if HAVE_ALGLIB
> +  template< unsigned int precision >
> +  struct Precision< amp::ampf< precision > >
> +  {
> +    static const unsigned int value = precision;
> +  };
> +#endif
> +#if HAVE_GMP
> +  template< unsigned int precision >
> +  struct Precision< GMPField< precision > >
> +  {
> +    static const unsigned int value = precision;
> +  };
> +#endif
> +
> +  // ComputeField
> +  // ------------
> +
> +  template <class Field,unsigned int sum>
> +  struct ComputeField 
> +  {
> +    typedef Field Type;
> +  };
> +
> +#if HAVE_ALGLIB
> +  template< unsigned int precision, unsigned int sum >
> +  struct ComputeField< amp::ampf< precision >, sum >
> +  {
> +    typedef amp::ampf<precision+sum> Type;
> +  };
> +#endif
> +#if HAVE_GMP
> +  template< unsigned int precision, unsigned int sum >
> +  struct ComputeField< GMPField< precision >, sum >
> +  {
> +    typedef GMPField<precision+sum> Type;
> +  };
> +#endif
> +}
> +
> +// to be moved to different location...
> +namespace std
> +{
> +
> +#if HAVE_ALGLIB
> +  template< unsigned int precision >
> +  inline ostream &
> +  operator<< ( ostream &out, 
> +               const amp::ampf< precision > &value )
> +  {
> +    return out << value.toDec();
> +  }
> +
> +  template< unsigned int precision >
> +  inline amp::ampf< precision > sqrt ( const amp::ampf< precision > &a )
> +  {
> +    return amp::sqrt( a );
> +  }
> +
> +  template< unsigned int precision >
> +  inline amp::ampf< precision > abs ( const amp::ampf< precision > &a )
> +  {
> +    return amp::abs( a );
> +  }
> +#endif
> +
> +#if HAVE_GMP
> +  template< unsigned int precision >
> +  inline Dune::GMPField< precision > sqrt ( const Dune::GMPField< precision > &a )
> +  {
> +    return ::sqrt( a );
> +  }
> +
> +  template< unsigned int precision >
> +  inline Dune::GMPField< precision > abs ( const Dune::GMPField< precision > &a )
> +  {
> +    return ::abs( a );
> +  }
> +#endif
> +}
> +
> +#endif // #ifndef DUNE_FIELD_HH
>
> Copied: trunk/dune/localfunctions/utility/gmpfield.hh (from rev 717, trunk/dune/localfunctions/generic/math/gmpfield.hh)
> ===================================================================
> --- trunk/dune/localfunctions/utility/gmpfield.hh	                        (rev 0)
> +++ trunk/dune/localfunctions/utility/gmpfield.hh	2010-01-18 13:25:13 UTC (rev 718)
> @@ -0,0 +1,93 @@
> +#ifndef DUNE_GMPFIELD_HH
> +#define DUNE_GMPFIELD_HH
> +
> +#if HAVE_GMP
> +
> +#include <gmpxx.h>
> +
> +namespace Dune
> +{
> +
> +  template< unsigned int precision >
> +  class GMPField
> +  : public mpf_class
> +  {
> +    typedef mpf_class Base;
> +
> +  public:
> +    GMPField ()
> +    : Base(0,precision)
> +    {}
> +
> +    template< class T >
> +    GMPField ( const T &v )
> +    : Base( v,precision )
> +    {}
> +
> +    /*
> +    GMPField &operator=(const GMPField &other)
> +    {
> +      Base(*this) = Base(other);
> +      return *this;
> +    }
> +    */
> +  };
> +
> +
> +
> +  template< unsigned int precision >
> +  inline GMPField< precision >
> +  operator+ ( const GMPField< precision > &a, const GMPField< precision > &b )
> +  {
> +    typedef mpf_class F;
> +    return ((const F &)a + (const F &)b);
> +  }
> +
> +  template< unsigned int precision >
> +  inline GMPField< precision >
> +  operator- ( const GMPField< precision > &a, const GMPField< precision > &b )
> +  {
> +    typedef mpf_class F;
> +    return ((const F &)a - (const F &)b);
> +  }
> +
> +  template< unsigned int precision >
> +  inline GMPField< precision >
> +  operator- ( const GMPField< precision > &a )
> +  {
> +    typedef mpf_class F;
> +    return -((const F &)a);
> +  }
> +
> +  template< unsigned int precision >
> +  inline GMPField< precision >
> +  operator* ( const GMPField< precision > &a, const GMPField< precision > &b )
> +  {
> +    typedef mpf_class F;
> +    return ((const F &)a * (const F &)b);
> +  }
> +
> +  template< unsigned int precision >
> +  inline GMPField< precision >
> +  operator/ ( const GMPField< precision > &a, const GMPField< precision > &b )
> +  {
> +    typedef mpf_class F;
> +    return ((const F &)a / (const F &)b);
> +  }
> +
> +
> +
> +  template< unsigned int precision >
> +  inline std::ostream &
> +  operator<< ( std::ostream &out, const GMPField< precision > &value )
> +  {
> +    return out << value.get_d();
> +  }
> +
> +
> +}
> +
> +#endif // HAVE_GMP
> +
> +
> +#endif // #ifndef DUNE_MULTIPRECISION_HH
>
> Modified: trunk/dune/localfunctions/utility/interpolationhelper.hh
> ===================================================================
> --- trunk/dune/localfunctions/generic/common/interpolationhelper.hh	2010-01-18 10:53:34 UTC (rev 717)
> +++ trunk/dune/localfunctions/utility/interpolationhelper.hh	2010-01-18 13:25:13 UTC (rev 718)
> @@ -2,7 +2,7 @@
>  #define GENERIC_INTERPOLATIONHELPER_HH
>  
>  #include <dune/common/fvector.hh>
> -#include <dune/localfunctions/generic/math/field.hh>
> +#include <dune/localfunctions/utility/field.hh>
>  
>  namespace Dune 
>  {
>
> Modified: trunk/dune/localfunctions/utility/l2interpolation.hh
> ===================================================================
> --- trunk/dune/localfunctions/generic/common/l2interpolation.hh	2010-01-18 10:53:34 UTC (rev 717)
> +++ trunk/dune/localfunctions/utility/l2interpolation.hh	2010-01-18 13:25:13 UTC (rev 718)
> @@ -1,8 +1,8 @@
>  #ifndef DUNE_L2INTERPOLATION_HH
>  #define DUNE_L2INTERPOLATION_HH
>  
> -#include <dune/localfunctions/generic/common/topologyfactory.hh>
> -#include <dune/localfunctions/generic/math/matrix.hh>
> +#include <dune/localfunctions/utility/topologyfactory.hh>
> +#include <dune/localfunctions/utility/matrix.hh>
>  
>  #include <dune/localfunctions/generic/quadrature/gaussquadrature.hh>
>  
>
> Copied: trunk/dune/localfunctions/utility/matrix.hh (from rev 717, trunk/dune/localfunctions/generic/math/matrix.hh)
> ===================================================================
> --- trunk/dune/localfunctions/utility/matrix.hh	                        (rev 0)
> +++ trunk/dune/localfunctions/utility/matrix.hh	2010-01-18 13:25:13 UTC (rev 718)
> @@ -0,0 +1,260 @@
> +#ifndef DUNE_ALGLIB_MATRIX_HH
> +#define DUNE_ALGLIB_MATRIX_HH
> +
> +#include <cassert>
> +#include <vector>
> +
> +#include <dune/localfunctions/utility/field.hh>
> +// #include <dune/localfunctions/utility/vector.hh>
> +
> +#if HAVE_ALGLIB
> +#include <alglib/amp.h>
> +#include <alglib/inv.h>
> +#endif
> +
> +namespace Dune
> +{
> +
> +  template< class F, bool aligned = false >
> +  class LFEMatrix;
> +
> +
> +  template< class F, bool aligned >
> +  class LFEMatrix
> +  {
> +    typedef LFEMatrix< F, aligned > This;
> +    // typedef LFEVector< F > Row;
> +    typedef std::vector< F > Row;
> +    typedef std::vector<Row> RealMatrix;
> +
> +  public:
> +    typedef F Field;
> +
> +    operator const RealMatrix & () const
> +    {
> +      return matrix_;
> +    }
> +
> +    operator RealMatrix & ()
> +    {
> +      return matrix_;
> +    }
> +
> +    template <class Vector>
> +    void row( const unsigned int row, Vector &vec ) const
> +    {
> +      assert(row<rows());
> +      for (int i=0;i<cols();++i)
> +        field_cast(matrix_[row][i], vec[i]);
> +    }
> +
> +    const Field &operator() ( const unsigned int row, const unsigned int col ) const
> +    {
> +      assert(row<rows());
> +      assert(col<cols());
> +      return matrix_[ row ][ col ];
> +    }
> +
> +    Field &operator() ( const unsigned int row, const unsigned int col )
> +    {
> +      assert(row<rows());
> +      assert(col<cols());
> +      return matrix_[ row ][ col ];
> +    }
> +
> +    unsigned int rows () const
> +    {
> +      return rows_;
> +    }
> +
> +    unsigned int cols () const
> +    {
> +      return cols_;
> +    }
> +
> +    const Field *rowPtr ( const unsigned int row ) const
> +    {
> +      assert(row<rows());
> +      return &(matrix_[row][0]);
> +    }
> +
> +    Field *rowPtr ( const unsigned int row )
> +    {
> +      assert(row<rows());
> +      return &(matrix_[row][0]);
> +    }
> +
> +    void resize ( const unsigned int rows, const unsigned int cols )
> +    {
> +      matrix_.resize(rows);
> +      for (unsigned int i=0;i<rows;++i)
> +        matrix_[i].resize(cols);
> +      rows_ = rows;
> +      cols_ = cols;
> +    }
> +
> +    bool invert ()
> +    {
> +      assert( rows() == cols() );
> +      std::vector<unsigned int> p(rows());
> +      for (unsigned int j=0;j<rows();++j)
> +        p[j] = j;
> +      for (unsigned int j=0;j<rows();++j)
> +      {
> +        // pivot search
> +        unsigned int r = j;
> +        Field max = std::abs( (*this)(j,j) ); 
> +        for (unsigned int i=j+1;i<rows();++i)
> +        {
> +          if ( std::abs( (*this)(i,j) ) > max )
> +          {
> +            max = std::abs( (*this)(i,j) ); 
> +            r = i;
> +          }
> +        }
> +        if (max == 0)
> +          return false;
> +        // row swap
> +        if (r > j) 
> +        {
> +          for (unsigned int k=0;k<rows();++k)
> +            std::swap( (*this)(j,k), (*this)(r,k) );
> +          std::swap( p[j], p[r] );
> +        }
> +        // transformation
> +        Field hr = Unity<Field>()/(*this)(j,j);
> +        for (unsigned int i=0;i<rows();++i) 
> +          (*this)(i,j) *= hr;
> +        (*this)(j,j) = hr;
> +        for (unsigned int k=0;k<rows();++k) 
> +        {
> +          if (k==j) continue;
> +          for (unsigned int i=0;i<rows();++i)
> +          {
> +            if (i==j) continue;
> +            (*this)(i,k) -= (*this)(i,j)*(*this)(j,k);
> +          }
> +          (*this)(j,k) *= -hr;
> +        }
> +      }
> +      // column exchange
> +      Row hv(rows());
> +      for (unsigned int i=0;i<rows();++i)
> +      {
> +        for (unsigned int k=0;k<rows();++k)
> +          hv[ p[k] ] = (*this)(i,k);
> +        for (unsigned int k=0;k<rows();++k)
> +          (*this)(i,k) = hv[k];
> +      }
> +      return true;
> +    }
> +
> +  private:
> +    RealMatrix matrix_;
> +    unsigned int cols_,rows_;
> +  };
> +
> +#if HAVE_ALGLIB
> +  template< unsigned int precision, bool aligned >
> +  class LFEMatrix< amp::ampf< precision >, aligned >
> +  {
> +  public:
> +    typedef amp::ampf< precision > Field;
> +  private:
> +    typedef LFEMatrix< amp::ampf< precision >, aligned > This;
> +    typedef ap::template_2d_array< Field, aligned > RealMatrix;
> +
> +  public:
> +    operator const RealMatrix & () const
> +    {
> +      return matrix_;
> +    }
> +
> +    operator RealMatrix & ()
> +    {
> +      return matrix_;
> +    }
> +
> +    template <class Vector>
> +    void row( const unsigned int row, Vector &vec ) const
> +    {
> +      assert(row<rows());
> +      for (unsigned int i=0;i<cols();++i)
> +        field_cast(matrix_(row,i), vec[i]);
> +    }
> +
> +    const Field &operator() ( const unsigned int row, const unsigned int col ) const
> +    {
> +      assert(row<rows());
> +      assert(col<cols());
> +      return matrix_( row, col );
> +    }
> +
> +    Field &operator() ( const unsigned int row, const unsigned int col )
> +    {
> +      assert(row<rows());
> +      assert(col<cols());
> +      return matrix_( row, col );
> +    }
> +
> +    unsigned int rows () const
> +    {
> +      return matrix_.gethighbound( 1 )+1;
> +    }
> +
> +    unsigned int cols () const
> +    {
> +      return matrix_.gethighbound( 2 )+1;
> +    }
> +
> +    const Field *rowPtr ( const unsigned int row ) const
> +    {
> +      assert(row<rows());
> +      const int lastCol = matrix_.gethighbound( 2 );
> +      ap::const_raw_vector< Field > rowVector = matrix_.getrow( row, 0, lastCol );
> +      assert( (rowVector.GetStep() == 1) && (rowVector.GetLength() == lastCol+1) );
> +      return rowVector.GetData();
> +    }
> +
> +    Field *rowPtr ( const unsigned int row )
> +    {
> +      assert(row<rows());
> +      const int lastCol = matrix_.gethighbound( 2 );
> +      ap::raw_vector< Field > rowVector = matrix_.getrow( row, 0, lastCol );
> +      assert( (rowVector.GetStep() == 1) && (rowVector.GetLength() == lastCol+1) );
> +      return rowVector.GetData();
> +    }
> +
> +    void resize ( const unsigned int rows, const unsigned int cols )
> +    {
> +      matrix_.setbounds( 0, rows-1, 0, cols-1 );
> +    }
> +
> +    bool invert ()
> +    {
> +      assert( rows() == cols() );
> +      return inv::rmatrixinverse< precision >( matrix_, rows() );
> +    }
> +
> +  private:
> +    RealMatrix matrix_;
> +  };
> +#endif
> +
> +  template< class Field, bool aligned >
> +  inline std::ostream &operator<<(std::ostream &out, const LFEMatrix<Field,aligned> &mat) 
> +  {
> +    for (unsigned int r=0;r<mat.rows();++r)
> +    {
> +      out << field_cast<double>(mat(r,0));
> +      for (unsigned int c=1;c<mat.cols();++c) 
> +      {
> +        out << " , " << field_cast<double>(mat(r,c));
> +      }
> +      out << std::endl;
> +    }
> +    return out;
> +  }
> +}
> +
> +#endif // #ifndef DUNE_ALGLIB_MATRIX_HH
>
> Modified: trunk/dune/localfunctions/utility/monomialbasis.hh
> ===================================================================
> --- trunk/dune/localfunctions/generic/common/monomialbasis.hh	2010-01-18 10:53:34 UTC (rev 717)
> +++ trunk/dune/localfunctions/utility/monomialbasis.hh	2010-01-18 13:25:13 UTC (rev 718)
> @@ -8,11 +8,11 @@
>  
>  #include <dune/grid/genericgeometry/topologytypes.hh>
>  
> -#include <dune/localfunctions/generic/math/field.hh>
> +#include <dune/localfunctions/utility/field.hh>
>  
> -#include <dune/localfunctions/generic/common/topologyfactory.hh>
> -#include <dune/localfunctions/generic/common/multiindex.hh>
> -#include <dune/localfunctions/generic/common/tensor.hh>
> +#include <dune/localfunctions/utility/topologyfactory.hh>
> +#include <dune/localfunctions/utility/multiindex.hh>
> +#include <dune/localfunctions/utility/tensor.hh>
>  
>  namespace Dune
>  {
>
> Modified: trunk/dune/localfunctions/utility/multiindex.hh
> ===================================================================
> --- trunk/dune/localfunctions/generic/common/multiindex.hh	2010-01-18 10:53:34 UTC (rev 717)
> +++ trunk/dune/localfunctions/utility/multiindex.hh	2010-01-18 13:25:13 UTC (rev 718)
> @@ -6,7 +6,7 @@
>  
>  #include <dune/common/fvector.hh>
>  
> -#include <dune/localfunctions/generic/math/field.hh>
> +#include <dune/localfunctions/utility/field.hh>
>  
>  namespace Dune
>  {
>
> Modified: trunk/dune/localfunctions/utility/polynomialbasis.hh
> ===================================================================
> --- trunk/dune/localfunctions/generic/common/polynomialbasis.hh	2010-01-18 10:53:34 UTC (rev 717)
> +++ trunk/dune/localfunctions/utility/polynomialbasis.hh	2010-01-18 13:25:13 UTC (rev 718)
> @@ -7,10 +7,10 @@
>  
>  #include <dune/localfunctions/common/localbasis.hh>
>  
> -#include <dune/localfunctions/generic/common/coeffmatrix.hh>
> -#include <dune/localfunctions/generic/common/monomialbasis.hh>
> -#include <dune/localfunctions/generic/common/multiindex.hh>
> -#include <dune/localfunctions/generic/common/basisevaluator.hh>
> +#include <dune/localfunctions/utility/coeffmatrix.hh>
> +#include <dune/localfunctions/utility/monomialbasis.hh>
> +#include <dune/localfunctions/utility/multiindex.hh>
> +#include <dune/localfunctions/utility/basisevaluator.hh>
>  
>  namespace Dune
>  {
>
> Modified: trunk/dune/localfunctions/utility/tensor.hh
> ===================================================================
> --- trunk/dune/localfunctions/generic/common/tensor.hh	2010-01-18 10:53:34 UTC (rev 717)
> +++ trunk/dune/localfunctions/utility/tensor.hh	2010-01-18 13:25:13 UTC (rev 718)
> @@ -4,7 +4,7 @@
>  #include <vector>
>  #include <ostream>
>  
> -#include <dune/localfunctions/generic/math/field.hh>
> +#include <dune/localfunctions/utility/field.hh>
>  #include <dune/common/fvector.hh>
>  #include <dune/common/misc.hh>
>  
>
>
> _______________________________________________
> Dune-Commit mailing list
> Dune-Commit at dune-project.org
> http://lists.dune-project.org/mailman/listinfo/dune-commit
>   


-- 
************************************************************************
* Oliver Sander                ** email: sander at mi.fu-berlin.de        *
* Freie Universität Berlin     ** phone: + 49 (30) 838 75348           *
* Institut für Mathematik      ** URL  : page.mi.fu-berlin.de/~sander  *
* Arnimallee 6                 ** -------------------------------------*
* 14195 Berlin, Germany        ** Member of MATHEON (www.matheon.de)   *
************************************************************************




-- 
************************************************************************
* Oliver Sander                ** email: sander at mi.fu-berlin.de        *
* Freie Universität Berlin     ** phone: + 49 (30) 838 75348           *
* Institut für Mathematik      ** URL  : page.mi.fu-berlin.de/~sander  *
* Arnimallee 6                 ** -------------------------------------*
* 14195 Berlin, Germany        ** Member of MATHEON (www.matheon.de)   *
************************************************************************





More information about the Dune mailing list