Scratch() = default;
};
- template <typename DoFHandlerType, typename number>
+ template <int dim, int spacedim, typename number>
struct CopyData
{
CopyData();
- unsigned int dofs_per_cell;
- std::vector<types::global_dof_index> dofs;
- std::vector<std::vector<bool>> dof_is_on_face;
- typename DoFHandlerType::active_cell_iterator cell;
- std::vector<FullMatrix<number>> cell_matrix;
- std::vector<Vector<number>> cell_vector;
+ unsigned int dofs_per_cell;
+ std::vector<types::global_dof_index> dofs;
+ std::vector<std::vector<bool>> dof_is_on_face;
+ typename DoFHandler<dim, spacedim>::active_cell_iterator cell;
+ std::vector<FullMatrix<number>> cell_matrix;
+ std::vector<Vector<number>> cell_vector;
};
- template <typename DoFHandlerType, typename number>
- CopyData<DoFHandlerType, number>::CopyData()
+ template <int dim, int spacedim, typename number>
+ CopyData<dim, spacedim, number>::CopyData()
: dofs_per_cell(numbers::invalid_unsigned_int)
{}
typename DoFHandler<dim, spacedim>::active_cell_iterator const &cell,
MatrixCreator::internal::AssemblerBoundary::Scratch const &,
MatrixCreator::internal::AssemblerBoundary::
- CopyData<DoFHandler<dim, spacedim>, number> ©_data,
- Mapping<dim, spacedim> const & mapping,
- FiniteElement<dim, spacedim> const & fe,
- Quadrature<dim - 1> const & q,
+ CopyData<dim, spacedim, number> & copy_data,
+ Mapping<dim, spacedim> const & mapping,
+ FiniteElement<dim, spacedim> const &fe,
+ Quadrature<dim - 1> const & q,
std::map<types::boundary_id, const Function<spacedim, number> *> const
& boundary_functions,
Function<spacedim, number> const *const coefficient,
void
copy_boundary_mass_matrix_1(
MatrixCreator::internal::AssemblerBoundary::
- CopyData<DoFHandler<dim, spacedim>, number> const ©_data,
+ CopyData<dim, spacedim, number> const ©_data,
std::map<types::boundary_id, const Function<spacedim, number> *> const
& boundary_functions,
std::vector<types::global_dof_index> const &dof_to_boundary_mapping,
void inline create_boundary_mass_matrix_1<1, 3, float>(
DoFHandler<1, 3>::active_cell_iterator const & /*cell*/,
MatrixCreator::internal::AssemblerBoundary::Scratch const &,
- MatrixCreator::internal::AssemblerBoundary::CopyData<DoFHandler<1, 3>,
- float>
+ MatrixCreator::internal::AssemblerBoundary::CopyData<1, 3, float>
& /*copy_data*/,
Mapping<1, 3> const &,
FiniteElement<1, 3> const &,
void inline create_boundary_mass_matrix_1<1, 3, double>(
DoFHandler<1, 3>::active_cell_iterator const & /*cell*/,
MatrixCreator::internal::AssemblerBoundary::Scratch const &,
- MatrixCreator::internal::AssemblerBoundary::CopyData<DoFHandler<1, 3>,
- double>
+ MatrixCreator::internal::AssemblerBoundary::CopyData<1, 3, double>
& /*copy_data*/,
Mapping<1, 3> const &,
FiniteElement<1, 3> const &,
AssertDimension(n_components, component_mapping.size());
MatrixCreator::internal::AssemblerBoundary::Scratch scratch;
- MatrixCreator::internal::AssemblerBoundary::
- CopyData<DoFHandler<dim, spacedim>, number>
- copy_data;
+ MatrixCreator::internal::AssemblerBoundary::CopyData<dim, spacedim, number>
+ copy_data;
WorkStream::run(
dof.begin_active(),
typename DoFHandler<dim, spacedim>::active_cell_iterator const &cell,
MatrixCreator::internal::AssemblerBoundary::Scratch const &scratch_data,
MatrixCreator::internal::AssemblerBoundary::
- CopyData<DoFHandler<dim, spacedim>, number> ©_data) {
+ CopyData<dim, spacedim, number> ©_data) {
internal::create_boundary_mass_matrix_1(cell,
scratch_data,
copy_data,
},
[&boundary_functions, &dof_to_boundary_mapping, &matrix, &rhs_vector](
MatrixCreator::internal::AssemblerBoundary::
- CopyData<DoFHandler<dim, spacedim>, number> const ©_data) {
+ CopyData<dim, spacedim, number> const ©_data) {
internal::copy_boundary_mass_matrix_1(copy_data,
boundary_functions,
dof_to_boundary_mapping,
typename DoFHandler<dim, spacedim>::active_cell_iterator const &cell,
MatrixCreator::internal::AssemblerBoundary::Scratch const &,
MatrixCreator::internal::AssemblerBoundary ::
- CopyData<DoFHandler<dim, spacedim>, number> ©_data,
- hp::MappingCollection<dim, spacedim> const & mapping,
- hp::FECollection<dim, spacedim> const & fe_collection,
- hp::QCollection<dim - 1> const & q,
+ CopyData<dim, spacedim, number> & copy_data,
+ hp::MappingCollection<dim, spacedim> const &mapping,
+ hp::FECollection<dim, spacedim> const & fe_collection,
+ hp::QCollection<dim - 1> const & q,
const std::map<types::boundary_id, const Function<spacedim, number> *>
& boundary_functions,
Function<spacedim, number> const *const coefficient,
void
copy_hp_boundary_mass_matrix_1(
MatrixCreator::internal::AssemblerBoundary ::
- CopyData<DoFHandler<dim, spacedim>, number> const ©_data,
+ CopyData<dim, spacedim, number> const ©_data,
std::map<types::boundary_id, const Function<spacedim, number> *> const
& boundary_functions,
std::vector<types::global_dof_index> const &dof_to_boundary_mapping,
AssertDimension(n_components, component_mapping.size());
MatrixCreator::internal::AssemblerBoundary::Scratch scratch;
- MatrixCreator::internal::AssemblerBoundary::
- CopyData<DoFHandler<dim, spacedim>, number>
- copy_data;
+ MatrixCreator::internal::AssemblerBoundary::CopyData<dim, spacedim, number>
+ copy_data;
WorkStream::run(
dof.begin_active(),
typename DoFHandler<dim, spacedim>::active_cell_iterator const &cell,
MatrixCreator::internal::AssemblerBoundary::Scratch const &scratch_data,
MatrixCreator::internal::AssemblerBoundary ::
- CopyData<DoFHandler<dim, spacedim>, number> ©_data) {
+ CopyData<dim, spacedim, number> ©_data) {
internal::create_hp_boundary_mass_matrix_1(cell,
scratch_data,
copy_data,
},
[&boundary_functions, &dof_to_boundary_mapping, &matrix, &rhs_vector](
MatrixCreator::internal::AssemblerBoundary ::
- CopyData<DoFHandler<dim, spacedim>, number> const ©_data) {
+ CopyData<dim, spacedim, number> const ©_data) {
internal::copy_hp_boundary_mass_matrix_1(copy_data,
boundary_functions,
dof_to_boundary_mapping,