]> https://gitweb.dealii.org/ - dealii.git/commitdiff
max_couplings_between_dofs is bounded by n_dofs()
authorRalf Hartmann <Ralf.Hartmann@dlr.de>
Thu, 11 May 2000 08:58:25 +0000 (08:58 +0000)
committerRalf Hartmann <Ralf.Hartmann@dlr.de>
Thu, 11 May 2000 08:58:25 +0000 (08:58 +0000)
git-svn-id: https://svn.dealii.org/trunk@2838 0785d39b-7218-0410-832d-ea1e28bc413d

deal.II/deal.II/source/dofs/dof_handler.cc

index 515d56b68799cb99fc0bea1968159907f8fd6bb2..6a34dc489eb4ff7e14e18025b2780bf1a0fd7206 100644 (file)
@@ -1553,7 +1553,7 @@ void DoFHandler<3>::renumber_dofs (const vector<unsigned int> &new_numbers) {
 template <>
 unsigned int DoFHandler<1>::max_couplings_between_dofs () const {
   Assert (selected_fe != 0, ExcNoFESelected());
-  return 3*selected_fe->dofs_per_vertex + 2*selected_fe->dofs_per_line;
+  return min(3*selected_fe->dofs_per_vertex + 2*selected_fe->dofs_per_line, n_dofs());
 };
 
 
@@ -1594,32 +1594,34 @@ unsigned int DoFHandler<2>::max_couplings_between_dofs () const {
                                   // nodes)
                                   // count lines -> 28 (don't forget to count
                                   // mother and children separately!)
+  unsigned int max_couplings;
   switch (tria->max_adjacent_cells())
     {
       case 4:
-           return (19*selected_fe->dofs_per_vertex +
-                   28*selected_fe->dofs_per_line +
-                   8*selected_fe->dofs_per_quad);
+           max_couplings=19*selected_fe->dofs_per_vertex +
+                         28*selected_fe->dofs_per_line +
+                         8*selected_fe->dofs_per_quad;
       case 5:
-           return (21*selected_fe->dofs_per_vertex +
-                   31*selected_fe->dofs_per_line +
-                   9*selected_fe->dofs_per_quad);
+           max_couplings=21*selected_fe->dofs_per_vertex +
+                         31*selected_fe->dofs_per_line +
+                         9*selected_fe->dofs_per_quad;
       case 6:
-           return (28*selected_fe->dofs_per_vertex +
-                   42*selected_fe->dofs_per_line +
-                   12*selected_fe->dofs_per_quad);
+           max_couplings=28*selected_fe->dofs_per_vertex +
+                         42*selected_fe->dofs_per_line +
+                         12*selected_fe->dofs_per_quad;
       case 7:
-           return (30*selected_fe->dofs_per_vertex +
-                   45*selected_fe->dofs_per_line +
-                   13*selected_fe->dofs_per_quad);
+           max_couplings=30*selected_fe->dofs_per_vertex +
+                         45*selected_fe->dofs_per_line +
+                         13*selected_fe->dofs_per_quad;
       case 8:
-           return (37*selected_fe->dofs_per_vertex +
-                   56*selected_fe->dofs_per_line +
-                   16*selected_fe->dofs_per_quad);
+           max_couplings=37*selected_fe->dofs_per_vertex +
+                         56*selected_fe->dofs_per_line +
+                         16*selected_fe->dofs_per_quad;
       default:
            Assert (false, ExcNotImplemented());
-           return 0;
+           max_couplings=0;
     };
+  return(min(max_couplings,n_dofs()));
 };
 
 
@@ -1649,15 +1651,19 @@ unsigned int DoFHandler<3>::max_couplings_between_dofs () const {
                                   // can anyone give better estimate here?
   const unsigned int max_adjacent_cells = tria->max_adjacent_cells();
 
+  unsigned int max_couplings;
   if (max_adjacent_cells <= 8)
-    return (7*7*7*selected_fe->dofs_per_vertex +
-           7*6*7*3*selected_fe->dofs_per_line +
-           9*4*7*3*selected_fe->dofs_per_quad +
-           27*selected_fe->dofs_per_hex);
-
-
-  Assert (false, ExcNotImplemented());
-  return 0;
+    max_couplings=7*7*7*selected_fe->dofs_per_vertex +
+                 7*6*7*3*selected_fe->dofs_per_line +
+                 9*4*7*3*selected_fe->dofs_per_quad +
+                 27*selected_fe->dofs_per_hex;
+  else
+    {
+      Assert (false, ExcNotImplemented());
+      max_couplings=0;
+    }
+  
+  return min(max_couplings,n_dofs());
 };
 
 

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.