I got the below error when calling KINSOL::solve() with Trilinos MPI vectors.
It looks KINSOL tried to call scale() for a ghosted vector.
The vector has ghost elemets probably because I passed
a ghost vector as "initial_guess_and_solution" argument to solve().
I can pass a non-ghosted vector as "initial_guess_and_solution", but this will cause another problem in the residual assembly function which requires ghosted elements.
Any advice on this issue would be appreciated.
--------------------------------------------------------
An error occurred in line <2146> of file </usr/src/dealii-v9.5.0/include/deal.II/lac/trilinos_vector.h> in function
void dealii::TrilinosWrappers::MPI::Vector::scale(const dealii::TrilinosWrappers::MPI::Vector&)
The violated condition was:
!has_ghost_elements()
Additional information:
You are trying an operation on a vector that is only allowed if the
vector has no ghost elements, but the vector you are operating on does
have ghost elements. Specifically, vectors with ghost elements are
read-only and cannot appear in operations that write into these
vectors.
See the glossary entry on 'Ghosted vectors' for more information.
Stacktrace:
-----------
#0 /usr/local/lib/libdeal_II.g.so.9.5.0: dealii::TrilinosWrappers::MPI::Vector::scale(dealii::TrilinosWrappers::MPI::Vector const&)
#1 /usr/local/lib/libdeal_II.g.so.9.5.0: double dealii::SUNDIALS::internal::NVectorOperations::weighted_l2_norm<dealii::TrilinosWrappers::MPI::Vector>(_generic_N_Vector*, _generic_N_Vector*)
#2 /lib/x86_64-linux-gnu/libsundials_kinsol.so.5: N_VWL2Norm
#3 /lib/x86_64-linux-gnu/libsundials_kinsol.so.5:
#4 /lib/x86_64-linux-gnu/libsundials_kinsol.so.5: KINSol
#5 /usr/local/lib/libdeal_II.g.so.9.5.0: dealii::SUNDIALS::KINSOL<dealii::TrilinosWrappers::MPI::Vector>::solve(dealii::TrilinosWrappers::MPI::Vector&)
Best regards,
Norihiro