Hi Everyone,

I am trying to debug an error with my output function. I have an 
Trilinos::MPI::BlockVector and I am using a relatively simple output 
function

template <int dim> void ChannelDropletSolver<dim>::output_solution(uint 
index) {
  std::vector<DataComponentInterpretation::DataComponentInterpretation>
      data_interp(dim,
                  DataComponentInterpretation::component_is_part_of_vector);
  data_interp.push_back(DataComponentInterpretation::component_is_scalar);
  data_interp.push_back(DataComponentInterpretation::component_is_scalar);
  data_interp.push_back(DataComponentInterpretation::component_is_scalar);

  std::vector<std::string> component_names(dim, "velocity");
  component_names.emplace_back("pressure");
  component_names.emplace_back("concentration_A");
  component_names.emplace_back("concentration_B");

  DataOut<dim> data_out;
  data_out.attach_dof_handler(this->system_handler.dof_handler);
  data_out.add_data_vector(this->system_handler.dof_handler,
                           this->system_handler.solution, component_names,
                           data_interp);

  data_out.build_patches();

  data_out.write_vtu_with_pvtu_record("data/", "solution", index, mpi_comm, 
3);
}

but it produces a strange error I've never seen before

An error occurred in line <441> of file 
</home/ahuffman/dealii-candi/tmp/unpack/deal.II-v9.5.1/source/base/mpi_compute_index_owner_internal.cc>
 
in function
    void 
dealii::Utilities::MPI::internal::ComputeIndexOwner::Dictionary::partition(const
 
dealii::IndexSet&, MPI_Comm)
The violated condition was: 
    size > 0
Additional information: 
    You are trying to use functionality in deal.II that is currently not
    implemented. In many cases, this indicates that there simply didn't
    appear much of a need for it, or that the author of the original code
    did not have the time to implement a particular case. If you hit this
    exception, it is therefore worth the time to look into the code to
    find out whether you may be able to implement the missing
    functionality. If you do, please consider providing a patch to the
    deal.II development sources (see the deal.II website on how to
    contribute).

Has anyone run into this before using MPI with Trilinos vectors and the 
DataOut object? I've included the stack trace, I am trying to come up with 
a minimal reproducible example now.

-- 
The deal.II project is located at http://www.dealii.org/
For mailing list/forum options, see 
https://groups.google.com/d/forum/dealii?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"deal.II User Group" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/dealii/189b1bda-3730-4769-b7fe-824284b8dba4n%40googlegroups.com.
Stacktrace:
-----------
#0  /home/ahuffman/dealii-candi/deal.II-v9.5.1/lib/libdeal_II.g.so.9.5.1: 
dealii::Utilities::MPI::internal::ComputeIndexOwner::Dictionary::partition(dealii::IndexSet
 const&, ompi_communicator_t*)
#1  /home/ahuffman/dealii-candi/deal.II-v9.5.1/lib/libdeal_II.g.so.9.5.1: 
dealii::Utilities::MPI::internal::ComputeIndexOwner::Dictionary::reinit(dealii::IndexSet
 const&, ompi_communicator_t*)
#2  /home/ahuffman/dealii-candi/deal.II-v9.5.1/lib/libdeal_II.g.so.9.5.1: 
dealii::Utilities::MPI::internal::ComputeIndexOwner::ConsensusAlgorithmsPayload::ConsensusAlgorithmsPayload(dealii::IndexSet
 const&, dealii::IndexSet const&, ompi_communicator_t*, std::vector<unsigned 
int, std::allocator<unsigned int> >&, bool)
#3  /home/ahuffman/dealii-candi/deal.II-v9.5.1/lib/libdeal_II.g.so.9.5.1: 
dealii::Utilities::MPI::Partitioner::set_ghost_indices(dealii::IndexSet const&, 
dealii::IndexSet const&)
#4  /home/ahuffman/dealii-candi/deal.II-v9.5.1/lib/libdeal_II.g.so.9.5.1: 
dealii::Utilities::MPI::Partitioner::Partitioner(dealii::IndexSet const&, 
dealii::IndexSet const&, ompi_communicator_t*)
#5  /home/ahuffman/dealii-candi/deal.II-v9.5.1/lib/libdeal_II.g.so.9.5.1: void 
__gnu_cxx::new_allocator<dealii::Utilities::MPI::Partitioner>::construct<dealii::Utilities::MPI::Partitioner,
 dealii::IndexSet const&, dealii::IndexSet const&, ompi_communicator_t* 
const&>(dealii::Utilities::MPI::Partitioner*, dealii::IndexSet const&, 
dealii::IndexSet const&, ompi_communicator_t* const&)
#6  /home/ahuffman/dealii-candi/deal.II-v9.5.1/lib/libdeal_II.g.so.9.5.1: void 
std::allocator_traits<std::allocator<dealii::Utilities::MPI::Partitioner> 
>::construct<dealii::Utilities::MPI::Partitioner, dealii::IndexSet const&, 
dealii::IndexSet const&, ompi_communicator_t* 
const&>(std::allocator<dealii::Utilities::MPI::Partitioner>&, 
dealii::Utilities::MPI::Partitioner*, dealii::IndexSet const&, dealii::IndexSet 
const&, ompi_communicator_t* const&)
#7  /home/ahuffman/dealii-candi/deal.II-v9.5.1/lib/libdeal_II.g.so.9.5.1: 
std::_Sp_counted_ptr_inplace<dealii::Utilities::MPI::Partitioner, 
std::allocator<dealii::Utilities::MPI::Partitioner>, 
(__gnu_cxx::_Lock_policy)2>::_Sp_counted_ptr_inplace<dealii::IndexSet const&, 
dealii::IndexSet const&, ompi_communicator_t* 
const&>(std::allocator<dealii::Utilities::MPI::Partitioner>, dealii::IndexSet 
const&, dealii::IndexSet const&, ompi_communicator_t* const&)
#8  /home/ahuffman/dealii-candi/deal.II-v9.5.1/lib/libdeal_II.g.so.9.5.1: 
std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count<dealii::Utilities::MPI::Partitioner,
 std::allocator<dealii::Utilities::MPI::Partitioner>, dealii::IndexSet const&, 
dealii::IndexSet const&, ompi_communicator_t* 
const&>(dealii::Utilities::MPI::Partitioner*&, 
std::_Sp_alloc_shared_tag<std::allocator<dealii::Utilities::MPI::Partitioner> 
>, dealii::IndexSet const&, dealii::IndexSet const&, ompi_communicator_t* 
const&)
#9  /home/ahuffman/dealii-candi/deal.II-v9.5.1/lib/libdeal_II.g.so.9.5.1: 
std::__shared_ptr<dealii::Utilities::MPI::Partitioner, 
(__gnu_cxx::_Lock_policy)2>::__shared_ptr<std::allocator<dealii::Utilities::MPI::Partitioner>,
 dealii::IndexSet const&, dealii::IndexSet const&, ompi_communicator_t* 
const&>(std::_Sp_alloc_shared_tag<std::allocator<dealii::Utilities::MPI::Partitioner>
 >, dealii::IndexSet const&, dealii::IndexSet const&, ompi_communicator_t* 
const&)
#10  /home/ahuffman/dealii-candi/deal.II-v9.5.1/lib/libdeal_II.g.so.9.5.1: 
std::shared_ptr<dealii::Utilities::MPI::Partitioner>::shared_ptr<std::allocator<dealii::Utilities::MPI::Partitioner>,
 dealii::IndexSet const&, dealii::IndexSet const&, ompi_communicator_t* 
const&>(std::_Sp_alloc_shared_tag<std::allocator<dealii::Utilities::MPI::Partitioner>
 >, dealii::IndexSet const&, dealii::IndexSet const&, ompi_communicator_t* 
const&)
#11  /home/ahuffman/dealii-candi/deal.II-v9.5.1/lib/libdeal_II.g.so.9.5.1: 
std::shared_ptr<dealii::Utilities::MPI::Partitioner> 
std::allocate_shared<dealii::Utilities::MPI::Partitioner, 
std::allocator<dealii::Utilities::MPI::Partitioner>, dealii::IndexSet const&, 
dealii::IndexSet const&, ompi_communicator_t* 
const&>(std::allocator<dealii::Utilities::MPI::Partitioner> const&, 
dealii::IndexSet const&, dealii::IndexSet const&, ompi_communicator_t* const&)
#12  /home/ahuffman/dealii-candi/deal.II-v9.5.1/lib/libdeal_II.g.so.9.5.1: 
std::shared_ptr<dealii::Utilities::MPI::Partitioner> 
std::make_shared<dealii::Utilities::MPI::Partitioner, dealii::IndexSet const&, 
dealii::IndexSet const&, ompi_communicator_t* const&>(dealii::IndexSet const&, 
dealii::IndexSet const&, ompi_communicator_t* const&)
#13  /home/ahuffman/dealii-candi/deal.II-v9.5.1/lib/libdeal_II.g.so.9.5.1: 
dealii::LinearAlgebra::distributed::Vector<double, 
dealii::MemorySpace::Host>::reinit(dealii::IndexSet const&, dealii::IndexSet 
const&, ompi_communicator_t*)
#14  /home/ahuffman/dealii-candi/deal.II-v9.5.1/lib/libdeal_II.g.so.9.5.1: 
#15  /home/ahuffman/dealii-candi/deal.II-v9.5.1/lib/libdeal_II.g.so.9.5.1: 
dealii::internal::DataOutImplementation::DataEntry<2, 2, 
double>::DataEntry<dealii::DataOut_DoFData<2, 2, 2, 2>::DataVectorType, 
dealii::TrilinosWrappers::MPI::BlockVector>(dealii::DoFHandler<2, 2> const*, 
dealii::TrilinosWrappers::MPI::BlockVector const*, 
std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, 
std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, 
std::char_traits<char>, std::allocator<char> > > > const&, 
std::vector<dealii::DataComponentInterpretation::DataComponentInterpretation, 
std::allocator<dealii::DataComponentInterpretation::DataComponentInterpretation>
 > const&, dealii::DataOut_DoFData<2, 2, 2, 2>::DataVectorType)
#16  /home/ahuffman/dealii-candi/deal.II-v9.5.1/lib/libdeal_II.g.so.9.5.1: 
std::_MakeUniq<dealii::internal::DataOutImplementation::DataEntry<2, 2, double> 
>::__single_object 
std::make_unique<dealii::internal::DataOutImplementation::DataEntry<2, 2, 
double>, dealii::DoFHandler<2, 2> const*&, 
dealii::TrilinosWrappers::MPI::BlockVector const*, 
std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, 
std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, 
std::char_traits<char>, std::allocator<char> > > >&, 
std::vector<dealii::DataComponentInterpretation::DataComponentInterpretation, 
std::allocator<dealii::DataComponentInterpretation::DataComponentInterpretation>
 > const&, dealii::DataOut_DoFData<2, 2, 2, 
2>::DataVectorType&>(dealii::DoFHandler<2, 2> const*&, 
dealii::TrilinosWrappers::MPI::BlockVector const*&&, 
std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, 
std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, 
std::char_traits<char>, std::allocator<char> > > >&, 
std::vector<dealii::DataComponentInterpretation::DataComponentInterpretation, 
std::allocator<dealii::DataComponentInterpretation::DataComponentInterpretation>
 > const&, dealii::DataOut_DoFData<2, 2, 2, 2>::DataVectorType&)
#17  /home/ahuffman/dealii-candi/deal.II-v9.5.1/lib/libdeal_II.g.so.9.5.1: void 
dealii::DataOut_DoFData<2, 2, 2, 
2>::add_data_vector_internal<dealii::TrilinosWrappers::MPI::BlockVector>(dealii::DoFHandler<2,
 2> const*, dealii::TrilinosWrappers::MPI::BlockVector const&, 
std::vector<stdI::Partitioner>, dealii::IndexSet const&, dealii::IndexSet 
const&, ompi_communicator_t* 
const&>(std::_Sp_alloc_shared_tag<std::allocator<dealii::Utilities::MPI::Partitioner>
 >, dealii::IndexSet const&, dealii::IndexSet const&, ompi_communicator_t* 
const&)
#10  /home/ahuffman/dealii-candi/deal.II-v9.5.1/lib/libdeal_II.g.so.9.5.1: 
std::shared_ptr<dealii::Utilities::MPI::Partitioner>::shared_ptr<std::allocator<dealii::Utilities::MPI::Partitioner>,
 dealii::IndexSet const&, dealii::IndexSet const&, ompi_communicator_t* 
const&>(std::_Sp_alloc_shared_tag<std::allocator<dealii::Utilities::MPI::Partitioner>
 >, dealii::IndexSet const&, dealii::IndexSet const&, ompi_communicator_t* 
const&)
#11  /home/ahuffman/dealii-candi/deal.II-v9.5.1/lib/libdeal_II.g.so.9.5.1: 
std::shared_ptr<dealii::Utilities::MPI::Partitioner> 
std::allocate_shared<dealii::Utilities::MPI::Partitioner, 
std::allocator<dealii::Utilities::MPI::Partitioner>, dealii::IndexSet const&, 
dealii::IndexSet const&, ompi_communicator_t* 
const&>(std::allocator<dealii::Utilities::MPI::Partitioner> const&, 
dealii::IndexSet const&, dealii::IndexSet const&, ompi_communicator_t* const&)
#12  /home/ahuffman/dealii-candi/deal.II-v9.5.1/lib/libdeal_II.g.so.9.5.1: 
std::shared_ptr<dealii::Utilities::MPI::Partitioner> 
std::make_shared<dealii::Utilities::MPI::Partitioner, dealii::IndexSet const&, 
dealii::IndexSet const&, ompi_communicator_t* const&>(dealii::IndexSet const&, 
dealii::IndexSet const&, ompi_communicator_t* const&)
#13  /home/ahuffman/dealii-candi/deal.II-v9.5.1/lib/libdeal_II.g.so.9.5.1: 
dealii::LinearAlgebra::distributed::Vector<double, 
dealii::MemorySpace::Host>::reinit(dealii::IndexSet const&, dealii::IndexSet 
const&, ompi_communicator_t*)
#14  /home/ahuffman/dealii-candi/deal.II-v9.5.1/lib/libdeal_II.g.so.9.5.1: 
#15  /home/ahuffman/dealii-candi/deal.II-v9.5.1/lib/libdeal_II.g.so.9.5.1: 
dealii::internal::DataOutImplementation::DataEntry<2, 2, 
double>::DataEntry<dealii::DataOut_DoFData<2, 2, 2, 2>::DataVectorType, 
dealii::TrilinosWrappers::MPI::BlockVector>(dealii::DoFHandler<2, 2> const*, 
dealii::TrilinosWrappers::MPI::BlockVector const*, 
std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, 
std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, 
std::char_traits<char>, std::allocator<char> > > > const&, 
std::vector<dealii::DataComponentInterpretation::DataComponentInterpretation, 
std::allocator<dealii::DataComponentInterpretation::DataComponentInterpretation>
 > const&, dealii::DataOut_DoFData<2, 2, 2, 2>::DataVectorType)
#16  /home/ahuffman/dealii-candi/deal.II-v9.5.1/lib/libdeal_II.g.so.9.5.1: 
std::_MakeUniq<dealii::internal::DataOutImplementation::DataEntry<2, 2, double> 
>::__single_object 
std::make_unique<dealii::internal::DataOutImplementation::DataEntry<2, 2, 
double>, dealii::DoFHandler<2, 2> const*&, 
dealii::TrilinosWrappers::MPI::BlockVector const*, 
std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, 
std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, 
std::char_traits<char>, std::allocator<char> > > >&, 
std::vector<dealii::DataComponentInterpretation::DataComponentInterpretation, 
std::allocator<dealii::DataComponentInterpretation::DataComponentInterpretation>
 > const&, dealii::DataOut_DoFData<2, 2, 2, 
2>::DataVectorType&>(dealii::DoFHandler<2, 2> const*&, 
dealii::TrilinosWrappers::MPI::BlockVector const*&&, 
std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, 
std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, 
std::char_traits<char>, std::allocator<char> > > >&, 
std::vector<dealii::DataComponentInterpretation::DataComponentInterpretation, 
std::allocator<dealii::DataComponentInterpretation::DataComponentInterpretation>
 > const&, dealii::DataOut_DoFData<2, 2, 2, 2>::DataVectorType&)
#17  /home/ahuffman/dealii-candi/deal.II-v9.5.1/lib/libdeal_II.g.so.9.5.1: void 
dealii::DataOut_DoFData<2, 2, 2, 
2>::add_data_vector_internal<dealii::TrilinosWrappers::MPI::BlockVector>(dealii::DoFHandler<2,
 2> const*, dealii::TrilinosWrappers::MPI::BlockVector const&, 
std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, 
std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, 
std::char_traits<char>, std::allocator<char> > > > const&, 
dealii::DataOut_DoFData<2, 2, 2, 2>::DataVectorType, 
std::vector<dealii::DataComponentInterpretation::DataComponentInterpretation, 
std::allocator<dealii::DataComponentInterpretation::DataComponentInterpretation>
 > const&, bool)
#18  build/main: void dealii::DataOut_DoFData<2, 2, 2, 
2>::add_data_vector<dealii::TrilinosWrappers::MPI::BlockVector>(dealii::DoFHandler<2,
 2> const&, dealii::TrilinosWrappers::MPI::BlockVector const&, 
std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, 
std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, 
std::char_traits<char>, std::allocator<char> > > > const&, 
std::vector<dealii::DataComponentInterpretation::DataComponentInterpretation, 
std::allocator<dealii::DataComponentInterpretation::DataComponentInterpretation>
 > const&)
#19  build/main: solver::ChannelDropletSolver<2>::output_solution(unsigned int)
#20  build/main: solver::ChannelDropletSolver<2>::solve_system()
#21  build/main: solver::ChannelDropletSolver<2>::run()
#22  build/main: main

Reply via email to