From d29e28889975870b69e7501c0c02fe283ef6a287 Mon Sep 17 00:00:00 2001 From: Tobias Leibner <tobias.leibner@googlemail.com> Date: Mon, 27 Jan 2020 15:37:15 +0100 Subject: [PATCH] [local.numerical-fluxes] adapt to changes in fvector/fmatrix --- dune/gdt/local/numerical-fluxes/engquist-osher.hh | 3 ++- dune/gdt/local/numerical-fluxes/upwind.hh | 2 +- dune/gdt/local/numerical-fluxes/vijayasundaram.hh | 2 +- dune/gdt/operators/ipdg-flux-reconstruction.hh | 9 ++++++--- 4 files changed, 10 insertions(+), 6 deletions(-) diff --git a/dune/gdt/local/numerical-fluxes/engquist-osher.hh b/dune/gdt/local/numerical-fluxes/engquist-osher.hh index c308728f9..75182bce3 100644 --- a/dune/gdt/local/numerical-fluxes/engquist-osher.hh +++ b/dune/gdt/local/numerical-fluxes/engquist-osher.hh @@ -85,7 +85,8 @@ public: const auto local_uu = quadrature_point.position(); const auto uu = state_interval.geometry().global(local_uu); const auto df = local_flux.jacobian(x, uu, param); - ret += state_interval.geometry().integrationElement(local_uu) * quadrature_point.weight() * min_max(n * df, 0.); + ret += + state_interval.geometry().integrationElement(local_uu) * quadrature_point.weight() * min_max(n * df[0], 0.); } return ret; }; diff --git a/dune/gdt/local/numerical-fluxes/upwind.hh b/dune/gdt/local/numerical-fluxes/upwind.hh index b7519530b..293ead52c 100644 --- a/dune/gdt/local/numerical-fluxes/upwind.hh +++ b/dune/gdt/local/numerical-fluxes/upwind.hh @@ -66,7 +66,7 @@ public: { this->compute_entity_coords(x); const auto df = local_flux_inside_->jacobian(x_in_inside_coords_, (u + v) / 2., param); - if (n * df > 0) + if (n * df[0] > 0) return local_flux_inside_->evaluate(x_in_inside_coords_, u, param) * n; else return local_flux_outside_->evaluate(x_in_outside_coords_, v, param) * n; diff --git a/dune/gdt/local/numerical-fluxes/vijayasundaram.hh b/dune/gdt/local/numerical-fluxes/vijayasundaram.hh index ffe41e0a4..041b9368f 100644 --- a/dune/gdt/local/numerical-fluxes/vijayasundaram.hh +++ b/dune/gdt/local/numerical-fluxes/vijayasundaram.hh @@ -14,7 +14,7 @@ #include <functional> #include <tuple> -#include <dune/xt/common/matrix.hh> +#include <dune/xt/common/fmatrix.hh> #include <dune/xt/common/math.hh> #include <dune/xt/la/eigen-solver.hh> diff --git a/dune/gdt/operators/ipdg-flux-reconstruction.hh b/dune/gdt/operators/ipdg-flux-reconstruction.hh index 187ae6b15..2666b7ab4 100644 --- a/dune/gdt/operators/ipdg-flux-reconstruction.hh +++ b/dune/gdt/operators/ipdg-flux-reconstruction.hh @@ -174,12 +174,15 @@ public: const auto source_grad_element = local_source_element->jacobian(point_in_reference_element, param)[0]; const auto source_grad_neighbor = local_source_neighbor->jacobian(point_in_reference_neighbor, param)[0]; + // df_value_* is of type FieldVector<F, 1> const auto df_value_element = local_df_element->evaluate(point_in_reference_element, param); const auto df_value_neighbor = local_df_neighbor->evaluate(point_in_reference_neighbor, param); + // dt_value_* is of type FieldMatrix<F, d, d> const auto dt_value_element = local_dt_element->evaluate(point_in_reference_element, param); const auto dt_value_neighbor = local_dt_neighbor->evaluate(point_in_reference_neighbor, param); - const auto diffusion_element = dt_value_element * df_value_element; - const auto diffusion_neighbor = dt_value_neighbor * df_value_neighbor; + // use df_value_*[0] to avoid confusion with matrix-vector multiplication + const auto diffusion_element = dt_value_element * df_value_element[0]; + const auto diffusion_neighbor = dt_value_neighbor * df_value_neighbor[0]; // compute penalty factor (see Epshteyn, Riviere, 2007) const F sigma = LocalEllipticIpdgIntegrands::internal::inner_sigma(max_polorder); const double beta = LocalEllipticIpdgIntegrands::internal::default_beta(d); @@ -249,7 +252,7 @@ public: const auto source_grad_element = local_source_element->jacobian(point_in_reference_element, param)[0]; const auto df_value_element = local_df_element->evaluate(point_in_reference_element, param); const auto dt_value_element = local_dt_element->evaluate(point_in_reference_element, param); - const auto diffusion_element = dt_value_element * df_value_element; + const auto diffusion_element = dt_value_element * df_value_element[0]; // compute penalty (see Epshteyn, Riviere, 2007) const F sigma = LocalEllipticIpdgIntegrands::internal::boundary_sigma(max_polorder); const double beta = LocalEllipticIpdgIntegrands::internal::default_beta(d); -- GitLab