From: Wolfgang Bangerth Date: Thu, 7 Apr 2016 20:37:43 +0000 (-0500) Subject: Use a fixed size data structure for MappingManifold::InternalData::unit_tangentials. X-Git-Tag: v8.5.0-rc1~1129^2 X-Git-Url: https://gitweb.dealii.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=refs%2Fpull%2F2479%2Fhead;p=dealii.git Use a fixed size data structure for MappingManifold::InternalData::unit_tangentials. --- diff --git a/include/deal.II/fe/mapping_manifold.h b/include/deal.II/fe/mapping_manifold.h index c9446c1ea7..5454dba092 100644 --- a/include/deal.II/fe/mapping_manifold.h +++ b/include/deal.II/fe/mapping_manifold.h @@ -269,7 +269,7 @@ public: * Unit tangential vectors. Used for the computation of boundary forms and * normal vectors. * - * This vector has (dim-1)GeometryInfo::faces_per_cell entries. The first + * This array has (dim-1)*GeometryInfo::faces_per_cell entries. The first * GeometryInfo::faces_per_cell contain the vectors in the first * tangential direction for each face; the second set of * GeometryInfo::faces_per_cell entries contain the vectors in the second @@ -278,7 +278,7 @@ public: * * Filled once. */ - std::vector > > unit_tangentials; + std_cxx11::array >, GeometryInfo::faces_per_cell *(dim-1)> unit_tangentials; /** * Tensors of covariant transformation at each of the quadrature points. diff --git a/source/fe/mapping_manifold.cc b/source/fe/mapping_manifold.cc index fa516e13d9..2a0fc4f0a4 100644 --- a/source/fe/mapping_manifold.cc +++ b/source/fe/mapping_manifold.cc @@ -1,6 +1,6 @@ // --------------------------------------------------------------------- // -// Copyright (C) 2000 - 2015 by the deal.II authors +// Copyright (C) 2016 by the deal.II authors // // This file is part of the deal.II library. // @@ -114,11 +114,9 @@ initialize_face (const UpdateFlags update_flags, { aux.resize (dim-1, std::vector > (n_original_q_points)); - // Compute tangentials to the - // unit cell. - const unsigned int nfaces = GeometryInfo::faces_per_cell; - unit_tangentials.resize (nfaces*(dim-1), - std::vector > (n_original_q_points)); + // Compute tangentials to the unit cell. + for (unsigned int i=0; i::faces_per_cell; ++i) { Tensor<1,dim> tang; tang[1-i/2]=tangential_orientation[i]; std::fill (unit_tangentials[i].begin(), - unit_tangentials[i].end(), tang); + unit_tangentials[i].end(), + tang); } break; } case 3: { - for (unsigned int i=0; i::faces_per_cell; ++i) { Tensor<1,dim> tang1, tang2; @@ -160,8 +159,9 @@ initialize_face (const UpdateFlags update_flags, // points on this face std::fill (unit_tangentials[i].begin(), unit_tangentials[i].end(), tang1); - std::fill (unit_tangentials[nfaces+i].begin(), - unit_tangentials[nfaces+i].end(), tang2); + std::fill (unit_tangentials[GeometryInfo::faces_per_cell+i].begin(), + unit_tangentials[GeometryInfo::faces_per_cell+i].end(), + tang2); } break; }