@@ -38,6 +38,7 @@ class EquationSystems;
3838class Parameters ;
3939class Mesh ;
4040template <typename Output> class FunctionBase ;
41+ template <typename Output> class FEMFunctionBase ;
4142enum FEMNormType : int ;
4243
4344// Is there any way to simplify this?
@@ -112,13 +113,26 @@ class ExactSolution
112113 */
113114 void attach_exact_values (const std::vector<FunctionBase<Number> *> & f);
114115
116+ /* *
117+ * Clone and attach arbitrary functors which compute the exact
118+ * values of the EquationSystems' solutions at any point.
119+ */
120+ void attach_exact_values (const std::vector<FEMFunctionBase<Number> *> & f);
121+
115122 /* *
116123 * Clone and attach an arbitrary functor which computes the exact
117124 * value of the system \p sys_num solution at any point.
118125 */
119126 void attach_exact_value (unsigned int sys_num,
120127 FunctionBase<Number> * f);
121128
129+ /* *
130+ * Clone and attach an arbitrary functor which computes the exact
131+ * value of the system \p sys_num solution at any point.
132+ */
133+ void attach_exact_value (unsigned int sys_num,
134+ FEMFunctionBase<Number> * f);
135+
122136 /* *
123137 * Attach an arbitrary function which computes the exact value of
124138 * the solution at any point.
@@ -135,13 +149,26 @@ class ExactSolution
135149 */
136150 void attach_exact_derivs (const std::vector<FunctionBase<Gradient> *> & g);
137151
152+ /* *
153+ * Clone and attach arbitrary functors which compute the exact
154+ * gradients of the EquationSystems' solutions at any point.
155+ */
156+ void attach_exact_derivs (const std::vector<FEMFunctionBase<Gradient> *> & g);
157+
138158 /* *
139159 * Clone and attach an arbitrary functor which computes the exact
140160 * gradient of the system \p sys_num solution at any point.
141161 */
142162 void attach_exact_deriv (unsigned int sys_num,
143163 FunctionBase<Gradient> * g);
144164
165+ /* *
166+ * Clone and attach an arbitrary functor which computes the exact
167+ * gradient of the system \p sys_num solution at any point.
168+ */
169+ void attach_exact_deriv (unsigned int sys_num,
170+ FEMFunctionBase<Gradient> * g);
171+
145172 /* *
146173 * Attach an arbitrary function which computes the exact gradient of
147174 * the solution at any point.
@@ -157,6 +184,11 @@ class ExactSolution
157184 * second derivatives of the EquationSystems' solutions at any point.
158185 */
159186 void attach_exact_hessians (std::vector<FunctionBase<Tensor> *> h);
187+ /* *
188+ * Clone and attach arbitrary functors which compute the exact
189+ * second derivatives of the EquationSystems' solutions at any point.
190+ */
191+ void attach_exact_hessians (std::vector<FEMFunctionBase<Tensor> *> h);
160192
161193 /* *
162194 * Clone and attach an arbitrary functor which computes the exact
@@ -165,6 +197,13 @@ class ExactSolution
165197 void attach_exact_hessian (unsigned int sys_num,
166198 FunctionBase<Tensor> * h);
167199
200+ /* *
201+ * Clone and attach an arbitrary functor which computes the exact
202+ * second derivatives of the system \p sys_num solution at any point.
203+ */
204+ void attach_exact_hessian (unsigned int sys_num,
205+ FEMFunctionBase<Tensor> * h);
206+
168207 /* *
169208 * Attach an arbitrary function which computes the exact second
170209 * derivatives of the solution at any point.
@@ -315,19 +354,19 @@ class ExactSolution
315354 * User-provided functors which compute the exact value of the
316355 * solution for each system.
317356 */
318- std::vector<std::unique_ptr<FunctionBase <Number>>> _exact_values;
357+ std::vector<std::unique_ptr<FEMFunctionBase <Number>>> _exact_values;
319358
320359 /* *
321360 * User-provided functors which compute the exact derivative of the
322361 * solution for each system.
323362 */
324- std::vector<std::unique_ptr<FunctionBase <Gradient>>> _exact_derivs;
363+ std::vector<std::unique_ptr<FEMFunctionBase <Gradient>>> _exact_derivs;
325364
326365 /* *
327366 * User-provided functors which compute the exact hessians of the
328367 * solution for each system.
329368 */
330- std::vector<std::unique_ptr<FunctionBase <Tensor>>> _exact_hessians;
369+ std::vector<std::unique_ptr<FEMFunctionBase <Tensor>>> _exact_hessians;
331370
332371 /* *
333372 * Data structure which stores the errors:
0 commit comments