Ifpack2: BlockTriDiContainer calls unknown method
Created by: lucbv
@trilinos/ifpack2 @kyungjoo-kim @ambrad
Expectations
Ifpack2 should build...
Current Behavior
If does not build, gcc returns the following error:
In file included from /home/lberge/Research/Trilinos_lucbv/packages/ifpack2/test/unit_tests/Ifpack2_UnitTestBlockTriDiContainer.cpp:59:0:
/home/lberge/Research/Trilinos_lucbv/packages/ifpack2/test/unit_tests/Ifpack2_UnitTestBlockTriDiContainerUtil.hpp: In instantiation of ‘static tif_utest::BlockTriDiContainerTester<Scalar, LO, GO>::Int tif_utest::BlockTriDiContainerTester<Scalar, LO, GO>::test_BR_BTDC(const Teuchos::RCP<const Teuchos::Comm<int> >&, const StructuredBlock&, const StructuredBlockPart&, tif_utest::BlockTriDiContainerTester<Scalar, LO, GO>::Int, tif_utest::BlockTriDiContainerTester<Scalar, LO, GO>::Int, bool, bool, bool, bool, bool, const string&) [with Scalar = std::complex<double>; LO = int; GO = int; tif_utest::BlockTriDiContainerTester<Scalar, LO, GO>::Int = int; tif_utest::BlockTriDiContainerTester<Scalar, LO, GO>::StructuredBlock = tif_utest::BlockCrsMatrixMaker<std::complex<double>, int, int>::StructuredBlock; tif_utest::BlockTriDiContainerTester<Scalar, LO, GO>::StructuredBlockPart = tif_utest::BlockCrsMatrixMaker<std::complex<double>, int, int>::StructuredBlockPart; std::string = std::basic_string<char>]’:
/home/lberge/Research/Trilinos_lucbv/packages/ifpack2/test/unit_tests/Ifpack2_UnitTestBlockTriDiContainer.cpp:292:51: required from ‘LO run_teuchos_tests(const Input&, Teuchos::FancyOStream&, bool&) [with Scalar = std::complex<double>; LO = int; GO = int; Teuchos::FancyOStream = Teuchos::basic_FancyOStream<char>]’
/home/lberge/Research/Trilinos_lucbv/packages/ifpack2/test/unit_tests/Ifpack2_UnitTestBlockTriDiContainer.cpp:313:53: required from ‘void Ifpack2BlockTriDi_Unit_UnitTest<Scalar, LO, GO>::runUnitTestImpl(Teuchos::FancyOStream&, bool&) const [with Scalar = std::complex<double>; LO = int; GO = int; Teuchos::FancyOStream = Teuchos::basic_FancyOStream<char>]’
/home/lberge/Research/Trilinos_lucbv/packages/ifpack2/test/unit_tests/Ifpack2_UnitTestBlockTriDiContainer.cpp:321:1: required from here
/home/lberge/Research/Trilinos_lucbv/packages/ifpack2/test/unit_tests/Ifpack2_UnitTestBlockTriDiContainerUtil.hpp:238:9: error: ‘class Ifpack2::BlockTriDiContainer<Tpetra::RowMatrix<std::complex<double>, int, int, Kokkos::Compat::KokkosDeviceWrapperNode<Kokkos::Serial> >, Ifpack2::BlockTriDiContainerDetails::ImplNotAvailTag>’ has no member named ‘createDefaultComputeParameters’
T_bare->compute(T_bare->createDefaultComputeParameters());
^
/home/lberge/Research/Trilinos_lucbv/packages/ifpack2/test/unit_tests/Ifpack2_UnitTestBlockTriDiContainerUtil.hpp:293:49: error: ‘class Ifpack2::BlockTriDiContainer<Tpetra::RowMatrix<std::complex<double>, int, int, Kokkos::Compat::KokkosDeviceWrapperNode<Kokkos::Serial> >, Ifpack2::BlockTriDiContainerDetails::ImplNotAvailTag>’ has no member named ‘getNorms0’
const auto n0 = T_bare->getNorms0();
^
/home/lberge/Research/Trilinos_lucbv/packages/ifpack2/test/unit_tests/Ifpack2_UnitTestBlockTriDiContainerUtil.hpp:294:53: error: ‘class Ifpack2::BlockTriDiContainer<Tpetra::RowMatrix<std::complex<double>, int, int, Kokkos::Compat::KokkosDeviceWrapperNode<Kokkos::Serial> >, Ifpack2::BlockTriDiContainerDetails::ImplNotAvailTag>’ has no member named ‘getNormsFinal’
const auto nf = T_bare->getNormsFinal();
^
/home/lberge/Research/Trilinos_lucbv/packages/ifpack2/test/unit_tests/Ifpack2_UnitTestBlockTriDiContainerUtil.hpp:311:63: error: ‘class Ifpack2::BlockTriDiContainer<Tpetra::RowMatrix<std::complex<double>, int, int, Kokkos::Compat::KokkosDeviceWrapperNode<Kokkos::Serial> >, Ifpack2::BlockTriDiContainerDetails::ImplNotAvailTag>’ has no member named ‘createDefaultApplyParameters’
auto input = T_bare->createDefaultApplyParameters();
^
/home/lberge/Research/Trilinos_lucbv/packages/ifpack2/test/unit_tests/Ifpack2_UnitTestBlockTriDiContainerUtil.hpp:318:19: error: ‘class Ifpack2::BlockTriDiContainer<Tpetra::RowMatrix<std::complex<double>, int, int, Kokkos::Compat::KokkosDeviceWrapperNode<Kokkos::Serial> >, Ifpack2::BlockTriDiContainerDetails::ImplNotAvailTag>’ has no member named ‘createDefaultApplyParameters’
input = T_bare->createDefaultApplyParameters();
^
/home/lberge/Research/Trilinos_lucbv/packages/ifpack2/test/unit_tests/Ifpack2_UnitTestBlockTriDiContainerUtil.hpp:325:21: error: ‘class Ifpack2::BlockTriDiContainer<Tpetra::RowMatrix<std::complex<double>, int, int, Kokkos::Compat::KokkosDeviceWrapperNode<Kokkos::Serial> >, Ifpack2::BlockTriDiContainerDetails::ImplNotAvailTag>’ has no member named ‘createDefaultApplyParameters’
input = T_bare->createDefaultApplyParameters();
Motivation and Context
This is blocking development and it also prevent nightly tests to run properly since Ifpack2 gets disabled by CMake.
Definition of Done
Ifpack2 can be build again
Possible Solution
It looks from the template: Ifpack2::BlockTriDiContainerDetails::ImplNotAvailTag
that some implementation might be missing in which case BlockTriDiContatiner might not be ready to be pushed in develop?
Or the missing implementation needs to be added or guarded to avoid compilation issues?
Steps to Reproduce
Get a fresh version of trilinos and enable Ifpack2, I tried with and without openmp
, both are failing.
Your Environment
- Trilinos SHA1: 0d2d3c94
- source Trilinos/cmake/load_sems_dev_env.sh
- Trilinos_ENABLE_Ifpack2