Loading [MathJax]/extensions/tex2jax.js
libMesh
Main Page
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
l
m
n
o
p
q
r
s
t
u
v
w
x
Variables
_
a
c
d
e
f
g
h
i
l
m
n
o
p
q
r
s
t
w
z
Typedefs
b
c
d
e
f
g
l
n
o
p
q
r
s
t
u
Enumerations
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
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
k
l
m
n
o
p
q
r
s
t
v
x
Enumerations
_
a
b
c
d
e
f
i
m
n
o
p
r
s
t
w
Enumerator
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
Related Functions
:
_
a
b
c
e
i
j
l
m
n
o
p
s
t
Files
File List
File Members
All
_
a
b
c
d
e
f
g
h
i
k
l
m
n
o
p
q
r
s
t
u
v
w
x
Functions
_
a
b
c
d
e
f
g
h
i
k
l
m
n
o
p
q
r
s
t
u
w
Variables
a
b
c
d
e
f
i
m
n
p
q
r
s
t
u
v
w
x
Typedefs
Enumerations
Enumerator
•
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Pages
include
numerics
fem_function_base.h
Go to the documentation of this file.
1
// The libMesh Finite Element Library.
2
// Copyright (C) 2002-2025 Benjamin S. Kirk, John W. Peterson, Roy H. Stogner
3
4
// This library is free software; you can redistribute it and/or
5
// modify it under the terms of the GNU Lesser General Public
6
// License as published by the Free Software Foundation; either
7
// version 2.1 of the License, or (at your option) any later version.
8
9
// This library is distributed in the hope that it will be useful,
10
// but WITHOUT ANY WARRANTY; without even the implied warranty of
11
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12
// Lesser General Public License for more details.
13
14
// You should have received a copy of the GNU Lesser General Public
15
// License along with this library; if not, write to the Free Software
16
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17
18
19
20
#ifndef LIBMESH_FEM_FUNCTION_BASE_H
21
#define LIBMESH_FEM_FUNCTION_BASE_H
22
23
// Local Includes
24
#include "libmesh/libmesh_common.h"
25
#include "libmesh/dense_vector.h"
// required to instantiate a DenseVector<> below
26
#include "libmesh/fem_context.h"
27
28
// C++ includes
29
#include <memory>
30
31
namespace
libMesh
32
{
33
34
// Forward Declarations
35
class
Point;
36
45
template
<
typename
Output=Number>
46
class
FEMFunctionBase
47
{
48
protected
:
49
53
FEMFunctionBase
() =
default
;
54
55
public
:
56
60
FEMFunctionBase
(
FEMFunctionBase
&&) =
default
;
61
FEMFunctionBase
(
const
FEMFunctionBase
&) =
default
;
62
FEMFunctionBase
&
operator=
(
const
FEMFunctionBase
&) =
default
;
63
FEMFunctionBase
&
operator=
(
FEMFunctionBase
&&) =
default
;
64
virtual
~FEMFunctionBase
() =
default
;
65
69
virtual
void
init
() {}
70
77
virtual
void
init_context
(
const
FEMContext
&) {}
78
86
virtual
std::unique_ptr<FEMFunctionBase<Output>>
clone
()
const
= 0;
87
94
virtual
Output
operator()
(
const
FEMContext
&,
95
const
Point
& p,
96
const
Real
time = 0.) = 0;
97
102
void
operator()
(
const
FEMContext
&,
103
const
Point
& p,
104
DenseVector<Output>
& output);
105
112
virtual
void
operator()
(
const
FEMContext
&,
113
const
Point
& p,
114
const
Real
time,
115
DenseVector<Output>
& output) = 0;
116
129
virtual
Output
component
(
const
FEMContext
&,
130
unsigned
int
i,
131
const
Point
& p,
132
Real
time=0.);
133
};
134
135
template
<
typename
Output>
136
inline
137
Output
FEMFunctionBase<Output>::component
(
const
FEMContext
& context,
138
unsigned
int
i,
139
const
Point
& p,
140
Real
time)
141
{
142
DenseVector<Output>
outvec(i+1);
143
(*this)(context, p, time, outvec);
144
return
outvec(i);
145
}
146
147
template
<
typename
Output>
148
inline
149
void
FEMFunctionBase<Output>::operator()
(
const
FEMContext
& context,
150
const
Point
& p,
151
DenseVector<Output>
& output)
152
{
153
// Call the time-dependent function with t=0.
154
this->operator()(context, p, 0., output);
155
}
156
157
}
// namespace libMesh
158
159
#endif // LIBMESH_FEM_FUNCTION_BASE_H
libMesh
The libMesh namespace provides an interface to certain functionality in the library.
libMesh::FEMFunctionBase::operator=
FEMFunctionBase & operator=(const FEMFunctionBase &)=default
libMesh::FEMFunctionBase::init_context
virtual void init_context(const FEMContext &)
Prepares a context object for use.
Definition:
fem_function_base.h:77
libMesh::FEMContext
This class provides all data required for a physics package (e.g.
Definition:
fem_context.h:62
libMesh::FEMFunctionBase::init
virtual void init()
Any post-construction initialization.
Definition:
fem_function_base.h:69
libMesh::FEMFunctionBase::FEMFunctionBase
FEMFunctionBase()=default
Constructor.
libMesh::Real
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
Definition:
libmesh_common.h:144
libMesh::FEMFunctionBase::~FEMFunctionBase
virtual ~FEMFunctionBase()=default
libMesh::FEMFunctionBase::operator()
virtual Output operator()(const FEMContext &, const Point &p, const Real time=0.)=0
libMesh::FEMFunctionBase::component
virtual Output component(const FEMContext &, unsigned int i, const Point &p, Real time=0.)
Definition:
fem_function_base.h:137
libMesh::DenseVector< Output >
libMesh::FEMFunctionBase::clone
virtual std::unique_ptr< FEMFunctionBase< Output > > clone() const =0
libMesh::Point
A Point defines a location in LIBMESH_DIM dimensional Real space.
Definition:
point.h:39
Generated on Tue Apr 22 2025 21:45:39 for libMesh by
1.8.14