trilinos / Trilinos

Primary repository for the Trilinos Project
https://trilinos.org/
Other
1.21k stars 563 forks source link

MueLu: Unit tests appear to be invoking Ifpack2::Chebyshev for complex Scalar type #1764

Closed mhoemmen closed 7 years ago

mhoemmen commented 7 years ago

@trilinos/muelu See e.g., this test result:

https://testing.sandia.gov/cdash/testDetails.php?test=41460718&build=3121008

Here is a sample bit of output:

593. PetraOperator_std_complex0double0_int_int_Kokkos_Compat_KokkosSerialWrapperNode_CreatePreconditioner_UnitTest ... 
 debug: scalar = i
 debug: node   = N6Kokkos6Compat23KokkosDeviceWrapperNodeINS_6SerialENS_9HostSpaceEEE
 debug: linAlgebra = Tpetra
 version: MueLu development
 MueLu::Amesos2Smoother: using "Superlu"
 A0 size =  1000 x 1000, nnz = 2998
 A0 Load balancing info
 A0   # active processes: 1/1
 A0   # rows per proc   : avg = 1.00e+03,  dev =   0.0%,  min =   +0.0%,  max =   +0.0%
 A0   #  nnz per proc   : avg = 3.00e+03,  dev =   0.0%,  min =   +0.0%,  max =   +0.0%
 Clearing old data (if any)
 Using default factory (MueLu::TentativePFactory) for building 'Ptent'.
 Using default factory (MueLu::SaPFactory) for building 'P'.
 Using default factory (MueLu::TransPFactory) for building 'R'.
 Using default factory (MueLu::RAPFactory) for building 'A'.
 Using default factory (MueLu::UncoupledAggregationFactory) for building 'Aggregates'.
 Using default factory (MueLu::CoalesceDropFactory) for building 'Graph'.
 Using default factory (MueLu::AmalgamationFactory) for building 'UnAmalgamationInfo'.
 Using default factory (MueLu::CoarseMapFactory) for building 'CoarseMap'.
 Level 0
  Setup Smoother (MueLu::Ifpack2Smoother{type = CHEBYSHEV})
   chebyshev: ratio eigenvalue (computed) = (7,0)

 p=0: *** Caught standard std::exception of type 'std::logic_error' :

  /home/tawiesn/nightlyTesting/SERIAL_DEBUG_DEV_MueLu_ExtraTypes/Trilinos/packages/ifpack2/src/Ifpack2_Details_Chebyshev_def.hpp:267:

  Throw number = 891

  Throw test that evaluated to true: true

  Ifpack2::Chebyshev: This class' implementation of Chebyshev iteration only works for real-valued, symmetric positive definite matrices.  However, you instantiated this class for ScalarType = complex<double>, which is a complex-valued type.  While this may be algorithmically correct if all of the complex numbers in the matrix have zero imaginary part, we forbid using complex ScalarType altogether in order to remind you of the limitations of our implementation (and of the algorithm itself).
 [FAILED]  (0.28 sec) PetraOperator_std_complex0double0_int_int_Kokkos_Compat_KokkosSerialWrapperNode_CreatePreconditioner_UnitTest
 Location: /home/tawiesn/nightlyTesting/SERIAL_DEBUG_DEV_MueLu_ExtraTypes/Trilinos/packages/muelu/test/unit_tests/Adapters/CreatePreconditioner.cpp:86
mhoemmen commented 7 years ago

See also geminga's Linux-GCC-5.2.0-BROKEN_NO_EPETRA_NO_SERIAL_OPENMP and Linux-GCC-5.2.0-BROKEN_NO_SERIAL builds; the same error appears there.

aprokop commented 7 years ago

@mhoemmen Thanks for reporting. I saw that and was debating on what to do with this. Will try to fix sometime next week.

aprokop commented 7 years ago

Fix pushed to develop (simply switched from using Chebyshev to using Symmetric Gauss-Seidel).

mhoemmen commented 7 years ago

@aprokop Thanks! :-D