From a8c6749a6566722f0efe7324a9128e5d4949e8d3 Mon Sep 17 00:00:00 2001 From: Wolfgang Bangerth Date: Fri, 3 Dec 2021 16:28:46 -0700 Subject: [PATCH] Add a test. --- ...ata_out_faces_postprocessor_boundary_id.cc | 118 ++++++++++++++++++ ...out_faces_postprocessor_boundary_id.output | 94 ++++++++++++++ 2 files changed, 212 insertions(+) create mode 100644 tests/data_out/data_out_faces_postprocessor_boundary_id.cc create mode 100644 tests/data_out/data_out_faces_postprocessor_boundary_id.output diff --git a/tests/data_out/data_out_faces_postprocessor_boundary_id.cc b/tests/data_out/data_out_faces_postprocessor_boundary_id.cc new file mode 100644 index 0000000000..404cc26906 --- /dev/null +++ b/tests/data_out/data_out_faces_postprocessor_boundary_id.cc @@ -0,0 +1,118 @@ +// --------------------------------------------------------------------- +// +// Copyright (C) 2016 - 2018 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. +// +// --------------------------------------------------------------------- + + +// Tests DataPostprocessor: access the cell and face we are currently +// working on for a scalar finite element field and DataOutFaces. This +// is then used to output the boundary id of a face. + + +#include + +#include +#include + +#include +#include + +#include +#include +#include +#include + +#include + +#include +#include +#include +#include + +#include "../tests.h" + + + +std::ofstream logfile("output"); + + +template +class BoundaryIds : public DataPostprocessorScalar +{ +public: + BoundaryIds() + : DataPostprocessorScalar("boundary_id", update_quadrature_points) + {} + + + virtual void + evaluate_scalar_field( + const DataPostprocessorInputs::Scalar &inputs, + std::vector> &computed_quantities) const override + { + AssertDimension(computed_quantities.size(), inputs.solution_values.size()); + + // Get the cell and face we are currently dealing with: + const typename DoFHandler::active_cell_iterator cell = + inputs.template get_cell(); + const unsigned int face = inputs.get_face_number(); + + // Then fill the output fields with the boundary_id of the face + for (auto &output : computed_quantities) + { + AssertDimension(output.size(), 1); + output(0) = cell->face(face)->boundary_id(); + } + } +}; + + + +template +void +test() +{ + Triangulation triangulation; + FE_DGQ fe(1); + DoFHandler dof_handler(triangulation); + + GridGenerator::hyper_cube(triangulation, 0, 1, true); + triangulation.refine_global(1); + triangulation.begin_active()->set_refine_flag(); + triangulation.execute_coarsening_and_refinement(); + + dof_handler.distribute_dofs(fe); + + // Create a dummy vector. We will ignore its contents. + Vector solution(dof_handler.n_dofs()); + + BoundaryIds p; + DataOutFaces data_out; + data_out.attach_dof_handler(dof_handler); + data_out.add_data_vector(solution, p); + data_out.build_patches(); + data_out.write_gnuplot(logfile); +} + + +int +main() +{ + logfile << std::setprecision(2); + deallog << std::setprecision(2); + + test<2>(); + test<2>(); + + return 0; +} diff --git a/tests/data_out/data_out_faces_postprocessor_boundary_id.output b/tests/data_out/data_out_faces_postprocessor_boundary_id.output new file mode 100644 index 0000000000..60c706e2c2 --- /dev/null +++ b/tests/data_out/data_out_faces_postprocessor_boundary_id.output @@ -0,0 +1,94 @@ +# This file was generated by the deal.II library. + + +# +# For a description of the GNUPLOT format see the GNUPLOT manual. +# +# +1 0 1 +1 0.5 1 + + +0.5 0 2 +1 0 2 + + +0 0.5 0 +0 1 0 + + +0 1 3 +0.5 1 3 + + +1 0.5 1 +1 1 1 + + +0.5 1 3 +1 1 3 + + +0 0 0 +0 0.25 0 + + +0 0 2 +0.25 0 2 + + +0.25 0 2 +0.5 0 2 + + +0 0.25 0 +0 0.5 0 + + +# This file was generated by the deal.II library. + + +# +# For a description of the GNUPLOT format see the GNUPLOT manual. +# +# +1 0 1 +1 0.5 1 + + +0.5 0 2 +1 0 2 + + +0 0.5 0 +0 1 0 + + +0 1 3 +0.5 1 3 + + +1 0.5 1 +1 1 1 + + +0.5 1 3 +1 1 3 + + +0 0 0 +0 0.25 0 + + +0 0 2 +0.25 0 2 + + +0.25 0 2 +0.5 0 2 + + +0 0.25 0 +0 0.5 0 + + -- 2.39.5