]> https://gitweb.dealii.org/ - dealii.git/commitdiff
Add a changelog entry.
authorWolfgang Bangerth <bangerth@colostate.edu>
Tue, 16 Nov 2021 01:37:19 +0000 (18:37 -0700)
committerWolfgang Bangerth <bangerth@colostate.edu>
Wed, 17 Nov 2021 04:39:57 +0000 (21:39 -0700)
doc/news/changes/minor/20211115Bangerth-c [new file with mode: 0644]

diff --git a/doc/news/changes/minor/20211115Bangerth-c b/doc/news/changes/minor/20211115Bangerth-c
new file mode 100644 (file)
index 0000000..f34e57c
--- /dev/null
@@ -0,0 +1,42 @@
+New: In the same spirit as provided by the C++20 [range
+adaptors](https://en.cppreference.com/w/cpp/ranges) feature, it is now
+possible to "filter" ranges over the active cells of Triangulation
+and DoFHandler objects.
+<br>
+This allows to replace:
+@code
+  DoFHandler<dim> dof_handler;
+  ...
+  for (const auto &cell : dof_handler.active_cell_iterators())
+    {
+      if (cell->is_locally_owned())
+        {
+          fe_values.reinit (cell);
+          ...do the local integration on 'cell'...;
+        }
+    }
+@endcode
+by:
+@code
+  DoFHandler<dim> dof_handler;
+  ...
+  const auto filtered_iterators_range =
+    filter_iterators();
+  for (const auto &cell :
+          dof_handler.active_cell_iterators() | IteratorFilters::LocallyOwnedCell())
+    {
+      fe_values.reinit (cell);
+      ...do the local integration on 'cell'...;
+    }
+@endcode
+Here, the `operator|` is to be interpreted in the same way as is done in
+the [range adaptors](https://en.cppreference.com/w/cpp/ranges) feature
+that is part of [C++20](https://en.wikipedia.org/wiki/C%2B%2B20). It has
+the same meaning as the `|` symbol on the command line: It takes what is
+on its left as its inputs, and filters and transforms to produce some
+output. In the example above, it "filters" all of the active cell iterators
+and removes those that do not satisfy the predicate -- that is, it produces
+a range of iterators that only contains those cells that are both active
+and locally owned.
+<br>
+(Wolfgang Bangerth, 2021/11/03)

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.