Skip to content
Snippets Groups Projects
  1. Jul 07, 2015
  2. Jul 01, 2015
    • Jö Fahlke's avatar
      [release][matrixmarket][ODR] Give the name MatrixMarketImpl to the anonymous · 1a19f1c1
      Jö Fahlke authored
      namespace.
      
      This namespace was probably meant to mark implementation details.  However it
      led to violations of the ODR (one definition rule), and to warnings about
      defined-but-unused functions (see below).
      
      To illustrate the problem consider the function template
      Dune::readMatrixMarket:
      
        template<typename T, typename A, int brows, int bcols>
        void readMatrixMarket(Dune::BCRSMatrix<Dune::FieldMatrix<T,brows,bcols>,A>& matrix,
                              std::istream& istr)
        {
          // ...
          readSparseEntries(matrix, istr, entries, header, NumericWrapper<T>());
        }
      
      The ODR states (§3.2/5):
      
        There can be more than one definition of a [...] non-static function
        template (14.5.6) [...] in a program provided that each definition appears
        in a different translation unit, and provided the definitions satisfy the
        following requirements.  Given such an entity named D defined in more than
        one translation unit, then
      
        - each definition of D shall consist of the same sequence of tokens; and
      
        - in each definition of D, corresponding names, looked up according to 3.4,
          shall refer to an entity defined within the definition of D, or shall
          refer to the same entity, after overload resolution (13.3) and after
          matching of partial template specialization (14.8.3), except that a name
          can refer to a const object with internal or no linkage if the object has
          the same literal type in all definitions of D, and the object is
          initialized with a constant expression (5.19), and the value (but not the
          address) of the object is used, and the object has the same value in all
          definitions of D; and
      
        [...]
      
      This is violated by e.g. both readSparseEntries, which is defined in the
      anonymous namespace.  Since it is not defined within readMatrixMarket, it must
      refer to the same entity in all translation units.  However, its name is
      effectively Dune::<unique>::readSparseEntries, where <unique> is unique to
      each translation unit, and thus it effectively refers to a different entity in
      each translation unit, and the program is ill-formed as soon as move than one
      translation unit does #include <dune/istl/matrixmarket.hh>.
      
      The warnings by g++-4.9 looked like this:
      ======================================================================
      g++ -std=c++11 -DHAVE_CONFIG_H -I. -I../../..  -pthread -I/home/joe/Projekte/pdelab-2.4/dune-common -I/home/joe/Projekte/pdelab-2.4/dune-common -I../../.. -I/usr/lib/openmpi/include -I/usr/lib/openmpi/include/openmpi -pthread -DMPIPP_H -DENABLE_MPI=1   -g -O3 -Wall -MT matrixmarkettest-matrixmarkettest.o -MD -MP -MF .deps/matrixmarkettest-matrixmarkettest.Tpo -c -o matrixmarkettest-matrixmarkettest.o `test -f 'matrixmarkettest.cc' || echo './'`matrixmarkettest.cc
      [...]
      In file included from matrixmarkettest.cc:11:0:
      ../../../dune/istl/matrixmarket.hh:501:10: warning: ‘void Dune::{anonymous}::readNextLine(std::istream&, std::ostringstream&, Dune::{anonymous}::LineType&)’ defined but not used [-Wunused-function]
           void readNextLine(std::istream& file, std::ostringstream&, LineType& type)
                ^
      In file included from matrixmarkettest.cc:11:0:
      ../../../dune/istl/matrixmarket.hh:601:19: warning: ‘std::istream& Dune::{anonymous}::operator>>(std::istream&, Dune::{anonymous}::NumericWrapper<Dune::{anonymous}::PatternDummy>&)’ defined but not used [-Wunused-function]
           std::istream& operator>>(std::istream& is, NumericWrapper<PatternDummy>& num)
                         ^
      ======================================================================
      1a19f1c1
    • Jö Fahlke's avatar
      [release][matrixmarket] Remove unused function readNextLine(). · c2a41b1c
      Jö Fahlke authored
      The function is in an anonymous namespace, and it is used nowhere inside
      dune-istl.
      c2a41b1c
    • Jö Fahlke's avatar
      [release] Fix ignore lists. · 2ee97f2a
      Jö Fahlke authored
      2ee97f2a
  3. Jun 17, 2015
    • Andreas Nüßing's avatar
      [bugfix] include the matrixmarket header to handle default argument · 925dbac3
      Andreas Nüßing authored
      The standard states (8.3.6/4) that adding default arguments in later
      function declarations are only valid for non-template functions.
      In matrixmarket.hh, the function template loadMatrixMarket is declared
      and a default argument for the last parameter is provided. In
      owneroverlapcopy.hh, OwnerOverlapCopyCommunication contains a friend
      declaration of loadMatrixMarket without the default parameter. If now
      owneroverlapcopy.hh is included before matrixmarket.hh, the friend
      declaration is the first declaration and the default parameter in
      matrixmarket.hh is invalid.
      By including matrixmarket.hh in owneroverlapcopy.hh, we make sure that
      the declaration which provides the default argument is always the first
      one.
      925dbac3
  4. Jun 11, 2015
    • Markus Blatt's avatar
      Makes vectorcommtest independent of dune-istl data types. · 0974d24e
      Markus Blatt authored
      This test actually does test the parallel functionality
      that is now contained in dune-common for quite some time.
      While it is using BlockVector this is not needed by the test.
      It works with any container supporting operator[].
      
      Therefore this commit gets rid of BlockVector and uses std::vector
      instead. This will allow us to move the test to dune-core subsequently.
      0974d24e
    • Markus Blatt's avatar
      [release] Do not assume a symmetric sparsity pattern in SymmetricDependency. · 05c0a63a
      Markus Blatt authored
      Previously, we assumed that if a_{ij} is stored in the sparse matrix
      then a_{ji} must be stored also and used mat[i][j] to access. If the entry
      was not stored then an exception somewhere in basearray.hh was thrown.
      Unfortunately knowing the cause for this exception is insider knowledge,
      seldomly leaked ;). In addition there is now reason to throw an expection here.
      
      With this commit we the find method on the row to search for the entry a_{ji}.
      If it is not present we simply treat it as being zero.
      05c0a63a
  5. Jun 01, 2015
  6. May 25, 2015
  7. May 14, 2015
  8. May 12, 2015
  9. May 07, 2015
  10. Apr 30, 2015
  11. Apr 28, 2015
  12. Apr 13, 2015
  13. Apr 07, 2015
  14. Mar 24, 2015
    • Emmanouil Kiagias's avatar
      Choose different codepath if METIS 5 is found. · a49ddaa9
      Emmanouil Kiagias authored and Christoph Grüninger's avatar Christoph Grüninger committed
      
      Updated how METIS_PartGraphRecursive is called in METIS version 5.
      In the new parameters NULL value is used where possible. Only one
      new parameter could not be set to NULL, it is the "ncon" (second argument).
      In the manual it says: "ncon: The number of balancing constraints.
      It should be at least 1." so 1 is used as its value.
      
      Also options with the new layout are passed in METIS_PartGraphRecursive
      initialized with the default values(default values also used in the
      current code: options[0]=0). Only one option was added manually:
      the METIS_OPTION_NUMBERING = numflag which is the same numflag parameter
      passed in the old version of METIS_PartGraphRecursive function.
      
      Signed-off-by: default avatarChristoph Grüninger <gruenich@dune-project.org>
      a49ddaa9
  15. Mar 10, 2015
  16. Feb 15, 2015
  17. Jan 23, 2015
  18. Jan 05, 2015
  19. Jan 04, 2015
  20. Dec 22, 2014
  21. Dec 18, 2014
    • Steffen Müthing's avatar
      [BCRSMatrix] Drop over-eager check in row access operator[] · 35b879c3
      Steffen Müthing authored
      When DUNE_ISTL_WITH_CHECKING is enabled, the BCRSMatrix throws an
      exception when trying to access a row that has no columns. This creates
      a problem in PDELab when using nested BCRSMatrices (as some people do
      for operator splitting in PDELab), where an off-diagonal BCRSMatrix
      block might be completely empty (i.e. have a correctly set up structure,
      but every row in the off-diagonal BCRSMatrix is empty. If the PDELab
      assembler then attempts to set a Dirichlet constraint, it has to access
      the row to set all columns in that row to zero, but the check in
      operator[] prevents it from doing so.
      
      So this patch just drops that check.
      35b879c3
  22. Dec 16, 2014
  23. Dec 15, 2014
    • Steffen Müthing's avatar
      [Infrastructure] Be more careful about field_type / real_type · 714cd554
      Steffen Müthing authored
      This patch removes the assumption that the field_type and / or real_type
      can always be implicitly converted to double and can be implicitly
      constructed from an int (in constructs like field_type d = 0;).
      
      This patch is required for compatibility with the FLOP counter in PDELab.
      714cd554
  24. Dec 08, 2014
  25. Nov 29, 2014
  26. Nov 28, 2014
  27. Nov 21, 2014
  28. Oct 30, 2014
Loading