GCC Code Coverage Report


Directory: Bembel/src/
File: Bembel/src/LinearOperator/DifferentialFormEnum.hpp
Date: 2024-09-30 07:01:38
Exec Total Coverage
Lines: 2 2 100.0%
Functions: 3 3 100.0%
Branches: 0 0 -%

Line Branch Exec Source
1 // This file is part of Bembel, the higher order C++ boundary element library.
2 //
3 // Copyright (C) 2022 see <http://www.bembel.eu>
4 //
5 // It was written as part of a cooperation of J. Doelz, H. Harbrecht, S. Kurz,
6 // M. Multerer, S. Schoeps, and F. Wolf at Technische Universitaet Darmstadt,
7 // Universitaet Basel, and Universita della Svizzera italiana, Lugano. This
8 // source code is subject to the GNU General Public License version 3 and
9 // provided WITHOUT ANY WARRANTY, see <http://www.bembel.eu> for further
10 // information.
11 #ifndef BEMBEL_SRC_LINEAROPERATOR_DIFFERENTIALFORMENUM_HPP_
12 #define BEMBEL_SRC_LINEAROPERATOR_DIFFERENTIALFORMENUM_HPP_
13
14 namespace Bembel {
15 /**
16 * \ingroup LinearOperator
17 * \brief Provides information about the discrete space required for the
18 * discretisation of a specific operator.
19 **/
20 struct DifferentialForm {
21 enum { Continuous = 0, DivConforming = 1, Discontinuous = 2 };
22 };
23
24 /**
25 * \ingroup LinearOperator
26 * \brief struct containing specifications on DifferentialForms, i.e., the
27 * function spaces.
28 **/
29 template <unsigned int DifferentialForm, typename Scalar>
30 struct DifferentialFormTraits {
31 // empty, only to be used in its specialization
32 };
33 /**
34 * \brief Specification of the DifferentialFormTraits for the continuous case.
35 */
36 template <typename Scalar>
37 struct DifferentialFormTraits<DifferentialForm::Continuous, Scalar> {
38 enum { FunctionSpaceVectorDimension = 1, FunctionSpaceOutputDimension = 1 };
39
40 typedef Scalar FunctionSpaceValue;
41 };
42 /**
43 * \brief Specification of the DifferentialFormTraits for the div conforming
44 * case.
45 */
46 template <typename Scalar>
47 struct DifferentialFormTraits<DifferentialForm::DivConforming, Scalar> {
48 enum { FunctionSpaceVectorDimension = 2, FunctionSpaceOutputDimension = 3 };
49
50 typedef Eigen::Matrix<Scalar, 3, 1> FunctionSpaceValue;
51 };
52 /**
53 * \brief Specification of the DifferentialFormTraits for the discontinuous
54 * case.
55 */
56 template <typename Scalar>
57 struct DifferentialFormTraits<DifferentialForm::Discontinuous, Scalar> {
58 enum { FunctionSpaceVectorDimension = 1, FunctionSpaceOutputDimension = 1 };
59
60 typedef Scalar FunctionSpaceValue;
61 };
62
63 /**
64 * \deprecated Use DifferentialFormTraits instead.
65 */
66 template <unsigned int DF>
67 1090164 constexpr int getFunctionSpaceVectorDimension() {
68 1090164 return DifferentialFormTraits<DF, double>::FunctionSpaceVectorDimension;
69 }
70
71 /**
72 * \deprecated Use DifferentialFormTraits instead.
73 */
74 template <unsigned int DF>
75 constexpr int getFunctionSpaceOutputDimension() {
76 return DifferentialFormTraits<DF, double>::FunctionSpaceOutputDimension;
77 }
78
79 } // namespace Bembel
80
81 #endif // BEMBEL_SRC_LINEAROPERATOR_DIFFERENTIALFORMENUM_HPP_
82