[Dune] [Dune-Commit] dune-grid r7578 - trunk/dune/grid/genericgeometry
Christian Engwer
christi at uni-hd.de
Tue Mar 29 16:34:46 CEST 2011
Hi Martin,
I don't quite undestand, what happend here. How is the new
construction different from the previous one? Can you enlight me?
Thanks
Christian
On Tue, Mar 29, 2011 at 04:06:59PM +0200, mnolte at dune-project.org wrote:
> Author: mnolte
> Date: 2011-03-29 16:06:59 +0200 (Tue, 29 Mar 2011)
> New Revision: 7578
>
> Modified:
> trunk/dune/grid/genericgeometry/matrixhelper.hh
> Log:
> fix a problem with method overloading
>
>
> Modified: trunk/dune/grid/genericgeometry/matrixhelper.hh
> ===================================================================
> --- trunk/dune/grid/genericgeometry/matrixhelper.hh 2011-03-21 23:22:41 UTC (rev 7577)
> +++ trunk/dune/grid/genericgeometry/matrixhelper.hh 2011-03-29 14:06:59 UTC (rev 7578)
> @@ -1,6 +1,8 @@
> #ifndef DUNE_GENERICGEOMETRY_MATRIXHELPER_HH
> #define DUNE_GENERICGEOMETRY_MATRIXHELPER_HH
>
> +#include <cmath>
> +
> #include <dune/common/fvector.hh>
> #include <dune/common/fmatrix.hh>
> #include <dune/common/static_assert.hh>
> @@ -11,11 +13,31 @@
> namespace GenericGeometry
> {
>
> + // FieldHelper
> + // -----------
> +
> + template< class Field >
> + struct FieldHelper
> + {
> + static Field abs ( const Field &x ) { return std::abs( x ); }
> + };
> +
> +
> +
> + // MatrixHelper
> + // ------------
> +
> template< class Traits >
> struct MatrixHelper
> {
> - typedef typename Traits :: ctype FieldType;
> + typedef typename Traits::ctype FieldType;
>
> + static FieldType abs ( const FieldType &x )
> + {
> + //return std::abs( x );
> + return FieldHelper< FieldType >::abs( x );
> + }
> +
> template< int m, int n >
> static void
> Ax ( const typename Traits :: template Matrix< m, n > :: type &A,
> @@ -373,7 +395,7 @@
> if( (n == 2) && (m == 2) )
> {
> // Special implementation for 2x2 matrices: faster and more stable
> - return std::abs( A[ 0 ][ 0 ]*A[ 1 ][ 1 ] - A[ 1 ][ 0 ]*A[ 0 ][ 1 ] );
> + return abs( A[ 0 ][ 0 ]*A[ 1 ][ 1 ] - A[ 1 ][ 0 ]*A[ 0 ][ 1 ] );
> }
> else if( (n == 3) && (m == 3) )
> {
> @@ -381,7 +403,7 @@
> const FieldType v0 = A[ 0 ][ 1 ] * A[ 1 ][ 2 ] - A[ 1 ][ 1 ] * A[ 0 ][ 2 ];
> const FieldType v1 = A[ 0 ][ 2 ] * A[ 1 ][ 0 ] - A[ 1 ][ 2 ] * A[ 0 ][ 0 ];
> const FieldType v2 = A[ 0 ][ 0 ] * A[ 1 ][ 1 ] - A[ 1 ][ 0 ] * A[ 0 ][ 1 ];
> - return std::abs( v0 * A[ 2 ][ 0 ] + v1 * A[ 2 ][ 1 ] + v2 * A[ 2 ][ 2 ] );
> + return abs( v0 * A[ 2 ][ 0 ] + v1 * A[ 2 ][ 1 ] + v2 * A[ 2 ][ 2 ] );
> }
> else if( n >= m )
> {
> @@ -438,7 +460,7 @@
> ret[ 1 ][ 1 ] = A[ 0 ][ 0 ] * detInv;
> ret[ 1 ][ 0 ] = -A[ 1 ][ 0 ] * detInv;
> ret[ 0 ][ 1 ] = -A[ 0 ][ 1 ] * detInv;
> - return std::abs( det );
> + return abs( det );
> }
> else
> {
> @@ -464,8 +486,8 @@
> }
> };
>
> - }
> + } // namespace GenericGeometry
>
> -}
> +} // namespace Dune
>
> #endif // #ifndef DUNE_GENERICGEOMETRY_MATRIXHELPER_HH
>
>
> _______________________________________________
> Dune-Commit mailing list
> Dune-Commit at dune-project.org
> http://lists.dune-project.org/mailman/listinfo/dune-commit
>
More information about the Dune
mailing list