When arpack++ is installed, multirhstest fails to compile: the condition estimate calculation can only handle double and float but it is instantiated here with a different type (AlignedNumber<double>). It should probably suppress its instantiation using Hybrid::ifElse(), the same way it suppressed instantiation of std::real() elsewhere.
Designs
Child items ...
Show closed items
Linked items 0
Link issues together to show that they're related.
Learn more.
@martin.nolte, @andreas.dedner: I've set the milestone to 2.6, since CGSolver is pretty important. At least at our university arpack is installed by default, and even if it isn't it is not uncommon for people to want to do eigenvalue computations with arpack in connection with dune.
On the other hand, besides the failing test the problem can only occur if you instantiate CGSolver with a non-double non-float type, so you may want to consider ignoring this problem for 2.6.0
I tried to extend the use of Hybrid::ifElse() to the actual eigenproblem. However, this does not keep Arpack from being instantiated with the incompatible type.
Is there a way to prevent the relevant section from being instantiated for unsuitable types?
(Disclaimer: I don't know the specific use case.). If the condition is given statically, i.e. as std::integral_constant<bool, x>, then the non-matching branch is not instantiated but non-dependent expressions will be. To avoid this you can pass values through the identity function provided as callback argument. Since this function is only known after instantiation of the callback it allows to delay other instantiations until then:
Weird enough, it seems to get this section to work I only need ifElse and no id's after all. I don't think anything about my setup changed though... Maybe I was thrown off by an error for having to access _verbose via this-> now.
Before merging, could someone with Arpack installed please confirm that this works fine now?