#1331 Transition from double to FieldTraits<field_type>::real_type
Metadata
Property | Value |
---|---|
Reported by | Christian Engwer (christi@conan.iwr.uni-heidelberg.de) |
Reported at | Aug 15, 2013 09:33 |
Type | Bug Report |
Version | 2.2 |
Operating System | Unspecified / All |
Description
There are several places where we still use an explicit type of double instead of the generic FieldTraits<field_type>::real_type. Most Matrix implementations still use double for their norm, the same holds in several places in the solvers. There are some further suspect places.
Not all usage of double is a problem, as the interfaces to external libraries (like superlu) use specilizations for double.
Here is a first list, not necessarily complete:
./dune/istl/superlu.hh:587: double def0=d.two_norm();
./dune/istl/schwarz.hh:164: virtual double norm (const X& x)
./dune/istl/novlpschwarz.hh:289: virtual double norm (const X& x)
./dune/istl/solvers.hh:142: double def0 = _sp.norm(b);
./dune/istl/solvers.hh:166: double defnew=_sp.norm(b); // comp defect norm
./dune/istl/solvers.hh:281: double def0 = _sp.norm(b); // compute norm
./dune/istl/solvers.hh:304: double defnew=_sp.norm(b); // comp defect norm
./dune/istl/solvers.hh:413: double def0 = _sp.norm(b); // compute norm
./dune/istl/solvers.hh:458: double defnew=_sp.norm(b); // comp defect norm
./dune/istl/solvers.hh:1439: double def0 = _sp.norm(b); // compute norm
./dune/istl/solvers.hh:1479: double defnew=_sp.norm(b); // comp defect norm
./dune/istl/solvers.hh:1523: double defnew=_sp.norm(b); // comp defect norm
./dune/istl/owneroverlapcopy.hh:432: double norm (const T1& x) const
./dune/istl/multitypeblockvector.hh:222: static double result (const T& a) { //result = sum of all elements' 2-norms
./dune/istl/multitypeblockvector.hh:285: double two_norm2() const {return MultiTypeBlockVector_Norm<mpl::size<type>::value,type>::result(*this);}
./dune/istl/multitypeblockvector.hh:290: double two_norm() const {return sqrt(this->two_norm2());}
./dune/istl/scalarproducts.hh:58: virtual double norm (const X& x) = 0;
./dune/istl/scalarproducts.hh:116: virtual double norm (const X& x)
./dune/istl/bcrsmatrix.hh:1178: double frobenius_norm2 () const
./dune/istl/bcrsmatrix.hh:1194: double frobenius_norm () const
./dune/istl/bcrsmatrix.hh:1200: double infinity_norm () const
./dune/istl/bcrsmatrix.hh:1216: double infinity_norm_real () const
./dune/istl/test/complexrhstest.cc:60: const double errorNorm = m_b.two_norm();
./dune/istl/test/matrixtest.cc:244: double frobenius_norm = matrix.frobenius_norm();
./dune/istl/scaledidmatrix.hh:347: double frobenius_norm () const
./dune/istl/scaledidmatrix.hh:353: double frobenius_norm2 () const
./dune/istl/scaledidmatrix.hh:359: double infinity_norm () const
./dune/istl/scaledidmatrix.hh:365: double infinity_norm_real () const
./dune/istl/matrix.hh:488: double frobenius_norm () const
./dune/istl/matrix.hh:494: double frobenius_norm2 () const
./dune/istl/matrix.hh:504: double infinity_norm () const
./dune/istl/matrix.hh:517: double infinity_norm_real () const