[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