Loading [MathJax]/extensions/tex2jax.js
ug4
Toggle main menu visibility
ug4
Modules
ugBase
libAlgebra
libDiscretization
libGrid
Plugins
Registry
Scripts
Apps
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
x
z
Functions
a
b
c
d
e
f
g
h
i
j
l
m
n
o
p
q
r
s
t
u
v
w
x
z
Variables
a
b
c
d
e
f
g
i
j
l
m
n
o
p
q
s
t
u
v
Typedefs
a
b
c
d
e
f
g
h
i
k
l
m
o
p
q
r
s
t
v
Enumerations
a
c
d
e
f
g
i
k
l
m
n
o
p
r
s
t
u
v
Enumerator
a
b
c
d
e
f
g
h
i
k
l
m
n
o
p
q
r
s
t
v
x
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
y
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
k
l
m
n
o
p
q
r
s
t
u
v
w
Enumerations
a
b
c
e
f
g
h
m
n
o
p
r
s
t
v
Enumerator
a
b
c
d
e
f
g
h
i
j
l
m
n
o
p
r
s
t
u
v
x
Related Symbols
a
b
c
d
f
g
h
i
k
l
m
n
o
p
s
t
v
Files
File List
File Members
All
_
a
b
c
d
e
f
g
h
i
j
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
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
~
Variables
_
a
b
c
e
g
l
n
o
p
r
s
u
v
y
Typedefs
Enumerations
Enumerator
b
g
l
n
t
y
Macros
_
a
b
c
d
e
f
g
h
i
j
l
m
n
o
p
r
s
t
u
v
w
y
▼
ug4
►
ug4 - Documentation
►
Modules
►
Namespaces
►
Classes
▼
Files
►
File List
►
File Members
•
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Modules
Pages
Loading...
Searching...
No Matches
util.h
Go to the documentation of this file.
1
/*
2
* Copyright (c) 2013-2015: G-CSC, Goethe University Frankfurt
3
* Author: Martin Rupp
4
*
5
* This file is part of UG4.
6
*
7
* UG4 is free software: you can redistribute it and/or modify it under the
8
* terms of the GNU Lesser General Public License version 3 (as published by the
9
* Free Software Foundation) with the following additional attribution
10
* requirements (according to LGPL/GPL v3 §7):
11
*
12
* (1) The following notice must be displayed in the Appropriate Legal Notices
13
* of covered and combined works: "Based on UG4 (www.ug4.org/license)".
14
*
15
* (2) The following notice must be displayed at a prominent place in the
16
* terminal output of covered works: "Based on UG4 (www.ug4.org/license)".
17
*
18
* (3) The following bibliography is recommended for citation and must be
19
* preserved in all covered files:
20
* "Reiter, S., Vogel, A., Heppner, I., Rupp, M., and Wittum, G. A massively
21
* parallel geometric multigrid solver on hierarchically distributed grids.
22
* Computing and visualization in science 16, 4 (2013), 151-164"
23
* "Vogel, A., Reiter, S., Rupp, M., Nägel, A., and Wittum, G. UG4 -- a novel
24
* flexible software system for simulating pde based models on high performance
25
* computers. Computing and visualization in science 16, 4 (2013), 165-179"
26
*
27
* This program is distributed in the hope that it will be useful,
28
* but WITHOUT ANY WARRANTY; without even the implied warranty of
29
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
30
* GNU Lesser General Public License for more details.
31
*/
32
33
#ifndef UTIL_H_
34
#define UTIL_H_
35
36
#include "
common/util/typename.h
"
37
38
namespace
ug
{
39
40
template
<
typename
TTo,
typename
TFrom>
41
TTo &
DownCast
(
const
TTo &pfrom, TFrom &p)
42
{
43
TTo *t =
dynamic_cast<
TTo*
>
(&
p
);
44
UG_ASSERT
(t,
"could not downcast "
<<
TypeName
(pfrom) <<
" to "
<<
TypeName
(
p
));
45
return
*t;
46
}
41
TTo &
DownCast
(
const
TTo &pfrom, TFrom &p) {
…
}
47
48
template
<
typename
TTo,
typename
TFrom>
49
TTo &
DownCast
(
const
TTo &pfrom,
const
TFrom &p)
50
{
51
const
TTo *t =
dynamic_cast<
const
TTo*
>
(&
p
);
52
UG_ASSERT
(t,
"could not downcast "
<<
TypeName
(pfrom) <<
" to "
<<
TypeName
(
p
));
53
return
*t;
54
}
49
TTo &
DownCast
(
const
TTo &pfrom,
const
TFrom &p) {
…
}
55
56
}
57
#endif
/* UTIL_H_ */
p
parameterString p
UG_ASSERT
#define UG_ASSERT(expr, msg)
Definition
assert.h:70
ug
the ug namespace
ug::DownCast
TTo & DownCast(const TTo &pfrom, TFrom &p)
Definition
util.h:41
ug::TypeName
std::string TypeName()
Definition
typename.h:46
typename.h
ugbase
lib_algebra
vector_interface
util.h
Generated on Mon Feb 24 2025 01:13:28 for ug4 by
1.9.8