[cig-commits] [commit] master: fix advection assembly blocks (66864cf)

cig_noreply at geodynamics.org cig_noreply at geodynamics.org
Mon May 19 20:13:24 PDT 2014


Repository : https://github.com/geodynamics/aspect

On branch  : master
Link       : https://github.com/geodynamics/aspect/compare/76d4275352ef2cae5de9a073acd1c03a92c2670c...4f3d06fd1f3754419813db37ec9ef7f0f6f3cb15

>---------------------------------------------------------------

commit 66864cfd59eaaaff7e48778d61957bb2c9739ad5
Author: Timo Heister <timo.heister at gmail.com>
Date:   Mon May 12 16:25:03 2014 -0400

    fix advection assembly blocks


>---------------------------------------------------------------

66864cfd59eaaaff7e48778d61957bb2c9739ad5
 source/simulator/assembly.cc | 30 ++++++++----------------------
 1 file changed, 8 insertions(+), 22 deletions(-)

diff --git a/source/simulator/assembly.cc b/source/simulator/assembly.cc
index 9a34efb..860fa17 100644
--- a/source/simulator/assembly.cc
+++ b/source/simulator/assembly.cc
@@ -1239,33 +1239,24 @@ namespace aspect
         case TemperatureOrComposition::temperature_field:
         {
           computing_timer.enter_section ("   Build temperature preconditioner");
-
-          preconditioner.reset (new LinearAlgebra::PreconditionILU());
-          preconditioner->initialize (system_matrix.block(2,2));
-
-          computing_timer.exit_section();
-
           break;
         }
 
         case TemperatureOrComposition::compositional_field:
         {
           computing_timer.enter_section ("   Build composition preconditioner");
-
-          const unsigned int block_number
-            = 3+temperature_or_composition.compositional_variable;
-          preconditioner.reset (new LinearAlgebra::PreconditionILU());
-          preconditioner->initialize (system_matrix.block(block_number,
-                                                          block_number));
-
-          computing_timer.exit_section();
-
           break;
         }
 
         default:
           Assert (false, ExcNotImplemented());
       }
+
+    unsigned int blockidx = temperature_or_composition.block_index(introspection);
+    system_matrix.block(blockidx, blockidx) = 0;
+    preconditioner.reset (new LinearAlgebra::PreconditionILU());
+    preconditioner->initialize (system_matrix.block(blockidx, blockidx));
+    computing_timer.exit_section();
   }
 
 
@@ -1627,16 +1618,11 @@ namespace aspect
   void Simulator<dim>::assemble_advection_system (const TemperatureOrComposition &temperature_or_composition)
   {
     if (temperature_or_composition.is_temperature())
-      {
         computing_timer.enter_section ("   Assemble temperature system");
-        system_matrix.block (2,2) = 0;
-      }
     else
-      {
         computing_timer.enter_section ("   Assemble composition system");
-        system_matrix.block(3+temperature_or_composition.compositional_variable,
-                            3+temperature_or_composition.compositional_variable) = 0;
-      }
+    unsigned int blockidx = temperature_or_composition.block_index(introspection);
+    system_matrix.block(blockidx, blockidx) = 0;
     system_rhs = 0;
 
     const std::pair<double,double>



More information about the CIG-COMMITS mailing list