Broken nonisothermal tests with gcc 5.5
!1231 (merged) causes the following compiler error for non-isothermal models with gcc 5.5
/data/src/dumux/dumux/porousmediumflow/nonisothermal/volumevariables.hh:450:10: note: template argument deduction/substitution failed:
1109/data/src/dumux/dumux/porousmediumflow/nonisothermal/volumevariables.hh: In substitution of 'template<class ElemSol, class Problem, class Element, class Scv> std::enable_if_t<decltype (isValid(Dumux::Detail::hasSolidThermalConductivity<Element, Scv, ElemSol, typename IsothermalTraits::SolidState>())(problem.spatialParams()))::value, typename IsothermalTraits::PrimaryVariables::value_type> Dumux::EnergyVolumeVariablesImplementation<IsothermalTraits, Impl, true>::solidThermalConductivity_(const ElemSol&, const Problem&, const Element&, const Scv&, const SolidState&) [with ElemSol = Dumux::CCElementSolution<Dumux::CCTpfaFVElementGeometry<Dumux::CCTpfaFVGridGeometry<Dune::GridView<Dune::DefaultLeafGridViewTraits<const Dune::YaspGrid<2> > >, false, Dumux::CCTpfaDefaultGridGeometryTraits<Dune::GridView<Dune::DefaultLeafGridViewTraits<const Dune::YaspGrid<2> > >, Dumux::DefaultMapperTraits<Dune::GridView<Dune::DefaultLeafGridViewTraits<const Dune::YaspGrid<2> > >, Dune::MultipleCodimMultipleGeomTypeMapper<Dune::GridView<Dune::DefaultLeafGridViewTraits<const Dune::YaspGrid<2> > >, Dune::Impl::MCMGFailLayout>, Dune::MultipleCodimMultipleGeomTypeMapper<Dune::GridView<Dune::DefaultLeafGridViewTraits<const Dune::YaspGrid<2> > >, Dune::Impl::MCMGFailLayout> > > >, false>, Dune::FieldVector<double, 2> >; Problem = Dumux::OnePNIConductionProblem<Dumux::Properties::TTag::OnePNIConductionCCTpfa>; Element = Dune::Entity<0, 2, const Dune::YaspGrid<2>, Dune::YaspEntity>; Scv = Dumux::CCSubControlVolume<Dune::GridView<Dune::DefaultLeafGridViewTraits<const Dune::YaspGrid<2> > >, Dumux::CCDefaultScvGeometryTraits<Dune::GridView<Dune::DefaultLeafGridViewTraits<const Dune::YaspGrid<2> > > > >]':
1110/data/src/dumux/dumux/porousmediumflow/nonisothermal/volumevariables.hh:217:51: required from 'void Dumux::EnergyVolumeVariablesImplementation<IsothermalTraits, Impl, true>::updateSolidEnergyParams(const ElemSol&, const Problem&, const Element&, const Scv&, Dumux::EnergyVolumeVariablesImplementation<IsothermalTraits, Impl, true>::SolidState&) [with ElemSol = Dumux::CCElementSolution<Dumux::CCTpfaFVElementGeometry<Dumux::CCTpfaFVGridGeometry<Dune::GridView<Dune::DefaultLeafGridViewTraits<const Dune::YaspGrid<2> > >, false, Dumux::CCTpfaDefaultGridGeometryTraits<Dune::GridView<Dune::DefaultLeafGridViewTraits<const Dune::YaspGrid<2> > >, Dumux::DefaultMapperTraits<Dune::GridView<Dune::DefaultLeafGridViewTraits<const Dune::YaspGrid<2> > >, Dune::MultipleCodimMultipleGeomTypeMapper<Dune::GridView<Dune::DefaultLeafGridViewTraits<const Dune::YaspGrid<2> > >, Dune::Impl::MCMGFailLayout>, Dune::MultipleCodimMultipleGeomTypeMapper<Dune::GridView<Dune::DefaultLeafGridViewTraits<const Dune::YaspGrid<2> > >, Dune::Impl::MCMGFailLayout> > > >, false>, Dune::FieldVector<double, 2> >; Problem = Dumux::OnePNIConductionProblem<Dumux::Properties::TTag::OnePNIConductionCCTpfa>; Element = Dune::Entity<0, 2, const Dune::YaspGrid<2>, Dune::YaspEntity>; Scv = Dumux::CCSubControlVolume<Dune::GridView<Dune::DefaultLeafGridViewTraits<const Dune::YaspGrid<2> > >, Dumux::CCDefaultScvGeometryTraits<Dune::GridView<Dune::DefaultLeafGridViewTraits<const Dune::YaspGrid<2> > > > >; IsothermalTraits = Dumux::OnePVolumeVariablesTraits<Dune::FieldVector<double, 2>, Dumux::FluidSystems::OnePLiquid<double, Dumux::Components::H2O<double> >, Dumux::ImmiscibleFluidState<double, Dumux::FluidSystems::OnePLiquid<double, Dumux::Components::H2O<double> > >, Dumux::SolidSystems::InertSolidPhase<double, Dumux::Components::Constant<1, double> >, Dumux::InertSolidState<double, Dumux::SolidSystems::InertSolidPhase<double, Dumux::Components::Constant<1, double> > >, double, Dumux::PorousMediumFlowNIModelTraits<Dumux::OnePModelTraits> >; Impl = Dumux::OnePVolumeVariables<Dumux::OnePVolumeVariablesTraits<Dune::FieldVector<double, 2>, Dumux::FluidSystems::OnePLiquid<double, Dumux::Components::H2O<double> >, Dumux::ImmiscibleFluidState<double, Dumux::FluidSystems::OnePLiquid<double, Dumux::Components::H2O<double> > >, Dumux::SolidSystems::InertSolidPhase<double, Dumux::Components::Constant<1, double> >, Dumux::InertSolidState<double, Dumux::SolidSystems::InertSolidPhase<double, Dumux::Components::Constant<1, double> > >, double, Dumux::PorousMediumFlowNIModelTraits<Dumux::OnePModelTraits> > >; Dumux::EnergyVolumeVariablesImplementation<IsothermalTraits, Impl, true>::SolidState = Dumux::InertSolidState<double, Dumux::SolidSystems::InertSolidPhase<double, Dumux::Components::Constant<1, double> > >]'
1111/data/src/dumux/dumux/porousmediumflow/1p/volumevariables.hh:86:47: required from 'void Dumux::OnePVolumeVariables<Traits>::update(const ElemSol&, const Problem&, const Element&, const Scv&) [with ElemSol = Dumux::CCElementSolution<Dumux::CCTpfaFVElementGeometry<Dumux::CCTpfaFVGridGeometry<Dune::GridView<Dune::DefaultLeafGridViewTraits<const Dune::YaspGrid<2> > >, false, Dumux::CCTpfaDefaultGridGeometryTraits<Dune::GridView<Dune::DefaultLeafGridViewTraits<const Dune::YaspGrid<2> > >, Dumux::DefaultMapperTraits<Dune::GridView<Dune::DefaultLeafGridViewTraits<const Dune::YaspGrid<2> > >, Dune::MultipleCodimMultipleGeomTypeMapper<Dune::GridView<Dune::DefaultLeafGridViewTraits<const Dune::YaspGrid<2> > >, Dune::Impl::MCMGFailLayout>, Dune::MultipleCodimMultipleGeomTypeMapper<Dune::GridView<Dune::DefaultLeafGridViewTraits<const Dune::YaspGrid<2> > >, Dune::Impl::MCMGFailLayout> > > >, false>, Dune::FieldVector<double, 2> >; Problem = Dumux::OnePNIConductionProblem<Dumux::Properties::TTag::OnePNIConductionCCTpfa>; Element = Dune::Entity<0, 2, const Dune::YaspGrid<2>, Dune::YaspEntity>; Scv = Dumux::CCSubControlVolume<Dune::GridView<Dune::DefaultLeafGridViewTraits<const Dune::YaspGrid<2> > >, Dumux::CCDefaultScvGeometryTraits<Dune::GridView<Dune::DefaultLeafGridViewTraits<const Dune::YaspGrid<2> > > > >; Traits = Dumux::OnePVolumeVariablesTraits<Dune::FieldVector<double, 2>, Dumux::FluidSystems::OnePLiquid<double, Dumux::Components::H2O<double> >, Dumux::ImmiscibleFluidState<double, Dumux::FluidSystems::OnePLiquid<double, Dumux::Components::H2O<double> > >, Dumux::SolidSystems::InertSolidPhase<double, Dumux::Components::Constant<1, double> >, Dumux::InertSolidState<double, Dumux::SolidSystems::InertSolidPhase<double, Dumux::Components::Constant<1, double> > >, double, Dumux::PorousMediumFlowNIModelTraits<Dumux::OnePModelTraits> >]'
1112/data/src/dumux/test/porousmediumflow/1p/implicit/nonisothermal/problem_conduction.hh:167:9: required from 'void Dumux::OnePNIConductionProblem<TypeTag>::updateExactTemperature(const SolutionVector&, Dumux::OnePNIConductionProblem<TypeTag>::Scalar) [with TypeTag = Dumux::Properties::TTag::OnePNIConductionCCTpfa; Dumux::OnePNIConductionProblem<TypeTag>::SolutionVector = Dune::BlockVector<Dune::FieldVector<double, 2>, std::allocator<Dune::FieldVector<double, 2> > >; Dumux::OnePNIConductionProblem<TypeTag>::Scalar = double]'
1113/data/src/dumux/test/porousmediumflow/1p/implicit/nonisothermal/main.cc:187:85: required from here
1114/data/src/dumux/dumux/porousmediumflow/nonisothermal/volumevariables.hh:456:20: error: use of 'template<class Expression> constexpr auto Dumux::isValid(const Expression&)' before deduction of 'auto'
1115 isValid(Detail::hasSolidThermalConductivity<Element, Scv, ElemSol, SolidState>())(problem.spatialParams())
1116 ^
This error doesn't occur with gcc 8, and also not with clang.
Edited by Timo Koch