libMesh
const_function.h
Go to the documentation of this file.
1 // The libMesh Finite Element Library.
2 // Copyright (C) 2002-2017 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 #ifndef LIBMESH_CONST_FUNCTION_H
20 #define LIBMESH_CONST_FUNCTION_H
21 
22 // Local includes
23 #include "libmesh/dense_vector.h"
24 #include "libmesh/function_base.h"
25 #include "libmesh/point.h"
26 
27 // C++ includes
28 #include <string>
29 
30 namespace libMesh
31 {
32 
41 template <typename Output=Number>
42 class ConstFunction : public FunctionBase<Output>
43 {
44 public:
45  explicit
46  ConstFunction (const Output & c) : _c(c)
47  {
48  this->_initialized = true;
49  this->_is_time_dependent = false;
50  }
51 
52  virtual Output operator() (const Point &,
53  const Real = 0) libmesh_override
54  { return _c; }
55 
56  virtual void operator() (const Point &,
57  const Real,
58  DenseVector<Output> & output) libmesh_override
59  {
60  unsigned int size = output.size();
61  for (unsigned int i=0; i != size; ++i)
62  output(i) = _c;
63  }
64 
65  virtual UniquePtr<FunctionBase<Output>> clone() const libmesh_override
66  {
69  }
70 
71 private:
72  Output _c;
73 };
74 
75 } // namespace libMesh
76 
77 #endif // LIBMESH_CONST_FUNCTION_H
virtual Output operator()(const Point &, const Real=0) libmesh_override
bool _initialized
When init() was called so that everything is ready for calls to operator() (...), then this bool is t...
The libMesh namespace provides an interface to certain functionality in the library.
std::unique_ptr< T > UniquePtr
Definition: auto_ptr.h:46
bool _is_time_dependent
Cache whether or not this function is actually time-dependent.
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
ConstFunction(const Output &c)
Function that returns a single value that never changes.
virtual UniquePtr< FunctionBase< Output > > clone() const libmesh_override
Defines a dense vector for use in Finite Element-type computations.
This is the base class for functor-like classes.
A Point defines a location in LIBMESH_DIM dimensional Real space.
Definition: point.h:38