18#ifndef SOLUTION_FUNCTION_H
19#define SOLUTION_FUNCTION_H
22#include "libmesh/function_base.h"
32template <
unsigned int dim>
43 virtual std::unique_ptr<FunctionBase<Number>>
clone()
const override
45 return std::make_unique<SolutionFunction>();
50 const auto size =
dim == 2 ? 4 : 5;
52 (*this)(p, time, outvec);
67 const Real x = p(0), y = p(1);
70 const auto vector = soln(x, y);
71 output(0) = vector(0);
72 output(1) = vector(1);
73 const auto scalar = soln.scalar(x, y);
85 const Real x = p(0), y = p(1), z = p(2);
88 const auto vector = soln(x, y, z);
89 output(0) = vector(0);
90 output(1) = vector(1);
91 output(2) = vector(2);
92 const auto scalar = soln.scalar(x, y, z);
97template <
unsigned int dim>
108 virtual std::unique_ptr<FunctionBase<Gradient>>
clone()
const override
110 return std::make_unique<SolutionGradient>();
115 const auto size =
dim == 2 ? 4 : 5;
117 (*this)(p, time, outvec);
130 const Real x = p(0), y = p(1);
131 output(0) = soln.grad(x, y).row(0);
132 output(1) = soln.grad(x, y).row(1);
140 const Real x = p(0), y = p(1), z = p(2);
141 output(0) = soln.grad(x, y, z).row(0);
142 output(1) = soln.grad(x, y, z).row(1);
143 output(2) = soln.grad(x, y, z).row(2);
virtual Number component(unsigned int i, const Point &p, Real time=0.) override
virtual void operator()(const Point &p, const Real, DenseVector< Number > &output) override
Evaluation function for time-dependent vector-valued functions.
virtual Number operator()(const Point &, const Real=0)
virtual Number operator()(const Point &, const Real=0) override
virtual std::unique_ptr< FunctionBase< Number > > clone() const override
SolutionFunction()=default
~SolutionFunction()=default
virtual std::unique_ptr< FunctionBase< Gradient > > clone() const override
~SolutionGradient()=default
SolutionGradient()=default
virtual Gradient operator()(const Point &, const Real=0)
virtual void operator()(const Point &p, const Real, DenseVector< Gradient > &output) override
Evaluation function for time-dependent vector-valued functions.
virtual Gradient operator()(const Point &, const Real=0) override
virtual Gradient component(unsigned int i, const Point &p, Real time=0.) override
Defines a dense vector for use in Finite Element-type computations.
virtual void zero() override final
Set every element in the vector to 0.
virtual unsigned int size() const override final
Base class for functors that can be evaluated at a point and (optionally) time.
A Point defines a location in LIBMESH_DIM dimensional Real space.
This class defines a vector in LIBMESH_DIM dimensional Real or Complex space.
The libMesh namespace provides an interface to certain functionality in the library.
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real