]> https://gitweb.dealii.org/ - dealii.git/commitdiff
Merge pull request #12577 from peterrum/hn_generalize
authorMartin Kronbichler <kronbichler@lnm.mw.tum.de>
Tue, 20 Jul 2021 15:58:42 +0000 (17:58 +0200)
committerGitHub <noreply@github.com>
Tue, 20 Jul 2021 15:58:42 +0000 (17:58 +0200)
Generalize HangingNodes

1  2 
include/deal.II/matrix_free/hanging_nodes_internal.h

index cdb01af15623c84af8cb911f97236fc1198f1691,65efcf13f71c07a9ad21b8ebffe2fa11d7d1f107..bb8a5eea233d02334555add02b6af6278f7abedb
@@@ -89,50 -89,43 +89,44 @@@ namespace interna
        void
        transpose_subface_index(unsigned int &subface) const;
  
-       using cell_iterator = typename DoFHandler<dim>::cell_iterator;
-       using active_cell_iterator =
-         typename DoFHandler<dim>::active_cell_iterator;
-       const unsigned int n_raw_lines;
-       std::vector<std::vector<std::pair<cell_iterator, unsigned int>>>
-                                        line_to_cells;
-       const std::vector<unsigned int> &lexicographic_mapping;
-       const unsigned int               fe_degree;
-       const DoFHandler<dim> &          dof_handler;
+       std::vector<std::vector<
+         std::pair<typename Triangulation<dim>::cell_iterator, unsigned int>>>
+         line_to_cells;
      };
  
 -    // Here is the system for how we store constraint types in a binary mask.
 -    // This is not a complete contradiction-free system, i.e., there are
 -    // invalid states that we just assume that we never get.
 -
 -    // If the mask is zero, there are no constraints. Then, there are three
 -    // different fields with one bit per dimension. The first field determines
 -    // the type, or the position of an element along each direction. The
 -    // second field determines if there is a constrained face with that
 -    // direction as normal. The last field determines if there is a
 -    // constrained edge of a given pair of coordinate planes, but where
 -    // neither of the corresponding faces are constrained (only valid in 3D).
 -
 -    // The element is placed in the 'first position' along *-axis. These also
 -    // determine which face is constrained. For example, in 2D, if
 -    // face_x and type are set, then x = 0 is constrained.
 -
 -    namespace ConstraintTypes
 +    /**
 +     * Here is the system for how we store constraint types in a binary mask.
 +     * This is not a complete contradiction-free system, i.e., there are
 +     * invalid states that we just assume that we never get.
 +     *
 +     * If the mask is zero, there are no constraints. Then, there are three
 +     * different fields with one bit per dimension. The first field determines
 +     * the type, or the position of an element along each direction. The
 +     * second field determines if there is a constrained face with that
 +     * direction as normal. The last field determines if there is a
 +     * constrained edge of a given pair of coordinate planes, but where
 +     * neither of the corresponding faces are constrained (only valid in 3D).
 +     *
 +     * The element is placed in the 'first position' along *-axis. These also
 +     * determine which face is constrained. For example, in 2D, if
 +     * face_x and type are set, then x = 0 is constrained.
 +     */
 +    enum ConstraintTypes : unsigned int
      {
 -      constexpr unsigned int type_x = 1 << 0;
 -      constexpr unsigned int type_y = 1 << 1;
 -      constexpr unsigned int type_z = 1 << 2;
 +      type_x = 1 << 0,
 +      type_y = 1 << 1,
 +      type_z = 1 << 2,
  
        // Element has as a constraint at * = 0 or * = fe_degree face
 -      constexpr unsigned int face_x = 1 << 3;
 -      constexpr unsigned int face_y = 1 << 4;
 -      constexpr unsigned int face_z = 1 << 5;
 +      face_x = 1 << 3,
 +      face_y = 1 << 4,
 +      face_z = 1 << 5,
  
        // Element has as a constraint at * = 0 or * = fe_degree edge
 -      constexpr unsigned int edge_xy = 1 << 6;
 -      constexpr unsigned int edge_yz = 1 << 7;
 -      constexpr unsigned int edge_zx = 1 << 8;
 -    } // namespace ConstraintTypes
 +      edge_xy = 1 << 6,
 +      edge_yz = 1 << 7,
 +      edge_zx = 1 << 8
 +    };
  
  
      template <int dim>

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.