]> https://gitweb.dealii.org/ - dealii.git/commitdiff
Added neighbor_or_periodic_neighbor
authorAli Samii <a.samii@gmail.com>
Thu, 24 Mar 2016 15:47:30 +0000 (10:47 -0500)
committerDaniel Arndt <daniel.arndt@iwr.uni-heidelberg.de>
Tue, 29 Mar 2016 11:47:41 +0000 (13:47 +0200)
neighbor_or_periodic_neighbor is added.

Added neighbor_or_periodic_neighbor

include/deal.II/grid/tria_accessor.h
source/grid/tria_accessor.cc

index 1e863e86bce279b8b712f7d9f6a25f2264f89730..5ddae5fa41eceb900a034de816b6669ae35c4017 100644 (file)
@@ -2526,6 +2526,16 @@ public:
   TriaIterator<CellAccessor<dim, spacedim> >
   periodic_neighbor (const unsigned int i) const;
 
+  /**
+   * For a cell whose @c ith face is not at a boundary, this function returns
+   * the same result as neighbor(). If the @c ith face is at a periodic boundary
+   * this function returns the same result as periodic_neighbor(). If neither of
+   * the aforementioned conditions are met, i.e. the @c ith face is on a
+   * nonperiodic boundary, an exception will be thrown.
+   */
+  TriaIterator<CellAccessor<dim, spacedim> >
+  neighbor_or_periodic_neighbor (const unsigned int i) const;
+
   /**
    * Returns an iterator to the periodic neighbor of the cell at a given
    * face and subface number. The general guidelines for using this function
@@ -2588,8 +2598,9 @@ public:
   periodic_neighbor_of_periodic_neighbor (const unsigned int i) const;
 
   /**
-   * If a cell has periodic neighbor, this function returns the face number
-   * of the neighbor, which is connected to this cell.
+   * If a cell has a periodic neighbor at its @c ith face, this function
+   * returns the face number of the periodic neighbor, which is connected
+   * to the @c ith face of this cell.
    */
   unsigned int
   periodic_neighbor_face_no (const unsigned int i) const;
index 0cf66d063baf480d8e03cca0f705fd3196eebb47..4377710d09f1017f03ba06e9cd6d9d86e76ddffa 100644 (file)
@@ -1933,6 +1933,21 @@ periodic_neighbor (const unsigned int i_face) const
 
 
 
+template <int dim, int spacedim>
+TriaIterator<CellAccessor<dim,spacedim> >
+CellAccessor<dim, spacedim>::
+neighbor_or_periodic_neighbor (const unsigned int i_face) const
+{
+  if (!(this->face(i_face)->at_boundary()))
+    return this->neighbor(i_face);
+  else if (this->has_periodic_neighbor(i_face))
+    return this->periodic_neighbor(i_face);
+  else
+    Assert (false, TriaAccessorExceptions::ExcNoPeriodicNeighbor());
+}
+
+
+
 template <int dim, int spacedim>
 TriaIterator<CellAccessor<dim, spacedim> >
 CellAccessor<dim, spacedim>::

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.