]> https://gitweb.dealii.org/ - dealii.git/commitdiff
Slightly simplify code and make it a little faster by that.
authorWolfgang Bangerth <bangerth@math.tamu.edu>
Wed, 9 May 2001 13:25:14 +0000 (13:25 +0000)
committerWolfgang Bangerth <bangerth@math.tamu.edu>
Wed, 9 May 2001 13:25:14 +0000 (13:25 +0000)
git-svn-id: https://svn.dealii.org/trunk@4581 0785d39b-7218-0410-832d-ea1e28bc413d

deal.II/deal.II/include/dofs/dof_constraints.templates.h

index d0d56968b03857a1e2a5defcc05665329d3752dc..1c04921780f343db38df172729afd9cefdc1b357 100644 (file)
@@ -174,89 +174,85 @@ ConstraintMatrix::condense (SparseMatrix<number> &uncondensed) const
                                         // regular line. loop over cols
        for (unsigned int j=sparsity.get_rowstart_indices()[row];
             j<sparsity.get_rowstart_indices()[row+1]; ++j)
-                                          // end of row reached?
-         if (sparsity.get_column_numbers()[j] == SparsityPattern::invalid_entry)
-           {
-                                              // this should not happen, since
-                                              // we only operate on compressed
-                                              // matrices!
-             Assert (false, ExcMatrixNotClosed());
-             break;
-           }
-         else
-           {
-             if (distribute[sparsity.get_column_numbers()[j]] != -1)
-                                                // distribute entry at regular
-                                                // row @p{row} and irregular column
-                                                // sparsity.get_column_numbers()[j]; set old
-                                                // entry to zero
-               {
+         {
+                                            // end of row reached?
+                                            // this should not
+                                            // happen, since we only
+                                            // operate on compressed
+                                            // matrices!
+           Assert (sparsity.get_column_numbers()[j] != SparsityPattern::invalid_entry,
+                   ExcMatrixNotClosed());
+           
+           if (distribute[sparsity.get_column_numbers()[j]] != -1)
+                                              // distribute entry at regular
+                                              // row @p{row} and irregular column
+                                              // sparsity.get_column_numbers()[j]; set old
+                                              // entry to zero
+             {
+               for (unsigned int q=0;
+                    q!=lines[distribute[sparsity.get_column_numbers()[j]]]
+                                   .entries.size(); ++q)
+                 uncondensed.add (row,
+                                  lines[distribute[sparsity.get_column_numbers()[j]]]
+                                  .entries[q].first,
+                                  uncondensed.global_entry(j) *
+                                  lines[distribute[sparsity.get_column_numbers()[j]]]
+                                  .entries[q].second);
+               
+               uncondensed.global_entry(j) = 0.;
+             };
+         }
+      else
+                                        // row must be distributed
+       for (unsigned int j=sparsity.get_rowstart_indices()[row];
+            j<sparsity.get_rowstart_indices()[row+1]; ++j)
+         {
+                                            // end of row reached?
+                                            // this should not
+                                            // happen, since we only
+                                            // operate on compressed
+                                            // matrices!
+           Assert (sparsity.get_column_numbers()[j] != SparsityPattern::invalid_entry,
+                   ExcMatrixNotClosed());
+
+           if (distribute[sparsity.get_column_numbers()[j]] == -1)
+                                              // distribute entry at irregular
+                                              // row @p{row} and regular column
+                                              // sparsity.get_column_numbers()[j]. set old
+                                              // entry to zero
+             {
+               for (unsigned int q=0;
+                    q!=lines[distribute[row]].entries.size(); ++q) 
+                 uncondensed.add (lines[distribute[row]].entries[q].first,
+                                  sparsity.get_column_numbers()[j],
+                                  uncondensed.global_entry(j) *
+                                  lines[distribute[row]].entries[q].second);
+               
+               uncondensed.global_entry(j) = 0.;
+             }
+           else
+                                              // distribute entry at irregular
+                                              // row @p{row} and irregular column
+                                              // sparsity.get_column_numbers()[j]
+                                              // set old entry to one if on main
+                                              // diagonal, zero otherwise
+             {
+               for (unsigned int p=0; p!=lines[distribute[row]].entries.size(); ++p)
                  for (unsigned int q=0;
                       q!=lines[distribute[sparsity.get_column_numbers()[j]]]
                                      .entries.size(); ++q)
-                   uncondensed.add (row,
+                   uncondensed.add (lines[distribute[row]].entries[p].first,
                                     lines[distribute[sparsity.get_column_numbers()[j]]]
                                     .entries[q].first,
                                     uncondensed.global_entry(j) *
+                                    lines[distribute[row]].entries[p].second *
                                     lines[distribute[sparsity.get_column_numbers()[j]]]
                                     .entries[q].second);
                
-                 uncondensed.global_entry(j) = 0.;
-               };
-           }
-      else
-                                        // row must be distributed
-       for (unsigned int j=sparsity.get_rowstart_indices()[row];
-            j<sparsity.get_rowstart_indices()[row+1]; ++j)
-                                          // end of row reached?
-         if (sparsity.get_column_numbers()[j] == SparsityPattern::invalid_entry)
-           {
-                                              // this should not happen, since
-                                              // we only operate on compressed
-                                              // matrices!
-             Assert (false, ExcMatrixNotClosed());
-             break;
-           }
-         else
-           {
-             if (distribute[sparsity.get_column_numbers()[j]] == -1)
-                                                // distribute entry at irregular
-                                                // row @p{row} and regular column
-                                                // sparsity.get_column_numbers()[j]. set old
-                                                // entry to zero
-               {
-                 for (unsigned int q=0;
-                      q!=lines[distribute[row]].entries.size(); ++q) 
-                   uncondensed.add (lines[distribute[row]].entries[q].first,
-                                    sparsity.get_column_numbers()[j],
-                                    uncondensed.global_entry(j) *
-                                    lines[distribute[row]].entries[q].second);
-               
-                 uncondensed.global_entry(j) = 0.;
-               }
-             else
-                                                // distribute entry at irregular
-                                                // row @p{row} and irregular column
-                                                // sparsity.get_column_numbers()[j]
-                                                // set old entry to one if on main
-                                                // diagonal, zero otherwise
-               {
-                 for (unsigned int p=0; p!=lines[distribute[row]].entries.size(); ++p)
-                   for (unsigned int q=0;
-                        q!=lines[distribute[sparsity.get_column_numbers()[j]]]
-                                       .entries.size(); ++q)
-                     uncondensed.add (lines[distribute[row]].entries[p].first,
-                                      lines[distribute[sparsity.get_column_numbers()[j]]]
-                                      .entries[q].first,
-                                      uncondensed.global_entry(j) *
-                                      lines[distribute[row]].entries[p].second *
-                                      lines[distribute[sparsity.get_column_numbers()[j]]]
-                                      .entries[q].second);
-               
-                 uncondensed.global_entry(j) = (row == sparsity.get_column_numbers()[j] ?
-                                                1. : 0. );
-               };
-           };
+               uncondensed.global_entry(j) = (row == sparsity.get_column_numbers()[j] ?
+                                              1. : 0. );
+             };
+         };
     };
 };
 

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.