WaveBEM: Unsteady Nonlinear Potential Flow Solver for Ship-Wave Interaction.
ass_leg_function.h
Go to the documentation of this file.
1 //---------------------------- step-34.cc ---------------------------
2 // $Id: step-34.cc 18734 2009-04-25 13:36:48Z heltai $
3 // Version: $Name$
4 //
5 // Copyright (C) 2009 by the deal.II authors
6 //
7 // This file is subject to QPL and may not be distributed
8 // without copyright and license information. Please refer
9 // to the file deal.II/doc/license.html for the text and
10 // further information on this license.
11 //
12 // Authors: Luca Heltai, Cataldo Manigrasso
13 //
14 //---------------------------- step-34.cc ---------------------------
15 
16 
17 // @sect3{Include files}
18 
19 // The program starts with including a bunch
20 // of include files that we will use in the
21 // various parts of the program. Most of them
22 // have been discussed in previous tutorials
23 // already:
24 
25 #ifndef __polimi__ass_leg_function_h
26 #define __polimi__ass_leg_function_h
27 
33 #include <deal.II/base/utilities.h>
34 
37 #include <deal.II/lac/matrix_lib.h>
38 #include <deal.II/lac/vector.h>
43 
44 #include <deal.II/grid/tria.h>
48 #include <deal.II/grid/grid_in.h>
49 #include <deal.II/grid/grid_out.h>
51 
54 #include <deal.II/dofs/dof_tools.h>
56 #include <deal.II/fe/fe_q.h>
57 #include <deal.II/fe/fe_values.h>
58 #include <deal.II/fe/fe_system.h>
60 #include <deal.II/fe/mapping_q1.h>
61 
65 #include <vector>
66 
67 using namespace dealii;
68 
69 
70 
72 {
73 public:
74 
76 
77  ~AssLegFunction();
78 
79 
80  void AssLegFunSph(const unsigned int p, const unsigned int m, double x, double y[]);
81 
82  void AssLegFunSphDeriv(const unsigned int p, const unsigned int m, double x, double y[], double dy[]);
83 
84  double GetAssLegFunSph(const unsigned int n, const unsigned int m, double x) const;
85 
86  double GetAssLegFunSphDeriv(const unsigned int n, const unsigned int m, double x) const;
87 
88 
89 private:
90 
91  std::vector <std::vector <double (AssLegFunction::*)(const double ) const> > leg_pointers;
92  std::vector <std::vector <double (AssLegFunction::*)(const double ) const> > leg_der_pointers;
93 
95  double P_0_0 (const double x) const;
96  double P_0_0_Deriv (const double x) const;
97  double P_1_0 (const double x) const;
98  double P_1_0_Deriv (const double x) const;
99  double P_1_1 (const double x) const;
100  double P_1_1_Deriv (const double x) const;
101  double P_2_0 (const double x) const;
102  double P_2_0_Deriv (const double x) const;
103  double P_2_1 (const double x) const;
104  double P_2_1_Deriv (const double x) const;
105  double P_2_2 (const double x) const;
106  double P_2_2_Deriv (const double x) const;
107  double P_3_0 (const double x) const;
108  double P_3_0_Deriv (const double x) const;
109  double P_3_1 (const double x) const;
110  double P_3_1_Deriv (const double x) const;
111  double P_3_2 (const double x) const;
112  double P_3_2_Deriv (const double x) const;
113  double P_3_3 (const double x) const;
114  double P_3_3_Deriv (const double x) const;
115  double P_4_0 (const double x) const;
116  double P_4_0_Deriv (const double x) const;
117  double P_4_1 (const double x) const;
118  double P_4_1_Deriv (const double x) const;
119  double P_4_2 (const double x) const;
120  double P_4_2_Deriv (const double x) const;
121  double P_4_3 (const double x) const;
122  double P_4_3_Deriv (const double x) const;
123  double P_4_4 (const double x) const;
124  double P_4_4_Deriv (const double x) const;
125  double P_5_0 (const double x) const;
126  double P_5_0_Deriv (const double x) const;
127  double P_5_1 (const double x) const;
128  double P_5_1_Deriv (const double x) const;
129  double P_5_2 (const double x) const;
130  double P_5_2_Deriv (const double x) const;
131  double P_5_3 (const double x) const;
132  double P_5_3_Deriv (const double x) const;
133  double P_5_4 (const double x) const;
134  double P_5_4_Deriv (const double x) const;
135  double P_5_5 (const double x) const;
136  double P_5_5_Deriv (const double x) const;
137  double P_6_0 (const double x) const;
138  double P_6_0_Deriv (const double x) const;
139  double P_6_1 (const double x) const;
140  double P_6_1_Deriv (const double x) const;
141  double P_6_2 (const double x) const;
142  double P_6_2_Deriv (const double x) const;
143  double P_6_3 (const double x) const;
144  double P_6_3_Deriv (const double x) const;
145  double P_6_4 (const double x) const;
146  double P_6_4_Deriv (const double x) const;
147  double P_6_5 (const double x) const;
148  double P_6_5_Deriv (const double x) const;
149  double P_6_6 (const double x) const;
150  double P_6_6_Deriv (const double x) const;
151  double P_7_0 (const double x) const;
152  double P_7_0_Deriv (const double x) const;
153  double P_7_1 (const double x) const;
154  double P_7_1_Deriv (const double x) const;
155  double P_7_2 (const double x) const;
156  double P_7_2_Deriv (const double x) const;
157  double P_7_3 (const double x) const;
158  double P_7_3_Deriv (const double x) const;
159  double P_7_4 (const double x) const;
160  double P_7_4_Deriv (const double x) const;
161  double P_7_5 (const double x) const;
162  double P_7_5_Deriv (const double x) const;
163  double P_7_6 (const double x) const;
164  double P_7_6_Deriv (const double x) const;
165  double P_7_7 (const double x) const;
166  double P_7_7_Deriv (const double x) const;
167  double P_8_0 (const double x) const;
168  double P_8_0_Deriv (const double x) const;
169  double P_8_1 (const double x) const;
170  double P_8_1_Deriv (const double x) const;
171  double P_8_2 (const double x) const;
172  double P_8_2_Deriv (const double x) const;
173  double P_8_3 (const double x) const;
174  double P_8_3_Deriv (const double x) const;
175  double P_8_4 (const double x) const;
176  double P_8_4_Deriv (const double x) const;
177  double P_8_5 (const double x) const;
178  double P_8_5_Deriv (const double x) const;
179  double P_8_6 (const double x) const;
180  double P_8_6_Deriv (const double x) const;
181  double P_8_7 (const double x) const;
182  double P_8_7_Deriv (const double x) const;
183  double P_8_8 (const double x) const;
184  double P_8_8_Deriv (const double x) const;
185  double P_9_0 (const double x) const;
186  double P_9_0_Deriv (const double x) const;
187  double P_9_1 (const double x) const;
188  double P_9_1_Deriv (const double x) const;
189  double P_9_2 (const double x) const;
190  double P_9_2_Deriv (const double x) const;
191  double P_9_3 (const double x) const;
192  double P_9_3_Deriv (const double x) const;
193  double P_9_4 (const double x) const;
194  double P_9_4_Deriv (const double x) const;
195  double P_9_5 (const double x) const;
196  double P_9_5_Deriv (const double x) const;
197  double P_9_6 (const double x) const;
198  double P_9_6_Deriv (const double x) const;
199  double P_9_7 (const double x) const;
200  double P_9_7_Deriv (const double x) const;
201  double P_9_8 (const double x) const;
202  double P_9_8_Deriv (const double x) const;
203  double P_9_9 (const double x) const;
204  double P_9_9_Deriv (const double x) const;
205  double P_10_0 (const double x) const;
206  double P_10_0_Deriv (const double x) const;
207  double P_10_1 (const double x) const;
208  double P_10_1_Deriv (const double x) const;
209  double P_10_2 (const double x) const;
210  double P_10_2_Deriv (const double x) const;
211  double P_10_3 (const double x) const;
212  double P_10_3_Deriv (const double x) const;
213  double P_10_4 (const double x) const;
214  double P_10_4_Deriv (const double x) const;
215  double P_10_5 (const double x) const;
216  double P_10_5_Deriv (const double x) const;
217  double P_10_6 (const double x) const;
218  double P_10_6_Deriv (const double x) const;
219  double P_10_7 (const double x) const;
220  double P_10_7_Deriv (const double x) const;
221  double P_10_8 (const double x) const;
222  double P_10_8_Deriv (const double x) const;
223  double P_10_9 (const double x) const;
224  double P_10_9_Deriv (const double x) const;
225  double P_10_10 (const double x) const;
226  double P_10_10_Deriv (const double x) const;
227  double P_11_0 (const double x) const;
228  double P_11_0_Deriv (const double x) const;
229  double P_11_1 (const double x) const;
230  double P_11_1_Deriv (const double x) const;
231  double P_11_2 (const double x) const;
232  double P_11_2_Deriv (const double x) const;
233  double P_11_3 (const double x) const;
234  double P_11_3_Deriv (const double x) const;
235  double P_11_4 (const double x) const;
236  double P_11_4_Deriv (const double x) const;
237  double P_11_5 (const double x) const;
238  double P_11_5_Deriv (const double x) const;
239  double P_11_6 (const double x) const;
240  double P_11_6_Deriv (const double x) const;
241  double P_11_7 (const double x) const;
242  double P_11_7_Deriv (const double x) const;
243  double P_11_8 (const double x) const;
244  double P_11_8_Deriv (const double x) const;
245  double P_11_9 (const double x) const;
246  double P_11_9_Deriv (const double x) const;
247  double P_11_10 (const double x) const;
248  double P_11_10_Deriv (const double x) const;
249  double P_11_11 (const double x) const;
250  double P_11_11_Deriv (const double x) const;
251  double P_12_0 (const double x) const;
252  double P_12_0_Deriv (const double x) const;
253  double P_12_1 (const double x) const;
254  double P_12_1_Deriv (const double x) const;
255  double P_12_2 (const double x) const;
256  double P_12_2_Deriv (const double x) const;
257  double P_12_3 (const double x) const;
258  double P_12_3_Deriv (const double x) const;
259  double P_12_4 (const double x) const;
260  double P_12_4_Deriv (const double x) const;
261  double P_12_5 (const double x) const;
262  double P_12_5_Deriv (const double x) const;
263  double P_12_6 (const double x) const;
264  double P_12_6_Deriv (const double x) const;
265  double P_12_7 (const double x) const;
266  double P_12_7_Deriv (const double x) const;
267  double P_12_8 (const double x) const;
268  double P_12_8_Deriv (const double x) const;
269  double P_12_9 (const double x) const;
270  double P_12_9_Deriv (const double x) const;
271  double P_12_10 (const double x) const;
272  double P_12_10_Deriv (const double x) const;
273  double P_12_11 (const double x) const;
274  double P_12_11_Deriv (const double x) const;
275  double P_12_12 (const double x) const;
276  double P_12_12_Deriv (const double x) const;
277  double P_13_0 (const double x) const;
278  double P_13_0_Deriv (const double x) const;
279  double P_13_1 (const double x) const;
280  double P_13_1_Deriv (const double x) const;
281  double P_13_2 (const double x) const;
282  double P_13_2_Deriv (const double x) const;
283  double P_13_3 (const double x) const;
284  double P_13_3_Deriv (const double x) const;
285  double P_13_4 (const double x) const;
286  double P_13_4_Deriv (const double x) const;
287  double P_13_5 (const double x) const;
288  double P_13_5_Deriv (const double x) const;
289  double P_13_6 (const double x) const;
290  double P_13_6_Deriv (const double x) const;
291  double P_13_7 (const double x) const;
292  double P_13_7_Deriv (const double x) const;
293  double P_13_8 (const double x) const;
294  double P_13_8_Deriv (const double x) const;
295  double P_13_9 (const double x) const;
296  double P_13_9_Deriv (const double x) const;
297  double P_13_10 (const double x) const;
298  double P_13_10_Deriv (const double x) const;
299  double P_13_11 (const double x) const;
300  double P_13_11_Deriv (const double x) const;
301  double P_13_12 (const double x) const;
302  double P_13_12_Deriv (const double x) const;
303  double P_13_13 (const double x) const;
304  double P_13_13_Deriv (const double x) const;
305  double P_14_0 (const double x) const;
306  double P_14_0_Deriv (const double x) const;
307  double P_14_1 (const double x) const;
308  double P_14_1_Deriv (const double x) const;
309  double P_14_2 (const double x) const;
310  double P_14_2_Deriv (const double x) const;
311  double P_14_3 (const double x) const;
312  double P_14_3_Deriv (const double x) const;
313  double P_14_4 (const double x) const;
314  double P_14_4_Deriv (const double x) const;
315  double P_14_5 (const double x) const;
316  double P_14_5_Deriv (const double x) const;
317  double P_14_6 (const double x) const;
318  double P_14_6_Deriv (const double x) const;
319  double P_14_7 (const double x) const;
320  double P_14_7_Deriv (const double x) const;
321  double P_14_8 (const double x) const;
322  double P_14_8_Deriv (const double x) const;
323  double P_14_9 (const double x) const;
324  double P_14_9_Deriv (const double x) const;
325  double P_14_10 (const double x) const;
326  double P_14_10_Deriv (const double x) const;
327  double P_14_11 (const double x) const;
328  double P_14_11_Deriv (const double x) const;
329  double P_14_12 (const double x) const;
330  double P_14_12_Deriv (const double x) const;
331  double P_14_13 (const double x) const;
332  double P_14_13_Deriv (const double x) const;
333  double P_14_14 (const double x) const;
334  double P_14_14_Deriv (const double x) const;
335  double P_15_0 (const double x) const;
336  double P_15_0_Deriv (const double x) const;
337  double P_15_1 (const double x) const;
338  double P_15_1_Deriv (const double x) const;
339  double P_15_2 (const double x) const;
340  double P_15_2_Deriv (const double x) const;
341  double P_15_3 (const double x) const;
342  double P_15_3_Deriv (const double x) const;
343  double P_15_4 (const double x) const;
344  double P_15_4_Deriv (const double x) const;
345  double P_15_5 (const double x) const;
346  double P_15_5_Deriv (const double x) const;
347  double P_15_6 (const double x) const;
348  double P_15_6_Deriv (const double x) const;
349  double P_15_7 (const double x) const;
350  double P_15_7_Deriv (const double x) const;
351  double P_15_8 (const double x) const;
352  double P_15_8_Deriv (const double x) const;
353  double P_15_9 (const double x) const;
354  double P_15_9_Deriv (const double x) const;
355  double P_15_10 (const double x) const;
356  double P_15_10_Deriv (const double x) const;
357  double P_15_11 (const double x) const;
358  double P_15_11_Deriv (const double x) const;
359  double P_15_12 (const double x) const;
360  double P_15_12_Deriv (const double x) const;
361  double P_15_13 (const double x) const;
362  double P_15_13_Deriv (const double x) const;
363  double P_15_14 (const double x) const;
364  double P_15_14_Deriv (const double x) const;
365  double P_15_15 (const double x) const;
366  double P_15_15_Deriv (const double x) const;
367  double P_16_0 (const double x) const;
368  double P_16_0_Deriv (const double x) const;
369  double P_16_1 (const double x) const;
370  double P_16_1_Deriv (const double x) const;
371  double P_16_2 (const double x) const;
372  double P_16_2_Deriv (const double x) const;
373  double P_16_3 (const double x) const;
374  double P_16_3_Deriv (const double x) const;
375  double P_16_4 (const double x) const;
376  double P_16_4_Deriv (const double x) const;
377  double P_16_5 (const double x) const;
378  double P_16_5_Deriv (const double x) const;
379  double P_16_6 (const double x) const;
380  double P_16_6_Deriv (const double x) const;
381  double P_16_7 (const double x) const;
382  double P_16_7_Deriv (const double x) const;
383  double P_16_8 (const double x) const;
384  double P_16_8_Deriv (const double x) const;
385  double P_16_9 (const double x) const;
386  double P_16_9_Deriv (const double x) const;
387  double P_16_10 (const double x) const;
388  double P_16_10_Deriv (const double x) const;
389  double P_16_11 (const double x) const;
390  double P_16_11_Deriv (const double x) const;
391  double P_16_12 (const double x) const;
392  double P_16_12_Deriv (const double x) const;
393  double P_16_13 (const double x) const;
394  double P_16_13_Deriv (const double x) const;
395  double P_16_14 (const double x) const;
396  double P_16_14_Deriv (const double x) const;
397  double P_16_15 (const double x) const;
398  double P_16_15_Deriv (const double x) const;
399  double P_16_16 (const double x) const;
400  double P_16_16_Deriv (const double x) const;
401  double P_17_0 (const double x) const;
402  double P_17_0_Deriv (const double x) const;
403  double P_17_1 (const double x) const;
404  double P_17_1_Deriv (const double x) const;
405  double P_17_2 (const double x) const;
406  double P_17_2_Deriv (const double x) const;
407  double P_17_3 (const double x) const;
408  double P_17_3_Deriv (const double x) const;
409  double P_17_4 (const double x) const;
410  double P_17_4_Deriv (const double x) const;
411  double P_17_5 (const double x) const;
412  double P_17_5_Deriv (const double x) const;
413  double P_17_6 (const double x) const;
414  double P_17_6_Deriv (const double x) const;
415  double P_17_7 (const double x) const;
416  double P_17_7_Deriv (const double x) const;
417  double P_17_8 (const double x) const;
418  double P_17_8_Deriv (const double x) const;
419  double P_17_9 (const double x) const;
420  double P_17_9_Deriv (const double x) const;
421  double P_17_10 (const double x) const;
422  double P_17_10_Deriv (const double x) const;
423  double P_17_11 (const double x) const;
424  double P_17_11_Deriv (const double x) const;
425  double P_17_12 (const double x) const;
426  double P_17_12_Deriv (const double x) const;
427  double P_17_13 (const double x) const;
428  double P_17_13_Deriv (const double x) const;
429  double P_17_14 (const double x) const;
430  double P_17_14_Deriv (const double x) const;
431  double P_17_15 (const double x) const;
432  double P_17_15_Deriv (const double x) const;
433  double P_17_16 (const double x) const;
434  double P_17_16_Deriv (const double x) const;
435  double P_17_17 (const double x) const;
436  double P_17_17_Deriv (const double x) const;
437  double P_18_0 (const double x) const;
438  double P_18_0_Deriv (const double x) const;
439  double P_18_1 (const double x) const;
440  double P_18_1_Deriv (const double x) const;
441  double P_18_2 (const double x) const;
442  double P_18_2_Deriv (const double x) const;
443  double P_18_3 (const double x) const;
444  double P_18_3_Deriv (const double x) const;
445  double P_18_4 (const double x) const;
446  double P_18_4_Deriv (const double x) const;
447  double P_18_5 (const double x) const;
448  double P_18_5_Deriv (const double x) const;
449  double P_18_6 (const double x) const;
450  double P_18_6_Deriv (const double x) const;
451  double P_18_7 (const double x) const;
452  double P_18_7_Deriv (const double x) const;
453  double P_18_8 (const double x) const;
454  double P_18_8_Deriv (const double x) const;
455  double P_18_9 (const double x) const;
456  double P_18_9_Deriv (const double x) const;
457  double P_18_10 (const double x) const;
458  double P_18_10_Deriv (const double x) const;
459  double P_18_11 (const double x) const;
460  double P_18_11_Deriv (const double x) const;
461  double P_18_12 (const double x) const;
462  double P_18_12_Deriv (const double x) const;
463  double P_18_13 (const double x) const;
464  double P_18_13_Deriv (const double x) const;
465  double P_18_14 (const double x) const;
466  double P_18_14_Deriv (const double x) const;
467  double P_18_15 (const double x) const;
468  double P_18_15_Deriv (const double x) const;
469  double P_18_16 (const double x) const;
470  double P_18_16_Deriv (const double x) const;
471  double P_18_17 (const double x) const;
472  double P_18_17_Deriv (const double x) const;
473  double P_18_18 (const double x) const;
474  double P_18_18_Deriv (const double x) const;
475  double P_19_0 (const double x) const;
476  double P_19_0_Deriv (const double x) const;
477  double P_19_1 (const double x) const;
478  double P_19_1_Deriv (const double x) const;
479  double P_19_2 (const double x) const;
480  double P_19_2_Deriv (const double x) const;
481  double P_19_3 (const double x) const;
482  double P_19_3_Deriv (const double x) const;
483  double P_19_4 (const double x) const;
484  double P_19_4_Deriv (const double x) const;
485  double P_19_5 (const double x) const;
486  double P_19_5_Deriv (const double x) const;
487  double P_19_6 (const double x) const;
488  double P_19_6_Deriv (const double x) const;
489  double P_19_7 (const double x) const;
490  double P_19_7_Deriv (const double x) const;
491  double P_19_8 (const double x) const;
492  double P_19_8_Deriv (const double x) const;
493  double P_19_9 (const double x) const;
494  double P_19_9_Deriv (const double x) const;
495  double P_19_10 (const double x) const;
496  double P_19_10_Deriv (const double x) const;
497  double P_19_11 (const double x) const;
498  double P_19_11_Deriv (const double x) const;
499  double P_19_12 (const double x) const;
500  double P_19_12_Deriv (const double x) const;
501  double P_19_13 (const double x) const;
502  double P_19_13_Deriv (const double x) const;
503  double P_19_14 (const double x) const;
504  double P_19_14_Deriv (const double x) const;
505  double P_19_15 (const double x) const;
506  double P_19_15_Deriv (const double x) const;
507  double P_19_16 (const double x) const;
508  double P_19_16_Deriv (const double x) const;
509  double P_19_17 (const double x) const;
510  double P_19_17_Deriv (const double x) const;
511  double P_19_18 (const double x) const;
512  double P_19_18_Deriv (const double x) const;
513  double P_19_19 (const double x) const;
514  double P_19_19_Deriv (const double x) const;
515  double P_20_0 (const double x) const;
516  double P_20_0_Deriv (const double x) const;
517  double P_20_1 (const double x) const;
518  double P_20_1_Deriv (const double x) const;
519  double P_20_2 (const double x) const;
520  double P_20_2_Deriv (const double x) const;
521  double P_20_3 (const double x) const;
522  double P_20_3_Deriv (const double x) const;
523  double P_20_4 (const double x) const;
524  double P_20_4_Deriv (const double x) const;
525  double P_20_5 (const double x) const;
526  double P_20_5_Deriv (const double x) const;
527  double P_20_6 (const double x) const;
528  double P_20_6_Deriv (const double x) const;
529  double P_20_7 (const double x) const;
530  double P_20_7_Deriv (const double x) const;
531  double P_20_8 (const double x) const;
532  double P_20_8_Deriv (const double x) const;
533  double P_20_9 (const double x) const;
534  double P_20_9_Deriv (const double x) const;
535  double P_20_10 (const double x) const;
536  double P_20_10_Deriv (const double x) const;
537  double P_20_11 (const double x) const;
538  double P_20_11_Deriv (const double x) const;
539  double P_20_12 (const double x) const;
540  double P_20_12_Deriv (const double x) const;
541  double P_20_13 (const double x) const;
542  double P_20_13_Deriv (const double x) const;
543  double P_20_14 (const double x) const;
544  double P_20_14_Deriv (const double x) const;
545  double P_20_15 (const double x) const;
546  double P_20_15_Deriv (const double x) const;
547  double P_20_16 (const double x) const;
548  double P_20_16_Deriv (const double x) const;
549  double P_20_17 (const double x) const;
550  double P_20_17_Deriv (const double x) const;
551  double P_20_18 (const double x) const;
552  double P_20_18_Deriv (const double x) const;
553  double P_20_19 (const double x) const;
554  double P_20_19_Deriv (const double x) const;
555  double P_20_20 (const double x) const;
556  double P_20_20_Deriv (const double x) const;
557 };
558 
559 
560 #endif /*ASSLEGFUNCTION_H_*/
std::vector< std::vector< double(AssLegFunction::*)(const double) const > > leg_der_pointers
std::vector< std::vector< double(AssLegFunction::*)(const double) const > > leg_pointers