From: Wolfgang Bangerth Date: Tue, 20 Aug 2013 14:46:56 +0000 (+0000) Subject: Patch by Juan Carlos Araujo Cabarcas: use higher precision arithmetic in computing... X-Git-Tag: v8.1.0~1031 X-Git-Url: https://gitweb.dealii.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=55a9b189eb16bcdf1f9b1de231fbb384aab71aa8;p=dealii.git Patch by Juan Carlos Araujo Cabarcas: use higher precision arithmetic in computing some data for high order mappings. git-svn-id: https://svn.dealii.org/trunk@30357 0785d39b-7218-0410-832d-ea1e28bc413d --- diff --git a/deal.II/doc/news/changes.h b/deal.II/doc/news/changes.h index 760fb61e26..c3781bca61 100644 --- a/deal.II/doc/news/changes.h +++ b/deal.II/doc/news/changes.h @@ -56,6 +56,14 @@ inconvenience this causes.

Specific improvements

    +
  1. + Fixed: Some operations in the MappingQ class are now done in higher + precision arithmetic to mitigate the ill-conditioning that appears + when using mappings of high order (say, order 6 or 8 or 10). +
    + (Juan Carlos Araujo Cabarcas, 2013/08/20) +
  2. +
  3. Fixed: The SLEPcWrappers classes could not be compiled for 64-bit indices. This is now fixed. diff --git a/deal.II/source/fe/mapping_q.cc b/deal.II/source/fe/mapping_q.cc index 18cb2b1110..8b41ecab31 100644 --- a/deal.II/source/fe/mapping_q.cc +++ b/deal.II/source/fe/mapping_q.cc @@ -742,7 +742,7 @@ MappingQ<3>::set_laplace_on_hex_vector(Table<2,double> &lohvs) const // one. check this for (unsigned int unit_point=0; unit_pointdegree*this->degree, ExcInternalError()); } @@ -790,29 +790,39 @@ MappingQ::compute_laplace_vector(Table<2,double> &lvs) const // Compute the stiffness matrix of // the inner dofs - FullMatrix S(n_inner); + FullMatrix S(n_inner); for (unsigned int point=0; point T(n_inner, n_outer); + FullMatrix T(n_inner, n_outer); for (unsigned int point=0; point S_1(n_inner); + FullMatrix S_1(n_inner); S_1.invert(S); - FullMatrix S_1_T(n_inner, n_outer); + FullMatrix S_1_T(n_inner, n_outer); // S:=S_1*T S_1.mmult(S_1_T,T);