-
Notifications
You must be signed in to change notification settings - Fork 736
/
shapes_system.cc
105 lines (91 loc) · 2.91 KB
/
shapes_system.cc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
// ---------------------------------------------------------------------
//
// Copyright (C) 2013 - 2020 by the deal.II authors
//
// This file is part of the deal.II library.
//
// The deal.II library is free software; you can use it, redistribute
// it, and/or modify it under the terms of the GNU Lesser General
// Public License as published by the Free Software Foundation; either
// version 2.1 of the License, or (at your option) any later version.
// The full text of the license can be found in the file LICENSE.md at
// the top level directory of deal.II.
//
// ---------------------------------------------------------------------
#include <deal.II/fe/fe_dgp.h>
#include <deal.II/fe/fe_dgq.h>
#include <deal.II/fe/fe_nedelec.h>
#include <deal.II/fe/fe_q.h>
#include <deal.II/fe/fe_system.h>
#include <deal.II/fe/mapping_q1.h>
#include <string>
#include "../tests.h"
#include "shapes.h"
#define PRECISION 8
template <int dim>
void
plot_FE_System_shape_functions()
{
MappingQ<dim> m(1);
// FESystem<dim> p1(FE_Q<dim>(2), 1,
// FE_Q<dim>(dim<3 ? 3 : 2), 2);
// plot_shape_functions(m, p1, "System1");
// plot_face_shape_functions(m, p1, "System1");
// test_compute_functions(m, p1, "System1");
// FESystem<dim> p2(FE_Q<dim>(2), 1,
// FESystem<dim> (FE_Q<dim>(1),1,
// FE_DGP<dim>(3),3,
// FE_DGQ<dim>(0),2), 2,
// FE_DGQ<dim>(0), 2);
// plot_shape_functions(m, p2, "System2");
// plot_face_shape_functions(m, p2, "System2");
// test_compute_functions(m, p2, "System2");
// some tests with the Nedelec
// element. don't try to make sense
// out of the composed elements,
// they are simply constructed as
// complicated as possible to
// trigger as many assertions as
// possible (and they _have_, in
// the past, literally dozens of
// assertions)
if (dim != 1)
{
FESystem<dim> p3(
FE_Nedelec<dim>(1),
1,
FESystem<dim>(
FE_Q<dim>(1), 1, FE_DGP<dim>(3), 3, FE_Nedelec<dim>(1), 2),
2,
FE_DGQ<dim>(0),
2);
test_compute_functions(m, p3, "System_Nedelec_1");
// the following is simply too
// expensive in 3d...
if (dim != 3)
{
FESystem<dim> p4(
p3,
1,
FESystem<dim>(FE_Q<dim>(1), 1, p3, 3, FE_Nedelec<dim>(1), 2),
1,
p3,
1);
test_compute_functions(m, p4, "System_Nedelec_2");
};
};
}
int
main()
{
std::ofstream logfile("output");
deallog << std::setprecision(PRECISION) << std::fixed;
deallog.attach(logfile);
deallog << "FE_System<1>" << std::endl;
plot_FE_System_shape_functions<1>();
deallog << "FE_System<2>" << std::endl;
plot_FE_System_shape_functions<2>();
deallog << "FE_System<3>" << std::endl;
plot_FE_System_shape_functions<3>();
return 0;
}