From 1e63231e33ed847c031a0d482d4c613e6c1dce7f Mon Sep 17 00:00:00 2001 From: Markus Buerg Date: Tue, 22 Feb 2011 13:54:49 +0000 Subject: [PATCH] Tests for the project_boundary_values_*_conforming functions. git-svn-id: https://svn.dealii.org/trunk@23415 0785d39b-7218-0410-832d-ea1e28bc413d --- tests/deal.II/project_bv_curl_conf.cc | 64 ++++++ .../deal.II/project_bv_curl_conf/cmp/generic | 211 ++++++++++++++++++ tests/deal.II/project_bv_div_conf.cc | 64 ++++++ tests/deal.II/project_bv_div_conf/cmp/generic | 115 ++++++++++ 4 files changed, 454 insertions(+) create mode 100644 tests/deal.II/project_bv_curl_conf.cc create mode 100644 tests/deal.II/project_bv_curl_conf/cmp/generic create mode 100644 tests/deal.II/project_bv_div_conf.cc create mode 100644 tests/deal.II/project_bv_div_conf/cmp/generic diff --git a/tests/deal.II/project_bv_curl_conf.cc b/tests/deal.II/project_bv_curl_conf.cc new file mode 100644 index 0000000000..314b524824 --- /dev/null +++ b/tests/deal.II/project_bv_curl_conf.cc @@ -0,0 +1,64 @@ +#include "../tests.h" +#include +#include +#include +#include +#include +#include +#include +#include + +std::ofstream logfile ("project_bv_curl_conf/output"); + +template +class BoundaryFunction: public Function { + public: + BoundaryFunction (); + virtual void vector_value (const Point& p, Vector& values) const; +}; + +template +BoundaryFunction::BoundaryFunction (): Function (dim) { +} + +template +void BoundaryFunction::vector_value (const Point& p, Vector& values) const { + for (unsigned int d = 0; d < dim; ++d) + values (d) = d + 1.0; +} + +template +void test_boundary_values (const FiniteElement& fe) { + Triangulation triangulation; + + GridGenerator::subdivided_hyper_cube (triangulation, 2); + + DoFHandler dof_handler (triangulation); + + dof_handler.distribute_dofs (fe); + + BoundaryFunction boundary_function; + ConstraintMatrix constraints; + + constraints.clear (); + VectorTools::project_boundary_values_curl_conforming (dof_handler, 0, boundary_function, 0, constraints); + constraints.close (); + constraints.print (logfile); +} + +int main () { + deallog << std::setprecision (2); + deallog.attach (logfile); + deallog.depth_console (0); + deallog.threshold_double (1e-12); + + FE_Nedelec<2> fe_2 (1); + + deallog << "dim=2:" << std::endl; + test_boundary_values (fe_2); + + FE_Nedelec<3> fe_3 (1); + + deallog << "dim=3:" << std::endl; + test_boundary_values (fe_3); +} \ No newline at end of file diff --git a/tests/deal.II/project_bv_curl_conf/cmp/generic b/tests/deal.II/project_bv_curl_conf/cmp/generic new file mode 100644 index 0000000000..169fbba610 --- /dev/null +++ b/tests/deal.II/project_bv_curl_conf/cmp/generic @@ -0,0 +1,211 @@ + +DEAL::dim=2: + 0 = 2.00000 + 1 = 0 + 4 = 1.00000 + 5 = 0 + 12 = 2.00000 + 13 = 0 + 14 = 1.00000 + 15 = 0 + 22 = 2.00000 + 23 = 0 + 26 = 1.00000 + 27 = 0 + 32 = 2.00000 + 33 = 0 + 34 = 1.00000 + 35 = 0 +DEAL::dim=3: + 0 = 1.00000 + 1 = 0 + 2 = 1.00000 + 3 = 0 + 4 = 0.500000 + 5 = 0 + 6 = 0.500000 + 7 = 0 + 8 = 1.00000 + 9 = 0 + 12 = 0.500000 + 13 = 0 + 16 = 1.50000 + 17 = 0 + 18 = 1.50000 + 19 = 0 + 20 = 1.50000 + 21 = 0 + 24 = 0 + 25 = 0 + 26 = 0 + 27 = 0 + 32 = 0 + 33 = 0 + 34 = 0 + 35 = 0 + 40 = 0 + 41 = 0 + 42 = 0 + 43 = 0 + 54 = 1.00000 + 55 = 0 + 56 = 0.500000 + 57 = 0 + 58 = 0.500000 + 59 = 0 + 60 = 1.00000 + 61 = 0 + 62 = 0.500000 + 63 = 0 + 66 = 1.50000 + 67 = 0 + 68 = 1.50000 + 69 = 0 + 70 = 0 + 71 = 0 + 72 = 0 + 73 = 0 + 74 = 0 + 75 = 0 + 76 = 0 + 77 = 0 + 82 = 0 + 83 = 0 + 84 = 0 + 85 = 0 + 96 = 1.00000 + 97 = 0 + 98 = 1.00000 + 99 = 0 + 100 = 0.500000 + 101 = 0 + 102 = 1.00000 + 103 = 0 + 106 = 0.500000 + 107 = 0 + 108 = 1.50000 + 109 = 0 + 110 = 1.50000 + 111 = 0 + 112 = 0 + 113 = 0 + 114 = 0 + 115 = 0 + 120 = 0 + 121 = 0 + 122 = 0 + 123 = 0 + 124 = 0 + 125 = 0 + 126 = 0 + 127 = 0 + 138 = 1.00000 + 139 = 0 + 140 = 0.500000 + 141 = 0 + 142 = 1.00000 + 143 = 0 + 144 = 0.500000 + 145 = 0 + 146 = 1.50000 + 147 = 0 + 148 = 0 + 149 = 0 + 150 = 0 + 151 = 0 + 152 = 0 + 153 = 0 + 154 = 0 + 155 = 0 + 156 = 0 + 157 = 0 + 158 = 0 + 159 = 0 + 170 = 1.00000 + 171 = 0 + 172 = 1.00000 + 173 = 0 + 174 = 0.500000 + 175 = 0 + 176 = 0.500000 + 177 = 0 + 178 = 1.50000 + 179 = 0 + 180 = 1.50000 + 181 = 0 + 182 = 1.50000 + 183 = 0 + 186 = 0 + 187 = 0 + 188 = 0 + 189 = 0 + 194 = 0 + 195 = 0 + 196 = 0 + 197 = 0 + 202 = 0 + 203 = 0 + 204 = 0 + 205 = 0 + 212 = 1.00000 + 213 = 0 + 214 = 0.500000 + 215 = 0 + 216 = 0.500000 + 217 = 0 + 218 = 1.50000 + 219 = 0 + 220 = 1.50000 + 221 = 0 + 222 = 0 + 223 = 0 + 224 = 0 + 225 = 0 + 226 = 0 + 227 = 0 + 228 = 0 + 229 = 0 + 234 = 0 + 235 = 0 + 236 = 0 + 237 = 0 + 244 = 1.00000 + 245 = 0 + 246 = 1.00000 + 247 = 0 + 248 = 0.500000 + 249 = 0 + 250 = 1.50000 + 251 = 0 + 252 = 1.50000 + 253 = 0 + 254 = 0 + 255 = 0 + 256 = 0 + 257 = 0 + 262 = 0 + 263 = 0 + 264 = 0 + 265 = 0 + 266 = 0 + 267 = 0 + 268 = 0 + 269 = 0 + 276 = 1.00000 + 277 = 0 + 278 = 0.500000 + 279 = 0 + 280 = 1.50000 + 281 = 0 + 282 = 0 + 283 = 0 + 284 = 0 + 285 = 0 + 286 = 0 + 287 = 0 + 288 = 0 + 289 = 0 + 290 = 0 + 291 = 0 + 292 = 0 + 293 = 0 diff --git a/tests/deal.II/project_bv_div_conf.cc b/tests/deal.II/project_bv_div_conf.cc new file mode 100644 index 0000000000..11d97be3c2 --- /dev/null +++ b/tests/deal.II/project_bv_div_conf.cc @@ -0,0 +1,64 @@ +#include "../tests.h" +#include +#include +#include +#include +#include +#include +#include +#include + +std::ofstream logfile ("project_bv_div_conf/output"); + +template +class BoundaryFunction: public Function { + public: + BoundaryFunction (); + virtual void vector_value (const Point& p, Vector& values) const; +}; + +template +BoundaryFunction::BoundaryFunction (): Function (dim) { +} + +template +void BoundaryFunction::vector_value (const Point& p, Vector& values) const { + for (unsigned int d = 0; d < dim; ++d) + values (d) = d + 1.0; +} + +template +void test_boundary_values (const FiniteElement& fe) { + Triangulation triangulation; + + GridGenerator::subdivided_hyper_cube (triangulation, 2); + + DoFHandler dof_handler (triangulation); + + dof_handler.distribute_dofs (fe); + + BoundaryFunction boundary_function; + ConstraintMatrix constraints; + + constraints.clear (); + VectorTools::project_boundary_values_div_conforming (dof_handler, 0, boundary_function, 0, constraints); + constraints.close (); + constraints.print (logfile); +} + +int main () { + deallog << std::setprecision (2); + deallog.attach (logfile); + deallog.depth_console (0); + deallog.threshold_double (1e-12); + + FE_RaviartThomas<2> fe_2 (1); + + deallog << "dim=2:" << std::endl; + test_boundary_values (fe_2); + + FE_RaviartThomas<3> fe_3 (1); + + deallog << "dim=3:" << std::endl; + test_boundary_values (fe_3); +} \ No newline at end of file diff --git a/tests/deal.II/project_bv_div_conf/cmp/generic b/tests/deal.II/project_bv_div_conf/cmp/generic new file mode 100644 index 0000000000..dbd2b38598 --- /dev/null +++ b/tests/deal.II/project_bv_div_conf/cmp/generic @@ -0,0 +1,115 @@ + +DEAL::dim=2: + 0 = 0.500000 + 1 = 0 + 4 = 1.00000 + 5 = 0 + 12 = 0.500000 + 13 = 0 + 14 = 1.00000 + 15 = 0 + 22 = 0.500000 + 23 = 0 + 26 = 1.00000 + 27 = 0 + 32 = 0.500000 + 33 = 0 + 34 = 1.00000 + 35 = 0 +DEAL::dim=3: + 0 = 0.250000 + 1 = 0 + 2 = 0 + 3 = 0 + 8 = 0.500000 + 9 = 0 + 10 = 0 + 11 = 0 + 16 = 0.750000 + 17 = 0 + 18 = 0 + 19 = 0 + 36 = 0.250000 + 37 = 0 + 38 = 0 + 39 = 0 + 40 = 0.500000 + 41 = 0 + 42 = 0 + 43 = 0 + 48 = 0.750000 + 49 = 0 + 50 = 0 + 51 = 0 + 68 = 0.250000 + 69 = 0 + 70 = 0 + 71 = 0 + 76 = 0.500000 + 77 = 0 + 78 = 0 + 79 = 0 + 80 = 0.750000 + 81 = 0 + 82 = 0 + 83 = 0 + 100 = 0.250000 + 101 = 0 + 102 = 0 + 103 = 0 + 104 = 0.500000 + 105 = 0 + 106 = 0 + 107 = 0 + 108 = 0.750000 + 109 = 0 + 110 = 0 + 111 = 0 + 128 = 0.250000 + 129 = 0 + 130 = 0 + 131 = 0 + 136 = 0.500000 + 137 = 0 + 138 = 0 + 139 = 0 + 144 = 0.750000 + 145 = 0 + 146 = 0 + 147 = 0 + 160 = 0.250000 + 161 = 0 + 162 = 0 + 163 = 0 + 164 = 0.500000 + 165 = 0 + 166 = 0 + 167 = 0 + 172 = 0.750000 + 173 = 0 + 174 = 0 + 175 = 0 + 188 = 0.250000 + 189 = 0 + 190 = 0 + 191 = 0 + 196 = 0.500000 + 197 = 0 + 198 = 0 + 199 = 0 + 200 = 0.750000 + 201 = 0 + 202 = 0 + 203 = 0 + 216 = 0.250000 + 217 = 0 + 218 = 0 + 219 = 0 + 220 = 0.500000 + 221 = 0 + 222 = 0 + 223 = 0 + 224 = 0.750000 + 225 = 0 + 226 = 0 + 227 = 0 -- 2.39.5