* Queries whether or not the geometry-related information for the cells has
* been set.
*/
-
bool
mapping_initialized() const;
/**
- * Zero out vector region for vector that do _not_ support
- * exchange on a subset of DoFs <==> begin() + ind == local_element(ind)
+ * Zero out vector region for vector that do _not_ support exchange on a
+ * subset of DoFs <==> begin() + ind == local_element(ind) but are still a
+ * vector type
*/
template <
typename VectorType,
typename std::enable_if<!has_exchange_on_subset<VectorType>::value,
- VectorType>::type * = nullptr>
+ VectorType>::type * = nullptr,
+ typename VectorType::value_type * = nullptr>
void
zero_vector_region(const unsigned int range_index, VectorType &vec) const
{
+ /**
+ * Zero out vector region for non-vector types, i.e., classes that do not
+ * have VectorType::value_type
+ */
+ void
+ zero_vector_region(const unsigned int, ...) const
+ {
+ Assert(false,
+ ExcNotImplemented("Zeroing is only implemented for vector types "
+ "which provide VectorType::value_type"));
+ }
+
+
+
const dealii::MatrixFree<dim, Number> &matrix_free;
const typename dealii::MatrixFree<dim, Number>::DataAccessOnFaces
vector_face_access;
n_blocks = 0;
scheme = none;
partition_row_index.clear();
+ partition_row_index.resize(2);
cell_partition_data.clear();
face_partition_data.clear();
boundary_partition_data.clear();
<< "unsigned int = "
<< internal::is_serial_or_dummy<unsigned int>::value << std::endl;
+ // check that MatrixFree::cell_loop can run for non-vector types
+ MatrixFree<2> matrix_free;
+ int dummy = 0;
+ matrix_free.cell_loop(
+ std::function<void(const MatrixFree<2> &,
+ int &,
+ const int &,
+ const std::pair<unsigned int, unsigned int> &)>(),
+ dummy,
+ dummy);
+
deallog << "OK" << std::endl;
}