Skip to content
Snippets Groups Projects
precision.hh 1.63 KiB
Newer Older
  • Learn to ignore specific revisions
  • Peter Bastian's avatar
    Peter Bastian committed
    // -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
    // vi: set et ts=4 sw=2 sts=2:
    
    #ifndef DUNE_PRECISION_HH
    #define DUNE_PRECISION_HH
    
    Peter Bastian's avatar
    Peter Bastian committed
    
    
    Oliver Sander's avatar
    Oliver Sander committed
    /** \file
     * \brief Various precision settings for calculations with FieldMatrix and FieldVector
     */
    
    
    Peter Bastian's avatar
    Peter Bastian committed
    #include <stdlib.h>
    
    namespace Dune {
    
    
    Markus Blatt's avatar
    Markus Blatt committed
          @addtogroup DenseMatVec
          @{
    
    Peter Bastian's avatar
    Peter Bastian committed
       */
    
    
    Markus Blatt's avatar
    Markus Blatt committed
      /**
       * @brief Precisions for calculations with FieldMatrix and FieldVector.
       */
    
      class FMatrixPrecision {
    
    Peter Bastian's avatar
    Peter Bastian committed
      public:
        //! return threshold to do pivoting
    
    Peter Bastian's avatar
    Peter Bastian committed
        {
          return _pivoting;
        }
    
        //! set pivoting threshold
    
        static void set_pivoting_limit (ctype pivthres)
    
    Peter Bastian's avatar
    Peter Bastian committed
        {
          _pivoting = pivthres;
        }
    
        //! return threshold to declare matrix singular
    
    Peter Bastian's avatar
    Peter Bastian committed
        {
          return _singular;
        }
    
        //! set singular threshold
    
        static void set_singular_limit (ctype singthres)
    
    Peter Bastian's avatar
    Peter Bastian committed
        {
          _singular = singthres;
        }
    
        //! return threshold to declare matrix singular
    
    Peter Bastian's avatar
    Peter Bastian committed
        {
          return _absolute;
        }
    
        //! set singular threshold
    
        static void set_absolute_limit (ctype absthres)
    
    Peter Bastian's avatar
    Peter Bastian committed
        {
          _absolute = absthres;
        }
    
      private:
        // just to demonstrate some state information
    
        static ctype _pivoting;
        static ctype _singular;
        static ctype _absolute;
    
    Peter Bastian's avatar
    Peter Bastian committed
      };
    
    
      ctype FMatrixPrecision<ctype>::_pivoting = 1E-8;
    
      ctype FMatrixPrecision<ctype>::_singular = 1E-14;
    
      ctype FMatrixPrecision<ctype>::_absolute = 1E-80;
    
    Peter Bastian's avatar
    Peter Bastian committed
    
      /** @} end documentation */
    
    } // end namespace
    
    #endif