]> https://gitweb.dealii.org/ - dealii.git/commitdiff
Add test.
authorMartin Kronbichler <kronbichler@lnm.mw.tum.de>
Sat, 28 Oct 2017 16:01:16 +0000 (18:01 +0200)
committerMartin Kronbichler <kronbichler@lnm.mw.tum.de>
Sat, 28 Oct 2017 16:07:00 +0000 (18:07 +0200)
tests/matrix_free/fe_evaluation_dofs_per_cell.cc [new file with mode: 0644]
tests/matrix_free/fe_evaluation_dofs_per_cell.output [new file with mode: 0644]

diff --git a/tests/matrix_free/fe_evaluation_dofs_per_cell.cc b/tests/matrix_free/fe_evaluation_dofs_per_cell.cc
new file mode 100644 (file)
index 0000000..274ca99
--- /dev/null
@@ -0,0 +1,93 @@
+// ---------------------------------------------------------------------
+//
+// Copyright (C) 2017 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 at
+// the top level of the deal.II distribution.
+//
+// ---------------------------------------------------------------------
+
+
+
+// Test the basic member variables of FEEvaluation
+
+#include "../tests.h"
+#include <deal.II/lac/constraint_matrix.h>
+#include <deal.II/fe/fe_q.h>
+#include <deal.II/fe/fe_dgp.h>
+#include <deal.II/fe/fe_system.h>
+#include <deal.II/dofs/dof_handler.h>
+#include <deal.II/grid/grid_generator.h>
+#include <deal.II/matrix_free/matrix_free.h>
+#include <deal.II/matrix_free/fe_evaluation.h>
+
+
+template <typename FEEval>
+void print_info(const FEEval &eval)
+{
+  deallog << "FEEvaluation::dimension: " << FEEval::dimension << std::endl;
+  deallog << "FEEvaluation::n_components: " << FEEval::n_components << std::endl;
+  deallog << "FEEvaluation::static_n_q_points: " << FEEval::static_n_q_points << std::endl;
+  deallog << "FEEvaluation::static_dofs_per_component: " << FEEval::static_dofs_per_component << std::endl;
+  deallog << "FEEvaluation::tensor_dofs_per_cell: " << FEEval::tensor_dofs_per_cell << std::endl;
+  deallog << "FEEvaluation::static_dofs_per_cell: " << FEEval::static_dofs_per_cell << std::endl;
+  deallog << "FEEvaluation::dofs_per_component: " << eval.dofs_per_component << std::endl;
+  deallog << "FEEvaluation::dofs_per_cell: " << eval.dofs_per_cell << std::endl;
+  deallog << "FEEvaluation::n_q_points: " << eval.n_q_points << std::endl;
+}
+
+
+
+template <int dim>
+void test()
+{
+  const unsigned int degree = 1;
+  FESystem<dim> fe1(FE_Q<dim>(degree+1), dim);
+  FESystem<dim> fe2(FE_Q<dim>(degree+1), 1);
+  FESystem<dim> fe3(FE_DGP<dim>(degree+1), 2);
+  FESystem<dim> fe4(FE_Q<dim>(degree), 1);
+  std::vector<FiniteElement<dim> *> fes {&fe1, &fe2, &fe3, &fe4};
+
+  Triangulation<dim> tria;
+  GridGenerator::hyper_cube(tria);
+  DoFHandler<dim> dof(tria);
+  for (unsigned int i=0; i<fes.size(); ++i)
+    {
+      deallog << "Checking " << fes[i]->get_name() << std::endl;
+      dof.distribute_dofs(*fes[i]);
+      MatrixFree<dim> matrix_free;
+      matrix_free.reinit(dof, ConstraintMatrix(), QGauss<1>(degree+3),
+                         typename MatrixFree<dim>::AdditionalData());
+      if (i<2)
+        {
+          FEEvaluation<dim,degree+1,degree+3,dim> phi(matrix_free);
+          print_info(phi);
+        }
+      if (i!=2)
+        {
+          FEEvaluation<dim,-1,0,dim> phi(matrix_free);
+          print_info(phi);
+        }
+      if (i==2)
+        {
+          FEEvaluation<dim,degree+1,degree+3,2> phi(matrix_free);
+          print_info(phi);
+        }
+    }
+}
+
+
+
+int main ()
+{
+  initlog();
+  test<1>();
+  test<2>();
+  test<3>();
+}
diff --git a/tests/matrix_free/fe_evaluation_dofs_per_cell.output b/tests/matrix_free/fe_evaluation_dofs_per_cell.output
new file mode 100644 (file)
index 0000000..81c2aa6
--- /dev/null
@@ -0,0 +1,175 @@
+
+DEAL::Checking FESystem<1>[FE_Q<1>(2)]
+DEAL::FEEvaluation::dimension: 1
+DEAL::FEEvaluation::n_components: 1
+DEAL::FEEvaluation::static_n_q_points: 4
+DEAL::FEEvaluation::static_dofs_per_component: 3
+DEAL::FEEvaluation::tensor_dofs_per_cell: 3
+DEAL::FEEvaluation::static_dofs_per_cell: 3
+DEAL::FEEvaluation::dofs_per_component: 3
+DEAL::FEEvaluation::dofs_per_cell: 3
+DEAL::FEEvaluation::n_q_points: 4
+DEAL::FEEvaluation::dimension: 1
+DEAL::FEEvaluation::n_components: 1
+DEAL::FEEvaluation::static_n_q_points: 0
+DEAL::FEEvaluation::static_dofs_per_component: 0
+DEAL::FEEvaluation::tensor_dofs_per_cell: 0
+DEAL::FEEvaluation::static_dofs_per_cell: 0
+DEAL::FEEvaluation::dofs_per_component: 3
+DEAL::FEEvaluation::dofs_per_cell: 3
+DEAL::FEEvaluation::n_q_points: 4
+DEAL::Checking FESystem<1>[FE_Q<1>(2)]
+DEAL::FEEvaluation::dimension: 1
+DEAL::FEEvaluation::n_components: 1
+DEAL::FEEvaluation::static_n_q_points: 4
+DEAL::FEEvaluation::static_dofs_per_component: 3
+DEAL::FEEvaluation::tensor_dofs_per_cell: 3
+DEAL::FEEvaluation::static_dofs_per_cell: 3
+DEAL::FEEvaluation::dofs_per_component: 3
+DEAL::FEEvaluation::dofs_per_cell: 3
+DEAL::FEEvaluation::n_q_points: 4
+DEAL::FEEvaluation::dimension: 1
+DEAL::FEEvaluation::n_components: 1
+DEAL::FEEvaluation::static_n_q_points: 0
+DEAL::FEEvaluation::static_dofs_per_component: 0
+DEAL::FEEvaluation::tensor_dofs_per_cell: 0
+DEAL::FEEvaluation::static_dofs_per_cell: 0
+DEAL::FEEvaluation::dofs_per_component: 3
+DEAL::FEEvaluation::dofs_per_cell: 3
+DEAL::FEEvaluation::n_q_points: 4
+DEAL::Checking FESystem<1>[FE_DGP<1>(2)^2]
+DEAL::FEEvaluation::dimension: 1
+DEAL::FEEvaluation::n_components: 2
+DEAL::FEEvaluation::static_n_q_points: 4
+DEAL::FEEvaluation::static_dofs_per_component: 3
+DEAL::FEEvaluation::tensor_dofs_per_cell: 6
+DEAL::FEEvaluation::static_dofs_per_cell: 6
+DEAL::FEEvaluation::dofs_per_component: 3
+DEAL::FEEvaluation::dofs_per_cell: 6
+DEAL::FEEvaluation::n_q_points: 4
+DEAL::Checking FESystem<1>[FE_Q<1>(1)]
+DEAL::FEEvaluation::dimension: 1
+DEAL::FEEvaluation::n_components: 1
+DEAL::FEEvaluation::static_n_q_points: 0
+DEAL::FEEvaluation::static_dofs_per_component: 0
+DEAL::FEEvaluation::tensor_dofs_per_cell: 0
+DEAL::FEEvaluation::static_dofs_per_cell: 0
+DEAL::FEEvaluation::dofs_per_component: 2
+DEAL::FEEvaluation::dofs_per_cell: 2
+DEAL::FEEvaluation::n_q_points: 4
+DEAL::Checking FESystem<2>[FE_Q<2>(2)^2]
+DEAL::FEEvaluation::dimension: 2
+DEAL::FEEvaluation::n_components: 2
+DEAL::FEEvaluation::static_n_q_points: 16
+DEAL::FEEvaluation::static_dofs_per_component: 9
+DEAL::FEEvaluation::tensor_dofs_per_cell: 18
+DEAL::FEEvaluation::static_dofs_per_cell: 18
+DEAL::FEEvaluation::dofs_per_component: 9
+DEAL::FEEvaluation::dofs_per_cell: 18
+DEAL::FEEvaluation::n_q_points: 16
+DEAL::FEEvaluation::dimension: 2
+DEAL::FEEvaluation::n_components: 2
+DEAL::FEEvaluation::static_n_q_points: 0
+DEAL::FEEvaluation::static_dofs_per_component: 0
+DEAL::FEEvaluation::tensor_dofs_per_cell: 0
+DEAL::FEEvaluation::static_dofs_per_cell: 0
+DEAL::FEEvaluation::dofs_per_component: 9
+DEAL::FEEvaluation::dofs_per_cell: 18
+DEAL::FEEvaluation::n_q_points: 16
+DEAL::Checking FESystem<2>[FE_Q<2>(2)]
+DEAL::FEEvaluation::dimension: 2
+DEAL::FEEvaluation::n_components: 2
+DEAL::FEEvaluation::static_n_q_points: 16
+DEAL::FEEvaluation::static_dofs_per_component: 9
+DEAL::FEEvaluation::tensor_dofs_per_cell: 18
+DEAL::FEEvaluation::static_dofs_per_cell: 18
+DEAL::FEEvaluation::dofs_per_component: 9
+DEAL::FEEvaluation::dofs_per_cell: 18
+DEAL::FEEvaluation::n_q_points: 16
+DEAL::FEEvaluation::dimension: 2
+DEAL::FEEvaluation::n_components: 2
+DEAL::FEEvaluation::static_n_q_points: 0
+DEAL::FEEvaluation::static_dofs_per_component: 0
+DEAL::FEEvaluation::tensor_dofs_per_cell: 0
+DEAL::FEEvaluation::static_dofs_per_cell: 0
+DEAL::FEEvaluation::dofs_per_component: 9
+DEAL::FEEvaluation::dofs_per_cell: 18
+DEAL::FEEvaluation::n_q_points: 16
+DEAL::Checking FESystem<2>[FE_DGP<2>(2)^2]
+DEAL::FEEvaluation::dimension: 2
+DEAL::FEEvaluation::n_components: 2
+DEAL::FEEvaluation::static_n_q_points: 16
+DEAL::FEEvaluation::static_dofs_per_component: 9
+DEAL::FEEvaluation::tensor_dofs_per_cell: 18
+DEAL::FEEvaluation::static_dofs_per_cell: 18
+DEAL::FEEvaluation::dofs_per_component: 6
+DEAL::FEEvaluation::dofs_per_cell: 12
+DEAL::FEEvaluation::n_q_points: 16
+DEAL::Checking FESystem<2>[FE_Q<2>(1)]
+DEAL::FEEvaluation::dimension: 2
+DEAL::FEEvaluation::n_components: 2
+DEAL::FEEvaluation::static_n_q_points: 0
+DEAL::FEEvaluation::static_dofs_per_component: 0
+DEAL::FEEvaluation::tensor_dofs_per_cell: 0
+DEAL::FEEvaluation::static_dofs_per_cell: 0
+DEAL::FEEvaluation::dofs_per_component: 4
+DEAL::FEEvaluation::dofs_per_cell: 8
+DEAL::FEEvaluation::n_q_points: 16
+DEAL::Checking FESystem<3>[FE_Q<3>(2)^3]
+DEAL::FEEvaluation::dimension: 3
+DEAL::FEEvaluation::n_components: 3
+DEAL::FEEvaluation::static_n_q_points: 64
+DEAL::FEEvaluation::static_dofs_per_component: 27
+DEAL::FEEvaluation::tensor_dofs_per_cell: 81
+DEAL::FEEvaluation::static_dofs_per_cell: 81
+DEAL::FEEvaluation::dofs_per_component: 27
+DEAL::FEEvaluation::dofs_per_cell: 81
+DEAL::FEEvaluation::n_q_points: 64
+DEAL::FEEvaluation::dimension: 3
+DEAL::FEEvaluation::n_components: 3
+DEAL::FEEvaluation::static_n_q_points: 0
+DEAL::FEEvaluation::static_dofs_per_component: 0
+DEAL::FEEvaluation::tensor_dofs_per_cell: 0
+DEAL::FEEvaluation::static_dofs_per_cell: 0
+DEAL::FEEvaluation::dofs_per_component: 27
+DEAL::FEEvaluation::dofs_per_cell: 81
+DEAL::FEEvaluation::n_q_points: 64
+DEAL::Checking FESystem<3>[FE_Q<3>(2)]
+DEAL::FEEvaluation::dimension: 3
+DEAL::FEEvaluation::n_components: 3
+DEAL::FEEvaluation::static_n_q_points: 64
+DEAL::FEEvaluation::static_dofs_per_component: 27
+DEAL::FEEvaluation::tensor_dofs_per_cell: 81
+DEAL::FEEvaluation::static_dofs_per_cell: 81
+DEAL::FEEvaluation::dofs_per_component: 27
+DEAL::FEEvaluation::dofs_per_cell: 81
+DEAL::FEEvaluation::n_q_points: 64
+DEAL::FEEvaluation::dimension: 3
+DEAL::FEEvaluation::n_components: 3
+DEAL::FEEvaluation::static_n_q_points: 0
+DEAL::FEEvaluation::static_dofs_per_component: 0
+DEAL::FEEvaluation::tensor_dofs_per_cell: 0
+DEAL::FEEvaluation::static_dofs_per_cell: 0
+DEAL::FEEvaluation::dofs_per_component: 27
+DEAL::FEEvaluation::dofs_per_cell: 81
+DEAL::FEEvaluation::n_q_points: 64
+DEAL::Checking FESystem<3>[FE_DGP<3>(2)^2]
+DEAL::FEEvaluation::dimension: 3
+DEAL::FEEvaluation::n_components: 2
+DEAL::FEEvaluation::static_n_q_points: 64
+DEAL::FEEvaluation::static_dofs_per_component: 27
+DEAL::FEEvaluation::tensor_dofs_per_cell: 54
+DEAL::FEEvaluation::static_dofs_per_cell: 54
+DEAL::FEEvaluation::dofs_per_component: 10
+DEAL::FEEvaluation::dofs_per_cell: 20
+DEAL::FEEvaluation::n_q_points: 64
+DEAL::Checking FESystem<3>[FE_Q<3>(1)]
+DEAL::FEEvaluation::dimension: 3
+DEAL::FEEvaluation::n_components: 3
+DEAL::FEEvaluation::static_n_q_points: 0
+DEAL::FEEvaluation::static_dofs_per_component: 0
+DEAL::FEEvaluation::tensor_dofs_per_cell: 0
+DEAL::FEEvaluation::static_dofs_per_cell: 0
+DEAL::FEEvaluation::dofs_per_component: 8
+DEAL::FEEvaluation::dofs_per_cell: 24
+DEAL::FEEvaluation::n_q_points: 64

In the beginning the Universe was created. This has made a lot of people very angry and has been widely regarded as a bad move.

Douglas Adams


Typeset in Trocchi and Trocchi Bold Sans Serif.