21 #include "libmesh/parameters.h" 22 #include "libmesh/libmesh_common.h" 39 const std::string & unknown_name)
41 const auto *
const error_obj = params.
get<
const ExactSoln *>(unknown_name +
"_exact_sol");
42 return (*error_obj)(p);
55 return sin(y) * cos((1. / 2) * x *
pi);
57 return sin(1. / 2 * y *
pi) * cos(1. / 2 * x *
pi);
66 return nu * sin(y) * cos((1. / 2) * x *
pi) +
67 (1. / 4) *
pi *
pi *
nu * sin(y) * cos((1. / 2) * x *
pi) -
68 1. / 2 *
pi * sin(x) * sin(y) * sin((1. / 2) * y *
pi) * cos((1. / 2) * x *
pi) +
69 sin(x) * cos(y) * cos((1. / 2) * x *
pi) * cos((1. / 2) * y *
pi) -
70 pi * sin(y) * sin(y) * sin((1. / 2) * x *
pi) * cos((1. / 2) * x *
pi) +
75 const auto quant1 = sin((1. / 2) * y *
pi);
76 const auto quant2 = cos((1. / 2) * y *
pi);
77 return (1. / 2) *
pi *
pi *
nu * sin((1. / 2) * y *
pi) * cos((1. / 2) * x *
pi) -
78 1. / 2 *
pi * sin((1. / 4) * x *
pi) * quant1 * quant1 * cos((1. / 2) * x *
pi) -
79 1. / 4 *
pi * sin((1. / 4) * x *
pi) * sin((3. / 2) * y *
pi) +
80 (1. / 2) *
pi * sin((1. / 4) * x *
pi) * cos((1. / 2) * x *
pi) * quant2 * quant2 -
81 pi * sin((1. / 2) * x *
pi) * quant1 * quant1 * cos((1. / 2) * x *
pi);
100 return sin(x) * cos((1. / 2) * y *
pi);
102 return sin((1. / 4) * x *
pi) * cos((1. / 2) * y *
pi);
110 return nu * sin(x) * cos((1. / 2) * y *
pi) +
111 (1. / 4) *
pi *
pi *
nu * sin(x) * cos((1. / 2) * y *
pi) -
112 pi * sin(x) * sin(x) * sin((1. / 2) * y *
pi) * cos((1. / 2) * y *
pi) -
113 1. / 2 *
pi * sin(x) * sin(y) * sin((1. / 2) * x *
pi) * cos((1. / 2) * y *
pi) +
114 sin(y) * cos(x) * cos((1. / 2) * x *
pi) * cos((1. / 2) * y *
pi) + sin(x) * cos(y);
117 const auto quant1 = sin((1. / 4) * x *
pi);
118 return (5. / 16) *
pi *
pi *
nu * sin((1. / 4) * x *
pi) * cos((1. / 2) * y *
pi) -
119 pi * quant1 * quant1 * sin((1. / 2) * y *
pi) * cos((1. / 2) * y *
pi) -
120 1. / 2 *
pi * sin((1. / 4) * x *
pi) * sin((1. / 2) * x *
pi) *
121 sin((1. / 2) * y *
pi) * cos((1. / 2) * y *
pi) +
122 (1. / 4) *
pi * sin((1. / 2) * y *
pi) * cos((1. / 4) * x *
pi) *
123 cos((1. / 2) * x *
pi) * cos((1. / 2) * y *
pi) +
124 (3. / 2) *
pi * cos((1. / 4) * x *
pi) * cos((3. / 2) * y *
pi);
143 return sin(x) * sin(y);
145 return sin((3. / 2) * y *
pi) * cos((1. / 4) * x *
pi);
153 return -1. / 2 *
pi * sin(x) * sin((1. / 2) * y *
pi) -
154 1. / 2 *
pi * sin(y) * sin((1. / 2) * x *
pi);
156 return -1. / 2 *
pi * sin((1. / 4) * x *
pi) * sin((1. / 2) * y *
pi) -
157 1. / 2 *
pi * sin((1. / 2) * x *
pi) * sin((1. / 2) * y *
pi);
165 #endif // EXACT_SOLN_H
This class provides the ability to map between arbitrary, user-defined strings and several data types...
Real operator()(const Point &p) const override
virtual Real operator()(const Point &p) const =0
Number compute_error(const Point &p, const Parameters ¶ms, const std::string &, const std::string &unknown_name)
VSoln(const Real nu_in, const bool cavity_in)
The libMesh namespace provides an interface to certain functionality in the library.
USoln(const Real nu_in, const bool cavity_in)
Real operator()(const Point &p) const override
const T & get(std::string_view) const
Real forcing(const Point &p) const override
PSoln(const bool cavity_in)
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
Real forcing(const Point &p) const override
Real forcing(const Point &p) const override
Real operator()(const Point &p) const override
virtual Real forcing(const Point &p) const =0
A Point defines a location in LIBMESH_DIM dimensional Real space.