Loading [MathJax]/extensions/TeX/newcommand.js
Reference documentation for deal.II version 9.2.0
\newcommand{\dealvcentcolon}{\mathrel{\mathop{:}}}
\newcommand{\dealcoloneq}{\dealvcentcolon\mathrel{\mkern-1.2mu}=}
\newcommand{\jump}[1]{\left[\!\left[ #1 \right]\!\right]}
\newcommand{\average}[1]{\left\{\!\left\{ #1 \right\}\!\right\}}
Main Page
Tutorial
Code gallery
Modules
Namespaces
Namespace List
Namespace Members
All
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
z
Functions
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
Variables
a
b
c
d
e
f
i
l
m
n
o
p
r
s
t
u
v
w
z
Typedefs
a
b
c
g
i
l
m
o
p
s
t
v
Enumerations
Enumerator
a
b
c
d
e
f
g
h
i
l
m
n
o
p
r
s
t
u
v
w
Classes
Class List
Class Index
Class Hierarchy
Class Members
All
:
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
~
Functions
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
z
~
Variables
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Typedefs
a
b
c
d
e
f
g
h
i
j
l
m
n
o
p
q
r
s
t
v
w
Enumerations
a
b
c
d
e
f
g
i
m
o
p
r
s
t
u
v
w
z
Enumerator
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
Related Functions
:
a
b
c
d
f
g
h
i
l
m
o
p
r
s
t
u
v
Related Pages
Files
File List
File Members
All
a
b
c
d
e
f
g
h
i
l
m
n
o
p
q
r
s
t
u
v
z
Functions
a
b
c
d
e
f
g
h
i
l
m
n
o
p
s
t
u
v
z
Variables
a
c
d
f
g
i
l
m
p
q
s
t
u
v
Typedefs
Enumerations
Enumerator
m
u
Macros
a
b
d
e
h
i
m
s
t
dealii.org
•
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Modules
Pages
source
base
vectorization.cc
Go to the documentation of this file.
1
// ---------------------------------------------------------------------
2
//
3
// Copyright (C) 2018 - 2020 by the deal.II authors
4
//
5
// This file is part of the deal.II library.
6
//
7
// The deal.II library is free software; you can use it, redistribute
8
// it, and/or modify it under the terms of the GNU Lesser General
9
// Public License as published by the Free Software Foundation; either
10
// version 2.1 of the License, or (at your option) any later version.
11
// The full text of the license can be found in the file LICENSE at
12
// the top level of the deal.II distribution.
13
//
14
// ---------------------------------------------------------------------
15
16
#include <
deal.II/base/vectorization.h
>
17
18
DEAL_II_NAMESPACE_OPEN
19
20
// VectorizedArray must be a POD (plain old data) type to make sure it
21
// can use maximum level of compiler optimization.
22
// A type is POD if it has standard layout (similar to a C struct)
23
// and it is trivial (can be statically default initialized)
24
// Here, the trait std::is_pod cannot be used because it is deprecated
25
// in C++20.
26
static_assert(std::is_standard_layout<
VectorizedArray<double>
>::
value
&&
27
std::is_trivial<
VectorizedArray<double>
>::
value
,
28
"VectorizedArray<double> must be a POD type"
);
29
static_assert(std::is_standard_layout<
VectorizedArray<float>
>::
value
&&
30
std::is_trivial<
VectorizedArray<float>
>::
value
,
31
"VectorizedArray<float> must be a POD type"
);
32
33
// For the specializations of VectorizedArray, we need to instantiate the
34
// static constexpr variable for some compilers. On the other hand, MSCV wants
35
// us explicitly to not do so, otherwise we get: "error C2908: explicit
36
// specialization 'const unsigned int
37
// ::VectorizedArray<double, 2>::n_array_elements' has already been
38
// instantiated".
39
#if DEAL_II_VECTORIZATION_WIDTH_IN_BITS >= 128 && !defined(DEAL_II_MSVC)
40
# if DEAL_II_VECTORIZATION_WIDTH_IN_BITS >= 512
41
const
unsigned
int
VectorizedArray<double, 8>::n_array_elements
;
42
const
unsigned
int
VectorizedArray<float, 16>::n_array_elements
;
43
# endif
44
45
# if DEAL_II_VECTORIZATION_WIDTH_IN_BITS >= 256
46
const
unsigned
int
VectorizedArray<double, 4>::n_array_elements
;
47
const
unsigned
int
VectorizedArray<float, 8>::n_array_elements
;
48
# endif
49
50
# if DEAL_II_VECTORIZATION_WIDTH_IN_BITS >= 128
51
const
unsigned
int
VectorizedArray<double, 2>::n_array_elements
;
52
const
unsigned
int
VectorizedArray<float, 4>::n_array_elements
;
53
# endif
54
#endif
55
56
DEAL_II_NAMESPACE_CLOSE
vectorization.h
VectorizedArray< double >
DEAL_II_NAMESPACE_OPEN
#define DEAL_II_NAMESPACE_OPEN
Definition:
config.h:358
value
static const bool value
Definition:
dof_tools_constraints.cc:433
DEAL_II_NAMESPACE_CLOSE
#define DEAL_II_NAMESPACE_CLOSE
Definition:
config.h:359
Generated by
1.8.17