]> https://gitweb.dealii.org/ - dealii.git/commitdiff
QProjector<2>: make a function a lot shorter.
authorDavid Wells <drwells@email.unc.edu>
Sat, 15 Feb 2025 02:04:32 +0000 (21:04 -0500)
committerDavid Wells <drwells@email.unc.edu>
Sat, 15 Feb 2025 20:29:45 +0000 (15:29 -0500)
source/base/qprojector.cc

index 59c6192df7a1df8f3c350977c577d7844dec9aa4..5a8b0ee74630efe15a7b677942745a90d0c6a7e3 100644 (file)
@@ -534,125 +534,75 @@ QProjector<2>::project_to_subface(const ReferenceCell   &reference_cell,
   Assert(q_points.size() == quadrature.size(),
          ExcDimensionMismatch(q_points.size(), quadrature.size()));
 
+  q_points.resize(0);
   if (reference_cell == ReferenceCells::Triangle)
     {
       // use linear polynomial to map the reference quadrature points correctly
       // on faces, i.e., BarycentricPolynomials<1>(1)
       for (unsigned int p = 0; p < quadrature.size(); ++p)
-        switch (face_no)
-          {
-            case 0:
-              switch (subface_no)
-                {
-                  case 0:
-                    q_points[p] = Point<dim>(quadrature.point(p)[0] / 2, 0);
-                    break;
-                  case 1:
-                    q_points[p] =
-                      Point<dim>(0.5 + quadrature.point(p)[0] / 2, 0);
-                    break;
-                  default:
-                    DEAL_II_ASSERT_UNREACHABLE();
-                }
-              break;
-            case 1:
-              switch (subface_no)
-                {
-                  case 0:
-                    q_points[p] = Point<dim>(1 - quadrature.point(p)[0] / 2,
-                                             quadrature.point(p)[0] / 2);
-                    break;
-                  case 1:
-                    q_points[p] = Point<dim>(0.5 - quadrature.point(p)[0] / 2,
-                                             0.5 + quadrature.point(p)[0] / 2);
-                    break;
-                  default:
-                    DEAL_II_ASSERT_UNREACHABLE();
-                }
-              break;
-            case 2:
-              switch (subface_no)
-                {
-                  case 0:
-                    q_points[p] = Point<dim>(0, 1 - quadrature.point(p)[0] / 2);
-                    break;
-                  case 1:
-                    q_points[p] =
-                      Point<dim>(0, 0.5 - quadrature.point(p)[0] / 2);
-                    break;
-                  default:
-                    DEAL_II_ASSERT_UNREACHABLE();
-                }
-              break;
-            default:
-              DEAL_II_ASSERT_UNREACHABLE();
-          }
+        {
+          if (face_no == 0)
+            {
+              if (subface_no == 0)
+                q_points.emplace_back(quadrature.point(p)[0] / 2, 0);
+              else
+                q_points.emplace_back(0.5 + quadrature.point(p)[0] / 2, 0);
+            }
+          else if (face_no == 1)
+            {
+              if (subface_no == 0)
+                q_points.emplace_back(1 - quadrature.point(p)[0] / 2,
+                                      quadrature.point(p)[0] / 2);
+              else
+                q_points.emplace_back(0.5 - quadrature.point(p)[0] / 2,
+                                      0.5 + quadrature.point(p)[0] / 2);
+            }
+          else if (face_no == 2)
+            {
+              if (subface_no == 0)
+                q_points.emplace_back(0, 1 - quadrature.point(p)[0] / 2);
+              else
+                q_points.emplace_back(0, 0.5 - quadrature.point(p)[0] / 2);
+            }
+          else
+            DEAL_II_ASSERT_UNREACHABLE();
+        }
     }
   else if (reference_cell == ReferenceCells::Quadrilateral)
     {
       for (unsigned int p = 0; p < quadrature.size(); ++p)
-        switch (face_no)
-          {
-            case 0:
-              switch (subface_no)
-                {
-                  case 0:
-                    q_points[p] = Point<dim>(0, quadrature.point(p)[0] / 2);
-                    break;
-                  case 1:
-                    q_points[p] =
-                      Point<dim>(0, quadrature.point(p)[0] / 2 + 0.5);
-                    break;
-                  default:
-                    DEAL_II_ASSERT_UNREACHABLE();
-                }
-              break;
-            case 1:
-              switch (subface_no)
-                {
-                  case 0:
-                    q_points[p] = Point<dim>(1, quadrature.point(p)[0] / 2);
-                    break;
-                  case 1:
-                    q_points[p] =
-                      Point<dim>(1, quadrature.point(p)[0] / 2 + 0.5);
-                    break;
-                  default:
-                    DEAL_II_ASSERT_UNREACHABLE();
-                }
-              break;
-            case 2:
-              switch (subface_no)
-                {
-                  case 0:
-                    q_points[p] = Point<dim>(quadrature.point(p)[0] / 2, 0);
-                    break;
-                  case 1:
-                    q_points[p] =
-                      Point<dim>(quadrature.point(p)[0] / 2 + 0.5, 0);
-                    break;
-                  default:
-                    DEAL_II_ASSERT_UNREACHABLE();
-                }
-              break;
-            case 3:
-              switch (subface_no)
-                {
-                  case 0:
-                    q_points[p] = Point<dim>(quadrature.point(p)[0] / 2, 1);
-                    break;
-                  case 1:
-                    q_points[p] =
-                      Point<dim>(quadrature.point(p)[0] / 2 + 0.5, 1);
-                    break;
-                  default:
-                    DEAL_II_ASSERT_UNREACHABLE();
-                }
-              break;
-
-            default:
-              DEAL_II_ASSERT_UNREACHABLE();
-          }
+        {
+          if (face_no == 0)
+            {
+              if (subface_no == 0)
+                q_points.emplace_back(0, quadrature.point(p)[0] / 2);
+              else
+                q_points.emplace_back(0, quadrature.point(p)[0] / 2 + 0.5);
+            }
+          else if (face_no == 1)
+            {
+              if (subface_no == 0)
+                q_points.emplace_back(1, quadrature.point(p)[0] / 2);
+              else
+                q_points.emplace_back(1, quadrature.point(p)[0] / 2 + 0.5);
+            }
+          else if (face_no == 2)
+            {
+              if (subface_no == 0)
+                q_points.emplace_back(quadrature.point(p)[0] / 2, 0);
+              else
+                q_points.emplace_back(quadrature.point(p)[0] / 2 + 0.5, 0);
+            }
+          else if (face_no == 3)
+            {
+              if (subface_no == 0)
+                q_points.emplace_back(quadrature.point(p)[0] / 2, 1);
+              else
+                q_points.emplace_back(quadrature.point(p)[0] / 2 + 0.5, 1);
+            }
+          else
+            DEAL_II_ASSERT_UNREACHABLE();
+        }
     }
   else
     {

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.