Dune-Fufem 2.11-git
Loading...
Searching...
No Matches
integrate.hh
Go to the documentation of this file.
1// -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
2// vi: set et ts=4 sw=2 sts=2:
3
4// SPDX-FileCopyrightText: Copyright © DUNE-FUFEM Project contributors, see file AUTHORS.md
5// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception OR LGPL-3.0-or-later
6
7#ifndef DUNE_FUFEM_FORMS_INTEGRATE_HH
8#define DUNE_FUFEM_FORMS_INTEGRATE_HH
9
10#include <type_traits>
11#include <utility>
12
14
16
24
25
26
27namespace Dune::Fufem::Forms {
28
29
51 template<class MultilinearOperator, class Domain>
52 requires isOperatorOrSumOperator_v<MultilinearOperator> && IsDomain<Domain>::value
53 auto integrate(MultilinearOperator op, const Domain& domain)
54 {
55 auto sumOperator = SumOperator(op);
56 if constexpr(MultilinearOperator::arity==1)
57 {
58 if constexpr (IsBulkDomain<Domain>())
59 return IntegratedLinearForm(sumOperator, domain);
60 if constexpr (IsBoundaryDomain<Domain>())
61 return IntegratedBoundaryLinearForm(sumOperator, domain);
62 if constexpr (IsSkeletonDomain<Domain>())
63 return IntegratedSkeletonLinearForm(sumOperator, domain);
64 }
65 else if constexpr(MultilinearOperator::arity==2)
66 {
67 if constexpr (IsBulkDomain<Domain>())
68 return IntegratedBilinearForm(sumOperator, domain);
69 if constexpr (IsBoundaryDomain<Domain>())
70 return IntegratedBoundaryBilinearForm(sumOperator, domain);
71 if constexpr (IsSkeletonDomain<Domain>())
72 return IntegratedSkeletonBilinearForm(sumOperator, domain);
73 }
74 }
75
76
92 template<class MultilinearOperator,
95 {
96 auto sumOperator = SumOperator(op);
97 if constexpr(MultilinearOperator::arity==1)
99 else if constexpr(MultilinearOperator::arity==2)
101 }
102
103
104
105} // namespace Dune::Fufem::Forms
106
107
108#endif // DUNE_FUFEM_FORMS_INTEGRATE_HH
::value auto integrate(MultilinearOperator op, const Domain &domain)
Integrate a k-linear operator to obtain a k-linear form.
Definition integrate.hh:53
constexpr Bulk bulk
Object representing the full grid view as integration domain.
Definition domains.hh:233
Definition baseclass.hh:22
Base class for multilinear operator implementations.
Definition baseclass.hh:73
static constexpr std::size_t arity
Definition baseclass.hh:75
Sum of several multilinear operators.
Definition sumoperator.hh:38
Traits class to identify bulk integration domains.
Definition domains.hh:36
Traits class to identify boundary integration domains.
Definition domains.hh:49
Traits class to identify skeleton integration domains.
Definition domains.hh:62
Local assembler corresponding to a bulk bilinear form.
Definition integratedbilinearform.hh:44
Local assembler corresponding to a boundary bilinear form.
Definition integratedboundarybilinearform.hh:43
Local assembler corresponding to a boundary linear form.
Definition integratedboundarylinearform.hh:43
Local assembler corresponding to a bulk linear form.
Definition integratedlinearform.hh:44
Local assembler corresponding to a skeleton bilinear form.
Definition integratedskeletonbilinearform.hh:43
Local assembler corresponding to a skeleton linear form.
Definition integratedskeletonlinearform.hh:43