From 931487cddb8eca8b868175e4fb13d95ee043de42 Mon Sep 17 00:00:00 2001 From: ESeNonFossiIo Date: Tue, 2 Jun 2015 23:04:19 +0200 Subject: [PATCH] a bug fixed --- include/deal.II/lac/block_linear_operator.h | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/include/deal.II/lac/block_linear_operator.h b/include/deal.II/lac/block_linear_operator.h index fa92342e70..d17e290f33 100644 --- a/include/deal.II/lac/block_linear_operator.h +++ b/include/deal.II/lac/block_linear_operator.h @@ -531,13 +531,13 @@ upper_triangular_operator(const BlockMatrix &block_matrix) Assert( u.n_blocks() == block_matrix.n_block_cols(), ExcDimensionMismatch(u.n_blocks(), block_matrix.n_block_cols())); - for (unsigned int i = 0; i < block_matrix.n_block_rows(); ++i) + for (unsigned int i = 0; i < block_matrix.n_block_rows() - 1; ++i) { - v.block(i) *= 0; - for (unsigned int j = i + 1; j < block_matrix.n_block_cols(); ++j) - block_matrix.block(i,j).Tvmult_add(v.block(i), u.block(j)); + block_matrix.block(i,block_matrix.n_block_rows() - 1).vmult(v.block(i), u.block(block_matrix.n_block_rows() - 1)); + for (unsigned int j = block_matrix.n_block_rows() - 2; j > i; --j) + block_matrix.block(i,j).vmult_add(v.block(i), u.block(j)); } - + v.block(block_matrix.n_block_rows() - 1) = 0; }; return_op.vmult_add = [&block_matrix](Range &v, const Domain &u) -- 2.39.5