47 typedef typename Base::VectorType VectorType;
50 initialize(dealii::MatrixFree<dim, Number>
const & matrix_free,
51 dealii::AffineConstraints<Number>
const & affine_constraints,
56 ExaDG::MassOperator<dim, dim, Number>::initialize(matrix_free, affine_constraints, data);
60 set_inhomogeneous_constrained_values(VectorType & dst)
const final
65 unsigned int const dof_index_inhomogeneous = this->get_dof_index_inhomogeneous();
66 dealii::AffineConstraints<Number>
const & constraints =
67 this->matrix_free->get_affine_constraints(dof_index_inhomogeneous);
68 constraints.distribute(dst);
72 std::map<dealii::types::global_dof_index, double> boundary_values;
73 for(
auto dbc : operator_data.bc->dirichlet_bc_initial_acceleration)
75 dbc.second->set_time(this->get_time());
76 dealii::ComponentMask mask =
77 operator_data.bc->dirichlet_bc_component_mask.find(dbc.first)->second;
79 dealii::VectorTools::interpolate_boundary_values(
80 *this->matrix_free->get_mapping_info().mapping,
81 this->matrix_free->get_dof_handler(operator_data.dof_index),
89 for(
auto m : boundary_values)
90 if(dst.get_partitioner()->in_local_range(m.first))
91 dst[m.first] = m.second;
93 dst.update_ghost_values();