SPQR uses methods only introduced in Suitesparse 4.3.0

So I researched my issue from !8 (merged) by diving into the suitesparse code:

Those methods here:

/home/dominic/dune/dune-istl/dune/istl/spqr.hh: In member function ‘virtual void Dune::SPQR<Dune::BCRSMatrix<Dune::FieldMatrix<K, n, p>, TA> >::apply(Dune::SPQR<Dune::BCRSMatrix<Dune::FieldMatrix<K, n, p>, TA> >::domain_type&, Dune::SPQR<Dune::BCRSMatrix<Dune::FieldMatrix<K, n, p>, TA> >::range_type&, Dune::InverseOperatorResult&)’:
/home/dominic/dune/dune-istl/dune/istl/spqr.hh:154:42: error: ‘cholmod_common’ has no member named ‘SPQR_flopcount’
         std::cout<<"Flops Taken: "<<cc_->SPQR_flopcount<<std::endl;
                                          ^
/home/dominic/dune/dune-istl/dune/istl/spqr.hh:155:44: error: ‘cholmod_common’ has no member named ‘SPQR_analyze_time’
         std::cout<<"Analysis Time: "<<cc_->SPQR_analyze_time<<" s"<<std::endl;
                                            ^
/home/dominic/dune/dune-istl/dune/istl/spqr.hh:156:45: error: ‘cholmod_common’ has no member named ‘SPQR_factorize_time’
         std::cout<<"Factorize Time: "<<cc_->SPQR_factorize_time<<" s"<<std::endl;
                                             ^
/home/dominic/dune/dune-istl/dune/istl/spqr.hh:157:45: error: ‘cholmod_common’ has no member named ‘SPQR_solve_time’
         std::cout<<"Backsolve Time: "<<cc_->SPQR_solve_time<<" s"<<std::endl;

were introduced in SuiteSparse 4.3.0. However, debian stable provides 4.2.1. So, I guess we should:

  • remove it
  • replace it
  • guard it. Pick your favorite!