I am writing an HDG code and trying to parallelize it in a fashion similar to step-40. I am having a problem with data_out.build_patches(degree). In step-40 the argument is the default value of zero, but I eventually want to run this code for higher order dg elements. I believe that the problem in parallel is that build_patches is trying to subdivide all cells for each processor (even the ghost_cells) instead of just the locally_owned_cells. I get the following error output:
An error occurred in line <934> of file </include/deal.II/grid/tria_iterator.h> in function
Accessor& dealii::TriaRawIterator<Accessor>::operator*() [with Accessor = dealii::CellAccessor<2, 2>]
The violated condition was:
Accessor::structure_dimension!=Accessor::dimension || state() == IteratorState::valid
Additional information:
You tried to dereference a cell iterator for which this is not possible. More information on this iterator: level=-2, index=-2, state=invalid
Stacktrace:
-----------
#0 dealii::TriaRawIterator<dealii::CellAccessor<2, 2> >::operator*()
#1 dealii::DataOutFaces<2, dealii::DoFHandler<2, 2> >::next_face(std::pair<dealii::TriaIterator<dealii::CellAccessor<2, 2> >, unsigned int> const&)
#2 dealii::DataOutFaces<2, dealii::DoFHandler<2, 2> >::build_patches(dealii::Mapping<2, 2> const&, unsigned int)
#3 dealii::DataOutFaces<2, dealii::DoFHandler<2, 2> >::build_patches(unsigned int)
I am using deal.ii version 8.5.0-pre. In step-51 build_patches takes the dg element degree as the argument and this is true when running on a single processor, but breaks down when running on multiple processors. Any help would be greatly appreciated.