dune-localfunctions
2.11
Toggle main menu visibility
Loading...
Searching...
No Matches
dune
localfunctions
brezzidouglasfortinmarini
cube
brezzidouglasfortinmarini/cube/localcoefficients.hh
Go to the documentation of this file.
1
// SPDX-FileCopyrightText: Copyright © DUNE Project contributors, see file LICENSE.md in module root
2
// SPDX-License-Identifier: LicenseRef-GPL-2.0-only-with-DUNE-exception
3
#ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASFORTINMARINI_CUBE_LOCALCOEFFICIENTS_HH
4
#define DUNE_LOCALFUNCTIONS_BREZZIDOUGLASFORTINMARINI_CUBE_LOCALCOEFFICIENTS_HH
5
6
#include <cstddef>
7
#include <vector>
8
9
#include <dune/common/math.hh>
10
#include <dune/common/rangeutilities.hh>
11
#include <dune/common/typetraits.hh>
12
13
#include <
dune/localfunctions/common/localkey.hh
>
14
15
namespace
Dune
16
{
17
31
template
<
class
D,
class
R,
unsigned
int
dim,
unsigned
int
order>
32
class
BDFMCubeLocalCoefficients
33
{
34
static
constexpr
unsigned
int
interiorDofs = dim*binomial(dim+order-2, order-2);
35
static
constexpr
unsigned
int
faceDofs = binomial(dim+order-2, order-1);
36
37
static
constexpr
std::size_t numFaces = 2*dim;
38
static
constexpr
std::size_t numDofs = numFaces*faceDofs + interiorDofs;
39
40
public
:
42
BDFMCubeLocalCoefficients
() : li(numDofs)
43
{
44
for
(
auto
j : range(numFaces))
45
for
(
auto
i : range(faceDofs))
46
li[j*faceDofs + i] =
LocalKey
(j, 1, i);
47
48
for
(
auto
i : range(interiorDofs))
49
li[numFaces*faceDofs + i] =
LocalKey
(0, 0, i);
50
}
51
53
std::size_t
size
()
const
{
return
numDofs; }
54
56
auto
localKey
(std::size_t i)
const
->
const
LocalKey
& {
return
li[i]; }
57
58
private
:
59
std::vector<LocalKey> li;
60
};
61
62
template
<
class
D,
class
R,
unsigned
int
dim,
unsigned
int
order>
63
constexpr
unsigned
int
BDFMCubeLocalCoefficients<D, R, dim, order>::interiorDofs;
64
65
template
<
class
D,
class
R,
unsigned
int
dim,
unsigned
int
order>
66
constexpr
unsigned
int
BDFMCubeLocalCoefficients<D, R, dim, order>::faceDofs;
67
68
template
<
class
D,
class
R,
unsigned
int
dim,
unsigned
int
order>
69
constexpr
std::size_t BDFMCubeLocalCoefficients<D, R, dim, order>::numFaces;
70
71
// template<class D, class R, unsigned int dim, unsigned int order>
72
// constexpr std::size_t BDFMCubeLocalCoefficients<D, R, dim, order>::numDofs;
73
74
75
#ifndef DOXYGEN
76
template
<
class
D,
class
R,
unsigned
int
dim>
77
class
BDFMCubeLocalCoefficients
<D, R, dim, 0>
78
{
79
static_assert
( AlwaysFalse<D>::value,
80
"`BDFMCubeLocalCoefficients` not defined for order 0."
);
81
};
82
#endif
// #ifndef DOXYGEN
83
84
}
// namespace Dune
85
86
#endif
// #ifndef DUNE_LOCALFUNCTIONS_BREZZIDOUGLASFORTINMARINI_CUBE_LOCALCOEFFICIENTS_HH
localkey.hh
Dune
Definition
bdfmcube.hh:18
Dune::BDFMCubeLocalCoefficients
Layout map for Brezzi-Douglas-Fortin-Marini elements on cubes.
Definition
brezzidouglasfortinmarini/cube/localcoefficients.hh:33
Dune::BDFMCubeLocalCoefficients::BDFMCubeLocalCoefficients
BDFMCubeLocalCoefficients()
Standard constructor.
Definition
brezzidouglasfortinmarini/cube/localcoefficients.hh:42
Dune::BDFMCubeLocalCoefficients::size
std::size_t size() const
number of coefficients
Definition
brezzidouglasfortinmarini/cube/localcoefficients.hh:53
Dune::BDFMCubeLocalCoefficients::localKey
auto localKey(std::size_t i) const -> const LocalKey &
geth i'th index
Definition
brezzidouglasfortinmarini/cube/localcoefficients.hh:56
Dune::LocalKey
Describe position of one degree of freedom.
Definition
localkey.hh:24
Generated by
1.17.0