diff --git a/dune/gdt/test/momentmodels/kineticequation.hh b/dune/gdt/test/momentmodels/kineticequation.hh index adfe75629fbccec1090871f870c395a75ba32bb4..d9ff3ff2fc27498b802a63f41c530e531dc8cf5c 100644 --- a/dune/gdt/test/momentmodels/kineticequation.hh +++ b/dune/gdt/test/momentmodels/kineticequation.hh @@ -41,6 +41,7 @@ public: using BoundaryValueType = InitialValueType; using MatrixType = typename Dune::DynamicMatrix<RangeFieldType>; using DomainType = typename InitialValueType::DomainType; + using BasisDomainType = typename MomentBasis::DomainType; using StateType = typename FluxType::StateType; using RangeReturnType = typename InitialValueType::RangeReturnType; using DynamicRangeType = Dune::DynamicVector<RangeFieldType>; diff --git a/dune/gdt/test/momentmodels/kinetictransport/base.hh b/dune/gdt/test/momentmodels/kinetictransport/base.hh index 0a5239f6f759846944b410034fe089d61c0426a8..9eb4418c7f94c5a1b8db550493bafcbd71068a04 100644 --- a/dune/gdt/test/momentmodels/kinetictransport/base.hh +++ b/dune/gdt/test/momentmodels/kinetictransport/base.hh @@ -38,6 +38,7 @@ public: using BaseType::dimFlux; using BaseType::dimRange; using BaseType::dimRangeCols; + using typename BaseType::BasisDomainType; using typename BaseType::DomainFieldType; using typename BaseType::DomainType; using typename BaseType::GenericFluxFunctionType; @@ -57,7 +58,8 @@ public: using DynamicFluxJacobianRangeType = typename FluxType::LocalFunctionType::DynamicJacobianRangeType; using GenericScalarFunctionType = XT::Functions::GenericFunction<dimFlux, 1, 1, RangeFieldType>; using ConstantScalarFunctionType = XT::Functions::ConstantFunction<dimFlux, 1, 1, RangeFieldType>; - using BoundaryDistributionType = std::function<std::function<RangeFieldType(const DomainType&)>(const DomainType&)>; + using BoundaryDistributionType = + std::function<std::function<RangeFieldType(const BasisDomainType&)>(const DomainType&)>; using BaseType::default_boundary_cfg; using BaseType::default_grid_cfg; @@ -126,26 +128,26 @@ public: const auto M_T = basis_functions_.mass_matrix(); // mass matrix is symmetric // solve DynamicVector<RangeFieldType> tmp_row(M_T.N(), 0.); - for (size_t dd = 0; dd < dimDomain; ++dd) { + for (size_t dd = 0; dd < dimFlux; ++dd) { for (size_t ii = 0; ii < M_T.N(); ++ii) { solve(M_T, tmp_row, A[dd][ii], basis_functions_); A[dd][ii] = tmp_row; } } auto order_func = [](const XT::Common::Parameter&) -> int { return 1; }; - DynamicVector<XT::LA::CommonDenseMatrix<RangeFieldType>> A_la(dimDomain); - for (size_t dd = 0; dd < dimDomain; ++dd) + DynamicVector<XT::LA::CommonDenseMatrix<RangeFieldType>> A_la(dimFlux); + for (size_t dd = 0; dd < dimFlux; ++dd) A_la[dd] = A[dd]; auto eval_func = [A_la](const DomainType&, const StateType& u, DynamicFluxRangeType& ret, const XT::Common::Parameter&) { - for (size_t dd = 0; dd < dimDomain; ++dd) { + for (size_t dd = 0; dd < dimFlux; ++dd) { auto row_view = ret[dd]; A_la[dd].mv(u, row_view); } }; auto jacobian_func = [A_la](const DomainType&, const StateType&, DynamicFluxJacobianRangeType& ret, const XT::Common::Parameter&) { - for (size_t dd = 0; dd < dimDomain; ++dd) + for (size_t dd = 0; dd < dimFlux; ++dd) ret[dd] = A_la[dd]; }; return std::make_unique<GenericFluxFunctionType>(order_func, @@ -177,7 +179,7 @@ public: virtual BoundaryDistributionType boundary_distribution() const { - return [this](const DomainType&) { return [this](const DomainType&) { return this->psi_vac_; }; }; + return [this](const DomainType&) { return [this](const BasisDomainType&) { return this->psi_vac_; }; }; } RangeReturnType