*/
template <typename VectorType>
void
- read_dof_values(const VectorType &src, const unsigned int first_index = 0);
+ read_dof_values(const VectorType & src,
+ const unsigned int first_index = 0,
+ const std::bitset<VectorizedArrayType::size()> &mask =
+ std::bitset<VectorizedArrayType::size()>().flip());
/**
* For the vector @p src, read out the values on the degrees of freedom of
template <typename VectorType>
void
read_dof_values_plain(const VectorType & src,
- const unsigned int first_index = 0);
+ const unsigned int first_index = 0,
+ const std::bitset<VectorizedArrayType::size()> &mask =
+ std::bitset<VectorizedArrayType::size()>().flip());
/**
* Takes the values stored internally on dof values of the current cell and
for (unsigned int v = 0; v < n_filled_lanes; ++v)
{
+ if (mask[v] == false)
+ {
+ vector_ptrs[v] = nullptr;
+ continue;
+ }
+
Assert(cells[v] != numbers::invalid_unsigned_int,
ExcNotImplemented());
Assert(ind < this->dof_info->dof_indices_contiguous_sm.size(),
template <typename VectorType>
inline void
FEEvaluationBase<dim, n_components_, Number, is_face, VectorizedArrayType>::
- read_dof_values(const VectorType &src, const unsigned int first_index)
+ read_dof_values(const VectorType & src,
+ const unsigned int first_index,
+ const std::bitset<VectorizedArrayType::size()> &mask)
{
const auto src_data = internal::get_vector_data<n_components_>(
src,
this->dof_info);
internal::VectorReader<Number, VectorizedArrayType> reader;
- read_write_operation(reader,
- src_data.first,
- src_data.second,
- std::bitset<VectorizedArrayType::size()>().flip(),
- true);
+ read_write_operation(reader, src_data.first, src_data.second, mask, true);
apply_hanging_node_constraints<false>();
template <typename VectorType>
inline void
FEEvaluationBase<dim, n_components_, Number, is_face, VectorizedArrayType>::
- read_dof_values_plain(const VectorType &src, const unsigned int first_index)
+ read_dof_values_plain(const VectorType & src,
+ const unsigned int first_index,
+ const std::bitset<VectorizedArrayType::size()> &mask)
{
const auto src_data = internal::get_vector_data<n_components_>(
src,
this->dof_info);
internal::VectorReader<Number, VectorizedArrayType> reader;
- read_write_operation(reader,
- src_data.first,
- src_data.second,
- std::bitset<VectorizedArrayType::size()>().flip(),
- false);
+ read_write_operation(reader, src_data.first, src_data.second, mask, false);
# ifdef DEBUG
dof_values_initialized = true;