]> https://gitweb.dealii.org/ - dealii.git/commitdiff
cleaned up
authorMohamad Ghadban <mghadban@ualberta.ca>
Fri, 16 Aug 2024 15:23:14 +0000 (09:23 -0600)
committerMohamad Ghadban <mghadban@ualberta.ca>
Fri, 16 Aug 2024 15:23:14 +0000 (09:23 -0600)
source/fe/fe_system.cc

index a54f8cf29062efd3aadf143428abcdf8e10d7a78..f9765287927a6a756cc6b345cb87168a9c3d0ed6 100644 (file)
@@ -2416,8 +2416,6 @@ FESystem<dim, spacedim>::compare_for_domination(
 
   // vertex/line/face/cell domination
   // --------------------------------
-  // at present all we can do is to compare with other FESystems that have the
-  // same number of components and bases
   if (const FESystem<dim, spacedim> *fe_sys_other =
         dynamic_cast<const FESystem<dim, spacedim> *>(&fe_other))
     {
@@ -2430,27 +2428,27 @@ FESystem<dim, spacedim>::compare_for_domination(
                         "against an element with " +
                         std::to_string(fe_sys_other->n_components()) +
                         " vector components."));
-      Assert(this->n_base_elements() == fe_sys_other->n_base_elements(),
-             ExcNotImplemented());
 
-      FiniteElementDomination::Domination domination =
-        FiniteElementDomination::no_requirements;
-
-      // loop over all base elements and do some sanity checks
-      for (unsigned int b = 0; b < this->n_base_elements(); ++b)
+      const unsigned int n_components = this->n_components();
+      
+      FiniteElementDomination::Domination domination = FiniteElementDomination::no_requirements;
+      
+      for (unsigned int c = 0; c < n_components; ++c)
         {
-          Assert(this->base_element(b).n_components() ==
-                   fe_sys_other->base_element(b).n_components(),
+          const unsigned int base_element_index_in_fe_sys_this = this->component_to_base_index(c).first;
+          const unsigned int base_element_index_in_fe_sys_other = fe_sys_other->component_to_base_index(c).first;
+
+          Assert(this->base_element(base_element_index_in_fe_sys_this).n_components() ==
+                   fe_sys_other->base_element(base_element_index_in_fe_sys_other).n_components(),
                  ExcNotImplemented());
-          Assert(this->element_multiplicity(b) ==
-                   fe_sys_other->element_multiplicity(b),
+          Assert(this->element_multiplicity(base_element_index_in_fe_sys_this) ==
+                   fe_sys_other->element_multiplicity(base_element_index_in_fe_sys_other),
                  ExcNotImplemented());
-
           // for this pair of base elements, check who dominates and combine
           // with previous result
           const FiniteElementDomination::Domination base_domination =
-            (this->base_element(b).compare_for_domination(
-              fe_sys_other->base_element(b), codim));
+            (this->base_element(base_element_index_in_fe_sys_this).compare_for_domination(
+              fe_sys_other->base_element(base_element_index_in_fe_sys_other), codim));
           domination = domination & base_domination;
         }
 

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.