From: Wolfgang Bangerth Date: Tue, 30 Apr 2013 15:18:49 +0000 (+0000) Subject: Merge from mainline. X-Git-Tag: v8.0.0~316^2~33 X-Git-Url: https://gitweb.dealii.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=bb27fe59376bc8cf836eddab036c04a398d6cd50;p=dealii.git Merge from mainline. git-svn-id: https://svn.dealii.org/branches/branch_bigger_global_dof_indices_4@29409 0785d39b-7218-0410-832d-ea1e28bc413d --- bb27fe59376bc8cf836eddab036c04a398d6cd50 diff --cc deal.II/include/deal.II/lac/full_matrix.templates.h index 5e829d4d52,41febef428..a0bbe2ef1f --- a/deal.II/include/deal.II/lac/full_matrix.templates.h +++ b/deal.II/include/deal.II/lac/full_matrix.templates.h @@@ -594,19 -581,16 +581,16 @@@ void FullMatrix::mmult (FullMat #endif - const unsigned int m = this->m(), n = src.n(), l = this->n(); + const size_type m = this->m(), n = src.n(), l = this->n(); - // arrange the loops in a way that - // we keep write operations low, - // (writing is usually more costly - // than reading), even though we - // need to access the data in src - // not in a contiguous way. + // arrange the loops in a way that we keep write operations low, (writing is + // usually more costly than reading), even though we need to access the data + // in src not in a contiguous way. - for (unsigned int i=0; i::Tmmult (FullMa #endif - const unsigned int m = n(), n = src.n(), l = this->m(); + const size_type m = n(), n = src.n(), l = this->m(); - // arrange the loops in a way that - // we keep write operations low, - // (writing is usually more costly - // than reading), even though we - // need to access the data in src - // not in a contiguous way. However, - // we should usually end up in the - // optimized gemm operation in case - // the matrix is big, so this - // shouldn't be too bad. - for (size_type i=0; i::mTmult (FullMa #endif - const unsigned int m = this->m(), n = src.m(), l = this->n(); + const size_type m = this->m(), n = src.m(), l = this->n(); ++<<<<<<< .working + // arrange the loops in a way that + // we keep write operations low, + // (writing is usually more costly + // than reading). + for (size_type i=0; i>>>>>> .merge-right.r29408 } @@@ -858,24 -829,18 +844,18 @@@ void FullMatrix::TmTmult (FullM #endif - const unsigned int m = n(), n = src.m(), l = this->m(); + const size_type m = n(), n = src.m(), l = this->m(); - // arrange the loops in a way that - // we keep write operations low, - // (writing is usually more costly - // than reading), even though we - // need to access the data in the - // calling matrix not in a - // contiguous way. However, we - // should usually end up in the - // optimized gemm operation in case - // the matrix is big, so this - // shouldn't be too bad. + // arrange the loops in a way that we keep write operations low, (writing is + // usually more costly than reading), even though we need to access the data + // in the calling matrix in a non-contiguous way, possibly leading to cache + // misses. However, we should usually end up in the optimized gemm operation + // in case the matrix is big, so this shouldn't be too bad. - for (unsigned int i=0; i plain_dof_indices; + std::vector plain_dof_indices; + /** + * Stores the dimension of the underlying DoFHandler. Since the indices + * are not templated, this is the variable that makes the dimension + * accessible in the (rare) cases it is needed inside this class. + */ + unsigned int dimension; + /** * Stores the number of components in the DoFHandler where the indices * have been read from. diff --cc deal.II/include/deal.II/matrix_free/fe_evaluation.h index 062dd166dc,187716af64..6365734a49 --- a/deal.II/include/deal.II/matrix_free/fe_evaluation.h +++ b/deal.II/include/deal.II/matrix_free/fe_evaluation.h @@@ -2453,8 -2439,12 +2439,12 @@@ FEEvaluationBase(dof_info.row_starts[cell]); + const bool at_irregular_cell = n_irreg_components_filled > 0; + // scalar case (or case when all components have the same degrees of freedom // and sit on a different vector each) if (n_fe_components == 1)