Skip to content

Commit

Permalink
Merge pull request #16359 from bergbauer/fcl
Browse files Browse the repository at this point in the history
Introduce FEFacePointEvaluation with optimized FCL path
  • Loading branch information
kronbichler committed Jan 26, 2024
2 parents 22663a1 + b97f5e5 commit fc1d748
Show file tree
Hide file tree
Showing 18 changed files with 4,976 additions and 1,759 deletions.
718 changes: 546 additions & 172 deletions include/deal.II/matrix_free/evaluation_kernels_face.h

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -48,13 +48,53 @@ namespace internal



template <int dim, typename Number>
void
FEFaceEvaluationFactory<dim, Number>::project_to_face(
const unsigned int n_components,
const EvaluationFlags::EvaluationFlags evaluation_flag,
const Number *values_dofs,
FEEvaluationData<dim, Number, true> &fe_eval)
{
instantiation_helper_degree_run<
1,
FEFaceEvaluationImplProjectToFaceSelector<dim, Number>>(
fe_eval.get_shape_info().data[0].fe_degree,
n_components,
evaluation_flag,
values_dofs,
fe_eval);
}



template <int dim, typename Number>
void
FEFaceEvaluationFactory<dim, Number>::evaluate_in_face(
const unsigned int n_components,
const EvaluationFlags::EvaluationFlags evaluation_flag,
FEEvaluationData<dim, Number, true> &fe_eval)
{
instantiation_helper_run<
1,
FEFaceEvaluationImplEvaluateInFaceSelector<dim, Number>>(
fe_eval.get_shape_info().data[0].fe_degree,
fe_eval.get_shape_info().data[0].n_q_points_1d,
n_components,
evaluation_flag,
fe_eval);
}



template <int dim, typename Number>
void
FEFaceEvaluationFactory<dim, Number>::integrate(
const unsigned int n_components,
const EvaluationFlags::EvaluationFlags integration_flag,
Number *values_dofs,
FEEvaluationData<dim, Number, true> &fe_eval)
FEEvaluationData<dim, Number, true> &fe_eval,
const bool sum_into_values)
{
instantiation_helper_run<
1,
Expand All @@ -64,6 +104,48 @@ namespace internal
n_components,
integration_flag,
values_dofs,
fe_eval,
sum_into_values);
}



template <int dim, typename Number>
void
FEFaceEvaluationFactory<dim, Number>::collect_from_face(
const unsigned int n_components,
const EvaluationFlags::EvaluationFlags integration_flag,
Number *values_dofs,
FEEvaluationData<dim, Number, true> &fe_eval,
const bool sum_into_values)
{
instantiation_helper_degree_run<
1,
FEFaceEvaluationImplCollectFromFaceSelector<dim, Number>>(
fe_eval.get_shape_info().data[0].fe_degree,
n_components,
integration_flag,
values_dofs,
fe_eval,
sum_into_values);
}



template <int dim, typename Number>
void
FEFaceEvaluationFactory<dim, Number>::integrate_in_face(
const unsigned int n_components,
const EvaluationFlags::EvaluationFlags integration_flag,
FEEvaluationData<dim, Number, true> &fe_eval)
{
instantiation_helper_run<
1,
FEFaceEvaluationImplIntegrateInFaceSelector<dim, Number>>(
fe_eval.get_shape_info().data[0].fe_degree,
fe_eval.get_shape_info().data[0].n_q_points_1d,
n_components,
integration_flag,
fe_eval);
}

Expand Down
26 changes: 25 additions & 1 deletion include/deal.II/matrix_free/evaluation_template_factory.h
Original file line number Diff line number Diff line change
Expand Up @@ -66,11 +66,35 @@ namespace internal
const Number *values_dofs,
FEEvaluationData<dim, Number, true> &fe_eval);

static void
project_to_face(const unsigned int n_components,
const EvaluationFlags::EvaluationFlags evaluation_flag,
const Number *values_dofs,
FEEvaluationData<dim, Number, true> &fe_eval);

static void
evaluate_in_face(const unsigned int n_components,
const EvaluationFlags::EvaluationFlags evaluation_flag,
FEEvaluationData<dim, Number, true> &fe_eval);

static void
integrate(const unsigned int n_components,
const EvaluationFlags::EvaluationFlags integration_flag,
Number *values_dofs,
FEEvaluationData<dim, Number, true> &fe_eval);
FEEvaluationData<dim, Number, true> &fe_eval,
const bool sum_into_values);

static void
collect_from_face(const unsigned int n_components,
const EvaluationFlags::EvaluationFlags integration_flag,
Number *values_dofs,
FEEvaluationData<dim, Number, true> &fe_eval,
const bool sum_into_values);

static void
integrate_in_face(const unsigned int n_components,
const EvaluationFlags::EvaluationFlags integration_flag,
FEEvaluationData<dim, Number, true> &fe_eval);

static bool
fast_evaluation_supported(const unsigned int given_degree,
Expand Down

0 comments on commit fc1d748

Please sign in to comment.