From 6f5eda0e18e34d5f90046ed1b7b86154877effaa Mon Sep 17 00:00:00 2001 From: janssen Date: Sun, 11 Dec 2011 11:39:12 +0000 Subject: [PATCH] extract also non interface dofs git-svn-id: https://svn.dealii.org/trunk@24820 0785d39b-7218-0410-832d-ea1e28bc413d --- .../deal.II/multigrid/mg_constrained_dofs.h | 51 +++++++++++++++++++ 1 file changed, 51 insertions(+) diff --git a/deal.II/include/deal.II/multigrid/mg_constrained_dofs.h b/deal.II/include/deal.II/multigrid/mg_constrained_dofs.h index ed4db82c04..52a739bbda 100644 --- a/deal.II/include/deal.II/multigrid/mg_constrained_dofs.h +++ b/deal.II/include/deal.II/multigrid/mg_constrained_dofs.h @@ -74,6 +74,14 @@ class MGConstrainedDoFs : public Subscriptor bool is_boundary_index (const unsigned int level, const unsigned int index) const; + /** + * Determine whether a dof index + * is at an edge that is not + * a refinement edge. + */ + bool non_refinement_edge_index (const unsigned int level, + const unsigned int index) const; + /** * Determine whether a dof index * is at the refinement edge. @@ -98,6 +106,14 @@ class MGConstrainedDoFs : public Subscriptor const std::vector > & get_boundary_indices () const; + /** + * Return the indices of dofs for each + * level that lie on the boundary of the + * domain. + */ + const std::vector > & + get_non_refinement_edge_indices () const; + /** * Return the indices of dofs for each * level that lie on the refinement edge @@ -138,6 +154,14 @@ class MGConstrainedDoFs : public Subscriptor */ std::vector > boundary_indices; + /** + * The degrees of freedom on egdges + * that are not a + * refinement edge between a + * level and coarser cells. + */ + std::vector > non_refinement_edge_indices; + /** * The degrees of freedom on the * refinement edge between a @@ -166,6 +190,7 @@ MGConstrainedDoFs::initialize(const MGDoFHandler& dof) const unsigned int nlevels = dof.get_tria().n_levels(); refinement_edge_indices.resize(nlevels); refinement_edge_boundary_indices.resize(nlevels); + non_refinement_edge_indices.resize(nlevels); for(unsigned int l=0; l& dof) } MGTools::extract_inner_interface_dofs (dof, refinement_edge_indices, refinement_edge_boundary_indices); + + MGTools::extract_non_interface_dofs (dof, non_refinement_edge_indices); } @@ -188,6 +215,7 @@ MGConstrainedDoFs::initialize( boundary_indices.resize(nlevels); refinement_edge_indices.resize(nlevels); refinement_edge_boundary_indices.resize(nlevels); + non_refinement_edge_indices.resize(nlevels); for(unsigned int l=0; l > & +MGConstrainedDoFs::get_non_refinement_edge_indices () const +{ + return non_refinement_edge_indices; +} + inline const std::vector > & MGConstrainedDoFs::get_refinement_edge_indices () const -- 2.39.5